diff mbox

[v2] ARM: dts: zynq: Add OCM node

Message ID 6df19b400e314ef8228be475bb8ba83765683016.1423737765.git.michal.simek@xilinx.com (mailing list archive)
State New, archived
Headers show

Commit Message

Michal Simek Feb. 12, 2015, 10:42 a.m. UTC
Add OCM node for all zynq boards. OCM location
can changed but for all current boards this
is the location where OCM is.`

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
---

Changes in v2:
- Move node to board file suggested by Mark

This patch is done based on discussion here.
https://lkml.org/lkml/2014/12/1/396

Mark: I expect you won't like amba bus reference or
am I wrong?

---
 arch/arm/boot/dts/zynq-7000.dtsi | 2 +-
 arch/arm/boot/dts/zynq-zc702.dts | 7 +++++++
 2 files changed, 8 insertions(+), 1 deletion(-)

Comments

Mark Rutland Feb. 12, 2015, 10:54 a.m. UTC | #1
On Thu, Feb 12, 2015 at 10:42:47AM +0000, Michal Simek wrote:
> Add OCM node for all zynq boards. OCM location
> can changed but for all current boards this
> is the location where OCM is.`
> 
> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
> ---
> 
> Changes in v2:
> - Move node to board file suggested by Mark
> 
> This patch is done based on discussion here.
> https://lkml.org/lkml/2014/12/1/396
> 
> Mark: I expect you won't like amba bus reference or
> am I wrong?

I'm fine with dropping things onto a bus in this way. If we're happy to
do it for other nodes I don't see why busses should be special.

Mark.

