Commit | Line | Data |
---|---|---|
8f611c45 KM |
1 | #ifndef _ASM_PARISC_PARISC_DEVICE_H_ |
2 | #define _ASM_PARISC_PARISC_DEVICE_H_ | |
3 | ||
1da177e4 LT |
4 | #include <linux/device.h> |
5 | ||
6 | struct parisc_device { | |
53f01bba | 7 | struct resource hpa; /* Hard Physical Address */ |
1da177e4 LT |
8 | struct parisc_device_id id; |
9 | struct parisc_driver *driver; /* Driver for this device */ | |
10 | char name[80]; /* The hardware description */ | |
11 | int irq; | |
12 | int aux_irq; /* Some devices have a second IRQ */ | |
13 | ||
14 | char hw_path; /* The module number on this bus */ | |
15 | unsigned int num_addrs; /* some devices have additional address ranges. */ | |
16 | unsigned long *addr; /* which will be stored here */ | |
17 | ||
513e7ecd | 18 | #ifdef CONFIG_64BIT |
1da177e4 LT |
19 | /* parms for pdc_pat_cell_module() call */ |
20 | unsigned long pcell_loc; /* Physical Cell location */ | |
21 | unsigned long mod_index; /* PAT specific - Misc Module info */ | |
22 | ||
23 | /* generic info returned from pdc_pat_cell_module() */ | |
24 | unsigned long mod_info; /* PAT specific - Misc Module info */ | |
25 | unsigned long pmod_loc; /* physical Module location */ | |
26 | #endif | |
27 | u64 dma_mask; /* DMA mask for I/O */ | |
28 | struct device dev; | |
29 | }; | |
30 | ||
31 | struct parisc_driver { | |
32 | struct parisc_driver *next; | |
33 | char *name; | |
34 | const struct parisc_device_id *id_table; | |
35 | int (*probe) (struct parisc_device *dev); /* New device discovered */ | |
36 | int (*remove) (struct parisc_device *dev); | |
37 | struct device_driver drv; | |
38 | }; | |
39 | ||
40 | ||
41 | #define to_parisc_device(d) container_of(d, struct parisc_device, dev) | |
42 | #define to_parisc_driver(d) container_of(d, struct parisc_driver, drv) | |
43 | #define parisc_parent(d) to_parisc_device(d->dev.parent) | |
44 | ||
56583747 MW |
45 | static inline char *parisc_pathname(struct parisc_device *d) |
46 | { | |
47 | return d->dev.bus_id; | |
48 | } | |
49 | ||
1da177e4 LT |
50 | static inline void |
51 | parisc_set_drvdata(struct parisc_device *d, void *p) | |
52 | { | |
53 | dev_set_drvdata(&d->dev, p); | |
54 | } | |
55 | ||
56 | static inline void * | |
57 | parisc_get_drvdata(struct parisc_device *d) | |
58 | { | |
59 | return dev_get_drvdata(&d->dev); | |
60 | } | |
61 | ||
62 | extern struct bus_type parisc_bus_type; | |
8f611c45 KM |
63 | |
64 | #endif /*_ASM_PARISC_PARISC_DEVICE_H_*/ |