mirror of
https://github.com/torvalds/linux.git
synced 2024-12-11 05:33:09 +00:00
spi: Don't call spi_get_gpio_descs() before device name is set
Move code calling spi_get_gpio_descs() to happen after ctlr->dev's name is set in order to have proper GPIO consumer names. Before: cat /sys/kernel/debug/gpio gpiochip0: GPIOs 0-31, parent: platform/40049000.gpio, vf610-gpio: gpio-6 ( |regulator-usb0-vbus ) out lo gpiochip1: GPIOs 32-63, parent: platform/4004a000.gpio, vf610-gpio: gpio-36 ( |scl ) in hi gpio-37 ( |sda ) in hi gpio-40 ( |(null) CS1 ) out lo gpio-41 ( |(null) CS0 ) out lo ACTIVE LOW gpio-42 ( |miso ) in hi gpio-43 ( |mosi ) in lo gpio-44 ( |sck ) out lo After: cat /sys/kernel/debug/gpio gpiochip0: GPIOs 0-31, parent: platform/40049000.gpio, vf610-gpio: gpio-6 ( |regulator-usb0-vbus ) out lo gpiochip1: GPIOs 32-63, parent: platform/4004a000.gpio, vf610-gpio: gpio-36 ( |scl ) in hi gpio-37 ( |sda ) in hi gpio-40 ( |spi0 CS1 ) out lo gpio-41 ( |spi0 CS0 ) out lo ACTIVE LOW gpio-42 ( |miso ) in hi gpio-43 ( |mosi ) in lo gpio-44 ( |sck ) out lo Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> Cc: Mark Brown <broonie@kernel.org> Cc: Chris Healy <cphealy@gmail.com> Cc: linux-spi@vger.kernel.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
249e2632dc
commit
0a919ae492
@ -2281,24 +2281,6 @@ int spi_register_controller(struct spi_controller *ctlr)
|
|||||||
if (status)
|
if (status)
|
||||||
return status;
|
return status;
|
||||||
|
|
||||||
if (!spi_controller_is_slave(ctlr)) {
|
|
||||||
if (ctlr->use_gpio_descriptors) {
|
|
||||||
status = spi_get_gpio_descs(ctlr);
|
|
||||||
if (status)
|
|
||||||
return status;
|
|
||||||
/*
|
|
||||||
* A controller using GPIO descriptors always
|
|
||||||
* supports SPI_CS_HIGH if need be.
|
|
||||||
*/
|
|
||||||
ctlr->mode_bits |= SPI_CS_HIGH;
|
|
||||||
} else {
|
|
||||||
/* Legacy code path for GPIOs from DT */
|
|
||||||
status = of_spi_register_master(ctlr);
|
|
||||||
if (status)
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* even if it's just one always-selected device, there must
|
/* even if it's just one always-selected device, there must
|
||||||
* be at least one chipselect
|
* be at least one chipselect
|
||||||
*/
|
*/
|
||||||
@ -2355,6 +2337,25 @@ int spi_register_controller(struct spi_controller *ctlr)
|
|||||||
* registration fails if the bus ID is in use.
|
* registration fails if the bus ID is in use.
|
||||||
*/
|
*/
|
||||||
dev_set_name(&ctlr->dev, "spi%u", ctlr->bus_num);
|
dev_set_name(&ctlr->dev, "spi%u", ctlr->bus_num);
|
||||||
|
|
||||||
|
if (!spi_controller_is_slave(ctlr)) {
|
||||||
|
if (ctlr->use_gpio_descriptors) {
|
||||||
|
status = spi_get_gpio_descs(ctlr);
|
||||||
|
if (status)
|
||||||
|
return status;
|
||||||
|
/*
|
||||||
|
* A controller using GPIO descriptors always
|
||||||
|
* supports SPI_CS_HIGH if need be.
|
||||||
|
*/
|
||||||
|
ctlr->mode_bits |= SPI_CS_HIGH;
|
||||||
|
} else {
|
||||||
|
/* Legacy code path for GPIOs from DT */
|
||||||
|
status = of_spi_register_master(ctlr);
|
||||||
|
if (status)
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
status = device_add(&ctlr->dev);
|
status = device_add(&ctlr->dev);
|
||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
/* free bus id */
|
/* free bus id */
|
||||||
|
Loading…
Reference in New Issue
Block a user