]>
Commit | Line | Data |
---|---|---|
1 | /* SPDX-License-Identifier: GPL-2.0 */ | |
2 | #ifndef _PARISC_HARDWARE_H | |
3 | #define _PARISC_HARDWARE_H | |
4 | ||
5 | #include <linux/mod_devicetable.h> | |
6 | ||
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 | ||
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 | mako2 = 12 /* pa8900 pa 2.0 */ | |
36 | }; | |
37 | ||
38 | extern const char * const cpu_name_version[][2]; /* mapping from enum cpu_type to strings */ | |
39 | ||
40 | struct parisc_driver; | |
41 | ||
42 | struct io_module { | |
43 | volatile uint32_t nothing; /* reg 0 */ | |
44 | volatile uint32_t io_eim; | |
45 | volatile uint32_t io_dc_adata; | |
46 | volatile uint32_t io_ii_cdata; | |
47 | volatile uint32_t io_dma_link; /* reg 4 */ | |
48 | volatile uint32_t io_dma_command; | |
49 | volatile uint32_t io_dma_address; | |
50 | volatile uint32_t io_dma_count; | |
51 | volatile uint32_t io_flex; /* reg 8 */ | |
52 | volatile uint32_t io_spa_address; | |
53 | volatile uint32_t reserved1[2]; | |
54 | volatile uint32_t io_command; /* reg 12 */ | |
55 | volatile uint32_t io_status; | |
56 | volatile uint32_t io_control; | |
57 | volatile uint32_t io_data; | |
58 | volatile uint32_t reserved2; /* reg 16 */ | |
59 | volatile uint32_t chain_addr; | |
60 | volatile uint32_t sub_mask_clr; | |
61 | volatile uint32_t reserved3[13]; | |
62 | volatile uint32_t undefined[480]; | |
63 | volatile uint32_t unpriv[512]; | |
64 | }; | |
65 | ||
66 | struct bc_module { | |
67 | volatile uint32_t unused1[12]; | |
68 | volatile uint32_t io_command; | |
69 | volatile uint32_t io_status; | |
70 | volatile uint32_t io_control; | |
71 | volatile uint32_t unused2[1]; | |
72 | volatile uint32_t io_err_resp; | |
73 | volatile uint32_t io_err_info; | |
74 | volatile uint32_t io_err_req; | |
75 | volatile uint32_t unused3[11]; | |
76 | volatile uint32_t io_io_low; | |
77 | volatile uint32_t io_io_high; | |
78 | }; | |
79 | ||
80 | #define HPHW_NPROC 0 | |
81 | #define HPHW_MEMORY 1 | |
82 | #define HPHW_B_DMA 2 | |
83 | #define HPHW_OBSOLETE 3 | |
84 | #define HPHW_A_DMA 4 | |
85 | #define HPHW_A_DIRECT 5 | |
86 | #define HPHW_OTHER 6 | |
87 | #define HPHW_BCPORT 7 | |
88 | #define HPHW_CIO 8 | |
89 | #define HPHW_CONSOLE 9 | |
90 | #define HPHW_FIO 10 | |
91 | #define HPHW_BA 11 | |
92 | #define HPHW_IOA 12 | |
93 | #define HPHW_BRIDGE 13 | |
94 | #define HPHW_FABRIC 14 | |
95 | #define HPHW_MC 15 | |
96 | #define HPHW_FAULTY 31 | |
97 | ||
98 | struct parisc_device_id; | |
99 | ||
100 | /* hardware.c: */ | |
101 | extern const char *parisc_hardware_description(struct parisc_device_id *id); | |
102 | extern enum cpu_type parisc_get_cpu_type(unsigned long hversion); | |
103 | ||
104 | struct pci_dev; | |
105 | struct hardware_path; | |
106 | ||
107 | /* drivers.c: */ | |
108 | extern struct parisc_device *alloc_pa_dev(unsigned long hpa, | |
109 | struct hardware_path *path); | |
110 | extern int register_parisc_device(struct parisc_device *dev); | |
111 | extern int register_parisc_driver(struct parisc_driver *driver); | |
112 | extern int count_parisc_driver(struct parisc_driver *driver); | |
113 | extern int unregister_parisc_driver(struct parisc_driver *driver); | |
114 | extern void walk_central_bus(void); | |
115 | extern const struct parisc_device *find_pa_parent_type(const struct parisc_device *, int); | |
116 | extern void print_parisc_devices(void); | |
117 | extern char *print_pa_hwpath(struct parisc_device *dev, char *path); | |
118 | extern char *print_pci_hwpath(struct pci_dev *dev, char *path); | |
119 | extern void get_pci_node_path(struct pci_dev *dev, struct hardware_path *path); | |
120 | extern void init_parisc_bus(void); | |
121 | extern struct device *hwpath_to_device(struct hardware_path *modpath); | |
122 | extern void device_to_hwpath(struct device *dev, struct hardware_path *path); | |
123 | ||
124 | ||
125 | /* inventory.c: */ | |
126 | extern void do_memory_inventory(void); | |
127 | extern void do_device_inventory(void); | |
128 | ||
129 | #endif /* _PARISC_HARDWARE_H */ |