ARM: pxa2xx: Fix GPIO descriptor tables
Laurence reports: "Kernel >5.18 on Zaurus has a bug where the power management code can't talk to devices, emitting the following errors: sharpsl-pm sharpsl-pm: Error: AC check failed: voltage -22. sharpsl-pm sharpsl-pm: Charging Error! sharpsl-pm sharpsl-pm: Warning: Cannot read main battery! Looking at the recent changes, I found that commit31455bbda2
("spi: pxa2xx_spi: Convert to use GPIO descriptors") replaced the deprecated SPI chip select platform device code with a gpiod lookup table. However, this didn't seem to work until I changed the `dev_id` member from the device name to the bus id. I'm not entirely sure why this is necessary, but I suspect it is related to the fact that in sysfs SPI devices are attached under /sys/devices/.../dev_name/spi_master/spiB/spiB.C, rather than directly to the device." After reviewing the change I conclude that the same fix is needed for all affected boards. Fixes:31455bbda2
("spi: pxa2xx_spi: Convert to use GPIO descriptors") Reported-by: Laurence de Bruxelles <lfdebrux@gmail.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Cc: stable@vger.kernel.org Link: https://lore.kernel.org/r/20220722114611.1517414-1-linus.walleij@linaro.org' Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
parent
430d31bb2e
commit
c5cdb92869
|
@ -549,7 +549,7 @@ static struct pxa2xx_spi_controller corgi_spi_info = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct gpiod_lookup_table corgi_spi_gpio_table = {
|
static struct gpiod_lookup_table corgi_spi_gpio_table = {
|
||||||
.dev_id = "pxa2xx-spi.1",
|
.dev_id = "spi1",
|
||||||
.table = {
|
.table = {
|
||||||
GPIO_LOOKUP_IDX("gpio-pxa", CORGI_GPIO_ADS7846_CS, "cs", 0, GPIO_ACTIVE_LOW),
|
GPIO_LOOKUP_IDX("gpio-pxa", CORGI_GPIO_ADS7846_CS, "cs", 0, GPIO_ACTIVE_LOW),
|
||||||
GPIO_LOOKUP_IDX("gpio-pxa", CORGI_GPIO_LCDCON_CS, "cs", 1, GPIO_ACTIVE_LOW),
|
GPIO_LOOKUP_IDX("gpio-pxa", CORGI_GPIO_LCDCON_CS, "cs", 1, GPIO_ACTIVE_LOW),
|
||||||
|
|
|
@ -635,7 +635,7 @@ static struct pxa2xx_spi_controller pxa_ssp2_master_info = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct gpiod_lookup_table pxa_ssp2_gpio_table = {
|
static struct gpiod_lookup_table pxa_ssp2_gpio_table = {
|
||||||
.dev_id = "pxa2xx-spi.2",
|
.dev_id = "spi2",
|
||||||
.table = {
|
.table = {
|
||||||
GPIO_LOOKUP_IDX("gpio-pxa", GPIO88_HX4700_TSC2046_CS, "cs", 0, GPIO_ACTIVE_LOW),
|
GPIO_LOOKUP_IDX("gpio-pxa", GPIO88_HX4700_TSC2046_CS, "cs", 0, GPIO_ACTIVE_LOW),
|
||||||
{ },
|
{ },
|
||||||
|
|
|
@ -140,7 +140,7 @@ struct platform_device pxa_spi_ssp4 = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct gpiod_lookup_table pxa_ssp3_gpio_table = {
|
static struct gpiod_lookup_table pxa_ssp3_gpio_table = {
|
||||||
.dev_id = "pxa2xx-spi.3",
|
.dev_id = "spi3",
|
||||||
.table = {
|
.table = {
|
||||||
GPIO_LOOKUP_IDX("gpio-pxa", ICONTROL_MCP251x_nCS1, "cs", 0, GPIO_ACTIVE_LOW),
|
GPIO_LOOKUP_IDX("gpio-pxa", ICONTROL_MCP251x_nCS1, "cs", 0, GPIO_ACTIVE_LOW),
|
||||||
GPIO_LOOKUP_IDX("gpio-pxa", ICONTROL_MCP251x_nCS2, "cs", 1, GPIO_ACTIVE_LOW),
|
GPIO_LOOKUP_IDX("gpio-pxa", ICONTROL_MCP251x_nCS2, "cs", 1, GPIO_ACTIVE_LOW),
|
||||||
|
@ -149,7 +149,7 @@ static struct gpiod_lookup_table pxa_ssp3_gpio_table = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct gpiod_lookup_table pxa_ssp4_gpio_table = {
|
static struct gpiod_lookup_table pxa_ssp4_gpio_table = {
|
||||||
.dev_id = "pxa2xx-spi.4",
|
.dev_id = "spi4",
|
||||||
.table = {
|
.table = {
|
||||||
GPIO_LOOKUP_IDX("gpio-pxa", ICONTROL_MCP251x_nCS3, "cs", 0, GPIO_ACTIVE_LOW),
|
GPIO_LOOKUP_IDX("gpio-pxa", ICONTROL_MCP251x_nCS3, "cs", 0, GPIO_ACTIVE_LOW),
|
||||||
GPIO_LOOKUP_IDX("gpio-pxa", ICONTROL_MCP251x_nCS4, "cs", 1, GPIO_ACTIVE_LOW),
|
GPIO_LOOKUP_IDX("gpio-pxa", ICONTROL_MCP251x_nCS4, "cs", 1, GPIO_ACTIVE_LOW),
|
||||||
|
|
|
@ -207,7 +207,7 @@ static struct spi_board_info littleton_spi_devices[] __initdata = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct gpiod_lookup_table littleton_spi_gpio_table = {
|
static struct gpiod_lookup_table littleton_spi_gpio_table = {
|
||||||
.dev_id = "pxa2xx-spi.2",
|
.dev_id = "spi2",
|
||||||
.table = {
|
.table = {
|
||||||
GPIO_LOOKUP_IDX("gpio-pxa", LITTLETON_GPIO_LCD_CS, "cs", 0, GPIO_ACTIVE_LOW),
|
GPIO_LOOKUP_IDX("gpio-pxa", LITTLETON_GPIO_LCD_CS, "cs", 0, GPIO_ACTIVE_LOW),
|
||||||
{ },
|
{ },
|
||||||
|
|
|
@ -994,7 +994,7 @@ static struct pxa2xx_spi_controller magician_spi_info = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct gpiod_lookup_table magician_spi_gpio_table = {
|
static struct gpiod_lookup_table magician_spi_gpio_table = {
|
||||||
.dev_id = "pxa2xx-spi.2",
|
.dev_id = "spi2",
|
||||||
.table = {
|
.table = {
|
||||||
/* NOTICE must be GPIO, incompatibility with hw PXA SPI framing */
|
/* NOTICE must be GPIO, incompatibility with hw PXA SPI framing */
|
||||||
GPIO_LOOKUP_IDX("gpio-pxa", GPIO14_MAGICIAN_TSC2046_CS, "cs", 0, GPIO_ACTIVE_LOW),
|
GPIO_LOOKUP_IDX("gpio-pxa", GPIO14_MAGICIAN_TSC2046_CS, "cs", 0, GPIO_ACTIVE_LOW),
|
||||||
|
|
|
@ -578,7 +578,7 @@ static struct pxa2xx_spi_controller spitz_spi_info = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct gpiod_lookup_table spitz_spi_gpio_table = {
|
static struct gpiod_lookup_table spitz_spi_gpio_table = {
|
||||||
.dev_id = "pxa2xx-spi.2",
|
.dev_id = "spi2",
|
||||||
.table = {
|
.table = {
|
||||||
GPIO_LOOKUP_IDX("gpio-pxa", SPITZ_GPIO_ADS7846_CS, "cs", 0, GPIO_ACTIVE_LOW),
|
GPIO_LOOKUP_IDX("gpio-pxa", SPITZ_GPIO_ADS7846_CS, "cs", 0, GPIO_ACTIVE_LOW),
|
||||||
GPIO_LOOKUP_IDX("gpio-pxa", SPITZ_GPIO_LCDCON_CS, "cs", 1, GPIO_ACTIVE_LOW),
|
GPIO_LOOKUP_IDX("gpio-pxa", SPITZ_GPIO_LCDCON_CS, "cs", 1, GPIO_ACTIVE_LOW),
|
||||||
|
|
|
@ -623,7 +623,7 @@ static struct pxa2xx_spi_controller pxa_ssp2_master_info = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct gpiod_lookup_table pxa_ssp1_gpio_table = {
|
static struct gpiod_lookup_table pxa_ssp1_gpio_table = {
|
||||||
.dev_id = "pxa2xx-spi.1",
|
.dev_id = "spi1",
|
||||||
.table = {
|
.table = {
|
||||||
GPIO_LOOKUP_IDX("gpio-pxa", GPIO24_ZIPITZ2_WIFI_CS, "cs", 0, GPIO_ACTIVE_LOW),
|
GPIO_LOOKUP_IDX("gpio-pxa", GPIO24_ZIPITZ2_WIFI_CS, "cs", 0, GPIO_ACTIVE_LOW),
|
||||||
{ },
|
{ },
|
||||||
|
@ -631,7 +631,7 @@ static struct gpiod_lookup_table pxa_ssp1_gpio_table = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct gpiod_lookup_table pxa_ssp2_gpio_table = {
|
static struct gpiod_lookup_table pxa_ssp2_gpio_table = {
|
||||||
.dev_id = "pxa2xx-spi.2",
|
.dev_id = "spi2",
|
||||||
.table = {
|
.table = {
|
||||||
GPIO_LOOKUP_IDX("gpio-pxa", GPIO88_ZIPITZ2_LCD_CS, "cs", 0, GPIO_ACTIVE_LOW),
|
GPIO_LOOKUP_IDX("gpio-pxa", GPIO88_ZIPITZ2_LCD_CS, "cs", 0, GPIO_ACTIVE_LOW),
|
||||||
{ },
|
{ },
|
||||||
|
|
Loading…
Reference in New Issue