> -----Original Message-----
> From: Frank Li <frank...@nxp.com>
> Sent: Wednesday, 19 February 2025 12:24 am
> To: Maniyam, Dinesh <dinesh.mani...@intel.com>
> Cc: u-boot@lists.denx.de; Marek <ma...@denx.de>; Simon Goldschmidt
> <simon.k.r.goldschm...@gmail.com>; Simon Glass <s...@chromium.org>; Tom Rini
> <tr...@konsulko.com>; Ilias Apalodimas <ilias.apalodi...@linaro.org>; Heinrich
> Schuchardt <xypron.g...@gmx.de>; Jerome Forissier
> <jerome.foriss...@linaro.org>; Mattijs Korpershoek
> <mkorpersh...@baylibre.com>; Ibai Erkiaga <ibai.erkiaga-elo...@amd.com>;
> Michal Simek <michal.si...@amd.com>; Dmitry Rokosov
> <ddroko...@salutedevices.com>; Jonas Karlman <jo...@kwiboo.se>; Sebastian
> Reichel <sebastian.reic...@collabora.com>; Wang Jie <dave.wang@rock-
> chips.com>; Meng, Tingting <tingting.m...@intel.com>; Chee, Tien Fong
> <tien.fong.c...@intel.com>; Hea, Kok Kiang <kok.kiang....@intel.com>; Ng,
> Boon Khai <boon.khai...@intel.com>; Yuslaimi, Alif Zakuan
> <alif.zakuan.yusla...@intel.com>; Zamri, Muhammad Hazim Izzat
> <muhammad.hazim.izzat.za...@intel.com>; Lim, Jit Loon
> <jit.loon....@intel.com>; Tang, Sieu Mun <sieu.mun.t...@intel.com>
> Subject: Re: [PATCH 01/10] dt-bindings: i3c: Add YAML schema for Cadence I3C
> controller
>
> On Tue, Feb 18, 2025 at 10:56:56AM +0800, dinesh.mani...@intel.com wrote:
> > From: Dinesh Maniyam <dinesh.mani...@intel.com>
> >
> > Add a YAML device tree binding schema for the Cadence I3C controller,
>
> Cadence or snps? compatible string said snps.
>
> > defining required and optional properties for proper integration and
> > validation with dt-schema.
> >
> > Signed-off-by: Dinesh Maniyam <dinesh.mani...@intel.com>
> > ---
> > .../i3c/cdns,i3c-master.yaml | 51 +++++
> > doc/device-tree-bindings/i3c/i3c.yaml | 186 ++++++++++++++++++
> > 2 files changed, 237 insertions(+)
> > create mode 100644 doc/device-tree-bindings/i3c/cdns,i3c-master.yaml
>
> file name should be one of compatible string.
>
> > create mode 100644 doc/device-tree-bindings/i3c/i3c.yaml
>
> Where doc/device-tree-bindings/i3c?
>
> in kernel, and already have i3c.yaml
> Documentation/devicetree/bindings/i3c/
>
> stop here, fix file path firsly.
>
> Frank
> >
> > diff --git a/doc/device-tree-bindings/i3c/cdns,i3c-master.yaml
> > b/doc/device-tree-bindings/i3c/cdns,i3c-master.yaml
> > new file mode 100644
> > index 0000000000..0eda16482e
> > --- /dev/null
> > +++ b/doc/device-tree-bindings/i3c/cdns,i3c-master.yaml
> > @@ -0,0 +1,51 @@
> > +# SPDX-License-Identifier: GPL-2.0
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/i3c/cdns,i3c-master.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Cadence I3C master block
>
> Snps?
>
> > +
> > +maintainers:
> > + - Dinesh Maniyam <dinesh.mani...@intel.com>
> > +
> > +allOf:
> > + - $ref: i3c.yaml#
> > +
> > +properties:
> > + compatible:
> > + const: snps,dw-i3c-master-1.00a
> > +
> > + reg:
> > + maxItems: 1
> > +
> > + clocks:
> > + maxItems: 2
> > +
> > + interrupts:
> > + maxItems: 1
> > +
> > +required:
> > + - compatible
> > + - reg
> > + - clocks
> > + - interrupts
> > +
> > +unevaluatedProperties: false
> > +
> > +examples:
> > + - |
> > + i3c-master@2000 {
> > + compatible = "snps,dw-i3c-master-1.00a";
> > + reg = <0x02000 0x1000>;
> > + interrupts = <0>;
> > + clocks = <&i3cclk>;
> > + #address-cells = <2>;
> > + #size-cells = <0>;
> > +
> > + eeprom@57{
> > + compatible = "atmel,24c01";
> > + reg = <0x57 0x0 0x10>;
>
> please use macro in include/dt-bindings/i3c/i3c.h
>
> > + pagesize = <0x8>;
> > + };
> > + };
> > diff --git a/doc/device-tree-bindings/i3c/i3c.yaml
> > b/doc/device-tree-bindings/i3c/i3c.yaml
> > new file mode 100644
> > index 0000000000..8f9c440db2
> > --- /dev/null
> > +++ b/doc/device-tree-bindings/i3c/i3c.yaml
> > @@ -0,0 +1,186 @@
> > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/i3c/i3c.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: I3C bus
> > +
> > +maintainers:
> > + - Dinesh Maniyam <dinesh.mani...@intel.com>
> > +
> > +description: |
>
> Needn't |
>
> > + I3C busses can be described with a node for the primary I3C
> > + controller device and a set of child nodes for each I2C or I3C
> > + slave on the bus. Each of them may, during the life of the bus, request
> mastership.
> > +
> > +properties:
> > + $nodename:
> > + pattern: "^i3c-master@[0-9a-f]+$"
> > +
> > + "#address-cells":
> > + const: 3
> > + description: |
> > + Each I2C device connected to the bus should be described in a
> > subnode.
> > +
> > + All I3C devices are supposed to support DAA (Dynamic Address
> Assignment),
> > + and are thus discoverable. So, by default, I3C devices do not have
> > to be
> > + described in the device tree. This being said, one might want to
> > attach
> > + extra resources to these devices, and those resources may have to be
> > + described in the device tree, which in turn means we have to describe
> > + I3C devices.
> > +
> > + Another use case for describing an I3C device in the device tree is
> > when
> > + this I3C device has a static I2C address and we want to assign it a
> > + specific I3C dynamic address before the DAA takes place (so that
> > other
> > + devices on the bus can't take this dynamic address).
> > +
> > + "#size-cells":
> > + const: 0
> > +
> > + i3c-scl-hz:
> > + description: |
> > + Frequency of the SCL signal used for I3C transfers. When undefined,
> > the
> > + default value should be 12.5MHz.
> > +
> > + May not be supported by all controllers.
> > +
> > + i2c-scl-hz:
> > + description: |
> > + Frequency of the SCL signal used for I2C transfers. When undefined,
> > the
> > + default should be to look at LVR (Legacy Virtual Register) values of
> > + I2C devices described in the device tree to determine the maximum I2C
> > + frequency.
> > +
> > + May not be supported by all controllers.
> > +
> > +required:
> > + - "#address-cells"
> > + - "#size-cells"
> > +
> > +patternProperties:
> > + "@[0-9a-f]+$":
> > + type: object
> > + description: |
> > + I2C child, should be named: <device-type>@<i2c-address>
> > +
> > + All properties described in
> > Documentation/devicetree/bindings/i2c/i2c.txt
> > + are valid here, except the reg property whose content is changed.
> > +
> > + properties:
> > + compatible:
> > + description:
> > + Compatible of the I2C device.
> > +
> > + reg:
> > + items:
> > + - items:
> > + - description: |
> > + I2C address. 10 bit addressing is not supported. Devices
> > with
> > + 10-bit address can't be properly passed through DEFSLVS
> > + command.
> > + minimum: 0
> > + maximum: 0x7f
> > + - const: 0
> > + - description: |
> > + 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
> > +
> > + required:
> > + - compatible
> > + - reg
> > +
> > + "@[0-9a-f]+,[0-9a-f]+$":
> > + type: object
> > + description: |
> > + I3C child, should be named:
> > + <device-type>@<static-i2c-address>,<i3c-pid>
> > +
> > + properties:
> > + reg:
> > + items:
> > + - items:
> > + - description: |
> > + Encodes the static I2C address. Should be 0 if the
> > device does
> > + not have one (0 is not a valid I2C address).
> > + minimum: 0
> > + maximum: 0x7f
> > + - description: |
> > + First half of the Provisional ID (following the PID
> > + definition provided by the I3C specification).
> > +
> > + Contains the manufacturer ID left-shifted by 1.
> > + - description: |
> > + Second half of the Provisional ID (following the PID
> > + definition provided by the I3C specification).
> > +
> > + Contains the ORing of the part ID left-shifted by 16,
> > + the instance ID left-shifted by 12 and extra information.
> > +
> > + assigned-address:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + minimum: 0x1
> > + maximum: 0xff
> > + description: |
> > + Dynamic address to be assigned to this device. In case static
> > address is
> > + present (first cell of the reg property != 0), this address is
> > assigned
> > + through SETDASA. If static address is not present, this address
> > is assigned
> > + through SETNEWDA after assigning a temporary address via ENTDAA.
> > +
> > + required:
> > + - reg
> > +
> > +additionalProperties: true
> > +
> > +examples:
> > + - |
> > + i3c-master@d040000 {
> > + compatible = "cdns,i3c-master";
> > + clocks = <&coreclock>, <&i3csysclock>;
> > + clock-names = "pclk", "sysclk";
> > + interrupts = <3 0>;
> > + reg = <0x0d040000 0x1000>;
> > + #address-cells = <3>;
> > + #size-cells = <0>;
> > + i2c-scl-hz = <100000>;
> > +
> > + /* I2C device. */
> > + eeprom@57 {
> > + compatible = "atmel,24c01";
> > + reg = <0x57 0x0 0x10>;
> > + pagesize = <0x8>;
> > + };
> > +
> > + /* I3C device with a static I2C address and assigned address. */
> > + thermal_sensor: sensor@68,39200144004 {
> > + reg = <0x68 0x392 0x144004>;
> > + assigned-address = <0xa>;
> > + };
> > +
> > + /* I3C device with only assigned address. */
> > + pressure_sensor: sensor@0,39200124004 {
> > + reg = <0x0 0x392 0x124000>;
> > + assigned-address = <0xc>;
> > + };
> > +
> > + /*
> > + * I3C device without a static I2C address but requiring
> > + * resources described in the DT.
> > + */
> > + sensor@0,39200154004 {
> > + reg = <0x0 0x392 0x154004>;
> > + clocks = <&clock_provider 0>;
> > + };
> > + };
> > --
> > 2.26.2
> >
Will drop this commit, since the files in this commit are redundant.
Will make sure compatible string follow as per this yaml located in
Documentation/devicetree/bindings/i3c/snps,dw-i3c-master.yaml
Regards
Dinesh