1*c66ec88fSEmmanuel VadotDriver for ARM AXI Bus with Broadcom Plugins (bcma) 2*c66ec88fSEmmanuel Vadot 3*c66ec88fSEmmanuel VadotRequired properties: 4*c66ec88fSEmmanuel Vadot 5*c66ec88fSEmmanuel Vadot- compatible : brcm,bus-axi 6*c66ec88fSEmmanuel Vadot 7*c66ec88fSEmmanuel Vadot- reg : iomem address range of chipcommon core 8*c66ec88fSEmmanuel Vadot 9*c66ec88fSEmmanuel VadotThe cores on the AXI bus are automatically detected by bcma with the 10*c66ec88fSEmmanuel Vadotmemory ranges they are using and they get registered afterwards. 11*c66ec88fSEmmanuel VadotAutomatic detection of the IRQ number is not working on 12*c66ec88fSEmmanuel VadotBCM47xx/BCM53xx ARM SoCs. To assign IRQ numbers to the cores, provide 13*c66ec88fSEmmanuel Vadotthem manually through device tree. Use an interrupt-map to specify the 14*c66ec88fSEmmanuel VadotIRQ used by the devices on the bus. The first address is just an index, 15*c66ec88fSEmmanuel Vadotbecause we do not have any special register. 16*c66ec88fSEmmanuel Vadot 17*c66ec88fSEmmanuel VadotThe top-level axi bus may contain children representing attached cores 18*c66ec88fSEmmanuel Vadot(devices). This is needed since some hardware details can't be auto 19*c66ec88fSEmmanuel Vadotdetected (e.g. IRQ numbers). Also some of the cores may be responsible 20*c66ec88fSEmmanuel Vadotfor extra things, e.g. ChipCommon providing access to the GPIO chip. 21*c66ec88fSEmmanuel Vadot 22*c66ec88fSEmmanuel VadotExample: 23*c66ec88fSEmmanuel Vadot 24*c66ec88fSEmmanuel Vadot axi@18000000 { 25*c66ec88fSEmmanuel Vadot compatible = "brcm,bus-axi"; 26*c66ec88fSEmmanuel Vadot reg = <0x18000000 0x1000>; 27*c66ec88fSEmmanuel Vadot ranges = <0x00000000 0x18000000 0x00100000>; 28*c66ec88fSEmmanuel Vadot #address-cells = <1>; 29*c66ec88fSEmmanuel Vadot #size-cells = <1>; 30*c66ec88fSEmmanuel Vadot #interrupt-cells = <1>; 31*c66ec88fSEmmanuel Vadot interrupt-map-mask = <0x000fffff 0xffff>; 32*c66ec88fSEmmanuel Vadot interrupt-map = 33*c66ec88fSEmmanuel Vadot /* Ethernet Controller 0 */ 34*c66ec88fSEmmanuel Vadot <0x00024000 0 &gic GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>, 35*c66ec88fSEmmanuel Vadot 36*c66ec88fSEmmanuel Vadot /* Ethernet Controller 1 */ 37*c66ec88fSEmmanuel Vadot <0x00025000 0 &gic GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>; 38*c66ec88fSEmmanuel Vadot 39*c66ec88fSEmmanuel Vadot /* PCIe Controller 0 */ 40*c66ec88fSEmmanuel Vadot <0x00012000 0 &gic GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>, 41*c66ec88fSEmmanuel Vadot <0x00012000 1 &gic GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>, 42*c66ec88fSEmmanuel Vadot <0x00012000 2 &gic GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>, 43*c66ec88fSEmmanuel Vadot <0x00012000 3 &gic GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>, 44*c66ec88fSEmmanuel Vadot <0x00012000 4 &gic GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>, 45*c66ec88fSEmmanuel Vadot <0x00012000 5 &gic GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>; 46*c66ec88fSEmmanuel Vadot 47*c66ec88fSEmmanuel Vadot chipcommon { 48*c66ec88fSEmmanuel Vadot reg = <0x00000000 0x1000>; 49*c66ec88fSEmmanuel Vadot 50*c66ec88fSEmmanuel Vadot gpio-controller; 51*c66ec88fSEmmanuel Vadot #gpio-cells = <2>; 52*c66ec88fSEmmanuel Vadot }; 53*c66ec88fSEmmanuel Vadot }; 54