Message ID | 20250110100331.1642242-1-romain.naour@smile.fr (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [v5,1/2] dt-bindings: mfd: syscon: Add ti,j721e-acspcie-proxy-ctrl compatible | expand |
On Fri, Jan 10, 2025 at 11:03:30AM +0100, Romain Naour wrote: > From: Romain Naour <romain.naour@skf.com> > > The ACSPCIE_PROXY_CTRL registers within the CTRL_MMR space of TI's J721e > SoC are used to drive the reference clock to the PCIe Endpoint device via > the PAD IO Buffers. Add the compatible for allowing the PCIe driver to > obtain the regmap for the ACSPCIE_CTRL register within the System > Controller device-tree node in order to enable the PAD IO Buffers. > > Using the ti,j721e-acspcie-proxy-ctrl compatible imply to use "Proxy1" > address (1A090h) instead of "Proxy0" (18090h) to access > CTRLMMR_ACSPCIE0_CTRL register: > > CTRLMMR_ACSPCIE0_CTRL Register (Proxy0 Offset = 18090h; Proxy1 Offset = 1A090h) > > "Proxy0" is used as the default access path that can be locked with the > help of "CTRLMMR_LOCK0_KICK0" and "CTRLMMR_LOCK0_KICK1" registers. > > The Technical Reference Manual for J721e SoC with details of the > ASCPCIE_CTRL registers is available at: > https://www.ti.com/lit/zip/spruil1 > > Signed-off-by: Romain Naour <romain.naour@skf.com> > --- > v5: > - Add missing change to the J721e system controller binding > to avoid DT check warning when the new acspcie0_proxy_ctrl (syscon) > will be added to J721e system controller node (Andrew Davis). > > https://lore.kernel.org/linux-devicetree/90f47fae-a493-471d-8fe6-e7df741161be@ti.com/ > > - Explain why "Proxy1" address (1A090h) should be used while using > ti,j721e-acspcie-proxy-ctrl compatible (Siddharth Vadapalli). > > https://lore.kernel.org/linux-devicetree/begojbvvrpyjfr3pye7mqwiw73ucw5ynepdfujssr4jx4vs33a@pwahnph3qesl/ > > v4: Add missing change in the second list (From Andrew Davis) [1] > Rebase after the ti,j784s4-acspcie-proxy-ctrl compatible fix [2] > [1] https://lore.kernel.org/linux-devicetree/20250103174524.28768-1-afd@ti.com/ > [2] https://lore.kernel.org/linux-devicetree/20250103174524.28768-2-afd@ti.com/ > > v3: new commit > --- > Documentation/devicetree/bindings/mfd/syscon.yaml | 2 ++ > .../bindings/soc/ti/ti,j721e-system-controller.yaml | 6 ++++++ > 2 files changed, 8 insertions(+) > > diff --git a/Documentation/devicetree/bindings/mfd/syscon.yaml b/Documentation/devicetree/bindings/mfd/syscon.yaml > index 0e68c69e7bc9..1f3e67f432e7 100644 > --- a/Documentation/devicetree/bindings/mfd/syscon.yaml > +++ b/Documentation/devicetree/bindings/mfd/syscon.yaml > @@ -115,6 +115,7 @@ select: > - ti,am625-dss-oldi-io-ctrl > - ti,am62p-cpsw-mac-efuse > - ti,am654-dss-oldi-io-ctrl > + - ti,j721e-acspcie-proxy-ctrl > - ti,j784s4-acspcie-proxy-ctrl > - ti,j784s4-pcie-ctrl > - ti,keystone-pllctrl > @@ -213,6 +214,7 @@ properties: > - ti,am625-dss-oldi-io-ctrl > - ti,am62p-cpsw-mac-efuse > - ti,am654-dss-oldi-io-ctrl > + - ti,j721e-acspcie-proxy-ctrl > - ti,j784s4-acspcie-proxy-ctrl How do these 2 compare? Are they compatible? > - ti,j784s4-pcie-ctrl > - ti,keystone-pllctrl > diff --git a/Documentation/devicetree/bindings/soc/ti/ti,j721e-system-controller.yaml b/Documentation/devicetree/bindings/soc/ti/ti,j721e-system-controller.yaml > index 378e9cc5fac2..16929218d611 100644 > --- a/Documentation/devicetree/bindings/soc/ti/ti,j721e-system-controller.yaml > +++ b/Documentation/devicetree/bindings/soc/ti/ti,j721e-system-controller.yaml > @@ -68,6 +68,12 @@ patternProperties: > description: > The node corresponding to SoC chip identification. > > + "^syscon@[0-9a-f]+$": > + type: object > + $ref: /schemas/mfd/syscon.yaml# > + description: > + This is the ASPCIe control region. So this is a syscon child of a syscon. The primary reason for 'syscon' compatible is to create a regmap. Why can't you use the parent's syscon? Rob
On 1/10/25 9:35 AM, Rob Herring wrote: > On Fri, Jan 10, 2025 at 11:03:30AM +0100, Romain Naour wrote: >> From: Romain Naour <romain.naour@skf.com> >> >> The ACSPCIE_PROXY_CTRL registers within the CTRL_MMR space of TI's J721e >> SoC are used to drive the reference clock to the PCIe Endpoint device via >> the PAD IO Buffers. Add the compatible for allowing the PCIe driver to >> obtain the regmap for the ACSPCIE_CTRL register within the System >> Controller device-tree node in order to enable the PAD IO Buffers. >> >> Using the ti,j721e-acspcie-proxy-ctrl compatible imply to use "Proxy1" >> address (1A090h) instead of "Proxy0" (18090h) to access >> CTRLMMR_ACSPCIE0_CTRL register: >> >> CTRLMMR_ACSPCIE0_CTRL Register (Proxy0 Offset = 18090h; Proxy1 Offset = 1A090h) >> >> "Proxy0" is used as the default access path that can be locked with the >> help of "CTRLMMR_LOCK0_KICK0" and "CTRLMMR_LOCK0_KICK1" registers. >> >> The Technical Reference Manual for J721e SoC with details of the >> ASCPCIE_CTRL registers is available at: >> https://www.ti.com/lit/zip/spruil1 >> >> Signed-off-by: Romain Naour <romain.naour@skf.com> >> --- >> v5: >> - Add missing change to the J721e system controller binding >> to avoid DT check warning when the new acspcie0_proxy_ctrl (syscon) >> will be added to J721e system controller node (Andrew Davis). >> >> https://lore.kernel.org/linux-devicetree/90f47fae-a493-471d-8fe6-e7df741161be@ti.com/ >> >> - Explain why "Proxy1" address (1A090h) should be used while using >> ti,j721e-acspcie-proxy-ctrl compatible (Siddharth Vadapalli). >> >> https://lore.kernel.org/linux-devicetree/begojbvvrpyjfr3pye7mqwiw73ucw5ynepdfujssr4jx4vs33a@pwahnph3qesl/ >> >> v4: Add missing change in the second list (From Andrew Davis) [1] >> Rebase after the ti,j784s4-acspcie-proxy-ctrl compatible fix [2] >> [1] https://lore.kernel.org/linux-devicetree/20250103174524.28768-1-afd@ti.com/ >> [2] https://lore.kernel.org/linux-devicetree/20250103174524.28768-2-afd@ti.com/ >> >> v3: new commit >> --- >> Documentation/devicetree/bindings/mfd/syscon.yaml | 2 ++ >> .../bindings/soc/ti/ti,j721e-system-controller.yaml | 6 ++++++ >> 2 files changed, 8 insertions(+) >> >> diff --git a/Documentation/devicetree/bindings/mfd/syscon.yaml b/Documentation/devicetree/bindings/mfd/syscon.yaml >> index 0e68c69e7bc9..1f3e67f432e7 100644 >> --- a/Documentation/devicetree/bindings/mfd/syscon.yaml >> +++ b/Documentation/devicetree/bindings/mfd/syscon.yaml >> @@ -115,6 +115,7 @@ select: >> - ti,am625-dss-oldi-io-ctrl >> - ti,am62p-cpsw-mac-efuse >> - ti,am654-dss-oldi-io-ctrl >> + - ti,j721e-acspcie-proxy-ctrl >> - ti,j784s4-acspcie-proxy-ctrl >> - ti,j784s4-pcie-ctrl >> - ti,keystone-pllctrl >> @@ -213,6 +214,7 @@ properties: >> - ti,am625-dss-oldi-io-ctrl >> - ti,am62p-cpsw-mac-efuse >> - ti,am654-dss-oldi-io-ctrl > >> + - ti,j721e-acspcie-proxy-ctrl >> - ti,j784s4-acspcie-proxy-ctrl > > How do these 2 compare? Are they compatible? > Yes, they are 100% identical and compatible, but we were told to make a new string anyway.. [0] [0] https://lore.kernel.org/all/1bfdf1f1-7542-4149-a85d-2ac4b659b26b@kernel.org/ >> - ti,j784s4-pcie-ctrl >> - ti,keystone-pllctrl >> diff --git a/Documentation/devicetree/bindings/soc/ti/ti,j721e-system-controller.yaml b/Documentation/devicetree/bindings/soc/ti/ti,j721e-system-controller.yaml >> index 378e9cc5fac2..16929218d611 100644 >> --- a/Documentation/devicetree/bindings/soc/ti/ti,j721e-system-controller.yaml >> +++ b/Documentation/devicetree/bindings/soc/ti/ti,j721e-system-controller.yaml >> @@ -68,6 +68,12 @@ patternProperties: >> description: >> The node corresponding to SoC chip identification. >> >> + "^syscon@[0-9a-f]+$": >> + type: object >> + $ref: /schemas/mfd/syscon.yaml# >> + description: >> + This is the ASPCIe control region. > > So this is a syscon child of a syscon. The primary reason for 'syscon' > compatible is to create a regmap. Why can't you use the parent's syscon? > The parent node will not be a syscon soon. We made this whole bus a "syscon" so we could just poke any register we wanted which was a hacky solution we want to fix. The parent will be converted into a normal "simple-bus". Most of the IP in this region can be described using normal DT devices, but there are still just a couple registers like this where we need a raw syscon (or we could make a proper device driver for these registers, but that might be excessive, instead seems easy enough to just poke them directly from the PCIe driver). Andrew > Rob
On Fri, Jan 10, 2025 at 10:17:15AM -0600, Andrew Davis wrote: > On 1/10/25 9:35 AM, Rob Herring wrote: > > On Fri, Jan 10, 2025 at 11:03:30AM +0100, Romain Naour wrote: > > > From: Romain Naour <romain.naour@skf.com> > > > > > > The ACSPCIE_PROXY_CTRL registers within the CTRL_MMR space of TI's J721e > > > SoC are used to drive the reference clock to the PCIe Endpoint device via > > > the PAD IO Buffers. Add the compatible for allowing the PCIe driver to > > > obtain the regmap for the ACSPCIE_CTRL register within the System > > > Controller device-tree node in order to enable the PAD IO Buffers. > > > > > > Using the ti,j721e-acspcie-proxy-ctrl compatible imply to use "Proxy1" > > > address (1A090h) instead of "Proxy0" (18090h) to access > > > CTRLMMR_ACSPCIE0_CTRL register: > > > > > > CTRLMMR_ACSPCIE0_CTRL Register (Proxy0 Offset = 18090h; Proxy1 Offset = 1A090h) > > > > > > "Proxy0" is used as the default access path that can be locked with the > > > help of "CTRLMMR_LOCK0_KICK0" and "CTRLMMR_LOCK0_KICK1" registers. > > > > > > The Technical Reference Manual for J721e SoC with details of the > > > ASCPCIE_CTRL registers is available at: > > > https://www.ti.com/lit/zip/spruil1 > > > > > > Signed-off-by: Romain Naour <romain.naour@skf.com> > > > --- > > > v5: > > > - Add missing change to the J721e system controller binding > > > to avoid DT check warning when the new acspcie0_proxy_ctrl (syscon) > > > will be added to J721e system controller node (Andrew Davis). > > > > > > https://lore.kernel.org/linux-devicetree/90f47fae-a493-471d-8fe6-e7df741161be@ti.com/ > > > > > > - Explain why "Proxy1" address (1A090h) should be used while using > > > ti,j721e-acspcie-proxy-ctrl compatible (Siddharth Vadapalli). > > > > > > https://lore.kernel.org/linux-devicetree/begojbvvrpyjfr3pye7mqwiw73ucw5ynepdfujssr4jx4vs33a@pwahnph3qesl/ > > > > > > v4: Add missing change in the second list (From Andrew Davis) [1] > > > Rebase after the ti,j784s4-acspcie-proxy-ctrl compatible fix [2] > > > [1] https://lore.kernel.org/linux-devicetree/20250103174524.28768-1-afd@ti.com/ > > > [2] https://lore.kernel.org/linux-devicetree/20250103174524.28768-2-afd@ti.com/ > > > > > > v3: new commit > > > --- > > > Documentation/devicetree/bindings/mfd/syscon.yaml | 2 ++ > > > .../bindings/soc/ti/ti,j721e-system-controller.yaml | 6 ++++++ > > > 2 files changed, 8 insertions(+) > > > > > > diff --git a/Documentation/devicetree/bindings/mfd/syscon.yaml b/Documentation/devicetree/bindings/mfd/syscon.yaml > > > index 0e68c69e7bc9..1f3e67f432e7 100644 > > > --- a/Documentation/devicetree/bindings/mfd/syscon.yaml > > > +++ b/Documentation/devicetree/bindings/mfd/syscon.yaml > > > @@ -115,6 +115,7 @@ select: > > > - ti,am625-dss-oldi-io-ctrl > > > - ti,am62p-cpsw-mac-efuse > > > - ti,am654-dss-oldi-io-ctrl > > > + - ti,j721e-acspcie-proxy-ctrl > > > - ti,j784s4-acspcie-proxy-ctrl > > > - ti,j784s4-pcie-ctrl > > > - ti,keystone-pllctrl > > > @@ -213,6 +214,7 @@ properties: > > > - ti,am625-dss-oldi-io-ctrl > > > - ti,am62p-cpsw-mac-efuse > > > - ti,am654-dss-oldi-io-ctrl > > > > > + - ti,j721e-acspcie-proxy-ctrl > > > - ti,j784s4-acspcie-proxy-ctrl > > > > How do these 2 compare? Are they compatible? > > > > Yes, they are 100% identical and compatible, but we were told > to make a new string anyway.. [0] > > [0] https://lore.kernel.org/all/1bfdf1f1-7542-4149-a85d-2ac4b659b26b@kernel.org/ Then you should have: "ti,j721e-acspcie-proxy-ctrl", "ti,j784s4-acspcie-proxy-ctrl", "syscon" > > > > > - ti,j784s4-pcie-ctrl > > > - ti,keystone-pllctrl > > > diff --git a/Documentation/devicetree/bindings/soc/ti/ti,j721e-system-controller.yaml b/Documentation/devicetree/bindings/soc/ti/ti,j721e-system-controller.yaml > > > index 378e9cc5fac2..16929218d611 100644 > > > --- a/Documentation/devicetree/bindings/soc/ti/ti,j721e-system-controller.yaml > > > +++ b/Documentation/devicetree/bindings/soc/ti/ti,j721e-system-controller.yaml > > > @@ -68,6 +68,12 @@ patternProperties: > > > description: > > > The node corresponding to SoC chip identification. > > > + "^syscon@[0-9a-f]+$": > > > + type: object > > > + $ref: /schemas/mfd/syscon.yaml# > > > + description: > > > + This is the ASPCIe control region. > > > > So this is a syscon child of a syscon. The primary reason for 'syscon' > > compatible is to create a regmap. Why can't you use the parent's syscon? > > > > The parent node will not be a syscon soon. We made this whole bus a "syscon" > so we could just poke any register we wanted which was a hacky solution we > want to fix. The parent will be converted into a normal "simple-bus". Sigh... And that can be done without ABI breakage? > Most of the IP in this region can be described using normal DT devices, > but there are still just a couple registers like this where we need a raw > syscon (or we could make a proper device driver for these registers, but > that might be excessive, instead seems easy enough to just poke them > directly from the PCIe driver). Given it was already a syscon, keeping that is fine. Rob
diff --git a/Documentation/devicetree/bindings/mfd/syscon.yaml b/Documentation/devicetree/bindings/mfd/syscon.yaml index 0e68c69e7bc9..1f3e67f432e7 100644 --- a/Documentation/devicetree/bindings/mfd/syscon.yaml +++ b/Documentation/devicetree/bindings/mfd/syscon.yaml @@ -115,6 +115,7 @@ select: - ti,am625-dss-oldi-io-ctrl - ti,am62p-cpsw-mac-efuse - ti,am654-dss-oldi-io-ctrl + - ti,j721e-acspcie-proxy-ctrl - ti,j784s4-acspcie-proxy-ctrl - ti,j784s4-pcie-ctrl - ti,keystone-pllctrl @@ -213,6 +214,7 @@ properties: - ti,am625-dss-oldi-io-ctrl - ti,am62p-cpsw-mac-efuse - ti,am654-dss-oldi-io-ctrl + - ti,j721e-acspcie-proxy-ctrl - ti,j784s4-acspcie-proxy-ctrl - ti,j784s4-pcie-ctrl - ti,keystone-pllctrl diff --git a/Documentation/devicetree/bindings/soc/ti/ti,j721e-system-controller.yaml b/Documentation/devicetree/bindings/soc/ti/ti,j721e-system-controller.yaml index 378e9cc5fac2..16929218d611 100644 --- a/Documentation/devicetree/bindings/soc/ti/ti,j721e-system-controller.yaml +++ b/Documentation/devicetree/bindings/soc/ti/ti,j721e-system-controller.yaml @@ -68,6 +68,12 @@ patternProperties: description: The node corresponding to SoC chip identification. + "^syscon@[0-9a-f]+$": + type: object + $ref: /schemas/mfd/syscon.yaml# + description: + This is the ASPCIe control region. + required: - compatible - reg