mbox series

[v6,0/4] HID: i2c-hid: Reorganize to allow supporting goodix, gt7375p

Message ID 20201112004130.17290-1-dianders@chromium.org (mailing list archive)
Headers show
Series HID: i2c-hid: Reorganize to allow supporting goodix, gt7375p | expand

Message

Doug Anderson Nov. 12, 2020, 12:41 a.m. UTC
The goal of this series is to support the Goodix GT7375P touchscreen.
This touchscreen is special because it has power sequencing
requirements that necessitate driving a reset GPIO.

To do this, we totally rejigger the way i2c-hid is organized so that
it's easier to jam the Goodix support in there.

This series was:
- Tested on a device that uses normal i2c-hid.
- Tested on a device that has a Goodix i2c-hid device.
- Tested on an ACPI device, but an earlier version of the series.

Changes in v6:
- ACPI probe function should have been "static"
- Don't export suspend/resume, just export dev_pm_ops from core.
- Fixed crash in ACPI module (missing init of "client")
- No need for regulator include in the core.
- Removed i2c_device_id table from ACPI module.
- Suspend/resume are no longer exported from the core.

Changes in v5:
- Add shutdown_tail op and use it in ACPI.
- Added mention of i2c-hid in the yaml itself as per Rob.
- Adjusted subject as per Rob.
- i2chid_subclass_data => i2chid_ops.
- power_up_device => power_up (same with power_down).
- subclass => ops.

Changes in v4:
- ("arm64: defconfig: Update config names for i2c-hid rejigger") new for v4.
- Fully rejigger so ACPI and OF are full subclasses.
- Totally redid based on the new subclass system.

Changes in v3:
- Fixed compatible in example.
- Removed Benjamin as a maintainer.
- Rework to use subclassing.
- Updated description.

Changes in v2:
- ("dt-bindings: HID: i2c-hid: Introduce bindings for the Goodix GT7375P") new in v2.
- Get timings based on the compatible string.
- Use a separate compatible string for this new touchscreen.

Douglas Anderson (4):
  HID: i2c-hid: Reorganize so ACPI and OF are separate modules
  arm64: defconfig: Update config names for i2c-hid rejigger
  dt-bindings: input: HID: i2c-hid: Introduce bindings for the Goodix
    GT7375P
  HID: i2c-hid: Introduce goodix-i2c-hid using i2c-hid core

 .../bindings/input/goodix,gt7375p.yaml        |  65 +++++
 arch/arm64/configs/defconfig                  |   3 +-
 drivers/hid/Makefile                          |   2 +-
 drivers/hid/i2c-hid/Kconfig                   |  47 +++-
 drivers/hid/i2c-hid/Makefile                  |   6 +-
 drivers/hid/i2c-hid/i2c-hid-acpi.c            | 159 +++++++++++
 drivers/hid/i2c-hid/i2c-hid-core.c            | 254 +++---------------
 drivers/hid/i2c-hid/i2c-hid-of-goodix.c       | 116 ++++++++
 drivers/hid/i2c-hid/i2c-hid-of.c              | 143 ++++++++++
 drivers/hid/i2c-hid/i2c-hid.h                 |  22 ++
 include/linux/platform_data/i2c-hid.h         |  41 ---
 11 files changed, 596 insertions(+), 262 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/input/goodix,gt7375p.yaml
 create mode 100644 drivers/hid/i2c-hid/i2c-hid-acpi.c
 create mode 100644 drivers/hid/i2c-hid/i2c-hid-of-goodix.c
 create mode 100644 drivers/hid/i2c-hid/i2c-hid-of.c
 delete mode 100644 include/linux/platform_data/i2c-hid.h

Comments

Doug Anderson Dec. 1, 2020, 9:12 p.m. UTC | #1
Hi,

