IXP4xx DTS updates for the v5.14 kernel:

- Add ethernet to the boards
 - Add PCI hosts to the boards
 - Create an expansion bus around the flash memory
 - Add the beeper to NSLU2 completing the NSLU2 DTS
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEElDRnuGcz/wPCXQWMQRCzN7AZXXMFAmC2GpQACgkQQRCzN7AZ
 XXM+rBAAi4pY5gcmzy3tFdt0wNuJFs3Wn8zvaWRybFottIvfUw+lXOYiHBpa9O0m
 yToj+LwKbylgeAuG7rfjzVRq0snKKF5y00eq3MKPGxYTZYGQ71lw80v24k6hnxug
 yOKzabbViQihHPzddxZmPvjI8jFjZlx4ChHIe1rbzRxQgfR1uqaKICuaake7/jXr
 PEoP4uhfyIjBuOiCBBva3UPhSKuEZUJnzOGs0TbYoX8D3DryWQrCtWVg0ogWwdWM
 /SLjFpuHpsYt84d8wIkMPu8sVcrj0/jy796UISPhKYxMKMd8USzkAZcyxD3w/WNJ
 KjtQnp137smEoeqqLnHViEqMD7jv7GG0+ptfhMqRGKiV770yOKbXKvCj/EWQxIfX
 wjdLesSIa8douAk6jX09iSaVril+oxw9fNCsRJJX5k0382quGEvjZPfhs3qSuL8Q
 ltXB/y5hV9ropbvi2volRvx5PF54RNFCxJW68fAaV8FxNhOOUGDLWp3fQ7oDl2Iz
 EOEgqeu/Ue1wffrZ+tJWQDn6z04Yj7vs/76YzaRicc8JIr4o8rS+6f9feYLYSDgQ
 K8LZaKUhS7XHR4YMzWqNi0oIsT2T1JIWWtO16JYvk1pRIbIgVAaiztXPeZcGkHs4
 jIyIMIJ8FpnQYmMvbtT7jOVCVSdLenrHVKjfitgKI4uGqtRj2fg=
 =W/eR
 -----END PGP SIGNATURE-----

Merge tag 'ixp4xx-dts-v5.14-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-nomadik into arm/dt

IXP4xx DTS updates for the v5.14 kernel:
- Add ethernet to the boards
- Add PCI hosts to the boards
- Create an expansion bus around the flash memory
- Add the beeper to NSLU2 completing the NSLU2 DTS

* tag 'ixp4xx-dts-v5.14-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-nomadik:
  ARM: dts: Fix up the IXP4xx ethernet nodes
  ARM: dts: ixp4xx: Add beeper to the NSLU2
  ARM: dts: ixp4xx: Create a proper expansion bus
  ARM: dts: ixp4xx: Add PCI hosts
  ARM: dts: ixp4xx: Add ethernet

Link: https://lore.kernel.org/r/CACRpkdbmRjGW7vpr7hG+jiRTqNMZAyKZNhtvzj=SqhZmb1+F6A@mail.gmail.com
Signed-off-by: Olof Johansson <olof@lixom.net>
This commit is contained in:
Olof Johansson 2021-06-12 08:24:49 -07:00
commit 3b0898f978
6 changed files with 278 additions and 26 deletions

View File

