* [PATCH 0/3] Add device tree support to the cyttsp driver @ 2015-12-27 16:21 ` Oreste Salerno 0 siblings, 0 replies; 12+ messages in thread From: Oreste Salerno @ 2015-12-27 16:21 UTC (permalink / raw) To: linux-kernel Cc: linux-input, fery, dmitry.torokhov, robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, oreste.salerno This set of patches adds support to the cyttsp touchscreen driver to retrieve platform data details from the device tree. Additionally, they define a default init function that performs a hard reset of the chip on boot. Oreste Salerno (3): Input: cyttsp - remove unused irq_gpio from platform_data Input: cyttsp - add device tree support Input: cyttsp - add default init function .../bindings/input/touchscreen/cyttsp.txt | 73 +++++++++++++ drivers/input/touchscreen/cyttsp_core.c | 120 +++++++++++++++++++-- include/linux/input/cyttsp.h | 4 +- 3 files changed, 189 insertions(+), 8 deletions(-) create mode 100644 Documentation/devicetree/bindings/input/touchscreen/cyttsp.txt -- 1.9.1 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 0/3] Add device tree support to the cyttsp driver @ 2015-12-27 16:21 ` Oreste Salerno 0 siblings, 0 replies; 12+ messages in thread From: Oreste Salerno @ 2015-12-27 16:21 UTC (permalink / raw) To: linux-kernel Cc: linux-input, fery, dmitry.torokhov, robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, oreste.salerno This set of patches adds support to the cyttsp touchscreen driver to retrieve platform data details from the device tree. Additionally, they define a default init function that performs a hard reset of the chip on boot. Oreste Salerno (3): Input: cyttsp - remove unused irq_gpio from platform_data Input: cyttsp - add device tree support Input: cyttsp - add default init function .../bindings/input/touchscreen/cyttsp.txt | 73 +++++++++++++ drivers/input/touchscreen/cyttsp_core.c | 120 +++++++++++++++++++-- include/linux/input/cyttsp.h | 4 +- 3 files changed, 189 insertions(+), 8 deletions(-) create mode 100644 Documentation/devicetree/bindings/input/touchscreen/cyttsp.txt -- 1.9.1 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 1/3] Input: cyttsp - remove unused irq_gpio from platform_data 2015-12-27 16:21 ` Oreste Salerno @ 2015-12-27 16:21 ` Oreste Salerno -1 siblings, 0 replies; 12+ messages in thread From: Oreste Salerno @ 2015-12-27 16:21 UTC (permalink / raw) To: linux-kernel Cc: linux-input, fery, dmitry.torokhov, robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, oreste.salerno This field is not being used and the irq is anyway passed via the 'irq' parameter to cyttsp_probe. Signed-off-by: Oreste Salerno <oreste.salerno@tomtom.com> --- include/linux/input/cyttsp.h | 1 - 1 file changed, 1 deletion(-) diff --git a/include/linux/input/cyttsp.h b/include/linux/input/cyttsp.h index 5af7c66..d7c2520 100644 --- a/include/linux/input/cyttsp.h +++ b/include/linux/input/cyttsp.h @@ -51,7 +51,6 @@ struct cyttsp_platform_data { int (*init)(void); void (*exit)(void); char *name; - s16 irq_gpio; u8 *bl_keys; }; -- 1.9.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 1/3] Input: cyttsp - remove unused irq_gpio from platform_data @ 2015-12-27 16:21 ` Oreste Salerno 0 siblings, 0 replies; 12+ messages in thread From: Oreste Salerno @ 2015-12-27 16:21 UTC (permalink / raw) To: linux-kernel Cc: linux-input, fery, dmitry.torokhov, robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, oreste.salerno This field is not being used and the irq is anyway passed via the 'irq' parameter to cyttsp_probe. Signed-off-by: Oreste Salerno <oreste.salerno@tomtom.com> --- include/linux/input/cyttsp.h | 1 - 1 file changed, 1 deletion(-) diff --git a/include/linux/input/cyttsp.h b/include/linux/input/cyttsp.h index 5af7c66..d7c2520 100644 --- a/include/linux/input/cyttsp.h +++ b/include/linux/input/cyttsp.h @@ -51,7 +51,6 @@ struct cyttsp_platform_data { int (*init)(void); void (*exit)(void); char *name; - s16 irq_gpio; u8 *bl_keys; }; -- 1.9.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 2/3] Input: cyttsp - add device tree support 2015-12-27 16:21 ` Oreste Salerno @ 2015-12-27 16:21 ` Oreste Salerno -1 siblings, 0 replies; 12+ messages in thread From: Oreste Salerno @ 2015-12-27 16:21 UTC (permalink / raw) To: linux-kernel Cc: linux-input, fery, dmitry.torokhov, robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, oreste.salerno Add support for retrieving the platform data from the device tree. Signed-off-by: Oreste Salerno <oreste.salerno@tomtom.com> --- .../bindings/input/touchscreen/cyttsp.txt | 73 ++++++++++++++ drivers/input/touchscreen/cyttsp_core.c | 108 +++++++++++++++++++-- include/linux/input/cyttsp.h | 3 + 3 files changed, 177 insertions(+), 7 deletions(-) create mode 100644 Documentation/devicetree/bindings/input/touchscreen/cyttsp.txt diff --git a/Documentation/devicetree/bindings/input/touchscreen/cyttsp.txt b/Documentation/devicetree/bindings/input/touchscreen/cyttsp.txt new file mode 100644 index 0000000..8e0bcc73 --- /dev/null +++ b/Documentation/devicetree/bindings/input/touchscreen/cyttsp.txt @@ -0,0 +1,73 @@ +* Cypress cyttsp touchscreen controller + +Required properties: +- compatible : must be "cypress,cyttsp-i2c" or "cypress,cyttsp-spi" +- reg : Device address +- spi-max-frequency : Maximum SPI clocking speed of the device (for cyttsp-spi) +- interrupt-parent : the phandle for the gpio controller + (see interrupt binding[0]). +- interrupts : (gpio) interrupt to which the chip is connected + (see interrupt binding[0]). +- reset-gpios : the reset gpio the chip is connected to + (see GPIO binding[1] for more details). +- maxx : horizontal resolution of touchscreen (in pixels) +- maxy : vertical resolution of touchscreen (in pixels) +- bootloader-key : the bootloader key used to exit bootloader mode + +Optional properties: +- use_hndshk : enable handshake bit +- act_dist : active distance +- act_intrvl : active refresh interval in ms +- tch_tmout : active touch timeout in ms +- lp_intrvl : low power refresh interval in ms + +[0]: Documentation/devicetree/bindings/interrupt-controller/interrupts.txt +[1]: Documentation/devicetree/bindings/gpio/gpio.txt + +Example: + &i2c1 { + /* ... */ + cyttsp@a { + compatible = "cypress,cyttsp-i2c"; + reg = <0xa>; + interrupt-parent = <&msm_gpio>; + interrupts = <13 0x2008>; + reset-gpios = <&msm_gpio 12 0x00>; + + maxx = <800>; + maxy = <480>; + bootloader-key = /bits/ 8 <0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08>; + + use_hndshk; + act_dist = /bits/ 8 <0xF8>; + act_intrvl = /bits/ 8 <0x00>; + tch_tmout = /bits/ 8 <0xFF>; + lp_intrvl = /bits/ 8 <0x0A>; + }; + + /* ... */ + }; + + &mcspi1 { + /* ... */ + cyttsp@0 { + compatible = "cypress,cyttsp-spi"; + spi-max-frequency = <6000000>; + reg = <0>; + interrupt-parent = <&msm_gpio>; + interrupts = <13 0x2008>; + reset-gpios = <&msm_gpio 12 0x00>; + + maxx = <800>; + maxy = <480>; + bootloader-key = /bits/ 8 <0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08>; + + use_hndshk; + act_dist = /bits/ 8 <0xF8>; + act_intrvl = /bits/ 8 <0x00>; + tch_tmout = /bits/ 8 <0xFF>; + lp_intrvl = /bits/ 8 <0x0A>; + }; + + /* ... */ + }; diff --git a/drivers/input/touchscreen/cyttsp_core.c b/drivers/input/touchscreen/cyttsp_core.c index 5b74e8b..54f6e51 100644 --- a/drivers/input/touchscreen/cyttsp_core.c +++ b/drivers/input/touchscreen/cyttsp_core.c @@ -33,6 +33,8 @@ #include <linux/gpio.h> #include <linux/interrupt.h> #include <linux/slab.h> +#include <linux/of.h> +#include <linux/gpio/consumer.h> #include "cyttsp_core.h" @@ -528,18 +530,111 @@ static void cyttsp_close(struct input_dev *dev) cyttsp_disable(ts); } +#ifdef CONFIG_OF +static const struct cyttsp_platform_data *cyttsp_parse_dt(struct device *dev) +{ + struct device_node *np = dev->of_node; + struct cyttsp_platform_data *pdata; + u8 dt_value; + int ret; + static const char err_msg[] = + "property not provided in the device tree"; + + if (!np) + return ERR_PTR(-ENOENT); + + pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL); + if (!pdata) + return ERR_PTR(-ENOMEM); + + pdata->bl_keys = devm_kzalloc(dev, CY_NUM_BL_KEYS, GFP_KERNEL); + if (!pdata->bl_keys) + return ERR_PTR(-ENOMEM); + + /* Set some default values */ + pdata->act_dist = CY_ACT_DIST_DFLT; + pdata->act_intrvl = CY_ACT_INTRVL_DFLT; + pdata->tch_tmout = CY_TCH_TMOUT_DFLT; + pdata->lp_intrvl = CY_LP_INTRVL_DFLT; + pdata->name = "cyttsp"; + + ret = of_property_read_u32(np, "maxx", &pdata->maxx); + if (ret) { + dev_err(dev, "maxx %s\n", err_msg); + return ERR_PTR(ret); + } + + ret = of_property_read_u32(np, "maxy", &pdata->maxy); + if (ret) { + dev_err(dev, "maxy %s\n", err_msg); + return ERR_PTR(ret); + } + + pdata->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW); + if (IS_ERR(pdata->reset_gpio)) { + ret = PTR_ERR(pdata->reset_gpio); + dev_err(dev, "error acquiring reset gpio: %d\n", ret); + return ERR_PTR(ret); + } + + ret = of_property_read_u8_array(np, "bootloader-key", + pdata->bl_keys, CY_NUM_BL_KEYS); + if (ret) { + dev_err(dev, "bootloader-key %s\n", err_msg); + return ERR_PTR(ret); + } + + pdata->use_hndshk = of_property_read_bool(np, "use_hndshk"); + + if (!of_property_read_u8(np, "act_dist", &dt_value)) + pdata->act_dist = dt_value; + + if (!of_property_read_u8(np, "act_intrvl", &dt_value)) + pdata->act_intrvl = dt_value; + + if (!of_property_read_u8(np, "tch_tmout", &dt_value)) + pdata->tch_tmout = dt_value; + + if (!of_property_read_u8(np, "lp_intrvl", &dt_value)) + pdata->lp_intrvl = dt_value; + + return pdata; +} +#else +static const struct cyttsp_platform_data *cyttsp_parse_dt(struct device *dev) +{ + return ERR_PTR(-ENOENT); +} +#endif + +static const struct cyttsp_platform_data * +cyttsp_get_platform_data(struct device *dev) +{ + const struct cyttsp_platform_data *pdata; + + pdata = dev_get_platdata(dev); + if (pdata) + return pdata; + + pdata = cyttsp_parse_dt(dev); + if (!IS_ERR(pdata) || PTR_ERR(pdata) != -ENOENT) + return pdata; + + dev_err(dev, "No platform data specified\n"); + return ERR_PTR(-EINVAL); +} + struct cyttsp *cyttsp_probe(const struct cyttsp_bus_ops *bus_ops, struct device *dev, int irq, size_t xfer_buf_size) { - const struct cyttsp_platform_data *pdata = dev_get_platdata(dev); + const struct cyttsp_platform_data *pdata; struct cyttsp *ts; struct input_dev *input_dev; int error; - if (!pdata || !pdata->name || irq <= 0) { - error = -EINVAL; - goto err_out; - } + pdata = cyttsp_get_platform_data(dev); + if (IS_ERR(pdata)) + return ERR_PTR(PTR_ERR(pdata)); ts = kzalloc(sizeof(*ts) + xfer_buf_size, GFP_KERNEL); input_dev = input_allocate_device(); @@ -550,7 +645,7 @@ struct cyttsp *cyttsp_probe(const struct cyttsp_bus_ops *bus_ops, ts->dev = dev; ts->input = input_dev; - ts->pdata = dev_get_platdata(dev); + ts->pdata = pdata; ts->bus_ops = bus_ops; ts->irq = irq; @@ -618,7 +713,6 @@ err_platform_exit: err_free_mem: input_free_device(input_dev); kfree(ts); -err_out: return ERR_PTR(error); } EXPORT_SYMBOL_GPL(cyttsp_probe); diff --git a/include/linux/input/cyttsp.h b/include/linux/input/cyttsp.h index d7c2520..92a9d52 100644 --- a/include/linux/input/cyttsp.h +++ b/include/linux/input/cyttsp.h @@ -29,6 +29,8 @@ #ifndef _CYTTSP_H_ #define _CYTTSP_H_ +#include <linux/gpio/consumer.h> + #define CY_SPI_NAME "cyttsp-spi" #define CY_I2C_NAME "cyttsp-i2c" /* Active Power state scanning/processing refresh interval */ @@ -51,6 +53,7 @@ struct cyttsp_platform_data { int (*init)(void); void (*exit)(void); char *name; + struct gpio_desc *reset_gpio; u8 *bl_keys; }; -- 1.9.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 2/3] Input: cyttsp - add device tree support @ 2015-12-27 16:21 ` Oreste Salerno 0 siblings, 0 replies; 12+ messages in thread From: Oreste Salerno @ 2015-12-27 16:21 UTC (permalink / raw) To: linux-kernel Cc: linux-input, fery, dmitry.torokhov, robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, oreste.salerno Add support for retrieving the platform data from the device tree. Signed-off-by: Oreste Salerno <oreste.salerno@tomtom.com> --- .../bindings/input/touchscreen/cyttsp.txt | 73 ++++++++++++++ drivers/input/touchscreen/cyttsp_core.c | 108 +++++++++++++++++++-- include/linux/input/cyttsp.h | 3 + 3 files changed, 177 insertions(+), 7 deletions(-) create mode 100644 Documentation/devicetree/bindings/input/touchscreen/cyttsp.txt diff --git a/Documentation/devicetree/bindings/input/touchscreen/cyttsp.txt b/Documentation/devicetree/bindings/input/touchscreen/cyttsp.txt new file mode 100644 index 0000000..8e0bcc73 --- /dev/null +++ b/Documentation/devicetree/bindings/input/touchscreen/cyttsp.txt @@ -0,0 +1,73 @@ +* Cypress cyttsp touchscreen controller + +Required properties: +- compatible : must be "cypress,cyttsp-i2c" or "cypress,cyttsp-spi" +- reg : Device address +- spi-max-frequency : Maximum SPI clocking speed of the device (for cyttsp-spi) +- interrupt-parent : the phandle for the gpio controller + (see interrupt binding[0]). +- interrupts : (gpio) interrupt to which the chip is connected + (see interrupt binding[0]). +- reset-gpios : the reset gpio the chip is connected to + (see GPIO binding[1] for more details). +- maxx : horizontal resolution of touchscreen (in pixels) +- maxy : vertical resolution of touchscreen (in pixels) +- bootloader-key : the bootloader key used to exit bootloader mode + +Optional properties: +- use_hndshk : enable handshake bit +- act_dist : active distance +- act_intrvl : active refresh interval in ms +- tch_tmout : active touch timeout in ms +- lp_intrvl : low power refresh interval in ms + +[0]: Documentation/devicetree/bindings/interrupt-controller/interrupts.txt +[1]: Documentation/devicetree/bindings/gpio/gpio.txt + +Example: + &i2c1 { + /* ... */ + cyttsp@a { + compatible = "cypress,cyttsp-i2c"; + reg = <0xa>; + interrupt-parent = <&msm_gpio>; + interrupts = <13 0x2008>; + reset-gpios = <&msm_gpio 12 0x00>; + + maxx = <800>; + maxy = <480>; + bootloader-key = /bits/ 8 <0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08>; + + use_hndshk; + act_dist = /bits/ 8 <0xF8>; + act_intrvl = /bits/ 8 <0x00>; + tch_tmout = /bits/ 8 <0xFF>; + lp_intrvl = /bits/ 8 <0x0A>; + }; + + /* ... */ + }; + + &mcspi1 { + /* ... */ + cyttsp@0 { + compatible = "cypress,cyttsp-spi"; + spi-max-frequency = <6000000>; + reg = <0>; + interrupt-parent = <&msm_gpio>; + interrupts = <13 0x2008>; + reset-gpios = <&msm_gpio 12 0x00>; + + maxx = <800>; + maxy = <480>; + bootloader-key = /bits/ 8 <0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08>; + + use_hndshk; + act_dist = /bits/ 8 <0xF8>; + act_intrvl = /bits/ 8 <0x00>; + tch_tmout = /bits/ 8 <0xFF>; + lp_intrvl = /bits/ 8 <0x0A>; + }; + + /* ... */ + }; diff --git a/drivers/input/touchscreen/cyttsp_core.c b/drivers/input/touchscreen/cyttsp_core.c index 5b74e8b..54f6e51 100644 --- a/drivers/input/touchscreen/cyttsp_core.c +++ b/drivers/input/touchscreen/cyttsp_core.c @@ -33,6 +33,8 @@ #include <linux/gpio.h> #include <linux/interrupt.h> #include <linux/slab.h> +#include <linux/of.h> +#include <linux/gpio/consumer.h> #include "cyttsp_core.h" @@ -528,18 +530,111 @@ static void cyttsp_close(struct input_dev *dev) cyttsp_disable(ts); } +#ifdef CONFIG_OF +static const struct cyttsp_platform_data *cyttsp_parse_dt(struct device *dev) +{ + struct device_node *np = dev->of_node; + struct cyttsp_platform_data *pdata; + u8 dt_value; + int ret; + static const char err_msg[] = + "property not provided in the device tree"; + + if (!np) + return ERR_PTR(-ENOENT); + + pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL); + if (!pdata) + return ERR_PTR(-ENOMEM); + + pdata->bl_keys = devm_kzalloc(dev, CY_NUM_BL_KEYS, GFP_KERNEL); + if (!pdata->bl_keys) + return ERR_PTR(-ENOMEM); + + /* Set some default values */ + pdata->act_dist = CY_ACT_DIST_DFLT; + pdata->act_intrvl = CY_ACT_INTRVL_DFLT; + pdata->tch_tmout = CY_TCH_TMOUT_DFLT; + pdata->lp_intrvl = CY_LP_INTRVL_DFLT; + pdata->name = "cyttsp"; + + ret = of_property_read_u32(np, "maxx", &pdata->maxx); + if (ret) { + dev_err(dev, "maxx %s\n", err_msg); + return ERR_PTR(ret); + } + + ret = of_property_read_u32(np, "maxy", &pdata->maxy); + if (ret) { + dev_err(dev, "maxy %s\n", err_msg); + return ERR_PTR(ret); + } + + pdata->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW); + if (IS_ERR(pdata->reset_gpio)) { + ret = PTR_ERR(pdata->reset_gpio); + dev_err(dev, "error acquiring reset gpio: %d\n", ret); + return ERR_PTR(ret); + } + + ret = of_property_read_u8_array(np, "bootloader-key", + pdata->bl_keys, CY_NUM_BL_KEYS); + if (ret) { + dev_err(dev, "bootloader-key %s\n", err_msg); + return ERR_PTR(ret); + } + + pdata->use_hndshk = of_property_read_bool(np, "use_hndshk"); + + if (!of_property_read_u8(np, "act_dist", &dt_value)) + pdata->act_dist = dt_value; + + if (!of_property_read_u8(np, "act_intrvl", &dt_value)) + pdata->act_intrvl = dt_value; + + if (!of_property_read_u8(np, "tch_tmout", &dt_value)) + pdata->tch_tmout = dt_value; + + if (!of_property_read_u8(np, "lp_intrvl", &dt_value)) + pdata->lp_intrvl = dt_value; + + return pdata; +} +#else +static const struct cyttsp_platform_data *cyttsp_parse_dt(struct device *dev) +{ + return ERR_PTR(-ENOENT); +} +#endif + +static const struct cyttsp_platform_data * +cyttsp_get_platform_data(struct device *dev) +{ + const struct cyttsp_platform_data *pdata; + + pdata = dev_get_platdata(dev); + if (pdata) + return pdata; + + pdata = cyttsp_parse_dt(dev); + if (!IS_ERR(pdata) || PTR_ERR(pdata) != -ENOENT) + return pdata; + + dev_err(dev, "No platform data specified\n"); + return ERR_PTR(-EINVAL); +} + struct cyttsp *cyttsp_probe(const struct cyttsp_bus_ops *bus_ops, struct device *dev, int irq, size_t xfer_buf_size) { - const struct cyttsp_platform_data *pdata = dev_get_platdata(dev); + const struct cyttsp_platform_data *pdata; struct cyttsp *ts; struct input_dev *input_dev; int error; - if (!pdata || !pdata->name || irq <= 0) { - error = -EINVAL; - goto err_out; - } + pdata = cyttsp_get_platform_data(dev); + if (IS_ERR(pdata)) + return ERR_PTR(PTR_ERR(pdata)); ts = kzalloc(sizeof(*ts) + xfer_buf_size, GFP_KERNEL); input_dev = input_allocate_device(); @@ -550,7 +645,7 @@ struct cyttsp *cyttsp_probe(const struct cyttsp_bus_ops *bus_ops, ts->dev = dev; ts->input = input_dev; - ts->pdata = dev_get_platdata(dev); + ts->pdata = pdata; ts->bus_ops = bus_ops; ts->irq = irq; @@ -618,7 +713,6 @@ err_platform_exit: err_free_mem: input_free_device(input_dev); kfree(ts); -err_out: return ERR_PTR(error); } EXPORT_SYMBOL_GPL(cyttsp_probe); diff --git a/include/linux/input/cyttsp.h b/include/linux/input/cyttsp.h index d7c2520..92a9d52 100644 --- a/include/linux/input/cyttsp.h +++ b/include/linux/input/cyttsp.h @@ -29,6 +29,8 @@ #ifndef _CYTTSP_H_ #define _CYTTSP_H_ +#include <linux/gpio/consumer.h> + #define CY_SPI_NAME "cyttsp-spi" #define CY_I2C_NAME "cyttsp-i2c" /* Active Power state scanning/processing refresh interval */ @@ -51,6 +53,7 @@ struct cyttsp_platform_data { int (*init)(void); void (*exit)(void); char *name; + struct gpio_desc *reset_gpio; u8 *bl_keys; }; -- 1.9.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH 2/3] Input: cyttsp - add device tree support 2015-12-27 16:21 ` Oreste Salerno @ 2015-12-27 17:33 ` kbuild test robot -1 siblings, 0 replies; 12+ messages in thread From: kbuild test robot @ 2015-12-27 17:33 UTC (permalink / raw) Cc: kbuild-all, linux-kernel, linux-input, fery, dmitry.torokhov, robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, oreste.salerno [if your patch is applied to the wrong git tree, please drop us a note to help improving the system] Hi Oreste, [auto build test WARNING on input/next] [also build test WARNING on v4.4-rc6 next-20151223] url: https://github.com/0day-ci/linux/commits/Oreste-Salerno/Add-device-tree-support-to-the-cyttsp-driver/20151228-002949 base: https://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git next coccinelle warnings: (new ones prefixed by >>) >> drivers/input/touchscreen/cyttsp_core.c:637:9-16: WARNING: ERR_CAST can be used with pdata Please review and possibly fold the followup patch. --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 2/3] Input: cyttsp - add device tree support @ 2015-12-27 17:33 ` kbuild test robot 0 siblings, 0 replies; 12+ messages in thread From: kbuild test robot @ 2015-12-27 17:33 UTC (permalink / raw) To: Oreste Salerno Cc: kbuild-all, linux-kernel, linux-input, fery, dmitry.torokhov, robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, oreste.salerno [if your patch is applied to the wrong git tree, please drop us a note to help improving the system] Hi Oreste, [auto build test WARNING on input/next] [also build test WARNING on v4.4-rc6 next-20151223] url: https://github.com/0day-ci/linux/commits/Oreste-Salerno/Add-device-tree-support-to-the-cyttsp-driver/20151228-002949 base: https://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git next coccinelle warnings: (new ones prefixed by >>) >> drivers/input/touchscreen/cyttsp_core.c:637:9-16: WARNING: ERR_CAST can be used with pdata Please review and possibly fold the followup patch. --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH] Input: fix err_cast.cocci warnings 2015-12-27 16:21 ` Oreste Salerno @ 2015-12-27 17:33 ` kbuild test robot -1 siblings, 0 replies; 12+ messages in thread From: kbuild test robot @ 2015-12-27 17:33 UTC (permalink / raw) Cc: kbuild-all, linux-kernel, linux-input, fery, dmitry.torokhov, robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, oreste.salerno drivers/input/touchscreen/cyttsp_core.c:637:9-16: WARNING: ERR_CAST can be used with pdata Use ERR_CAST inlined function instead of ERR_PTR(PTR_ERR(...)) Generated by: scripts/coccinelle/api/err_cast.cocci CC: Oreste Salerno <oreste.salerno@tomtom.com> Signed-off-by: Fengguang Wu <fengguang.wu@intel.com> --- cyttsp_core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/drivers/input/touchscreen/cyttsp_core.c +++ b/drivers/input/touchscreen/cyttsp_core.c @@ -634,7 +634,7 @@ struct cyttsp *cyttsp_probe(const struct pdata = cyttsp_get_platform_data(dev); if (IS_ERR(pdata)) - return ERR_PTR(PTR_ERR(pdata)); + return ERR_CAST(pdata); ts = kzalloc(sizeof(*ts) + xfer_buf_size, GFP_KERNEL); input_dev = input_allocate_device(); ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH] Input: fix err_cast.cocci warnings @ 2015-12-27 17:33 ` kbuild test robot 0 siblings, 0 replies; 12+ messages in thread From: kbuild test robot @ 2015-12-27 17:33 UTC (permalink / raw) To: Oreste Salerno Cc: kbuild-all, linux-kernel, linux-input, fery, dmitry.torokhov, robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, oreste.salerno drivers/input/touchscreen/cyttsp_core.c:637:9-16: WARNING: ERR_CAST can be used with pdata Use ERR_CAST inlined function instead of ERR_PTR(PTR_ERR(...)) Generated by: scripts/coccinelle/api/err_cast.cocci CC: Oreste Salerno <oreste.salerno@tomtom.com> Signed-off-by: Fengguang Wu <fengguang.wu@intel.com> --- cyttsp_core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/drivers/input/touchscreen/cyttsp_core.c +++ b/drivers/input/touchscreen/cyttsp_core.c @@ -634,7 +634,7 @@ struct cyttsp *cyttsp_probe(const struct pdata = cyttsp_get_platform_data(dev); if (IS_ERR(pdata)) - return ERR_PTR(PTR_ERR(pdata)); + return ERR_CAST(pdata); ts = kzalloc(sizeof(*ts) + xfer_buf_size, GFP_KERNEL); input_dev = input_allocate_device(); ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 3/3] Input: cyttsp - add default init function 2015-12-27 16:21 ` Oreste Salerno @ 2015-12-27 16:21 ` Oreste Salerno -1 siblings, 0 replies; 12+ messages in thread From: Oreste Salerno @ 2015-12-27 16:21 UTC (permalink / raw) To: linux-kernel Cc: linux-input, fery, dmitry.torokhov, robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, oreste.salerno When using device trees, it's not possible to assign an init() function in the platform data. In case the init function has not been assigned, attempt to perform a hard reset of the chip, using reset gpio defined in the platform data / device tree. Signed-off-by: Oreste Salerno <oreste.salerno@tomtom.com> --- drivers/input/touchscreen/cyttsp_core.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/input/touchscreen/cyttsp_core.c b/drivers/input/touchscreen/cyttsp_core.c index 54f6e51..e2589d3 100644 --- a/drivers/input/touchscreen/cyttsp_core.c +++ b/drivers/input/touchscreen/cyttsp_core.c @@ -238,6 +238,16 @@ static int cyttsp_set_sysinfo_regs(struct cyttsp *ts) return retval; } +static void cyttsp_hard_reset(struct cyttsp *ts) +{ + if (ts->pdata->reset_gpio) { + gpiod_set_value_cansleep(ts->pdata->reset_gpio, 1); + msleep(CY_DELAY_DFLT); + gpiod_set_value_cansleep(ts->pdata->reset_gpio, 0); + msleep(CY_DELAY_DFLT); + } +} + static int cyttsp_soft_reset(struct cyttsp *ts) { unsigned long timeout; @@ -659,6 +669,8 @@ struct cyttsp *cyttsp_probe(const struct cyttsp_bus_ops *bus_ops, error); goto err_free_mem; } + } else { + cyttsp_hard_reset(ts); } input_dev->name = pdata->name; -- 1.9.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 3/3] Input: cyttsp - add default init function @ 2015-12-27 16:21 ` Oreste Salerno 0 siblings, 0 replies; 12+ messages in thread From: Oreste Salerno @ 2015-12-27 16:21 UTC (permalink / raw) To: linux-kernel Cc: linux-input, fery, dmitry.torokhov, robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, oreste.salerno When using device trees, it's not possible to assign an init() function in the platform data. In case the init function has not been assigned, attempt to perform a hard reset of the chip, using reset gpio defined in the platform data / device tree. Signed-off-by: Oreste Salerno <oreste.salerno@tomtom.com> --- drivers/input/touchscreen/cyttsp_core.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/input/touchscreen/cyttsp_core.c b/drivers/input/touchscreen/cyttsp_core.c index 54f6e51..e2589d3 100644 --- a/drivers/input/touchscreen/cyttsp_core.c +++ b/drivers/input/touchscreen/cyttsp_core.c @@ -238,6 +238,16 @@ static int cyttsp_set_sysinfo_regs(struct cyttsp *ts) return retval; } +static void cyttsp_hard_reset(struct cyttsp *ts) +{ + if (ts->pdata->reset_gpio) { + gpiod_set_value_cansleep(ts->pdata->reset_gpio, 1); + msleep(CY_DELAY_DFLT); + gpiod_set_value_cansleep(ts->pdata->reset_gpio, 0); + msleep(CY_DELAY_DFLT); + } +} + static int cyttsp_soft_reset(struct cyttsp *ts) { unsigned long timeout; @@ -659,6 +669,8 @@ struct cyttsp *cyttsp_probe(const struct cyttsp_bus_ops *bus_ops, error); goto err_free_mem; } + } else { + cyttsp_hard_reset(ts); } input_dev->name = pdata->name; -- 1.9.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
end of thread, other threads:[~2015-12-27 17:34 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-12-27 16:21 [PATCH 0/3] Add device tree support to the cyttsp driver Oreste Salerno 2015-12-27 16:21 ` Oreste Salerno 2015-12-27 16:21 ` [PATCH 1/3] Input: cyttsp - remove unused irq_gpio from platform_data Oreste Salerno 2015-12-27 16:21 ` Oreste Salerno 2015-12-27 16:21 ` [PATCH 2/3] Input: cyttsp - add device tree support Oreste Salerno 2015-12-27 16:21 ` Oreste Salerno 2015-12-27 17:33 ` kbuild test robot 2015-12-27 17:33 ` kbuild test robot 2015-12-27 17:33 ` [PATCH] Input: fix err_cast.cocci warnings kbuild test robot 2015-12-27 17:33 ` kbuild test robot 2015-12-27 16:21 ` [PATCH 3/3] Input: cyttsp - add default init function Oreste Salerno 2015-12-27 16:21 ` Oreste Salerno
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.