From: Greg Kroah-Hartman Date: Mon, 8 May 2023 07:57:31 +0000 (+0200) Subject: drop an unneeded spi patch from 6.3 X-Git-Tag: v5.15.111~37 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4a55d89eae8daec5db6bc23607241b36eb7147e7;p=thirdparty%2Fkernel%2Fstable-queue.git drop an unneeded spi patch from 6.3 --- diff --git a/queue-6.3/series b/queue-6.3/series index 167a9a2b37d..28923f231be 100644 --- a/queue-6.3/series +++ b/queue-6.3/series @@ -511,7 +511,6 @@ interconnect-qcom-rpm-drop-bogus-pm-domain-attach.patch spi-mchp-pci1xxxx-fix-length-of-spi-transactions-not.patch spi-mchp-pci1xxxx-fix-spi-transactions-not-working-a.patch spi-mpc5xxx-psc-remove-unused-platform_data.patch -spi-replace-all-spi-chip_select-and-spi-cs_gpiod-ref.patch spi-mchp-pci1xxxx-fix-improper-implementation-of-dis.patch spi-fsl-spi-fix-cpm-qe-mode-litte-endian.patch vmci_host-fix-a-race-condition-in-vmci_host_poll-cau.patch diff --git a/queue-6.3/spi-cadence-quadspi-fix-suspend-resume-implementatio.patch b/queue-6.3/spi-cadence-quadspi-fix-suspend-resume-implementatio.patch index 51e3c410054..6b3bd8a01b8 100644 --- a/queue-6.3/spi-cadence-quadspi-fix-suspend-resume-implementatio.patch +++ b/queue-6.3/spi-cadence-quadspi-fix-suspend-resume-implementatio.patch @@ -22,14 +22,12 @@ Link: https://lore.kernel.org/r/20230417091027.966146-3-d-gole@ti.com Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- - drivers/spi/spi-cadence-quadspi.c | 19 ++++++++++++++++--- + drivers/spi/spi-cadence-quadspi.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) -diff --git a/drivers/spi/spi-cadence-quadspi.c b/drivers/spi/spi-cadence-quadspi.c -index fb6d85fd2e864..aab9d6a8ead90 100644 --- a/drivers/spi/spi-cadence-quadspi.c +++ b/drivers/spi/spi-cadence-quadspi.c -@@ -1807,17 +1807,30 @@ static int cqspi_remove(struct platform_device *pdev) +@@ -1806,17 +1806,30 @@ static int cqspi_remove(struct platform_ static int cqspi_suspend(struct device *dev) { struct cqspi_st *cqspi = dev_get_drvdata(dev); @@ -49,20 +47,17 @@ index fb6d85fd2e864..aab9d6a8ead90 100644 { struct cqspi_st *cqspi = dev_get_drvdata(dev); + struct spi_master *master = dev_get_drvdata(dev); - -- cqspi_controller_enable(cqspi, 1); -- return 0; ++ + clk_prepare_enable(cqspi->clk); + cqspi_wait_idle(cqspi); + cqspi_controller_init(cqspi); + + cqspi->current_cs = -1; + cqspi->sclk = 0; -+ + +- cqspi_controller_enable(cqspi, 1); +- return 0; + return spi_master_resume(master); } static const struct dev_pm_ops cqspi__dev_pm_ops = { --- -2.39.2 - diff --git a/queue-6.3/spi-cadence-quadspi-use-macro-define_simple_dev_pm_o.patch b/queue-6.3/spi-cadence-quadspi-use-macro-define_simple_dev_pm_o.patch index 096cf7ab8d0..b8ec200764f 100644 --- a/queue-6.3/spi-cadence-quadspi-use-macro-define_simple_dev_pm_o.patch +++ b/queue-6.3/spi-cadence-quadspi-use-macro-define_simple_dev_pm_o.patch @@ -30,14 +30,12 @@ Link: https://lore.kernel.org/r/20230420054257.925092-1-d-gole@ti.com Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- - drivers/spi/spi-cadence-quadspi.c | 13 ++----------- + drivers/spi/spi-cadence-quadspi.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) -diff --git a/drivers/spi/spi-cadence-quadspi.c b/drivers/spi/spi-cadence-quadspi.c -index aab9d6a8ead90..6b49d9f650b8b 100644 --- a/drivers/spi/spi-cadence-quadspi.c +++ b/drivers/spi/spi-cadence-quadspi.c -@@ -1803,7 +1803,6 @@ static int cqspi_remove(struct platform_device *pdev) +@@ -1802,7 +1802,6 @@ static int cqspi_remove(struct platform_ return 0; } @@ -45,7 +43,7 @@ index aab9d6a8ead90..6b49d9f650b8b 100644 static int cqspi_suspend(struct device *dev) { struct cqspi_st *cqspi = dev_get_drvdata(dev); -@@ -1833,15 +1832,7 @@ static int cqspi_resume(struct device *dev) +@@ -1832,15 +1831,7 @@ static int cqspi_resume(struct device *d return spi_master_resume(master); } @@ -62,7 +60,7 @@ index aab9d6a8ead90..6b49d9f650b8b 100644 static const struct cqspi_driver_platdata cdns_qspi = { .quirks = CQSPI_DISABLE_DAC_MODE, -@@ -1908,7 +1899,7 @@ static struct platform_driver cqspi_platform_driver = { +@@ -1907,7 +1898,7 @@ static struct platform_driver cqspi_plat .remove = cqspi_remove, .driver = { .name = CQSPI_NAME, @@ -71,6 +69,3 @@ index aab9d6a8ead90..6b49d9f650b8b 100644 .of_match_table = cqspi_dt_ids, }, }; --- -2.39.2 - diff --git a/queue-6.3/spi-mchp-pci1xxxx-fix-improper-implementation-of-dis.patch b/queue-6.3/spi-mchp-pci1xxxx-fix-improper-implementation-of-dis.patch index b947ca09be0..11cf235f098 100644 --- a/queue-6.3/spi-mchp-pci1xxxx-fix-improper-implementation-of-dis.patch +++ b/queue-6.3/spi-mchp-pci1xxxx-fix-improper-implementation-of-dis.patch @@ -16,15 +16,14 @@ Signed-off-by: Tharun Kumar P Link: https://lore.kernel.org/r/20230404171613.1336093-4-tharunkumar.pasumarthi@microchip.com Signed-off-by: Mark Brown Signed-off-by: Sasha Levin +Signed-off-by: Greg Kroah-Hartman --- - drivers/spi/spi-pci1xxxx.c | 17 +++++------------ + drivers/spi/spi-pci1xxxx.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) -diff --git a/drivers/spi/spi-pci1xxxx.c b/drivers/spi/spi-pci1xxxx.c -index 82d4bfeea1fa4..4445d82409d6d 100644 --- a/drivers/spi/spi-pci1xxxx.c +++ b/drivers/spi/spi-pci1xxxx.c -@@ -114,17 +114,14 @@ static void pci1xxxx_spi_set_cs(struct spi_device *spi, bool enable) +@@ -114,17 +114,14 @@ static void pci1xxxx_spi_set_cs(struct s /* Set the DEV_SEL bits of the SPI_MST_CTL_REG */ regval = readl(par->reg_base + SPI_MST_CTL_REG_OFFSET(p->hw_inst)); @@ -32,11 +31,11 @@ index 82d4bfeea1fa4..4445d82409d6d 100644 + if (!enable) { + regval |= SPI_FORCE_CE; regval &= ~SPI_MST_CTL_DEVSEL_MASK; - regval |= (spi_get_chipselect(spi, 0) << 25); + regval |= (spi->chip_select << 25); - writel(regval, - par->reg_base + SPI_MST_CTL_REG_OFFSET(p->hw_inst)); } else { -- regval &= ~(spi_get_chipselect(spi, 0) << 25); +- regval &= ~(spi->chip_select << 25); - writel(regval, - par->reg_base + SPI_MST_CTL_REG_OFFSET(p->hw_inst)); - @@ -46,7 +45,7 @@ index 82d4bfeea1fa4..4445d82409d6d 100644 } static u8 pci1xxxx_get_clock_div(u32 hz) -@@ -199,7 +196,7 @@ static int pci1xxxx_spi_transfer_one(struct spi_controller *spi_ctlr, +@@ -199,7 +196,7 @@ static int pci1xxxx_spi_transfer_one(str else regval &= ~SPI_MST_CTL_MODE_SEL; @@ -55,7 +54,7 @@ index 82d4bfeea1fa4..4445d82409d6d 100644 regval &= ~SPI_MST_CTL_CMD_LEN_MASK; regval |= (len << 8); writel(regval, par->reg_base + -@@ -223,10 +220,6 @@ static int pci1xxxx_spi_transfer_one(struct spi_controller *spi_ctlr, +@@ -223,10 +220,6 @@ static int pci1xxxx_spi_transfer_one(str } } } @@ -66,6 +65,3 @@ index 82d4bfeea1fa4..4445d82409d6d 100644 p->spi_xfer_in_progress = false; return 0; --- -2.39.2 - diff --git a/queue-6.3/spi-replace-all-spi-chip_select-and-spi-cs_gpiod-ref.patch b/queue-6.3/spi-replace-all-spi-chip_select-and-spi-cs_gpiod-ref.patch deleted file mode 100644 index 7b96c009739..00000000000 --- a/queue-6.3/spi-replace-all-spi-chip_select-and-spi-cs_gpiod-ref.patch +++ /dev/null @@ -1,2905 +0,0 @@ -From 37eb046d30e73ab12c596521b75a82ea5e97bbac Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Fri, 10 Mar 2023 23:02:03 +0530 -Subject: spi: Replace all spi->chip_select and spi->cs_gpiod references with - function call -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -From: Amit Kumar Mahapatra via Alsa-devel - -[ Upstream commit 9e264f3f85a56cc109cc2d6010a48aa89d5c1ff1 ] - -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 -Acked-by: Heiko Stuebner # Rockchip drivers -Reviewed-by: Michal Simek -Reviewed-by: Cédric Le Goater # Aspeed driver -Reviewed-by: Dhruva Gole # SPI Cadence QSPI -Reviewed-by: Patrice Chotard # spi-stm32-qspi -Acked-by: William Zhang # bcm63xx-hsspi driver -Reviewed-by: Serge Semin # DW SSI part -Link: https://lore.kernel.org/r/167847070432.26.15076794204368669839@mailman-core.alsa-project.org -Signed-off-by: Mark Brown -Stable-dep-of: 45d2af82e0e6 ("spi: mchp-pci1xxxx: Fix improper implementation of disabling chip select lines") -Signed-off-by: Sasha Levin ---- - drivers/spi/spi-altera-core.c | 2 +- - drivers/spi/spi-amd.c | 4 ++-- - drivers/spi/spi-ar934x.c | 2 +- - drivers/spi/spi-armada-3700.c | 4 ++-- - drivers/spi/spi-aspeed-smc.c | 13 +++++++------ - drivers/spi/spi-at91-usart.c | 2 +- - drivers/spi/spi-ath79.c | 4 ++-- - drivers/spi/spi-atmel.c | 26 +++++++++++++------------- - drivers/spi/spi-au1550.c | 4 ++-- - drivers/spi/spi-axi-spi-engine.c | 2 +- - drivers/spi/spi-bcm-qspi.c | 10 +++++----- - drivers/spi/spi-bcm2835.c | 19 ++++++++++--------- - drivers/spi/spi-bcm2835aux.c | 4 ++-- - drivers/spi/spi-bcm63xx-hsspi.c | 30 +++++++++++++++--------------- - drivers/spi/spi-bcm63xx.c | 2 +- - drivers/spi/spi-bcmbca-hsspi.c | 30 +++++++++++++++--------------- - drivers/spi/spi-cadence-quadspi.c | 5 +++-- - drivers/spi/spi-cadence-xspi.c | 4 ++-- - drivers/spi/spi-cadence.c | 4 ++-- - drivers/spi/spi-cavium.c | 8 ++++---- - drivers/spi/spi-coldfire-qspi.c | 8 ++++---- - drivers/spi/spi-davinci.c | 18 +++++++++--------- - drivers/spi/spi-dln2.c | 6 +++--- - drivers/spi/spi-dw-core.c | 2 +- - drivers/spi/spi-dw-mmio.c | 4 ++-- - drivers/spi/spi-falcon.c | 2 +- - drivers/spi/spi-fsi.c | 2 +- - drivers/spi/spi-fsl-dspi.c | 16 ++++++++-------- - drivers/spi/spi-fsl-espi.c | 6 +++--- - drivers/spi/spi-fsl-lpspi.c | 2 +- - drivers/spi/spi-fsl-qspi.c | 6 +++--- - drivers/spi/spi-fsl-spi.c | 2 +- - drivers/spi/spi-geni-qcom.c | 6 +++--- - drivers/spi/spi-gpio.c | 4 ++-- - drivers/spi/spi-gxp.c | 4 ++-- - drivers/spi/spi-hisi-sfc-v3xx.c | 2 +- - drivers/spi/spi-img-spfi.c | 14 +++++++------- - drivers/spi/spi-imx.c | 30 +++++++++++++++--------------- - drivers/spi/spi-ingenic.c | 4 ++-- - drivers/spi/spi-intel.c | 2 +- - drivers/spi/spi-jcore.c | 4 ++-- - drivers/spi/spi-lantiq-ssc.c | 6 +++--- - drivers/spi/spi-mem.c | 4 ++-- - drivers/spi/spi-meson-spicc.c | 2 +- - drivers/spi/spi-microchip-core.c | 6 +++--- - drivers/spi/spi-mpc512x-psc.c | 8 ++++---- - drivers/spi/spi-mpc52xx.c | 2 +- - drivers/spi/spi-mt65xx.c | 6 +++--- - drivers/spi/spi-mt7621.c | 2 +- - drivers/spi/spi-mux.c | 8 ++++---- - drivers/spi/spi-mxic.c | 10 +++++----- - drivers/spi/spi-mxs.c | 2 +- - drivers/spi/spi-npcm-fiu.c | 20 ++++++++++---------- - drivers/spi/spi-nxp-fspi.c | 10 +++++----- - drivers/spi/spi-omap-uwire.c | 8 ++++---- - drivers/spi/spi-omap2-mcspi.c | 24 ++++++++++++------------ - drivers/spi/spi-orion.c | 4 ++-- - drivers/spi/spi-pci1xxxx.c | 4 ++-- - drivers/spi/spi-pic32-sqi.c | 2 +- - drivers/spi/spi-pic32.c | 4 ++-- - drivers/spi/spi-pl022.c | 4 ++-- - drivers/spi/spi-pxa2xx.c | 6 +++--- - drivers/spi/spi-qcom-qspi.c | 2 +- - drivers/spi/spi-rb4xx.c | 2 +- - drivers/spi/spi-rockchip-sfc.c | 2 +- - drivers/spi/spi-rockchip.c | 26 ++++++++++++++------------ - drivers/spi/spi-rspi.c | 10 +++++----- - drivers/spi/spi-s3c64xx.c | 2 +- - drivers/spi/spi-sc18is602.c | 4 ++-- - drivers/spi/spi-sh-msiof.c | 6 +++--- - drivers/spi/spi-sh-sci.c | 2 +- - drivers/spi/spi-sifive.c | 6 +++--- - drivers/spi/spi-sn-f-ospi.c | 2 +- - drivers/spi/spi-st-ssc4.c | 2 +- - drivers/spi/spi-stm32-qspi.c | 12 ++++++------ - drivers/spi/spi-sun4i.c | 2 +- - drivers/spi/spi-sun6i.c | 2 +- - drivers/spi/spi-synquacer.c | 6 +++--- - drivers/spi/spi-tegra114.c | 28 ++++++++++++++-------------- - drivers/spi/spi-tegra20-sflash.c | 2 +- - drivers/spi/spi-tegra20-slink.c | 6 +++--- - drivers/spi/spi-tegra210-quad.c | 8 ++++---- - drivers/spi/spi-ti-qspi.c | 16 ++++++++-------- - drivers/spi/spi-topcliff-pch.c | 4 ++-- - drivers/spi/spi-wpcm-fiu.c | 12 ++++++------ - drivers/spi/spi-xcomm.c | 2 +- - drivers/spi/spi-xilinx.c | 6 +++--- - drivers/spi/spi-xlp.c | 4 ++-- - drivers/spi/spi-zynq-qspi.c | 2 +- - drivers/spi/spi-zynqmp-gqspi.c | 2 +- - drivers/spi/spidev.c | 6 +++--- - include/trace/events/spi.h | 10 +++++----- - 92 files changed, 333 insertions(+), 328 deletions(-) - -diff --git a/drivers/spi/spi-altera-core.c b/drivers/spi/spi-altera-core.c -index 94fe6bf1b9a6a..87e37f48f196e 100644 ---- a/drivers/spi/spi-altera-core.c -+++ b/drivers/spi/spi-altera-core.c -@@ -80,7 +80,7 @@ static void altera_spi_set_cs(struct spi_device *spi, bool is_high) - altr_spi_writel(hw, ALTERA_SPI_TARGET_SEL, 0); - } else { - altr_spi_writel(hw, ALTERA_SPI_TARGET_SEL, -- BIT(spi->chip_select)); -+ BIT(spi_get_chipselect(spi, 0))); - hw->imr |= ALTERA_SPI_CONTROL_SSO_MSK; - altr_spi_writel(hw, ALTERA_SPI_CONTROL, hw->imr); - } -diff --git a/drivers/spi/spi-amd.c b/drivers/spi/spi-amd.c -index bfc3ab5f39eaa..fecead757a3cd 100644 ---- a/drivers/spi/spi-amd.c -+++ b/drivers/spi/spi-amd.c -@@ -347,7 +347,7 @@ static inline int amd_spi_fifo_xfer(struct amd_spi *amd_spi, - case AMD_SPI_V1: - break; - case AMD_SPI_V2: -- amd_spi_clear_chip(amd_spi, message->spi->chip_select); -+ amd_spi_clear_chip(amd_spi, spi_get_chipselect(message->spi, 0)); - break; - default: - return -ENODEV; -@@ -364,7 +364,7 @@ static int amd_spi_master_transfer(struct spi_master *master, - struct amd_spi *amd_spi = spi_master_get_devdata(master); - struct spi_device *spi = msg->spi; - -- amd_spi_select_chip(amd_spi, spi->chip_select); -+ amd_spi_select_chip(amd_spi, spi_get_chipselect(spi, 0)); - - /* - * Extract spi_transfers from the spi message and -diff --git a/drivers/spi/spi-ar934x.c b/drivers/spi/spi-ar934x.c -index 4a6ecaa0a9c9c..41ef6cf5c5851 100644 ---- a/drivers/spi/spi-ar934x.c -+++ b/drivers/spi/spi-ar934x.c -@@ -125,7 +125,7 @@ static int ar934x_spi_transfer_one_message(struct spi_controller *ctlr, - iowrite32(reg, sp->base + AR934X_SPI_DATAOUT); - } - -- reg = AR934X_SPI_SHIFT_VAL(spi->chip_select, term, -+ reg = AR934X_SPI_SHIFT_VAL(spi_get_chipselect(spi, 0), term, - trx_cur * 8); - iowrite32(reg, sp->base + AR934X_SPI_REG_SHIFT_CTRL); - stat = readl_poll_timeout( -diff --git a/drivers/spi/spi-armada-3700.c b/drivers/spi/spi-armada-3700.c -index 4d554b948d711..8584045fc17bb 100644 ---- a/drivers/spi/spi-armada-3700.c -+++ b/drivers/spi/spi-armada-3700.c -@@ -437,9 +437,9 @@ static void a3700_spi_set_cs(struct spi_device *spi, bool enable) - struct a3700_spi *a3700_spi = spi_controller_get_devdata(spi->controller); - - if (!enable) -- a3700_spi_activate_cs(a3700_spi, spi->chip_select); -+ a3700_spi_activate_cs(a3700_spi, spi_get_chipselect(spi, 0)); - else -- a3700_spi_deactivate_cs(a3700_spi, spi->chip_select); -+ a3700_spi_deactivate_cs(a3700_spi, spi_get_chipselect(spi, 0)); - } - - static void a3700_spi_header_set(struct a3700_spi *a3700_spi) -diff --git a/drivers/spi/spi-aspeed-smc.c b/drivers/spi/spi-aspeed-smc.c -index 873ff2cf72c9d..b7a9ec550ba16 100644 ---- a/drivers/spi/spi-aspeed-smc.c -+++ b/drivers/spi/spi-aspeed-smc.c -@@ -296,7 +296,7 @@ static const struct aspeed_spi_data ast2400_spi_data; - static int do_aspeed_spi_exec_op(struct spi_mem *mem, const struct spi_mem_op *op) - { - struct aspeed_spi *aspi = spi_controller_get_devdata(mem->spi->master); -- struct aspeed_spi_chip *chip = &aspi->chips[mem->spi->chip_select]; -+ struct aspeed_spi_chip *chip = &aspi->chips[spi_get_chipselect(mem->spi, 0)]; - u32 addr_mode, addr_mode_backup; - u32 ctl_val; - int ret = 0; -@@ -377,7 +377,8 @@ static const char *aspeed_spi_get_name(struct spi_mem *mem) - struct aspeed_spi *aspi = spi_controller_get_devdata(mem->spi->master); - struct device *dev = aspi->dev; - -- return devm_kasprintf(dev, GFP_KERNEL, "%s.%d", dev_name(dev), mem->spi->chip_select); -+ return devm_kasprintf(dev, GFP_KERNEL, "%s.%d", dev_name(dev), -+ spi_get_chipselect(mem->spi, 0)); - } - - struct aspeed_spi_window { -@@ -553,7 +554,7 @@ static int aspeed_spi_do_calibration(struct aspeed_spi_chip *chip); - static int aspeed_spi_dirmap_create(struct spi_mem_dirmap_desc *desc) - { - struct aspeed_spi *aspi = spi_controller_get_devdata(desc->mem->spi->master); -- struct aspeed_spi_chip *chip = &aspi->chips[desc->mem->spi->chip_select]; -+ struct aspeed_spi_chip *chip = &aspi->chips[spi_get_chipselect(desc->mem->spi, 0)]; - struct spi_mem_op *op = &desc->info.op_tmpl; - u32 ctl_val; - int ret = 0; -@@ -620,7 +621,7 @@ static ssize_t aspeed_spi_dirmap_read(struct spi_mem_dirmap_desc *desc, - u64 offset, size_t len, void *buf) - { - struct aspeed_spi *aspi = spi_controller_get_devdata(desc->mem->spi->master); -- struct aspeed_spi_chip *chip = &aspi->chips[desc->mem->spi->chip_select]; -+ struct aspeed_spi_chip *chip = &aspi->chips[spi_get_chipselect(desc->mem->spi, 0)]; - - /* Switch to USER command mode if mapping window is too small */ - if (chip->ahb_window_size < offset + len) { -@@ -670,7 +671,7 @@ static int aspeed_spi_setup(struct spi_device *spi) - { - struct aspeed_spi *aspi = spi_controller_get_devdata(spi->master); - const struct aspeed_spi_data *data = aspi->data; -- unsigned int cs = spi->chip_select; -+ unsigned int cs = spi_get_chipselect(spi, 0); - struct aspeed_spi_chip *chip = &aspi->chips[cs]; - - chip->aspi = aspi; -@@ -697,7 +698,7 @@ static int aspeed_spi_setup(struct spi_device *spi) - static void aspeed_spi_cleanup(struct spi_device *spi) - { - struct aspeed_spi *aspi = spi_controller_get_devdata(spi->master); -- unsigned int cs = spi->chip_select; -+ unsigned int cs = spi_get_chipselect(spi, 0); - - aspeed_spi_chip_enable(aspi, cs, false); - -diff --git a/drivers/spi/spi-at91-usart.c b/drivers/spi/spi-at91-usart.c -index fab9d223e24a0..ca05c42ae4a5f 100644 ---- a/drivers/spi/spi-at91-usart.c -+++ b/drivers/spi/spi-at91-usart.c -@@ -390,7 +390,7 @@ static int at91_usart_spi_setup(struct spi_device *spi) - - dev_dbg(&spi->dev, - "setup: bpw %u mode 0x%x -> mr %d %08x\n", -- spi->bits_per_word, spi->mode, spi->chip_select, mr); -+ spi->bits_per_word, spi->mode, spi_get_chipselect(spi, 0), mr); - - return 0; - } -diff --git a/drivers/spi/spi-ath79.c b/drivers/spi/spi-ath79.c -index 795e88dbef1bd..6c2001cfa3d11 100644 ---- a/drivers/spi/spi-ath79.c -+++ b/drivers/spi/spi-ath79.c -@@ -71,7 +71,7 @@ static void ath79_spi_chipselect(struct spi_device *spi, int is_active) - { - struct ath79_spi *sp = ath79_spidev_to_sp(spi); - int cs_high = (spi->mode & SPI_CS_HIGH) ? is_active : !is_active; -- u32 cs_bit = AR71XX_SPI_IOC_CS(spi->chip_select); -+ u32 cs_bit = AR71XX_SPI_IOC_CS(spi_get_chipselect(spi, 0)); - - if (cs_high) - sp->ioc_base |= cs_bit; -@@ -140,7 +140,7 @@ static int ath79_exec_mem_op(struct spi_mem *mem, - struct ath79_spi *sp = ath79_spidev_to_sp(mem->spi); - - /* Ensures that reading is performed on device connected to hardware cs0 */ -- if (mem->spi->chip_select || mem->spi->cs_gpiod) -+ if (spi_get_chipselect(mem->spi, 0) || spi_get_csgpiod(mem->spi, 0)) - return -ENOTSUPP; - - /* Only use for fast-read op. */ -diff --git a/drivers/spi/spi-atmel.c b/drivers/spi/spi-atmel.c -index 5c5678f065f33..7b17604a77608 100644 ---- a/drivers/spi/spi-atmel.c -+++ b/drivers/spi/spi-atmel.c -@@ -327,10 +327,10 @@ static void cs_activate(struct atmel_spi *as, struct spi_device *spi) - int chip_select; - u32 mr; - -- if (spi->cs_gpiod) -+ if (spi_get_csgpiod(spi, 0)) - chip_select = as->native_cs_for_gpio; - else -- chip_select = spi->chip_select; -+ chip_select = spi_get_chipselect(spi, 0); - - if (atmel_spi_is_v2(as)) { - spi_writel(as, CSR0 + 4 * chip_select, asd->csr); -@@ -378,10 +378,10 @@ static void cs_deactivate(struct atmel_spi *as, struct spi_device *spi) - int chip_select; - u32 mr; - -- if (spi->cs_gpiod) -+ if (spi_get_csgpiod(spi, 0)) - chip_select = as->native_cs_for_gpio; - else -- chip_select = spi->chip_select; -+ chip_select = spi_get_chipselect(spi, 0); - - /* only deactivate *this* device; sometimes transfers to - * another device may be active when this routine is called. -@@ -394,7 +394,7 @@ static void cs_deactivate(struct atmel_spi *as, struct spi_device *spi) - - dev_dbg(&spi->dev, "DEactivate NPCS, mr %08x\n", mr); - -- if (!spi->cs_gpiod) -+ if (!spi_get_csgpiod(spi, 0)) - spi_writel(as, CR, SPI_BIT(LASTXFER)); - } - -@@ -800,10 +800,10 @@ static int atmel_spi_set_xfer_speed(struct atmel_spi *as, - unsigned long bus_hz; - int chip_select; - -- if (spi->cs_gpiod) -+ if (spi_get_csgpiod(spi, 0)) - chip_select = as->native_cs_for_gpio; - else -- chip_select = spi->chip_select; -+ chip_select = spi_get_chipselect(spi, 0); - - /* v1 chips start out at half the peripheral bus speed. */ - bus_hz = as->spi_clk; -@@ -1189,7 +1189,7 @@ static int atmel_spi_setup(struct spi_device *spi) - as = spi_controller_get_devdata(spi->controller); - - /* see notes above re chipselect */ -- if (!spi->cs_gpiod && (spi->mode & SPI_CS_HIGH)) { -+ if (!spi_get_csgpiod(spi, 0) && (spi->mode & SPI_CS_HIGH)) { - dev_warn(&spi->dev, "setup: non GPIO CS can't be active-high\n"); - return -EINVAL; - } -@@ -1201,16 +1201,16 @@ static int atmel_spi_setup(struct spi_device *spi) - */ - initialize_native_cs_for_gpio(as); - -- if (spi->cs_gpiod && as->native_cs_free) { -+ if (spi_get_csgpiod(spi, 0) && as->native_cs_free) { - dev_err(&spi->dev, - "No native CS available to support this GPIO CS\n"); - return -EBUSY; - } - -- if (spi->cs_gpiod) -+ if (spi_get_csgpiod(spi, 0)) - chip_select = as->native_cs_for_gpio; - else -- chip_select = spi->chip_select; -+ chip_select = spi_get_chipselect(spi, 0); - - csr = SPI_BF(BITS, bits - 8); - if (spi->mode & SPI_CPOL) -@@ -1218,7 +1218,7 @@ static int atmel_spi_setup(struct spi_device *spi) - if (!(spi->mode & SPI_CPHA)) - csr |= SPI_BIT(NCPHA); - -- if (!spi->cs_gpiod) -+ if (!spi_get_csgpiod(spi, 0)) - csr |= SPI_BIT(CSAAT); - csr |= SPI_BF(DLYBS, 0); - -@@ -1244,7 +1244,7 @@ static int atmel_spi_setup(struct spi_device *spi) - - dev_dbg(&spi->dev, - "setup: bpw %u mode 0x%x -> csr%d %08x\n", -- bits, spi->mode, spi->chip_select, csr); -+ bits, spi->mode, spi_get_chipselect(spi, 0), csr); - - if (!atmel_spi_is_v2(as)) - spi_writel(as, CSR0 + 4 * chip_select, csr); -diff --git a/drivers/spi/spi-au1550.c b/drivers/spi/spi-au1550.c -index e008761298da4..da713cdfe0870 100644 ---- a/drivers/spi/spi-au1550.c -+++ b/drivers/spi/spi-au1550.c -@@ -166,7 +166,7 @@ static void au1550_spi_chipsel(struct spi_device *spi, int value) - switch (value) { - case BITBANG_CS_INACTIVE: - if (hw->pdata->deactivate_cs) -- hw->pdata->deactivate_cs(hw->pdata, spi->chip_select, -+ hw->pdata->deactivate_cs(hw->pdata, spi_get_chipselect(spi, 0), - cspol); - break; - -@@ -211,7 +211,7 @@ static void au1550_spi_chipsel(struct spi_device *spi, int value) - } while ((stat & PSC_SPISTAT_DR) == 0); - - if (hw->pdata->activate_cs) -- hw->pdata->activate_cs(hw->pdata, spi->chip_select, -+ hw->pdata->activate_cs(hw->pdata, spi_get_chipselect(spi, 0), - cspol); - break; - } -diff --git a/drivers/spi/spi-axi-spi-engine.c b/drivers/spi/spi-axi-spi-engine.c -index 80c3e38f5c1b5..1ff28784cfbb6 100644 ---- a/drivers/spi/spi-axi-spi-engine.c -+++ b/drivers/spi/spi-axi-spi-engine.c -@@ -193,7 +193,7 @@ static void spi_engine_gen_cs(struct spi_engine_program *p, bool dry, - unsigned int mask = 0xff; - - if (assert) -- mask ^= BIT(spi->chip_select); -+ mask ^= BIT(spi_get_chipselect(spi, 0)); - - spi_engine_program_add_cmd(p, dry, SPI_ENGINE_CMD_ASSERT(1, mask)); - } -diff --git a/drivers/spi/spi-bcm-qspi.c b/drivers/spi/spi-bcm-qspi.c -index 0eee574d3e1f2..7c2f1d1fb3f70 100644 ---- a/drivers/spi/spi-bcm-qspi.c -+++ b/drivers/spi/spi-bcm-qspi.c -@@ -986,7 +986,7 @@ static int write_to_hw(struct bcm_qspi *qspi, struct spi_device *spi) - if (has_bspi(qspi)) - mspi_cdram &= ~1; - else -- mspi_cdram |= (~(1 << spi->chip_select) & -+ mspi_cdram |= (~(1 << spi_get_chipselect(spi, 0)) & - MSPI_CDRAM_PCS); - - write_cdram_slot(qspi, slot, mspi_cdram); -@@ -1046,8 +1046,8 @@ static int bcm_qspi_bspi_exec_mem_op(struct spi_device *spi, - return -EIO; - - from = op->addr.val; -- if (!spi->cs_gpiod) -- bcm_qspi_chip_select(qspi, spi->chip_select); -+ if (!spi_get_csgpiod(spi, 0)) -+ bcm_qspi_chip_select(qspi, spi_get_chipselect(spi, 0)); - bcm_qspi_write(qspi, MSPI, MSPI_WRITE_LOCK, 0); - - /* -@@ -1126,8 +1126,8 @@ static int bcm_qspi_transfer_one(struct spi_master *master, - int slots; - unsigned long timeo = msecs_to_jiffies(100); - -- if (!spi->cs_gpiod) -- bcm_qspi_chip_select(qspi, spi->chip_select); -+ if (!spi_get_csgpiod(spi, 0)) -+ bcm_qspi_chip_select(qspi, spi_get_chipselect(spi, 0)); - qspi->trans_pos.trans = trans; - qspi->trans_pos.byte = 0; - -diff --git a/drivers/spi/spi-bcm2835.c b/drivers/spi/spi-bcm2835.c -index 747e03228c487..6b7a3fa93fdf6 100644 ---- a/drivers/spi/spi-bcm2835.c -+++ b/drivers/spi/spi-bcm2835.c -@@ -1274,9 +1274,9 @@ static int bcm2835_spi_setup(struct spi_device *spi) - * The SPI core has successfully requested the CS GPIO line from the - * device tree, so we are done. - */ -- if (spi->cs_gpiod) -+ if (spi_get_csgpiod(spi, 0)) - return 0; -- if (spi->chip_select > 1) { -+ if (spi_get_chipselect(spi, 0) > 1) { - /* error in the case of native CS requested with CS > 1 - * officially there is a CS2, but it is not documented - * which GPIO is connected with that... -@@ -1301,18 +1301,19 @@ static int bcm2835_spi_setup(struct spi_device *spi) - if (!chip) - return 0; - -- spi->cs_gpiod = gpiochip_request_own_desc(chip, 8 - spi->chip_select, -- DRV_NAME, -- GPIO_LOOKUP_FLAGS_DEFAULT, -- GPIOD_OUT_LOW); -- if (IS_ERR(spi->cs_gpiod)) { -- ret = PTR_ERR(spi->cs_gpiod); -+ spi_set_csgpiod(spi, 0, gpiochip_request_own_desc(chip, -+ 8 - (spi_get_chipselect(spi, 0)), -+ DRV_NAME, -+ GPIO_LOOKUP_FLAGS_DEFAULT, -+ GPIOD_OUT_LOW)); -+ if (IS_ERR(spi_get_csgpiod(spi, 0))) { -+ ret = PTR_ERR(spi_get_csgpiod(spi, 0)); - goto err_cleanup; - } - - /* and set up the "mode" and level */ - dev_info(&spi->dev, "setting up native-CS%i to use GPIO\n", -- spi->chip_select); -+ spi_get_chipselect(spi, 0)); - - return 0; - -diff --git a/drivers/spi/spi-bcm2835aux.c b/drivers/spi/spi-bcm2835aux.c -index e285219223308..a3d8f6108477b 100644 ---- a/drivers/spi/spi-bcm2835aux.c -+++ b/drivers/spi/spi-bcm2835aux.c -@@ -448,7 +448,7 @@ static int bcm2835aux_spi_setup(struct spi_device *spi) - if (spi->mode & SPI_NO_CS) - return 0; - -- if (spi->cs_gpiod) -+ if (spi_get_csgpiod(spi, 0)) - return 0; - - /* for dt-backwards compatibility: only support native on CS0 -@@ -465,7 +465,7 @@ static int bcm2835aux_spi_setup(struct spi_device *spi) - dev_warn(&spi->dev, - "Native CS is not supported - please configure cs-gpio in device-tree\n"); - -- if (spi->chip_select == 0) -+ if (spi_get_chipselect(spi, 0) == 0) - return 0; - - dev_warn(&spi->dev, "Native CS is not working for cs > 0\n"); -diff --git a/drivers/spi/spi-bcm63xx-hsspi.c b/drivers/spi/spi-bcm63xx-hsspi.c -index cd0a6478f5e7b..d1aeae29fab9c 100644 ---- a/drivers/spi/spi-bcm63xx-hsspi.c -+++ b/drivers/spi/spi-bcm63xx-hsspi.c -@@ -349,7 +349,7 @@ static int bcm63xx_hsspi_do_prepend_txrx(struct spi_device *spi, - struct spi_transfer *t) - { - struct bcm63xx_hsspi *bs = spi_master_get_devdata(spi->master); -- unsigned int chip_select = spi->chip_select; -+ unsigned int chip_select = spi_get_chipselect(spi, 0); - u16 opcode = 0, val; - const u8 *tx = t->tx_buf; - u8 *rx = t->rx_buf; -@@ -441,7 +441,7 @@ static void bcm63xx_hsspi_set_cs(struct bcm63xx_hsspi *bs, unsigned int cs, - static void bcm63xx_hsspi_set_clk(struct bcm63xx_hsspi *bs, - struct spi_device *spi, int hz) - { -- unsigned int profile = spi->chip_select; -+ unsigned int profile = spi_get_chipselect(spi, 0); - u32 reg; - - reg = DIV_ROUND_UP(2048, DIV_ROUND_UP(bs->speed_hz, hz)); -@@ -468,7 +468,7 @@ static void bcm63xx_hsspi_set_clk(struct bcm63xx_hsspi *bs, - static int bcm63xx_hsspi_do_txrx(struct spi_device *spi, struct spi_transfer *t) - { - struct bcm63xx_hsspi *bs = spi_master_get_devdata(spi->master); -- unsigned int chip_select = spi->chip_select; -+ unsigned int chip_select = spi_get_chipselect(spi, 0); - u16 opcode = 0, val; - int pending = t->len; - int step_size = HSSPI_BUFFER_LEN; -@@ -478,7 +478,7 @@ static int bcm63xx_hsspi_do_txrx(struct spi_device *spi, struct spi_transfer *t) - - bcm63xx_hsspi_set_clk(bs, spi, t->speed_hz); - if (!t->cs_off) -- bcm63xx_hsspi_set_cs(bs, spi->chip_select, true); -+ bcm63xx_hsspi_set_cs(bs, spi_get_chipselect(spi, 0), true); - - if (tx && rx) - opcode = HSSPI_OP_READ_WRITE; -@@ -545,14 +545,14 @@ static int bcm63xx_hsspi_setup(struct spi_device *spi) - u32 reg; - - reg = __raw_readl(bs->regs + -- HSSPI_PROFILE_SIGNAL_CTRL_REG(spi->chip_select)); -+ HSSPI_PROFILE_SIGNAL_CTRL_REG(spi_get_chipselect(spi, 0))); - reg &= ~(SIGNAL_CTRL_LAUNCH_RISING | SIGNAL_CTRL_LATCH_RISING); - if (spi->mode & SPI_CPHA) - reg |= SIGNAL_CTRL_LAUNCH_RISING; - else - reg |= SIGNAL_CTRL_LATCH_RISING; - __raw_writel(reg, bs->regs + -- HSSPI_PROFILE_SIGNAL_CTRL_REG(spi->chip_select)); -+ HSSPI_PROFILE_SIGNAL_CTRL_REG(spi_get_chipselect(spi, 0))); - - mutex_lock(&bs->bus_mutex); - reg = __raw_readl(bs->regs + HSSPI_GLOBAL_CTRL_REG); -@@ -560,16 +560,16 @@ static int bcm63xx_hsspi_setup(struct spi_device *spi) - /* only change actual polarities if there is no transfer */ - if ((reg & GLOBAL_CTRL_CS_POLARITY_MASK) == bs->cs_polarity) { - if (spi->mode & SPI_CS_HIGH) -- reg |= BIT(spi->chip_select); -+ reg |= BIT(spi_get_chipselect(spi, 0)); - else -- reg &= ~BIT(spi->chip_select); -+ reg &= ~BIT(spi_get_chipselect(spi, 0)); - __raw_writel(reg, bs->regs + HSSPI_GLOBAL_CTRL_REG); - } - - if (spi->mode & SPI_CS_HIGH) -- bs->cs_polarity |= BIT(spi->chip_select); -+ bs->cs_polarity |= BIT(spi_get_chipselect(spi, 0)); - else -- bs->cs_polarity &= ~BIT(spi->chip_select); -+ bs->cs_polarity &= ~BIT(spi_get_chipselect(spi, 0)); - - mutex_unlock(&bs->bus_mutex); - -@@ -600,7 +600,7 @@ static int bcm63xx_hsspi_do_dummy_cs_txrx(struct spi_device *spi, - * e. At the end restore the polarities again to their default values. - */ - -- dummy_cs = !spi->chip_select; -+ dummy_cs = !spi_get_chipselect(spi, 0); - bcm63xx_hsspi_set_cs(bs, dummy_cs, true); - - list_for_each_entry(t, &msg->transfers, transfer_list) { -@@ -633,22 +633,22 @@ static int bcm63xx_hsspi_do_dummy_cs_txrx(struct spi_device *spi, - keep_cs = true; - } else { - if (!t->cs_off) -- bcm63xx_hsspi_set_cs(bs, spi->chip_select, false); -+ bcm63xx_hsspi_set_cs(bs, spi_get_chipselect(spi, 0), false); - - spi_transfer_cs_change_delay_exec(msg, t); - - if (!list_next_entry(t, transfer_list)->cs_off) -- bcm63xx_hsspi_set_cs(bs, spi->chip_select, true); -+ bcm63xx_hsspi_set_cs(bs, spi_get_chipselect(spi, 0), true); - } - } else if (!list_is_last(&t->transfer_list, &msg->transfers) && - t->cs_off != list_next_entry(t, transfer_list)->cs_off) { -- bcm63xx_hsspi_set_cs(bs, spi->chip_select, t->cs_off); -+ bcm63xx_hsspi_set_cs(bs, spi_get_chipselect(spi, 0), t->cs_off); - } - } - - bcm63xx_hsspi_set_cs(bs, dummy_cs, false); - if (status || !keep_cs) -- bcm63xx_hsspi_set_cs(bs, spi->chip_select, false); -+ bcm63xx_hsspi_set_cs(bs, spi_get_chipselect(spi, 0), false); - - return status; - } -diff --git a/drivers/spi/spi-bcm63xx.c b/drivers/spi/spi-bcm63xx.c -index 3686d78c44a6d..787625ce700cb 100644 ---- a/drivers/spi/spi-bcm63xx.c -+++ b/drivers/spi/spi-bcm63xx.c -@@ -292,7 +292,7 @@ static int bcm63xx_txrx_bufs(struct spi_device *spi, struct spi_transfer *first, - /* Issue the transfer */ - cmd = SPI_CMD_START_IMMEDIATE; - cmd |= (prepend_len << SPI_CMD_PREPEND_BYTE_CNT_SHIFT); -- cmd |= (spi->chip_select << SPI_CMD_DEVICE_ID_SHIFT); -+ cmd |= (spi_get_chipselect(spi, 0) << SPI_CMD_DEVICE_ID_SHIFT); - bcm_spi_writew(bs, cmd, SPI_CMD); - - /* Enable the CMD_DONE interrupt */ -diff --git a/drivers/spi/spi-bcmbca-hsspi.c b/drivers/spi/spi-bcmbca-hsspi.c -index 3f9e6131ad863..2306bf879784c 100644 ---- a/drivers/spi/spi-bcmbca-hsspi.c -+++ b/drivers/spi/spi-bcmbca-hsspi.c -@@ -193,7 +193,7 @@ static void bcmbca_hsspi_set_cs(struct bcmbca_hsspi *bs, unsigned int cs, - static void bcmbca_hsspi_set_clk(struct bcmbca_hsspi *bs, - struct spi_device *spi, int hz) - { -- unsigned int profile = spi->chip_select; -+ unsigned int profile = spi_get_chipselect(spi, 0); - u32 reg; - - reg = DIV_ROUND_UP(2048, DIV_ROUND_UP(bs->speed_hz, hz)); -@@ -251,7 +251,7 @@ static int bcmbca_hsspi_do_txrx(struct spi_device *spi, struct spi_transfer *t, - struct spi_message *msg) - { - struct bcmbca_hsspi *bs = spi_master_get_devdata(spi->master); -- unsigned int chip_select = spi->chip_select; -+ unsigned int chip_select = spi_get_chipselect(spi, 0); - u16 opcode = 0, val; - int pending = t->len; - int step_size = HSSPI_BUFFER_LEN; -@@ -312,7 +312,7 @@ static int bcmbca_hsspi_do_txrx(struct spi_device *spi, struct spi_transfer *t, - PINGPONG_COMMAND_START_NOW; - __raw_writel(reg, bs->regs + HSSPI_PINGPONG_COMMAND_REG(0)); - -- if (bcmbca_hsspi_wait_cmd(bs, spi->chip_select)) -+ if (bcmbca_hsspi_wait_cmd(bs, spi_get_chipselect(spi, 0))) - return -ETIMEDOUT; - - pending -= curr_step; -@@ -332,33 +332,33 @@ static int bcmbca_hsspi_setup(struct spi_device *spi) - u32 reg; - - reg = __raw_readl(bs->regs + -- HSSPI_PROFILE_SIGNAL_CTRL_REG(spi->chip_select)); -+ HSSPI_PROFILE_SIGNAL_CTRL_REG(spi_get_chipselect(spi, 0))); - reg &= ~(SIGNAL_CTRL_LAUNCH_RISING | SIGNAL_CTRL_LATCH_RISING); - if (spi->mode & SPI_CPHA) - reg |= SIGNAL_CTRL_LAUNCH_RISING; - else - reg |= SIGNAL_CTRL_LATCH_RISING; - __raw_writel(reg, bs->regs + -- HSSPI_PROFILE_SIGNAL_CTRL_REG(spi->chip_select)); -+ HSSPI_PROFILE_SIGNAL_CTRL_REG(spi_get_chipselect(spi, 0))); - - mutex_lock(&bs->bus_mutex); - reg = __raw_readl(bs->regs + HSSPI_GLOBAL_CTRL_REG); - - if (spi->mode & SPI_CS_HIGH) -- reg |= BIT(spi->chip_select); -+ reg |= BIT(spi_get_chipselect(spi, 0)); - else -- reg &= ~BIT(spi->chip_select); -+ reg &= ~BIT(spi_get_chipselect(spi, 0)); - __raw_writel(reg, bs->regs + HSSPI_GLOBAL_CTRL_REG); - - if (spi->mode & SPI_CS_HIGH) -- bs->cs_polarity |= BIT(spi->chip_select); -+ bs->cs_polarity |= BIT(spi_get_chipselect(spi, 0)); - else -- bs->cs_polarity &= ~BIT(spi->chip_select); -+ bs->cs_polarity &= ~BIT(spi_get_chipselect(spi, 0)); - - reg = __raw_readl(bs->spim_ctrl); -- reg &= ~BIT(spi->chip_select + SPIM_CTRL_CS_OVERRIDE_VAL_SHIFT); -+ reg &= ~BIT(spi_get_chipselect(spi, 0) + SPIM_CTRL_CS_OVERRIDE_VAL_SHIFT); - if (spi->mode & SPI_CS_HIGH) -- reg |= BIT(spi->chip_select + SPIM_CTRL_CS_OVERRIDE_VAL_SHIFT); -+ reg |= BIT(spi_get_chipselect(spi, 0) + SPIM_CTRL_CS_OVERRIDE_VAL_SHIFT); - __raw_writel(reg, bs->spim_ctrl); - - mutex_unlock(&bs->bus_mutex); -@@ -388,16 +388,16 @@ static int bcmbca_hsspi_transfer_one(struct spi_master *master, - keep_cs = true; - } else { - if (!t->cs_off) -- bcmbca_hsspi_set_cs(bs, spi->chip_select, false); -+ bcmbca_hsspi_set_cs(bs, spi_get_chipselect(spi, 0), false); - - spi_transfer_cs_change_delay_exec(msg, t); - - if (!list_next_entry(t, transfer_list)->cs_off) -- bcmbca_hsspi_set_cs(bs, spi->chip_select, true); -+ bcmbca_hsspi_set_cs(bs, spi_get_chipselect(spi, 0), true); - } - } else if (!list_is_last(&t->transfer_list, &msg->transfers) && - t->cs_off != list_next_entry(t, transfer_list)->cs_off) { -- bcmbca_hsspi_set_cs(bs, spi->chip_select, t->cs_off); -+ bcmbca_hsspi_set_cs(bs, spi_get_chipselect(spi, 0), t->cs_off); - } - - msg->actual_length += t->len; -@@ -406,7 +406,7 @@ static int bcmbca_hsspi_transfer_one(struct spi_master *master, - mutex_unlock(&bs->msg_mutex); - - if (status || !keep_cs) -- bcmbca_hsspi_set_cs(bs, spi->chip_select, false); -+ bcmbca_hsspi_set_cs(bs, spi_get_chipselect(spi, 0), false); - - msg->status = status; - spi_finalize_current_message(master); -diff --git a/drivers/spi/spi-cadence-quadspi.c b/drivers/spi/spi-cadence-quadspi.c -index 64b6a460d739b..fb6d85fd2e864 100644 ---- a/drivers/spi/spi-cadence-quadspi.c -+++ b/drivers/spi/spi-cadence-quadspi.c -@@ -1355,7 +1355,7 @@ static int cqspi_mem_process(struct spi_mem *mem, const struct spi_mem_op *op) - struct cqspi_st *cqspi = spi_master_get_devdata(mem->spi->master); - struct cqspi_flash_pdata *f_pdata; - -- f_pdata = &cqspi->f_pdata[mem->spi->chip_select]; -+ f_pdata = &cqspi->f_pdata[spi_get_chipselect(mem->spi, 0)]; - cqspi_configure(f_pdata, mem->spi->max_speed_hz); - - if (op->data.dir == SPI_MEM_DATA_IN && op->data.buf.in) { -@@ -1561,7 +1561,8 @@ static const char *cqspi_get_name(struct spi_mem *mem) - struct cqspi_st *cqspi = spi_master_get_devdata(mem->spi->master); - struct device *dev = &cqspi->pdev->dev; - -- return devm_kasprintf(dev, GFP_KERNEL, "%s.%d", dev_name(dev), mem->spi->chip_select); -+ return devm_kasprintf(dev, GFP_KERNEL, "%s.%d", dev_name(dev), -+ spi_get_chipselect(mem->spi, 0)); - } - - static const struct spi_controller_mem_ops cqspi_mem_ops = { -diff --git a/drivers/spi/spi-cadence-xspi.c b/drivers/spi/spi-cadence-xspi.c -index 91db3c973167b..ce4a3145f065b 100644 ---- a/drivers/spi/spi-cadence-xspi.c -+++ b/drivers/spi/spi-cadence-xspi.c -@@ -409,8 +409,8 @@ static int cdns_xspi_mem_op(struct cdns_xspi_dev *cdns_xspi, - { - enum spi_mem_data_dir dir = op->data.dir; - -- if (cdns_xspi->cur_cs != mem->spi->chip_select) -- cdns_xspi->cur_cs = mem->spi->chip_select; -+ if (cdns_xspi->cur_cs != spi_get_chipselect(mem->spi, 0)) -+ cdns_xspi->cur_cs = spi_get_chipselect(mem->spi, 0); - - return cdns_xspi_send_stig_command(cdns_xspi, op, - (dir != SPI_MEM_NO_DATA)); -diff --git a/drivers/spi/spi-cadence.c b/drivers/spi/spi-cadence.c -index 6a7f7df1e7764..4ec778de5baf5 100644 ---- a/drivers/spi/spi-cadence.c -+++ b/drivers/spi/spi-cadence.c -@@ -185,11 +185,11 @@ static void cdns_spi_chipselect(struct spi_device *spi, bool is_high) - /* Select the slave */ - ctrl_reg &= ~CDNS_SPI_CR_SSCTRL; - if (!(xspi->is_decoded_cs)) -- ctrl_reg |= ((~(CDNS_SPI_SS0 << spi->chip_select)) << -+ ctrl_reg |= ((~(CDNS_SPI_SS0 << spi_get_chipselect(spi, 0))) << - CDNS_SPI_SS_SHIFT) & - CDNS_SPI_CR_SSCTRL; - else -- ctrl_reg |= (spi->chip_select << CDNS_SPI_SS_SHIFT) & -+ ctrl_reg |= (spi_get_chipselect(spi, 0) << CDNS_SPI_SS_SHIFT) & - CDNS_SPI_CR_SSCTRL; - } - -diff --git a/drivers/spi/spi-cavium.c b/drivers/spi/spi-cavium.c -index 6854c3ce423b3..dfe224defd6ed 100644 ---- a/drivers/spi/spi-cavium.c -+++ b/drivers/spi/spi-cavium.c -@@ -57,8 +57,8 @@ static int octeon_spi_do_transfer(struct octeon_spi *p, - mpi_cfg.s.cslate = cpha ? 1 : 0; - mpi_cfg.s.enable = 1; - -- if (spi->chip_select < 4) -- p->cs_enax |= 1ull << (12 + spi->chip_select); -+ if (spi_get_chipselect(spi, 0) < 4) -+ p->cs_enax |= 1ull << (12 + spi_get_chipselect(spi, 0)); - mpi_cfg.u64 |= p->cs_enax; - - if (mpi_cfg.u64 != p->last_cfg) { -@@ -78,7 +78,7 @@ static int octeon_spi_do_transfer(struct octeon_spi *p, - writeq(d, p->register_base + OCTEON_SPI_DAT0(p) + (8 * i)); - } - mpi_tx.u64 = 0; -- mpi_tx.s.csid = spi->chip_select; -+ mpi_tx.s.csid = spi_get_chipselect(spi, 0); - mpi_tx.s.leavecs = 1; - mpi_tx.s.txnum = tx_buf ? OCTEON_SPI_MAX_BYTES : 0; - mpi_tx.s.totnum = OCTEON_SPI_MAX_BYTES; -@@ -103,7 +103,7 @@ static int octeon_spi_do_transfer(struct octeon_spi *p, - } - - mpi_tx.u64 = 0; -- mpi_tx.s.csid = spi->chip_select; -+ mpi_tx.s.csid = spi_get_chipselect(spi, 0); - if (last_xfer) - mpi_tx.s.leavecs = xfer->cs_change; - else -diff --git a/drivers/spi/spi-coldfire-qspi.c b/drivers/spi/spi-coldfire-qspi.c -index 263ce90473277..18e4fd86b2f28 100644 ---- a/drivers/spi/spi-coldfire-qspi.c -+++ b/drivers/spi/spi-coldfire-qspi.c -@@ -290,9 +290,9 @@ static void mcfqspi_set_cs(struct spi_device *spi, bool enable) - bool cs_high = spi->mode & SPI_CS_HIGH; - - if (enable) -- mcfqspi_cs_select(mcfqspi, spi->chip_select, cs_high); -+ mcfqspi_cs_select(mcfqspi, spi_get_chipselect(spi, 0), cs_high); - else -- mcfqspi_cs_deselect(mcfqspi, spi->chip_select, cs_high); -+ mcfqspi_cs_deselect(mcfqspi, spi_get_chipselect(spi, 0), cs_high); - } - - static int mcfqspi_transfer_one(struct spi_master *master, -@@ -324,11 +324,11 @@ static int mcfqspi_transfer_one(struct spi_master *master, - static int mcfqspi_setup(struct spi_device *spi) - { - mcfqspi_cs_deselect(spi_master_get_devdata(spi->master), -- spi->chip_select, spi->mode & SPI_CS_HIGH); -+ spi_get_chipselect(spi, 0), spi->mode & SPI_CS_HIGH); - - dev_dbg(&spi->dev, - "bits per word %d, chip select %d, speed %d KHz\n", -- spi->bits_per_word, spi->chip_select, -+ spi->bits_per_word, spi_get_chipselect(spi, 0), - (MCFQSPI_BUSCLK / mcfqspi_qmr_baud(spi->max_speed_hz)) - / 1000); - -diff --git a/drivers/spi/spi-davinci.c b/drivers/spi/spi-davinci.c -index d112c2cac042b..55c9abcb8e3b3 100644 ---- a/drivers/spi/spi-davinci.c -+++ b/drivers/spi/spi-davinci.c -@@ -199,7 +199,7 @@ static void davinci_spi_chipselect(struct spi_device *spi, int value) - { - struct davinci_spi *dspi; - struct davinci_spi_config *spicfg = spi->controller_data; -- u8 chip_sel = spi->chip_select; -+ u8 chip_sel = spi_get_chipselect(spi, 0); - u16 spidat1 = CS_DEFAULT; - - dspi = spi_master_get_devdata(spi->master); -@@ -212,11 +212,11 @@ static void davinci_spi_chipselect(struct spi_device *spi, int value) - * Board specific chip select logic decides the polarity and cs - * line for the controller - */ -- if (spi->cs_gpiod) { -+ if (spi_get_csgpiod(spi, 0)) { - if (value == BITBANG_CS_ACTIVE) -- gpiod_set_value(spi->cs_gpiod, 1); -+ gpiod_set_value(spi_get_csgpiod(spi, 0), 1); - else -- gpiod_set_value(spi->cs_gpiod, 0); -+ gpiod_set_value(spi_get_csgpiod(spi, 0), 0); - } else { - if (value == BITBANG_CS_ACTIVE) { - if (!(spi->mode & SPI_CS_WORD)) -@@ -293,11 +293,11 @@ static int davinci_spi_setup_transfer(struct spi_device *spi, - if (bits_per_word <= 8) { - dspi->get_rx = davinci_spi_rx_buf_u8; - dspi->get_tx = davinci_spi_tx_buf_u8; -- dspi->bytes_per_word[spi->chip_select] = 1; -+ dspi->bytes_per_word[spi_get_chipselect(spi, 0)] = 1; - } else { - dspi->get_rx = davinci_spi_rx_buf_u16; - dspi->get_tx = davinci_spi_tx_buf_u16; -- dspi->bytes_per_word[spi->chip_select] = 2; -+ dspi->bytes_per_word[spi_get_chipselect(spi, 0)] = 2; - } - - if (!hz) -@@ -415,11 +415,11 @@ static int davinci_spi_setup(struct spi_device *spi) - dspi = spi_master_get_devdata(spi->master); - - if (!(spi->mode & SPI_NO_CS)) { -- if (np && spi->cs_gpiod) -+ if (np && spi_get_csgpiod(spi, 0)) - internal_cs = false; - - if (internal_cs) -- set_io_bits(dspi->base + SPIPC0, 1 << spi->chip_select); -+ set_io_bits(dspi->base + SPIPC0, 1 << spi_get_chipselect(spi, 0)); - } - - if (spi->mode & SPI_READY) -@@ -579,7 +579,7 @@ static int davinci_spi_bufs(struct spi_device *spi, struct spi_transfer *t) - spicfg = &davinci_spi_default_cfg; - - /* convert len to words based on bits_per_word */ -- data_type = dspi->bytes_per_word[spi->chip_select]; -+ data_type = dspi->bytes_per_word[spi_get_chipselect(spi, 0)]; - - dspi->tx = t->tx_buf; - dspi->rx = t->rx_buf; -diff --git a/drivers/spi/spi-dln2.c b/drivers/spi/spi-dln2.c -index 0a1fb2bc9e546..5e60e3d5822e7 100644 ---- a/drivers/spi/spi-dln2.c -+++ b/drivers/spi/spi-dln2.c -@@ -596,12 +596,12 @@ static int dln2_spi_prepare_message(struct spi_master *master, - struct dln2_spi *dln2 = spi_master_get_devdata(master); - struct spi_device *spi = message->spi; - -- if (dln2->cs != spi->chip_select) { -- ret = dln2_spi_cs_set_one(dln2, spi->chip_select); -+ if (dln2->cs != spi_get_chipselect(spi, 0)) { -+ ret = dln2_spi_cs_set_one(dln2, spi_get_chipselect(spi, 0)); - if (ret < 0) - return ret; - -- dln2->cs = spi->chip_select; -+ dln2->cs = spi_get_chipselect(spi, 0); - } - - return 0; -diff --git a/drivers/spi/spi-dw-core.c b/drivers/spi/spi-dw-core.c -index c3bfb6c84cab2..ae3108c70f508 100644 ---- a/drivers/spi/spi-dw-core.c -+++ b/drivers/spi/spi-dw-core.c -@@ -103,7 +103,7 @@ void dw_spi_set_cs(struct spi_device *spi, bool enable) - * support active-high or active-low CS level. - */ - if (cs_high == enable) -- dw_writel(dws, DW_SPI_SER, BIT(spi->chip_select)); -+ dw_writel(dws, DW_SPI_SER, BIT(spi_get_chipselect(spi, 0))); - else - dw_writel(dws, DW_SPI_SER, 0); - } -diff --git a/drivers/spi/spi-dw-mmio.c b/drivers/spi/spi-dw-mmio.c -index 26c40ea6dd129..d511da766ce82 100644 ---- a/drivers/spi/spi-dw-mmio.c -+++ b/drivers/spi/spi-dw-mmio.c -@@ -65,7 +65,7 @@ static void dw_spi_mscc_set_cs(struct spi_device *spi, bool enable) - struct dw_spi *dws = spi_master_get_devdata(spi->master); - struct dw_spi_mmio *dwsmmio = container_of(dws, struct dw_spi_mmio, dws); - struct dw_spi_mscc *dwsmscc = dwsmmio->priv; -- u32 cs = spi->chip_select; -+ u32 cs = spi_get_chipselect(spi, 0); - - if (cs < 4) { - u32 sw_mode = MSCC_SPI_MST_SW_MODE_SW_PIN_CTRL_MODE; -@@ -138,7 +138,7 @@ static void dw_spi_sparx5_set_cs(struct spi_device *spi, bool enable) - struct dw_spi *dws = spi_master_get_devdata(spi->master); - struct dw_spi_mmio *dwsmmio = container_of(dws, struct dw_spi_mmio, dws); - struct dw_spi_mscc *dwsmscc = dwsmmio->priv; -- u8 cs = spi->chip_select; -+ u8 cs = spi_get_chipselect(spi, 0); - - if (!enable) { - /* CS override drive enable */ -diff --git a/drivers/spi/spi-falcon.c b/drivers/spi/spi-falcon.c -index a7d4dffac66b2..4c103dff0d445 100644 ---- a/drivers/spi/spi-falcon.c -+++ b/drivers/spi/spi-falcon.c -@@ -131,7 +131,7 @@ int falcon_sflash_xfer(struct spi_device *spi, struct spi_transfer *t, - * especially alen and dumlen. - */ - -- priv->sfcmd = ((spi->chip_select -+ priv->sfcmd = ((spi_get_chipselect(spi, 0) - << SFCMD_CS_OFFSET) - & SFCMD_CS_MASK); - priv->sfcmd |= SFCMD_KEEP_CS_KEEP_SELECTED; -diff --git a/drivers/spi/spi-fsi.c b/drivers/spi/spi-fsi.c -index cf1e4f9ebd727..ba3b17d7c9ec2 100644 ---- a/drivers/spi/spi-fsi.c -+++ b/drivers/spi/spi-fsi.c -@@ -425,7 +425,7 @@ static int fsi_spi_transfer_one_message(struct spi_controller *ctlr, - struct spi_message *mesg) - { - int rc; -- u8 seq_slave = SPI_FSI_SEQUENCE_SEL_SLAVE(mesg->spi->chip_select + 1); -+ u8 seq_slave = SPI_FSI_SEQUENCE_SEL_SLAVE(spi_get_chipselect(mesg->spi, 0) + 1); - unsigned int len; - struct spi_transfer *transfer; - struct fsi_spi *ctx = spi_controller_get_devdata(ctlr); -diff --git a/drivers/spi/spi-fsl-dspi.c b/drivers/spi/spi-fsl-dspi.c -index e419642eb10e5..0f9a97ee2e772 100644 ---- a/drivers/spi/spi-fsl-dspi.c -+++ b/drivers/spi/spi-fsl-dspi.c -@@ -902,19 +902,19 @@ static irqreturn_t dspi_interrupt(int irq, void *dev_id) - - static void dspi_assert_cs(struct spi_device *spi, bool *cs) - { -- if (!spi->cs_gpiod || *cs) -+ if (!spi_get_csgpiod(spi, 0) || *cs) - return; - -- gpiod_set_value_cansleep(spi->cs_gpiod, true); -+ gpiod_set_value_cansleep(spi_get_csgpiod(spi, 0), true); - *cs = true; - } - - static void dspi_deassert_cs(struct spi_device *spi, bool *cs) - { -- if (!spi->cs_gpiod || !*cs) -+ if (!spi_get_csgpiod(spi, 0) || !*cs) - return; - -- gpiod_set_value_cansleep(spi->cs_gpiod, false); -+ gpiod_set_value_cansleep(spi_get_csgpiod(spi, 0), false); - *cs = false; - } - -@@ -938,8 +938,8 @@ static int dspi_transfer_one_message(struct spi_controller *ctlr, - - /* Prepare command word for CMD FIFO */ - dspi->tx_cmd = SPI_PUSHR_CMD_CTAS(0); -- if (!spi->cs_gpiod) -- dspi->tx_cmd |= SPI_PUSHR_CMD_PCS(spi->chip_select); -+ if (!spi_get_csgpiod(spi, 0)) -+ dspi->tx_cmd |= SPI_PUSHR_CMD_PCS(spi_get_chipselect(spi, 0)); - - if (list_is_last(&dspi->cur_transfer->transfer_list, - &dspi->cur_msg->transfers)) { -@@ -1058,7 +1058,7 @@ static int dspi_setup(struct spi_device *spi) - chip->ctar_val |= SPI_CTAR_LSBFE; - } - -- gpiod_direction_output(spi->cs_gpiod, false); -+ gpiod_direction_output(spi_get_csgpiod(spi, 0), false); - dspi_deassert_cs(spi, &cs); - - spi_set_ctldata(spi, chip); -@@ -1071,7 +1071,7 @@ static void dspi_cleanup(struct spi_device *spi) - struct chip_data *chip = spi_get_ctldata((struct spi_device *)spi); - - dev_dbg(&spi->dev, "spi_device %u.%u cleanup\n", -- spi->controller->bus_num, spi->chip_select); -+ spi->controller->bus_num, spi_get_chipselect(spi, 0)); - - kfree(chip); - } -diff --git a/drivers/spi/spi-fsl-espi.c b/drivers/spi/spi-fsl-espi.c -index f7066bef7b06f..b593055e3d6d5 100644 ---- a/drivers/spi/spi-fsl-espi.c -+++ b/drivers/spi/spi-fsl-espi.c -@@ -345,7 +345,7 @@ static void fsl_espi_setup_transfer(struct spi_device *spi, - - /* don't write the mode register if the mode doesn't change */ - if (cs->hw_mode != hw_mode_old) -- fsl_espi_write_reg(espi, ESPI_SPMODEx(spi->chip_select), -+ fsl_espi_write_reg(espi, ESPI_SPMODEx(spi_get_chipselect(spi, 0)), - cs->hw_mode); - } - -@@ -359,7 +359,7 @@ static int fsl_espi_bufs(struct spi_device *spi, struct spi_transfer *t) - reinit_completion(&espi->done); - - /* Set SPCOM[CS] and SPCOM[TRANLEN] field */ -- spcom = SPCOM_CS(spi->chip_select); -+ spcom = SPCOM_CS(spi_get_chipselect(spi, 0)); - spcom |= SPCOM_TRANLEN(t->len - 1); - - /* configure RXSKIP mode */ -@@ -492,7 +492,7 @@ static int fsl_espi_setup(struct spi_device *spi) - - pm_runtime_get_sync(espi->dev); - -- cs->hw_mode = fsl_espi_read_reg(espi, ESPI_SPMODEx(spi->chip_select)); -+ cs->hw_mode = fsl_espi_read_reg(espi, ESPI_SPMODEx(spi_get_chipselect(spi, 0))); - /* mask out bits we are going to set */ - cs->hw_mode &= ~(CSMODE_CP_BEGIN_EDGECLK | CSMODE_CI_INACTIVEHIGH - | CSMODE_REV); -diff --git a/drivers/spi/spi-fsl-lpspi.c b/drivers/spi/spi-fsl-lpspi.c -index 34488de555871..fe69ec8c9d688 100644 ---- a/drivers/spi/spi-fsl-lpspi.c -+++ b/drivers/spi/spi-fsl-lpspi.c -@@ -425,7 +425,7 @@ static int fsl_lpspi_setup_transfer(struct spi_controller *controller, - if (fsl_lpspi->is_only_cs1) - fsl_lpspi->config.chip_select = 1; - else -- fsl_lpspi->config.chip_select = spi->chip_select; -+ fsl_lpspi->config.chip_select = spi_get_chipselect(spi, 0); - - if (!fsl_lpspi->config.speed_hz) - fsl_lpspi->config.speed_hz = spi->max_speed_hz; -diff --git a/drivers/spi/spi-fsl-qspi.c b/drivers/spi/spi-fsl-qspi.c -index 85cc71ba624a9..4f16d4676650d 100644 ---- a/drivers/spi/spi-fsl-qspi.c -+++ b/drivers/spi/spi-fsl-qspi.c -@@ -528,7 +528,7 @@ static void fsl_qspi_select_mem(struct fsl_qspi *q, struct spi_device *spi) - unsigned long rate = spi->max_speed_hz; - int ret; - -- if (q->selected == spi->chip_select) -+ if (q->selected == spi_get_chipselect(spi, 0)) - return; - - if (needs_4x_clock(q)) -@@ -544,7 +544,7 @@ static void fsl_qspi_select_mem(struct fsl_qspi *q, struct spi_device *spi) - if (ret) - return; - -- q->selected = spi->chip_select; -+ q->selected = spi_get_chipselect(spi, 0); - - fsl_qspi_invalidate(q); - } -@@ -823,7 +823,7 @@ static const char *fsl_qspi_get_name(struct spi_mem *mem) - - name = devm_kasprintf(dev, GFP_KERNEL, - "%s-%d", dev_name(q->dev), -- mem->spi->chip_select); -+ spi_get_chipselect(mem->spi, 0)); - - if (!name) { - dev_err(dev, "failed to get memory for custom flash name\n"); -diff --git a/drivers/spi/spi-fsl-spi.c b/drivers/spi/spi-fsl-spi.c -index 93152144fd2ec..08fa6e38f4eba 100644 ---- a/drivers/spi/spi-fsl-spi.c -+++ b/drivers/spi/spi-fsl-spi.c -@@ -503,7 +503,7 @@ static void fsl_spi_grlib_cs_control(struct spi_device *spi, bool on) - struct mpc8xxx_spi *mpc8xxx_spi = spi_master_get_devdata(spi->master); - struct fsl_spi_reg __iomem *reg_base = mpc8xxx_spi->reg_base; - u32 slvsel; -- u16 cs = spi->chip_select; -+ u16 cs = spi_get_chipselect(spi, 0); - - if (cs < mpc8xxx_spi->native_chipselects) { - slvsel = mpc8xxx_spi_read_reg(®_base->slvsel); -diff --git a/drivers/spi/spi-geni-qcom.c b/drivers/spi/spi-geni-qcom.c -index babb039bcb431..301e55fcbde9b 100644 ---- a/drivers/spi/spi-geni-qcom.c -+++ b/drivers/spi/spi-geni-qcom.c -@@ -391,9 +391,9 @@ static int setup_fifo_params(struct spi_device *spi_slv, - cpha = CPHA; - - if (spi_slv->mode & SPI_CS_HIGH) -- demux_output_inv = BIT(spi_slv->chip_select); -+ demux_output_inv = BIT(spi_get_chipselect(spi_slv, 0)); - -- demux_sel = spi_slv->chip_select; -+ demux_sel = spi_get_chipselect(spi_slv, 0); - mas->cur_bits_per_word = spi_slv->bits_per_word; - - spi_setup_word_len(mas, spi_slv->mode, spi_slv->bits_per_word); -@@ -469,7 +469,7 @@ static int setup_gsi_xfer(struct spi_transfer *xfer, struct spi_geni_master *mas - peripheral.loopback_en = !!(spi_slv->mode & SPI_LOOP); - peripheral.clock_pol_high = !!(spi_slv->mode & SPI_CPOL); - peripheral.data_pol_high = !!(spi_slv->mode & SPI_CPHA); -- peripheral.cs = spi_slv->chip_select; -+ peripheral.cs = spi_get_chipselect(spi_slv, 0); - peripheral.pack_en = true; - peripheral.word_len = xfer->bits_per_word - MIN_WORD_LEN; - -diff --git a/drivers/spi/spi-gpio.c b/drivers/spi/spi-gpio.c -index 9c8c7948044ed..092afc7679d40 100644 ---- a/drivers/spi/spi-gpio.c -+++ b/drivers/spi/spi-gpio.c -@@ -230,7 +230,7 @@ static void spi_gpio_chipselect(struct spi_device *spi, int is_active) - - /* Drive chip select line, if we have one */ - if (spi_gpio->cs_gpios) { -- struct gpio_desc *cs = spi_gpio->cs_gpios[spi->chip_select]; -+ struct gpio_desc *cs = spi_gpio->cs_gpios[spi_get_chipselect(spi, 0)]; - - /* SPI chip selects are normally active-low */ - gpiod_set_value_cansleep(cs, (spi->mode & SPI_CS_HIGH) ? is_active : !is_active); -@@ -248,7 +248,7 @@ static int spi_gpio_setup(struct spi_device *spi) - * initialized from the descriptor lookup. - */ - if (spi_gpio->cs_gpios) { -- cs = spi_gpio->cs_gpios[spi->chip_select]; -+ cs = spi_gpio->cs_gpios[spi_get_chipselect(spi, 0)]; - if (!spi->controller_state && cs) - status = gpiod_direction_output(cs, - !(spi->mode & SPI_CS_HIGH)); -diff --git a/drivers/spi/spi-gxp.c b/drivers/spi/spi-gxp.c -index c900c2f39b578..684d63f402f34 100644 ---- a/drivers/spi/spi-gxp.c -+++ b/drivers/spi/spi-gxp.c -@@ -201,7 +201,7 @@ static ssize_t gxp_spi_write(struct gxp_spi_chip *chip, const struct spi_mem_op - static int do_gxp_exec_mem_op(struct spi_mem *mem, const struct spi_mem_op *op) - { - struct gxp_spi *spifi = spi_controller_get_devdata(mem->spi->master); -- struct gxp_spi_chip *chip = &spifi->chips[mem->spi->chip_select]; -+ struct gxp_spi_chip *chip = &spifi->chips[spi_get_chipselect(mem->spi, 0)]; - int ret; - - if (op->data.dir == SPI_MEM_DATA_IN) { -@@ -237,7 +237,7 @@ static const struct spi_controller_mem_ops gxp_spi_mem_ops = { - static int gxp_spi_setup(struct spi_device *spi) - { - struct gxp_spi *spifi = spi_controller_get_devdata(spi->master); -- unsigned int cs = spi->chip_select; -+ unsigned int cs = spi_get_chipselect(spi, 0); - struct gxp_spi_chip *chip = &spifi->chips[cs]; - - chip->spifi = spifi; -diff --git a/drivers/spi/spi-hisi-sfc-v3xx.c b/drivers/spi/spi-hisi-sfc-v3xx.c -index f07d1045a30a2..7cbcb065bb44c 100644 ---- a/drivers/spi/spi-hisi-sfc-v3xx.c -+++ b/drivers/spi/spi-hisi-sfc-v3xx.c -@@ -361,7 +361,7 @@ static int hisi_sfc_v3xx_exec_op(struct spi_mem *mem, - { - struct hisi_sfc_v3xx_host *host; - struct spi_device *spi = mem->spi; -- u8 chip_select = spi->chip_select; -+ u8 chip_select = spi_get_chipselect(spi, 0); - - host = spi_controller_get_devdata(spi->master); - -diff --git a/drivers/spi/spi-img-spfi.c b/drivers/spi/spi-img-spfi.c -index 257046f843ffd..1575e78f8b092 100644 ---- a/drivers/spi/spi-img-spfi.c -+++ b/drivers/spi/spi-img-spfi.c -@@ -413,15 +413,15 @@ static int img_spfi_prepare(struct spi_master *master, struct spi_message *msg) - val = spfi_readl(spfi, SPFI_PORT_STATE); - val &= ~(SPFI_PORT_STATE_DEV_SEL_MASK << - SPFI_PORT_STATE_DEV_SEL_SHIFT); -- val |= msg->spi->chip_select << SPFI_PORT_STATE_DEV_SEL_SHIFT; -+ val |= spi_get_chipselect(msg->spi, 0) << SPFI_PORT_STATE_DEV_SEL_SHIFT; - if (msg->spi->mode & SPI_CPHA) -- val |= SPFI_PORT_STATE_CK_PHASE(msg->spi->chip_select); -+ val |= SPFI_PORT_STATE_CK_PHASE(spi_get_chipselect(msg->spi, 0)); - else -- val &= ~SPFI_PORT_STATE_CK_PHASE(msg->spi->chip_select); -+ val &= ~SPFI_PORT_STATE_CK_PHASE(spi_get_chipselect(msg->spi, 0)); - if (msg->spi->mode & SPI_CPOL) -- val |= SPFI_PORT_STATE_CK_POL(msg->spi->chip_select); -+ val |= SPFI_PORT_STATE_CK_POL(spi_get_chipselect(msg->spi, 0)); - else -- val &= ~SPFI_PORT_STATE_CK_POL(msg->spi->chip_select); -+ val &= ~SPFI_PORT_STATE_CK_POL(spi_get_chipselect(msg->spi, 0)); - spfi_writel(spfi, val, SPFI_PORT_STATE); - - return 0; -@@ -450,11 +450,11 @@ static void img_spfi_config(struct spi_master *master, struct spi_device *spi, - div = DIV_ROUND_UP(clk_get_rate(spfi->spfi_clk), xfer->speed_hz); - div = clamp(512 / (1 << get_count_order(div)), 1, 128); - -- val = spfi_readl(spfi, SPFI_DEVICE_PARAMETER(spi->chip_select)); -+ val = spfi_readl(spfi, SPFI_DEVICE_PARAMETER(spi_get_chipselect(spi, 0))); - val &= ~(SPFI_DEVICE_PARAMETER_BITCLK_MASK << - SPFI_DEVICE_PARAMETER_BITCLK_SHIFT); - val |= div << SPFI_DEVICE_PARAMETER_BITCLK_SHIFT; -- spfi_writel(spfi, val, SPFI_DEVICE_PARAMETER(spi->chip_select)); -+ spfi_writel(spfi, val, SPFI_DEVICE_PARAMETER(spi_get_chipselect(spi, 0))); - - spfi_writel(spfi, xfer->len << SPFI_TRANSACTION_TSIZE_SHIFT, - SPFI_TRANSACTION); -diff --git a/drivers/spi/spi-imx.c b/drivers/spi/spi-imx.c -index 6c9c87cd14cae..81221594dd972 100644 ---- a/drivers/spi/spi-imx.c -+++ b/drivers/spi/spi-imx.c -@@ -528,7 +528,7 @@ static int mx51_ecspi_prepare_message(struct spi_imx_data *spi_imx, - ctrl |= MX51_ECSPI_CTRL_DRCTL(spi_imx->spi_drctl); - - /* set chip select to use */ -- ctrl |= MX51_ECSPI_CTRL_CS(spi->chip_select); -+ ctrl |= MX51_ECSPI_CTRL_CS(spi_get_chipselect(spi, 0)); - - /* - * The ctrl register must be written first, with the EN bit set other -@@ -549,22 +549,22 @@ static int mx51_ecspi_prepare_message(struct spi_imx_data *spi_imx, - * BURST_LENGTH + 1 bits are received - */ - if (spi_imx->slave_mode && is_imx53_ecspi(spi_imx)) -- cfg &= ~MX51_ECSPI_CONFIG_SBBCTRL(spi->chip_select); -+ cfg &= ~MX51_ECSPI_CONFIG_SBBCTRL(spi_get_chipselect(spi, 0)); - else -- cfg |= MX51_ECSPI_CONFIG_SBBCTRL(spi->chip_select); -+ cfg |= MX51_ECSPI_CONFIG_SBBCTRL(spi_get_chipselect(spi, 0)); - - if (spi->mode & SPI_CPOL) { -- cfg |= MX51_ECSPI_CONFIG_SCLKPOL(spi->chip_select); -- cfg |= MX51_ECSPI_CONFIG_SCLKCTL(spi->chip_select); -+ cfg |= MX51_ECSPI_CONFIG_SCLKPOL(spi_get_chipselect(spi, 0)); -+ cfg |= MX51_ECSPI_CONFIG_SCLKCTL(spi_get_chipselect(spi, 0)); - } else { -- cfg &= ~MX51_ECSPI_CONFIG_SCLKPOL(spi->chip_select); -- cfg &= ~MX51_ECSPI_CONFIG_SCLKCTL(spi->chip_select); -+ cfg &= ~MX51_ECSPI_CONFIG_SCLKPOL(spi_get_chipselect(spi, 0)); -+ cfg &= ~MX51_ECSPI_CONFIG_SCLKCTL(spi_get_chipselect(spi, 0)); - } - - if (spi->mode & SPI_CS_HIGH) -- cfg |= MX51_ECSPI_CONFIG_SSBPOL(spi->chip_select); -+ cfg |= MX51_ECSPI_CONFIG_SSBPOL(spi_get_chipselect(spi, 0)); - else -- cfg &= ~MX51_ECSPI_CONFIG_SSBPOL(spi->chip_select); -+ cfg &= ~MX51_ECSPI_CONFIG_SSBPOL(spi_get_chipselect(spi, 0)); - - if (cfg == current_cfg) - return 0; -@@ -614,9 +614,9 @@ static void mx51_configure_cpha(struct spi_imx_data *spi_imx, - cpha ^= flip_cpha; - - if (cpha) -- cfg |= MX51_ECSPI_CONFIG_SCLKPHA(spi->chip_select); -+ cfg |= MX51_ECSPI_CONFIG_SCLKPHA(spi_get_chipselect(spi, 0)); - else -- cfg &= ~MX51_ECSPI_CONFIG_SCLKPHA(spi->chip_select); -+ cfg &= ~MX51_ECSPI_CONFIG_SCLKPHA(spi_get_chipselect(spi, 0)); - - writel(cfg, spi_imx->base + MX51_ECSPI_CONFIG); - } -@@ -768,8 +768,8 @@ static int mx31_prepare_transfer(struct spi_imx_data *spi_imx, - reg |= MX31_CSPICTRL_POL; - if (spi->mode & SPI_CS_HIGH) - reg |= MX31_CSPICTRL_SSPOL; -- if (!spi->cs_gpiod) -- reg |= (spi->chip_select) << -+ if (!spi_get_csgpiod(spi, 0)) -+ reg |= (spi_get_chipselect(spi, 0)) << - (is_imx35_cspi(spi_imx) ? MX35_CSPICTRL_CS_SHIFT : - MX31_CSPICTRL_CS_SHIFT); - -@@ -868,8 +868,8 @@ static int mx21_prepare_transfer(struct spi_imx_data *spi_imx, - reg |= MX21_CSPICTRL_POL; - if (spi->mode & SPI_CS_HIGH) - reg |= MX21_CSPICTRL_SSPOL; -- if (!spi->cs_gpiod) -- reg |= spi->chip_select << MX21_CSPICTRL_CS_SHIFT; -+ if (!spi_get_csgpiod(spi, 0)) -+ reg |= spi_get_chipselect(spi, 0) << MX21_CSPICTRL_CS_SHIFT; - - writel(reg, spi_imx->base + MXC_CSPICTRL); - -diff --git a/drivers/spi/spi-ingenic.c b/drivers/spi/spi-ingenic.c -index 713a238bee63a..7d4b515a160d9 100644 ---- a/drivers/spi/spi-ingenic.c -+++ b/drivers/spi/spi-ingenic.c -@@ -263,7 +263,7 @@ static int spi_ingenic_prepare_message(struct spi_controller *ctlr, - { - struct ingenic_spi *priv = spi_controller_get_devdata(ctlr); - struct spi_device *spi = message->spi; -- unsigned int cs = REG_SSICR1_FRMHL << spi->chip_select; -+ unsigned int cs = REG_SSICR1_FRMHL << spi_get_chipselect(spi, 0); - unsigned int ssicr0_mask = REG_SSICR0_LOOP | REG_SSICR0_FSEL; - unsigned int ssicr1_mask = REG_SSICR1_PHA | REG_SSICR1_POL | cs; - unsigned int ssicr0 = 0, ssicr1 = 0; -@@ -282,7 +282,7 @@ static int spi_ingenic_prepare_message(struct spi_controller *ctlr, - - if (spi->mode & SPI_LOOP) - ssicr0 |= REG_SSICR0_LOOP; -- if (spi->chip_select) -+ if (spi_get_chipselect(spi, 0)) - ssicr0 |= REG_SSICR0_FSEL; - - if (spi->mode & SPI_CPHA) -diff --git a/drivers/spi/spi-intel.c b/drivers/spi/spi-intel.c -index f4679868c49f1..bc6d22149e7e1 100644 ---- a/drivers/spi/spi-intel.c -+++ b/drivers/spi/spi-intel.c -@@ -451,7 +451,7 @@ static u32 intel_spi_chip_addr(const struct intel_spi *ispi, - /* Pick up the correct start address */ - if (!mem) - return 0; -- return mem->spi->chip_select == 1 ? ispi->chip0_size : 0; -+ return (spi_get_chipselect(mem->spi, 0) == 1) ? ispi->chip0_size : 0; - } - - static int intel_spi_read_reg(struct intel_spi *ispi, const struct spi_mem *mem, -diff --git a/drivers/spi/spi-jcore.c b/drivers/spi/spi-jcore.c -index 74c8319c29f17..c42a3358e8c9a 100644 ---- a/drivers/spi/spi-jcore.c -+++ b/drivers/spi/spi-jcore.c -@@ -68,9 +68,9 @@ static void jcore_spi_program(struct jcore_spi *hw) - static void jcore_spi_chipsel(struct spi_device *spi, bool value) - { - struct jcore_spi *hw = spi_master_get_devdata(spi->master); -- u32 csbit = 1U << (2 * spi->chip_select); -+ u32 csbit = 1U << (2 * spi_get_chipselect(spi, 0)); - -- dev_dbg(hw->master->dev.parent, "chipselect %d\n", spi->chip_select); -+ dev_dbg(hw->master->dev.parent, "chipselect %d\n", spi_get_chipselect(spi, 0)); - - if (value) - hw->cs_reg |= csbit; -diff --git a/drivers/spi/spi-lantiq-ssc.c b/drivers/spi/spi-lantiq-ssc.c -index aae26f62ea87a..6b191cefb0d4f 100644 ---- a/drivers/spi/spi-lantiq-ssc.c -+++ b/drivers/spi/spi-lantiq-ssc.c -@@ -388,11 +388,11 @@ static int lantiq_ssc_setup(struct spi_device *spidev) - { - struct spi_master *master = spidev->master; - struct lantiq_ssc_spi *spi = spi_master_get_devdata(master); -- unsigned int cs = spidev->chip_select; -+ unsigned int cs = spi_get_chipselect(spidev, 0); - u32 gpocon; - - /* GPIOs are used for CS */ -- if (spidev->cs_gpiod) -+ if (spi_get_csgpiod(spidev, 0)) - return 0; - - dev_dbg(spi->dev, "using internal chipselect %u\n", cs); -@@ -796,7 +796,7 @@ static void lantiq_ssc_handle_err(struct spi_master *master, - static void lantiq_ssc_set_cs(struct spi_device *spidev, bool enable) - { - struct lantiq_ssc_spi *spi = spi_master_get_devdata(spidev->master); -- unsigned int cs = spidev->chip_select; -+ unsigned int cs = spi_get_chipselect(spidev, 0); - u32 fgpo; - - if (!!(spidev->mode & SPI_CS_HIGH) == enable) -diff --git a/drivers/spi/spi-mem.c b/drivers/spi/spi-mem.c -index 701838b6f0c40..edd7430d4c052 100644 ---- a/drivers/spi/spi-mem.c -+++ b/drivers/spi/spi-mem.c -@@ -325,7 +325,7 @@ int spi_mem_exec_op(struct spi_mem *mem, const struct spi_mem_op *op) - if (!spi_mem_internal_supports_op(mem, op)) - return -ENOTSUPP; - -- if (ctlr->mem_ops && ctlr->mem_ops->exec_op && !mem->spi->cs_gpiod) { -+ if (ctlr->mem_ops && ctlr->mem_ops->exec_op && !spi_get_csgpiod(mem->spi, 0)) { - ret = spi_mem_access_start(mem); - if (ret) - return ret; -@@ -808,7 +808,7 @@ int spi_mem_poll_status(struct spi_mem *mem, - op->data.dir != SPI_MEM_DATA_IN) - return -EINVAL; - -- if (ctlr->mem_ops && ctlr->mem_ops->poll_status && !mem->spi->cs_gpiod) { -+ if (ctlr->mem_ops && ctlr->mem_ops->poll_status && !spi_get_csgpiod(mem->spi, 0)) { - ret = spi_mem_access_start(mem); - if (ret) - return ret; -diff --git a/drivers/spi/spi-meson-spicc.c b/drivers/spi/spi-meson-spicc.c -index d47f2623a60fa..0d45cf8a2e723 100644 ---- a/drivers/spi/spi-meson-spicc.c -+++ b/drivers/spi/spi-meson-spicc.c -@@ -505,7 +505,7 @@ static int meson_spicc_prepare_message(struct spi_master *master, - conf |= FIELD_PREP(SPICC_DRCTL_MASK, SPICC_DRCTL_IGNORE); - - /* Select CS */ -- conf |= FIELD_PREP(SPICC_CS_MASK, spi->chip_select); -+ conf |= FIELD_PREP(SPICC_CS_MASK, spi_get_chipselect(spi, 0)); - - /* Default 8bit word */ - conf |= FIELD_PREP(SPICC_BITLENGTH_MASK, 8 - 1); -diff --git a/drivers/spi/spi-microchip-core.c b/drivers/spi/spi-microchip-core.c -index aeaa1da88f39e..1a90fcfe60151 100644 ---- a/drivers/spi/spi-microchip-core.c -+++ b/drivers/spi/spi-microchip-core.c -@@ -247,8 +247,8 @@ static void mchp_corespi_set_cs(struct spi_device *spi, bool disable) - struct mchp_corespi *corespi = spi_master_get_devdata(spi->master); - - reg = mchp_corespi_read(corespi, REG_SLAVE_SELECT); -- reg &= ~BIT(spi->chip_select); -- reg |= !disable << spi->chip_select; -+ reg &= ~BIT(spi_get_chipselect(spi, 0)); -+ reg |= !disable << spi_get_chipselect(spi, 0); - - mchp_corespi_write(corespi, REG_SLAVE_SELECT, reg); - } -@@ -265,7 +265,7 @@ static int mchp_corespi_setup(struct spi_device *spi) - */ - if (spi->mode & SPI_CS_HIGH) { - reg = mchp_corespi_read(corespi, REG_SLAVE_SELECT); -- reg |= BIT(spi->chip_select); -+ reg |= BIT(spi_get_chipselect(spi, 0)); - mchp_corespi_write(corespi, REG_SLAVE_SELECT, reg); - } - return 0; -diff --git a/drivers/spi/spi-mpc512x-psc.c b/drivers/spi/spi-mpc512x-psc.c -index 0b4d49ef84de8..1e7d081c141ae 100644 ---- a/drivers/spi/spi-mpc512x-psc.c -+++ b/drivers/spi/spi-mpc512x-psc.c -@@ -124,17 +124,17 @@ static void mpc512x_psc_spi_activate_cs(struct spi_device *spi) - out_be32(psc_addr(mps, ccr), ccr); - mps->bits_per_word = cs->bits_per_word; - -- if (spi->cs_gpiod) { -+ if (spi_get_csgpiod(spi, 0)) { - /* gpiolib will deal with the inversion */ -- gpiod_set_value(spi->cs_gpiod, 1); -+ gpiod_set_value(spi_get_csgpiod(spi, 0), 1); - } - } - - static void mpc512x_psc_spi_deactivate_cs(struct spi_device *spi) - { -- if (spi->cs_gpiod) { -+ if (spi_get_csgpiod(spi, 0)) { - /* gpiolib will deal with the inversion */ -- gpiod_set_value(spi->cs_gpiod, 0); -+ gpiod_set_value(spi_get_csgpiod(spi, 0), 0); - } - } - -diff --git a/drivers/spi/spi-mpc52xx.c b/drivers/spi/spi-mpc52xx.c -index 7b64e64c65cfe..c474a767fc484 100644 ---- a/drivers/spi/spi-mpc52xx.c -+++ b/drivers/spi/spi-mpc52xx.c -@@ -101,7 +101,7 @@ static void mpc52xx_spi_chipsel(struct mpc52xx_spi *ms, int value) - int cs; - - if (ms->gpio_cs_count > 0) { -- cs = ms->message->spi->chip_select; -+ cs = spi_get_chipselect(ms->message->spi, 0); - gpiod_set_value(ms->gpio_cs[cs], value); - } else { - out_8(ms->regs + SPI_PORTDATA, value ? 0 : 0x08); -diff --git a/drivers/spi/spi-mt65xx.c b/drivers/spi/spi-mt65xx.c -index 9eab6c20dbc56..21c321f437667 100644 ---- a/drivers/spi/spi-mt65xx.c -+++ b/drivers/spi/spi-mt65xx.c -@@ -421,7 +421,7 @@ static int mtk_spi_hw_init(struct spi_master *master, - - /* pad select */ - if (mdata->dev_comp->need_pad_sel) -- writel(mdata->pad_sel[spi->chip_select], -+ writel(mdata->pad_sel[spi_get_chipselect(spi, 0)], - mdata->base + SPI_PAD_SEL_REG); - - /* tick delay */ -@@ -735,9 +735,9 @@ static int mtk_spi_setup(struct spi_device *spi) - if (!spi->controller_data) - spi->controller_data = (void *)&mtk_default_chip_info; - -- if (mdata->dev_comp->need_pad_sel && spi->cs_gpiod) -+ if (mdata->dev_comp->need_pad_sel && spi_get_csgpiod(spi, 0)) - /* CS de-asserted, gpiolib will handle inversion */ -- gpiod_direction_output(spi->cs_gpiod, 0); -+ gpiod_direction_output(spi_get_csgpiod(spi, 0), 0); - - return 0; - } -diff --git a/drivers/spi/spi-mt7621.c b/drivers/spi/spi-mt7621.c -index c4cc8e2f85e2f..3e9d396b33bd3 100644 ---- a/drivers/spi/spi-mt7621.c -+++ b/drivers/spi/spi-mt7621.c -@@ -76,7 +76,7 @@ static inline void mt7621_spi_write(struct mt7621_spi *rs, u32 reg, u32 val) - static void mt7621_spi_set_cs(struct spi_device *spi, int enable) - { - struct mt7621_spi *rs = spidev_to_mt7621_spi(spi); -- int cs = spi->chip_select; -+ int cs = spi_get_chipselect(spi, 0); - u32 polar = 0; - u32 master; - -diff --git a/drivers/spi/spi-mux.c b/drivers/spi/spi-mux.c -index 0709e987bd5ab..fa8c1f740c702 100644 ---- a/drivers/spi/spi-mux.c -+++ b/drivers/spi/spi-mux.c -@@ -51,22 +51,22 @@ static int spi_mux_select(struct spi_device *spi) - struct spi_mux_priv *priv = spi_controller_get_devdata(spi->controller); - int ret; - -- ret = mux_control_select(priv->mux, spi->chip_select); -+ ret = mux_control_select(priv->mux, spi_get_chipselect(spi, 0)); - if (ret) - return ret; - -- if (priv->current_cs == spi->chip_select) -+ if (priv->current_cs == spi_get_chipselect(spi, 0)) - return 0; - - dev_dbg(&priv->spi->dev, "setting up the mux for cs %d\n", -- spi->chip_select); -+ spi_get_chipselect(spi, 0)); - - /* copy the child device's settings except for the cs */ - priv->spi->max_speed_hz = spi->max_speed_hz; - priv->spi->mode = spi->mode; - priv->spi->bits_per_word = spi->bits_per_word; - -- priv->current_cs = spi->chip_select; -+ priv->current_cs = spi_get_chipselect(spi, 0); - - return 0; - } -diff --git a/drivers/spi/spi-mxic.c b/drivers/spi/spi-mxic.c -index a3dba17390eba..52bd2c49c34e2 100644 ---- a/drivers/spi/spi-mxic.c -+++ b/drivers/spi/spi-mxic.c -@@ -306,8 +306,8 @@ static u32 mxic_spi_prep_hc_cfg(struct spi_device *spi, u32 flags) - nio = 2; - - return flags | HC_CFG_NIO(nio) | -- HC_CFG_TYPE(spi->chip_select, HC_CFG_TYPE_SPI_NOR) | -- HC_CFG_SLV_ACT(spi->chip_select) | HC_CFG_IDLE_SIO_LVL(1); -+ HC_CFG_TYPE(spi_get_chipselect(spi, 0), HC_CFG_TYPE_SPI_NOR) | -+ HC_CFG_SLV_ACT(spi_get_chipselect(spi, 0)) | HC_CFG_IDLE_SIO_LVL(1); - } - - static u32 mxic_spi_mem_prep_op_cfg(const struct spi_mem_op *op, -@@ -405,7 +405,7 @@ static ssize_t mxic_spi_mem_dirmap_read(struct spi_mem_dirmap_desc *desc, - len = min_t(size_t, len, mxic->linear.size); - writel(len, mxic->regs + LRD_RANGE); - writel(LMODE_CMD0(desc->info.op_tmpl.cmd.opcode) | -- LMODE_SLV_ACT(desc->mem->spi->chip_select) | -+ LMODE_SLV_ACT(spi_get_chipselect(desc->mem->spi, 0)) | - LMODE_EN, - mxic->regs + LRD_CTRL); - -@@ -449,7 +449,7 @@ static ssize_t mxic_spi_mem_dirmap_write(struct spi_mem_dirmap_desc *desc, - len = min_t(size_t, len, mxic->linear.size); - writel(len, mxic->regs + LWR_RANGE); - writel(LMODE_CMD0(desc->info.op_tmpl.cmd.opcode) | -- LMODE_SLV_ACT(desc->mem->spi->chip_select) | -+ LMODE_SLV_ACT(spi_get_chipselect(desc->mem->spi, 0)) | - LMODE_EN, - mxic->regs + LWR_CTRL); - -@@ -524,7 +524,7 @@ static int mxic_spi_mem_exec_op(struct spi_mem *mem, - writel(HC_EN_BIT, mxic->regs + HC_EN); - - writel(mxic_spi_mem_prep_op_cfg(op, op->data.nbytes), -- mxic->regs + SS_CTRL(mem->spi->chip_select)); -+ mxic->regs + SS_CTRL(spi_get_chipselect(mem->spi, 0))); - - writel(readl(mxic->regs + HC_CFG) | HC_CFG_MAN_CS_ASSERT, - mxic->regs + HC_CFG); -diff --git a/drivers/spi/spi-mxs.c b/drivers/spi/spi-mxs.c -index 55178579f3c6f..98076aa4b1c7e 100644 ---- a/drivers/spi/spi-mxs.c -+++ b/drivers/spi/spi-mxs.c -@@ -369,7 +369,7 @@ static int mxs_spi_transfer_one(struct spi_master *master, - /* Program CS register bits here, it will be used for all transfers. */ - writel(BM_SSP_CTRL0_WAIT_FOR_CMD | BM_SSP_CTRL0_WAIT_FOR_IRQ, - ssp->base + HW_SSP_CTRL0 + STMP_OFFSET_REG_CLR); -- writel(mxs_spi_cs_to_reg(m->spi->chip_select), -+ writel(mxs_spi_cs_to_reg(spi_get_chipselect(m->spi, 0)), - ssp->base + HW_SSP_CTRL0 + STMP_OFFSET_REG_SET); - - list_for_each_entry(t, &m->transfers, transfer_list) { -diff --git a/drivers/spi/spi-npcm-fiu.c b/drivers/spi/spi-npcm-fiu.c -index 559d3a5b4062c..86e3978883fef 100644 ---- a/drivers/spi/spi-npcm-fiu.c -+++ b/drivers/spi/spi-npcm-fiu.c -@@ -288,7 +288,7 @@ static ssize_t npcm_fiu_direct_read(struct spi_mem_dirmap_desc *desc, - { - struct npcm_fiu_spi *fiu = - spi_controller_get_devdata(desc->mem->spi->master); -- struct npcm_fiu_chip *chip = &fiu->chip[desc->mem->spi->chip_select]; -+ struct npcm_fiu_chip *chip = &fiu->chip[spi_get_chipselect(desc->mem->spi, 0)]; - void __iomem *src = (void __iomem *)(chip->flash_region_mapped_ptr + - offs); - u8 *buf_rx = buf; -@@ -315,7 +315,7 @@ static ssize_t npcm_fiu_direct_write(struct spi_mem_dirmap_desc *desc, - { - struct npcm_fiu_spi *fiu = - spi_controller_get_devdata(desc->mem->spi->master); -- struct npcm_fiu_chip *chip = &fiu->chip[desc->mem->spi->chip_select]; -+ struct npcm_fiu_chip *chip = &fiu->chip[spi_get_chipselect(desc->mem->spi, 0)]; - void __iomem *dst = (void __iomem *)(chip->flash_region_mapped_ptr + - offs); - const u8 *buf_tx = buf; -@@ -344,7 +344,7 @@ static int npcm_fiu_uma_read(struct spi_mem *mem, - - regmap_update_bits(fiu->regmap, NPCM_FIU_UMA_CTS, - NPCM_FIU_UMA_CTS_DEV_NUM, -- (mem->spi->chip_select << -+ (spi_get_chipselect(mem->spi, 0) << - NPCM_FIU_UMA_CTS_DEV_NUM_SHIFT)); - regmap_update_bits(fiu->regmap, NPCM_FIU_UMA_CMD, - NPCM_FIU_UMA_CMD_CMD, op->cmd.opcode); -@@ -398,7 +398,7 @@ static int npcm_fiu_uma_write(struct spi_mem *mem, - - regmap_update_bits(fiu->regmap, NPCM_FIU_UMA_CTS, - NPCM_FIU_UMA_CTS_DEV_NUM, -- (mem->spi->chip_select << -+ (spi_get_chipselect(mem->spi, 0) << - NPCM_FIU_UMA_CTS_DEV_NUM_SHIFT)); - - regmap_update_bits(fiu->regmap, NPCM_FIU_UMA_CMD, -@@ -451,7 +451,7 @@ static int npcm_fiu_manualwrite(struct spi_mem *mem, - - regmap_update_bits(fiu->regmap, NPCM_FIU_UMA_CTS, - NPCM_FIU_UMA_CTS_DEV_NUM, -- (mem->spi->chip_select << -+ (spi_get_chipselect(mem->spi, 0) << - NPCM_FIU_UMA_CTS_DEV_NUM_SHIFT)); - regmap_update_bits(fiu->regmap, NPCM_FIU_UMA_CTS, - NPCM_FIU_UMA_CTS_SW_CS, 0); -@@ -545,7 +545,7 @@ static int npcm_fiu_exec_op(struct spi_mem *mem, const struct spi_mem_op *op) - { - struct npcm_fiu_spi *fiu = - spi_controller_get_devdata(mem->spi->master); -- struct npcm_fiu_chip *chip = &fiu->chip[mem->spi->chip_select]; -+ struct npcm_fiu_chip *chip = &fiu->chip[spi_get_chipselect(mem->spi, 0)]; - int ret = 0; - u8 *buf; - -@@ -605,7 +605,7 @@ static int npcm_fiu_dirmap_create(struct spi_mem_dirmap_desc *desc) - { - struct npcm_fiu_spi *fiu = - spi_controller_get_devdata(desc->mem->spi->master); -- struct npcm_fiu_chip *chip = &fiu->chip[desc->mem->spi->chip_select]; -+ struct npcm_fiu_chip *chip = &fiu->chip[spi_get_chipselect(desc->mem->spi, 0)]; - struct regmap *gcr_regmap; - - if (!fiu->res_mem) { -@@ -624,7 +624,7 @@ static int npcm_fiu_dirmap_create(struct spi_mem_dirmap_desc *desc) - chip->flash_region_mapped_ptr = - devm_ioremap(fiu->dev, (fiu->res_mem->start + - (fiu->info->max_map_size * -- desc->mem->spi->chip_select)), -+ spi_get_chipselect(desc->mem->spi, 0))), - (u32)desc->info.length); - if (!chip->flash_region_mapped_ptr) { - dev_warn(fiu->dev, "Error mapping memory region, direct read disabled\n"); -@@ -669,9 +669,9 @@ static int npcm_fiu_setup(struct spi_device *spi) - struct npcm_fiu_spi *fiu = spi_controller_get_devdata(ctrl); - struct npcm_fiu_chip *chip; - -- chip = &fiu->chip[spi->chip_select]; -+ chip = &fiu->chip[spi_get_chipselect(spi, 0)]; - chip->fiu = fiu; -- chip->chipselect = spi->chip_select; -+ chip->chipselect = spi_get_chipselect(spi, 0); - chip->clkrate = spi->max_speed_hz; - - fiu->clkrate = clk_get_rate(fiu->clk); -diff --git a/drivers/spi/spi-nxp-fspi.c b/drivers/spi/spi-nxp-fspi.c -index 1c1991a26c153..e9baf93aef7e1 100644 ---- a/drivers/spi/spi-nxp-fspi.c -+++ b/drivers/spi/spi-nxp-fspi.c -@@ -663,7 +663,7 @@ static void nxp_fspi_select_mem(struct nxp_fspi *f, struct spi_device *spi) - * Return, if previously selected slave device is same as current - * requested slave device. - */ -- if (f->selected == spi->chip_select) -+ if (f->selected == spi_get_chipselect(spi, 0)) - return; - - /* Reset FLSHxxCR0 registers */ -@@ -676,9 +676,9 @@ static void nxp_fspi_select_mem(struct nxp_fspi *f, struct spi_device *spi) - size_kb = FSPI_FLSHXCR0_SZ(f->memmap_phy_size); - - fspi_writel(f, size_kb, f->iobase + FSPI_FLSHA1CR0 + -- 4 * spi->chip_select); -+ 4 * spi_get_chipselect(spi, 0)); - -- dev_dbg(f->dev, "Slave device [CS:%x] selected\n", spi->chip_select); -+ dev_dbg(f->dev, "Slave device [CS:%x] selected\n", spi_get_chipselect(spi, 0)); - - nxp_fspi_clk_disable_unprep(f); - -@@ -690,7 +690,7 @@ static void nxp_fspi_select_mem(struct nxp_fspi *f, struct spi_device *spi) - if (ret) - return; - -- f->selected = spi->chip_select; -+ f->selected = spi_get_chipselect(spi, 0); - } - - static int nxp_fspi_read_ahb(struct nxp_fspi *f, const struct spi_mem_op *op) -@@ -1055,7 +1055,7 @@ static const char *nxp_fspi_get_name(struct spi_mem *mem) - - name = devm_kasprintf(dev, GFP_KERNEL, - "%s-%d", dev_name(f->dev), -- mem->spi->chip_select); -+ spi_get_chipselect(mem->spi, 0)); - - if (!name) { - dev_err(dev, "failed to get memory for custom flash name\n"); -diff --git a/drivers/spi/spi-omap-uwire.c b/drivers/spi/spi-omap-uwire.c -index 20c87163d612e..5b3a5e654ddd4 100644 ---- a/drivers/spi/spi-omap-uwire.c -+++ b/drivers/spi/spi-omap-uwire.c -@@ -179,7 +179,7 @@ static void uwire_chipselect(struct spi_device *spi, int value) - - w = uwire_read_reg(UWIRE_CSR); - old_cs = (w >> 10) & 0x03; -- if (value == BITBANG_CS_INACTIVE || old_cs != spi->chip_select) { -+ if (value == BITBANG_CS_INACTIVE || old_cs != spi_get_chipselect(spi, 0)) { - /* Deselect this CS, or the previous CS */ - w &= ~CS_CMD; - uwire_write_reg(UWIRE_CSR, w); -@@ -193,7 +193,7 @@ static void uwire_chipselect(struct spi_device *spi, int value) - else - uwire_write_reg(UWIRE_SR4, 0); - -- w = spi->chip_select << 10; -+ w = spi_get_chipselect(spi, 0) << 10; - w |= CS_CMD; - uwire_write_reg(UWIRE_CSR, w); - } -@@ -210,7 +210,7 @@ static int uwire_txrx(struct spi_device *spi, struct spi_transfer *t) - if (!t->tx_buf && !t->rx_buf) - return 0; - -- w = spi->chip_select << 10; -+ w = spi_get_chipselect(spi, 0) << 10; - w |= CS_CMD; - - if (t->tx_buf) { -@@ -408,7 +408,7 @@ static int uwire_setup_transfer(struct spi_device *spi, struct spi_transfer *t) - rate /= 8; - break; - } -- omap_uwire_configure_mode(spi->chip_select, flags); -+ omap_uwire_configure_mode(spi_get_chipselect(spi, 0), flags); - pr_debug("%s: uwire flags %02x, armxor %lu KHz, SCK %lu KHz\n", - __func__, flags, - clk_get_rate(uwire->ck) / 1000, -diff --git a/drivers/spi/spi-omap2-mcspi.c b/drivers/spi/spi-omap2-mcspi.c -index 6ba9b0d7710b0..5e404da112a2f 100644 ---- a/drivers/spi/spi-omap2-mcspi.c -+++ b/drivers/spi/spi-omap2-mcspi.c -@@ -379,7 +379,7 @@ static void omap2_mcspi_rx_callback(void *data) - { - struct spi_device *spi = data; - struct omap2_mcspi *mcspi = spi_master_get_devdata(spi->master); -- struct omap2_mcspi_dma *mcspi_dma = &mcspi->dma_channels[spi->chip_select]; -+ struct omap2_mcspi_dma *mcspi_dma = &mcspi->dma_channels[spi_get_chipselect(spi, 0)]; - - /* We must disable the DMA RX request */ - omap2_mcspi_set_dma_req(spi, 1, 0); -@@ -391,7 +391,7 @@ static void omap2_mcspi_tx_callback(void *data) - { - struct spi_device *spi = data; - struct omap2_mcspi *mcspi = spi_master_get_devdata(spi->master); -- struct omap2_mcspi_dma *mcspi_dma = &mcspi->dma_channels[spi->chip_select]; -+ struct omap2_mcspi_dma *mcspi_dma = &mcspi->dma_channels[spi_get_chipselect(spi, 0)]; - - /* We must disable the DMA TX request */ - omap2_mcspi_set_dma_req(spi, 0, 0); -@@ -408,7 +408,7 @@ static void omap2_mcspi_tx_dma(struct spi_device *spi, - struct dma_async_tx_descriptor *tx; - - mcspi = spi_master_get_devdata(spi->master); -- mcspi_dma = &mcspi->dma_channels[spi->chip_select]; -+ mcspi_dma = &mcspi->dma_channels[spi_get_chipselect(spi, 0)]; - - dmaengine_slave_config(mcspi_dma->dma_tx, &cfg); - -@@ -446,7 +446,7 @@ omap2_mcspi_rx_dma(struct spi_device *spi, struct spi_transfer *xfer, - struct dma_async_tx_descriptor *tx; - - mcspi = spi_master_get_devdata(spi->master); -- mcspi_dma = &mcspi->dma_channels[spi->chip_select]; -+ mcspi_dma = &mcspi->dma_channels[spi_get_chipselect(spi, 0)]; - count = xfer->len; - - /* -@@ -591,7 +591,7 @@ omap2_mcspi_txrx_dma(struct spi_device *spi, struct spi_transfer *xfer) - int wait_res; - - mcspi = spi_master_get_devdata(spi->master); -- mcspi_dma = &mcspi->dma_channels[spi->chip_select]; -+ mcspi_dma = &mcspi->dma_channels[spi_get_chipselect(spi, 0)]; - - if (cs->word_len <= 8) { - width = DMA_SLAVE_BUSWIDTH_1_BYTE; -@@ -1062,8 +1062,8 @@ static int omap2_mcspi_setup(struct spi_device *spi) - cs = kzalloc(sizeof(*cs), GFP_KERNEL); - if (!cs) - return -ENOMEM; -- cs->base = mcspi->base + spi->chip_select * 0x14; -- cs->phys = mcspi->phys + spi->chip_select * 0x14; -+ cs->base = mcspi->base + spi_get_chipselect(spi, 0) * 0x14; -+ cs->phys = mcspi->phys + spi_get_chipselect(spi, 0) * 0x14; - cs->mode = 0; - cs->chconf0 = 0; - cs->chctrl0 = 0; -@@ -1142,7 +1142,7 @@ static int omap2_mcspi_transfer_one(struct spi_master *master, - u32 chconf; - - mcspi = spi_master_get_devdata(master); -- mcspi_dma = mcspi->dma_channels + spi->chip_select; -+ mcspi_dma = mcspi->dma_channels + spi_get_chipselect(spi, 0); - cs = spi->controller_state; - cd = spi->controller_data; - -@@ -1158,7 +1158,7 @@ static int omap2_mcspi_transfer_one(struct spi_master *master, - - omap2_mcspi_set_enable(spi, 0); - -- if (spi->cs_gpiod) -+ if (spi_get_csgpiod(spi, 0)) - omap2_mcspi_set_cs(spi, spi->mode & SPI_CS_HIGH); - - if (par_override || -@@ -1247,7 +1247,7 @@ static int omap2_mcspi_transfer_one(struct spi_master *master, - - omap2_mcspi_set_enable(spi, 0); - -- if (spi->cs_gpiod) -+ if (spi_get_csgpiod(spi, 0)) - omap2_mcspi_set_cs(spi, !(spi->mode & SPI_CS_HIGH)); - - if (mcspi->fifo_depth > 0 && t) -@@ -1289,7 +1289,7 @@ static bool omap2_mcspi_can_dma(struct spi_master *master, - { - struct omap2_mcspi *mcspi = spi_master_get_devdata(spi->master); - struct omap2_mcspi_dma *mcspi_dma = -- &mcspi->dma_channels[spi->chip_select]; -+ &mcspi->dma_channels[spi_get_chipselect(spi, 0)]; - - if (!mcspi_dma->dma_rx || !mcspi_dma->dma_tx) - return false; -@@ -1307,7 +1307,7 @@ static size_t omap2_mcspi_max_xfer_size(struct spi_device *spi) - { - struct omap2_mcspi *mcspi = spi_master_get_devdata(spi->master); - struct omap2_mcspi_dma *mcspi_dma = -- &mcspi->dma_channels[spi->chip_select]; -+ &mcspi->dma_channels[spi_get_chipselect(spi, 0)]; - - if (mcspi->max_xfer_len && mcspi_dma->dma_rx) - return mcspi->max_xfer_len; -diff --git a/drivers/spi/spi-orion.c b/drivers/spi/spi-orion.c -index 565cd4c48d7bd..13e60976692cc 100644 ---- a/drivers/spi/spi-orion.c -+++ b/drivers/spi/spi-orion.c -@@ -346,7 +346,7 @@ static void orion_spi_set_cs(struct spi_device *spi, bool enable) - * as it is handled by a GPIO, but that doesn't matter. What we need - * is to deassert the old chip select and assert some other chip select. - */ -- val |= ORION_SPI_CS(spi->chip_select); -+ val |= ORION_SPI_CS(spi_get_chipselect(spi, 0)); - - /* - * Chip select logic is inverted from spi_set_cs(). For lines using a -@@ -470,7 +470,7 @@ orion_spi_write_read(struct spi_device *spi, struct spi_transfer *xfer) - unsigned int count; - int word_len; - struct orion_spi *orion_spi; -- int cs = spi->chip_select; -+ int cs = spi_get_chipselect(spi, 0); - void __iomem *vaddr; - - word_len = spi->bits_per_word; -diff --git a/drivers/spi/spi-pci1xxxx.c b/drivers/spi/spi-pci1xxxx.c -index 13efbfeff92ce..82d4bfeea1fa4 100644 ---- a/drivers/spi/spi-pci1xxxx.c -+++ b/drivers/spi/spi-pci1xxxx.c -@@ -116,11 +116,11 @@ static void pci1xxxx_spi_set_cs(struct spi_device *spi, bool enable) - regval = readl(par->reg_base + SPI_MST_CTL_REG_OFFSET(p->hw_inst)); - if (enable) { - regval &= ~SPI_MST_CTL_DEVSEL_MASK; -- regval |= (spi->chip_select << 25); -+ regval |= (spi_get_chipselect(spi, 0) << 25); - writel(regval, - par->reg_base + SPI_MST_CTL_REG_OFFSET(p->hw_inst)); - } else { -- regval &= ~(spi->chip_select << 25); -+ regval &= ~(spi_get_chipselect(spi, 0) << 25); - writel(regval, - par->reg_base + SPI_MST_CTL_REG_OFFSET(p->hw_inst)); - -diff --git a/drivers/spi/spi-pic32-sqi.c b/drivers/spi/spi-pic32-sqi.c -index 86ad17597f5fd..ed02d17897d19 100644 ---- a/drivers/spi/spi-pic32-sqi.c -+++ b/drivers/spi/spi-pic32-sqi.c -@@ -267,7 +267,7 @@ static int pic32_sqi_one_transfer(struct pic32_sqi *sqi, - u32 nbits; - - /* Device selection */ -- bd_ctrl = spi->chip_select << BD_DEVSEL_SHIFT; -+ bd_ctrl = spi_get_chipselect(spi, 0) << BD_DEVSEL_SHIFT; - - /* half-duplex: select transfer buffer, direction and lane */ - if (xfer->rx_buf) { -diff --git a/drivers/spi/spi-pic32.c b/drivers/spi/spi-pic32.c -index 7e5c09a7d4890..387673694f911 100644 ---- a/drivers/spi/spi-pic32.c -+++ b/drivers/spi/spi-pic32.c -@@ -591,7 +591,7 @@ static int pic32_spi_setup(struct spi_device *spi) - * unreliable/erroneous SPI transactions. - * To avoid that we will always handle /CS by toggling GPIO. - */ -- if (!spi->cs_gpiod) -+ if (!spi_get_csgpiod(spi, 0)) - return -EINVAL; - - return 0; -@@ -600,7 +600,7 @@ static int pic32_spi_setup(struct spi_device *spi) - static void pic32_spi_cleanup(struct spi_device *spi) - { - /* de-activate cs-gpio, gpiolib will handle inversion */ -- gpiod_direction_output(spi->cs_gpiod, 0); -+ gpiod_direction_output(spi_get_csgpiod(spi, 0), 0); - } - - static int pic32_spi_dma_prep(struct pic32_spi *pic32s, struct device *dev) -diff --git a/drivers/spi/spi-pl022.c b/drivers/spi/spi-pl022.c -index a17ff839117f9..982407bc5d9f9 100644 ---- a/drivers/spi/spi-pl022.c -+++ b/drivers/spi/spi-pl022.c -@@ -1587,9 +1587,9 @@ static int pl022_transfer_one_message(struct spi_master *master, - - /* Setup the SPI using the per chip configuration */ - pl022->cur_chip = spi_get_ctldata(msg->spi); -- pl022->cur_cs = msg->spi->chip_select; -+ pl022->cur_cs = spi_get_chipselect(msg->spi, 0); - /* This is always available but may be set to -ENOENT */ -- pl022->cur_gpiod = msg->spi->cs_gpiod; -+ pl022->cur_gpiod = spi_get_csgpiod(msg->spi, 0); - - restore_state(pl022); - flush(pl022); -diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c -index 32cc82a89ec1e..abcdc1eb1a40f 100644 ---- a/drivers/spi/spi-pxa2xx.c -+++ b/drivers/spi/spi-pxa2xx.c -@@ -368,7 +368,7 @@ static void lpss_ssp_select_cs(struct spi_device *spi, - - value = __lpss_ssp_read_priv(drv_data, config->reg_cs_ctrl); - -- cs = spi->chip_select; -+ cs = spi_get_chipselect(spi, 0); - cs <<= config->cs_sel_shift; - if (cs != (value & config->cs_sel_mask)) { - /* -@@ -429,7 +429,7 @@ static void cs_assert(struct spi_device *spi) - spi_controller_get_devdata(spi->controller); - - if (drv_data->ssp_type == CE4100_SSP) { -- pxa2xx_spi_write(drv_data, SSSR, spi->chip_select); -+ pxa2xx_spi_write(drv_data, SSSR, spi_get_chipselect(spi, 0)); - return; - } - -@@ -1217,7 +1217,7 @@ static int setup(struct spi_device *spi) - return -ENOMEM; - - if (drv_data->ssp_type == CE4100_SSP) { -- if (spi->chip_select > 4) { -+ if (spi_get_chipselect(spi, 0) > 4) { - dev_err(&spi->dev, - "failed setup: cs number must not be > 4.\n"); - kfree(chip); -diff --git a/drivers/spi/spi-qcom-qspi.c b/drivers/spi/spi-qcom-qspi.c -index c334dfec4117a..33c056fd5f4b7 100644 ---- a/drivers/spi/spi-qcom-qspi.c -+++ b/drivers/spi/spi-qcom-qspi.c -@@ -311,7 +311,7 @@ static int qcom_qspi_prepare_message(struct spi_master *master, - - mstr_cfg = readl(ctrl->base + MSTR_CONFIG); - mstr_cfg &= ~CHIP_SELECT_NUM; -- if (message->spi->chip_select) -+ if (spi_get_chipselect(message->spi, 0)) - mstr_cfg |= CHIP_SELECT_NUM; - - mstr_cfg |= FB_CLK_EN | PIN_WPN | PIN_HOLDN | SBL_EN | FULL_CYCLE_MODE; -diff --git a/drivers/spi/spi-rb4xx.c b/drivers/spi/spi-rb4xx.c -index 9f97d18a05c10..3c79a5d85ac26 100644 ---- a/drivers/spi/spi-rb4xx.c -+++ b/drivers/spi/spi-rb4xx.c -@@ -107,7 +107,7 @@ static int rb4xx_transfer_one(struct spi_master *master, - * command set was designed to almost not clash with that of the - * boot flash. - */ -- if (spi->chip_select == 2) -+ if (spi_get_chipselect(spi, 0) == 2) - /* MMC */ - spi_ioc = AR71XX_SPI_IOC_CS0; - else -diff --git a/drivers/spi/spi-rockchip-sfc.c b/drivers/spi/spi-rockchip-sfc.c -index 69347b6bf60cd..ce658295579a4 100644 ---- a/drivers/spi/spi-rockchip-sfc.c -+++ b/drivers/spi/spi-rockchip-sfc.c -@@ -346,7 +346,7 @@ static int rockchip_sfc_xfer_setup(struct rockchip_sfc *sfc, - - /* set the Controller */ - ctrl |= SFC_CTRL_PHASE_SEL_NEGETIVE; -- cmd |= mem->spi->chip_select << SFC_CMD_CS_SHIFT; -+ cmd |= spi_get_chipselect(mem->spi, 0) << SFC_CMD_CS_SHIFT; - - dev_dbg(sfc->dev, "sfc addr.nbytes=%x(x%d) dummy.nbytes=%x(x%d)\n", - op->addr.nbytes, op->addr.buswidth, -diff --git a/drivers/spi/spi-rockchip.c b/drivers/spi/spi-rockchip.c -index 79242dc5272de..adc5638eff4ba 100644 ---- a/drivers/spi/spi-rockchip.c -+++ b/drivers/spi/spi-rockchip.c -@@ -246,28 +246,30 @@ static void rockchip_spi_set_cs(struct spi_device *spi, bool enable) - bool cs_asserted = spi->mode & SPI_CS_HIGH ? enable : !enable; - - /* Return immediately for no-op */ -- if (cs_asserted == rs->cs_asserted[spi->chip_select]) -+ if (cs_asserted == rs->cs_asserted[spi_get_chipselect(spi, 0)]) - return; - - if (cs_asserted) { - /* Keep things powered as long as CS is asserted */ - pm_runtime_get_sync(rs->dev); - -- if (spi->cs_gpiod) -+ if (spi_get_csgpiod(spi, 0)) - ROCKCHIP_SPI_SET_BITS(rs->regs + ROCKCHIP_SPI_SER, 1); - else -- ROCKCHIP_SPI_SET_BITS(rs->regs + ROCKCHIP_SPI_SER, BIT(spi->chip_select)); -+ ROCKCHIP_SPI_SET_BITS(rs->regs + ROCKCHIP_SPI_SER, -+ BIT(spi_get_chipselect(spi, 0))); - } else { -- if (spi->cs_gpiod) -+ if (spi_get_csgpiod(spi, 0)) - ROCKCHIP_SPI_CLR_BITS(rs->regs + ROCKCHIP_SPI_SER, 1); - else -- ROCKCHIP_SPI_CLR_BITS(rs->regs + ROCKCHIP_SPI_SER, BIT(spi->chip_select)); -+ ROCKCHIP_SPI_CLR_BITS(rs->regs + ROCKCHIP_SPI_SER, -+ BIT(spi_get_chipselect(spi, 0))); - - /* Drop reference from when we first asserted CS */ - pm_runtime_put(rs->dev); - } - -- rs->cs_asserted[spi->chip_select] = cs_asserted; -+ rs->cs_asserted[spi_get_chipselect(spi, 0)] = cs_asserted; - } - - static void rockchip_spi_handle_err(struct spi_controller *ctlr, -@@ -541,7 +543,7 @@ static int rockchip_spi_config(struct rockchip_spi *rs, - if (spi->mode & SPI_LSB_FIRST) - cr0 |= CR0_FBM_LSB << CR0_FBM_OFFSET; - if (spi->mode & SPI_CS_HIGH) -- cr0 |= BIT(spi->chip_select) << CR0_SOI_OFFSET; -+ cr0 |= BIT(spi_get_chipselect(spi, 0)) << CR0_SOI_OFFSET; - - if (xfer->rx_buf && xfer->tx_buf) - cr0 |= CR0_XFM_TR << CR0_XFM_OFFSET; -@@ -724,7 +726,7 @@ static int rockchip_spi_setup(struct spi_device *spi) - struct rockchip_spi *rs = spi_controller_get_devdata(spi->controller); - u32 cr0; - -- if (!spi->cs_gpiod && (spi->mode & SPI_CS_HIGH) && !rs->cs_high_supported) { -+ if (!spi_get_csgpiod(spi, 0) && (spi->mode & SPI_CS_HIGH) && !rs->cs_high_supported) { - dev_warn(&spi->dev, "setup: non GPIO CS can't be active-high\n"); - return -EINVAL; - } -@@ -735,10 +737,10 @@ static int rockchip_spi_setup(struct spi_device *spi) - - cr0 &= ~(0x3 << CR0_SCPH_OFFSET); - cr0 |= ((spi->mode & 0x3) << CR0_SCPH_OFFSET); -- if (spi->mode & SPI_CS_HIGH && spi->chip_select <= 1) -- cr0 |= BIT(spi->chip_select) << CR0_SOI_OFFSET; -- else if (spi->chip_select <= 1) -- cr0 &= ~(BIT(spi->chip_select) << CR0_SOI_OFFSET); -+ if (spi->mode & SPI_CS_HIGH && spi_get_chipselect(spi, 0) <= 1) -+ cr0 |= BIT(spi_get_chipselect(spi, 0)) << CR0_SOI_OFFSET; -+ else if (spi_get_chipselect(spi, 0) <= 1) -+ cr0 &= ~(BIT(spi_get_chipselect(spi, 0)) << CR0_SOI_OFFSET); - - writel_relaxed(cr0, rs->regs + ROCKCHIP_SPI_CTRLR0); - -diff --git a/drivers/spi/spi-rspi.c b/drivers/spi/spi-rspi.c -index 411b1307b7fd8..4d4b98f8eb80f 100644 ---- a/drivers/spi/spi-rspi.c -+++ b/drivers/spi/spi-rspi.c -@@ -950,7 +950,7 @@ static int rspi_setup(struct spi_device *spi) - struct rspi_data *rspi = spi_controller_get_devdata(spi->controller); - u8 sslp; - -- if (spi->cs_gpiod) -+ if (spi_get_csgpiod(spi, 0)) - return 0; - - pm_runtime_get_sync(&rspi->pdev->dev); -@@ -958,9 +958,9 @@ static int rspi_setup(struct spi_device *spi) - - sslp = rspi_read8(rspi, RSPI_SSLP); - if (spi->mode & SPI_CS_HIGH) -- sslp |= SSLP_SSLP(spi->chip_select); -+ sslp |= SSLP_SSLP(spi_get_chipselect(spi, 0)); - else -- sslp &= ~SSLP_SSLP(spi->chip_select); -+ sslp &= ~SSLP_SSLP(spi_get_chipselect(spi, 0)); - rspi_write8(rspi, sslp, RSPI_SSLP); - - spin_unlock_irq(&rspi->lock); -@@ -1001,8 +1001,8 @@ static int rspi_prepare_message(struct spi_controller *ctlr, - rspi->spcmd |= SPCMD_LSBF; - - /* Configure slave signal to assert */ -- rspi->spcmd |= SPCMD_SSLA(spi->cs_gpiod ? rspi->ctlr->unused_native_cs -- : spi->chip_select); -+ rspi->spcmd |= SPCMD_SSLA(spi_get_csgpiod(spi, 0) ? rspi->ctlr->unused_native_cs -+ : spi_get_chipselect(spi, 0)); - - /* CMOS output mode and MOSI signal from previous transfer */ - rspi->sppcr = 0; -diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c -index 71d324ec9a70a..f6682bfe484c2 100644 ---- a/drivers/spi/spi-s3c64xx.c -+++ b/drivers/spi/spi-s3c64xx.c -@@ -891,7 +891,7 @@ static int s3c64xx_spi_setup(struct spi_device *spi) - - /* NULL is fine, we just avoid using the FB delay (=0) */ - if (IS_ERR(cs)) { -- dev_err(&spi->dev, "No CS for SPI(%d)\n", spi->chip_select); -+ dev_err(&spi->dev, "No CS for SPI(%d)\n", spi_get_chipselect(spi, 0)); - return -ENODEV; - } - -diff --git a/drivers/spi/spi-sc18is602.c b/drivers/spi/spi-sc18is602.c -index 983b3621bc2ad..a12adc68731b3 100644 ---- a/drivers/spi/spi-sc18is602.c -+++ b/drivers/spi/spi-sc18is602.c -@@ -70,7 +70,7 @@ static int sc18is602_txrx(struct sc18is602 *hw, struct spi_message *msg, - - if (hw->tlen == 0) { - /* First byte (I2C command) is chip select */ -- hw->buffer[0] = 1 << msg->spi->chip_select; -+ hw->buffer[0] = 1 << spi_get_chipselect(msg->spi, 0); - hw->tlen = 1; - hw->rindex = 0; - } -@@ -229,7 +229,7 @@ static int sc18is602_setup(struct spi_device *spi) - struct sc18is602 *hw = spi_master_get_devdata(spi->master); - - /* SC18IS602 does not support CS2 */ -- if (hw->id == sc18is602 && spi->chip_select == 2) -+ if (hw->id == sc18is602 && (spi_get_chipselect(spi, 0) == 2)) - return -ENXIO; - - return 0; -diff --git a/drivers/spi/spi-sh-msiof.c b/drivers/spi/spi-sh-msiof.c -index 9bca3d076f053..87cb975ce9dc0 100644 ---- a/drivers/spi/spi-sh-msiof.c -+++ b/drivers/spi/spi-sh-msiof.c -@@ -554,7 +554,7 @@ static int sh_msiof_spi_setup(struct spi_device *spi) - spi_controller_get_devdata(spi->controller); - u32 clr, set, tmp; - -- if (spi->cs_gpiod || spi_controller_is_slave(p->ctlr)) -+ if (spi_get_csgpiod(spi, 0) || spi_controller_is_slave(p->ctlr)) - return 0; - - if (p->native_cs_inited && -@@ -587,11 +587,11 @@ static int sh_msiof_prepare_message(struct spi_controller *ctlr, - u32 ss, cs_high; - - /* Configure pins before asserting CS */ -- if (spi->cs_gpiod) { -+ if (spi_get_csgpiod((struct spi_device *)spi, 0)) { - ss = ctlr->unused_native_cs; - cs_high = p->native_cs_high; - } else { -- ss = spi->chip_select; -+ ss = spi_get_chipselect((struct spi_device *)spi, 0); - cs_high = !!(spi->mode & SPI_CS_HIGH); - } - sh_msiof_spi_set_pin_regs(p, ss, !!(spi->mode & SPI_CPOL), -diff --git a/drivers/spi/spi-sh-sci.c b/drivers/spi/spi-sh-sci.c -index 8f30531e14186..3003dd7c72c8a 100644 ---- a/drivers/spi/spi-sh-sci.c -+++ b/drivers/spi/spi-sh-sci.c -@@ -108,7 +108,7 @@ static void sh_sci_spi_chipselect(struct spi_device *dev, int value) - struct sh_sci_spi *sp = spi_master_get_devdata(dev->master); - - if (sp->info->chip_select) -- (sp->info->chip_select)(sp->info, dev->chip_select, value); -+ (sp->info->chip_select)(sp->info, spi_get_chipselect(dev, 0), value); - } - - static int sh_sci_spi_probe(struct platform_device *dev) -diff --git a/drivers/spi/spi-sifive.c b/drivers/spi/spi-sifive.c -index e29e85cee88a2..7840ef940ff8e 100644 ---- a/drivers/spi/spi-sifive.c -+++ b/drivers/spi/spi-sifive.c -@@ -135,13 +135,13 @@ sifive_spi_prepare_message(struct spi_master *master, struct spi_message *msg) - - /* Update the chip select polarity */ - if (device->mode & SPI_CS_HIGH) -- spi->cs_inactive &= ~BIT(device->chip_select); -+ spi->cs_inactive &= ~BIT(spi_get_chipselect(device, 0)); - else -- spi->cs_inactive |= BIT(device->chip_select); -+ spi->cs_inactive |= BIT(spi_get_chipselect(device, 0)); - sifive_spi_write(spi, SIFIVE_SPI_REG_CSDEF, spi->cs_inactive); - - /* Select the correct device */ -- sifive_spi_write(spi, SIFIVE_SPI_REG_CSID, device->chip_select); -+ sifive_spi_write(spi, SIFIVE_SPI_REG_CSID, spi_get_chipselect(device, 0)); - - /* Set clock mode */ - sifive_spi_write(spi, SIFIVE_SPI_REG_SCKMODE, -diff --git a/drivers/spi/spi-sn-f-ospi.c b/drivers/spi/spi-sn-f-ospi.c -index 0aedade8908c4..93fc1f6f39b83 100644 ---- a/drivers/spi/spi-sn-f-ospi.c -+++ b/drivers/spi/spi-sn-f-ospi.c -@@ -267,7 +267,7 @@ static void f_ospi_config_indir_protocol(struct f_ospi *ospi, - int unit; - - /* Set one chip select */ -- writel(BIT(spi->chip_select), ospi->base + OSPI_SSEL); -+ writel(BIT(spi_get_chipselect(spi, 0)), ospi->base + OSPI_SSEL); - - mode = f_ospi_get_mode(ospi, op->cmd.buswidth, 1); - prot |= FIELD_PREP(OSPI_PROT_MODE_CODE_MASK, mode); -diff --git a/drivers/spi/spi-st-ssc4.c b/drivers/spi/spi-st-ssc4.c -index 843be803696bc..57aaae39e5f84 100644 ---- a/drivers/spi/spi-st-ssc4.c -+++ b/drivers/spi/spi-st-ssc4.c -@@ -183,7 +183,7 @@ static int spi_st_setup(struct spi_device *spi) - return -EINVAL; - } - -- if (!spi->cs_gpiod) { -+ if (!spi_get_csgpiod(spi, 0)) { - dev_err(&spi->dev, "no valid gpio assigned\n"); - return -EINVAL; - } -diff --git a/drivers/spi/spi-stm32-qspi.c b/drivers/spi/spi-stm32-qspi.c -index 9131660c1afb2..b9e61372dcfbd 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); -diff --git a/drivers/spi/spi-sun4i.c b/drivers/spi/spi-sun4i.c -index 6000d0761206c..1e3b1922059e3 100644 ---- a/drivers/spi/spi-sun4i.c -+++ b/drivers/spi/spi-sun4i.c -@@ -167,7 +167,7 @@ static void sun4i_spi_set_cs(struct spi_device *spi, bool enable) - reg = sun4i_spi_read(sspi, SUN4I_CTL_REG); - - reg &= ~SUN4I_CTL_CS_MASK; -- reg |= SUN4I_CTL_CS(spi->chip_select); -+ reg |= SUN4I_CTL_CS(spi_get_chipselect(spi, 0)); - - /* We want to control the chip select manually */ - reg |= SUN4I_CTL_CS_MANUAL; -diff --git a/drivers/spi/spi-sun6i.c b/drivers/spi/spi-sun6i.c -index 23ad052528dbe..46e7c446503a5 100644 ---- a/drivers/spi/spi-sun6i.c -+++ b/drivers/spi/spi-sun6i.c -@@ -174,7 +174,7 @@ static void sun6i_spi_set_cs(struct spi_device *spi, bool enable) - - reg = sun6i_spi_read(sspi, SUN6I_TFR_CTL_REG); - reg &= ~SUN6I_TFR_CTL_CS_MASK; -- reg |= SUN6I_TFR_CTL_CS(spi->chip_select); -+ reg |= SUN6I_TFR_CTL_CS(spi_get_chipselect(spi, 0)); - - if (enable) - reg |= SUN6I_TFR_CTL_CS_LEVEL; -diff --git a/drivers/spi/spi-synquacer.c b/drivers/spi/spi-synquacer.c -index dc188f9202c97..733dc8c52b083 100644 ---- a/drivers/spi/spi-synquacer.c -+++ b/drivers/spi/spi-synquacer.c -@@ -250,7 +250,7 @@ static int synquacer_spi_config(struct spi_master *master, - } - - mode = spi->mode; -- cs = spi->chip_select; -+ cs = spi_get_chipselect(spi, 0); - speed = xfer->speed_hz; - bpw = xfer->bits_per_word; - -@@ -344,7 +344,7 @@ static int synquacer_spi_config(struct spi_master *master, - sspi->bpw = bpw; - sspi->mode = mode; - sspi->speed = speed; -- sspi->cs = spi->chip_select; -+ sspi->cs = spi_get_chipselect(spi, 0); - sspi->bus_width = bus_width; - - return 0; -@@ -488,7 +488,7 @@ static void synquacer_spi_set_cs(struct spi_device *spi, bool enable) - val = readl(sspi->regs + SYNQUACER_HSSPI_REG_DMSTART); - val &= ~(SYNQUACER_HSSPI_DMPSEL_CS_MASK << - SYNQUACER_HSSPI_DMPSEL_CS_SHIFT); -- val |= spi->chip_select << SYNQUACER_HSSPI_DMPSEL_CS_SHIFT; -+ val |= spi_get_chipselect(spi, 0) << SYNQUACER_HSSPI_DMPSEL_CS_SHIFT; - - if (!enable) - val |= SYNQUACER_HSSPI_DMSTOP_STOP; -diff --git a/drivers/spi/spi-tegra114.c b/drivers/spi/spi-tegra114.c -index d9be80e3e1bcb..e334183241d72 100644 ---- a/drivers/spi/spi-tegra114.c -+++ b/drivers/spi/spi-tegra114.c -@@ -747,7 +747,7 @@ static int tegra_spi_set_hw_cs_timing(struct spi_device *spi) - if (setup_dly && hold_dly) { - setup_hold = SPI_SETUP_HOLD(setup_dly - 1, hold_dly - 1); - spi_cs_timing = SPI_CS_SETUP_HOLD(tspi->spi_cs_timing1, -- spi->chip_select, -+ spi_get_chipselect(spi, 0), - setup_hold); - if (tspi->spi_cs_timing1 != spi_cs_timing) { - tspi->spi_cs_timing1 = spi_cs_timing; -@@ -760,9 +760,9 @@ static int tegra_spi_set_hw_cs_timing(struct spi_device *spi) - inactive_cycles--; - cs_state = inactive_cycles ? 0 : 1; - spi_cs_timing = tspi->spi_cs_timing2; -- SPI_SET_CS_ACTIVE_BETWEEN_PACKETS(spi_cs_timing, spi->chip_select, -+ SPI_SET_CS_ACTIVE_BETWEEN_PACKETS(spi_cs_timing, spi_get_chipselect(spi, 0), - cs_state); -- SPI_SET_CYCLES_BETWEEN_PACKETS(spi_cs_timing, spi->chip_select, -+ SPI_SET_CYCLES_BETWEEN_PACKETS(spi_cs_timing, spi_get_chipselect(spi, 0), - inactive_cycles); - if (tspi->spi_cs_timing2 != spi_cs_timing) { - tspi->spi_cs_timing2 = spi_cs_timing; -@@ -831,8 +831,8 @@ static u32 tegra_spi_setup_transfer_one(struct spi_device *spi, - tegra_spi_writel(tspi, command1, SPI_COMMAND1); - - /* GPIO based chip select control */ -- if (spi->cs_gpiod) -- gpiod_set_value(spi->cs_gpiod, 1); -+ if (spi_get_csgpiod(spi, 0)) -+ gpiod_set_value(spi_get_csgpiod(spi, 0), 1); - - if (is_single_xfer && !(t->cs_change)) { - tspi->use_hw_based_cs = true; -@@ -846,7 +846,7 @@ static u32 tegra_spi_setup_transfer_one(struct spi_device *spi, - command1 &= ~SPI_CS_SW_VAL; - } - -- if (tspi->last_used_cs != spi->chip_select) { -+ if (tspi->last_used_cs != spi_get_chipselect(spi, 0)) { - if (cdata && cdata->tx_clk_tap_delay) - tx_tap = cdata->tx_clk_tap_delay; - if (cdata && cdata->rx_clk_tap_delay) -@@ -855,7 +855,7 @@ static u32 tegra_spi_setup_transfer_one(struct spi_device *spi, - SPI_RX_TAP_DELAY(rx_tap); - if (command2 != tspi->def_command2_reg) - tegra_spi_writel(tspi, command2, SPI_COMMAND2); -- tspi->last_used_cs = spi->chip_select; -+ tspi->last_used_cs = spi_get_chipselect(spi, 0); - } - - } else { -@@ -896,7 +896,7 @@ static int tegra_spi_start_transfer_one(struct spi_device *spi, - command1 |= SPI_TX_EN; - tspi->cur_direction |= DATA_DIR_TX; - } -- command1 |= SPI_CS_SEL(spi->chip_select); -+ command1 |= SPI_CS_SEL(spi_get_chipselect(spi, 0)); - tegra_spi_writel(tspi, command1, SPI_COMMAND1); - tspi->command1_reg = command1; - -@@ -980,14 +980,14 @@ static int tegra_spi_setup(struct spi_device *spi) - - spin_lock_irqsave(&tspi->lock, flags); - /* GPIO based chip select control */ -- if (spi->cs_gpiod) -- gpiod_set_value(spi->cs_gpiod, 0); -+ if (spi_get_csgpiod(spi, 0)) -+ gpiod_set_value(spi_get_csgpiod(spi, 0), 0); - - val = tspi->def_command1_reg; - if (spi->mode & SPI_CS_HIGH) -- val &= ~SPI_CS_POL_INACTIVE(spi->chip_select); -+ val &= ~SPI_CS_POL_INACTIVE(spi_get_chipselect(spi, 0)); - else -- val |= SPI_CS_POL_INACTIVE(spi->chip_select); -+ val |= SPI_CS_POL_INACTIVE(spi_get_chipselect(spi, 0)); - tspi->def_command1_reg = val; - tegra_spi_writel(tspi, tspi->def_command1_reg, SPI_COMMAND1); - spin_unlock_irqrestore(&tspi->lock, flags); -@@ -1002,8 +1002,8 @@ static void tegra_spi_transfer_end(struct spi_device *spi) - int cs_val = (spi->mode & SPI_CS_HIGH) ? 0 : 1; - - /* GPIO based chip select control */ -- if (spi->cs_gpiod) -- gpiod_set_value(spi->cs_gpiod, 0); -+ if (spi_get_csgpiod(spi, 0)) -+ gpiod_set_value(spi_get_csgpiod(spi, 0), 0); - - if (!tspi->use_hw_based_cs) { - if (cs_val) -diff --git a/drivers/spi/spi-tegra20-sflash.c b/drivers/spi/spi-tegra20-sflash.c -index 220ee08c4a06c..f67d0aafa744c 100644 ---- a/drivers/spi/spi-tegra20-sflash.c -+++ b/drivers/spi/spi-tegra20-sflash.c -@@ -280,7 +280,7 @@ static int tegra_sflash_start_transfer_one(struct spi_device *spi, - command |= SPI_ACTIVE_SCLK_DRIVE_HIGH; - else - command |= SPI_ACTIVE_SCLK_DRIVE_LOW; -- command |= SPI_CS0_EN << spi->chip_select; -+ command |= SPI_CS0_EN << spi_get_chipselect(spi, 0); - } else { - command = tsd->command_reg; - command &= ~SPI_BIT_LENGTH(~0); -diff --git a/drivers/spi/spi-tegra20-slink.c b/drivers/spi/spi-tegra20-slink.c -index 148043d0c2b84..0afba7dbd93aa 100644 ---- a/drivers/spi/spi-tegra20-slink.c -+++ b/drivers/spi/spi-tegra20-slink.c -@@ -758,9 +758,9 @@ static int tegra_slink_setup(struct spi_device *spi) - spin_lock_irqsave(&tspi->lock, flags); - val = tspi->def_command_reg; - if (spi->mode & SPI_CS_HIGH) -- val |= cs_pol_bit[spi->chip_select]; -+ val |= cs_pol_bit[spi_get_chipselect(spi, 0)]; - else -- val &= ~cs_pol_bit[spi->chip_select]; -+ val &= ~cs_pol_bit[spi_get_chipselect(spi, 0)]; - tspi->def_command_reg = val; - tegra_slink_writel(tspi, tspi->def_command_reg, SLINK_COMMAND); - spin_unlock_irqrestore(&tspi->lock, flags); -@@ -781,7 +781,7 @@ static int tegra_slink_prepare_message(struct spi_master *master, - tspi->command_reg |= SLINK_CS_SW | SLINK_CS_VALUE; - - tspi->command2_reg = tspi->def_command2_reg; -- tspi->command2_reg |= SLINK_SS_EN_CS(spi->chip_select); -+ tspi->command2_reg |= SLINK_SS_EN_CS(spi_get_chipselect(spi, 0)); - - tspi->command_reg &= ~SLINK_MODES; - if (spi->mode & SPI_CPHA) -diff --git a/drivers/spi/spi-tegra210-quad.c b/drivers/spi/spi-tegra210-quad.c -index 0b9bc3b7f53a7..80c3bd9f8bc15 100644 ---- a/drivers/spi/spi-tegra210-quad.c -+++ b/drivers/spi/spi-tegra210-quad.c -@@ -829,7 +829,7 @@ static u32 tegra_qspi_setup_transfer_one(struct spi_device *spi, struct spi_tran - tegra_qspi_mask_clear_irq(tqspi); - - command1 = tqspi->def_command1_reg; -- command1 |= QSPI_CS_SEL(spi->chip_select); -+ command1 |= QSPI_CS_SEL(spi_get_chipselect(spi, 0)); - command1 |= QSPI_BIT_LENGTH(bits_per_word - 1); - - command1 &= ~QSPI_CONTROL_MODE_MASK; -@@ -960,11 +960,11 @@ static int tegra_qspi_setup(struct spi_device *spi) - - /* keep default cs state to inactive */ - val = tqspi->def_command1_reg; -- val |= QSPI_CS_SEL(spi->chip_select); -+ val |= QSPI_CS_SEL(spi_get_chipselect(spi, 0)); - if (spi->mode & SPI_CS_HIGH) -- val &= ~QSPI_CS_POL_INACTIVE(spi->chip_select); -+ val &= ~QSPI_CS_POL_INACTIVE(spi_get_chipselect(spi, 0)); - else -- val |= QSPI_CS_POL_INACTIVE(spi->chip_select); -+ val |= QSPI_CS_POL_INACTIVE(spi_get_chipselect(spi, 0)); - - tqspi->def_command1_reg = val; - tegra_qspi_writel(tqspi, tqspi->def_command1_reg, QSPI_COMMAND1); -diff --git a/drivers/spi/spi-ti-qspi.c b/drivers/spi/spi-ti-qspi.c -index 60086869bcae4..5914335ff63db 100644 ---- a/drivers/spi/spi-ti-qspi.c -+++ b/drivers/spi/spi-ti-qspi.c -@@ -533,10 +533,10 @@ static void ti_qspi_enable_memory_map(struct spi_device *spi) - if (qspi->ctrl_base) { - regmap_update_bits(qspi->ctrl_base, qspi->ctrl_reg, - MEM_CS_MASK, -- MEM_CS_EN(spi->chip_select)); -+ MEM_CS_EN(spi_get_chipselect(spi, 0))); - } - qspi->mmap_enabled = true; -- qspi->current_cs = spi->chip_select; -+ qspi->current_cs = spi_get_chipselect(spi, 0); - } - - static void ti_qspi_disable_memory_map(struct spi_device *spi) -@@ -572,7 +572,7 @@ static void ti_qspi_setup_mmap_read(struct spi_device *spi, u8 opcode, - memval |= ((addr_width - 1) << QSPI_SETUP_ADDR_SHIFT | - dummy_bytes << QSPI_SETUP_DUMMY_SHIFT); - ti_qspi_write(qspi, memval, -- QSPI_SPI_SETUP_REG(spi->chip_select)); -+ QSPI_SPI_SETUP_REG(spi_get_chipselect(spi, 0))); - } - - static int ti_qspi_adjust_op_size(struct spi_mem *mem, struct spi_mem_op *op) -@@ -623,7 +623,7 @@ static int ti_qspi_exec_mem_op(struct spi_mem *mem, - - mutex_lock(&qspi->list_lock); - -- if (!qspi->mmap_enabled || qspi->current_cs != mem->spi->chip_select) { -+ if (!qspi->mmap_enabled || qspi->current_cs != spi_get_chipselect(mem->spi, 0)) { - ti_qspi_setup_clk(qspi, mem->spi->max_speed_hz); - ti_qspi_enable_memory_map(mem->spi); - } -@@ -673,11 +673,11 @@ static int ti_qspi_start_transfer_one(struct spi_master *master, - qspi->dc = 0; - - if (spi->mode & SPI_CPHA) -- qspi->dc |= QSPI_CKPHA(spi->chip_select); -+ qspi->dc |= QSPI_CKPHA(spi_get_chipselect(spi, 0)); - if (spi->mode & SPI_CPOL) -- qspi->dc |= QSPI_CKPOL(spi->chip_select); -+ qspi->dc |= QSPI_CKPOL(spi_get_chipselect(spi, 0)); - if (spi->mode & SPI_CS_HIGH) -- qspi->dc |= QSPI_CSPOL(spi->chip_select); -+ qspi->dc |= QSPI_CSPOL(spi_get_chipselect(spi, 0)); - - frame_len_words = 0; - list_for_each_entry(t, &m->transfers, transfer_list) -@@ -686,7 +686,7 @@ static int ti_qspi_start_transfer_one(struct spi_master *master, - - /* setup command reg */ - qspi->cmd = 0; -- qspi->cmd |= QSPI_EN_CS(spi->chip_select); -+ qspi->cmd |= QSPI_EN_CS(spi_get_chipselect(spi, 0)); - qspi->cmd |= QSPI_FLEN(frame_len_words); - - ti_qspi_write(qspi, qspi->dc, QSPI_SPI_DC_REG); -diff --git a/drivers/spi/spi-topcliff-pch.c b/drivers/spi/spi-topcliff-pch.c -index cbb60198a7f00..11cfe84714e71 100644 ---- a/drivers/spi/spi-topcliff-pch.c -+++ b/drivers/spi/spi-topcliff-pch.c -@@ -499,7 +499,7 @@ static inline void pch_spi_select_chip(struct pch_spi_data *data, - struct spi_device *pspi) - { - if (data->current_chip != NULL) { -- if (pspi->chip_select != data->n_curnt_chip) { -+ if (spi_get_chipselect(pspi, 0) != data->n_curnt_chip) { - dev_dbg(&pspi->dev, "%s : different slave\n", __func__); - data->current_chip = NULL; - } -@@ -507,7 +507,7 @@ static inline void pch_spi_select_chip(struct pch_spi_data *data, - - data->current_chip = pspi; - -- data->n_curnt_chip = data->current_chip->chip_select; -+ data->n_curnt_chip = spi_get_chipselect(data->current_chip, 0); - - dev_dbg(&pspi->dev, "%s :Invoking pch_spi_setup_transfer\n", __func__); - pch_spi_setup_transfer(pspi); -diff --git a/drivers/spi/spi-wpcm-fiu.c b/drivers/spi/spi-wpcm-fiu.c -index ab33710d50ac8..f15312fdcdaf0 100644 ---- a/drivers/spi/spi-wpcm-fiu.c -+++ b/drivers/spi/spi-wpcm-fiu.c -@@ -158,7 +158,7 @@ static int wpcm_fiu_normal_exec(struct spi_mem *mem, const struct spi_mem_op *op - if (op->data.dir == SPI_MEM_DATA_OUT) - wpcm_fiu_set_data(fiu, op->data.buf.out, op->data.nbytes); - -- ret = wpcm_fiu_do_uma(fiu, mem->spi->chip_select, op->addr.nbytes == 3, -+ ret = wpcm_fiu_do_uma(fiu, spi_get_chipselect(mem->spi, 0), op->addr.nbytes == 3, - op->data.dir == SPI_MEM_DATA_OUT, op->data.nbytes); - - if (op->data.dir == SPI_MEM_DATA_IN) -@@ -196,7 +196,7 @@ static bool wpcm_fiu_4ba_match(const struct spi_mem_op *op) - static int wpcm_fiu_4ba_exec(struct spi_mem *mem, const struct spi_mem_op *op) - { - struct wpcm_fiu_spi *fiu = spi_controller_get_devdata(mem->spi->controller); -- int cs = mem->spi->chip_select; -+ int cs = spi_get_chipselect(mem->spi, 0); - - wpcm_fiu_ects_assert(fiu, cs); - -@@ -241,7 +241,7 @@ static bool wpcm_fiu_rdid_match(const struct spi_mem_op *op) - static int wpcm_fiu_rdid_exec(struct spi_mem *mem, const struct spi_mem_op *op) - { - struct wpcm_fiu_spi *fiu = spi_controller_get_devdata(mem->spi->controller); -- int cs = mem->spi->chip_select; -+ int cs = spi_get_chipselect(mem->spi, 0); - - /* First transfer */ - wpcm_fiu_set_opcode(fiu, op->cmd.opcode); -@@ -278,7 +278,7 @@ static bool wpcm_fiu_dummy_match(const struct spi_mem_op *op) - static int wpcm_fiu_dummy_exec(struct spi_mem *mem, const struct spi_mem_op *op) - { - struct wpcm_fiu_spi *fiu = spi_controller_get_devdata(mem->spi->controller); -- int cs = mem->spi->chip_select; -+ int cs = spi_get_chipselect(mem->spi, 0); - - wpcm_fiu_ects_assert(fiu, cs); - -@@ -376,7 +376,7 @@ static int wpcm_fiu_adjust_op_size(struct spi_mem *mem, struct spi_mem_op *op) - static int wpcm_fiu_dirmap_create(struct spi_mem_dirmap_desc *desc) - { - struct wpcm_fiu_spi *fiu = spi_controller_get_devdata(desc->mem->spi->controller); -- int cs = desc->mem->spi->chip_select; -+ int cs = spi_get_chipselect(desc->mem->spi, 0); - - if (desc->info.op_tmpl.data.dir != SPI_MEM_DATA_IN) - return -ENOTSUPP; -@@ -400,7 +400,7 @@ static int wpcm_fiu_dirmap_create(struct spi_mem_dirmap_desc *desc) - static ssize_t wpcm_fiu_direct_read(struct spi_mem_dirmap_desc *desc, u64 offs, size_t len, void *buf) - { - struct wpcm_fiu_spi *fiu = spi_controller_get_devdata(desc->mem->spi->controller); -- int cs = desc->mem->spi->chip_select; -+ int cs = spi_get_chipselect(desc->mem->spi, 0); - - if (offs >= MAX_MEMORY_SIZE_PER_CS) - return -ENOTSUPP; -diff --git a/drivers/spi/spi-xcomm.c b/drivers/spi/spi-xcomm.c -index 8628241ec99e4..5d23411f2a3e9 100644 ---- a/drivers/spi/spi-xcomm.c -+++ b/drivers/spi/spi-xcomm.c -@@ -58,7 +58,7 @@ static int spi_xcomm_sync_config(struct spi_xcomm *spi_xcomm, unsigned int len) - static void spi_xcomm_chipselect(struct spi_xcomm *spi_xcomm, - struct spi_device *spi, int is_active) - { -- unsigned long cs = spi->chip_select; -+ unsigned long cs = spi_get_chipselect(spi, 0); - uint16_t chipselect = spi_xcomm->chipselect; - - if (is_active) -diff --git a/drivers/spi/spi-xilinx.c b/drivers/spi/spi-xilinx.c -index 1411548f42553..a2422c1636f4c 100644 ---- a/drivers/spi/spi-xilinx.c -+++ b/drivers/spi/spi-xilinx.c -@@ -213,7 +213,7 @@ static void xilinx_spi_chipselect(struct spi_device *spi, int is_on) - */ - - cs = xspi->cs_inactive; -- cs ^= BIT(spi->chip_select); -+ cs ^= BIT(spi_get_chipselect(spi, 0)); - - /* Activate the chip select */ - xspi->write_fn(cs, xspi->regs + XSPI_SSR_OFFSET); -@@ -228,9 +228,9 @@ static int xilinx_spi_setup_transfer(struct spi_device *spi, - struct xilinx_spi *xspi = spi_master_get_devdata(spi->master); - - if (spi->mode & SPI_CS_HIGH) -- xspi->cs_inactive &= ~BIT(spi->chip_select); -+ xspi->cs_inactive &= ~BIT(spi_get_chipselect(spi, 0)); - else -- xspi->cs_inactive |= BIT(spi->chip_select); -+ xspi->cs_inactive |= BIT(spi_get_chipselect(spi, 0)); - - return 0; - } -diff --git a/drivers/spi/spi-xlp.c b/drivers/spi/spi-xlp.c -index e5707fe5c8f15..3b91cdd5ae21e 100644 ---- a/drivers/spi/spi-xlp.c -+++ b/drivers/spi/spi-xlp.c -@@ -139,7 +139,7 @@ static int xlp_spi_setup(struct spi_device *spi) - int cs; - - xspi = spi_master_get_devdata(spi->master); -- cs = spi->chip_select; -+ cs = spi_get_chipselect(spi, 0); - /* - * The value of fdiv must be between 4 and 65535. - */ -@@ -350,7 +350,7 @@ static int xlp_spi_transfer_one(struct spi_master *master, - struct xlp_spi_priv *xspi = spi_master_get_devdata(master); - int ret = 0; - -- xspi->cs = spi->chip_select; -+ xspi->cs = spi_get_chipselect(spi, 0); - xspi->dev = spi->dev; - - if (spi_transfer_is_last(master, t)) -diff --git a/drivers/spi/spi-zynq-qspi.c b/drivers/spi/spi-zynq-qspi.c -index 78f31b61a2aac..debb53ef19a09 100644 ---- a/drivers/spi/spi-zynq-qspi.c -+++ b/drivers/spi/spi-zynq-qspi.c -@@ -296,7 +296,7 @@ static void zynq_qspi_chipselect(struct spi_device *spi, bool assert) - /* Select the lower (CS0) or upper (CS1) memory */ - if (ctlr->num_chipselect > 1) { - config_reg = zynq_qspi_read(xqspi, ZYNQ_QSPI_LINEAR_CFG_OFFSET); -- if (!spi->chip_select) -+ if (!spi_get_chipselect(spi, 0)) - config_reg &= ~ZYNQ_QSPI_LCFG_U_PAGE; - else - config_reg |= ZYNQ_QSPI_LCFG_U_PAGE; -diff --git a/drivers/spi/spi-zynqmp-gqspi.c b/drivers/spi/spi-zynqmp-gqspi.c -index 95ff15665d448..319cdd5a0bdcb 100644 ---- a/drivers/spi/spi-zynqmp-gqspi.c -+++ b/drivers/spi/spi-zynqmp-gqspi.c -@@ -468,7 +468,7 @@ static void zynqmp_qspi_chipselect(struct spi_device *qspi, bool is_high) - genfifoentry |= GQSPI_GENFIFO_MODE_SPI; - - if (!is_high) { -- if (!qspi->chip_select) { -+ if (!spi_get_chipselect(qspi, 0)) { - xqspi->genfifobus = GQSPI_GENFIFO_BUS_LOWER; - xqspi->genfifocs = GQSPI_GENFIFO_CS_LOWER; - } else { -diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c -index 5a038c6674018..a399c617ca25f 100644 ---- a/drivers/spi/spidev.c -+++ b/drivers/spi/spidev.c -@@ -393,7 +393,7 @@ spidev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) - struct spi_controller *ctlr = spi->controller; - - if (ctlr->use_gpio_descriptors && ctlr->cs_gpiods && -- ctlr->cs_gpiods[spi->chip_select]) -+ ctlr->cs_gpiods[spi_get_chipselect(spi, 0)]) - tmp &= ~SPI_CS_HIGH; - } - -@@ -432,7 +432,7 @@ spidev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) - } - - if (ctlr->use_gpio_descriptors && ctlr->cs_gpiods && -- ctlr->cs_gpiods[spi->chip_select]) -+ ctlr->cs_gpiods[spi_get_chipselect(spi, 0)]) - tmp |= SPI_CS_HIGH; - - tmp |= spi->mode & ~SPI_MODE_MASK; -@@ -805,7 +805,7 @@ static int spidev_probe(struct spi_device *spi) - spidev->devt = MKDEV(SPIDEV_MAJOR, minor); - dev = device_create(spidev_class, &spi->dev, spidev->devt, - spidev, "spidev%d.%d", -- spi->master->bus_num, spi->chip_select); -+ spi->master->bus_num, spi_get_chipselect(spi, 0)); - status = PTR_ERR_OR_ZERO(dev); - } else { - dev_dbg(&spi->dev, "no minor number available!\n"); -diff --git a/include/trace/events/spi.h b/include/trace/events/spi.h -index c0d9844befd7a..c0248a8fa79c9 100644 ---- a/include/trace/events/spi.h -+++ b/include/trace/events/spi.h -@@ -57,7 +57,7 @@ TRACE_EVENT(spi_setup, - - TP_fast_assign( - __entry->bus_num = spi->controller->bus_num; -- __entry->chip_select = spi->chip_select; -+ __entry->chip_select = spi_get_chipselect(spi, 0); - __entry->mode = spi->mode; - __entry->bits_per_word = spi->bits_per_word; - __entry->max_speed_hz = spi->max_speed_hz; -@@ -88,7 +88,7 @@ TRACE_EVENT(spi_set_cs, - - TP_fast_assign( - __entry->bus_num = spi->controller->bus_num; -- __entry->chip_select = spi->chip_select; -+ __entry->chip_select = spi_get_chipselect(spi, 0); - __entry->mode = spi->mode; - __entry->enable = enable; - ), -@@ -113,7 +113,7 @@ DECLARE_EVENT_CLASS(spi_message, - - TP_fast_assign( - __entry->bus_num = msg->spi->controller->bus_num; -- __entry->chip_select = msg->spi->chip_select; -+ __entry->chip_select = spi_get_chipselect(msg->spi, 0); - __entry->msg = msg; - ), - -@@ -154,7 +154,7 @@ TRACE_EVENT(spi_message_done, - - TP_fast_assign( - __entry->bus_num = msg->spi->controller->bus_num; -- __entry->chip_select = msg->spi->chip_select; -+ __entry->chip_select = spi_get_chipselect(msg->spi, 0); - __entry->msg = msg; - __entry->frame = msg->frame_length; - __entry->actual = msg->actual_length; -@@ -197,7 +197,7 @@ DECLARE_EVENT_CLASS(spi_transfer, - - TP_fast_assign( - __entry->bus_num = msg->spi->controller->bus_num; -- __entry->chip_select = msg->spi->chip_select; -+ __entry->chip_select = spi_get_chipselect(msg->spi, 0); - __entry->xfer = xfer; - __entry->len = xfer->len; - --- -2.39.2 -