mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-07 13:43:51 +00:00
ARM: spitz: Use software nodes for the ADS7846 touchscreen
Convert the Spitz to use software nodes to describe GPIOs for the ADS7846 touchscreen. As part of the conversion switch from the custom wait_for_sync() callback to defining hsync GPIO that can be used by the ads7846 driver to detect hsync. Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Link: https://lore.kernel.org/r/20240628180852.1738922-11-dmitry.torokhov@gmail.com Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
parent
29c4e69f8e
commit
38b2482a27
@ -534,31 +534,23 @@ static inline void spitz_leds_init(void) {}
|
||||
* SSP Devices
|
||||
******************************************************************************/
|
||||
#if defined(CONFIG_SPI_PXA2XX) || defined(CONFIG_SPI_PXA2XX_MODULE)
|
||||
static void spitz_ads7846_wait_for_hsync(void)
|
||||
{
|
||||
while (gpio_get_value(SPITZ_GPIO_HSYNC))
|
||||
cpu_relax();
|
||||
|
||||
while (!gpio_get_value(SPITZ_GPIO_HSYNC))
|
||||
cpu_relax();
|
||||
}
|
||||
|
||||
static struct ads7846_platform_data spitz_ads7846_info = {
|
||||
.model = 7846,
|
||||
.vref_delay_usecs = 100,
|
||||
.x_plate_ohms = 419,
|
||||
.y_plate_ohms = 486,
|
||||
.pressure_max = 1024,
|
||||
.wait_for_sync = spitz_ads7846_wait_for_hsync,
|
||||
static const struct property_entry spitz_ads7846_props[] = {
|
||||
PROPERTY_ENTRY_STRING("compatible", "ti,ads7846"),
|
||||
PROPERTY_ENTRY_U32("touchscreen-max-pressure", 1024),
|
||||
PROPERTY_ENTRY_U16("ti,x-plate-ohms", 419),
|
||||
PROPERTY_ENTRY_U16("ti,y-plate-ohms", 486),
|
||||
PROPERTY_ENTRY_U16("ti,vref-delay-usecs", 100),
|
||||
PROPERTY_ENTRY_GPIO("pendown-gpios", &pxa2xx_gpiochip_node,
|
||||
SPITZ_GPIO_TP_INT, GPIO_ACTIVE_LOW),
|
||||
PROPERTY_ENTRY_GPIO("ti,hsync-gpios", &pxa2xx_gpiochip_node,
|
||||
SPITZ_GPIO_HSYNC, GPIO_ACTIVE_LOW),
|
||||
{ }
|
||||
};
|
||||
|
||||
static struct gpiod_lookup_table spitz_ads7846_gpio_table = {
|
||||
.dev_id = "spi2.0",
|
||||
.table = {
|
||||
GPIO_LOOKUP("gpio-pxa", SPITZ_GPIO_TP_INT,
|
||||
"pendown", GPIO_ACTIVE_LOW),
|
||||
{ }
|
||||
},
|
||||
static const struct software_node spitz_ads7846_swnode = {
|
||||
.name = "ads7846",
|
||||
.properties = spitz_ads7846_props,
|
||||
};
|
||||
|
||||
static const struct property_entry spitz_lcdcon_props[] = {
|
||||
@ -595,7 +587,7 @@ static struct spi_board_info spitz_spi_devices[] = {
|
||||
.max_speed_hz = 1200000,
|
||||
.bus_num = 2,
|
||||
.chip_select = 0,
|
||||
.platform_data = &spitz_ads7846_info,
|
||||
.swnode = &spitz_ads7846_swnode,
|
||||
.irq = PXA_GPIO_TO_IRQ(SPITZ_GPIO_TP_INT),
|
||||
}, {
|
||||
.modalias = "corgi-lcd",
|
||||
@ -638,8 +630,6 @@ static void __init spitz_spi_init(void)
|
||||
struct platform_device *pd;
|
||||
int err;
|
||||
|
||||
gpiod_add_lookup_table(&spitz_ads7846_gpio_table);
|
||||
|
||||
pd = platform_device_register_full(&spitz_spi_device_info);
|
||||
err = PTR_ERR_OR_ZERO(pd);
|
||||
if (err)
|
||||
|
Loading…
Reference in New Issue
Block a user