All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Input: stmpe-ts - enforce device tree only mode
@ 2015-05-22 22:58 Dmitry Torokhov
  2015-05-23 10:59 ` Heiner Kallweit
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Dmitry Torokhov @ 2015-05-22 22:58 UTC (permalink / raw)
  To: linux-input
  Cc: Samuel Ortiz, Lee Jones, Marek Vasut, Heiner Kallweit,
	Linus Walleij, linux-kernel

The STMPE MFD is only used with device tree configured systems (and STMPE
MFD core depends on OF), so force the configuration to come from device
tree only.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---

Not tested as no device, please give it a spin.

 drivers/input/touchscreen/Kconfig    |  1 +
 drivers/input/touchscreen/stmpe-ts.c | 29 ++++--------------------
 include/linux/mfd/stmpe.h            | 44 ------------------------------------
 3 files changed, 6 insertions(+), 68 deletions(-)

diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
index 80f6386..7afa6a2 100644
--- a/drivers/input/touchscreen/Kconfig
+++ b/drivers/input/touchscreen/Kconfig
@@ -958,6 +958,7 @@ config TOUCHSCREEN_ST1232
 config TOUCHSCREEN_STMPE
 	tristate "STMicroelectronics STMPE touchscreens"
 	depends on MFD_STMPE
+	depends on (OF || COMPILE_TEST)
 	help
 	  Say Y here if you want support for STMicroelectronics
 	  STMPE touchscreen controllers.
diff --git a/drivers/input/touchscreen/stmpe-ts.c b/drivers/input/touchscreen/stmpe-ts.c
index e4977c6..e414d43 100644
--- a/drivers/input/touchscreen/stmpe-ts.c
+++ b/drivers/input/touchscreen/stmpe-ts.c
@@ -267,27 +267,10 @@ static void stmpe_ts_close(struct input_dev *dev)
 static void stmpe_ts_get_platform_info(struct platform_device *pdev,
 					struct stmpe_touch *ts)
 {
-	struct stmpe *stmpe = dev_get_drvdata(pdev->dev.parent);
 	struct device_node *np = pdev->dev.of_node;
-	struct stmpe_ts_platform_data *ts_pdata = NULL;
-
-	ts->stmpe = stmpe;
-
-	if (stmpe->pdata && stmpe->pdata->ts) {
-		ts_pdata = stmpe->pdata->ts;
-
-		ts->sample_time = ts_pdata->sample_time;
-		ts->mod_12b = ts_pdata->mod_12b;
-		ts->ref_sel = ts_pdata->ref_sel;
-		ts->adc_freq = ts_pdata->adc_freq;
-		ts->ave_ctrl = ts_pdata->ave_ctrl;
-		ts->touch_det_delay = ts_pdata->touch_det_delay;
-		ts->settling = ts_pdata->settling;
-		ts->fraction_z = ts_pdata->fraction_z;
-		ts->i_drive = ts_pdata->i_drive;
-	} else if (np) {
-		u32 val;
+	u32 val;
 
+	if (np) {
 		if (!of_property_read_u32(np, "st,sample-time", &val))
 			ts->sample_time = val;
 		if (!of_property_read_u32(np, "st,mod-12b", &val))
@@ -311,6 +294,7 @@ static void stmpe_ts_get_platform_info(struct platform_device *pdev,
 
 static int stmpe_input_probe(struct platform_device *pdev)
 {
+	struct stmpe *stmpe = dev_get_drvdata(pdev->dev.parent);
 	struct stmpe_touch *ts;
 	struct input_dev *idev;
 	int error;
@@ -329,6 +313,7 @@ static int stmpe_input_probe(struct platform_device *pdev)
 		return -ENOMEM;
 
 	platform_set_drvdata(pdev, ts);
+	ts->stmpe = stmpe;
 	ts->idev = idev;
 	ts->dev = &pdev->dev;
 
@@ -351,14 +336,13 @@ static int stmpe_input_probe(struct platform_device *pdev)
 	idev->name = STMPE_TS_NAME;
 	idev->phys = STMPE_TS_NAME"/input0";
 	idev->id.bustype = BUS_I2C;
-	idev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);
-	idev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
 
 	idev->open = stmpe_ts_open;
 	idev->close = stmpe_ts_close;
 
 	input_set_drvdata(idev, ts);
 
+	input_set_capability(idev, EV_KEY, BTN_TOUCH);
 	input_set_abs_params(idev, ABS_X, 0, XY_MASK, 0, 0);
 	input_set_abs_params(idev, ABS_Y, 0, XY_MASK, 0, 0);
 	input_set_abs_params(idev, ABS_PRESSURE, 0x0, 0xff, 0, 0);
@@ -390,15 +374,12 @@ static struct platform_driver stmpe_ts_driver = {
 };
 module_platform_driver(stmpe_ts_driver);
 
-#ifdef CONFIG_OF
 static const struct of_device_id stmpe_ts_ids[] = {
 	{ .compatible = "st,stmpe-ts", },
 	{ },
 };
 MODULE_DEVICE_TABLE(of, stmpe_ts_ids);
-#endif
 
 MODULE_AUTHOR("Luotao Fu <l.fu@pengutronix.de>");
 MODULE_DESCRIPTION("STMPEXXX touchscreen driver");
 MODULE_LICENSE("GPL");
-MODULE_ALIAS("platform:" STMPE_TS_NAME);
diff --git a/include/linux/mfd/stmpe.h b/include/linux/mfd/stmpe.h
index c9d8690..cb83883 100644
--- a/include/linux/mfd/stmpe.h
+++ b/include/linux/mfd/stmpe.h
@@ -118,47 +118,6 @@ extern int stmpe_disable(struct stmpe *stmpe, unsigned int blocks);
 #define STMPE_GPIO_NOREQ_811_TOUCH	(0xf0)
 
 /**
- * struct stmpe_ts_platform_data - stmpe811 touch screen controller platform
- * data
- * @sample_time: ADC converstion time in number of clock.
- * (0 -> 36 clocks, 1 -> 44 clocks, 2 -> 56 clocks, 3 -> 64 clocks,
- * 4 -> 80 clocks, 5 -> 96 clocks, 6 -> 144 clocks),
- * recommended is 4.
- * @mod_12b: ADC Bit mode (0 -> 10bit ADC, 1 -> 12bit ADC)
- * @ref_sel: ADC reference source
- * (0 -> internal reference, 1 -> external reference)
- * @adc_freq: ADC Clock speed
- * (0 -> 1.625 MHz, 1 -> 3.25 MHz, 2 || 3 -> 6.5 MHz)
- * @ave_ctrl: Sample average control
- * (0 -> 1 sample, 1 -> 2 samples, 2 -> 4 samples, 3 -> 8 samples)
- * @touch_det_delay: Touch detect interrupt delay
- * (0 -> 10 us, 1 -> 50 us, 2 -> 100 us, 3 -> 500 us,
- * 4-> 1 ms, 5 -> 5 ms, 6 -> 10 ms, 7 -> 50 ms)
- * recommended is 3
- * @settling: Panel driver settling time
- * (0 -> 10 us, 1 -> 100 us, 2 -> 500 us, 3 -> 1 ms,
- * 4 -> 5 ms, 5 -> 10 ms, 6 for 50 ms, 7 -> 100 ms)
- * recommended is 2
- * @fraction_z: Length of the fractional part in z
- * (fraction_z ([0..7]) = Count of the fractional part)
- * recommended is 7
- * @i_drive: current limit value of the touchscreen drivers
- * (0 -> 20 mA typical 35 mA max, 1 -> 50 mA typical 80 mA max)
- *
- * */
-struct stmpe_ts_platform_data {
-       u8 sample_time;
-       u8 mod_12b;
-       u8 ref_sel;
-       u8 adc_freq;
-       u8 ave_ctrl;
-       u8 touch_det_delay;
-       u8 settling;
-       u8 fraction_z;
-       u8 i_drive;
-};
-
-/**
  * struct stmpe_platform_data - STMPE platform data
  * @id: device id to distinguish between multiple STMPEs on the same board
  * @blocks: bitmask of blocks to enable (use STMPE_BLOCK_*)
@@ -168,7 +127,6 @@ struct stmpe_ts_platform_data {
  * @irq_over_gpio: true if gpio is used to get irq
  * @irq_gpio: gpio number over which irq will be requested (significant only if
  *	      irq_over_gpio is true)
- * @ts: touchscreen-specific platform data
  */
 struct stmpe_platform_data {
 	int id;
@@ -178,8 +136,6 @@ struct stmpe_platform_data {
 	bool irq_over_gpio;
 	int irq_gpio;
 	int autosleep_timeout;
-
-	struct stmpe_ts_platform_data *ts;
 };
 
 #endif
-- 
2.2.0.rc0.207.ga3a616c


-- 
Dmitry

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH] Input: stmpe-ts - enforce device tree only mode
  2015-05-22 22:58 [PATCH] Input: stmpe-ts - enforce device tree only mode Dmitry Torokhov
@ 2015-05-23 10:59 ` Heiner Kallweit
  2015-05-23 16:38 ` Marek Vasut
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 8+ messages in thread
From: Heiner Kallweit @ 2015-05-23 10:59 UTC (permalink / raw)
  To: Dmitry Torokhov, linux-input
  Cc: Samuel Ortiz, Lee Jones, Marek Vasut, Linus Walleij, linux-kernel

Am 23.05.2015 um 00:58 schrieb Dmitry Torokhov:
> The STMPE MFD is only used with device tree configured systems (and STMPE
> MFD core depends on OF), so force the configuration to come from device
> tree only.
> 
> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> ---
> 
> Not tested as no device, please give it a spin.
Works fine here with STMPE610 on Adafruit PITFT Plus 3.5" with kernel 3.18.13.

Heiner
> 
>  drivers/input/touchscreen/Kconfig    |  1 +
>  drivers/input/touchscreen/stmpe-ts.c | 29 ++++--------------------
>  include/linux/mfd/stmpe.h            | 44 ------------------------------------
>  3 files changed, 6 insertions(+), 68 deletions(-)
> 
> diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
> index 80f6386..7afa6a2 100644
> --- a/drivers/input/touchscreen/Kconfig
> +++ b/drivers/input/touchscreen/Kconfig
> @@ -958,6 +958,7 @@ config TOUCHSCREEN_ST1232
>  config TOUCHSCREEN_STMPE
>  	tristate "STMicroelectronics STMPE touchscreens"
>  	depends on MFD_STMPE
> +	depends on (OF || COMPILE_TEST)
>  	help
>  	  Say Y here if you want support for STMicroelectronics
>  	  STMPE touchscreen controllers.
> diff --git a/drivers/input/touchscreen/stmpe-ts.c b/drivers/input/touchscreen/stmpe-ts.c
> index e4977c6..e414d43 100644
> --- a/drivers/input/touchscreen/stmpe-ts.c
> +++ b/drivers/input/touchscreen/stmpe-ts.c
> @@ -267,27 +267,10 @@ static void stmpe_ts_close(struct input_dev *dev)
>  static void stmpe_ts_get_platform_info(struct platform_device *pdev,
>  					struct stmpe_touch *ts)
>  {
> -	struct stmpe *stmpe = dev_get_drvdata(pdev->dev.parent);
>  	struct device_node *np = pdev->dev.of_node;
> -	struct stmpe_ts_platform_data *ts_pdata = NULL;
> -
> -	ts->stmpe = stmpe;
> -
> -	if (stmpe->pdata && stmpe->pdata->ts) {
> -		ts_pdata = stmpe->pdata->ts;
> -
> -		ts->sample_time = ts_pdata->sample_time;
> -		ts->mod_12b = ts_pdata->mod_12b;
> -		ts->ref_sel = ts_pdata->ref_sel;
> -		ts->adc_freq = ts_pdata->adc_freq;
> -		ts->ave_ctrl = ts_pdata->ave_ctrl;
> -		ts->touch_det_delay = ts_pdata->touch_det_delay;
> -		ts->settling = ts_pdata->settling;
> -		ts->fraction_z = ts_pdata->fraction_z;
> -		ts->i_drive = ts_pdata->i_drive;
> -	} else if (np) {
> -		u32 val;
> +	u32 val;
>  
> +	if (np) {
>  		if (!of_property_read_u32(np, "st,sample-time", &val))
>  			ts->sample_time = val;
>  		if (!of_property_read_u32(np, "st,mod-12b", &val))
> @@ -311,6 +294,7 @@ static void stmpe_ts_get_platform_info(struct platform_device *pdev,
>  
>  static int stmpe_input_probe(struct platform_device *pdev)
>  {
> +	struct stmpe *stmpe = dev_get_drvdata(pdev->dev.parent);
>  	struct stmpe_touch *ts;
>  	struct input_dev *idev;
>  	int error;
> @@ -329,6 +313,7 @@ static int stmpe_input_probe(struct platform_device *pdev)
>  		return -ENOMEM;
>  
>  	platform_set_drvdata(pdev, ts);
> +	ts->stmpe = stmpe;
>  	ts->idev = idev;
>  	ts->dev = &pdev->dev;
>  
> @@ -351,14 +336,13 @@ static int stmpe_input_probe(struct platform_device *pdev)
>  	idev->name = STMPE_TS_NAME;
>  	idev->phys = STMPE_TS_NAME"/input0";
>  	idev->id.bustype = BUS_I2C;
> -	idev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);
> -	idev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
>  
>  	idev->open = stmpe_ts_open;
>  	idev->close = stmpe_ts_close;
>  
>  	input_set_drvdata(idev, ts);
>  
> +	input_set_capability(idev, EV_KEY, BTN_TOUCH);
>  	input_set_abs_params(idev, ABS_X, 0, XY_MASK, 0, 0);
>  	input_set_abs_params(idev, ABS_Y, 0, XY_MASK, 0, 0);
>  	input_set_abs_params(idev, ABS_PRESSURE, 0x0, 0xff, 0, 0);
> @@ -390,15 +374,12 @@ static struct platform_driver stmpe_ts_driver = {
>  };
>  module_platform_driver(stmpe_ts_driver);
>  
> -#ifdef CONFIG_OF
>  static const struct of_device_id stmpe_ts_ids[] = {
>  	{ .compatible = "st,stmpe-ts", },
>  	{ },
>  };
>  MODULE_DEVICE_TABLE(of, stmpe_ts_ids);
> -#endif
>  
>  MODULE_AUTHOR("Luotao Fu <l.fu@pengutronix.de>");
>  MODULE_DESCRIPTION("STMPEXXX touchscreen driver");
>  MODULE_LICENSE("GPL");
> -MODULE_ALIAS("platform:" STMPE_TS_NAME);
> diff --git a/include/linux/mfd/stmpe.h b/include/linux/mfd/stmpe.h
> index c9d8690..cb83883 100644
> --- a/include/linux/mfd/stmpe.h
> +++ b/include/linux/mfd/stmpe.h
> @@ -118,47 +118,6 @@ extern int stmpe_disable(struct stmpe *stmpe, unsigned int blocks);
>  #define STMPE_GPIO_NOREQ_811_TOUCH	(0xf0)
>  
>  /**
> - * struct stmpe_ts_platform_data - stmpe811 touch screen controller platform
> - * data
> - * @sample_time: ADC converstion time in number of clock.
> - * (0 -> 36 clocks, 1 -> 44 clocks, 2 -> 56 clocks, 3 -> 64 clocks,
> - * 4 -> 80 clocks, 5 -> 96 clocks, 6 -> 144 clocks),
> - * recommended is 4.
> - * @mod_12b: ADC Bit mode (0 -> 10bit ADC, 1 -> 12bit ADC)
> - * @ref_sel: ADC reference source
> - * (0 -> internal reference, 1 -> external reference)
> - * @adc_freq: ADC Clock speed
> - * (0 -> 1.625 MHz, 1 -> 3.25 MHz, 2 || 3 -> 6.5 MHz)
> - * @ave_ctrl: Sample average control
> - * (0 -> 1 sample, 1 -> 2 samples, 2 -> 4 samples, 3 -> 8 samples)
> - * @touch_det_delay: Touch detect interrupt delay
> - * (0 -> 10 us, 1 -> 50 us, 2 -> 100 us, 3 -> 500 us,
> - * 4-> 1 ms, 5 -> 5 ms, 6 -> 10 ms, 7 -> 50 ms)
> - * recommended is 3
> - * @settling: Panel driver settling time
> - * (0 -> 10 us, 1 -> 100 us, 2 -> 500 us, 3 -> 1 ms,
> - * 4 -> 5 ms, 5 -> 10 ms, 6 for 50 ms, 7 -> 100 ms)
> - * recommended is 2
> - * @fraction_z: Length of the fractional part in z
> - * (fraction_z ([0..7]) = Count of the fractional part)
> - * recommended is 7
> - * @i_drive: current limit value of the touchscreen drivers
> - * (0 -> 20 mA typical 35 mA max, 1 -> 50 mA typical 80 mA max)
> - *
> - * */
> -struct stmpe_ts_platform_data {
> -       u8 sample_time;
> -       u8 mod_12b;
> -       u8 ref_sel;
> -       u8 adc_freq;
> -       u8 ave_ctrl;
> -       u8 touch_det_delay;
> -       u8 settling;
> -       u8 fraction_z;
> -       u8 i_drive;
> -};
> -
> -/**
>   * struct stmpe_platform_data - STMPE platform data
>   * @id: device id to distinguish between multiple STMPEs on the same board
>   * @blocks: bitmask of blocks to enable (use STMPE_BLOCK_*)
> @@ -168,7 +127,6 @@ struct stmpe_ts_platform_data {
>   * @irq_over_gpio: true if gpio is used to get irq
>   * @irq_gpio: gpio number over which irq will be requested (significant only if
>   *	      irq_over_gpio is true)
> - * @ts: touchscreen-specific platform data
>   */
>  struct stmpe_platform_data {
>  	int id;
> @@ -178,8 +136,6 @@ struct stmpe_platform_data {
>  	bool irq_over_gpio;
>  	int irq_gpio;
>  	int autosleep_timeout;
> -
> -	struct stmpe_ts_platform_data *ts;
>  };
>  
>  #endif
> 


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] Input: stmpe-ts - enforce device tree only mode
  2015-05-22 22:58 [PATCH] Input: stmpe-ts - enforce device tree only mode Dmitry Torokhov
  2015-05-23 10:59 ` Heiner Kallweit
