@@ -104,16 +104,14 @@ static int cdns_pcie_host_init_root_port(struct cdns_pcie_rc *rc)
104
104
static int cdns_pcie_host_init_address_translation (struct cdns_pcie_rc * rc )
105
105
{
106
106
struct cdns_pcie * pcie = & rc -> pcie ;
107
+ struct pci_host_bridge * bridge = pci_host_bridge_from_priv (rc );
107
108
struct resource * mem_res = pcie -> mem_res ;
108
109
struct resource * bus_range = rc -> bus_range ;
109
110
struct resource * cfg_res = rc -> cfg_res ;
110
- struct device * dev = pcie -> dev ;
111
- struct device_node * np = dev -> of_node ;
112
- struct of_pci_range_parser parser ;
113
- struct of_pci_range range ;
111
+ struct resource_entry * entry ;
114
112
u32 addr0 , addr1 , desc1 ;
115
113
u64 cpu_addr ;
116
- int r , err ;
114
+ int r ;
117
115
118
116
/*
119
117
* Reserve region 0 for PCI configure space accesses:
@@ -132,25 +130,22 @@ static int cdns_pcie_host_init_address_translation(struct cdns_pcie_rc *rc)
132
130
cdns_pcie_writel (pcie , CDNS_PCIE_AT_OB_REGION_CPU_ADDR0 (0 ), addr0 );
133
131
cdns_pcie_writel (pcie , CDNS_PCIE_AT_OB_REGION_CPU_ADDR1 (0 ), addr1 );
134
132
135
- err = of_pci_range_parser_init (& parser , np );
136
- if (err )
137
- return err ;
138
-
139
133
r = 1 ;
140
- for_each_of_pci_range (& parser , & range ) {
141
- bool is_io ;
142
-
143
- if ((range .flags & IORESOURCE_TYPE_BITS ) == IORESOURCE_MEM )
144
- is_io = false;
145
- else if ((range .flags & IORESOURCE_TYPE_BITS ) == IORESOURCE_IO )
146
- is_io = true;
134
+ resource_list_for_each_entry (entry , & bridge -> windows ) {
135
+ struct resource * res = entry -> res ;
136
+ u64 pci_addr = res -> start - entry -> offset ;
137
+
138
+ if (resource_type (res ) == IORESOURCE_IO )
139
+ cdns_pcie_set_outbound_region (pcie , 0 , r , true,
140
+ pci_pio_to_address (res -> start ),
141
+ pci_addr ,
142
+ resource_size (res ));
147
143
else
148
- continue ;
144
+ cdns_pcie_set_outbound_region (pcie , 0 , r , false,
145
+ res -> start ,
146
+ pci_addr ,
147
+ resource_size (res ));
149
148
150
- cdns_pcie_set_outbound_region (pcie , 0 , r , is_io ,
151
- range .cpu_addr ,
152
- range .pci_addr ,
153
- range .size );
154
149
r ++ ;
155
150
}
156
151
0 commit comments