]>
Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | #ifndef _PARISC_HARDWARE_H |
2 | #define _PARISC_HARDWARE_H | |
3 | ||
f2439b26 | 4 | #include <linux/mod_devicetable.h> |
1da177e4 LT |
5 | #include <asm/pdc.h> |
6 | ||
f354ef8a KM |
7 | #define HWTYPE_ANY_ID PA_HWTYPE_ANY_ID |
8 | #define HVERSION_ANY_ID PA_HVERSION_ANY_ID | |
9 | #define HVERSION_REV_ANY_ID PA_HVERSION_REV_ANY_ID | |
10 | #define SVERSION_ANY_ID PA_SVERSION_ANY_ID | |
11 | ||
1da177e4 LT |
12 | struct hp_hardware { |
13 | unsigned short hw_type:5; /* HPHW_xxx */ | |
14 | unsigned short hversion; | |
15 | unsigned long sversion:28; | |
16 | unsigned short opt; | |
17 | const char name[80]; /* The hardware description */ | |
18 | }; | |
19 | ||
20 | struct parisc_device; | |
21 | ||
22 | enum cpu_type { | |
23 | pcx = 0, /* pa7000 pa 1.0 */ | |
24 | pcxs = 1, /* pa7000 pa 1.1a */ | |
25 | pcxt = 2, /* pa7100 pa 1.1b */ | |
26 | pcxt_ = 3, /* pa7200 (t') pa 1.1c */ | |
27 | pcxl = 4, /* pa7100lc pa 1.1d */ | |
28 | pcxl2 = 5, /* pa7300lc pa 1.1e */ | |
29 | pcxu = 6, /* pa8000 pa 2.0 */ | |
30 | pcxu_ = 7, /* pa8200 (u+) pa 2.0 */ | |
31 | pcxw = 8, /* pa8500 pa 2.0 */ | |
32 | pcxw_ = 9, /* pa8600 (w+) pa 2.0 */ | |
33 | pcxw2 = 10, /* pa8700 pa 2.0 */ | |
34 | mako = 11 /* pa8800 pa 2.0 */ | |
35 | }; | |
36 | ||
37 | extern char *cpu_name_version[][2]; /* mapping from enum cpu_type to strings */ | |
38 | ||
39 | struct parisc_driver; | |
40 | ||
41 | struct io_module { | |
42 | volatile uint32_t nothing; /* reg 0 */ | |
43 | volatile uint32_t io_eim; | |
44 | volatile uint32_t io_dc_adata; | |
45 | volatile uint32_t io_ii_cdata; | |
46 | volatile uint32_t io_dma_link; /* reg 4 */ | |
47 | volatile uint32_t io_dma_command; | |
48 | volatile uint32_t io_dma_address; | |
49 | volatile uint32_t io_dma_count; | |
50 | volatile uint32_t io_flex; /* reg 8 */ | |
51 | volatile uint32_t io_spa_address; | |
52 | volatile uint32_t reserved1[2]; | |
53 | volatile uint32_t io_command; /* reg 12 */ | |
54 | volatile uint32_t io_status; | |
55 | volatile uint32_t io_control; | |
56 | volatile uint32_t io_data; | |
57 | volatile uint32_t reserved2; /* reg 16 */ | |
58 | volatile uint32_t chain_addr; | |
59 | volatile uint32_t sub_mask_clr; | |
60 | volatile uint32_t reserved3[13]; | |
61 | volatile uint32_t undefined[480]; | |
62 | volatile uint32_t unpriv[512]; | |
63 | }; | |
64 | ||
65 | struct bc_module { | |
66 | volatile uint32_t unused1[12]; | |
67 | volatile uint32_t io_command; | |
68 | volatile uint32_t io_status; | |
69 | volatile uint32_t io_control; | |
70 | volatile uint32_t unused2[1]; | |
71 | volatile uint32_t io_err_resp; | |
72 | volatile uint32_t io_err_info; | |
73 | volatile uint32_t io_err_req; | |
74 | volatile uint32_t unused3[11]; | |
75 | volatile uint32_t io_io_low; | |
76 | volatile uint32_t io_io_high; | |
77 | }; | |
78 | ||
79 | #define HPHW_NPROC 0 | |
80 | #define HPHW_MEMORY 1 | |
81 | #define HPHW_B_DMA 2 | |
82 | #define HPHW_OBSOLETE 3 | |
83 | #define HPHW_A_DMA 4 | |
84 | #define HPHW_A_DIRECT 5 | |
85 | #define HPHW_OTHER 6 | |
86 | #define HPHW_BCPORT 7 | |
87 | #define HPHW_CIO 8 | |
88 | #define HPHW_CONSOLE 9 | |
89 | #define HPHW_FIO 10 | |
90 | #define HPHW_BA 11 | |
91 | #define HPHW_IOA 12 | |
92 | #define HPHW_BRIDGE 13 | |
93 | #define HPHW_FABRIC 14 | |
94 | #define HPHW_MC 15 | |
95 | #define HPHW_FAULTY 31 | |
96 | ||
97 | ||
98 | /* hardware.c: */ | |
99 | extern const char *parisc_hardware_description(struct parisc_device_id *id); | |
100 | extern enum cpu_type parisc_get_cpu_type(unsigned long hversion); | |
101 | ||
102 | struct pci_dev; | |
103 | ||
104 | /* drivers.c: */ | |
105 | extern struct parisc_device *alloc_pa_dev(unsigned long hpa, | |
106 | struct hardware_path *path); | |
107 | extern int register_parisc_device(struct parisc_device *dev); | |
108 | extern int register_parisc_driver(struct parisc_driver *driver); | |
109 | extern int count_parisc_driver(struct parisc_driver *driver); | |
110 | extern int unregister_parisc_driver(struct parisc_driver *driver); | |
111 | extern void walk_central_bus(void); | |
112 | extern const struct parisc_device *find_pa_parent_type(const struct parisc_device *, int); | |
113 | extern void print_parisc_devices(void); | |
114 | extern char *print_pa_hwpath(struct parisc_device *dev, char *path); | |
115 | extern char *print_pci_hwpath(struct pci_dev *dev, char *path); | |
116 | extern void get_pci_node_path(struct pci_dev *dev, struct hardware_path *path); | |
117 | extern void init_parisc_bus(void); | |
118 | extern struct device *hwpath_to_device(struct hardware_path *modpath); | |
119 | extern void device_to_hwpath(struct device *dev, struct hardware_path *path); | |
120 | ||
121 | ||
122 | /* inventory.c: */ | |
123 | extern void do_memory_inventory(void); | |
124 | extern void do_device_inventory(void); | |
125 | ||
126 | #endif /* _PARISC_HARDWARE_H */ |