xref: /freebsd/sys/contrib/device-tree/Bindings/bus/brcm,bus-axi.txt (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
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