[PATCH v4 1/6] dt-bindings: i3c: Convert controller description to yaml

Miquel Raynal miquel.raynal at bootlin.com
Mon Jan 18 10:25:08 EST 2021


Hi Rob,

> > +      reg:
> > +        items:
> > +          - description: |
> > +              1st cell
> > +              ========
> > +
> > +              I2C address. 10 bit addressing is not supported. Devices with
> > +              10-bit address can't be properly passed through DEFSLVS command.
> > +
> > +              2nd cell
> > +              ========
> > +
> > +              Should be 0.
> > +
> > +              3rd cell
> > +              ========
> > +
> > +              Shall encode the I3C LVR (Legacy Virtual Register):
> > +              bit[31:8]: unused/ignored
> > +              bit[7:5]: I2C device index. Possible values:
> > +                * 0: I2C device has a 50 ns spike filter
> > +                * 1: I2C device does not have a 50 ns spike filter but supports
> > +                     high frequency on SCL
> > +                * 2: I2C device does not have a 50 ns spike filter and is not
> > +                     tolerant to high frequencies
> > +                * 3-7: reserved
> > +              bit[4]: tell whether the device operates in FM (Fast Mode) or
> > +                      FM+ mode:
> > +                * 0: FM+ mode
> > +                * 1: FM mode
> > +              bit[3:0]: device type
> > +                * 0-15: reserved  
> 
> We can do a bit better:
> 
> reg:
>   items:
>     - items:  # Note: drop the '-' if we support more than 1 entry
>         - description: I2C address...
>           maximum: 0x7f  # Not sure this works, do we support the high 
>                          # flag bits here?
>         - const: 0
>         - description: I3C LVR (Legacy Virtual Register)...

I definitely think that it is a good move to properly define the fact
that we can accept only a single reg entry with three cells -and their
content, overall-, but this syntax does not work and I really don't find
the right way to describe it.

The error I get is:

---8<---
       reg:
         items:
           - items:
               - description: first item
               - description: second item
--->8---

schemas/i3c/i3c.yaml: ignoring, error in schema: patternProperties: @[0-9a-f]+$: properties: reg
<path>/i3c.yaml: patternProperties:@[0-9a-f]+$:properties:reg: 'anyOf' conditional failed, one must be fixed:
	'maxItems' is a required property
	'items' is not one of ['maxItems', 'description', 'deprecated']
	'items' is not one of ['description', 'deprecated', 'const', 'enum', 'minimum', 'maximum', 'default', '$ref']
	<path>/i3c.yaml: patternProperties:@[0-9a-f]+$:properties:reg:items: 'oneOf' conditional failed, one must be fixed:
		[{'items': [{'description': 'first item'}, {'description': 'second item'}]}] is not of type 'object'
		'items' is not one of ['description', 'deprecated', 'const', 'enum', 'minimum', 'maximum', 'default', '$ref']

I tried defining a phandle array, playing with the dashes, using allOf,
adding maxItems, none of it worked so far so any advice will be highly
appreciated!

Thanks,
Miquèl



More information about the linux-i3c mailing list