Message ID | 57666b4f-4c12-7feb-caf1-5bd38908bfc7@gmail.com |
---|---|
Headers | show |
Series | i2c: gpio: support write-only sda | expand |
On Tue, Jan 17, 2023 at 09:36:05PM +0100, Heiner Kallweit wrote: > There are slave devices that understand I2C but have read-only SDA and > SCL. Examples are FD650 7-segment LED controller and its derivatives. > Typical board designs don't even have a pull-up for both pins. > Therefore add properties for not using open-drain. For write-only SCL > we have a property already, add one for write-only SDA. > > Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> > --- > v4: > - add no-pullup properties > --- > .../devicetree/bindings/i2c/i2c-gpio.yaml | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/Documentation/devicetree/bindings/i2c/i2c-gpio.yaml b/Documentation/devicetree/bindings/i2c/i2c-gpio.yaml > index e0d76d5eb..67898cc52 100644 > --- a/Documentation/devicetree/bindings/i2c/i2c-gpio.yaml > +++ b/Documentation/devicetree/bindings/i2c/i2c-gpio.yaml > @@ -33,6 +33,10 @@ properties: > open drain. > maxItems: 1 > > + i2c-gpio,sda-output-only: > + description: sda as output only > + type: boolean > + > i2c-gpio,scl-output-only: > description: scl as output only > type: boolean > @@ -63,6 +67,18 @@ properties: > GPIO line used for SCL into open drain mode, and that something is not > the GPIO chip. It is essentially an inconsistency flag. > > + i2c-gpio,sda-has-no-pullup: > + type: boolean > + description: sda is used in a non-compliant way and has no pull-up. > + Therefore disable open-drain. This property is mutually-exclusive > + with i2c-gpio,sda-open-drain. > + > + i2c-gpio,scl-has-no-pullup: > + type: boolean > + description: scl is used in a non-compliant way and has no pull-up. > + Therefore disable open-drain. This property is mutually-exclusive > + with i2c-gpio,scl-open-drain. The mutual-exclusion can be expressed as a schema instead: allOf: - not: required: - i2c-gpio,scl-has-no-pullup - i2c-gpio,scl-open-drain - not: required: - i2c-gpio,sda-has-no-pullup - i2c-gpio,sda-open-drain Using 'dependencies' with a schema would also work. Rob
On 18.01.2023 17:32, Rob Herring wrote: > On Tue, Jan 17, 2023 at 09:36:05PM +0100, Heiner Kallweit wrote: >> There are slave devices that understand I2C but have read-only SDA and >> SCL. Examples are FD650 7-segment LED controller and its derivatives. >> Typical board designs don't even have a pull-up for both pins. >> Therefore add properties for not using open-drain. For write-only SCL >> we have a property already, add one for write-only SDA. >> >> Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> >> --- >> v4: >> - add no-pullup properties >> --- >> .../devicetree/bindings/i2c/i2c-gpio.yaml | 16 ++++++++++++++++ >> 1 file changed, 16 insertions(+) >> >> diff --git a/Documentation/devicetree/bindings/i2c/i2c-gpio.yaml b/Documentation/devicetree/bindings/i2c/i2c-gpio.yaml >> index e0d76d5eb..67898cc52 100644 >> --- a/Documentation/devicetree/bindings/i2c/i2c-gpio.yaml >> +++ b/Documentation/devicetree/bindings/i2c/i2c-gpio.yaml >> @@ -33,6 +33,10 @@ properties: >> open drain. >> maxItems: 1 >> >> + i2c-gpio,sda-output-only: >> + description: sda as output only >> + type: boolean >> + >> i2c-gpio,scl-output-only: >> description: scl as output only >> type: boolean >> @@ -63,6 +67,18 @@ properties: >> GPIO line used for SCL into open drain mode, and that something is not >> the GPIO chip. It is essentially an inconsistency flag. >> >> + i2c-gpio,sda-has-no-pullup: >> + type: boolean >> + description: sda is used in a non-compliant way and has no pull-up. >> + Therefore disable open-drain. This property is mutually-exclusive >> + with i2c-gpio,sda-open-drain. >> + >> + i2c-gpio,scl-has-no-pullup: >> + type: boolean >> + description: scl is used in a non-compliant way and has no pull-up. >> + Therefore disable open-drain. This property is mutually-exclusive >> + with i2c-gpio,scl-open-drain. > > The mutual-exclusion can be expressed as a schema instead: > > allOf: > - not: > required: > - i2c-gpio,scl-has-no-pullup > - i2c-gpio,scl-open-drain > - not: > required: > - i2c-gpio,sda-has-no-pullup > - i2c-gpio,sda-open-drain > > Using 'dependencies' with a schema would also work. > Great, I wasn't aware of options to express mutually-exclusive properties. I'll wait a little for other feedback regarding the series and then submit a new version incl. the extended schema. > Rob Heiner