From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefan Roese Date: Mon, 14 Sep 2015 07:39:13 +0200 Subject: [U-Boot] [PATCH 1/2] nios2: remap and translate reg address in device tree In-Reply-To: <1442133130-11174-1-git-send-email-thomas@wytron.com.tw> References: <1442133130-11174-1-git-send-email-thomas@wytron.com.tw> Message-ID: <55F65D81.7040604@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Thomas, added Simon and Stephen to cc on this. On 13.09.2015 10:32, Thomas Chou wrote: > As the io space remapping ioremap() and bridge address > translation fdt_translate_address() are not usually used > in u-boot driver model by dev_get_addr(). We would better > convert the reg address map in the device tree of nios2 > boards, so that it is io mapped and bridge translated. So you are changing the DT sources for your platform because the U-Boot implementation does support the bus translation correctly (ranges properties)? I think this is the wrong approach. We need to make sure that U-Boot supports DT correctly instead. I have a patch queued to enable this. Please take a look at this thread: https://patchwork.ozlabs.org/patch/514331/ Could you please check if this patch (with the config options enabled) helps on your platform without DT changes? > Signed-off-by: Thomas Chou > --- > arch/nios2/dts/3c120_devboard.dts | 171 +++++++++++++++----------------------- > 1 file changed, 69 insertions(+), 102 deletions(-) > > diff --git a/arch/nios2/dts/3c120_devboard.dts b/arch/nios2/dts/3c120_devboard.dts > index 02524ab..70d71a5 100644 > --- a/arch/nios2/dts/3c120_devboard.dts > +++ b/arch/nios2/dts/3c120_devboard.dts > @@ -14,6 +14,73 @@ > #address-cells = <1>; > #size-cells = <1>; > > + aliases { > + console = &jtag_uart; > + }; > + > + timer_1ms: timer at 0x400000 { > + compatible = "altr,timer-1.0"; > + reg = <0xe8400000 0x00000020>; > + interrupt-parent = <&cpu>; > + interrupts = <11>; > + clock-frequency = <125000000>; > + u-boot,dm-pre-reloc; > + }; > + > + jtag_uart: serial at 0x4d50 { > + compatible = "altr,juart-1.0"; > + reg = <0xe8004d50 0x00000008>; > + interrupt-parent = <&cpu>; > + interrupts = <1>; > + u-boot,dm-pre-reloc; > + }; > + > + tse_mac: ethernet at 0x4000 { > + compatible = "altr,tse-1.0"; > + reg = <0xe8004000 0x00000400>, > + <0xe8004400 0x00000040>, > + <0xe8004800 0x00000040>, > + <0xe8002000 0x00002000>; > + reg-names = "control_port", "rx_csr", "tx_csr", "s1"; > + interrupt-parent = <&cpu>; > + interrupts = <2 3>; > + interrupt-names = "rx_irq", "tx_irq"; > + rx-fifo-depth = <8192>; > + tx-fifo-depth = <8192>; > + max-frame-size = <1518>; > + local-mac-address = [ 00 00 00 00 00 00 ]; > + phy-mode = "rgmii-id"; > + phy-handle = <&phy0>; > + tse_mac_mdio: mdio { > + compatible = "altr,tse-mdio"; > + #address-cells = <1>; > + #size-cells = <0>; > + phy0: ethernet-phy at 18 { > + reg = <18>; > + device_type = "ethernet-phy"; > + }; > + }; > + }; > + > + uart: serial at 0x4c80 { > + compatible = "altr,uart-1.0"; > + reg = <0xe8004c80 0x00000020>; > + interrupt-parent = <&cpu>; > + interrupts = <10>; > + current-speed = <115200>; > + clock-frequency = <62500000>; > + u-boot,dm-pre-reloc; > + }; > + > + user_led_pio_8out: gpio at 0x4cc0 { > + compatible = "altr,pio-1.0"; > + reg = <0xe8004cc0 0x00000010>; > + resetvalue = <255>; > + width = <8>; > + #gpio-cells = <2>; > + gpio-controller; > + }; > + > cpus { > #address-cells = <1>; > #size-cells = <0>; > @@ -46,108 +113,8 @@ > > memory at 0 { > device_type = "memory"; > - reg = <0x10000000 0x08000000>, > - <0x07fff400 0x00000400>; > + reg = <0xd0000000 0x08000000>, > + <0xc7fff400 0x00000400>; > }; > > - sopc at 0 { > - device_type = "soc"; > - ranges; > - #address-cells = <1>; > - #size-cells = <1>; > - compatible = "altr,avalon", "simple-bus"; > - bus-frequency = <125000000>; > - > - pb_cpu_to_io: bridge at 0x8000000 { > - compatible = "simple-bus"; > - reg = <0x08000000 0x00800000>; > - #address-cells = <1>; > - #size-cells = <1>; > - ranges = <0x00002000 0x08002000 0x00002000>, > - <0x00004000 0x08004000 0x00000400>, > - <0x00004400 0x08004400 0x00000040>, > - <0x00004800 0x08004800 0x00000040>, > - <0x00004c80 0x08004c80 0x00000020>, > - <0x00004d50 0x08004d50 0x00000008>, > - <0x00008000 0x08008000 0x00000020>, > - <0x00400000 0x08400000 0x00000020>; > - > - timer_1ms: timer at 0x400000 { > - compatible = "altr,timer-1.0"; > - reg = <0x00400000 0x00000020>; > - interrupt-parent = <&cpu>; > - interrupts = <11>; > - clock-frequency = <125000000>; > - }; > - > - timer_0: timer at 0x8000 { > - compatible = "altr,timer-1.0"; > - reg = < 0x00008000 0x00000020 >; > - interrupt-parent = < &cpu >; > - interrupts = < 5 >; > - clock-frequency = < 125000000 >; > - }; > - > - jtag_uart: serial at 0x4d50 { > - compatible = "altr,juart-1.0"; > - reg = <0x00004d50 0x00000008>; > - interrupt-parent = <&cpu>; > - interrupts = <1>; > - }; > - > - tse_mac: ethernet at 0x4000 { > - compatible = "altr,tse-1.0"; > - reg = <0x00004000 0x00000400>, > - <0x00004400 0x00000040>, > - <0x00004800 0x00000040>, > - <0x00002000 0x00002000>; > - reg-names = "control_port", "rx_csr", "tx_csr", "s1"; > - interrupt-parent = <&cpu>; > - interrupts = <2 3>; > - interrupt-names = "rx_irq", "tx_irq"; > - rx-fifo-depth = <8192>; > - tx-fifo-depth = <8192>; > - max-frame-size = <1518>; > - local-mac-address = [ 00 00 00 00 00 00 ]; > - phy-mode = "rgmii-id"; > - phy-handle = <&phy0>; > - tse_mac_mdio: mdio { > - compatible = "altr,tse-mdio"; > - #address-cells = <1>; > - #size-cells = <0>; > - phy0: ethernet-phy at 18 { > - reg = <18>; > - device_type = "ethernet-phy"; > - }; > - }; > - }; > - > - uart: serial at 0x4c80 { > - compatible = "altr,uart-1.0"; > - reg = <0x00004c80 0x00000020>; > - interrupt-parent = <&cpu>; > - interrupts = <10>; > - current-speed = <115200>; > - clock-frequency = <62500000>; > - }; > - }; > - > - cfi_flash_64m: flash at 0x0 { > - compatible = "cfi-flash"; > - reg = <0x00000000 0x04000000>; > - bank-width = <2>; > - device-width = <1>; > - #address-cells = <1>; > - #size-cells = <1>; > - > - partition at 800000 { > - reg = <0x00800000 0x01e00000>; > - label = "JFFS2 Filesystem"; > - }; > - }; > - }; > - > - chosen { > - bootargs = "debug console=ttyJ0,115200"; > - }; > }; > Thanks, Stefan