blob: ce66525fcf8cc0166f0f7736a548bd87d64b9110 [file] [log] [blame]
purpose: Generic Interrupt Controller node for Marvell MMP3
0 0 " e0001000" " /" begin-package
" interrupt-controller" device-name
" arm,arm11mp-gic" +compatible
0 0 " interrupt-controller" property
1 " #address-cells" integer-property
1 " #size-cells" integer-property
3 " #interrupt-cells" integer-property
h# e0001000 encode-int h# 1000 encode-int encode+
h# e0000100 encode-int encode+ h# 100 encode-int encode+ " reg" property
: encode-unit ( phys -- adr len ) push-hex (u.) pop-base ;
: decode-unit ( adr len -- phys ) push-hex $number if 0 then pop-base ;
end-package
0 0 " e0000600" " /" begin-package
" local-timer" device-name
" arm,arm11mp-twd-timer" +compatible
my-address my-space h# 20 reg
1 encode-int \ Per-processor interrupt
d# 13 encode-int encode+
h# 301 encode-int encode+ \ GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_EDGE_RISING
" interrupts" property
end-package
0 0 " e0000620" " /" begin-package
" watchdog" device-name
" arm,arm11mp-twd-wdt" +compatible
my-address my-space h# 20 reg
1 encode-int \ Per-processor interrupt
d# 14 encode-int encode+
h# 301 encode-int encode+ \ GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_EDGE_RISING
" interrupts" property
end-package
: gicparent ( -- )
" interrupt-parent" delete-property
" /interrupt-controller@e0001000" encode-phandle " interrupt-parent" property
;
dev / gicparent dend
dev /interrupt-controller@128 gicparent dend
dev /interrupt-controller@150 gicparent dend
dev /interrupt-controller@154 gicparent dend
dev /interrupt-controller@158 gicparent dend
dev /interrupt-controller@15c gicparent dend
dev /interrupt-controller@160 gicparent dend
dev /interrupt-controller@184 gicparent dend
dev /interrupt-controller@188 gicparent dend
dev /interrupt-controller@1bc gicparent dend
dev /interrupt-controller@1c0 gicparent dend
dev /interrupt-controller@1c4 gicparent dend
dev /interrupt-controller@1c8 gicparent dend
dev /interrupt-controller@1cc gicparent dend
dev /interrupt-controller@1d0 gicparent dend
: irqdef ( irq# -- )
" interrupts" delete-property
0 encode-int
rot encode-int encode+
4 encode-int encode+
" interrupts" property
;
\ modify irqs to use 3 cells instead of 1
dev /timer h# 0d irqdef dend
dev /usb@d4208000 h# 2c irqdef dend
[ifdef] olpc
dev /sspa h# 03 irqdef dend
dev /ap-sp h# 28 irqdef dend
dev /flash h# 00 irqdef dend
dev /ec-spi h# 14 irqdef dend
[else]
dev /spi@d4035000 h# 00 irqdef dend
dev /spi@d4036000 h# 01 irqdef dend
dev /spi@d4037000 h# 14 irqdef dend
dev /spi@d4039000 h# 15 irqdef dend
dev /usb@f0001000 h# 16 irqdef dend
[then]
dev /sd/sdhci@d4280000 h# 27 irqdef dend
dev /sd/sdhci@d4280800 h# 34 irqdef dend
dev /sd/sdhci@d4281000 h# 35 irqdef dend
dev /sd/sdhci@d4281800 h# 36 irqdef dend
dev /display h# 29 irqdef dend
dev /vmeta h# 1a irqdef dend
dev /uart@d4016000 h# 2e irqdef dend
dev /uart@d4030000 h# 1b irqdef dend
dev /uart@d4017000 h# 1c irqdef dend
dev /uart@d4018000 h# 18 irqdef dend
dev /i2c@d4011000 h# 07 irqdef dend
dev /dma h# 30 irqdef dend
dev /gpio h# 31 irqdef dend
dev /interrupt-controller@128 d# 48 irqdef dend
dev /interrupt-controller@150 d# 4 irqdef dend
dev /interrupt-controller@154 d# 5 irqdef dend
dev /interrupt-controller@158 d# 17 irqdef dend
dev /interrupt-controller@15c d# 35 irqdef dend
dev /interrupt-controller@160 d# 51 irqdef dend
dev /interrupt-controller@184 d# 55 irqdef dend
dev /interrupt-controller@188 d# 57 irqdef dend
dev /interrupt-controller@1bc d# 6 irqdef dend
dev /interrupt-controller@1c0 d# 8 irqdef dend
dev /interrupt-controller@1c4 d# 18 irqdef dend
dev /interrupt-controller@1c8 d# 30 irqdef dend
dev /interrupt-controller@1cc d# 42 irqdef dend
dev /interrupt-controller@1d0 d# 58 irqdef dend
\ Enable the TWD timer
\ PMUA_CC3_PJ |= PJ4_MP_TIMER_RST | PJ4_MP_TIMER_CLK_EN
standalone? if h# 18 h# 188 pmua-set then
: mmp3-gic ; \ 92ms