@ 2015-05-23 16:38 ` Marek Vasut
  2015-05-23 16:41   ` Dmitry Torokhov
  2015-05-26  8:42   ` Lee Jones
  2015-06-01 14:48 ` Linus Walleij
  3 siblings, 1 reply; 8+ messages in thread
From: Marek Vasut @ 2015-05-23 16:38 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: linux-input, Samuel Ortiz, Lee Jones, Heiner Kallweit,
	Linus Walleij, linux-kernel

On Saturday, May 23, 2015 at 12:58:32 AM, Dmitry Torokhov wrote:
> The STMPE MFD is only used with device tree configured systems (and STMPE
> MFD core depends on OF), so force the configuration to come from device
> tree only.
> 
> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> ---

Hi!

[...]

> @@ -351,14 +336,13 @@ static int stmpe_input_probe(struct platform_device
> *pdev) idev->name = STMPE_TS_NAME;
>  	idev->phys = STMPE_TS_NAME"/input0";
>  	idev->id.bustype = BUS_I2C;
> -	idev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);
> -	idev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
> 
>  	idev->open = stmpe_ts_open;
>  	idev->close = stmpe_ts_close;
> 
>  	input_set_drvdata(idev, ts);
> 
> +	input_set_capability(idev, EV_KEY, BTN_TOUCH);

