* [PATCH] sh: ecovec24: use static device properties to describe the touchscreen
@ 2024-08-21 2:02 Dmitry Torokhov
2024-09-26 12:30 ` John Paul Adrian Glaubitz
0 siblings, 1 reply; 2+ messages in thread
From: Dmitry Torokhov @ 2024-08-21 2:02 UTC (permalink / raw)
To: Yoshinori Sato, Rich Felker, John Paul Adrian Glaubitz
Cc: linux-sh, linux-kernel, linux-input
Convert the board to use static device properties instead of platform
data to describe the touchscreen, so that support for platform data can
be removed from tsc2007 driver (ecovec24 is the last board using this
mechanism of describing tsc2007).
Device properties do not allow custom board methods, so the method for
getting "pen down" state was removed (the driver is capable of working
without it). If this functionality is needed proper pin control/gpio
support needs to be implemented so that the same pin can serve as an
input GPIO and an interrupt.
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
arch/sh/boards/mach-ecovec24/setup.c | 38 ++++++++--------------------
1 file changed, 11 insertions(+), 27 deletions(-)
diff --git a/arch/sh/boards/mach-ecovec24/setup.c b/arch/sh/boards/mach-ecovec24/setup.c
index 6f13557eecd6..4833bec0c3c5 100644
--- a/arch/sh/boards/mach-ecovec24/setup.c
+++ b/arch/sh/boards/mach-ecovec24/setup.c
@@ -26,6 +26,7 @@
#include <linux/platform_data/tmio.h>
#include <linux/platform_data/tsc2007.h>
#include <linux/platform_device.h>
+#include <linux/property.h>
#include <linux/regulator/fixed.h>
#include <linux/regulator/machine.h>
#include <linux/sh_eth.h>
@@ -589,39 +590,21 @@ static struct platform_device keysc_device = {
/* TouchScreen */
#define IRQ0 evt2irq(0x600)
-static int ts_get_pendown_state(struct device *dev)
-{
- int val = 0;
- gpio_free(GPIO_FN_INTC_IRQ0);
- gpio_request(GPIO_PTZ0, NULL);
- gpio_direction_input(GPIO_PTZ0);
-
- val = gpio_get_value(GPIO_PTZ0);
-
- gpio_free(GPIO_PTZ0);
- gpio_request(GPIO_FN_INTC_IRQ0, NULL);
-
- return val ? 0 : 1;
-}
-
-static int ts_init(void)
-{
- gpio_request(GPIO_FN_INTC_IRQ0, NULL);
- return 0;
-}
+static const struct property_entry tsc2007_properties[] = {
+ PROPERTY_ENTRY_U32("ti,x-plate-ohms", 180),
+ { }
+};
-static struct tsc2007_platform_data tsc2007_info = {
- .model = 2007,
- .x_plate_ohms = 180,
- .get_pendown_state = ts_get_pendown_state,
- .init_platform_hw = ts_init,
+static const struct software_node tsc2007_swnode = {
+ .name = "tsc2007",
+ .properties = tsc2007_properties,
};
static struct i2c_board_info ts_i2c_clients = {
I2C_BOARD_INFO("tsc2007", 0x48),
.type = "tsc2007",
- .platform_data = &tsc2007_info,
.irq = IRQ0,
+ .swnode = &tsc2007_swnode,
};
static struct regulator_consumer_supply cn12_power_consumers[] =
@@ -1241,8 +1224,9 @@ static int __init arch_setup(void)
gpio_direction_output(GPIO_PTF4, 1);
/* enable TouchScreen */
- i2c_register_board_info(0, &ts_i2c_clients, 1);
+ gpio_request(GPIO_FN_INTC_IRQ0, NULL);
irq_set_irq_type(IRQ0, IRQ_TYPE_LEVEL_LOW);
+ i2c_register_board_info(0, &ts_i2c_clients, 1);
}
/* enable CEU0 */
--
2.46.0.184.g6999bdac58-goog
--
Dmitry
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] sh: ecovec24: use static device properties to describe the touchscreen
2024-08-21 2:02 [PATCH] sh: ecovec24: use static device properties to describe the touchscreen Dmitry Torokhov
@ 2024-09-26 12:30 ` John Paul Adrian Glaubitz
0 siblings, 0 replies; 2+ messages in thread
From: John Paul Adrian Glaubitz @ 2024-09-26 12:30 UTC (permalink / raw)
To: Dmitry Torokhov, Yoshinori Sato, Rich Felker
Cc: linux-sh, linux-kernel, linux-input
Hi Dmitry,
On Tue, 2024-08-20 at 19:02 -0700, Dmitry Torokhov wrote:
> Convert the board to use static device properties instead of platform
> data to describe the touchscreen, so that support for platform data can
> be removed from tsc2007 driver (ecovec24 is the last board using this
> mechanism of describing tsc2007).
>
> Device properties do not allow custom board methods, so the method for
> getting "pen down" state was removed (the driver is capable of working
> without it). If this functionality is needed proper pin control/gpio
> support needs to be implemented so that the same pin can serve as an
> input GPIO and an interrupt.
>
> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> ---
> arch/sh/boards/mach-ecovec24/setup.c | 38 ++++++++--------------------
> 1 file changed, 11 insertions(+), 27 deletions(-)
>
> diff --git a/arch/sh/boards/mach-ecovec24/setup.c b/arch/sh/boards/mach-ecovec24/setup.c
> index 6f13557eecd6..4833bec0c3c5 100644
> --- a/arch/sh/boards/mach-ecovec24/setup.c
> +++ b/arch/sh/boards/mach-ecovec24/setup.c
> @@ -26,6 +26,7 @@
> #include <linux/platform_data/tmio.h>
> #include <linux/platform_data/tsc2007.h>
> #include <linux/platform_device.h>
> +#include <linux/property.h>
> #include <linux/regulator/fixed.h>
> #include <linux/regulator/machine.h>
> #include <linux/sh_eth.h>
> @@ -589,39 +590,21 @@ static struct platform_device keysc_device = {
> /* TouchScreen */
> #define IRQ0 evt2irq(0x600)
>
> -static int ts_get_pendown_state(struct device *dev)
> -{
> - int val = 0;
> - gpio_free(GPIO_FN_INTC_IRQ0);
> - gpio_request(GPIO_PTZ0, NULL);
> - gpio_direction_input(GPIO_PTZ0);
> -
> - val = gpio_get_value(GPIO_PTZ0);
> -
> - gpio_free(GPIO_PTZ0);
> - gpio_request(GPIO_FN_INTC_IRQ0, NULL);
> -
> - return val ? 0 : 1;
> -}
> -
> -static int ts_init(void)
> -{
> - gpio_request(GPIO_FN_INTC_IRQ0, NULL);
> - return 0;
> -}
> +static const struct property_entry tsc2007_properties[] = {
> + PROPERTY_ENTRY_U32("ti,x-plate-ohms", 180),
> + { }
> +};
>
> -static struct tsc2007_platform_data tsc2007_info = {
> - .model = 2007,
> - .x_plate_ohms = 180,
> - .get_pendown_state = ts_get_pendown_state,
> - .init_platform_hw = ts_init,
> +static const struct software_node tsc2007_swnode = {
> + .name = "tsc2007",
> + .properties = tsc2007_properties,
> };
>
> static struct i2c_board_info ts_i2c_clients = {
> I2C_BOARD_INFO("tsc2007", 0x48),
> .type = "tsc2007",
> - .platform_data = &tsc2007_info,
> .irq = IRQ0,
> + .swnode = &tsc2007_swnode,
> };
>
> static struct regulator_consumer_supply cn12_power_consumers[] =
> @@ -1241,8 +1224,9 @@ static int __init arch_setup(void)
> gpio_direction_output(GPIO_PTF4, 1);
>
> /* enable TouchScreen */
> - i2c_register_board_info(0, &ts_i2c_clients, 1);
> + gpio_request(GPIO_FN_INTC_IRQ0, NULL);
> irq_set_irq_type(IRQ0, IRQ_TYPE_LEVEL_LOW);
> + i2c_register_board_info(0, &ts_i2c_clients, 1);
> }
>
> /* enable CEU0 */
> --
> 2.46.0.184.g6999bdac58-goog
Thanks for your patch!
I am not 100% sure whether removing the method for "pen down" won't have
any negative impact on the driver capabilities.
Could you elaborate on this change a little more? Sorry for being so late!
Adrian
--
.''`. John Paul Adrian Glaubitz
: :' : Debian Developer
`. `' Physicist
`- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2024-09-26 12:30 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-21 2:02 [PATCH] sh: ecovec24: use static device properties to describe the touchscreen Dmitry Torokhov
2024-09-26 12:30 ` John Paul Adrian Glaubitz
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).