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:
commit
3b0898f978
@ -90,20 +90,71 @@
|
||||
timeout-ms = <5000>;
|
||||
};
|
||||
|
||||
/* The first 16MB region on the expansion bus */
|
||||
flash@50000000 {
|
||||
compatible = "intel,ixp4xx-flash", "cfi-flash";
|
||||
bank-width = <2>;
|
||||
/*
|
||||
* 8 MB of Flash in 0x20000 byte blocks
|
||||
* mapped in at 0x50000000
|
||||
*/
|
||||
reg = <0x50000000 0x800000>;
|
||||
gpio-beeper {
|
||||
compatible = "gpio-beeper";
|
||||
gpios = <&gpio0 4 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
partitions {
|
||||
compatible = "redboot-fis";
|
||||
/* Eraseblock at 0x7e0000 */
|
||||
fis-index-block = <0x3f>;
|
||||
soc {
|
||||
bus@50000000 {
|
||||
/* The first 16MB region at CS0 on the expansion bus */
|
||||
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>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -7,6 +7,10 @@
|
||||
|
||||
/ {
|
||||
soc {
|
||||
pci@c0000000 {
|
||||
compatible = "intel,ixp42x-pci";
|
||||
};
|
||||
|
||||
interrupt-controller@c8003000 {
|
||||
compatible = "intel,ixp42x-interrupt";
|
||||
};
|
||||
|
@ -76,19 +76,97 @@
|
||||
};
|
||||
};
|
||||
|
||||
flash@50000000 {
|
||||
compatible = "intel,ixp4xx-flash", "cfi-flash";
|
||||
bank-width = <2>;
|
||||
/*
|
||||
* 32 MB of Flash in 0x20000 byte blocks
|
||||
* mapped in at 0x50000000
|
||||
*/
|
||||
reg = <0x50000000 0x2000000>;
|
||||
soc {
|
||||
bus@50000000 {
|
||||
flash@0 {
|
||||
compatible = "intel,ixp4xx-flash", "cfi-flash";
|
||||
bank-width = <2>;
|
||||
/*
|
||||
* 32 MB of Flash in 0x20000 byte blocks
|
||||
* mapped in at CS0.
|
||||
*/
|
||||
reg = <0x00000000 0x2000000>;
|
||||
|
||||
partitions {
|
||||
compatible = "redboot-fis";
|
||||
/* Eraseblock at 0x1fe0000 */
|
||||
fis-index-block = <0xff>;
|
||||
partitions {
|
||||
compatible = "redboot-fis";
|
||||
/* Eraseblock at 0x1fe0000 */
|
||||
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>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -8,6 +8,10 @@
|
||||
|
||||
/ {
|
||||
soc {
|
||||
pci@c0000000 {
|
||||
compatible = "intel,ixp43x-pci";
|
||||
};
|
||||
|
||||
interrupt-controller@c8003000 {
|
||||
compatible = "intel,ixp43x-interrupt";
|
||||
};
|
||||
|
@ -30,5 +30,38 @@
|
||||
interrupts = <33 IRQ_TYPE_LEVEL_HIGH>;
|
||||
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>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -14,12 +14,61 @@
|
||||
compatible = "simple-bus";
|
||||
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 {
|
||||
compatible = "intel,ixp4xx-ahb-queue-manager";
|
||||
reg = <0x60000000 0x4000>;
|
||||
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 {
|
||||
compatible = "intel,xscale-uart";
|
||||
reg = <0xc8000000 0x1000>;
|
||||
@ -61,9 +110,42 @@
|
||||
interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
npe@c8006000 {
|
||||
npe: npe@c8006000 {
|
||||
compatible = "intel,ixp4xx-network-processing-engine";
|
||||
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>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user