mbox

[GIT,PULL,v2] Renesas ARM SoC board updates for v3.10 #3

Message ID 1364954906-16014-1-git-send-email-horms+renesas@verge.net.au
State New
Headers show

Pull-request

git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.git tags/renesas-boards3-for-v3.10

Message

Simon Horman April 3, 2013, 2:08 a.m. UTC
Hi Olof, Hi Arnd,

The following changes since commit eb0ae7280939fda741ad6ae9b108725517652f56:

  Merge tag 'renesas-pinmux2-for-v3.10' into boards-base (2013-04-03 10:49:18 +0900)

are available in the git repository at:


  git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.git tags/renesas-boards3-for-v3.10

for you to fetch changes up to 00ae962f8051bb143fa1c43c6a9c8274c3a9c593:

  ARM: shmobile: mackerel: clean up MMCIF vs. SDHI1 selection (2013-04-03 10:50:44 +0900)

----------------------------------------------------------------
Third round of  Renesas ARM SoC board updates for v3.10

Highlights:

* Add Lager board support
* Add ape6evm board support
* Add Bock-W board support
* Mackerel MMCIF/SDHI clean ups
* Add ethernet support to kzm9g-reference

This pull request is based on a merge of:

git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas renesas-pinmux2-for-v3.10
git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas renesas-boards2-for-v3.10

The merge with renesas-pinmux2-for-v3.10 was made to provide
run-time dependencies for the following changes:

ARM: shmobile: APE6EVM LAN9220 support
ARM: shmobile: APE6EVM PFC support

----------------------------------------------------------------
Guennadi Liakhovetski (6):
      ARM: shmobile: kzm9g-reference: add ethernet support
      ARM: shmobile: mackerel: SDHI resources do not have to be numbered
      ARM: shmobile: mackerel: remove OCR masks, where regulators are used
      ARM: shmobile: mackerel: switch SDHI and MMCIF interfaces to slot-gpio
      ARM: shmobile: mackerel: add interrupt names for SDHI0
      ARM: shmobile: mackerel: clean up MMCIF vs. SDHI1 selection

Kuninori Morimoto (1):
      ARM: shmobile: add R-Car M1A Bock-W platform support

Magnus Damm (4):
      ARM: shmobile: APE6EVM base support
      ARM: shmobile: APE6EVM PFC support
      ARM: shmobile: APE6EVM LAN9220 support
      ARM: shmobile: Initial r8a7790 Lager board support

 arch/arm/boot/dts/Makefile                   |    3 +
 arch/arm/boot/dts/r8a73a4-ape6evm.dts        |   52 ++++++++++++
 arch/arm/boot/dts/r8a7778-bockw.dts          |   32 ++++++++
 arch/arm/boot/dts/r8a7790-lager.dts          |   31 +++++++
 arch/arm/boot/dts/sh73a0-kzm9g-reference.dts |   13 +++
 arch/arm/configs/bockw_defconfig             |   66 +++++++++++++++
 arch/arm/mach-shmobile/Kconfig               |   21 ++++-
 arch/arm/mach-shmobile/Makefile              |    3 +
 arch/arm/mach-shmobile/board-ape6evm.c       |   94 ++++++++++++++++++++++
 arch/arm/mach-shmobile/board-bockw.c         |   43 ++++++++++
 arch/arm/mach-shmobile/board-lager.c         |   46 +++++++++++
 arch/arm/mach-shmobile/board-mackerel.c      |  111 ++++++++++----------------
 12 files changed, 443 insertions(+), 72 deletions(-)
 create mode 100644 arch/arm/boot/dts/r8a73a4-ape6evm.dts
 create mode 100644 arch/arm/boot/dts/r8a7778-bockw.dts
 create mode 100644 arch/arm/boot/dts/r8a7790-lager.dts
 create mode 100644 arch/arm/configs/bockw_defconfig
 create mode 100644 arch/arm/mach-shmobile/board-ape6evm.c
 create mode 100644 arch/arm/mach-shmobile/board-bockw.c
 create mode 100644 arch/arm/mach-shmobile/board-lager.c

Comments