Isn't this part of the patch dropping the EV_ABS evbit ?

>  	input_set_abs_params(idev, ABS_X, 0, XY_MASK, 0, 0);
>  	input_set_abs_params(idev, ABS_Y, 0, XY_MASK, 0, 0);
>  	input_set_abs_params(idev, ABS_PRESSURE, 0x0, 0xff, 0, 0);


[...]

Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] Input: stmpe-ts - enforce device tree only mode
  2015-05-23 16:38 ` Marek Vasut
@ 2015-05-23 16:41   ` Dmitry Torokhov
  2015-05-23 21:29     ` Marek Vasut
  0 siblings, 1 reply; 8+ messages in thread
From: Dmitry Torokhov @ 2015-05-23 16:41 UTC (permalink / raw)
  To: Marek Vasut
  Cc: linux-input, Samuel Ortiz, Lee Jones, Heiner Kallweit,
	Linus Walleij, linux-kernel

On May 23, 2015 9:38:54 AM PDT, Marek Vasut <marex@denx.de> wrote:
>On Saturday, May 23, 2015 at 12:58:32 AM, Dmitry Torokhov wrote:
>> The STMPE MFD is only used with device tree configured systems (and
>STMPE
>> MFD core depends on OF), so force the configuration to come from
>device
>> tree only.
>> 
>> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
>> ---
>
>Hi!
>
>[...]
>
>> @@ -351,14 +336,13 @@ static int stmpe_input_probe(struct
>platform_device
>> *pdev) idev->name = STMPE_TS_NAME;
>>  	idev->phys = STMPE_TS_NAME"/input0";
>>  	idev->id.bustype = BUS_I2C;
>> -	idev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);
>> -	idev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
>> 
>>  	idev->open = stmpe_ts_open;
>>  	idev->close = stmpe_ts_close;
>> 
>>  	input_set_drvdata(idev, ts);
>> 
>> +	input_set_capability(idev, EV_KEY, BTN_TOUCH);
>
>Isn't this part of the patch dropping the EV_ABS evbit ?

No, on newer kernels input_set_abs_paramd() takes care of setting we EV_ABS in evbit as well.

>
>>  	input_set_abs_params(idev, ABS_X, 0, XY_MASK, 0, 0);
>>  	input_set_abs_params(idev, ABS_Y, 0, XY_MASK, 0, 0);
>>  	input_set_abs_params(idev, ABS_PRESSURE, 0x0, 0xff, 0, 0);
>
>
>[...]
>
>Best regards,
>Marek Vasut

Hi Marek,
Thanks.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] Input: stmpe-ts - enforce device tree only mode
  2015-05-23 16:41   ` Dmitry Torokhov