@ -90,20 +90,71 @@
timeout-ms = <5000>; timeout-ms = <5000>;
}; };
/* The first 16MB region on the expansion bus */ gpio-beeper {
flash@50000000 { compatible = "gpio-beeper";
compatible = "intel,ixp4xx-flash", "cfi-flash"; gpios = <&gpio0 4 GPIO_ACTIVE_HIGH>;
bank-width = <2>; };
/*
* 8 MB of Flash in 0x20000 byte blocks
* mapped in at 0x50000000
*/
reg = <0x50000000 0x800000>;
partitions { soc {
compatible = "redboot-fis"; bus@50000000 {
/* Eraseblock at 0x7e0000 */ /* The first 16MB region at CS0 on the expansion bus */
fis-index-block = <0x3f>; flash@0 {
compatible = "intel,ixp4xx-flash", "cfi-flash";
bank-width = <2>;
/*
* 8 MB of Flash in 0x20000 byte blocks
* mapped in at CS0.
*/
reg = <0x00000000 0x800000>;
partitions {
compatible = "redboot-fis";
/* Eraseblock at 0x7e0000 */
fis-index-block = <0x3f>;
};
};
};
pci@c0000000 {
status = "ok";
/*
* Taken from NSLU2 PCI boardfile, INT A, B, C swizzled D constant
* We have slots (IDSEL) 1, 2 and 3.
*/
interrupt-map =
/* IDSEL 1 */
<0x0800 0 0 1 &gpio0 11 3>, /* INT A on slot 1 is irq 11 */
<0x0800 0 0 2 &gpio0 10 3>, /* INT B on slot 1 is irq 10 */
<0x0800 0 0 3 &gpio0 9 3>, /* INT C on slot 1 is irq 9 */
<0x0800 0 0 4 &gpio0 8 3>, /* INT D on slot 1 is irq 8 */
/* IDSEL 2 */
<0x1000 0 0 1 &gpio0 10 3>, /* INT A on slot 2 is irq 10 */
<0x1000 0 0 2 &gpio0 9 3>, /* INT B on slot 2 is irq 9 */
<0x1000 0 0 3 &gpio0 11 3>, /* INT C on slot 2 is irq 11 */
<0x1000 0 0 4 &gpio0 8 3>, /* INT D on slot 2 is irq 8 */
/* IDSEL 3 */
<0x1800 0 0 1 &gpio0 9 3>, /* INT A on slot 3 is irq 9 */
<0x1800 0 0 2 &gpio0 11 3>, /* INT B on slot 3 is irq 11 */
<0x1800 0 0 3 &gpio0 10 3>, /* INT C on slot 3 is irq 10 */
<0x1800 0 0 4 &gpio0 8 3>; /* INT D on slot 3 is irq 8 */
};
ethernet@c8009000 {
status = "ok";
queue-rx = <&qmgr 3>;
queue-txready = <&qmgr 20>;
phy-mode = "rgmii";
phy-handle = <&phy1>;
mdio {
#address-cells = <1>;
#size-cells = <0>;
phy1: ethernet-phy@1 {
reg = <1>;
};
};
}; };
}; };
}; };

View File

