.../bindings/i2c/i2c-hotplug-gpio.yaml | 65 +++++ drivers/i2c/muxes/Kconfig | 11 + drivers/i2c/muxes/Makefile | 1 + drivers/i2c/muxes/i2c-hotplug-gpio.c | 263 ++++++++++++++++++ 4 files changed, 340 insertions(+) create mode 100644 Documentation/devicetree/bindings/i2c/i2c-hotplug-gpio.yaml create mode 100644 drivers/i2c/muxes/i2c-hotplug-gpio.c
Implement driver for hot-plugged I2C busses, where some devices on a bus are hot-pluggable and their presence is indicated by GPIO line. This feature is used by the ASUS Transformers family, by the Microsoft Surface RT/2 and maybe more. ASUS Transformers expose i2c line via proprietary 40 pin plug and wire that line through optional dock accessory. Devices in the dock are connected to this i2c line and docks presence is detected by a dedicted GPIO. Michał Mirosław (1): i2c: muxes: Add GPIO-detected hotplug I2C Svyatoslav Ryhel (1): dt-bindings: i2c: Document GPIO detected hot-plugged I2C bus .../bindings/i2c/i2c-hotplug-gpio.yaml | 65 +++++ drivers/i2c/muxes/Kconfig | 11 + drivers/i2c/muxes/Makefile | 1 + drivers/i2c/muxes/i2c-hotplug-gpio.c | 263 ++++++++++++++++++ 4 files changed, 340 insertions(+) create mode 100644 Documentation/devicetree/bindings/i2c/i2c-hotplug-gpio.yaml create mode 100644 drivers/i2c/muxes/i2c-hotplug-gpio.c -- 2.48.1
On Mon, Sep 15, 2025 at 09:01:36AM +0300, Svyatoslav Ryhel wrote: > Implement driver for hot-plugged I2C busses, where some devices on > a bus are hot-pluggable and their presence is indicated by GPIO line. > This feature is used by the ASUS Transformers family, by the Microsoft > Surface RT/2 and maybe more. > > ASUS Transformers expose i2c line via proprietary 40 pin plug and wire > that line through optional dock accessory. Devices in the dock are > connected to this i2c line and docks presence is detected by a dedicted > GPIO. > > Michał Mirosław (1): > i2c: muxes: Add GPIO-detected hotplug I2C > > Svyatoslav Ryhel (1): > dt-bindings: i2c: Document GPIO detected hot-plugged I2C bus > > .../bindings/i2c/i2c-hotplug-gpio.yaml | 65 +++++ > drivers/i2c/muxes/Kconfig | 11 + > drivers/i2c/muxes/Makefile | 1 + > drivers/i2c/muxes/i2c-hotplug-gpio.c | 263 ++++++++++++++++++ > 4 files changed, 340 insertions(+) > create mode 100644 Documentation/devicetree/bindings/i2c/i2c-hotplug-gpio.yaml > create mode 100644 drivers/i2c/muxes/i2c-hotplug-gpio.c Adding Herve and Luca to CC because they want to achieve the same with their I2C bus extensions, no?
пн, 15 вер. 2025 р. о 14:35 Wolfram Sang <wsa+renesas@sang-engineering.com> пише: > > On Mon, Sep 15, 2025 at 09:01:36AM +0300, Svyatoslav Ryhel wrote: > > Implement driver for hot-plugged I2C busses, where some devices on > > a bus are hot-pluggable and their presence is indicated by GPIO line. > > This feature is used by the ASUS Transformers family, by the Microsoft > > Surface RT/2 and maybe more. > > > > ASUS Transformers expose i2c line via proprietary 40 pin plug and wire > > that line through optional dock accessory. Devices in the dock are > > connected to this i2c line and docks presence is detected by a dedicted > > GPIO. > > > > Michał Mirosław (1): > > i2c: muxes: Add GPIO-detected hotplug I2C > > > > Svyatoslav Ryhel (1): > > dt-bindings: i2c: Document GPIO detected hot-plugged I2C bus > > > > .../bindings/i2c/i2c-hotplug-gpio.yaml | 65 +++++ > > drivers/i2c/muxes/Kconfig | 11 + > > drivers/i2c/muxes/Makefile | 1 + > > drivers/i2c/muxes/i2c-hotplug-gpio.c | 263 ++++++++++++++++++ > > 4 files changed, 340 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/i2c/i2c-hotplug-gpio.yaml > > create mode 100644 drivers/i2c/muxes/i2c-hotplug-gpio.c > > Adding Herve and Luca to CC because they want to achieve the same with > their I2C bus extensions, no? > I have no idea what you are talking about, this an original series I have sent 2 years ago but now I decided that would be nice to have it in mainline Linux. Here is a link to patchset from 19th Jun 2023 https://lkml.org/lkml/2023/6/19/781
On Mon, Sep 15, 2025 at 02:53:23PM +0300, Svyatoslav Ryhel wrote: > пн, 15 вер. 2025 р. о 14:35 Wolfram Sang > <wsa+renesas@sang-engineering.com> пише: > > > > On Mon, Sep 15, 2025 at 09:01:36AM +0300, Svyatoslav Ryhel wrote: > > > Implement driver for hot-plugged I2C busses, where some devices on > > > a bus are hot-pluggable and their presence is indicated by GPIO line. > > > This feature is used by the ASUS Transformers family, by the Microsoft > > > Surface RT/2 and maybe more. > > > > > > ASUS Transformers expose i2c line via proprietary 40 pin plug and wire > > > that line through optional dock accessory. Devices in the dock are > > > connected to this i2c line and docks presence is detected by a dedicted > > > GPIO. > > > > > > Michał Mirosław (1): > > > i2c: muxes: Add GPIO-detected hotplug I2C > > > > > > Svyatoslav Ryhel (1): > > > dt-bindings: i2c: Document GPIO detected hot-plugged I2C bus > > > > > > .../bindings/i2c/i2c-hotplug-gpio.yaml | 65 +++++ > > > drivers/i2c/muxes/Kconfig | 11 + > > > drivers/i2c/muxes/Makefile | 1 + > > > drivers/i2c/muxes/i2c-hotplug-gpio.c | 263 ++++++++++++++++++ > > > 4 files changed, 340 insertions(+) > > > create mode 100644 Documentation/devicetree/bindings/i2c/i2c-hotplug-gpio.yaml > > > create mode 100644 drivers/i2c/muxes/i2c-hotplug-gpio.c > > > > Adding Herve and Luca to CC because they want to achieve the same with > > their I2C bus extensions, no? Sorry, a misunderstanding: the question was for Herve and Luca. I wanted to ask for a comment from them if this is the same problem (which I think it is). The question was not meant for you.
Hi Wolfram, On Mon, 15 Sep 2025 17:42:06 +0200 Wolfram Sang <wsa+renesas@sang-engineering.com> wrote: > On Mon, Sep 15, 2025 at 02:53:23PM +0300, Svyatoslav Ryhel wrote: > > пн, 15 вер. 2025 р. о 14:35 Wolfram Sang > > <wsa+renesas@sang-engineering.com> пише: > > > > > > On Mon, Sep 15, 2025 at 09:01:36AM +0300, Svyatoslav Ryhel wrote: > > > > Implement driver for hot-plugged I2C busses, where some devices on > > > > a bus are hot-pluggable and their presence is indicated by GPIO line. > > > > This feature is used by the ASUS Transformers family, by the Microsoft > > > > Surface RT/2 and maybe more. > > > > > > > > ASUS Transformers expose i2c line via proprietary 40 pin plug and wire > > > > that line through optional dock accessory. Devices in the dock are > > > > connected to this i2c line and docks presence is detected by a dedicted > > > > GPIO. > > > > > > > > Michał Mirosław (1): > > > > i2c: muxes: Add GPIO-detected hotplug I2C > > > > > > > > Svyatoslav Ryhel (1): > > > > dt-bindings: i2c: Document GPIO detected hot-plugged I2C bus > > > > > > > > .../bindings/i2c/i2c-hotplug-gpio.yaml | 65 +++++ > > > > drivers/i2c/muxes/Kconfig | 11 + > > > > drivers/i2c/muxes/Makefile | 1 + > > > > drivers/i2c/muxes/i2c-hotplug-gpio.c | 263 ++++++++++++++++++ > > > > 4 files changed, 340 insertions(+) > > > > create mode 100644 Documentation/devicetree/bindings/i2c/i2c-hotplug-gpio.yaml > > > > create mode 100644 drivers/i2c/muxes/i2c-hotplug-gpio.c > > > > > > Adding Herve and Luca to CC because they want to achieve the same with > > > their I2C bus extensions, no? > > Sorry, a misunderstanding: the question was for Herve and Luca. I wanted > to ask for a comment from them if this is the same problem (which I > think it is). The question was not meant for you. > Indeed, we try to handle the same use case. The i2c-hotplug-gpio.c driver handles only an connector with an I2C bus. On our side, we try to have something more generic that can handle more than one I2C and some other busses and resources (gpio, pwm, ...) wired to a connector. To move this i2c-hotplug-gpio to our proposal direction, this should become a connector driver with a i2c bus extension and an addon DT describing the i2c devices available on the addon board. The connector driver should monitor the gpio and apply the addon DT when it detects the addon plugged. Also, I am waiting for conclusions in the export symbols discussion [1] to re-spin the i2c bus extension series. Best regards, Hervé [1]: https://lore.kernel.org/all/20250902105710.00512c6d@booty/ -- Hervé Codina, Bootlin Embedded Linux and Kernel engineering https://bootlin.com
Hello, thanks Wolfram for pulling Hervé and me in. +Cc my Bootlin e-mail address Il 16/09/25 08:19, Herve Codina ha scritto: > Hi Wolfram, > > On Mon, 15 Sep 2025 17:42:06 +0200 > Wolfram Sang <wsa+renesas@sang-engineering.com> wrote: > >> On Mon, Sep 15, 2025 at 02:53:23PM +0300, Svyatoslav Ryhel wrote: >>> пн, 15 вер. 2025 р. о 14:35 Wolfram Sang >>> <wsa+renesas@sang-engineering.com> пише: >>>> >>>> On Mon, Sep 15, 2025 at 09:01:36AM +0300, Svyatoslav Ryhel wrote: >>>>> Implement driver for hot-plugged I2C busses, where some devices on >>>>> a bus are hot-pluggable and their presence is indicated by GPIO line. >>>>> This feature is used by the ASUS Transformers family, by the Microsoft >>>>> Surface RT/2 and maybe more. >>>>> >>>>> ASUS Transformers expose i2c line via proprietary 40 pin plug and wire >>>>> that line through optional dock accessory. Devices in the dock are >>>>> connected to this i2c line and docks presence is detected by a dedicted >>>>> GPIO. >>>>> >>>>> Michał Mirosław (1): >>>>> i2c: muxes: Add GPIO-detected hotplug I2C >>>>> >>>>> Svyatoslav Ryhel (1): >>>>> dt-bindings: i2c: Document GPIO detected hot-plugged I2C bus >>>>> >>>>> .../bindings/i2c/i2c-hotplug-gpio.yaml | 65 +++++ >>>>> drivers/i2c/muxes/Kconfig | 11 + >>>>> drivers/i2c/muxes/Makefile | 1 + >>>>> drivers/i2c/muxes/i2c-hotplug-gpio.c | 263 ++++++++++++++++++ >>>>> 4 files changed, 340 insertions(+) >>>>> create mode 100644 Documentation/devicetree/bindings/i2c/i2c-hotplug-gpio.yaml >>>>> create mode 100644 drivers/i2c/muxes/i2c-hotplug-gpio.c >>>> >>>> Adding Herve and Luca to CC because they want to achieve the same with >>>> their I2C bus extensions, no? >> >> Sorry, a misunderstanding: the question was for Herve and Luca. I wanted >> to ask for a comment from them if this is the same problem (which I >> think it is). The question was not meant for you. >> > > Indeed, we try to handle the same use case. > > The i2c-hotplug-gpio.c driver handles only an connector with an I2C bus. > > On our side, we try to have something more generic that can handle more > than one I2C and some other busses and resources (gpio, pwm, ...) wired > to a connector. > > To move this i2c-hotplug-gpio to our proposal direction, this should become > a connector driver with a i2c bus extension and an addon DT describing the > i2c devices available on the addon board. > > The connector driver should monitor the gpio and apply the addon DT when it > detects the addon plugged. > > Also, I am waiting for conclusions in the export symbols discussion [1] to > re-spin the i2c bus extension series. I just have one question to add to what Hervé wrote. I guess in the big picture you have a device tree where all hot-pluggable I2C devices are always described, but they won't probe until i2c_hotplug_activate() adds an adapter for them. Is my understanding correct? If correct, this implies you can connect only one type of dock. Multple dock models with different peripherals cannot be supported. Best regards, Luca
вт, 16 вер. 2025 р. о 10:50 Luca Ceresoli <luca@lucaceresoli.net> пише: > > Hello, > > thanks Wolfram for pulling Hervé and me in. > > +Cc my Bootlin e-mail address > > Il 16/09/25 08:19, Herve Codina ha scritto: > > Hi Wolfram, > > > > On Mon, 15 Sep 2025 17:42:06 +0200 > > Wolfram Sang <wsa+renesas@sang-engineering.com> wrote: > > > >> On Mon, Sep 15, 2025 at 02:53:23PM +0300, Svyatoslav Ryhel wrote: > >>> пн, 15 вер. 2025 р. о 14:35 Wolfram Sang > >>> <wsa+renesas@sang-engineering.com> пише: > >>>> > >>>> On Mon, Sep 15, 2025 at 09:01:36AM +0300, Svyatoslav Ryhel wrote: > >>>>> Implement driver for hot-plugged I2C busses, where some devices on > >>>>> a bus are hot-pluggable and their presence is indicated by GPIO line. > >>>>> This feature is used by the ASUS Transformers family, by the Microsoft > >>>>> Surface RT/2 and maybe more. > >>>>> > >>>>> ASUS Transformers expose i2c line via proprietary 40 pin plug and wire > >>>>> that line through optional dock accessory. Devices in the dock are > >>>>> connected to this i2c line and docks presence is detected by a dedicted > >>>>> GPIO. > >>>>> > >>>>> Michał Mirosław (1): > >>>>> i2c: muxes: Add GPIO-detected hotplug I2C > >>>>> > >>>>> Svyatoslav Ryhel (1): > >>>>> dt-bindings: i2c: Document GPIO detected hot-plugged I2C bus > >>>>> > >>>>> .../bindings/i2c/i2c-hotplug-gpio.yaml | 65 +++++ > >>>>> drivers/i2c/muxes/Kconfig | 11 + > >>>>> drivers/i2c/muxes/Makefile | 1 + > >>>>> drivers/i2c/muxes/i2c-hotplug-gpio.c | 263 ++++++++++++++++++ > >>>>> 4 files changed, 340 insertions(+) > >>>>> create mode 100644 Documentation/devicetree/bindings/i2c/i2c-hotplug-gpio.yaml > >>>>> create mode 100644 drivers/i2c/muxes/i2c-hotplug-gpio.c > >>>> > >>>> Adding Herve and Luca to CC because they want to achieve the same with > >>>> their I2C bus extensions, no? > >> > >> Sorry, a misunderstanding: the question was for Herve and Luca. I wanted > >> to ask for a comment from them if this is the same problem (which I > >> think it is). The question was not meant for you. > >> > > > > Indeed, we try to handle the same use case. > > > > The i2c-hotplug-gpio.c driver handles only an connector with an I2C bus. > > > > On our side, we try to have something more generic that can handle more > > than one I2C and some other busses and resources (gpio, pwm, ...) wired > > to a connector. > > > > To move this i2c-hotplug-gpio to our proposal direction, this should become > > a connector driver with a i2c bus extension and an addon DT describing the > > i2c devices available on the addon board. > > > > The connector driver should monitor the gpio and apply the addon DT when it > > detects the addon plugged. > > > > Also, I am waiting for conclusions in the export symbols discussion [1] to > > re-spin the i2c bus extension series. > > I just have one question to add to what Hervé wrote. > > I guess in the big picture you have a device tree where all > hot-pluggable I2C devices are always described, but they won't probe > until i2c_hotplug_activate() adds an adapter for them. Is my > understanding correct? > Yes, your understanding is correct, i2c_hotplug creates a i2c mux from parent with a set of always described devices by GPIO signal. > If correct, this implies you can connect only one type of dock. Multple > dock models with different peripherals cannot be supported. > This configuration is used for ASUS Transformers and they don't have multiple docks, only one accessory is used and it is not swappable even between models by design, not even talking about different generations. SO configuration used by Transformers can be described just as title says "GPIO-detected hotplug I2C" devices are fixed just can be detached, but never swapped. > Best regards, > Luca >
© 2016 - 2025 Red Hat, Inc.