| Kyle McMartin | 8f611c4 | 2006-09-16 14:38:22 -0400 | [diff] [blame] | 1 | #ifndef _ASM_PARISC_PARISC_DEVICE_H_ | 
 | 2 | #define _ASM_PARISC_PARISC_DEVICE_H_ | 
 | 3 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 4 | #include <linux/device.h> | 
 | 5 |  | 
 | 6 | struct parisc_device { | 
| Matthew Wilcox | 53f01bb | 2005-10-21 22:36:40 -0400 | [diff] [blame] | 7 | 	struct resource hpa;		/* Hard Physical Address */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 |   | 
| Helge Deller | 513e7ec | 2007-01-28 15:09:20 +0100 | [diff] [blame] | 18 | #ifdef CONFIG_64BIT | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 |  | 
| Kay Sievers | 90f6713 | 2008-11-07 01:42:46 +0100 | [diff] [blame] | 45 | static inline const char *parisc_pathname(struct parisc_device *d) | 
| Matthew Wilcox | 5658374 | 2005-10-21 22:33:38 -0400 | [diff] [blame] | 46 | { | 
| Kay Sievers | 90f6713 | 2008-11-07 01:42:46 +0100 | [diff] [blame] | 47 | 	return dev_name(&d->dev); | 
| Matthew Wilcox | 5658374 | 2005-10-21 22:33:38 -0400 | [diff] [blame] | 48 | } | 
 | 49 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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; | 
| Kyle McMartin | 8f611c4 | 2006-09-16 14:38:22 -0400 | [diff] [blame] | 63 |  | 
 | 64 | #endif /*_ASM_PARISC_PARISC_DEVICE_H_*/ |