> 
> ---
>  arch/arm/boot/dts/zynq-7000.dtsi | 2 +-
>  arch/arm/boot/dts/zynq-zc702.dts | 7 +++++++
>  2 files changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/arm/boot/dts/zynq-7000.dtsi b/arch/arm/boot/dts/zynq-7000.dtsi
> index a5cd2eda3edf..acca3c180324 100644
> --- a/arch/arm/boot/dts/zynq-7000.dtsi
> +++ b/arch/arm/boot/dts/zynq-7000.dtsi
> @@ -57,7 +57,7 @@
>  		regulator-always-on;
>  	};
>  
> -	amba {
> +	amba: amba {
>  		compatible = "simple-bus";
>  		#address-cells = <1>;
>  		#size-cells = <1>;
> diff --git a/arch/arm/boot/dts/zynq-zc702.dts b/arch/arm/boot/dts/zynq-zc702.dts
> index fb59d34e8ee6..79077c5ac60e 100644
> --- a/arch/arm/boot/dts/zynq-zc702.dts
> +++ b/arch/arm/boot/dts/zynq-zc702.dts
> @@ -50,6 +50,13 @@
>  	};
>  };
>  
> +&amba {
> +	ocm: sram@fffc0000 {
> +		compatible = "mmio-sram";
> +		reg = <0xfffc0000 0x10000>;
> +	};
> +};
> +
>  &can0 {
>  	status = "okay";
>  	pinctrl-names = "default";
> -- 
> 1.8.2.3
> 
>
Michal Simek Feb. 12, 2015, 11:01 a.m. UTC | #2
On 02/12/2015 11:54 AM, Mark Rutland wrote:
> On Thu, Feb 12, 2015 at 10:42:47AM +0000, Michal Simek wrote:
>> Add OCM node for all zynq boards. OCM location
>> can changed but for all current boards this
>> is the location where OCM is.`
>>
>> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
>> ---
>>
>> Changes in v2:
>> - Move node to board file suggested by Mark
>>
>> This patch is done based on discussion here.
>> https://lkml.org/lkml/2014/12/1/396
>>
>> Mark: I expect you won't like amba bus reference or
>> am I wrong?
> 
> I'm fine with dropping things onto a bus in this way. If we're happy to
> do it for other nodes I don't see why busses should be special.

Wonderful. I will give people some time to comment this style.

Thanks for your comments,
Michal
Soren Brinkmann Feb. 12, 2015, 2:58 p.m. UTC | #3
On Thu, 2015-02-12 at 12:01PM +0100, Michal Simek wrote:
> On 02/12/2015 11:54 AM, Mark Rutland wrote:
> > On Thu, Feb 12, 2015 at 10:42:47AM +0000, Michal Simek wrote:
> >> Add OCM node for all zynq boards. OCM location
> >> can changed but for all current boards this
> >> is the location where OCM is.`
> >>
> >> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
> >> ---
> >>
> >> Changes in v2:
> >> - Move node to board file suggested by Mark
> >>
> >> This patch is done based on discussion here.
> >> https://lkml.org/lkml/2014/12/1/396
> >>
> >> Mark: I expect you won't like amba bus reference or
> >> am I wrong?
> > 
> > I'm fine with dropping things onto a bus in this way. If we're happy to
> > do it for other nodes I don't see why busses should be special.
> 
> Wonderful. I will give people some time to comment this style.

Given that the location is discoverable, wouldn't it make sense to let
'reg' point to the ctrl/cfg registers in the SLCR and let the driver
handle the whereabouts of the OCM location? (but I guess this is going
in circles now, such a proposal was on the table at some point, IIRC).
But I'd prefer:
	memory-controller@0xfffc0000 { /* the address here would of course not match all configurations */
		interrupts = ...;
		syscon = &slcr;
	};

	Soren
Michal Simek Feb. 12, 2015, 3 p.m. UTC | #4
On 02/12/2015 03:58 PM, Sören Brinkmann wrote:
> On Thu, 2015-02-12 at 12:01PM +0100, Michal Simek wrote:
>> On 02/12/2015 11:54 AM, Mark Rutland wrote:
>>> On Thu, Feb 12, 2015 at 10:42:47AM +0000, Michal Simek wrote:
>>>> Add OCM node for all zynq boards. OCM location
>>>> can changed but for all current boards this
>>>> is the location where OCM is.`
>>>>
>>>> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
>>>> ---
>>>>
>>>> Changes in v2:
>>>> - Move node to board file suggested by Mark
>>>>
>>>> This patch is done based on discussion here.
>>>> https://lkml.org/lkml/2014/12/1/396
>>>>
>>>> Mark: I expect you won't like amba bus reference or
>>>> am I wrong?
>>>
>>> I'm fine with dropping things onto a bus in this way. If we're happy to
>>> do it for other nodes I don't see why busses should be special.
>>
>> Wonderful. I will give people some time to comment this style.
> 
> Given that the location is discoverable, wouldn't it make sense to let
> 'reg' point to the ctrl/cfg registers in the SLCR and let the driver
> handle the whereabouts of the OCM location? (but I guess this is going
> in circles now, such a proposal was on the table at some point, IIRC).
> But I'd prefer:
> 	memory-controller@0xfffc0000 { /* the address here would of course not match all configurations */
> 		interrupts = ...;
> 		syscon = &slcr;
> 	};

That was discussed with Arnd at that link above.

Thanks,
Michal
Mark Rutland Feb. 12, 2015, 3:07 p.m. UTC | #5
On Thu, Feb 12, 2015 at 02:58:36PM +0000, Sören Brinkmann wrote:
> On Thu, 2015-02-12 at 12:01PM +0100, Michal Simek wrote:
> > On 02/12/2015 11:54 AM, Mark Rutland wrote:
> > > On Thu, Feb 12, 2015 at 10:42:47AM +0000, Michal Simek wrote:
> > >> Add OCM node for all zynq boards. OCM location
> > >> can changed but for all current boards this
> > >> is the location where OCM is.`
> > >>
> > >> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
> > >> ---
> > >>
> > >> Changes in v2:
> > >> - Move node to board file suggested by Mark
> > >>
> > >> This patch is done based on discussion here.
> > >> https://lkml.org/lkml/2014/12/1/396
> > >>
> > >> Mark: I expect you won't like amba bus reference or
> > >> am I wrong?
> > > 
> > > I'm fine with dropping things onto a bus in this way. If we're happy to
> > > do it for other nodes I don't see why busses should be special.
> > 
> > Wonderful. I will give people some time to comment this style.
> 
> Given that the location is discoverable, wouldn't it make sense to let
> 'reg' point to the ctrl/cfg registers in the SLCR and let the driver
> handle the whereabouts of the OCM location? (but I guess this is going
> in circles now, such a proposal was on the table at some point, IIRC).
> But I'd prefer:
> 	memory-controller@0xfffc0000 { /* the address here would of course not match all configurations */

I'd really prefer that we keep the unit-address and reg consistent.

Given that the address may change on a per-board basis, it simply has to
live in the board file.

However, given that all boards are currently the same it could be
dropped in the SoC file for now, with a comment saying it should be
factored out to boards when the first board with a different address
comes along.

Thanks,
Mark.
Soren Brinkmann Feb. 12, 2015, 3:09 p.m. UTC | #6
On Thu, 2015-02-12 at 03:07PM +0000, Mark Rutland wrote:
> On Thu, Feb 12, 2015 at 02:58:36PM +0000, Sören Brinkmann wrote:
> > On Thu, 2015-02-12 at 12:01PM +0100, Michal Simek wrote:
> > > On 02/12/2015 11:54 AM, Mark Rutland wrote:
> > > > On Thu, Feb 12, 2015 at 10:42:47AM +0000, Michal Simek wrote:
> > > >> Add OCM node for all zynq boards. OCM location
> > > >> can changed but for all current boards this
> > > >> is the location where OCM is.`
> > > >>
> > > >> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
> > > >> ---
> > > >>
> > > >> Changes in v2:
> > > >> - Move node to board file suggested by Mark
> > > >>
> > > >> This patch is done based on discussion here.
> > > >> https://lkml.org/lkml/2014/12/1/396
> > > >>
> > > >> Mark: I expect you won't like amba bus reference or
> > > >> am I wrong?
> > > > 
> > > > I'm fine with dropping things onto a bus in this way. If we're happy to
> > > > do it for other nodes I don't see why busses should be special.
> > > 
> > > Wonderful. I will give people some time to comment this style.
> > 
> > Given that the location is discoverable, wouldn't it make sense to let
> > 'reg' point to the ctrl/cfg registers in the SLCR and let the driver
> > handle the whereabouts of the OCM location? (but I guess this is going
> > in circles now, such a proposal was on the table at some point, IIRC).
> > But I'd prefer:
> > 	memory-controller@0xfffc0000 { /* the address here would of course not match all configurations */
> 
> I'd really prefer that we keep the unit-address and reg consistent.
> 
> Given that the address may change on a per-board basis, it simply has to
> live in the board file.

It's not a per-board but rather per use-case configuration.

	Soren
Michal Simek Feb. 12, 2015, 3:15 p.m. UTC | #7
On 02/12/2015 04:07 PM, Mark Rutland wrote:
> On Thu, Feb 12, 2015 at 02:58:36PM +0000, Sören Brinkmann wrote:
>> On Thu, 2015-02-12 at 12:01PM +0100, Michal Simek wrote:
>>> On 02/12/2015 11:54 AM, Mark Rutland wrote:
>>>> On Thu, Feb 12, 2015 at 10:42:47AM +0000, Michal Simek wrote:
>>>>> Add OCM node for all zynq boards. OCM location
>>>>> can changed but for all current boards this
>>>>> is the location where OCM is.`
>>>>>
>>>>> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
>>>>> ---
>>>>>
>>>>> Changes in v2:
>>>>> - Move node to board file suggested by Mark
>>>>>
>>>>> This patch is done based on discussion here.
>>>>> https://lkml.org/lkml/2014/12/1/396
>>>>>
>>>>> Mark: I expect you won't like amba bus reference or
>>>>> am I wrong?
>>>>
>>>> I'm fine with dropping things onto a bus in this way. If we're happy to
>>>> do it for other nodes I don't see why busses should be special.
>>>
>>> Wonderful. I will give people some time to comment this style.
>>
>> Given that the location is discoverable, wouldn't it make sense to let
>> 'reg' point to the ctrl/cfg registers in the SLCR and let the driver
>> handle the whereabouts of the OCM location? (but I guess this is going
>> in circles now, such a proposal was on the table at some point, IIRC).
>> But I'd prefer:
>> 	memory-controller@0xfffc0000 { /* the address here would of course not match all configurations */
> 
> I'd really prefer that we keep the unit-address and reg consistent.
> 
> Given that the address may change on a per-board basis, it simply has to
> live in the board file.
> 
> However, given that all boards are currently the same it could be
> dropped in the SoC file for now, with a comment saying it should be
> factored out to boards when the first board with a different address
> comes along.

Soren is talking about different solution which I have tried to push to mainline
in that thread above. OCM configuration is discoverable through system controller
to find out which configuration is used.

From this simple sram block it looks like that it is 64k of memory but
it is just one block which can live in low or high address (at 0x0 or 0xfffc0000)
based on controller configuration.

In total there are 4 blocks with low and high locations.

Thanks,
Michal
diff mbox

Patch

diff --git a/arch/arm/boot/dts/zynq-7000.dtsi b/arch/arm/boot/dts/zynq-7000.dtsi
index a5cd2eda3edf..acca3c180324 100644
--- a/arch/arm/boot/dts/zynq-7000.dtsi
+++ b/arch/arm/boot/dts/zynq-7000.dtsi
@@ -57,7 +57,7 @@ 
 		regulator-always-on;
 	};
 
-	amba {
+	amba: amba {
 		compatible = "simple-bus";
 		#address-cells = <1>;
 		#size-cells = <1>;
diff --git a/arch/arm/boot/dts/zynq-zc702.dts b/arch/arm/boot/dts/zynq-zc702.dts
index fb59d34e8ee6..79077c5ac60e 100644
--- a/arch/arm/boot/dts/zynq-zc702.dts
+++ b/arch/arm/boot/dts/zynq-zc702.dts
@@ -50,6 +50,13 @@ 
 	};
 };
 
+&amba {
+	ocm: sram@fffc0000 {
+		compatible = "mmio-sram";
+		reg = <0xfffc0000 0x10000>;
+	};
+};
+
 &can0 {
 	status = "okay";
 	pinctrl-names = "default";