@ -7,6 +7,10 @@
/ { / {
soc { soc {
pci@c0000000 {
compatible = "intel,ixp42x-pci";
};
interrupt-controller@c8003000 { interrupt-controller@c8003000 {
compatible = "intel,ixp42x-interrupt"; compatible = "intel,ixp42x-interrupt";
}; };

View File

@ -76,19 +76,97 @@
}; };
}; };
flash@50000000 { soc {
compatible = "intel,ixp4xx-flash", "cfi-flash"; bus@50000000 {
bank-width = <2>; flash@0 {
/* compatible = "intel,ixp4xx-flash", "cfi-flash";
* 32 MB of Flash in 0x20000 byte blocks bank-width = <2>;
* mapped in at 0x50000000 /*
*/ * 32 MB of Flash in 0x20000 byte blocks
reg = <0x50000000 0x2000000>; * mapped in at CS0.
*/
reg = <0x00000000 0x2000000>;
partitions { partitions {
compatible = "redboot-fis"; compatible = "redboot-fis";
/* Eraseblock at 0x1fe0000 */ /* Eraseblock at 0x1fe0000 */
fis-index-block = <0xff>; fis-index-block = <0xff>;
};
};
};
pci@c0000000 {
status = "ok";
/*
* In the boardfile for the Cambria from OpenWRT the interrupts
* are assigned one per IDSEL, so all 4 interrupts from IDSEL
* 1 are connected to IRQ 11, all 4 interrupts from IDSEL 2
* connected to IRQ 10 etc. I find this highly unlikely so I
* have instead assumed that they are rotated (swizzled) like
* this with 11, 10, 9, 8 for the 4 pins on IDSEL 1 etc.
*/
interrupt-map =
/* IDSEL 1 */
<0x0800 0 0 1 &gpio0 11 3>, /* INT A on slot 1 is irq 11 */
<0x0800 0 0 2 &gpio0 10 3>, /* INT B on slot 1 is irq 10 */
<0x0800 0 0 3 &gpio0 9 3>, /* INT C on slot 1 is irq 9 */
<0x0800 0 0 4 &gpio0 8 3>, /* INT D on slot 1 is irq 8 */
/* IDSEL 2 */
<0x1000 0 0 1 &gpio0 10 3>, /* INT A on slot 2 is irq 10 */
<0x1000 0 0 2 &gpio0 9 3>, /* INT B on slot 2 is irq 9 */
<0x1000 0 0 3 &gpio0 8 3>, /* INT C on slot 2 is irq 8 */
<0x1000 0 0 4 &gpio0 11 3>, /* INT D on slot 2 is irq 11 */
/* IDSEL 3 */
<0x1800 0 0 1 &gpio0 9 3>, /* INT A on slot 3 is irq 9 */
<0x1800 0 0 2 &gpio0 8 3>, /* INT B on slot 3 is irq 8 */
<0x1800 0 0 3 &gpio0 11 3>, /* INT C on slot 3 is irq 11 */
<0x1800 0 0 4 &gpio0 10 3>, /* INT D on slot 3 is irq 10 */
/* IDSEL 4 */
<0x2000 0 0 1 &gpio0 8 3>, /* INT A on slot 3 is irq 8 */
<0x2000 0 0 2 &gpio0 11 3>, /* INT B on slot 3 is irq 11 */
<0x2000 0 0 3 &gpio0 10 3>, /* INT C on slot 3 is irq 10 */
<0x2000 0 0 4 &gpio0 9 3>, /* INT D on slot 3 is irq 9 */
/* IDSEL 6 */
<0x3000 0 0 1 &gpio0 10 3>, /* INT A on slot 3 is irq 10 */
<0x3000 0 0 2 &gpio0 9 3>, /* INT B on slot 3 is irq 9 */
<0x3000 0 0 3 &gpio0 8 3>, /* INT C on slot 3 is irq 8 */
<0x3000 0 0 4 &gpio0 11 3>, /* INT D on slot 3 is irq 11 */
/* IDSEL 15 */
<0x7800 0 0 1 &gpio0 8 3>, /* INT A on slot 3 is irq 8 */
<0x7800 0 0 2 &gpio0 11 3>, /* INT B on slot 3 is irq 11 */
<0x7800 0 0 3 &gpio0 10 3>, /* INT C on slot 3 is irq 10 */
<0x7800 0 0 4 &gpio0 9 3>; /* INT D on slot 3 is irq 9 */
};
ethernet@c800a000 {
status = "ok";
queue-rx = <&qmgr 4>;
queue-txready = <&qmgr 21>;
phy-mode = "rgmii";
phy-handle = <&phy1>;
mdio {
#address-cells = <1>;
#size-cells = <0>;
phy1: ethernet-phy@1 {
reg = <1>;
};
phy2: ethernet-phy@2 {
reg = <2>;
};
};
};
ethernet@c800c000 {
status = "ok";
queue-rx = <&qmgr 2>;
queue-txready = <&qmgr 19>;
phy-mode = "rgmii";
phy-handle = <&phy2>;
intel,npe-handle = <&npe 0>;
}; };
}; };
}; };

View File

@ -8,6 +8,10 @@
/ { / {
soc { soc {
pci@c0000000 {
compatible = "intel,ixp43x-pci";
};
interrupt-controller@c8003000 { interrupt-controller@c8003000 {
compatible = "intel,ixp43x-interrupt"; compatible = "intel,ixp43x-interrupt";
}; };

View File

@ -30,5 +30,38 @@
interrupts = <33 IRQ_TYPE_LEVEL_HIGH>; interrupts = <33 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled"; status = "disabled";
}; };
/* This is known as EthB1 */
ethernet@c800d000 {
compatible = "intel,ixp4xx-ethernet";
reg = <0xc800d000 0x1000>;
status = "disabled";
intel,npe = <1>;
/* Dummy values that depend on firmware */
queue-rx = <&qmgr 0>;
queue-txready = <&qmgr 0>;
};
/* This is known as EthB2 */
ethernet@c800e000 {
compatible = "intel,ixp4xx-ethernet";
reg = <0xc800e000 0x1000>;
status = "disabled";
intel,npe = <2>;
/* Dummy values that depend on firmware */
queue-rx = <&qmgr 0>;
queue-txready = <&qmgr 0>;
};
/* This is known as EthB3 */
ethernet@c800f000 {
compatible = "intel,ixp4xx-ethernet";
reg = <0xc800f000 0x1000>;
status = "disabled";
intel,npe = <3>;
/* Dummy values that depend on firmware */
queue-rx = <&qmgr 0>;
queue-txready = <&qmgr 0>;
};
}; };
}; };