Olof Johansson April 3, 2013, 6:30 a.m. UTC | #1
Hi,

On Wed, Apr 03, 2013 at 11:08:15AM +0900, Simon Horman wrote:
> Hi Olof, Hi Arnd,
> 
> The following changes since commit eb0ae7280939fda741ad6ae9b108725517652f56:
> 
>   Merge tag 'renesas-pinmux2-for-v3.10' into boards-base (2013-04-03 10:49:18 +0900)
> 
> are available in the git repository at:
> 
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.git tags/renesas-boards3-for-v3.10

Pulled in in a next/boards2 since it depends on next/soc2.

>  arch/arm/configs/bockw_defconfig             |   66 +++++++++++++++

shmobile is now up to 11 defconfigs in arch/arm/configs. It'd be nice if
you could move towards what OMAP and many other platforms have started
doing for a while now, with one superset defconfig for the platform
(well, one for v4/v5 harware and one for v6+).


-Olof
Simon Horman April 4, 2013, 3:33 a.m. UTC | #2
On Tue, Apr 02, 2013 at 11:30:59PM -0700, Olof Johansson wrote:
> Hi,
> 
> On Wed, Apr 03, 2013 at 11:08:15AM +0900, Simon Horman wrote:
> > Hi Olof, Hi Arnd,
> > 
> > The following changes since commit eb0ae7280939fda741ad6ae9b108725517652f56:
> > 
> >   Merge tag 'renesas-pinmux2-for-v3.10' into boards-base (2013-04-03 10:49:18 +0900)
> > 
> > are available in the git repository at:
> > 
> > 
> >   git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.git tags/renesas-boards3-for-v3.10
> 
> Pulled in in a next/boards2 since it depends on next/soc2.
> 
> >  arch/arm/configs/bockw_defconfig             |   66 +++++++++++++++
> 
> shmobile is now up to 11 defconfigs in arch/arm/configs. It'd be nice if
> you could move towards what OMAP and many other platforms have started
> doing for a while now, with one superset defconfig for the platform
> (well, one for v4/v5 harware and one for v6+).

The not so good news is that there is one more in the pipeline for
the lager board.

