@@ -1122,15 +1122,16 @@ static int iproc_pcie_ib_write(struct iproc_pcie *pcie, int region_idx,
1122
1122
}
1123
1123
1124
1124
static int iproc_pcie_setup_ib (struct iproc_pcie * pcie ,
1125
- struct of_pci_range * range ,
1125
+ struct resource_entry * entry ,
1126
1126
enum iproc_pcie_ib_map_type type )
1127
1127
{
1128
1128
struct device * dev = pcie -> dev ;
1129
1129
struct iproc_pcie_ib * ib = & pcie -> ib ;
1130
1130
int ret ;
1131
1131
unsigned int region_idx , size_idx ;
1132
- u64 axi_addr = range -> cpu_addr , pci_addr = range -> pci_addr ;
1133
- resource_size_t size = range -> size ;
1132
+ u64 axi_addr = entry -> res -> start ;
1133
+ u64 pci_addr = entry -> res -> start - entry -> offset ;
1134
+ resource_size_t size = resource_size (entry -> res );
1134
1135
1135
1136
/* iterate through all IARR mapping regions */
1136
1137
for (region_idx = 0 ; region_idx < ib -> nr_regions ; region_idx ++ ) {
@@ -1182,66 +1183,19 @@ static int iproc_pcie_setup_ib(struct iproc_pcie *pcie,
1182
1183
return ret ;
1183
1184
}
1184
1185
1185
- static int iproc_pcie_add_dma_range (struct device * dev ,
1186
- struct list_head * resources ,
1187
- struct of_pci_range * range )
1188
- {
1189
- struct resource * res ;
1190
- struct resource_entry * entry , * tmp ;
1191
- struct list_head * head = resources ;
1192
-
1193
- res = devm_kzalloc (dev , sizeof (struct resource ), GFP_KERNEL );
1194
- if (!res )
1195
- return - ENOMEM ;
1196
-
1197
- resource_list_for_each_entry (tmp , resources ) {
1198
- if (tmp -> res -> start < range -> cpu_addr )
1199
- head = & tmp -> node ;
1200
- }
1201
-
1202
- res -> start = range -> cpu_addr ;
1203
- res -> end = res -> start + range -> size - 1 ;
1204
-
1205
- entry = resource_list_create_entry (res , 0 );
1206
- if (!entry )
1207
- return - ENOMEM ;
1208
-
1209
- entry -> offset = res -> start - range -> cpu_addr ;
1210
- resource_list_add (entry , head );
1211
-
1212
- return 0 ;
1213
- }
1214
-
1215
1186
static int iproc_pcie_map_dma_ranges (struct iproc_pcie * pcie )
1216
1187
{
1217
1188
struct pci_host_bridge * host = pci_host_bridge_from_priv (pcie );
1218
- struct of_pci_range range ;
1219
- struct of_pci_range_parser parser ;
1220
- int ret ;
1221
- LIST_HEAD (resources );
1222
-
1223
- /* Get the dma-ranges from DT */
1224
- ret = of_pci_dma_range_parser_init (& parser , pcie -> dev -> of_node );
1225
- if (ret )
1226
- return ret ;
1189
+ struct resource_entry * entry ;
1190
+ int ret = 0 ;
1227
1191
1228
- for_each_of_pci_range (& parser , & range ) {
1229
- ret = iproc_pcie_add_dma_range (pcie -> dev ,
1230
- & resources ,
1231
- & range );
1232
- if (ret )
1233
- goto out ;
1192
+ resource_list_for_each_entry (entry , & host -> dma_ranges ) {
1234
1193
/* Each range entry corresponds to an inbound mapping region */
1235
- ret = iproc_pcie_setup_ib (pcie , & range , IPROC_PCIE_IB_MAP_MEM );
1194
+ ret = iproc_pcie_setup_ib (pcie , entry , IPROC_PCIE_IB_MAP_MEM );
1236
1195
if (ret )
1237
- goto out ;
1196
+ break ;
1238
1197
}
1239
1198
1240
- list_splice_init (& resources , & host -> dma_ranges );
1241
-
1242
- return 0 ;
1243
- out :
1244
- pci_free_resource_list (& resources );
1245
1199
return ret ;
1246
1200
}
1247
1201
@@ -1276,13 +1230,16 @@ static int iproce_pcie_get_msi(struct iproc_pcie *pcie,
1276
1230
static int iproc_pcie_paxb_v2_msi_steer (struct iproc_pcie * pcie , u64 msi_addr )
1277
1231
{
1278
1232
int ret ;
1279
- struct of_pci_range range ;
1233
+ struct resource_entry entry ;
1234
+
1235
+ memset (& entry , 0 , sizeof (entry ));
1236
+ entry .res = & entry .__res ;
1280
1237
1281
- memset ( & range , 0 , sizeof ( range ) );
1282
- range . size = SZ_32K ;
1283
- range . pci_addr = range . cpu_addr = msi_addr & ~( range . size - 1 ) ;
1238
+ msi_addr &= ~( SZ_32K - 1 );
1239
+ entry . res -> start = msi_addr ;
1240
+ entry . res -> end = msi_addr + SZ_32K - 1 ;
1284
1241
1285
- ret = iproc_pcie_setup_ib (pcie , & range , IPROC_PCIE_IB_MAP_IO );
1242
+ ret = iproc_pcie_setup_ib (pcie , & entry , IPROC_PCIE_IB_MAP_IO );
1286
1243
return ret ;
1287
1244
}
1288
1245
0 commit comments