View File

@ -14,12 +14,61 @@
compatible = "simple-bus"; compatible = "simple-bus";
interrupt-parent = <&intcon>; interrupt-parent = <&intcon>;
/*
* The IXP4xx expansion bus is a set of 16 or 32MB
* windows in the 256MB space from 0x50000000 to
* 0x5fffffff.
*/
bus@50000000 {
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x00000000 0x50000000 0x10000000>;
dma-ranges = <0x00000000 0x50000000 0x10000000>;
};
qmgr: queue-manager@60000000 { qmgr: queue-manager@60000000 {
compatible = "intel,ixp4xx-ahb-queue-manager"; compatible = "intel,ixp4xx-ahb-queue-manager";
reg = <0x60000000 0x4000>; reg = <0x60000000 0x4000>;
interrupts = <3 IRQ_TYPE_LEVEL_HIGH>, <4 IRQ_TYPE_LEVEL_HIGH>; interrupts = <3 IRQ_TYPE_LEVEL_HIGH>, <4 IRQ_TYPE_LEVEL_HIGH>;
}; };
pci@c0000000 {
/* compatible filled in by per-soc device tree */
reg = <0xc0000000 0x1000>;
interrupts = <8 IRQ_TYPE_LEVEL_HIGH>,
<9 IRQ_TYPE_LEVEL_HIGH>,
<10 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <3>;
#size-cells = <2>;
device_type = "pci";
bus-range = <0x00 0xff>;
status = "disabled";
ranges =
/*
* 64MB 32bit non-prefetchable memory 0x48000000-0x4bffffff
* done in 4 chunks of 16MB each.
*/
<0x02000000 0 0x48000000 0x48000000 0 0x04000000>,
/* 64KB I/O space at 0x4c000000 */
<0x01000000 0 0x00000000 0x4c000000 0 0x00010000>;
/*
* This needs to map to the start of physical memory so
* PCI devices can see all (hopefully) memory. This is done
* using 4 1:1 16MB windows, so the RAM should not be more than
* 64 MB for this to work. If your memory is anywhere else
* than at 0x0 you need to alter this.
*/
dma-ranges =
<0x02000000 0 0x00000000 0x00000000 0 0x04000000>;
#interrupt-cells = <1>;
interrupt-map-mask = <0xf800 0 0 7>;
/* Each unique DTS using PCI must specify the swizzling */
};
uart0: serial@c8000000 { uart0: serial@c8000000 {
compatible = "intel,xscale-uart"; compatible = "intel,xscale-uart";
reg = <0xc8000000 0x1000>; reg = <0xc8000000 0x1000>;
@ -61,9 +110,42 @@
interrupts = <5 IRQ_TYPE_LEVEL_HIGH>; interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
}; };
npe@c8006000 { npe: npe@c8006000 {
compatible = "intel,ixp4xx-network-processing-engine"; compatible = "intel,ixp4xx-network-processing-engine";
reg = <0xc8006000 0x1000>, <0xc8007000 0x1000>, <0xc8008000 0x1000>; reg = <0xc8006000 0x1000>, <0xc8007000 0x1000>, <0xc8008000 0x1000>;
}; };
/* This is known as EthB */
ethernet@c8009000 {
compatible = "intel,ixp4xx-ethernet";
reg = <0xc8009000 0x1000>;
status = "disabled";
/* Dummy values that depend on firmware */
queue-rx = <&qmgr 3>;
queue-txready = <&qmgr 20>;
intel,npe-handle = <&npe 1>;
};
/* This is known as EthC */
ethernet@c800a000 {
compatible = "intel,ixp4xx-ethernet";
reg = <0xc800a000 0x1000>;
status = "disabled";
/* Dummy values that depend on firmware */
queue-rx = <&qmgr 0>;
queue-txready = <&qmgr 0>;
intel,npe-handle = <&npe 2>;
};
/* This is known as EthA */
ethernet@c800c000 {
compatible = "intel,ixp4xx-ethernet";
reg = <0xc800c000 0x1000>;
status = "disabled";
intel,npe = <0>;
/* Dummy values that depend on firmware */
queue-rx = <&qmgr 0>;
queue-txready = <&qmgr 0>;
};
}; };
}; };