Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

spi: move unused device CS initialization to __spi_add_device()

Using spi_device::num_chipselect, initialize unused device CS as invalid
at registration time in __spi_add_device(), and drop it from the
different allocation paths.

Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
Link: https://patch.msgid.link/20250915183725.219473-4-jonas.gorski@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Jonas Gorski and committed by
Mark Brown
1c923f62 099f9421

+4 -13
+4 -13
drivers/spi/spi.c
··· 703 703 } 704 704 } 705 705 706 + /* Initialize unused logical CS as invalid */ 707 + for (idx = spi->num_chipselect; idx < SPI_CS_CNT_MAX; idx++) 708 + spi_set_chipselect(spi, idx, SPI_INVALID_CS); 709 + 706 710 /* Set the bus ID string */ 707 711 spi_dev_set_name(spi); 708 712 ··· 784 780 } 785 781 EXPORT_SYMBOL_GPL(spi_add_device); 786 782 787 - static void spi_set_all_cs_unused(struct spi_device *spi) 788 - { 789 - u8 idx; 790 - 791 - for (idx = 0; idx < SPI_CS_CNT_MAX; idx++) 792 - spi_set_chipselect(spi, idx, SPI_INVALID_CS); 793 - } 794 - 795 783 /** 796 784 * spi_new_device - instantiate one new SPI device 797 785 * @ctlr: Controller to which device is connected ··· 819 823 WARN_ON(strlen(chip->modalias) >= sizeof(proxy->modalias)); 820 824 821 825 /* Use provided chip-select for proxy device */ 822 - spi_set_all_cs_unused(proxy); 823 826 spi_set_chipselect(proxy, 0, chip->chip_select); 824 827 825 828 proxy->max_speed_hz = chip->max_speed_hz; ··· 2438 2443 return -EINVAL; 2439 2444 } 2440 2445 2441 - spi_set_all_cs_unused(spi); 2442 - 2443 2446 /* Device address */ 2444 2447 rc = of_property_read_variable_u32_array(nc, "reg", &cs[0], 1, 2445 2448 SPI_CS_CNT_MAX); ··· 2582 2589 strscpy(ancillary->modalias, "dummy", sizeof(ancillary->modalias)); 2583 2590 2584 2591 /* Use provided chip-select for ancillary device */ 2585 - spi_set_all_cs_unused(ancillary); 2586 2592 spi_set_chipselect(ancillary, 0, chip_select); 2587 2593 2588 2594 /* Take over SPI mode/speed from SPI main device */ ··· 2829 2837 return ERR_PTR(-ENOMEM); 2830 2838 } 2831 2839 2832 - spi_set_all_cs_unused(spi); 2833 2840 spi_set_chipselect(spi, 0, lookup.chip_select); 2834 2841 2835 2842 ACPI_COMPANION_SET(&spi->dev, adev);