Message ID | 20161125142658.21690-3-uwe@kleine-koenig.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, Nov 25, 2016 at 03:26:58PM +0100, Uwe Kleine-König wrote: > This machine is an open hardware router by cz.nic driven by a > Marvell Armada 385. > > Signed-off-by: Uwe Kleine-König <uwe@kleine-koenig.org> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew
Hi Uwe, On ven., nov. 25 2016, Uwe Kleine-König <uwe@kleine-koenig.org> wrote: > This machine is an open hardware router by cz.nic driven by a > Marvell Armada 385. > > Signed-off-by: Uwe Kleine-König <uwe@kleine-koenig.org> Applied on mvebu/dt with few changes: First I added the SoB from Thomas Hlavacek you initially planed to add as seen on IRC. The other change I did are mentioned inline. Thanks, Gregory [...] > +&spi0 { > + pinctrl-names = "default"; > + pinctrl-0 = <&spi0_pins &spi0cs0_pins>; > + status = "okay"; > + > + spi-nor@0 { > + compatible = "spansion,s25fl164k", "jedec,spi-nor"; > + #address-cells = <1>; > + #size-cells = <1>; > + reg = <0>; > + spi-max-frequency = <40000000>; > + + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + it is mandatory since v4.4 to use this pattern for partitions. > + partition@0 { > + reg = <0x0 0x00100000>; > + label = "U-Boot"; > + }; > + > + partition@1 { @0x100000 We should use the reg value here ^ > + reg = <0x00100000 0x00700000>; > + label = "Rescue system"; > + }; + };
Am 25.11.2016 um 17:16 schrieb Gregory CLEMENT: > On ven., nov. 25 2016, Uwe Kleine-König <uwe@kleine-koenig.org> wrote: >> This machine is an open hardware router by cz.nic driven by a >> Marvell Armada 385. >> >> Signed-off-by: Uwe Kleine-König <uwe@kleine-koenig.org> > > Applied on mvebu/dt with few changes: [...] >> +&spi0 { >> + pinctrl-names = "default"; >> + pinctrl-0 = <&spi0_pins &spi0cs0_pins>; >> + status = "okay"; >> + >> + spi-nor@0 { >> + compatible = "spansion,s25fl164k", "jedec,spi-nor"; >> + #address-cells = <1>; >> + #size-cells = <1>; >> + reg = <0>; >> + spi-max-frequency = <40000000>; >> + > > + > + partitions { > + compatible = "fixed-partitions"; > + #address-cells = <1>; > + #size-cells = <1>; > + > it is mandatory since v4.4 to use this pattern for partitions. > > >> + partition@0 { >> + reg = <0x0 0x00100000>; >> + label = "U-Boot"; >> + }; >> + >> + partition@1 { > @0x100000 > We should use the reg value here ^ The unit name should be without 0x though. In your tree you seem to have it correctly. @Uwe: Note that I had already told CZ.NIC's Michal ~two weeks ago that I have a WIP .dts for the Omnia - looks like no one knows what the other is doing. :( My branch includes cleanups for 385 .dtsi and bug fixes for the switch that I am not seeing in your series: https://github.com/afaerber/linux/commits/omnia-next I am still looking into phy backtraces when the network interfaces go down. @Gregory: Can we please follow up with cleaning up these ugly internal-regs and pcie-controller nodes for consistency? Regards, Andreas >> + reg = <0x00100000 0x00700000>; >> + label = "Rescue system"; >> + }; > > + };
Hallo Andreas, On 11/27/2016 05:00 PM, Andreas Färber wrote: > @Uwe: Note that I had already told CZ.NIC's Michal ~two weeks ago that I > have a WIP .dts for the Omnia - looks like no one knows what the other > is doing. :( My branch includes cleanups for 385 .dtsi and bug fixes for > the switch that I am not seeing in your series: I'm not in contact with a Michal at cz.nic. Does the switch work in your setup with DSA? > @Gregory: Can we please follow up with cleaning up these ugly > internal-regs and pcie-controller nodes for consistency? I bet the answer will be: Please send your patches to lakml for review. Best regards Uwe
> @Uwe: Note that I had already told CZ.NIC's Michal ~two weeks ago that I > have a WIP .dts for the Omnia - looks like no one knows what the other > is doing. Hi Andreas Did you post to the list? Comment on the earlier versions of the patches? The list is the please to coordinate these activities. Andrew
Hi Uwe, Am 27.11.2016 um 17:05 schrieb Uwe Kleine-König: > On 11/27/2016 05:00 PM, Andreas Färber wrote: >> @Uwe: Note that I had already told CZ.NIC's Michal ~two weeks ago that I >> have a WIP .dts for the Omnia - looks like no one knows what the other >> is doing. :( My branch includes cleanups for 385 .dtsi and bug fixes for >> the switch that I am not seeing in your series: > > I'm not in contact with a Michal at cz.nic. Right, but you have a Bedricha in CC from the same company! > Does the switch work in your setup with DSA? Not really: omnia:~ # ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 532 link/ether d8:58:d7:00:61:70 brd ff:ff:ff:ff:ff:ff 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 532 link/ether d8:58:d7:00:61:6e brd ff:ff:ff:ff:ff:ff 4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 532 link/ether d8:58:d7:00:61:6f brd ff:ff:ff:ff:ff:ff inet 192.168.1.50/24 brd 192.168.1.255 scope global eth2 valid_lft forever preferred_lft forever inet6 2003:86:6702:9f00:da58:d7ff:fe00:616f/64 scope global mngtmpaddr dynamic valid_lft 7050sec preferred_lft 1650sec inet6 fe80::da58:d7ff:fe00:616f/64 scope link valid_lft forever preferred_lft forever 5: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1 link/sit 0.0.0.0 brd 0.0.0.0 6: lan0@eth1: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether d8:58:d7:00:61:6e brd ff:ff:ff:ff:ff:ff 7: lan1@eth1: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether d8:58:d7:00:61:6e brd ff:ff:ff:ff:ff:ff 8: lan2@eth1: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether d8:58:d7:00:61:6e brd ff:ff:ff:ff:ff:ff 9: lan3@eth1: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether d8:58:d7:00:61:6e brd ff:ff:ff:ff:ff:ff 10: lan4@eth1: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether d8:58:d7:00:61:6e brd ff:ff:ff:ff:ff:ff I get some interfaces for the switch, but I've not been able to get them up/usable. Feel free to browse my commits, maybe I'm doing something stupid - I already tried with and without fixed links, but the driver seems to use only one of the two cpu links. Regards, Andreas
> omnia:~ # ip a > 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN > group default qlen 1 > link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 > inet 127.0.0.1/8 scope host lo > valid_lft forever preferred_lft forever > inet6 ::1/128 scope host > valid_lft forever preferred_lft forever > 2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group > default qlen 532 > link/ether d8:58:d7:00:61:70 brd ff:ff:ff:ff:ff:ff > 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group > default qlen 532 > link/ether d8:58:d7:00:61:6e brd ff:ff:ff:ff:ff:ff > 4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP > group default qlen 532 > link/ether d8:58:d7:00:61:6f brd ff:ff:ff:ff:ff:ff > inet 192.168.1.50/24 brd 192.168.1.255 scope global eth2 > valid_lft forever preferred_lft forever > inet6 2003:86:6702:9f00:da58:d7ff:fe00:616f/64 scope global > mngtmpaddr dynamic > valid_lft 7050sec preferred_lft 1650sec > inet6 fe80::da58:d7ff:fe00:616f/64 scope link > valid_lft forever preferred_lft forever > 5: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1 > link/sit 0.0.0.0 brd 0.0.0.0 > 6: lan0@eth1: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state > DOWN group default qlen 1000 > link/ether d8:58:d7:00:61:6e brd ff:ff:ff:ff:ff:ff > 7: lan1@eth1: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state > DOWN group default qlen 1000 > link/ether d8:58:d7:00:61:6e brd ff:ff:ff:ff:ff:ff > 8: lan2@eth1: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state > DOWN group default qlen 1000 > link/ether d8:58:d7:00:61:6e brd ff:ff:ff:ff:ff:ff > 9: lan3@eth1: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state > DOWN group default qlen 1000 > link/ether d8:58:d7:00:61:6e brd ff:ff:ff:ff:ff:ff > 10: lan4@eth1: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state > DOWN group default qlen 1000 > link/ether d8:58:d7:00:61:6e brd ff:ff:ff:ff:ff:ff > > I get some interfaces for the switch, but I've not been able to get them > up/usable. ip link set eth1 up > Feel free to browse my commits, maybe I'm doing something > stupid - I already tried with and without fixed links, but the driver > seems to use only one of the two cpu links. Correct, and this has been discussed on the thread about this board. Andrew
Hi, Am 27.11.2016 um 17:07 schrieb Andrew Lunn: >> @Uwe: Note that I had already told CZ.NIC's Michal ~two weeks ago that I >> have a WIP .dts for the Omnia - looks like no one knows what the other >> is doing. > > Hi Andreas > > Did you post to the list? Comment on the earlier versions of the > patches? The list is the please to coordinate these activities. No, it was not yet fully working (only WAN NIC) and I don't have a habit of spamming the list with RFCs. Also I was away the last two weekends. I would've expected to get CC'ed for review though, since CZ.NIC should've been aware of my work. https://lists.opensuse.org/opensuse-arm/2016-11/msg00005.html Cheers, Andreas
Am 27.11.2016 um 17:05 schrieb Uwe Kleine-König: >> @Gregory: Can we please follow up with cleaning up these ugly >> internal-regs and pcie-controller nodes for consistency? > > I bet the answer will be: Please send your patches to lakml for review. Done for the node labels, covering the complete set of 38x boards now. Well, the implied question was: Why did no one point this out during review? We had that discussion for 3700 and 7k/8k already. Cheers, Andreas
Am 25.11.2016 um 15:26 schrieb Uwe Kleine-König: > diff --git a/arch/arm/boot/dts/armada-385-turris-omnia.dts b/arch/arm/boot/dts/armada-385-turris-omnia.dts > new file mode 100644 > index 000000000000..bcc10c285889 > --- /dev/null > +++ b/arch/arm/boot/dts/armada-385-turris-omnia.dts [...] > + chosen { > + stdout-path = &uart0; > + }; I notice that the other 38x boards (and thus my previous Omnia .dts) use "serial0:115200n8". Can we really rely on the driver defaults here? Regards, Andreas
Am 27.11.2016 um 20:22 schrieb Andreas Färber: > Am 25.11.2016 um 15:26 schrieb Uwe Kleine-König: >> diff --git a/arch/arm/boot/dts/armada-385-turris-omnia.dts b/arch/arm/boot/dts/armada-385-turris-omnia.dts >> new file mode 100644 >> index 000000000000..bcc10c285889 >> --- /dev/null >> +++ b/arch/arm/boot/dts/armada-385-turris-omnia.dts > [...] >> + chosen { >> + stdout-path = &uart0; >> + }; > > I notice that the other 38x boards (and thus my previous Omnia .dts) use > "serial0:115200n8". Can we really rely on the driver defaults here? Answering my own question: No, with the mvebu/dt .dts I do not get any serial output. Patch sent. Regards, Andreas
Am 27.11.2016 um 17:00 schrieb Andreas Färber: > @Uwe: Note that I had already told CZ.NIC's Michal ~two weeks ago that I > have a WIP .dts for the Omnia - looks like no one knows what the other > is doing. :( My branch includes cleanups for 385 .dtsi and bug fixes for > the switch that I am not seeing in your series: > > https://github.com/afaerber/linux/commits/omnia-next Archived at https://github.com/afaerber/linux/commits/omnia-next.pre-uwe It seems like four out of my five switch probing bug fixes were already resolved by Andrew in the meantime. Remaining one plus 88E6176 mini-series sent out. Cheers, Andreas
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile index befcd2619902..f1d3b9ff257e 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile @@ -920,6 +920,7 @@ dtb-$(CONFIG_MACH_ARMADA_38X) += \ armada-385-db-ap.dtb \ armada-385-linksys-caiman.dtb \ armada-385-linksys-cobra.dtb \ + armada-385-turris-omnia.dtb \ armada-388-clearfog.dtb \ armada-388-db.dtb \ armada-388-gp.dtb \ diff --git a/arch/arm/boot/dts/armada-385-turris-omnia.dts b/arch/arm/boot/dts/armada-385-turris-omnia.dts new file mode 100644 index 000000000000..bcc10c285889 --- /dev/null +++ b/arch/arm/boot/dts/armada-385-turris-omnia.dts @@ -0,0 +1,334 @@ +/* + * Device Tree file for the Turris Omnia + * + * Copyright (C) 2016 Uwe Kleine-König <uwe@kleine-koenig.org> + * Copyright (C) 2016 Tomas Hlavacek <tmshlvkc@gmail.com> + * + * This file is dual-licensed: you can use it either under the terms + * of the GPL or the X11 license, at your option. Note that this dual + * licensing only applies to this file, and not this project as a + * whole. + * + * a) This file is licensed under the terms of the GNU General Public + * License version 2. This program is licensed "as is" without + * any warranty of any kind, whether express or implied. + * + * Or, alternatively, + * + * b) Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * Schematic available at https://www.turris.cz/doc/_media/rtrom01-schema.pdf + */ + +/dts-v1/; + +#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/input/input.h> +#include "armada-385.dtsi" + +/ { + model = "Turris Omnia"; + compatible = "cznic,turris-omnia", "marvell,armada385", "marvell,armada380"; + + chosen { + stdout-path = &uart0; + }; + + memory { + device_type = "memory"; + reg = <0x00000000 0x40000000>; /* 1024 MB */ + }; + + soc { + ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000 + MBUS_ID(0x01, 0x1d) 0 0xfff00000 0x100000 + MBUS_ID(0x09, 0x19) 0 0xf1100000 0x10000 + MBUS_ID(0x09, 0x15) 0 0xf1110000 0x10000>; + + internal-regs { + + /* USB part of the PCIe2/USB 2.0 port */ + usb@58000 { + status = "okay"; + }; + + sata@a8000 { + status = "okay"; + }; + + sdhci@d8000 { + pinctrl-names = "default"; + pinctrl-0 = <&sdhci_pins>; + status = "okay"; + + bus-width = <8>; + no-1-8-v; + non-removable; + }; + + usb3@f0000 { + status = "okay"; + }; + + usb3@f8000 { + status = "okay"; + }; + }; + + pcie-controller { + status = "okay"; + + pcie@1,0 { + /* Port 0, Lane 0 */ + status = "okay"; + }; + + pcie@2,0 { + /* Port 1, Lane 0 */ + status = "okay"; + }; + + pcie@3,0 { + /* Port 2, Lane 0 */ + status = "okay"; + }; + }; + }; +}; + +/* Connected to 88E6176 switch, port 6 */ +ð0 { + pinctrl-names = "default"; + pinctrl-0 = <&ge0_rgmii_pins>; + status = "okay"; + phy-mode = "rgmii-id"; + + fixed-link { + speed = <1000>; + full-duplex; + }; +}; + +/* Connected to 88E6176 switch, port 5 */ +ð1 { + pinctrl-names = "default"; + pinctrl-0 = <&ge1_rgmii_pins>; + status = "okay"; + phy-mode = "rgmii-id"; + + fixed-link { + speed = <1000>; + full-duplex; + }; +}; + +/* WAN port */ +ð2 { + status = "okay"; + phy-mode = "sgmii"; + phy = <&phy1>; +}; + +&i2c0 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c0_pins>; + status = "okay"; + + i2cmux@70 { + compatible = "nxp,pca9547"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x70>; + status = "okay"; + + i2c@0 { + #address-cells = <1>; + #size-cells = <0>; + reg = <0>; + + /* STM32F0 command interface at address 0x2a */ + /* leds device (in STM32F0) at address 0x2b */ + + eeprom@54 { + compatible = "at,24c64"; + reg = <0x54>; + + /* The EEPROM contains data for bootloader. + * Contents: + * struct omnia_eeprom { + * u32 magic; (=0x0341a034 in LE) + * u32 ramsize; (in GiB) + * char regdomain[4]; + * u32 crc32; + * }; + */ + }; + }; + + i2c@1 { + #address-cells = <1>; + #size-cells = <0>; + reg = <1>; + + /* routed to PCIe0/mSATA connector (CN7A) */ + }; + + i2c@2 { + #address-cells = <1>; + #size-cells = <0>; + reg = <2>; + + /* routed to PCIe1/USB2 connector (CN61A) */ + }; + + i2c@3 { + #address-cells = <1>; + #size-cells = <0>; + reg = <3>; + + /* routed to PCIe2 connector (CN62A) */ + }; + + i2c@4 { + #address-cells = <1>; + #size-cells = <0>; + reg = <4>; + + /* routed to SFP+ */ + }; + + i2c@5 { + #address-cells = <1>; + #size-cells = <0>; + reg = <5>; + + /* ATSHA204A at address 0x64 */ + }; + + i2c@6 { + #address-cells = <1>; + #size-cells = <0>; + reg = <6>; + + /* exposed on pin header */ + }; + + i2c@7 { + #address-cells = <1>; + #size-cells = <0>; + reg = <7>; + + pcawan: gpio@71 { + /* + * GPIO expander for SFP+ signals and + * and phy irq + */ + compatible = "nxp,pca9538"; + reg = <0x71>; + + pinctrl-names = "default"; + pinctrl-0 = <&pcawan_pins>; + + interrupt-parent = <&gpio1>; + interrupts = <14 IRQ_TYPE_LEVEL_LOW>; + + gpio-controller; + #gpio-cells = <2>; + }; + }; + }; +}; + +&mdio { + pinctrl-names = "default"; + pinctrl-0 = <&mdio_pins>; + status = "okay"; + + phy1: phy@1 { + status = "okay"; + compatible = "ethernet-phy-id0141.0DD1", "ethernet-phy-ieee802.3-c22"; + reg = <1>; + + /* irq is connected to &pcawan pin 7 */ + }; + + /* Switch MV88E7176 at address 0x10 */ +}; + +&pinctrl { + pcawan_pins: pcawan-pins { + marvell,pins = "mpp46"; + marvell,function = "gpio"; + }; + + spi0cs0_pins: spi0cs0-pins { + marvell,pins = "mpp25"; + marvell,function = "spi0"; + }; + + spi0cs1_pins: spi0cs1-pins { + marvell,pins = "mpp26"; + marvell,function = "spi0"; + }; +}; + +&spi0 { + pinctrl-names = "default"; + pinctrl-0 = <&spi0_pins &spi0cs0_pins>; + status = "okay"; + + spi-nor@0 { + compatible = "spansion,s25fl164k", "jedec,spi-nor"; + #address-cells = <1>; + #size-cells = <1>; + reg = <0>; + spi-max-frequency = <40000000>; + + partition@0 { + reg = <0x0 0x00100000>; + label = "U-Boot"; + }; + + partition@1 { + reg = <0x00100000 0x00700000>; + label = "Rescue system"; + }; + }; + + /* MISO, MOSI, SCLK and CS1 are routed to pin header CN11 */ +}; + +&uart0 { + /* Pin header CN10 */ + pinctrl-names = "default"; + pinctrl-0 = <&uart0_pins>; + status = "okay"; +}; + +&uart1 { + /* Pin header CN11 */ + pinctrl-names = "default"; + pinctrl-0 = <&uart1_pins>; + status = "okay"; +};
This machine is an open hardware router by cz.nic driven by a Marvell Armada 385. Signed-off-by: Uwe Kleine-König <uwe@kleine-koenig.org> --- arch/arm/boot/dts/Makefile | 1 + arch/arm/boot/dts/armada-385-turris-omnia.dts | 334 ++++++++++++++++++++++++++ 2 files changed, 335 insertions(+) create mode 100644 arch/arm/boot/dts/armada-385-turris-omnia.dts