On Wed, Nov 11, 2020 at 4:41 PM Douglas Anderson <dianders@chromium.org> wrote:
>
> The goal of this series is to support the Goodix GT7375P touchscreen.
> This touchscreen is special because it has power sequencing
> requirements that necessitate driving a reset GPIO.
>
> To do this, we totally rejigger the way i2c-hid is organized so that
> it's easier to jam the Goodix support in there.
>
> This series was:
> - Tested on a device that uses normal i2c-hid.
> - Tested on a device that has a Goodix i2c-hid device.
> - Tested on an ACPI device, but an earlier version of the series.
>
> Changes in v6:
> - ACPI probe function should have been "static"
> - Don't export suspend/resume, just export dev_pm_ops from core.
> - Fixed crash in ACPI module (missing init of "client")
> - No need for regulator include in the core.
> - Removed i2c_device_id table from ACPI module.
> - Suspend/resume are no longer exported from the core.
>
> Changes in v5:
> - Add shutdown_tail op and use it in ACPI.
> - Added mention of i2c-hid in the yaml itself as per Rob.
> - Adjusted subject as per Rob.
> - i2chid_subclass_data => i2chid_ops.
> - power_up_device => power_up (same with power_down).
> - subclass => ops.
>
> Changes in v4:
> - ("arm64: defconfig: Update config names for i2c-hid rejigger") new for v4.
> - Fully rejigger so ACPI and OF are full subclasses.
> - Totally redid based on the new subclass system.
>
> Changes in v3:
> - Fixed compatible in example.
> - Removed Benjamin as a maintainer.
> - Rework to use subclassing.
> - Updated description.
>
> Changes in v2:
> - ("dt-bindings: HID: i2c-hid: Introduce bindings for the Goodix GT7375P") new in v2.
> - Get timings based on the compatible string.
> - Use a separate compatible string for this new touchscreen.
>
> Douglas Anderson (4):
>   HID: i2c-hid: Reorganize so ACPI and OF are separate modules
>   arm64: defconfig: Update config names for i2c-hid rejigger
>   dt-bindings: input: HID: i2c-hid: Introduce bindings for the Goodix
>     GT7375P
>   HID: i2c-hid: Introduce goodix-i2c-hid using i2c-hid core
>
>  .../bindings/input/goodix,gt7375p.yaml        |  65 +++++
>  arch/arm64/configs/defconfig                  |   3 +-
>  drivers/hid/Makefile                          |   2 +-
>  drivers/hid/i2c-hid/Kconfig                   |  47 +++-
>  drivers/hid/i2c-hid/Makefile                  |   6 +-
>  drivers/hid/i2c-hid/i2c-hid-acpi.c            | 159 +++++++++++
>  drivers/hid/i2c-hid/i2c-hid-core.c            | 254 +++---------------
>  drivers/hid/i2c-hid/i2c-hid-of-goodix.c       | 116 ++++++++
>  drivers/hid/i2c-hid/i2c-hid-of.c              | 143 ++++++++++
>  drivers/hid/i2c-hid/i2c-hid.h                 |  22 ++
>  include/linux/platform_data/i2c-hid.h         |  41 ---
>  11 files changed, 596 insertions(+), 262 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/input/goodix,gt7375p.yaml
>  create mode 100644 drivers/hid/i2c-hid/i2c-hid-acpi.c
>  create mode 100644 drivers/hid/i2c-hid/i2c-hid-of-goodix.c
>  create mode 100644 drivers/hid/i2c-hid/i2c-hid-of.c
>  delete mode 100644 include/linux/platform_data/i2c-hid.h

Are there any additional changes that folks would like with this
series?  It's not crazy urgent to get it in, but it touches enough
lines of code that it'd be nice to get it in before other patches land
and it gets merge conflicts.

Hrm, I just checked and there actually is already one merge conflict
with commit afdd34c5fa40 ("HID: i2c-hid: show the error when failing
to fetch the HID descriptor") but that commit (and thus the
resolution) is trivial.  If there are no other comments I can re-post
atop that patch.  ...or I'm also happy if a maintainer is OK w/
resolving when landing my series.  Just let me know!

...or, if you want me to just shut up for a while and wait until your
tryptophan hangover wears off, that's fine too--just let me know.

-Doug
Benjamin Tissoires Dec. 2, 2020, 3:19 p.m. UTC | #2
Hi Doug,

