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