* [PATCH v3 0/2] Add ili9882t bindings and timing @ 2023-06-07 13:34 Cong Yang 2023-06-07 13:34 ` [PATCH v3 1/2] dt-bindings: HID: i2c-hid: ilitek: Introduce bindings for Ilitek ili9882t Cong Yang 2023-06-07 13:34 ` [PATCH v3 2/2] HID: i2c-hid: elan: Add ili9882t timing Cong Yang 0 siblings, 2 replies; 5+ messages in thread From: Cong Yang @ 2023-06-07 13:34 UTC (permalink / raw) To: robh+dt, krzysztof.kozlowski+dt, conor+dt, dmitry.torokhov, jikos, benjamin.tissoires, dianders, hsinyi Cc: linux-input, devicetree, linux-kernel, Cong Yang Add bindings for Ilitek. The ili9882t touch screen chip same as Elan eKTH6915 controller has a reset gpio. The difference is that ilitek9882 needs to use vccio-supply instead of vcc33-supply. From Dmitry suggestion, it would make more sense to distinguish the binging of ili9882 and eKTH6915. From The datasheet specifies there should be 60ms between touch SDA sleep and panel RESX. so we can add the 65 ms delay in i2c_hid_core_suspend. Changes in v3: - PATCH 1/2: Introduce bindings for Ilitek. - Link to v2: https://lore.kernel.org/all/20230605060524.1178164-1-yangcong5@huaqin.corp-partner.google.com/ Changes in v2: - PATCH 1/2: fix ran make dt_binding_check warnings/errors. - PATCH 1/2: remove oneOf,just enum. - Link to v1: https://lore.kernel.org/all/20230602140948.2138668-1-yangcong5@huaqin.corp-partner.google.com/ Cong Yang (2): dt-bindings: HID: i2c-hid: ilitek: Introduce bindings for Ilitek ili9882t HID: i2c-hid: elan: Add ili9882t timing .../bindings/input/ilitek,ili9882t.yaml | 67 +++++++++++++++++++ drivers/hid/i2c-hid/i2c-hid-of-elan.c | 20 ++++-- 2 files changed, 83 insertions(+), 4 deletions(-) create mode 100644 Documentation/devicetree/bindings/input/ilitek,ili9882t.yaml -- 2.25.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v3 1/2] dt-bindings: HID: i2c-hid: ilitek: Introduce bindings for Ilitek ili9882t 2023-06-07 13:34 [PATCH v3 0/2] Add ili9882t bindings and timing Cong Yang @ 2023-06-07 13:34 ` Cong Yang 2023-06-07 13:59 ` Krzysztof Kozlowski 2023-06-07 13:34 ` [PATCH v3 2/2] HID: i2c-hid: elan: Add ili9882t timing Cong Yang 1 sibling, 1 reply; 5+ messages in thread From: Cong Yang @ 2023-06-07 13:34 UTC (permalink / raw) To: robh+dt, krzysztof.kozlowski+dt, conor+dt, dmitry.torokhov, jikos, benjamin.tissoires, dianders, hsinyi Cc: linux-input, devicetree, linux-kernel, Cong Yang The ili9882t touch screen chip same as Elan eKTH6915 controller has a reset gpio. The difference is that ili9882t needs to use vccio-supply instead of vcc33-supply. Doug's series[1] allows panels and touchscreens to power on/off together, let's add a phandle for this. [1]: https: //lore.kernel.org/all/20230523193017.4109557-1-dianders@chromium.org/ Signed-off-by: Cong Yang <yangcong5@huaqin.corp-partner.google.com> --- .../bindings/input/ilitek,ili9882t.yaml | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 Documentation/devicetree/bindings/input/ilitek,ili9882t.yaml diff --git a/Documentation/devicetree/bindings/input/ilitek,ili9882t.yaml b/Documentation/devicetree/bindings/input/ilitek,ili9882t.yaml new file mode 100644 index 000000000000..f69fa3aaf4c5 --- /dev/null +++ b/Documentation/devicetree/bindings/input/ilitek,ili9882t.yaml @@ -0,0 +1,67 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/input/ilitek,ili9882t.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Ilitek ili9882t touchscreen controller + +maintainers: + - Dmitry Torokhov <dmitry.torokhov@gmail.com> + +description: + Supports the Ilitek ili9882t touchscreen controller. + This touchscreen controller uses the i2c-hid protocol with a reset GPIO. + +properties: + compatible: + items: + - const: ilitek,ili9882t + + reg: + const: 0x41 + + interrupts: + maxItems: 1 + + panel: + description: If this is a touchscreen, the panel it's connected to. This + indicates that the panel and touchscreen are expected to be power + sequenced together. + $ref: /schemas/types.yaml#/definitions/phandle + + reset-gpios: + description: Reset GPIO. + + + vccio-supply: + description: The 1.8V supply to the touchscreen. + +required: + - compatible + - reg + - interrupts + - vccio-supply + +additionalProperties: false + +examples: + - | + #include <dt-bindings/gpio/gpio.h> + #include <dt-bindings/interrupt-controller/irq.h> + + i2c { + #address-cells = <1>; + #size-cells = <0>; + + touchscreen: touchscreen@41 { + compatible = "ilitek,ili9882t"; + reg = <0x41>; + + interrupt-parent = <&pio>; + interrupts = <12 IRQ_TYPE_LEVEL_LOW>; + + reset-gpios = <&pio 60 GPIO_ACTIVE_LOW>; + vccio-supply = <&mt6366_vio18_reg>; + }; + }; -- 2.25.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v3 1/2] dt-bindings: HID: i2c-hid: ilitek: Introduce bindings for Ilitek ili9882t 2023-06-07 13:34 ` [PATCH v3 1/2] dt-bindings: HID: i2c-hid: ilitek: Introduce bindings for Ilitek ili9882t Cong Yang @ 2023-06-07 13:59 ` Krzysztof Kozlowski 0 siblings, 0 replies; 5+ messages in thread From: Krzysztof Kozlowski @ 2023-06-07 13:59 UTC (permalink / raw) To: Cong Yang, robh+dt, krzysztof.kozlowski+dt, conor+dt, dmitry.torokhov, jikos, benjamin.tissoires, dianders, hsinyi Cc: linux-input, devicetree, linux-kernel On 07/06/2023 15:34, Cong Yang wrote: > The ili9882t touch screen chip same as Elan eKTH6915 controller > has a reset gpio. The difference is that ili9882t needs to use > vccio-supply instead of vcc33-supply. Doug's series[1] allows panels > and touchscreens to power on/off together, let's add a phandle for this. > > [1]: https: //lore.kernel.org/all/20230523193017.4109557-1-dianders@chromium.org/ > > Signed-off-by: Cong Yang <yangcong5@huaqin.corp-partner.google.com> > --- > .../bindings/input/ilitek,ili9882t.yaml | 67 +++++++++++++++++++ > 1 file changed, 67 insertions(+) > create mode 100644 Documentation/devicetree/bindings/input/ilitek,ili9882t.yaml > > diff --git a/Documentation/devicetree/bindings/input/ilitek,ili9882t.yaml b/Documentation/devicetree/bindings/input/ilitek,ili9882t.yaml > new file mode 100644 > index 000000000000..f69fa3aaf4c5 > --- /dev/null > +++ b/Documentation/devicetree/bindings/input/ilitek,ili9882t.yaml > @@ -0,0 +1,67 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/input/ilitek,ili9882t.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Ilitek ili9882t touchscreen controller > + > +maintainers: > + - Dmitry Torokhov <dmitry.torokhov@gmail.com> > + > +description: > + Supports the Ilitek ili9882t touchscreen controller. > + This touchscreen controller uses the i2c-hid protocol with a reset GPIO. > + > +properties: > + compatible: > + items: Drop items, just const. > + - const: ilitek,ili9882t > + > + reg: > + const: 0x41 > + > + interrupts: > + maxItems: 1 > + > + panel: > + description: If this is a touchscreen, the panel it's connected to. This > + indicates that the panel and touchscreen are expected to be power > + sequenced together. > + $ref: /schemas/types.yaml#/definitions/phandle "If this is a touchscreen"? Doesn't you description say this is touchscreen controller? Then how this could be also not a touchscreen? > + > + reset-gpios: > + description: Reset GPIO. missing maxItems Best regards, Krzysztof ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v3 2/2] HID: i2c-hid: elan: Add ili9882t timing 2023-06-07 13:34 [PATCH v3 0/2] Add ili9882t bindings and timing Cong Yang 2023-06-07 13:34 ` [PATCH v3 1/2] dt-bindings: HID: i2c-hid: ilitek: Introduce bindings for Ilitek ili9882t Cong Yang @ 2023-06-07 13:34 ` Cong Yang 2023-06-07 23:49 ` Doug Anderson 1 sibling, 1 reply; 5+ messages in thread From: Cong Yang @ 2023-06-07 13:34 UTC (permalink / raw) To: robh+dt, krzysztof.kozlowski+dt, conor+dt, dmitry.torokhov, jikos, benjamin.tissoires, dianders, hsinyi Cc: linux-input, devicetree, linux-kernel, Cong Yang The ili9882t is a TDDI IC (Touch with Display Driver). The datasheet specifies there should be 60ms between touch SDA sleep and panel RESX. Doug's series[1] allows panels and touchscreens to power on/off together, so we can add the 65 ms delay in i2c_hid_core_suspend before panel_unprepare. [1]: https: //lore.kernel.org/all/20230523193017.4109557-1-dianders@chromium.org/ Signed-off-by: Cong Yang <yangcong5@huaqin.corp-partner.google.com> --- drivers/hid/i2c-hid/i2c-hid-of-elan.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/drivers/hid/i2c-hid/i2c-hid-of-elan.c b/drivers/hid/i2c-hid/i2c-hid-of-elan.c index 76ddc8be1cbb..411d7ea2725d 100644 --- a/drivers/hid/i2c-hid/i2c-hid-of-elan.c +++ b/drivers/hid/i2c-hid/i2c-hid-of-elan.c @@ -18,7 +18,8 @@ #include "i2c-hid.h" struct elan_i2c_hid_chip_data { - unsigned int post_gpio_reset_delay_ms; + unsigned int post_gpio_reset_on_delay_ms; + unsigned int post_gpio_reset_off_delay_ms; unsigned int post_power_delay_ms; u16 hid_descriptor_address; }; @@ -52,8 +53,8 @@ static int elan_i2c_hid_power_up(struct i2chid_ops *ops) msleep(ihid_elan->chip_data->post_power_delay_ms); gpiod_set_value_cansleep(ihid_elan->reset_gpio, 0); - if (ihid_elan->chip_data->post_gpio_reset_delay_ms) - msleep(ihid_elan->chip_data->post_gpio_reset_delay_ms); + if (ihid_elan->chip_data->post_gpio_reset_on_delay_ms) + msleep(ihid_elan->chip_data->post_gpio_reset_on_delay_ms); return 0; } @@ -64,6 +65,9 @@ static void elan_i2c_hid_power_down(struct i2chid_ops *ops) container_of(ops, struct i2c_hid_of_elan, ops); gpiod_set_value_cansleep(ihid_elan->reset_gpio, 1); + if (ihid_elan->chip_data->post_gpio_reset_off_delay_ms) + msleep(ihid_elan->chip_data->post_gpio_reset_off_delay_ms); + regulator_disable(ihid_elan->vccio); regulator_disable(ihid_elan->vcc33); } @@ -101,12 +105,20 @@ static int i2c_hid_of_elan_probe(struct i2c_client *client) static const struct elan_i2c_hid_chip_data elan_ekth6915_chip_data = { .post_power_delay_ms = 1, - .post_gpio_reset_delay_ms = 300, + .post_gpio_reset_on_delay_ms = 300, + .hid_descriptor_address = 0x0001, +}; + +static const struct elan_i2c_hid_chip_data ilitek_ili9882t_chip_data = { + .post_power_delay_ms = 1, + .post_gpio_reset_on_delay_ms = 200, + .post_gpio_reset_off_delay_ms = 65, .hid_descriptor_address = 0x0001, }; static const struct of_device_id elan_i2c_hid_of_match[] = { { .compatible = "elan,ekth6915", .data = &elan_ekth6915_chip_data }, + { .compatible = "ilitek,ili9882t", .data = &ilitek_ili9882t_chip_data }, { } }; MODULE_DEVICE_TABLE(of, elan_i2c_hid_of_match); -- 2.25.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v3 2/2] HID: i2c-hid: elan: Add ili9882t timing 2023-06-07 13:34 ` [PATCH v3 2/2] HID: i2c-hid: elan: Add ili9882t timing Cong Yang @ 2023-06-07 23:49 ` Doug Anderson 0 siblings, 0 replies; 5+ messages in thread From: Doug Anderson @ 2023-06-07 23:49 UTC (permalink / raw) To: Cong Yang Cc: robh+dt, krzysztof.kozlowski+dt, conor+dt, dmitry.torokhov, jikos, benjamin.tissoires, hsinyi, linux-input, devicetree, linux-kernel Hi, On Wed, Jun 7, 2023 at 6:35 AM Cong Yang <yangcong5@huaqin.corp-partner.google.com> wrote: > > The ili9882t is a TDDI IC (Touch with Display Driver). The > datasheet specifies there should be 60ms between touch SDA > sleep and panel RESX. Doug's series[1] allows panels and > touchscreens to power on/off together, so we can add the 65 ms > delay in i2c_hid_core_suspend before panel_unprepare. > > [1]: https: //lore.kernel.org/all/20230523193017.4109557-1-dianders@chromium.org/ FWIW: I posted v2 today: https://lore.kernel.org/r/20230607215224.2067679-1-dianders@chromium.org > Signed-off-by: Cong Yang <yangcong5@huaqin.corp-partner.google.com> > --- > drivers/hid/i2c-hid/i2c-hid-of-elan.c | 20 ++++++++++++++++---- > 1 file changed, 16 insertions(+), 4 deletions(-) > > diff --git a/drivers/hid/i2c-hid/i2c-hid-of-elan.c b/drivers/hid/i2c-hid/i2c-hid-of-elan.c > index 76ddc8be1cbb..411d7ea2725d 100644 > --- a/drivers/hid/i2c-hid/i2c-hid-of-elan.c > +++ b/drivers/hid/i2c-hid/i2c-hid-of-elan.c > @@ -18,7 +18,8 @@ > #include "i2c-hid.h" > > struct elan_i2c_hid_chip_data { > - unsigned int post_gpio_reset_delay_ms; > + unsigned int post_gpio_reset_on_delay_ms; > + unsigned int post_gpio_reset_off_delay_ms; > unsigned int post_power_delay_ms; > u16 hid_descriptor_address; > }; I would prefer it if you would add something to the "elan_i2c_hid_chip_data" indicating the name of the main supply. Set it to "vcc33" for the elan touchscreen and the NULL for your new one. It's probably worth adding a comment next to where you set it to NULL that this touchscreen is tightly integrated with the panel and assumes that the relevant power rails (other than the IO rail) have already been turned on by the panel driver because we're a panel follower. Otherwise someone is going to be super confused about how this could work. ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2023-06-07 23:50 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-06-07 13:34 [PATCH v3 0/2] Add ili9882t bindings and timing Cong Yang 2023-06-07 13:34 ` [PATCH v3 1/2] dt-bindings: HID: i2c-hid: ilitek: Introduce bindings for Ilitek ili9882t Cong Yang 2023-06-07 13:59 ` Krzysztof Kozlowski 2023-06-07 13:34 ` [PATCH v3 2/2] HID: i2c-hid: elan: Add ili9882t timing Cong Yang 2023-06-07 23:49 ` Doug Anderson
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).