On Tue, Dec 1, 2020 at 10:12 PM Doug Anderson <dianders@chromium.org> wrote:
>
> Hi,
>
> On Wed, Nov 11, 2020 at 4:41 PM Douglas Anderson <dianders@chromium.org> wrote:
> >
> > The goal of this series is to support the Goodix GT7375P touchscreen.
> > This touchscreen is special because it has power sequencing
> > requirements that necessitate driving a reset GPIO.
> >
> > To do this, we totally rejigger the way i2c-hid is organized so that
> > it's easier to jam the Goodix support in there.
> >
> > This series was:
> > - Tested on a device that uses normal i2c-hid.
> > - Tested on a device that has a Goodix i2c-hid device.
> > - Tested on an ACPI device, but an earlier version of the series.
> >
> > Changes in v6:
> > - ACPI probe function should have been "static"
> > - Don't export suspend/resume, just export dev_pm_ops from core.
> > - Fixed crash in ACPI module (missing init of "client")
> > - No need for regulator include in the core.
> > - Removed i2c_device_id table from ACPI module.
> > - Suspend/resume are no longer exported from the core.
> >
> > Changes in v5:
> > - Add shutdown_tail op and use it in ACPI.
> > - Added mention of i2c-hid in the yaml itself as per Rob.
> > - Adjusted subject as per Rob.
> > - i2chid_subclass_data => i2chid_ops.
> > - power_up_device => power_up (same with power_down).
> > - subclass => ops.
> >
> > Changes in v4:
> > - ("arm64: defconfig: Update config names for i2c-hid rejigger") new for v4.
> > - Fully rejigger so ACPI and OF are full subclasses.
> > - Totally redid based on the new subclass system.
> >
> > Changes in v3:
> > - Fixed compatible in example.
> > - Removed Benjamin as a maintainer.
> > - Rework to use subclassing.
> > - Updated description.
> >
> > Changes in v2:
> > - ("dt-bindings: HID: i2c-hid: Introduce bindings for the Goodix GT7375P") new in v2.
> > - Get timings based on the compatible string.
> > - Use a separate compatible string for this new touchscreen.
> >
> > Douglas Anderson (4):
> >   HID: i2c-hid: Reorganize so ACPI and OF are separate modules
> >   arm64: defconfig: Update config names for i2c-hid rejigger
> >   dt-bindings: input: HID: i2c-hid: Introduce bindings for the Goodix
> >     GT7375P
> >   HID: i2c-hid: Introduce goodix-i2c-hid using i2c-hid core
> >
> >  .../bindings/input/goodix,gt7375p.yaml        |  65 +++++
> >  arch/arm64/configs/defconfig                  |   3 +-
> >  drivers/hid/Makefile                          |   2 +-
> >  drivers/hid/i2c-hid/Kconfig                   |  47 +++-
> >  drivers/hid/i2c-hid/Makefile                  |   6 +-
> >  drivers/hid/i2c-hid/i2c-hid-acpi.c            | 159 +++++++++++
> >  drivers/hid/i2c-hid/i2c-hid-core.c            | 254 +++---------------
> >  drivers/hid/i2c-hid/i2c-hid-of-goodix.c       | 116 ++++++++
> >  drivers/hid/i2c-hid/i2c-hid-of.c              | 143 ++++++++++
> >  drivers/hid/i2c-hid/i2c-hid.h                 |  22 ++
> >  include/linux/platform_data/i2c-hid.h         |  41 ---
> >  11 files changed, 596 insertions(+), 262 deletions(-)
> >  create mode 100644 Documentation/devicetree/bindings/input/goodix,gt7375p.yaml
> >  create mode 100644 drivers/hid/i2c-hid/i2c-hid-acpi.c
> >  create mode 100644 drivers/hid/i2c-hid/i2c-hid-of-goodix.c
> >  create mode 100644 drivers/hid/i2c-hid/i2c-hid-of.c
> >  delete mode 100644 include/linux/platform_data/i2c-hid.h
>
> Are there any additional changes that folks would like with this
> series?  It's not crazy urgent to get it in, but it touches enough
> lines of code that it'd be nice to get it in before other patches land
> and it gets merge conflicts.

