On 4/4/23 3:30 AM, Thierry Reding wrote: > 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 <dipenp@xxxxxxxxxx> >>>> --- >>>> .../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. Ack... > > Thierry