On Mon, Mar 27, 2023 at 09:58:19AM -0700, Dipen Patel wrote: > On 3/25/23 4:07 AM, Krzysztof Kozlowski wrote: > > On 23/03/2023 02:29, Dipen Patel wrote: > >> Introducing nvidia,gpio-controller property from Tegra234 SoCs onwards. > >> This is done to help below case. > >> > >> Without this property code would look like: > >> if (of_device_is_compatible(dev->of_node, "nvidia,tegra194-gte-aon")) > >> hte_dev->c = gpiochip_find("tegra194-gpio-aon", > >> tegra_get_gpiochip_from_name); > >> else if (of_device_is_compatible(dev->of_node, "nvidia,tegra234-gte-aon")) > >> hte_dev->c = gpiochip_find("tegra234-gpio-aon", > >> tegra_get_gpiochip_from_name); > >> else > >> return -ENODEV; > >> > >> This means for every future addition of the compatible string, if else > >> condition statements have to be expanded. > >> > >> With the property: > >> gpio_ctrl = of_parse_phandle(dev->of_node, "nvidia,gpio-controller", 0); > >> .... > >> hte_dev->c = gpiochip_find(gpio_ctrl, tegra_get_gpiochip_from_of_node); > >> > >> This simplifies the code significantly. The introdunction of this > >> property/binding does not break existing Tegra194 provider driver. > >> > >> Signed-off-by: Dipen Patel > >> --- > >> .../timestamp/nvidia,tegra194-hte.yaml | 31 +++++++++++++++++-- > >> 1 file changed, 29 insertions(+), 2 deletions(-) > >> > >> diff --git a/Documentation/devicetree/bindings/timestamp/nvidia,tegra194-hte.yaml b/Documentation/devicetree/bindings/timestamp/nvidia,tegra194-hte.yaml > >> index eafc33e9ae2e..841273a3d8ae 100644 > >> --- a/Documentation/devicetree/bindings/timestamp/nvidia,tegra194-hte.yaml > >> +++ b/Documentation/devicetree/bindings/timestamp/nvidia,tegra194-hte.yaml > >> @@ -51,6 +51,12 @@ properties: > >> LIC instance has 11 slices and Tegra234 LIC has 17 slices. > >> enum: [3, 11, 17] > >> > >> + nvidia,gpio-controller: > >> + $ref: /schemas/types.yaml#/definitions/phandle > >> + description: > >> + The phandle to AON gpio controller instance. This is required to handle > >> + namespace conversion between GPIO and GTE. > >> + > >> '#timestamp-cells': > >> description: > >> This represents number of line id arguments as specified by the > >> @@ -65,22 +71,43 @@ required: > >> - interrupts > >> - "#timestamp-cells" > >> > >> +allOf: > >> + - if: > >> + properties: > >> + compatible: > >> + contains: > >> + enum: > >> + - nvidia,tegra234-gte-aon > >> + then: > >> + required: > >> + - nvidia,gpio-controller > >> + > >> additionalProperties: false > >> > >> examples: > >> - | > >> tegra_hte_aon: timestamp@c1e0000 { > >> compatible = "nvidia,tegra194-gte-aon"; > >> - reg = <0xc1e0000 0x10000>; > >> + reg = <0x0 0xc1e0000 0x0 0x10000>; > > > > This is not really explained in commit msg... are you sure you tested it? > I have to revert this part back in next patch as when I upgraded dtsschema it gave me errors. We need the 0x0 in the DTS files because we have #address-cells = <2> and #size-tells = <2>. For the examples, those default to just 1 cell, so this can't be an exact copy of what we have in the DTS files. Please make sure to always validate the bindings and examples. Thierry