Sorry for the delay. I was having an internal deadline last week. I
just re-read the code, and I am quite happy with it. I also just
tested it on the i2c-hid w/ acpi machine I have here, and it seems OK.

So other than that, do we need to have approvals for patch 2/4
(arch/arm64/configs/defconfig)? I can easily take that in the HID
tree, but I prefer having the approval from the maintainers first.
Catalin, Will?

>
> Hrm, I just checked and there actually is already one merge conflict
> with commit afdd34c5fa40 ("HID: i2c-hid: show the error when failing
> to fetch the HID descriptor") but that commit (and thus the
> resolution) is trivial.  If there are no other comments I can re-post
> atop that patch.  ...or I'm also happy if a maintainer is OK w/
> resolving when landing my series.  Just let me know!

If I can quickly get the approval from the arm64/config maintainers, I
can try to apply it. Though, I wouldn't be against you sending a clean
and conflict-free series :)

>
> ...or, if you want me to just shut up for a while and wait until your
> tryptophan hangover wears off, that's fine too--just let me know.
>

Heh. Sorry, I have a tendency to have my inbox flooded, and some time
gets distracted to do other important work I am paid for (too). I
don't mind a gentle nudge from time to time, that helps figuring out
the priorities :)

Cheers,
Benjamin
Doug Anderson Dec. 2, 2020, 3:54 p.m. UTC | #3
Hi,

On Wed, Dec 2, 2020 at 7:20 AM Benjamin Tissoires
<benjamin.tissoires@redhat.com> wrote:
>
> Hi Doug,
>
> On Tue, Dec 1, 2020 at 10:12 PM Doug Anderson <dianders@chromium.org> wrote:
> >
> > Hi,
> >
> > On Wed, Nov 11, 2020 at 4:41 PM Douglas Anderson <dianders@chromium.org> wrote:
> > >
> > > The goal of this series is to support the Goodix GT7375P touchscreen.
> > > This touchscreen is special because it has power sequencing
> > > requirements that necessitate driving a reset GPIO.
> > >
> > > To do this, we totally rejigger the way i2c-hid is organized so that
> > > it's easier to jam the Goodix support in there.
> > >
> > > This series was:
> > > - Tested on a device that uses normal i2c-hid.
> > > - Tested on a device that has a Goodix i2c-hid device.
> > > - Tested on an ACPI device, but an earlier version of the series.
> > >
> > > Changes in v6:
> > > - ACPI probe function should have been "static"
> > > - Don't export suspend/resume, just export dev_pm_ops from core.
> > > - Fixed crash in ACPI module (missing init of "client")
> > > - No need for regulator include in the core.
> > > - Removed i2c_device_id table from ACPI module.
> > > - Suspend/resume are no longer exported from the core.
> > >
> > > Changes in v5:
> > > - Add shutdown_tail op and use it in ACPI.
> > > - Added mention of i2c-hid in the yaml itself as per Rob.
> > > - Adjusted subject as per Rob.
> > > - i2chid_subclass_data => i2chid_ops.
> > > - power_up_device => power_up (same with power_down).
> > > - subclass => ops.
> > >
> > > Changes in v4:
> > > - ("arm64: defconfig: Update config names for i2c-hid rejigger") new for v4.
> > > - Fully rejigger so ACPI and OF are full subclasses.
> > > - Totally redid based on the new subclass system.
> > >
> > > Changes in v3:
> > > - Fixed compatible in example.
> > > - Removed Benjamin as a maintainer.
> > > - Rework to use subclassing.
> > > - Updated description.
> > >
> > > Changes in v2:
> > > - ("dt-bindings: HID: i2c-hid: Introduce bindings for the Goodix GT7375P") new in v2.
> > > - Get timings based on the compatible string.
> > > - Use a separate compatible string for this new touchscreen.
> > >
> > > Douglas Anderson (4):
> > >   HID: i2c-hid: Reorganize so ACPI and OF are separate modules
> > >   arm64: defconfig: Update config names for i2c-hid rejigger
> > >   dt-bindings: input: HID: i2c-hid: Introduce bindings for the Goodix
> > >     GT7375P
> > >   HID: i2c-hid: Introduce goodix-i2c-hid using i2c-hid core
> > >
> > >  .../bindings/input/goodix,gt7375p.yaml        |  65 +++++
> > >  arch/arm64/configs/defconfig                  |   3 +-
> > >  drivers/hid/Makefile                          |   2 +-
> > >  drivers/hid/i2c-hid/Kconfig                   |  47 +++-
> > >  drivers/hid/i2c-hid/Makefile                  |   6 +-
> > >  drivers/hid/i2c-hid/i2c-hid-acpi.c            | 159 +++++++++++
> > >  drivers/hid/i2c-hid/i2c-hid-core.c            | 254 +++---------------
> > >  drivers/hid/i2c-hid/i2c-hid-of-goodix.c       | 116 ++++++++
> > >  drivers/hid/i2c-hid/i2c-hid-of.c              | 143 ++++++++++
> > >  drivers/hid/i2c-hid/i2c-hid.h                 |  22 ++
> > >  include/linux/platform_data/i2c-hid.h         |  41 ---
> > >  11 files changed, 596 insertions(+), 262 deletions(-)
> > >  create mode 100644 Documentation/devicetree/bindings/input/goodix,gt7375p.yaml
> > >  create mode 100644 drivers/hid/i2c-hid/i2c-hid-acpi.c
> > >  create mode 100644 drivers/hid/i2c-hid/i2c-hid-of-goodix.c
> > >  create mode 100644 drivers/hid/i2c-hid/i2c-hid-of.c
> > >  delete mode 100644 include/linux/platform_data/i2c-hid.h
> >
> > Are there any additional changes that folks would like with this
> > series?  It's not crazy urgent to get it in, but it touches enough
> > lines of code that it'd be nice to get it in before other patches land
> > and it gets merge conflicts.
>
> Sorry for the delay. I was having an internal deadline last week. I
> just re-read the code, and I am quite happy with it. I also just
> tested it on the i2c-hid w/ acpi machine I have here, and it seems OK.
>
> So other than that, do we need to have approvals for patch 2/4
> (arch/arm64/configs/defconfig)? I can easily take that in the HID
> tree, but I prefer having the approval from the maintainers first.
> Catalin, Will?