The more positive news is that this morning I sent out a series
to try and kick of consolidation. I have CCed you on that series.
Simon Horman May 22, 2013, 2:32 p.m. UTC | #3
On Fri, May 17, 2013 at 03:00:23PM +0200, Guennadi Liakhovetski wrote:
> Hi Simon, Magnus
> 
> On Wed, 3 Apr 2013, Simon Horman wrote:
> 
> > From: Magnus Damm <damm@opensource.se>
> > 
> > Add LAN9220 support to the APE6EVM board using C and DT.
> > At this point the PFC driver lacks DT bindings so to
> > configure the PFC we use PINCTRL in C board code.
> > 
> > Signed-off-by: Magnus Damm <damm@opensource.se>
> > Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
> > ---
> >  arch/arm/boot/dts/r8a73a4-ape6evm.dts  |   23 ++++++++++++++++++-
> >  arch/arm/mach-shmobile/board-ape6evm.c |   38 ++++++++++++++++++++++++++++++++
> >  2 files changed, 60 insertions(+), 1 deletion(-)
> > 
> > diff --git a/arch/arm/boot/dts/r8a73a4-ape6evm.dts b/arch/arm/boot/dts/r8a73a4-ape6evm.dts
> > index 833f703..f603c69 100644
> > --- a/arch/arm/boot/dts/r8a73a4-ape6evm.dts
> > +++ b/arch/arm/boot/dts/r8a73a4-ape6evm.dts
> > @@ -16,7 +16,7 @@
> >  	compatible = "renesas,ape6evm", "renesas,r8a73a4";
> >  
> >  	chosen {
> > -		bootargs = "console=ttySC0,115200 ignore_loglevel";
> > +		bootargs = "console=ttySC0,115200 ignore_loglevel root=/dev/nfs ip=dhcp";
> >  	};
> >  
> >  	memory@40000000 {
> > @@ -24,8 +24,29 @@
> >  		reg = <0 0x40000000 0 0x40000000>;
> >  	};
> >  
> > +	ape6evm_fixed_3v3: fixedregulator@0 {
> > +		compatible = "regulator-fixed";
> > +		regulator-name = "3V3";
> > +		regulator-min-microvolt = <3300000>;
> > +		regulator-max-microvolt = <3300000>;
> > +		regulator-always-on;
> > +	};
> > +
> >  	lbsc {
> >  		#address-cells = <1>;
> >  		#size-cells = <1>;
> > +
> > +		ethernet@8000000 {
> > +			compatible = "smsc,lan9118", "smsc,lan9115";
> > +			reg = <0x08000000 0x1000>;
> > +			interrupt-parent = <&irqc1>;
> > +			interrupts = <8 0x4>;
> > +			phy-mode = "mii";
> > +			reg-io-width = <4>;
> > +			smsc,irq-active-high;
> > +			smsc,irq-push-pull;
> > +			vdd33a-supply = <&ape6evm_fixed_3v3>;
> > +			vddvario-supply = <&ape6evm_fixed_3v3>;
> > +		};
> >  	};
> >  };
> 
> The above didn't work in my tests without this:
> 
> diff --git a/arch/arm/boot/dts/r8a73a4-ape6evm.dts 
> b/arch/arm/boot/dts/r8a73a4-ape6evm.dts
> index f603c69..4fb0102 100644
> --- a/arch/arm/boot/dts/r8a73a4-ape6evm.dts
> +++ b/arch/arm/boot/dts/r8a73a4-ape6evm.dts
> @@ -33,8 +33,10 @@
>  	};
>  
>  	lbsc {
> +		compatible = "simple-bus";
>  		#address-cells = <1>;
>  		#size-cells = <1>;
> +		ranges = <0 0 0 0x80000000>;
>  
>  		ethernet@8000000 {
>  			compatible = "smsc,lan9118", "smsc,lan9115";
> 

Could you please post this as a formal patch and indicate
if you would like it included as a fix in v3.10 or not?

Also, I am curious to know what your tests are.
Guennadi Liakhovetski May 22, 2013, 5:22 p.m. UTC | #4
Hi Simon

On Wed, 22 May 2013, Simon Horman wrote:

> On Fri, May 17, 2013 at 03:00:23PM +0200, Guennadi Liakhovetski wrote:
> > Hi Simon, Magnus
> > 
> > On Wed, 3 Apr 2013, Simon Horman wrote:
> > 
> > > From: Magnus Damm <damm@opensource.se>
> > > 
> > > Add LAN9220 support to the APE6EVM board using C and DT.
> > > At this point the PFC driver lacks DT bindings so to
> > > configure the PFC we use PINCTRL in C board code.
> > > 
> > > Signed-off-by: Magnus Damm <damm@opensource.se>
> > > Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
> > > ---
> > >  arch/arm/boot/dts/r8a73a4-ape6evm.dts  |   23 ++++++++++++++++++-
> > >  arch/arm/mach-shmobile/board-ape6evm.c |   38 ++++++++++++++++++++++++++++++++
> > >  2 files changed, 60 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/arch/arm/boot/dts/r8a73a4-ape6evm.dts b/arch/arm/boot/dts/r8a73a4-ape6evm.dts
> > > index 833f703..f603c69 100644
> > > --- a/arch/arm/boot/dts/r8a73a4-ape6evm.dts
> > > +++ b/arch/arm/boot/dts/r8a73a4-ape6evm.dts
> > > @@ -16,7 +16,7 @@
> > >  	compatible = "renesas,ape6evm", "renesas,r8a73a4";
> > >  
> > >  	chosen {
> > > -		bootargs = "console=ttySC0,115200 ignore_loglevel";
> > > +		bootargs = "console=ttySC0,115200 ignore_loglevel root=/dev/nfs ip=dhcp";
> > >  	};
> > >  
> > >  	memory@40000000 {
> > > @@ -24,8 +24,29 @@
> > >  		reg = <0 0x40000000 0 0x40000000>;
> > >  	};
> > >  
> > > +	ape6evm_fixed_3v3: fixedregulator@0 {
> > > +		compatible = "regulator-fixed";
> > > +		regulator-name = "3V3";
> > > +		regulator-min-microvolt = <3300000>;
> > > +		regulator-max-microvolt = <3300000>;
> > > +		regulator-always-on;
> > > +	};
> > > +
> > >  	lbsc {
> > >  		#address-cells = <1>;
> > >  		#size-cells = <1>;
> > > +
> > > +		ethernet@8000000 {
> > > +			compatible = "smsc,lan9118", "smsc,lan9115";
> > > +			reg = <0x08000000 0x1000>;
> > > +			interrupt-parent = <&irqc1>;
> > > +			interrupts = <8 0x4>;
> > > +			phy-mode = "mii";
> > > +			reg-io-width = <4>;
> > > +			smsc,irq-active-high;
> > > +			smsc,irq-push-pull;
> > > +			vdd33a-supply = <&ape6evm_fixed_3v3>;
> > > +			vddvario-supply = <&ape6evm_fixed_3v3>;
> > > +		};
> > >  	};
> > >  };
> > 
> > The above didn't work in my tests without this:
> > 
> > diff --git a/arch/arm/boot/dts/r8a73a4-ape6evm.dts 
> > b/arch/arm/boot/dts/r8a73a4-ape6evm.dts
> > index f603c69..4fb0102 100644
> > --- a/arch/arm/boot/dts/r8a73a4-ape6evm.dts
> > +++ b/arch/arm/boot/dts/r8a73a4-ape6evm.dts
> > @@ -33,8 +33,10 @@
> >  	};
> >  
> >  	lbsc {
> > +		compatible = "simple-bus";
> >  		#address-cells = <1>;
> >  		#size-cells = <1>;
> > +		ranges = <0 0 0 0x80000000>;
> >  
> >  		ethernet@8000000 {
> >  			compatible = "smsc,lan9118", "smsc,lan9115";
> > 
> 
> Could you please post this as a formal patch and indicate
> if you would like it included as a fix in v3.10 or not?

Can do that, sure, just thought maybe it would be better to fix the 
original patch. Besides, I wasn't sure what the correct values for 
"ranges" are, I just picked up something, that would be sufficient for 
ethernet. But if more devices are added to it in the future, maybe 
different ranges values would be needed. I think actually, lbsc should map 
the 3 BSC areas, so, the correct property would be

+		ranges = <0 0 0 0x14000000>;

> Also, I am curious to know what your tests are.

Just booting with NFS root. I think, anything involving ethernet. Without 
the "simple-bus" property the lbsc node doesn't get scanned, so, no device 
is added. Without "ranges" addresses cannot be mapped correctly.

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/
Simon Horman May 25, 2013, 1:01 a.m. UTC | #5
On Wed, May 22, 2013 at 07:22:59PM +0200, Guennadi Liakhovetski wrote:
> Hi Simon
> 
> On Wed, 22 May 2013, Simon Horman wrote:
> 
> > On Fri, May 17, 2013 at 03:00:23PM +0200, Guennadi Liakhovetski wrote:
> > > Hi Simon, Magnus
> > > 
> > > On Wed, 3 Apr 2013, Simon Horman wrote:
> > > 
> > > > From: Magnus Damm <damm@opensource.se>
> > > > 
> > > > Add LAN9220 support to the APE6EVM board using C and DT.
> > > > At this point the PFC driver lacks DT bindings so to
> > > > configure the PFC we use PINCTRL in C board code.
> > > > 
> > > > Signed-off-by: Magnus Damm <damm@opensource.se>
> > > > Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
> > > > ---
> > > >  arch/arm/boot/dts/r8a73a4-ape6evm.dts  |   23 ++++++++++++++++++-
> > > >  arch/arm/mach-shmobile/board-ape6evm.c |   38 ++++++++++++++++++++++++++++++++
> > > >  2 files changed, 60 insertions(+), 1 deletion(-)
> > > > 
> > > > diff --git a/arch/arm/boot/dts/r8a73a4-ape6evm.dts b/arch/arm/boot/dts/r8a73a4-ape6evm.dts
> > > > index 833f703..f603c69 100644
> > > > --- a/arch/arm/boot/dts/r8a73a4-ape6evm.dts
> > > > +++ b/arch/arm/boot/dts/r8a73a4-ape6evm.dts
> > > > @@ -16,7 +16,7 @@
> > > >  	compatible = "renesas,ape6evm", "renesas,r8a73a4";
> > > >  
> > > >  	chosen {
> > > > -		bootargs = "console=ttySC0,115200 ignore_loglevel";
> > > > +		bootargs = "console=ttySC0,115200 ignore_loglevel root=/dev/nfs ip=dhcp";
> > > >  	};
> > > >  
> > > >  	memory@40000000 {
> > > > @@ -24,8 +24,29 @@
> > > >  		reg = <0 0x40000000 0 0x40000000>;
> > > >  	};
> > > >  
> > > > +	ape6evm_fixed_3v3: fixedregulator@0 {
> > > > +		compatible = "regulator-fixed";
> > > > +		regulator-name = "3V3";
> > > > +		regulator-min-microvolt = <3300000>;
> > > > +		regulator-max-microvolt = <3300000>;
> > > > +		regulator-always-on;
> > > > +	};
> > > > +
> > > >  	lbsc {
> > > >  		#address-cells = <1>;
> > > >  		#size-cells = <1>;
> > > > +
> > > > +		ethernet@8000000 {
> > > > +			compatible = "smsc,lan9118", "smsc,lan9115";
> > > > +			reg = <0x08000000 0x1000>;
> > > > +			interrupt-parent = <&irqc1>;
> > > > +			interrupts = <8 0x4>;
> > > > +			phy-mode = "mii";
> > > > +			reg-io-width = <4>;
> > > > +			smsc,irq-active-high;
> > > > +			smsc,irq-push-pull;
> > > > +			vdd33a-supply = <&ape6evm_fixed_3v3>;
> > > > +			vddvario-supply = <&ape6evm_fixed_3v3>;
> > > > +		};
> > > >  	};
> > > >  };
> > > 
> > > The above didn't work in my tests without this:
> > > 
> > > diff --git a/arch/arm/boot/dts/r8a73a4-ape6evm.dts 
> > > b/arch/arm/boot/dts/r8a73a4-ape6evm.dts
> > > index f603c69..4fb0102 100644
> > > --- a/arch/arm/boot/dts/r8a73a4-ape6evm.dts
> > > +++ b/arch/arm/boot/dts/r8a73a4-ape6evm.dts
> > > @@ -33,8 +33,10 @@
> > >  	};
> > >  
> > >  	lbsc {
> > > +		compatible = "simple-bus";
> > >  		#address-cells = <1>;
> > >  		#size-cells = <1>;
> > > +		ranges = <0 0 0 0x80000000>;
> > >  
> > >  		ethernet@8000000 {
> > >  			compatible = "smsc,lan9118", "smsc,lan9115";
> > > 
> > 
> > Could you please post this as a formal patch and indicate
> > if you would like it included as a fix in v3.10 or not?
> 
> Can do that, sure, just thought maybe it would be better to fix the 
> original patch. Besides, I wasn't sure what the correct values for 
> "ranges" are, I just picked up something, that would be sufficient for 
> ethernet. But if more devices are added to it in the future, maybe 
> different ranges values would be needed. I think actually, lbsc should map 
> the 3 BSC areas, so, the correct property would be

I believe the original patches are past the point where they
can be updated.

With regards to the correct values, perhaps Magnus can help here?

> 
> +		ranges = <0 0 0 0x14000000>;
> 
> > Also, I am curious to know what your tests are.
> 
> Just booting with NFS root. I think, anything involving ethernet. Without 
> the "simple-bus" property the lbsc node doesn't get scanned, so, no device 
> is added. Without "ranges" addresses cannot be mapped correctly.

Ok, it sounds like it should be fixed for v3.10.
Olof Johansson May 28, 2013, 2:45 a.m. UTC | #6
Hi,

Sorry, a bit behind on email and just discovered this.

On Wed, May 22, 2013 at 07:22:59PM +0200, Guennadi Liakhovetski wrote:

> > > The above didn't work in my tests without this:
> > > 
> > > diff --git a/arch/arm/boot/dts/r8a73a4-ape6evm.dts 
> > > b/arch/arm/boot/dts/r8a73a4-ape6evm.dts
> > > index f603c69..4fb0102 100644
> > > --- a/arch/arm/boot/dts/r8a73a4-ape6evm.dts
> > > +++ b/arch/arm/boot/dts/r8a73a4-ape6evm.dts
> > > @@ -33,8 +33,10 @@
> > >  	};
> > >  
> > >  	lbsc {
> > > +		compatible = "simple-bus";
> > >  		#address-cells = <1>;
> > >  		#size-cells = <1>;
> > > +		ranges = <0 0 0 0x80000000>;
> > >  
> > >  		ethernet@8000000 {
> > >  			compatible = "smsc,lan9118", "smsc,lan9115";
> > > 
> > 
> > Could you please post this as a formal patch and indicate
> > if you would like it included as a fix in v3.10 or not?
> 
> Can do that, sure, just thought maybe it would be better to fix the 
> original patch. Besides, I wasn't sure what the correct values for 
> "ranges" are, I just picked up something, that would be sufficient for 
> ethernet. But if more devices are added to it in the future, maybe 
> different ranges values would be needed. I think actually, lbsc should map 
> the 3 BSC areas, so, the correct property would be
> 
> +		ranges = <0 0 0 0x14000000>;
> 
> > Also, I am curious to know what your tests are.
> 
> Just booting with NFS root. I think, anything involving ethernet. Without 
> the "simple-bus" property the lbsc node doesn't get scanned, so, no device 
> is added. Without "ranges" addresses cannot be mapped correctly.

Since it's a flat mapping you can just specify an empty "ranges" property, no
need to actually define contents.

For more info, see http://devicetree.org/Device_Tree_Usage#Ranges_.28Address_Translation.29


-Olof
Guennadi Liakhovetski May 29, 2013, 6:26 a.m. UTC | #7
Hi Olof

On Mon, 27 May 2013, Olof Johansson wrote:

> Hi,
> 
> Sorry, a bit behind on email and just discovered this.
> 
> On Wed, May 22, 2013 at 07:22:59PM +0200, Guennadi Liakhovetski wrote:
> 
> > > > The above didn't work in my tests without this:
> > > > 
> > > > diff --git a/arch/arm/boot/dts/r8a73a4-ape6evm.dts 
> > > > b/arch/arm/boot/dts/r8a73a4-ape6evm.dts
> > > > index f603c69..4fb0102 100644
> > > > --- a/arch/arm/boot/dts/r8a73a4-ape6evm.dts
> > > > +++ b/arch/arm/boot/dts/r8a73a4-ape6evm.dts
> > > > @@ -33,8 +33,10 @@
> > > >  	};
> > > >  
> > > >  	lbsc {
> > > > +		compatible = "simple-bus";
> > > >  		#address-cells = <1>;
> > > >  		#size-cells = <1>;
> > > > +		ranges = <0 0 0 0x80000000>;
> > > >  
> > > >  		ethernet@8000000 {
> > > >  			compatible = "smsc,lan9118", "smsc,lan9115";
> > > > 
> > > 
> > > Could you please post this as a formal patch and indicate
> > > if you would like it included as a fix in v3.10 or not?
> > 
> > Can do that, sure, just thought maybe it would be better to fix the 
> > original patch. Besides, I wasn't sure what the correct values for 
> > "ranges" are, I just picked up something, that would be sufficient for 
> > ethernet. But if more devices are added to it in the future, maybe 
> > different ranges values would be needed. I think actually, lbsc should map 
> > the 3 BSC areas, so, the correct property would be
> > 
> > +		ranges = <0 0 0 0x14000000>;
> > 
> > > Also, I am curious to know what your tests are.
> > 
> > Just booting with NFS root. I think, anything involving ethernet. Without 
> > the "simple-bus" property the lbsc node doesn't get scanned, so, no device 
> > is added. Without "ranges" addresses cannot be mapped correctly.
> 
> Since it's a flat mapping you can just specify an empty "ranges" property, no
> need to actually define contents.

Yes, I knew about that, but does this also hold for busses with different 
#address-cells properties, i.e. between 64- and 32-bit busses?

> For more info, see http://devicetree.org/Device_Tree_Usage#Ranges_.28Address_Translation.29

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/
Olof Johansson May 30, 2013, 4:39 a.m. UTC | #8
On Tue, May 28, 2013 at 11:26 PM, Guennadi Liakhovetski
<g.liakhovetski@gmx.de> wrote:
> Hi Olof
>
> On Mon, 27 May 2013, Olof Johansson wrote:
>
>> Hi,
>>
>> Sorry, a bit behind on email and just discovered this.
>>
>> On Wed, May 22, 2013 at 07:22:59PM +0200, Guennadi Liakhovetski wrote:
>>
>> > > > The above didn't work in my tests without this:
>> > > >
>> > > > diff --git a/arch/arm/boot/dts/r8a73a4-ape6evm.dts
>> > > > b/arch/arm/boot/dts/r8a73a4-ape6evm.dts
>> > > > index f603c69..4fb0102 100644
>> > > > --- a/arch/arm/boot/dts/r8a73a4-ape6evm.dts
>> > > > +++ b/arch/arm/boot/dts/r8a73a4-ape6evm.dts
>> > > > @@ -33,8 +33,10 @@
>> > > >         };
>> > > >
>> > > >         lbsc {
>> > > > +               compatible = "simple-bus";
>> > > >                 #address-cells = <1>;
>> > > >                 #size-cells = <1>;
>> > > > +               ranges = <0 0 0 0x80000000>;
>> > > >
>> > > >                 ethernet@8000000 {
>> > > >                         compatible = "smsc,lan9118", "smsc,lan9115";
>> > > >
>> > >
>> > > Could you please post this as a formal patch and indicate
>> > > if you would like it included as a fix in v3.10 or not?
>> >
>> > Can do that, sure, just thought maybe it would be better to fix the
>> > original patch. Besides, I wasn't sure what the correct values for
>> > "ranges" are, I just picked up something, that would be sufficient for
>> > ethernet. But if more devices are added to it in the future, maybe
>> > different ranges values would be needed. I think actually, lbsc should map
>> > the 3 BSC areas, so, the correct property would be
>> >
>> > +           ranges = <0 0 0 0x14000000>;
>> >
>> > > Also, I am curious to know what your tests are.
>> >
>> > Just booting with NFS root. I think, anything involving ethernet. Without
>> > the "simple-bus" property the lbsc node doesn't get scanned, so, no device
>> > is added. Without "ranges" addresses cannot be mapped correctly.
>>
>> Since it's a flat mapping you can just specify an empty "ranges" property, no
>> need to actually define contents.
>
> Yes, I knew about that, but does this also hold for busses with different
> #address-cells properties, i.e. between 64- and 32-bit busses?

Oh, good question -- I don't think it does. But why go down, you might
as well use 2 cells in that part of the tree too?


-Olof
Guennadi Liakhovetski May 30, 2013, 5:33 a.m. UTC | #9
On Wed, 29 May 2013, Olof Johansson wrote:

> On Tue, May 28, 2013 at 11:26 PM, Guennadi Liakhovetski
> <g.liakhovetski@gmx.de> wrote:
> > Hi Olof
> >
> > On Mon, 27 May 2013, Olof Johansson wrote:
> >
> >> Hi,
> >>
> >> Sorry, a bit behind on email and just discovered this.
> >>
> >> On Wed, May 22, 2013 at 07:22:59PM +0200, Guennadi Liakhovetski wrote:
> >>
> >> > > > The above didn't work in my tests without this:
> >> > > >
> >> > > > diff --git a/arch/arm/boot/dts/r8a73a4-ape6evm.dts
> >> > > > b/arch/arm/boot/dts/r8a73a4-ape6evm.dts
> >> > > > index f603c69..4fb0102 100644
> >> > > > --- a/arch/arm/boot/dts/r8a73a4-ape6evm.dts
> >> > > > +++ b/arch/arm/boot/dts/r8a73a4-ape6evm.dts
> >> > > > @@ -33,8 +33,10 @@
> >> > > >         };
> >> > > >
> >> > > >         lbsc {
> >> > > > +               compatible = "simple-bus";
> >> > > >                 #address-cells = <1>;
> >> > > >                 #size-cells = <1>;
> >> > > > +               ranges = <0 0 0 0x80000000>;
> >> > > >
> >> > > >                 ethernet@8000000 {
> >> > > >                         compatible = "smsc,lan9118", "smsc,lan9115";
> >> > > >
> >> > >
> >> > > Could you please post this as a formal patch and indicate
> >> > > if you would like it included as a fix in v3.10 or not?
> >> >
> >> > Can do that, sure, just thought maybe it would be better to fix the
> >> > original patch. Besides, I wasn't sure what the correct values for
> >> > "ranges" are, I just picked up something, that would be sufficient for
> >> > ethernet. But if more devices are added to it in the future, maybe
> >> > different ranges values would be needed. I think actually, lbsc should map
> >> > the 3 BSC areas, so, the correct property would be
> >> >
> >> > +           ranges = <0 0 0 0x14000000>;
> >> >
> >> > > Also, I am curious to know what your tests are.
> >> >
> >> > Just booting with NFS root. I think, anything involving ethernet. Without
> >> > the "simple-bus" property the lbsc node doesn't get scanned, so, no device
> >> > is added. Without "ranges" addresses cannot be mapped correctly.
> >>
> >> Since it's a flat mapping you can just specify an empty "ranges" property, no
> >> need to actually define contents.
> >
> > Yes, I knew about that, but does this also hold for busses with different
> > #address-cells properties, i.e. between 64- and 32-bit busses?
> 
> Oh, good question -- I don't think it does. But why go down, you might
> as well use 2 cells in that part of the tree too?

Ok, I didn't write the original implementation of that bus and, therefore, 
didn't decide how many address cells it shall use. My task was to fix it. 
And yes, I agree, that there are 2 ways to fix the memory mapping: either 
define ranges to map from 64-bits to 32-bits, or to change all devices on 
the bus (currently there's only 1) to use 64-bit "reg" property and use 
"ranges" with no arguments. Since that bus is clearly within a 32-bit 
area, I would prefer the former solution not to have to drag 64 bits 
around an make device nodes simpler. Can we keep this approach or are you 
strongly against it?

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/
Arnd Bergmann May 30, 2013, 1:26 p.m. UTC | #10
On Thursday 30 May 2013, Guennadi Liakhovetski wrote:
> Ok, I didn't write the original implementation of that bus and, therefore, 
> didn't decide how many address cells it shall use. My task was to fix it. 
> And yes, I agree, that there are 2 ways to fix the memory mapping: either 
> define ranges to map from 64-bits to 32-bits, or to change all devices on 
> the bus (currently there's only 1) to use 64-bit "reg" property and use 
> "ranges" with no arguments. Since that bus is clearly within a 32-bit 
> area, I would prefer the former solution not to have to drag 64 bits 
> around an make device nodes simpler. Can we keep this approach or are you 
> strongly against it?

I believe we should attempt to have the DT representation as close as
possible to what the hardware actually does. If this is a AHB bus
or something else that is known to be always 32 bit, I would use
a ranges property and #address-cells=<1>, but if this is a 64-bit
wide AXIv4 instance I would use #address-cells=<2> and probably
omit the ranges.

There is also the case where a device is attached to an external bus
that has 0-based addressing. In that case I would put the actual
translation into the ranges property, with all addresses that
are translated by the bus controller, such as

      lbsc {
               compatible = "simple-bus";
               #address-cells = <1>;
               #size-cells = <1>;
               ranges = <0 0x08000000 0 0x1000000>; /* 16 MB @ 128 MB */

               ethernet@0 {
			compatible = "smsc,lan9118", "smsc,lan9115";
			reg = <0 0x1000>;
			...

	Arnd