Input: stmpe-ts - enforce device tree only mode
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Fri, 22 May 2015 20:44:33 +0000 (13:44 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Tue, 26 May 2015 21:16:08 +0000 (14:16 -0700)
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.

Tested-by: Heiner Kallweit <hkallweit1@gmail.com>
Reviewed-by: Marek Vasut <marex@denx.de>
Acked-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/touchscreen/Kconfig
drivers/input/touchscreen/stmpe-ts.c
include/linux/mfd/stmpe.h

index 547f67d653728a09601f43ce9beb8a6471ff2145..a398d636ca39c2c303bd2e10e31ca10bd0091581 100644 (file)
@@ -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.
index e4977c6250f3dd58dde99a0d7886f897960b453e..e414d43e5159bb14c4c5f51310dc9daae0741bc6 100644 (file)
@@ -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);
index c9d86902730061b341cc0806b4349f048e550b4d..cb83883918a75578f68ef3dbb82b08a5da656e70 100644 (file)
@@ -117,47 +117,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
@@ -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