From my past knowledge of the arm64 defconfig, I think it's a bit of a
free-for-all, sort of like updates to the "MAINTAINERS" file.  Doing a
"git log" on it I see commits happen from every corner and very few of
them have Acks.  I think many (but not all) of the commits to this
file go through trees that feed into the SoC tree (Arnd and Olof)
because those maintainers care about enabling drivers for boards that
they're supporting, but changes come from elsewhere too.

Obviously an Ack wouldn't hurt, though.  Since get_maintainer points
at Will and Catalin I wouldn't say no if one of them wanted to Ack
patch #2 in the series.  ;-)


> > Hrm, I just checked and there actually is already one merge conflict
> > with commit afdd34c5fa40 ("HID: i2c-hid: show the error when failing
> > to fetch the HID descriptor") but that commit (and thus the
> > resolution) is trivial.  If there are no other comments I can re-post
> > atop that patch.  ...or I'm also happy if a maintainer is OK w/
> > resolving when landing my series.  Just let me know!
>
> If I can quickly get the approval from the arm64/config maintainers, I
> can try to apply it. Though, I wouldn't be against you sending a clean
> and conflict-free series :)

I'll hold tight at the moment to avoid fragmenting the discussion
while we figure out if we need an Ack on the defconfig.  If that gets
resolved and you're ready to land, do it.  Otherwise I'll spin out a
clean version once I think the Ack question is resolved.


