18c2ecf20Sopenharmony_ciDriver for ARM AXI Bus with Broadcom Plugins (bcma) 28c2ecf20Sopenharmony_ci 38c2ecf20Sopenharmony_ciRequired properties: 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ci- compatible : brcm,bus-axi 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ci- reg : iomem address range of chipcommon core 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ciThe cores on the AXI bus are automatically detected by bcma with the 108c2ecf20Sopenharmony_cimemory ranges they are using and they get registered afterwards. 118c2ecf20Sopenharmony_ciAutomatic detection of the IRQ number is not working on 128c2ecf20Sopenharmony_ciBCM47xx/BCM53xx ARM SoCs. To assign IRQ numbers to the cores, provide 138c2ecf20Sopenharmony_cithem manually through device tree. Use an interrupt-map to specify the 148c2ecf20Sopenharmony_ciIRQ used by the devices on the bus. The first address is just an index, 158c2ecf20Sopenharmony_cibecause we do not have any special register. 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ciThe top-level axi bus may contain children representing attached cores 188c2ecf20Sopenharmony_ci(devices). This is needed since some hardware details can't be auto 198c2ecf20Sopenharmony_cidetected (e.g. IRQ numbers). Also some of the cores may be responsible 208c2ecf20Sopenharmony_cifor extra things, e.g. ChipCommon providing access to the GPIO chip. 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ciExample: 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ci axi@18000000 { 258c2ecf20Sopenharmony_ci compatible = "brcm,bus-axi"; 268c2ecf20Sopenharmony_ci reg = <0x18000000 0x1000>; 278c2ecf20Sopenharmony_ci ranges = <0x00000000 0x18000000 0x00100000>; 288c2ecf20Sopenharmony_ci #address-cells = <1>; 298c2ecf20Sopenharmony_ci #size-cells = <1>; 308c2ecf20Sopenharmony_ci #interrupt-cells = <1>; 318c2ecf20Sopenharmony_ci interrupt-map-mask = <0x000fffff 0xffff>; 328c2ecf20Sopenharmony_ci interrupt-map = 338c2ecf20Sopenharmony_ci /* Ethernet Controller 0 */ 348c2ecf20Sopenharmony_ci <0x00024000 0 &gic GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>, 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ci /* Ethernet Controller 1 */ 378c2ecf20Sopenharmony_ci <0x00025000 0 &gic GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>; 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ci /* PCIe Controller 0 */ 408c2ecf20Sopenharmony_ci <0x00012000 0 &gic GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>, 418c2ecf20Sopenharmony_ci <0x00012000 1 &gic GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>, 428c2ecf20Sopenharmony_ci <0x00012000 2 &gic GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>, 438c2ecf20Sopenharmony_ci <0x00012000 3 &gic GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>, 448c2ecf20Sopenharmony_ci <0x00012000 4 &gic GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>, 458c2ecf20Sopenharmony_ci <0x00012000 5 &gic GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>; 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ci chipcommon { 488c2ecf20Sopenharmony_ci reg = <0x00000000 0x1000>; 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_ci gpio-controller; 518c2ecf20Sopenharmony_ci #gpio-cells = <2>; 528c2ecf20Sopenharmony_ci }; 538c2ecf20Sopenharmony_ci }; 54