spi: s3c64xx: Extract FIFO depth calculation to a dedicated macro
authorSam Protsenko <semen.protsenko@linaro.org>
Sat, 20 Jan 2024 17:00:01 +0000 (11:00 -0600)
committerMark Brown <broonie@kernel.org>
Mon, 22 Jan 2024 16:51:36 +0000 (16:51 +0000)
Simplify the code by extracting all cases of FIFO depth calculation into
a dedicated macro. No functional change.

Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
Reviewed-by: Andi Shyti <andi.shyti@kernel.org>
Link: https://msgid.link/r/20240120170001.3356-1-semen.protsenko@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-s3c64xx.c

index 0e48ffd..432ec60 100644 (file)
 #define TX_FIFO_LVL(v, i) (((v) >> 6) & FIFO_LVL_MASK(i))
 #define RX_FIFO_LVL(v, i) (((v) >> (i)->port_conf->rx_lvl_offset) & \
                                        FIFO_LVL_MASK(i))
+#define FIFO_DEPTH(i) ((FIFO_LVL_MASK(i) >> 1) + 1)
 
 #define S3C64XX_SPI_MAX_TRAILCNT       0x3ff
 #define S3C64XX_SPI_TRAILCNT_OFF       19
@@ -406,7 +407,7 @@ static bool s3c64xx_spi_can_dma(struct spi_controller *host,
        struct s3c64xx_spi_driver_data *sdd = spi_controller_get_devdata(host);
 
        if (sdd->rx_dma.ch && sdd->tx_dma.ch) {
-               return xfer->len > (FIFO_LVL_MASK(sdd) >> 1) + 1;
+               return xfer->len > FIFO_DEPTH(sdd);
        } else {
                return false;
        }
@@ -495,9 +496,7 @@ static u32 s3c64xx_spi_wait_for_timeout(struct s3c64xx_spi_driver_data *sdd,
        void __iomem *regs = sdd->regs;
        unsigned long val = 1;
        u32 status;
-
-       /* max fifo depth available */
-       u32 max_fifo = (FIFO_LVL_MASK(sdd) >> 1) + 1;
+       u32 max_fifo = FIFO_DEPTH(sdd);
 
        if (timeout_ms)
                val = msecs_to_loops(timeout_ms);
@@ -604,7 +603,7 @@ static int s3c64xx_wait_for_pio(struct s3c64xx_spi_driver_data *sdd,
         * For any size less than the fifo size the below code is
         * executed atleast once.
         */
-       loops = xfer->len / ((FIFO_LVL_MASK(sdd) >> 1) + 1);
+       loops = xfer->len / FIFO_DEPTH(sdd);
        buf = xfer->rx_buf;
        do {
                /* wait for data to be received in the fifo */
@@ -741,7 +740,7 @@ static int s3c64xx_spi_transfer_one(struct spi_controller *host,
                                    struct spi_transfer *xfer)
 {
        struct s3c64xx_spi_driver_data *sdd = spi_controller_get_devdata(host);
-       const unsigned int fifo_len = (FIFO_LVL_MASK(sdd) >> 1) + 1;
+       const unsigned int fifo_len = FIFO_DEPTH(sdd);
        const void *tx_buf = NULL;
        void *rx_buf = NULL;
        int target_len = 0, origin_len = 0;
@@ -1280,7 +1279,7 @@ static int s3c64xx_spi_probe(struct platform_device *pdev)
        dev_dbg(&pdev->dev, "Samsung SoC SPI Driver loaded for Bus SPI-%d with %d Targets attached\n",
                                        sdd->port_id, host->num_chipselect);
        dev_dbg(&pdev->dev, "\tIOmem=[%pR]\tFIFO %dbytes\n",
-                                       mem_res, (FIFO_LVL_MASK(sdd) >> 1) + 1);
+                                       mem_res, FIFO_DEPTH(sdd));
 
        pm_runtime_mark_last_busy(&pdev->dev);
        pm_runtime_put_autosuspend(&pdev->dev);