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