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