Hi Francesco, On Wed, Nov 29, 2023 at 8:29 AM Francesco Dolcini <francesco@xxxxxxxxxx> wrote: > On Sat, Nov 25, 2023 at 07:44:22PM +0100, Krzysztof Kozlowski wrote: > > Document preferred coding style for Devicetree sources (DTS and DTSI), > > to bring consistency among all (sub)architectures and ease in reviews. > > Thank Krzysztof, we had most of this collected as BKM in some internal > documents and it's great to see the effort to consolidate this and add > it to the kernel documentation. > > > --- > > +Following order of properties in device nodes is preferred: > > + > > +1. compatible > > +2. reg > > +3. ranges > > +4. Standard/common properties (defined by common bindings, e.g. without > > + vendor-prefixes) > > +5. Vendor-specific properties > > +6. status (if applicable) > > +7. Child nodes, where each node is preceded with a blank line > > On point 4, do you have a more explicit way to define what is an actual > standard/common property? You mention the vendor-prefixes as an example, > is this just an example or this is the whole definition? I think there are three classes of standard properties: 1. Device Tree Specification (from devicetree.org) 2. dt-schema 3. Common subsystem bindings (Documentation/devicetree/bindings/) (may be moved to 2). > What would be the order for this for example (from an existing DTS file)? > > reg_sdhc1_vmmc: regulator-sdhci1 { > compatible = "regulator-fixed"; > pinctrl-names = "default"; > pinctrl-0 = <&pinctrl_sd1_pwr_en>; > enable-active-high; > gpio = <&main_gpio0 29 GPIO_ACTIVE_HIGH>; > off-on-delay-us = <100000>; > regulator-max-microvolt = <3300000>; > regulator-min-microvolt = <3300000>; > regulator-name = "+V3.3_SD"; > startup-delay-us = <2000>; > }; > > I guess the point that is not obvious to me here is where do we want > pinctrl. I like it at position between 3 and 4, the rationale is that is > a very frequent property and this way it will be in a similar place for > every node. The pinctrl properties are only present in board DTS files, not in SoC DTSi files. There are two classes of them: 1. Extension of on-SoC devices, where they are added to already existing nodes, defined in the SoC DTSi files, e.g. (from the same existing DTS file): &cpsw3g { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_rgmii1>; status = "disabled"; }; 2. Pure board devices, in new nodes (e.g. your regulator example). These are less common, so I don't even know from the top of my mind when I last added one, and where ;-) I'd guess after all standard properties? Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds