File tree 1 file changed +9
-14
lines changed
arch/powerpc/platforms/44x
1 file changed +9
-14
lines changed Original file line number Diff line number Diff line change @@ -94,29 +94,24 @@ static int __init ppc4xx_parse_dma_ranges(struct pci_controller *hose,
94
94
struct resource * res )
95
95
{
96
96
u64 size ;
97
- const u32 * ranges ;
98
- int rlen ;
99
- int pna = of_n_addr_cells (hose -> dn );
100
- int np = pna + 5 ;
97
+ struct of_range_parser parser ;
98
+ struct of_range range ;
101
99
102
100
/* Default */
103
101
res -> start = 0 ;
104
102
size = 0x80000000 ;
105
103
res -> end = size - 1 ;
106
104
res -> flags = IORESOURCE_MEM | IORESOURCE_PREFETCH ;
107
105
108
- /* Get dma-ranges property */
109
- ranges = of_get_property (hose -> dn , "dma-ranges" , & rlen );
110
- if (ranges == NULL )
106
+ if (of_pci_dma_range_parser_init (& parser , hose -> dn ))
111
107
goto out ;
112
108
113
- /* Walk it */
114
- while ((rlen -= np * 4 ) >= 0 ) {
115
- u32 pci_space = ranges [0 ];
116
- u64 pci_addr = of_read_number (ranges + 1 , 2 );
117
- u64 cpu_addr = of_translate_dma_address (hose -> dn , ranges + 3 );
118
- size = of_read_number (ranges + pna + 3 , 2 );
119
- ranges += np ;
109
+ for_each_of_range (& parser , & range ) {
110
+ u32 pci_space = range .flags ;
111
+ u64 pci_addr = range .bus_addr ;
112
+ u64 cpu_addr = range .cpu_addr ;
113
+ size = range .size ;
114
+
120
115
if (cpu_addr == OF_BAD_ADDR || size == 0 )
121
116
continue ;
122
117
You can’t perform that action at this time.
0 commit comments