Merge tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland...
[deliverable/linux.git] / arch / powerpc / kernel / prom_parse.c
CommitLineData
d1405b86
BH
1#undef DEBUG
2
3#include <linux/kernel.h>
4#include <linux/string.h>
d2dd482b 5#include <linux/ioport.h>
29cfe6f4 6#include <linux/etherdevice.h>
1f5bef30 7#include <linux/of_address.h>
d1405b86 8#include <asm/prom.h>
83efafb3 9
a7f67bdf 10void of_parse_dma_window(struct device_node *dn, const void *dma_window_prop,
d4ad66fa
JK
11 unsigned long *busno, unsigned long *phys, unsigned long *size)
12{
a7f67bdf
JK
13 const u32 *dma_window;
14 u32 cells;
15 const unsigned char *prop;
d4ad66fa 16
a7f67bdf 17 dma_window = dma_window_prop;
d4ad66fa
JK
18
19 /* busno is always one cell */
20 *busno = *(dma_window++);
21
e2eb6392 22 prop = of_get_property(dn, "ibm,#dma-address-cells", NULL);
03ac829b 23 if (!prop)
e2eb6392 24 prop = of_get_property(dn, "#address-cells", NULL);
03ac829b 25
a8bda5dd 26 cells = prop ? *(u32 *)prop : of_n_addr_cells(dn);
cc9fd71c 27 *phys = of_read_number(dma_window, cells);
d4ad66fa
JK
28
29 dma_window += cells;
30
e2eb6392 31 prop = of_get_property(dn, "ibm,#dma-size-cells", NULL);
9213feea 32 cells = prop ? *(u32 *)prop : of_n_size_cells(dn);
cc9fd71c
BH
33 *size = of_read_number(dma_window, cells);
34}
This page took 0.520591 seconds and 5 git commands to generate.