@ 2015-05-23 21:29     ` Marek Vasut
  0 siblings, 0 replies; 8+ messages in thread
From: Marek Vasut @ 2015-05-23 21:29 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: linux-input, Samuel Ortiz, Lee Jones, Heiner Kallweit,
	Linus Walleij, linux-kernel

On Saturday, May 23, 2015 at 06:41:50 PM, Dmitry Torokhov wrote:
> On May 23, 2015 9:38:54 AM PDT, Marek Vasut <marex@denx.de> wrote:
> >On Saturday, May 23, 2015 at 12:58:32 AM, Dmitry Torokhov wrote:
> >> The STMPE MFD is only used with device tree configured systems (and
> >
> >STMPE
> >
> >> MFD core depends on OF), so force the configuration to come from
> >
> >device
> >
> >> tree only.
> >> 
> >> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> >> ---
> >
> >Hi!
> >
> >[...]
> >
> >> @@ -351,14 +336,13 @@ static int stmpe_input_probe(struct
> >
> >platform_device
> >
> >> *pdev) idev->name = STMPE_TS_NAME;
> >> 
> >>  	idev->phys = STMPE_TS_NAME"/input0";
> >>  	idev->id.bustype = BUS_I2C;
> >> 
> >> -	idev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);
> >> -	idev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
> >> 
> >>  	idev->open = stmpe_ts_open;
> >>  	idev->close = stmpe_ts_close;
> >>  	
> >>  	input_set_drvdata(idev, ts);
> >> 
> >> +	input_set_capability(idev, EV_KEY, BTN_TOUCH);
> >
> >Isn't this part of the patch dropping the EV_ABS evbit ?
> 
> No, on newer kernels input_set_abs_paramd() takes care of setting we EV_ABS
> in evbit as well.

Oh, I see, thanks for enlightening me!

Reviewed-by: Marek Vasut <marex@denx.de>

Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] Input: stmpe-ts - enforce device tree only mode
  2015-05-22 22:58 [PATCH] Input: stmpe-ts - enforce device tree only mode Dmitry Torokhov
@ 2015-05-26  8:42   ` Lee Jones
  2015-05-23 16:38 ` Marek Vasut
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 8+ messages in thread
From: Lee Jones @ 2015-05-26  8:42 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: linux-input, Samuel Ortiz, Marek Vasut, Heiner Kallweit,
	Linus Walleij, linux-kernel

On Fri, 22 May 2015, Dmitry Torokhov wrote:

> The STMPE MFD is only used with device tree configured systems (and STMPE
> MFD core depends on OF), so force the configuration to come from device
> tree only.
> 
> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> ---
> 
> Not tested as no device, please give it a spin.
> 
>  drivers/input/touchscreen/Kconfig    |  1 +
>  drivers/input/touchscreen/stmpe-ts.c | 29 ++++--------------------
>  include/linux/mfd/stmpe.h            | 44 ------------------------------------

Less code for me to have to worry about:

For the MFD part:
  Acked-by: Lee Jones <lee.jones@linaro.org>

>  3 files changed, 6 insertions(+), 68 deletions(-)
> 
> diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
> index 80f6386..7afa6a2 100644
> --- a/drivers/input/touchscreen/Kconfig
> +++ b/drivers/input/touchscreen/Kconfig
> @@ -958,6 +958,7 @@ config TOUCHSCREEN_ST1232
>  config TOUCHSCREEN_STMPE
>  	tristate "STMicroelectronics STMPE touchscreens"
>  	depends on MFD_STMPE
> +	depends on (OF || COMPILE_TEST)
>  	help
>  	  Say Y here if you want support for STMicroelectronics
>  	  STMPE touchscreen controllers.
> diff --git a/drivers/input/touchscreen/stmpe-ts.c b/drivers/input/touchscreen/stmpe-ts.c
> index e4977c6..e414d43 100644
> --- a/drivers/input/touchscreen/stmpe-ts.c
> +++ b/drivers/input/touchscreen/stmpe-ts.c
> @@ -267,27 +267,10 @@ static void stmpe_ts_close(struct input_dev *dev)
>  static void stmpe_ts_get_platform_info(struct platform_device *pdev,
>  					struct stmpe_touch *ts)
>  {
> -	struct stmpe *stmpe = dev_get_drvdata(pdev->dev.parent);
>  	struct device_node *np = pdev->dev.of_node;
> -	struct stmpe_ts_platform_data *ts_pdata = NULL;
> -
> -	ts->stmpe = stmpe;
> -
> -	if (stmpe->pdata && stmpe->pdata->ts) {
> -		ts_pdata = stmpe->pdata->ts;
> -
> -		ts->sample_time = ts_pdata->sample_time;
> -		ts->mod_12b = ts_pdata->mod_12b;
> -		ts->ref_sel = ts_pdata->ref_sel;
> -		ts->adc_freq = ts_pdata->adc_freq;
> -		ts->ave_ctrl = ts_pdata->ave_ctrl;
> -		ts->touch_det_delay = ts_pdata->touch_det_delay;
> -		ts->settling = ts_pdata->settling;
> -		ts->fraction_z = ts_pdata->fraction_z;
> -		ts->i_drive = ts_pdata->i_drive;
> -	} else if (np) {
> -		u32 val;
> +	u32 val;
>  
> +	if (np) {
>  		if (!of_property_read_u32(np, "st,sample-time", &val))
>  			ts->sample_time = val;
>  		if (!of_property_read_u32(np, "st,mod-12b", &val))
> @@ -311,6 +294,7 @@ static void stmpe_ts_get_platform_info(struct platform_device *pdev,
>  
>  static int stmpe_input_probe(struct platform_device *pdev)
>  {
> +	struct stmpe *stmpe = dev_get_drvdata(pdev->dev.parent);
>  	struct stmpe_touch *ts;
>  	struct input_dev *idev;
>  	int error;
> @@ -329,6 +313,7 @@ static int stmpe_input_probe(struct platform_device *pdev)
>  		return -ENOMEM;
>  
>  	platform_set_drvdata(pdev, ts);
> +	ts->stmpe = stmpe;
>  	ts->idev = idev;
>  	ts->dev = &pdev->dev;
>  
> @@ -351,14 +336,13 @@ static int stmpe_input_probe(struct platform_device *pdev)
>  	idev->name = STMPE_TS_NAME;
>  	idev->phys = STMPE_TS_NAME"/input0";
>  	idev->id.bustype = BUS_I2C;
> -	idev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);
> -	idev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
>  
>  	idev->open = stmpe_ts_open;
>  	idev->close = stmpe_ts_close;
>  
>  	input_set_drvdata(idev, ts);
>  
> +	input_set_capability(idev, EV_KEY, BTN_TOUCH);
>  	input_set_abs_params(idev, ABS_X, 0, XY_MASK, 0, 0);
>  	input_set_abs_params(idev, ABS_Y, 0, XY_MASK, 0, 0);
>  	input_set_abs_params(idev, ABS_PRESSURE, 0x0, 0xff, 0, 0);
> @@ -390,15 +374,12 @@ static struct platform_driver stmpe_ts_driver = {
>  };
>  module_platform_driver(stmpe_ts_driver);
>  
> -#ifdef CONFIG_OF
>  static const struct of_device_id stmpe_ts_ids[] = {
>  	{ .compatible = "st,stmpe-ts", },
>  	{ },
>  };
>  MODULE_DEVICE_TABLE(of, stmpe_ts_ids);
> -#endif
>  
>  MODULE_AUTHOR("Luotao Fu <l.fu@pengutronix.de>");
>  MODULE_DESCRIPTION("STMPEXXX touchscreen driver");
>  MODULE_LICENSE("GPL");
> -MODULE_ALIAS("platform:" STMPE_TS_NAME);
> diff --git a/include/linux/mfd/stmpe.h b/include/linux/mfd/stmpe.h
> index c9d8690..cb83883 100644
> --- a/include/linux/mfd/stmpe.h
> +++ b/include/linux/mfd/stmpe.h
> @@ -118,47 +118,6 @@ extern int stmpe_disable(struct stmpe *stmpe, unsigned int blocks);
>  #define STMPE_GPIO_NOREQ_811_TOUCH	(0xf0)
>  
>  /**
> - * struct stmpe_ts_platform_data - stmpe811 touch screen controller platform
> - * data
> - * @sample_time: ADC converstion time in number of clock.
> - * (0 -> 36 clocks, 1 -> 44 clocks, 2 -> 56 clocks, 3 -> 64 clocks,
> - * 4 -> 80 clocks, 5 -> 96 clocks, 6 -> 144 clocks),
> - * recommended is 4.
> - * @mod_12b: ADC Bit mode (0 -> 10bit ADC, 1 -> 12bit ADC)
> - * @ref_sel: ADC reference source
> - * (0 -> internal reference, 1 -> external reference)
> - * @adc_freq: ADC Clock speed
> - * (0 -> 1.625 MHz, 1 -> 3.25 MHz, 2 || 3 -> 6.5 MHz)
> - * @ave_ctrl: Sample average control
> - * (0 -> 1 sample, 1 -> 2 samples, 2 -> 4 samples, 3 -> 8 samples)
> - * @touch_det_delay: Touch detect interrupt delay
> - * (0 -> 10 us, 1 -> 50 us, 2 -> 100 us, 3 -> 500 us,
> - * 4-> 1 ms, 5 -> 5 ms, 6 -> 10 ms, 7 -> 50 ms)
> - * recommended is 3
> - * @settling: Panel driver settling time
> - * (0 -> 10 us, 1 -> 100 us, 2 -> 500 us, 3 -> 1 ms,
> - * 4 -> 5 ms, 5 -> 10 ms, 6 for 50 ms, 7 -> 100 ms)
> - * recommended is 2
> - * @fraction_z: Length of the fractional part in z
> - * (fraction_z ([0..7]) = Count of the fractional part)
> - * recommended is 7
> - * @i_drive: current limit value of the touchscreen drivers
> - * (0 -> 20 mA typical 35 mA max, 1 -> 50 mA typical 80 mA max)
> - *
> - * */
> -struct stmpe_ts_platform_data {
> -       u8 sample_time;
> -       u8 mod_12b;
> -       u8 ref_sel;
> -       u8 adc_freq;
> -       u8 ave_ctrl;
> -       u8 touch_det_delay;
> -       u8 settling;
> -       u8 fraction_z;
> -       u8 i_drive;
> -};
> -
> -/**
>   * struct stmpe_platform_data - STMPE platform data
>   * @id: device id to distinguish between multiple STMPEs on the same board
>   * @blocks: bitmask of blocks to enable (use STMPE_BLOCK_*)
> @@ -168,7 +127,6 @@ struct stmpe_ts_platform_data {
>   * @irq_over_gpio: true if gpio is used to get irq
>   * @irq_gpio: gpio number over which irq will be requested (significant only if
>   *	      irq_over_gpio is true)
> - * @ts: touchscreen-specific platform data
>   */
>  struct stmpe_platform_data {
>  	int id;
> @@ -178,8 +136,6 @@ struct stmpe_platform_data {
>  	bool irq_over_gpio;
>  	int irq_gpio;
>  	int autosleep_timeout;
> -
> -	struct stmpe_ts_platform_data *ts;
>  };
>  
>  #endif

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] Input: stmpe-ts - enforce device tree only mode
@ 2015-05-26  8:42   ` Lee Jones
  0 siblings, 0 replies; 8+ messages in thread
