Page MenuHomeFreeBSD

D14751.id41082.diff
No OneTemporary

D14751.id41082.diff

Index: head/sys/arm/mv/mv_common.c
===================================================================
--- head/sys/arm/mv/mv_common.c
+++ head/sys/arm/mv/mv_common.c
@@ -176,7 +176,7 @@
static int win_cpu_from_dt(void);
static int fdt_win_setup(void);
-static int fdt_win_process_child(phandle_t, struct soc_node_spec *);
+static int fdt_win_process_child(phandle_t, struct soc_node_spec *, const char*);
static uint32_t dev_mask = 0;
static int cpu_wins_no = 0;
@@ -2757,7 +2757,7 @@
if (!ofw_bus_node_is_compatible(child, soc_nodes[i].compat))
continue;
- ret = fdt_win_process_child(child, &soc_nodes[i]);
+ ret = fdt_win_process_child(child, &soc_nodes[i], "reg");
if (ret != 0)
return (ret);
}
@@ -2766,7 +2766,8 @@
}
static int
-fdt_win_process_child(phandle_t child, struct soc_node_spec *soc_node)
+fdt_win_process_child(phandle_t child, struct soc_node_spec *soc_node,
+ const char* mimo_reg_source)
{
int addr_cells, size_cells;
pcell_t reg[8];
@@ -2778,8 +2779,7 @@
if ((sizeof(pcell_t) * (addr_cells + size_cells)) > sizeof(reg))
return (ENOMEM);
-
- if (OF_getprop(child, "reg", &reg, sizeof(reg)) <= 0)
+ if (OF_getprop(child, mimo_reg_source, &reg, sizeof(reg)) <= 0)
return (EINVAL);
if (addr_cells <= 2)
@@ -2836,7 +2836,8 @@
child_pci = OF_child(child);
while (child_pci != 0) {
err = fdt_win_process_child(child_pci,
- &soc_nodes[SOC_NODE_PCIE_ENTRY_IDX]);
+ &soc_nodes[SOC_NODE_PCIE_ENTRY_IDX],
+ "assigned-addresses");
if (err != 0)
return (err);
Index: head/sys/arm/mv/mv_pci_ctrl.c
===================================================================
--- head/sys/arm/mv/mv_pci_ctrl.c
+++ head/sys/arm/mv/mv_pci_ctrl.c
@@ -67,6 +67,9 @@
uint64_t size;
};
+typedef int (*get_rl_t)(device_t dev, phandle_t node, pcell_t acells,
+ pcell_t scells, struct resource_list *rl);
+
struct mv_pcib_ctrl_softc {
pcell_t addr_cells;
pcell_t size_cells;
@@ -107,6 +110,13 @@
DEVMETHOD_END
};
+static struct ofw_compat_data mv_pcib_ctrl_compat[] = {
+ {"mrvl,pcie-ctrl", (uintptr_t)&ofw_bus_reg_to_rl},
+ {"marvell,armada-370-pcie",
+ (uintptr_t)&ofw_bus_assigned_addresses_to_rl},
+ {NULL, (uintptr_t)NULL},
+};
+
static driver_t mv_pcib_ctrl_driver = {
"pcib_ctrl",
mv_pcib_ctrl_methods,
@@ -124,10 +134,12 @@
mv_pcib_ctrl_probe(device_t dev)
{
- if (!ofw_bus_is_compatible(dev, "mrvl,pcie-ctrl") &&
- !ofw_bus_is_compatible(dev, "marvell,armada-370-pcie"))
+ if (!ofw_bus_status_okay(dev))
return (ENXIO);
+ if (!ofw_bus_search_compatible(dev, mv_pcib_ctrl_compat)->ocd_data)
+ return (ENXIO);
+
device_set_desc(dev, "Marvell Integrated PCIe Bus Controller");
return (BUS_PROBE_DEFAULT);
}
@@ -151,6 +163,7 @@
struct mv_pcib_ctrl_softc *sc;
device_t child;
phandle_t parent, node;
+ get_rl_t get_rl;
parent = ofw_bus_get_node(dev);
sc = device_get_softc(dev);
@@ -189,8 +202,11 @@
}
resource_list_init(&di->di_rl);
- ofw_bus_reg_to_rl(child, node, sc->addr_cells,
- sc->size_cells, &di->di_rl);
+ get_rl = (get_rl_t) ofw_bus_search_compatible(dev,
+ mv_pcib_ctrl_compat)->ocd_data;
+ if (get_rl != NULL)
+ get_rl(child, node, sc->addr_cells,
+ sc->size_cells, &di->di_rl);
device_set_ivars(child, di);
}
Index: head/sys/dts/arm/armada-380.dtsi
===================================================================
--- head/sys/dts/arm/armada-380.dtsi
+++ head/sys/dts/arm/armada-380.dtsi
@@ -88,23 +88,21 @@
<0x82000000 0 0x80000 MBUS_ID(0xf0, 0x01) 0x80000 0 0x00002000
0x82000000 0 0x40000 MBUS_ID(0xf0, 0x01) 0x40000 0 0x00002000
0x82000000 0 0x44000 MBUS_ID(0xf0, 0x01) 0x44000 0 0x00002000
- 0x82000000 0x0 0xf1200000 MBUS_ID(0x08, 0xe8) 0xf1200000 0 0x00100000 /* Port 0 MEM */
- 0x81000000 0x0 0xf1300000 MBUS_ID(0x08, 0xe0) 0xf1300000 0 0x00100000 /* Port 0 IO */
- 0x82000000 0x0 0xf1400000 MBUS_ID(0x04, 0xe8) 0xf1400000 0 0x00100000 /* Port 1 MEM */
- 0x81000000 0x0 0xf1500000 MBUS_ID(0x04, 0xe0) 0xf1500000 0 0x00100000 /* Port 1 IO */
- 0x82000000 0x0 0xf1600000 MBUS_ID(0x04, 0xd8) 0xf1600000 0 0x00100000 /* Port 2 MEM */
- 0x81000000 0x0 0xf1700000 MBUS_ID(0x04, 0xd0) 0xf1700000 0 0x00100000 /* Port 2 IO */
- >;
+ 0x82000000 0x1 0 MBUS_ID(0x08, 0xe8) 0 1 0 /* Port 0 MEM */
+ 0x81000000 0x1 0 MBUS_ID(0x08, 0xe0) 0 1 0 /* Port 0 IO */
+ 0x82000000 0x2 0 MBUS_ID(0x04, 0xe8) 0 1 0 /* Port 1 MEM */
+ 0x81000000 0x2 0 MBUS_ID(0x04, 0xe0) 0 1 0 /* Port 1 IO */
+ 0x82000000 0x3 0 MBUS_ID(0x04, 0xd8) 0 1 0 /* Port 2 MEM */
+ 0x81000000 0x3 0 MBUS_ID(0x04, 0xd0) 0 1 0 /* Port 2 IO */>;
/* x1 port */
pcie@1,0 {
device_type = "pci";
assigned-addresses = <0x82000800 0 0x80000 0 0x2000>;
- reg = <0x0 0x0 0x80000 0x0 0x2000>;
+ reg = <0x0800 0 0 0 0>;
#address-cells = <3>;
#size-cells = <2>;
- #interrupt-cells = <3>;
- bus-range = <0 255>;
+ #interrupt-cells = <1>;
ranges = <0x82000000 0x0 0x0 0x82000000 0x0 0xf1200000 0x0 0x00100000
0x81000000 0x0 0x0 0x81000000 0x0 0xf1300000 0x0 0x00100000>;
interrupt-map-mask = <0 0 0 0>;
@@ -120,11 +118,10 @@
pcie@2,0 {
device_type = "pci";
assigned-addresses = <0x82000800 0 0x40000 0 0x2000>;
- reg = <0x0 0x0 0x40000 0x0 0x2000>;
+ reg = <0x1000 0 0 0 0>;
#address-cells = <3>;
#size-cells = <2>;
- #interrupt-cells = <3>;
- bus-range = <0 255>;
+ #interrupt-cells = <1>;
ranges = <0x82000000 0x0 0x0 0x82000000 0x0 0xf1400000 0x0 0x00100000
0x81000000 0x0 0x0 0x81000000 0x0 0xf1500000 0x0 0x00100000>;
interrupt-map-mask = <0 0 0 0>;
@@ -140,11 +137,10 @@
pcie@3,0 {
device_type = "pci";
assigned-addresses = <0x82000800 0 0x44000 0 0x2000>;
- reg = <0x0 0x0 0x44000 0x0 0x2000>;
+ reg = <0x1800 0 0 0 0>;
#address-cells = <3>;
#size-cells = <2>;
- #interrupt-cells = <3>;
- bus-range = <0 255>;
+ #interrupt-cells = <1>;
ranges = <0x82000000 0x0 0x0 0x82000000 0x0 0xf1600000 0x0 0x00100000
0x81000000 0x0 0x0 0x81000000 0x0 0xf1700000 0x0 0x00100000>;
interrupt-map-mask = <0 0 0 0>;
Index: head/sys/dts/arm/armada-385.dtsi
===================================================================
--- head/sys/dts/arm/armada-385.dtsi
+++ head/sys/dts/arm/armada-385.dtsi
@@ -94,15 +94,14 @@
0x82000000 0 0x40000 MBUS_ID(0xf0, 0x01) 0x40000 0 0x00002000
0x82000000 0 0x44000 MBUS_ID(0xf0, 0x01) 0x44000 0 0x00002000
0x82000000 0 0x48000 MBUS_ID(0xf0, 0x01) 0x48000 0 0x00002000
- 0x82000000 0x0 0xf1200000 MBUS_ID(0x08, 0xe8) 0xf1200000 0 0x00100000 /* Port 0 MEM */
- 0x81000000 0x0 0xf1300000 MBUS_ID(0x08, 0xe0) 0xf1300000 0 0x00100000 /* Port 0 IO */
- 0x82000000 0x0 0xf1400000 MBUS_ID(0x04, 0xe8) 0xf1400000 0 0x00100000 /* Port 1 MEM */
- 0x81000000 0x0 0xf1500000 MBUS_ID(0x04, 0xe0) 0xf1500000 0 0x00100000 /* Port 1 IO */
- 0x82000000 0x0 0xf1600000 MBUS_ID(0x04, 0xd8) 0xf1600000 0 0x00100000 /* Port 2 MEM */
- 0x81000000 0x0 0xf1700000 MBUS_ID(0x04, 0xd0) 0xf1700000 0 0x00100000 /* Port 2 IO */
- 0x82000000 0x0 0xf1800000 MBUS_ID(0x04, 0xb8) 0xf1800000 0 0x00100000 /* Port 3 MEM */
- 0x81000000 0x0 0xf1900000 MBUS_ID(0x04, 0xb0) 0xf1900000 0 0x00100000 /* Port 3 IO */
- >;
+ 0x82000000 0x1 0 MBUS_ID(0x08, 0xe8) 0 1 0 /* Port 0 MEM */
+ 0x81000000 0x1 0 MBUS_ID(0x08, 0xe0) 0 1 0 /* Port 0 IO */
+ 0x82000000 0x2 0 MBUS_ID(0x04, 0xe8) 0 1 0 /* Port 1 MEM */
+ 0x81000000 0x2 0 MBUS_ID(0x04, 0xe0) 0 1 0 /* Port 1 IO */
+ 0x82000000 0x3 0 MBUS_ID(0x04, 0xd8) 0 1 0 /* Port 2 MEM */
+ 0x81000000 0x3 0 MBUS_ID(0x04, 0xd0) 0 1 0 /* Port 2 IO */
+ 0x82000000 0x4 0 MBUS_ID(0x04, 0xb8) 0 1 0 /* Port 3 MEM */
+ 0x81000000 0x4 0 MBUS_ID(0x04, 0xb0) 0 1 0 /* Port 3 IO */>;
/*
* This port can be either x4 or x1. When
@@ -112,16 +111,14 @@
pcie@1,0 {
device_type = "pci";
assigned-addresses = <0x82000800 0 0x80000 0 0x2000>;
- reg = <0x0 0x0 0x80000 0x0 0x2000>;
+ reg = <0x0800 0 0 0 0>;
#address-cells = <3>;
#size-cells = <2>;
- #interrupt-cells = <3>;
- bus-range = <0 255>;
+ #interrupt-cells = <1>;
ranges = <0x82000000 0x0 0x0 0x82000000 0x0 0xf1200000 0x0 0x00100000
0x81000000 0x0 0x0 0x81000000 0x0 0xf1300000 0x0 0x00100000>;
interrupt-map-mask = <0 0 0 0>;
interrupt-map = <0 0 0 0 &gic GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
- interrupt-parent = <&gic>;
marvell,pcie-port = <0>;
marvell,pcie-lane = <0>;
clocks = <&gateclk 8>;
@@ -132,16 +129,14 @@
pcie@2,0 {
device_type = "pci";
assigned-addresses = <0x82000800 0 0x40000 0 0x2000>;
- reg = <0x0 0x0 0x40000 0x0 0x2000>;
+ reg = <0x1000 0 0 0 0>;
#address-cells = <3>;
#size-cells = <2>;
- #interrupt-cells = <3>;
- bus-range = <0 255>;
+ #interrupt-cells = <1>;
ranges = <0x82000000 0x0 0x0 0x82000000 0x0 0xf1400000 0x0 0x00100000
0x81000000 0x0 0x0 0x81000000 0x0 0xf1500000 0x0 0x00100000>;
interrupt-map-mask = <0 0 0 0>;
interrupt-map = <0 0 0 0 &gic GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
- interrupt-parent = <&gic>;
marvell,pcie-port = <1>;
marvell,pcie-lane = <0>;
clocks = <&gateclk 5>;
@@ -152,16 +147,14 @@
pcie@3,0 {
device_type = "pci";
assigned-addresses = <0x82000800 0 0x44000 0 0x2000>;
- reg = <0x0 0x0 0x44000 0x0 0x2000>;
+ reg = <0x1800 0 0 0 0>;
#address-cells = <3>;
#size-cells = <2>;
- #interrupt-cells = <3>;
- bus-range = <0 255>;
+ #interrupt-cells = <1>;
ranges = <0x82000000 0x0 0x0 0x82000000 0x0 0xf1600000 0x0 0x00100000
0x81000000 0x0 0x0 0x81000000 0x0 0xf1700000 0x0 0x00100000>;
interrupt-map-mask = <0 0 0 0>;
interrupt-map = <0 0 0 0 &gic GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
- interrupt-parent = <&gic>;
marvell,pcie-port = <2>;
marvell,pcie-lane = <0>;
clocks = <&gateclk 6>;
@@ -175,16 +168,14 @@
pcie@4,0 {
device_type = "pci";
assigned-addresses = <0x82000800 0 0x48000 0 0x2000>;
- reg = <0x0 0x0 0x48000 0x0 0x2000>;
+ reg = <0x2000 0 0 0 0>;
#address-cells = <3>;
#size-cells = <2>;
- #interrupt-cells = <3>;
- bus-range = <0 255>;
+ #interrupt-cells = <1>;
ranges = <0x82000000 0x0 0x0 0x82000000 0x0 0xf1800000 0x0 0x00100000
0x81000000 0x0 0x0 0x81000000 0x0 0xf1900000 0x0 0x00100000>;
interrupt-map-mask = <0 0 0 0>;
interrupt-map = <0 0 0 0 &gic GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
- interrupt-parent = <&gic>;
marvell,pcie-port = <3>;
marvell,pcie-lane = <0>;
clocks = <&gateclk 7>;

File Metadata

Mime Type
text/plain
Expires
Thu, Mar 6, 10:22 AM (3 h, 39 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17006568
Default Alt Text
D14751.id41082.diff (10 KB)

Event Timeline