> > ...or, if you want me to just shut up for a while and wait until your
> > tryptophan hangover wears off, that's fine too--just let me know.
> >
>
> Heh. Sorry, I have a tendency to have my inbox flooded, and some time
> gets distracted to do other important work I am paid for (too). I
> don't mind a gentle nudge from time to time, that helps figuring out
> the priorities :)

I get ya and I'm the same way, but everyone has a different workflow
and I try to make allowances if I can...


-Doug
Will Deacon Dec. 8, 2020, 4 p.m. UTC | #4
On Wed, Dec 02, 2020 at 07:54:40AM -0800, Doug Anderson wrote:
> On Wed, Dec 2, 2020 at 7:20 AM Benjamin Tissoires
> <benjamin.tissoires@redhat.com> wrote:
> > On Tue, Dec 1, 2020 at 10:12 PM Doug Anderson <dianders@chromium.org> wrote:
> > > On Wed, Nov 11, 2020 at 4:41 PM Douglas Anderson <dianders@chromium.org> wrote:
> > > >  .../bindings/input/goodix,gt7375p.yaml        |  65 +++++
> > > >  arch/arm64/configs/defconfig                  |   3 +-
> > > >  drivers/hid/Makefile                          |   2 +-
> > > >  drivers/hid/i2c-hid/Kconfig                   |  47 +++-
> > > >  drivers/hid/i2c-hid/Makefile                  |   6 +-
> > > >  drivers/hid/i2c-hid/i2c-hid-acpi.c            | 159 +++++++++++
> > > >  drivers/hid/i2c-hid/i2c-hid-core.c            | 254 +++---------------
> > > >  drivers/hid/i2c-hid/i2c-hid-of-goodix.c       | 116 ++++++++
> > > >  drivers/hid/i2c-hid/i2c-hid-of.c              | 143 ++++++++++
> > > >  drivers/hid/i2c-hid/i2c-hid.h                 |  22 ++
> > > >  include/linux/platform_data/i2c-hid.h         |  41 ---
> > > >  11 files changed, 596 insertions(+), 262 deletions(-)
> > > >  create mode 100644 Documentation/devicetree/bindings/input/goodix,gt7375p.yaml
> > > >  create mode 100644 drivers/hid/i2c-hid/i2c-hid-acpi.c
> > > >  create mode 100644 drivers/hid/i2c-hid/i2c-hid-of-goodix.c
> > > >  create mode 100644 drivers/hid/i2c-hid/i2c-hid-of.c
> > > >  delete mode 100644 include/linux/platform_data/i2c-hid.h
> > >
> > > Are there any additional changes that folks would like with this
> > > series?  It's not crazy urgent to get it in, but it touches enough
> > > lines of code that it'd be nice to get it in before other patches land
> > > and it gets merge conflicts.
> >
> > Sorry for the delay. I was having an internal deadline last week. I
> > just re-read the code, and I am quite happy with it. I also just
> > tested it on the i2c-hid w/ acpi machine I have here, and it seems OK.
> >
> > So other than that, do we need to have approvals for patch 2/4
> > (arch/arm64/configs/defconfig)? I can easily take that in the HID
> > tree, but I prefer having the approval from the maintainers first.
> > Catalin, Will?
> 
> From my past knowledge of the arm64 defconfig, I think it's a bit of a
> free-for-all, sort of like updates to the "MAINTAINERS" file.  Doing a
> "git log" on it I see commits happen from every corner and very few of
> them have Acks.  I think many (but not all) of the commits to this
> file go through trees that feed into the SoC tree (Arnd and Olof)
> because those maintainers care about enabling drivers for boards that
> they're supporting, but changes come from elsewhere too.
> 
> Obviously an Ack wouldn't hurt, though.  Since get_maintainer points
> at Will and Catalin I wouldn't say no if one of them wanted to Ack
> patch #2 in the series.  ;-)

For the avoidance of doubt:

Acked-by: Will Deacon <will@kernel.org>

on patch 2. But yes, although there are a few things I really care about
in defconfig (e.g. things like page size!), generally speaking we don't
need to Ack everything that changes in there.

That said, might be worth checking whether arm-soc have any defconfig
changes queued in -next so you don't end up with conflicts.

Will