mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-30 14:19:16 +00:00
spi: s3c64xx: Extract FIFO depth calculation to a dedicated macro
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>
This commit is contained in:
parent
50c4f8172d
commit
460efee706
1 changed files with 6 additions and 7 deletions
|
@ -109,6 +109,7 @@
|
||||||
#define TX_FIFO_LVL(v, i) (((v) >> 6) & FIFO_LVL_MASK(i))
|
#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) & \
|
#define RX_FIFO_LVL(v, i) (((v) >> (i)->port_conf->rx_lvl_offset) & \
|
||||||
FIFO_LVL_MASK(i))
|
FIFO_LVL_MASK(i))
|
||||||
|
#define FIFO_DEPTH(i) ((FIFO_LVL_MASK(i) >> 1) + 1)
|
||||||
|
|
||||||
#define S3C64XX_SPI_MAX_TRAILCNT 0x3ff
|
#define S3C64XX_SPI_MAX_TRAILCNT 0x3ff
|
||||||
#define S3C64XX_SPI_TRAILCNT_OFF 19
|
#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);
|
struct s3c64xx_spi_driver_data *sdd = spi_controller_get_devdata(host);
|
||||||
|
|
||||||
if (sdd->rx_dma.ch && sdd->tx_dma.ch) {
|
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 {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -495,9 +496,7 @@ static u32 s3c64xx_spi_wait_for_timeout(struct s3c64xx_spi_driver_data *sdd,
|
||||||
void __iomem *regs = sdd->regs;
|
void __iomem *regs = sdd->regs;
|
||||||
unsigned long val = 1;
|
unsigned long val = 1;
|
||||||
u32 status;
|
u32 status;
|
||||||
|
u32 max_fifo = FIFO_DEPTH(sdd);
|
||||||
/* max fifo depth available */
|
|
||||||
u32 max_fifo = (FIFO_LVL_MASK(sdd) >> 1) + 1;
|
|
||||||
|
|
||||||
if (timeout_ms)
|
if (timeout_ms)
|
||||||
val = msecs_to_loops(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
|
* For any size less than the fifo size the below code is
|
||||||
* executed atleast once.
|
* executed atleast once.
|
||||||
*/
|
*/
|
||||||
loops = xfer->len / ((FIFO_LVL_MASK(sdd) >> 1) + 1);
|
loops = xfer->len / FIFO_DEPTH(sdd);
|
||||||
buf = xfer->rx_buf;
|
buf = xfer->rx_buf;
|
||||||
do {
|
do {
|
||||||
/* wait for data to be received in the fifo */
|
/* 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 spi_transfer *xfer)
|
||||||
{
|
{
|
||||||
struct s3c64xx_spi_driver_data *sdd = spi_controller_get_devdata(host);
|
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;
|
const void *tx_buf = NULL;
|
||||||
void *rx_buf = NULL;
|
void *rx_buf = NULL;
|
||||||
int target_len = 0, origin_len = 0;
|
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",
|
dev_dbg(&pdev->dev, "Samsung SoC SPI Driver loaded for Bus SPI-%d with %d Targets attached\n",
|
||||||
sdd->port_id, host->num_chipselect);
|
sdd->port_id, host->num_chipselect);
|
||||||
dev_dbg(&pdev->dev, "\tIOmem=[%pR]\tFIFO %dbytes\n",
|
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_mark_last_busy(&pdev->dev);
|
||||||
pm_runtime_put_autosuspend(&pdev->dev);
|
pm_runtime_put_autosuspend(&pdev->dev);
|
||||||
|
|
Loading…
Reference in a new issue