Re: [PATCH 1/2] MIPS: BMIPS: add BCM7435 dtsi

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

please CC devicetree on dts(i) submissions.

On Tue, May 5, 2015 at 3:10 AM, Florian Fainelli <f.fainelli@xxxxxxxxx> wrote:
> Add the bare minimum required to boot a BCM7435-based system:
>
> - BMIPS5200 CPU nodes
> - Level 1 and 2 interrupt controllers
> - UARTs
> - EHCI/OHCI controllers
>
> Signed-off-by: Florian Fainelli <f.fainelli@xxxxxxxxx>
> ---
>  arch/mips/boot/dts/brcm/bcm7435.dtsi | 239 +++++++++++++++++++++++++++++++++++
>  1 file changed, 239 insertions(+)
>  create mode 100644 arch/mips/boot/dts/brcm/bcm7435.dtsi
>
> diff --git a/arch/mips/boot/dts/brcm/bcm7435.dtsi b/arch/mips/boot/dts/brcm/bcm7435.dtsi
> new file mode 100644
> index 000000000000..8b9432cc062b
> --- /dev/null
> +++ b/arch/mips/boot/dts/brcm/bcm7435.dtsi
> @@ -0,0 +1,239 @@
> +/ {
> +       #address-cells = <1>;
> +       #size-cells = <1>;
> +       compatible = "brcm,bcm7435";
> +
> +       cpus {
> +               #address-cells = <1>;
> +               #size-cells = <0>;
> +
> +               mips-hpt-frequency = <163125000>;
> +
> +               cpu@0 {
> +                       compatible = "brcm,bmips5200";
> +                       device_type = "cpu";
> +                       reg = <0>;
> +               };
> +
> +               cpu@1 {
> +                       compatible = "brcm,bmips5200";
> +                       device_type = "cpu";
> +                       reg = <1>;
> +               };
> +
> +               cpu@2 {
> +                       compatible = "brcm,bmips5200";
> +                       device_type = "cpu";
> +                       reg = <2>;
> +               };
> +
> +               cpu@3 {
> +                       compatible = "brcm,bmips5200";
> +                       device_type = "cpu";
> +                       reg = <3>;
> +               };
> +       };
> +
> +       aliases {
> +               uart0 = &uart0;
> +       };
> +
> +       cpu_intc: cpu_intc {
> +               #address-cells = <0>;
> +               compatible = "mti,cpu-interrupt-controller";
> +
> +               interrupt-controller;
> +               #interrupt-cells = <1>;
> +       };
> +
> +       clocks {
> +               uart_clk: uart_clk {
> +                       compatible = "fixed-clock";
> +                       #clock-cells = <0>;
> +                       clock-frequency = <81000000>;

While optional, I think it might be a good idea to provide a
clock-output-names property.

> +               };
> +       };
> +
> +       rdb {
> +               #address-cells = <1>;
> +               #size-cells = <1>;
> +
> +               compatible = "simple-bus";
> +               ranges = <0 0x10000000 0x01000000>;
> +
> +               periph_intc: periph_intc@41b500 {

This should be periph_intc: interrupt-controller@...

> +                       compatible = "brcm,bcm7038-l1-intc";
> +                       reg = <0x41b500 0x40>, <0x41b600 0x40>;
> +
> +                       interrupt-controller;
> +                       #interrupt-cells = <1>;
> +
> +                       interrupt-parent = <&cpu_intc>;
> +                       interrupts = <2>, <3>;
> +               };
> +
> +               sun_l2_intc: sun_l2_intc@403000 {

similar here

> +                       compatible = "brcm,l2-intc";

This sounds overly generic, I think you missed a chip id there.

> +                       reg = <0x403000 0x30>;
> +                       interrupt-controller;
> +                       #interrupt-cells = <1>;
> +                       interrupt-parent = <&periph_intc>;
> +                       interrupts = <52>;
> +               };
> +
> +               gisb-arb@400000 {
> +                       compatible = "brcm,bcm7400-gisb-arb";
> +                       reg = <0x400000 0xdc>;
> +                       native-endian;
> +                       interrupt-parent = <&sun_l2_intc>;
> +                       interrupts = <0>, <2>;
> +                       brcm,gisb-arb-master-mask = <0xf77f>;
> +                       brcm,gisb-arb-master-names = "ssp_0", "cpu_0", "webcpu_0",
> +                                                    "pcie_0", "bsp_0",
> +                                                    "rdc_0", "raaga_0",
> +                                                    "avd_1", "jtag_0",
> +                                                    "svd_0", "vice_0",
> +                                                    "vice_1", "raaga_1",
> +                                                    "scpu";
> +               };
> +
> +               upg_irq0_intc: upg_irq0_intc@406780 {
> +                       compatible = "brcm,bcm7120-l2-intc";
> +                       reg = <0x406780 0x8>;
> +
> +                       brcm,int-map-mask = <0x44>;
> +                       brcm,int-fwd-mask = <0x70000>;
> +
> +                       interrupt-controller;
> +                       #interrupt-cells = <1>;
> +
> +                       interrupt-parent = <&periph_intc>;
> +                       interrupts = <60>;
> +               };
> +
> +               sun_top_ctrl: syscon@404000 {
> +                       compatible = "brcm,bcm7425-sun-top-ctrl", "syscon";
> +                       reg = <0x404000 0x51c>;
> +                       little-endian;

So this one doesn't follow system endianness?

> +               };
> +
> +               reboot {
> +                       compatible = "brcm,brcmstb-reboot";
> +                       syscon = <&sun_top_ctrl 0x304 0x308>;
> +               };
> +
> +               uart0: serial@406b00 {
> +                       compatible = "ns16550a";
> +                       reg = <0x406b00 0x20>;
> +                       reg-io-width = <0x4>;
> +                       reg-shift = <0x2>;

Do we really need a hex notation for these?

> +                       interrupt-parent = <&periph_intc>;
> +                       interrupts = <66>;
> +                       clocks = <&uart_clk>;
> +                       status = "disabled";
> +               };
> +
> +               enet0: ethernet@b80000 {
> +                       phy-mode = "internal";
> +                       phy-handle = <&phy1>;
> +                       mac-address = [ 00 10 18 36 23 1a ];

I hope this isn't the mac of your reference board ;-)

> +                       compatible = "brcm,genet-v3";

Usually the compatible property is the first one, a bit surprising to
see it in the middle.

> +                       #address-cells = <0x1>;
> +                       #size-cells = <0x1>;

Do we really need a hex notation for these?

> +                       reg = <0xb80000 0x11c88>;
> +                       interrupts = <17>, <18>;
> +                       interrupt-parent = <&periph_intc>;
> +                       status = "disabled";
> +
> +                       mdio@e14 {
> +                               compatible = "brcm,genet-mdio-v3";
> +                               #address-cells = <0x1>;
> +                               #size-cells = <0x0>;

Do we really need a hex notation for these?

> +                               reg = <0xe14 0x8>;
> +
> +                               phy1: ethernet-phy@1 {
> +                                       max-speed = <100>;
> +                                       reg = <0x1>;

Do we really need a hex notation for this?

Regards
Jonas (keeping the rest of the patch intact so devicetree can see it)


> +                                       compatible = "brcm,40nm-ephy",
> +                                               "ethernet-phy-ieee802.3-c22";
> +                               };
> +                       };
> +               };
> +
> +               ehci0: usb@480300 {
> +                       compatible = "brcm,bcm7435-ehci", "generic-ehci";
> +                       reg = <0x480300 0x100>;
> +                       native-endian;
> +                       interrupt-parent = <&periph_intc>;
> +                       interrupts = <70>;
> +                       status = "disabled";
> +               };
> +
> +               ohci0: usb@480400 {
> +                       compatible = "brcm,bcm7435-ohci", "generic-ohci";
> +                       reg = <0x480400 0x100>;
> +                       native-endian;
> +                       no-big-frame-no;
> +                       interrupt-parent = <&periph_intc>;
> +                       interrupts = <72>;
> +                       status = "disabled";
> +               };
> +
> +               ehci1: usb@480500 {
> +                       compatible = "brcm,bcm7435-ehci", "generic-ehci";
> +                       reg = <0x480500 0x100>;
> +                       native-endian;
> +                       interrupt-parent = <&periph_intc>;
> +                       interrupts = <71>;
> +                       status = "disabled";
> +               };
> +
> +               ohci1: usb@480600 {
> +                       compatible = "brcm,bcm7435-ohci", "generic-ohci";
> +                       reg = <0x480600 0x100>;
> +                       native-endian;
> +                       no-big-frame-no;
> +                       interrupt-parent = <&periph_intc>;
> +                       interrupts = <73>;
> +                       status = "disabled";
> +               };
> +
> +               ehci2: usb@490300 {
> +                       compatible = "brcm,bcm7435-ehci", "generic-ehci";
> +                       reg = <0x490300 0x100>;
> +                       native-endian;
> +                       interrupt-parent = <&periph_intc>;
> +                       interrupts = <75>;
> +                       status = "disabled";
> +               };
> +
> +               ohci2: usb@490400 {
> +                       compatible = "brcm,bcm7435-ohci", "generic-ohci";
> +                       reg = <0x490400 0x100>;
> +                       native-endian;
> +                       no-big-frame-no;
> +                       interrupt-parent = <&periph_intc>;
> +                       interrupts = <77>;
> +                       status = "disabled";
> +               };
> +
> +               ehci3: usb@490500 {
> +                       compatible = "brcm,bcm7435-ehci", "generic-ehci";
> +                       reg = <0x490500 0x100>;
> +                       native-endian;
> +                       interrupt-parent = <&periph_intc>;
> +                       interrupts = <76>;
> +                       status = "disabled";
> +               };
> +
> +               ohci3: usb@490600 {
> +                       compatible = "brcm,bcm7435-ohci", "generic-ohci";
> +                       reg = <0x490600 0x100>;
> +                       native-endian;
> +                       no-big-frame-no;
> +                       interrupt-parent = <&periph_intc>;
> +                       interrupts = <78>;
> +                       status = "disabled";
> +               };
> +       };
> +};
> --
> 2.1.0





[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux