Skip to content

Commit 1c923f6

Browse files
KanjiMonsterbroonie
authored andcommitted
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>
1 parent 099f942 commit 1c923f6

1 file changed

Lines changed: 4 additions & 13 deletions

File tree

drivers/spi/spi.c

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -703,6 +703,10 @@ static int __spi_add_device(struct spi_device *spi)
703703
}
704704
}
705705

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+
706710
/* Set the bus ID string */
707711
spi_dev_set_name(spi);
708712

@@ -780,14 +784,6 @@ int spi_add_device(struct spi_device *spi)
780784
}
781785
EXPORT_SYMBOL_GPL(spi_add_device);
782786

783-
static void spi_set_all_cs_unused(struct spi_device *spi)
784-
{
785-
u8 idx;
786-
787-
for (idx = 0; idx < SPI_CS_CNT_MAX; idx++)
788-
spi_set_chipselect(spi, idx, SPI_INVALID_CS);
789-
}
790-
791787
/**
792788
* spi_new_device - instantiate one new SPI device
793789
* @ctlr: Controller to which device is connected
@@ -823,7 +819,6 @@ struct spi_device *spi_new_device(struct spi_controller *ctlr,
823819
WARN_ON(strlen(chip->modalias) >= sizeof(proxy->modalias));
824820

825821
/* Use provided chip-select for proxy device */
826-
spi_set_all_cs_unused(proxy);
827822
spi_set_chipselect(proxy, 0, chip->chip_select);
828823

829824
proxy->max_speed_hz = chip->max_speed_hz;
@@ -2443,8 +2438,6 @@ static int of_spi_parse_dt(struct spi_controller *ctlr, struct spi_device *spi,
24432438
return -EINVAL;
24442439
}
24452440

2446-
spi_set_all_cs_unused(spi);
2447-
24482441
/* Device address */
24492442
rc = of_property_read_variable_u32_array(nc, "reg", &cs[0], 1,
24502443
SPI_CS_CNT_MAX);
@@ -2589,7 +2582,6 @@ struct spi_device *spi_new_ancillary_device(struct spi_device *spi,
25892582
strscpy(ancillary->modalias, "dummy", sizeof(ancillary->modalias));
25902583

25912584
/* Use provided chip-select for ancillary device */
2592-
spi_set_all_cs_unused(ancillary);
25932585
spi_set_chipselect(ancillary, 0, chip_select);
25942586

25952587
/* Take over SPI mode/speed from SPI main device */
@@ -2837,7 +2829,6 @@ struct spi_device *acpi_spi_device_alloc(struct spi_controller *ctlr,
28372829
return ERR_PTR(-ENOMEM);
28382830
}
28392831

2840-
spi_set_all_cs_unused(spi);
28412832
spi_set_chipselect(spi, 0, lookup.chip_select);
28422833

28432834
ACPI_COMPANION_SET(&spi->dev, adev);

0 commit comments

Comments
 (0)