[PATCH v2 02/13] spi: Replace all spi->chip_select and spi->cs_gpiod references with function call
Patrice CHOTARD
patrice.chotard at foss.st.com
Mon Jan 23 09:16:33 PST 2023
Hi Amit
On 1/19/23 19:53, Amit Kumar Mahapatra wrote:
> Supporting multi-cs in spi drivers would require the chip_select & cs_gpiod
> members of struct spi_device to be an array. But changing the type of these
> members to array would break the spi driver functionality. To make the
> transition smoother introduced four new APIs to get/set the
> spi->chip_select & spi->cs_gpiod and replaced all spi->chip_select and
> spi->cs_gpiod references with get or set API calls.
> While adding multi-cs support in further patches the chip_select & cs_gpiod
> members of the spi_device structure would be converted to arrays & the
> "idx" parameter of the APIs would be used as array index i.e.,
> spi->chip_select[idx] & spi->cs_gpiod[idx] respectively.
>
> Signed-off-by: Amit Kumar Mahapatra <amit.kumar-mahapatra at amd.com>
> ---
[...]
> drivers/spi/spi-stm32-qspi.c | 12 ++++++------
[...]
> diff --git a/drivers/spi/spi-stm32-qspi.c b/drivers/spi/spi-stm32-qspi.c
> index 9131660c1afb..b9e61372dcfb 100644
> --- a/drivers/spi/spi-stm32-qspi.c
> +++ b/drivers/spi/spi-stm32-qspi.c
> @@ -359,7 +359,7 @@ static int stm32_qspi_get_mode(u8 buswidth)
> static int stm32_qspi_send(struct spi_device *spi, const struct spi_mem_op *op)
> {
> struct stm32_qspi *qspi = spi_controller_get_devdata(spi->master);
> - struct stm32_qspi_flash *flash = &qspi->flash[spi->chip_select];
> + struct stm32_qspi_flash *flash = &qspi->flash[spi_get_chipselect(spi, 0)];
> u32 ccr, cr;
> int timeout, err = 0, err_poll_status = 0;
>
> @@ -564,7 +564,7 @@ static int stm32_qspi_transfer_one_message(struct spi_controller *ctrl,
> struct spi_mem_op op;
> int ret = 0;
>
> - if (!spi->cs_gpiod)
> + if (!spi_get_csgpiod(spi, 0))
> return -EOPNOTSUPP;
>
> ret = pm_runtime_resume_and_get(qspi->dev);
> @@ -573,7 +573,7 @@ static int stm32_qspi_transfer_one_message(struct spi_controller *ctrl,
>
> mutex_lock(&qspi->lock);
>
> - gpiod_set_value_cansleep(spi->cs_gpiod, true);
> + gpiod_set_value_cansleep(spi_get_csgpiod(spi, 0), true);
>
> list_for_each_entry(transfer, &msg->transfers, transfer_list) {
> u8 dummy_bytes = 0;
> @@ -626,7 +626,7 @@ static int stm32_qspi_transfer_one_message(struct spi_controller *ctrl,
> }
>
> end_of_transfer:
> - gpiod_set_value_cansleep(spi->cs_gpiod, false);
> + gpiod_set_value_cansleep(spi_get_csgpiod(spi, 0), false);
>
> mutex_unlock(&qspi->lock);
>
> @@ -669,8 +669,8 @@ static int stm32_qspi_setup(struct spi_device *spi)
>
> presc = DIV_ROUND_UP(qspi->clk_rate, spi->max_speed_hz) - 1;
>
> - flash = &qspi->flash[spi->chip_select];
> - flash->cs = spi->chip_select;
> + flash = &qspi->flash[spi_get_chipselect(spi, 0)];
> + flash->cs = spi_get_chipselect(spi, 0);
> flash->presc = presc;
>
> mutex_lock(&qspi->lock);
Reviewed-by: Patrice Chotard <patrice.chotard at foss.st.com>
Thanks
Patrice
More information about the linux-riscv
mailing list