From: Lee Jones @ 2015-05-26  8:42 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: linux-input, Samuel Ortiz, Marek Vasut, Heiner Kallweit,
	Linus Walleij, linux-kernel

On Fri, 22 May 2015, Dmitry Torokhov wrote:

> The STMPE MFD is only used with device tree configured systems (and STMPE
> MFD core depends on OF), so force the configuration to come from device
> tree only.
> 
> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> ---
> 
> Not tested as no device, please give it a spin.
> 
>  drivers/input/touchscreen/Kconfig    |  1 +
>  drivers/input/touchscreen/stmpe-ts.c | 29 ++++--------------------
>  include/linux/mfd/stmpe.h            | 44 ------------------------------------

Less code for me to have to worry about:

For the MFD part:
  Acked-by: Lee Jones <lee.jones@linaro.org>

>  3 files changed, 6 insertions(+), 68 deletions(-)
> 
> diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
> index 80f6386..7afa6a2 100644
> --- a/drivers/input/touchscreen/Kconfig
> +++ b/drivers/input/touchscreen/Kconfig
> @@ -958,6 +958,7 @@ config TOUCHSCREEN_ST1232
>  config TOUCHSCREEN_STMPE
>  	tristate "STMicroelectronics STMPE touchscreens"
>  	depends on MFD_STMPE
> +	depends on (OF || COMPILE_TEST)
>  	help
>  	  Say Y here if you want support for STMicroelectronics
>  	  STMPE touchscreen controllers.
> diff --git a/drivers/input/touchscreen/stmpe-ts.c b/drivers/input/touchscreen/stmpe-ts.c
> index e4977c6..e414d43 100644
> --- a/drivers/input/touchscreen/stmpe-ts.c
> +++ b/drivers/input/touchscreen/stmpe-ts.c
> @@ -267,27 +267,10 @@ static void stmpe_ts_close(struct input_dev *dev)
>  static void stmpe_ts_get_platform_info(struct platform_device *pdev,
>  					struct stmpe_touch *ts)
>  {
> -	struct stmpe *stmpe = dev_get_drvdata(pdev->dev.parent);
>  	struct device_node *np = pdev->dev.of_node;
> -	struct stmpe_ts_platform_data *ts_pdata = NULL;
> -
> -	ts->stmpe = stmpe;
> -
> -	if (stmpe->pdata && stmpe->pdata->ts) {
> -		ts_pdata = stmpe->pdata->ts;
> -
> -		ts->sample_time = ts_pdata->sample_time;
> -		ts->mod_12b = ts_pdata->mod_12b;
> -		ts->ref_sel = ts_pdata->ref_sel;
> -		ts->adc_freq = ts_pdata->adc_freq;
> -		ts->ave_ctrl = ts_pdata->ave_ctrl;
> -		ts->touch_det_delay = ts_pdata->touch_det_delay;
> -		ts->settling = ts_pdata->settling;
> -		ts->fraction_z = ts_pdata->fraction_z;
> -		ts->i_drive = ts_pdata->i_drive;
> -	} else if (np) {
> -		u32 val;
> +	u32 val;
>  
> +	if (np) {
>  		if (!of_property_read_u32(np, "st,sample-time", &val))
>  			ts->sample_time = val;
>  		if (!of_property_read_u32(np, "st,mod-12b", &val))
> @@ -311,6 +294,7 @@ static void stmpe_ts_get_platform_info(struct platform_device *pdev,
>  
>  static int stmpe_input_probe(struct platform_device *pdev)
>  {
> +	struct stmpe *stmpe = dev_get_drvdata(pdev->dev.parent);
>  	struct stmpe_touch *ts;
>  	struct input_dev *idev;
>  	int error;
> @@ -329,6 +313,7 @@ static int stmpe_input_probe(struct platform_device *pdev)
>  		return -ENOMEM;
>  
>  	platform_set_drvdata(pdev, ts);
> +	ts->stmpe = stmpe;
>  	ts->idev = idev;
>  	ts->dev = &pdev->dev;
>  
> @@ -351,14 +336,13 @@ static int stmpe_input_probe(struct platform_device *pdev)
>  	idev->name = STMPE_TS_NAME;
>  	idev->phys = STMPE_TS_NAME"/input0";
>  	idev->id.bustype = BUS_I2C;
> -	idev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);
> -	idev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
>  
>  	idev->open = stmpe_ts_open;
>  	idev->close = stmpe_ts_close;
>  
>  	input_set_drvdata(idev, ts);
>  
> +	input_set_capability(idev, EV_KEY, BTN_TOUCH);
>  	input_set_abs_params(idev, ABS_X, 0, XY_MASK, 0, 0);
>  	input_set_abs_params(idev, ABS_Y, 0, XY_MASK, 0, 0);
>  	input_set_abs_params(idev, ABS_PRESSURE, 0x0, 0xff, 0, 0);
> @@ -390,15 +374,12 @@ static struct platform_driver stmpe_ts_driver = {
>  };
>  module_platform_driver(stmpe_ts_driver);
>  
> -#ifdef CONFIG_OF
>  static const struct of_device_id stmpe_ts_ids[] = {
>  	{ .compatible = "st,stmpe-ts", },
>  	{ },
>  };
>  MODULE_DEVICE_TABLE(of, stmpe_ts_ids);
> -#endif
>  
>  MODULE_AUTHOR("Luotao Fu <l.fu@pengutronix.de>");
>  MODULE_DESCRIPTION("STMPEXXX touchscreen driver");
>  MODULE_LICENSE("GPL");
> -MODULE_ALIAS("platform:" STMPE_TS_NAME);
> diff --git a/include/linux/mfd/stmpe.h b/include/linux/mfd/stmpe.h
> index c9d8690..cb83883 100644
> --- a/include/linux/mfd/stmpe.h
> +++ b/include/linux/mfd/stmpe.h
> @@ -118,47 +118,6 @@ extern int stmpe_disable(struct stmpe *stmpe, unsigned int blocks);
>  #define STMPE_GPIO_NOREQ_811_TOUCH	(0xf0)
>  
>  /**
> - * struct stmpe_ts_platform_data - stmpe811 touch screen controller platform
> - * data
> - * @sample_time: ADC converstion time in number of clock.
> - * (0 -> 36 clocks, 1 -> 44 clocks, 2 -> 56 clocks, 3 -> 64 clocks,
> - * 4 -> 80 clocks, 5 -> 96 clocks, 6 -> 144 clocks),
> - * recommended is 4.
> - * @mod_12b: ADC Bit mode (0 -> 10bit ADC, 1 -> 12bit ADC)
> - * @ref_sel: ADC reference source
> - * (0 -> internal reference, 1 -> external reference)
> - * @adc_freq: ADC Clock speed
> - * (0 -> 1.625 MHz, 1 -> 3.25 MHz, 2 || 3 -> 6.5 MHz)
> - * @ave_ctrl: Sample average control
> - * (0 -> 1 sample, 1 -> 2 samples, 2 -> 4 samples, 3 -> 8 samples)
> - * @touch_det_delay: Touch detect interrupt delay
> - * (0 -> 10 us, 1 -> 50 us, 2 -> 100 us, 3 -> 500 us,
> - * 4-> 1 ms, 5 -> 5 ms, 6 -> 10 ms, 7 -> 50 ms)
> - * recommended is 3
> - * @settling: Panel driver settling time
> - * (0 -> 10 us, 1 -> 100 us, 2 -> 500 us, 3 -> 1 ms,
> - * 4 -> 5 ms, 5 -> 10 ms, 6 for 50 ms, 7 -> 100 ms)
> - * recommended is 2
> - * @fraction_z: Length of the fractional part in z
> - * (fraction_z ([0..7]) = Count of the fractional part)
> - * recommended is 7
> - * @i_drive: current limit value of the touchscreen drivers
> - * (0 -> 20 mA typical 35 mA max, 1 -> 50 mA typical 80 mA max)
> - *
> - * */
> -struct stmpe_ts_platform_data {
> -       u8 sample_time;
> -       u8 mod_12b;
> -       u8 ref_sel;
> -       u8 adc_freq;
> -       u8 ave_ctrl;
> -       u8 touch_det_delay;
> -       u8 settling;
> -       u8 fraction_z;
> -       u8 i_drive;
> -};
> -
> -/**
>   * struct stmpe_platform_data - STMPE platform data
>   * @id: device id to distinguish between multiple STMPEs on the same board
>   * @blocks: bitmask of blocks to enable (use STMPE_BLOCK_*)
> @@ -168,7 +127,6 @@ struct stmpe_ts_platform_data {
>   * @irq_over_gpio: true if gpio is used to get irq
>   * @irq_gpio: gpio number over which irq will be requested (significant only if
>   *	      irq_over_gpio is true)
> - * @ts: touchscreen-specific platform data
>   */
>  struct stmpe_platform_data {
>  	int id;
> @@ -178,8 +136,6 @@ struct stmpe_platform_data {
>  	bool irq_over_gpio;
>  	int irq_gpio;
>  	int autosleep_timeout;
> -
> -	struct stmpe_ts_platform_data *ts;
>  };
>  
>  #endif

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] Input: stmpe-ts - enforce device tree only mode
  2015-05-22 22:58 [PATCH] Input: stmpe-ts - enforce device tree only mode Dmitry Torokhov
                   ` (2 preceding siblings ...)
  2015-05-26  8:42   ` Lee Jones
@ 2015-06-01 14:48 ` Linus Walleij
  3 siblings, 0 replies; 8+ messages in thread
From: Linus Walleij @ 2015-06-01 14:48 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: Linux Input, Samuel Ortiz, Lee Jones, Marek Vasut,
	Heiner Kallweit, linux-kernel

On Sat, May 23, 2015 at 12:58 AM, Dmitry Torokhov
<dmitry.torokhov@gmail.com> wrote:

> The STMPE MFD is only used with device tree configured systems (and STMPE
> MFD core depends on OF), so force the configuration to come from device
> tree only.
>
> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

Acked-by: Linus Walleij <linus.walleij@linaro.org>

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2015-06-01 14:49 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-05-22 22:58 [PATCH] Input: stmpe-ts - enforce device tree only mode Dmitry Torokhov
2015-05-23 10:59 ` Heiner Kallweit
2015-05-23 16:38 ` Marek Vasut
2015-05-23 16:41   ` Dmitry Torokhov
2015-05-23 21:29     ` Marek Vasut
2015-05-26  8:42 ` Lee Jones
2015-05-26  8:42   ` Lee Jones
2015-06-01 14:48 ` Linus Walleij

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.