Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 | #ifndef __PARISC_PATPDC_H #define __PARISC_PATPDC_H /* * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * * Copyright 2000 (c) Hewlett Packard (Paul Bame <bame()spam.parisc-linux.org>) * Copyright 2000,2004 (c) Grant Grundler <grundler()nahspam.parisc-linux.org> */ #define PDC_PAT_CELL 64L /* Interface for gaining and * manipulatin g cell state within PD */ #define PDC_PAT_CELL_GET_NUMBER 0L /* Return Cell number */ #define PDC_PAT_CELL_GET_INFO 1L /* Returns info about Cell */ #define PDC_PAT_CELL_MODULE 2L /* Returns info about Module */ #define PDC_PAT_CELL_SET_ATTENTION 9L /* Set Cell Attention indicator */ #define PDC_PAT_CELL_NUMBER_TO_LOC 10L /* Cell Number -> Location */ #define PDC_PAT_CELL_WALK_FABRIC 11L /* Walk the Fabric */ #define PDC_PAT_CELL_GET_RDT_SIZE 12L /* Return Route Distance Table Sizes */ #define PDC_PAT_CELL_GET_RDT 13L /* Return Route Distance Tables */ #define PDC_PAT_CELL_GET_LOCAL_PDH_SZ 14L /* Read Local PDH Buffer Size */ #define PDC_PAT_CELL_SET_LOCAL_PDH 15L /* Write Local PDH Buffer */ #define PDC_PAT_CELL_GET_REMOTE_PDH_SZ 16L /* Return Remote PDH Buffer Size */ #define PDC_PAT_CELL_GET_REMOTE_PDH 17L /* Read Remote PDH Buffer */ #define PDC_PAT_CELL_GET_DBG_INFO 128L /* Return DBG Buffer Info */ #define PDC_PAT_CELL_CHANGE_ALIAS 129L /* Change Non-Equivalent Alias Chacking */ /* ** Arg to PDC_PAT_CELL_MODULE memaddr[4] ** ** Addresses on the Merced Bus != all Runway Bus addresses. ** This is intended for programming SBA/LBA chips range registers. */ #define IO_VIEW 0UL #define PA_VIEW 1UL /* PDC_PAT_CELL_MODULE entity type values */ #define PAT_ENTITY_CA 0 /* central agent */ #define PAT_ENTITY_PROC 1 /* processor */ #define PAT_ENTITY_MEM 2 /* memory controller */ #define PAT_ENTITY_SBA 3 /* system bus adapter */ #define PAT_ENTITY_LBA 4 /* local bus adapter */ #define PAT_ENTITY_PBC 5 /* processor bus converter */ #define PAT_ENTITY_XBC 6 /* crossbar fabric connect */ #define PAT_ENTITY_RC 7 /* fabric interconnect */ /* PDC_PAT_CELL_MODULE address range type values */ #define PAT_PBNUM 0 /* PCI Bus Number */ #define PAT_LMMIO 1 /* < 4G MMIO Space */ #define PAT_GMMIO 2 /* > 4G MMIO Space */ #define PAT_NPIOP 3 /* Non Postable I/O Port Space */ #define PAT_PIOP 4 /* Postable I/O Port Space */ #define PAT_AHPA 5 /* Addional HPA Space */ #define PAT_UFO 6 /* HPA Space (UFO for Mariposa) */ #define PAT_GNIP 7 /* GNI Reserved Space */ /* PDC PAT CHASSIS LOG -- Platform logging & forward progress functions */ #define PDC_PAT_CHASSIS_LOG 65L #define PDC_PAT_CHASSIS_WRITE_LOG 0L /* Write Log Entry */ #define PDC_PAT_CHASSIS_READ_LOG 1L /* Read Log Entry */ /* PDC PAT CPU -- CPU configuration within the protection domain */ #define PDC_PAT_CPU 67L #define PDC_PAT_CPU_INFO 0L /* Return CPU config info */ #define PDC_PAT_CPU_DELETE 1L /* Delete CPU */ #define PDC_PAT_CPU_ADD 2L /* Add CPU */ #define PDC_PAT_CPU_GET_NUMBER 3L /* Return CPU Number */ #define PDC_PAT_CPU_GET_HPA 4L /* Return CPU HPA */ #define PDC_PAT_CPU_STOP 5L /* Stop CPU */ #define PDC_PAT_CPU_RENDEZVOUS 6L /* Rendezvous CPU */ #define PDC_PAT_CPU_GET_CLOCK_INFO 7L /* Return CPU Clock info */ #define PDC_PAT_CPU_GET_RENDEZVOUS_STATE 8L /* Return Rendezvous State */ #define PDC_PAT_CPU_PLUNGE_FABRIC 128L /* Plunge Fabric */ #define PDC_PAT_CPU_UPDATE_CACHE_CLEANSING 129L /* Manipulate Cache * Cleansing Mode */ /* PDC PAT EVENT -- Platform Events */ #define PDC_PAT_EVENT 68L #define PDC_PAT_EVENT_GET_CAPS 0L /* Get Capabilities */ #define PDC_PAT_EVENT_SET_MODE 1L /* Set Notification Mode */ #define PDC_PAT_EVENT_SCAN 2L /* Scan Event */ #define PDC_PAT_EVENT_HANDLE 3L /* Handle Event */ #define PDC_PAT_EVENT_GET_NB_CALL 4L /* Get Non-Blocking call Args */ /* PDC PAT HPMC -- Cause processor to go into spin loop, and wait * for wake up from Monarch Processor. */ #define PDC_PAT_HPMC 70L #define PDC_PAT_HPMC_RENDEZ_CPU 0L /* go into spin loop */ #define PDC_PAT_HPMC_SET_PARAMS 1L /* Allows OS to specify intr which PDC * will use to interrupt OS during * machine check rendezvous */ /* parameters for PDC_PAT_HPMC_SET_PARAMS: */ #define HPMC_SET_PARAMS_INTR 1L /* Rendezvous Interrupt */ #define HPMC_SET_PARAMS_WAKE 2L /* Wake up processor */ /* PDC PAT IO -- On-line services for I/O modules */ #define PDC_PAT_IO 71L #define PDC_PAT_IO_GET_SLOT_STATUS 5L /* Get Slot Status Info*/ #define PDC_PAT_IO_GET_LOC_FROM_HARDWARE 6L /* Get Physical Location from */ /* Hardware Path */ #define PDC_PAT_IO_GET_HARDWARE_FROM_LOC 7L /* Get Hardware Path from * Physical Location */ #define PDC_PAT_IO_GET_PCI_CONFIG_FROM_HW 11L /* Get PCI Configuration * Address from Hardware Path */ #define PDC_PAT_IO_GET_HW_FROM_PCI_CONFIG 12L /* Get Hardware Path * from PCI Configuration Address */ #define PDC_PAT_IO_READ_HOST_BRIDGE_INFO 13L /* Read Host Bridge State Info */ #define PDC_PAT_IO_CLEAR_HOST_BRIDGE_INFO 14L /* Clear Host Bridge State Info*/ #define PDC_PAT_IO_GET_PCI_ROUTING_TABLE_SIZE 15L /* Get PCI INT Routing Table * Size */ #define PDC_PAT_IO_GET_PCI_ROUTING_TABLE 16L /* Get PCI INT Routing Table */ #define PDC_PAT_IO_GET_HINT_TABLE_SIZE 17L /* Get Hint Table Size */ #define PDC_PAT_IO_GET_HINT_TABLE 18L /* Get Hint Table */ #define PDC_PAT_IO_PCI_CONFIG_READ 19L /* PCI Config Read */ #define PDC_PAT_IO_PCI_CONFIG_WRITE 20L /* PCI Config Write */ #define PDC_PAT_IO_GET_NUM_IO_SLOTS 21L /* Get Number of I/O Bay Slots in * Cabinet */ #define PDC_PAT_IO_GET_LOC_IO_SLOTS 22L /* Get Physical Location of I/O */ /* Bay Slots in Cabinet */ #define PDC_PAT_IO_BAY_STATUS_INFO 28L /* Get I/O Bay Slot Status Info */ #define PDC_PAT_IO_GET_PROC_VIEW 29L /* Get Processor view of IO address */ #define PDC_PAT_IO_PROG_SBA_DIR_RANGE 30L /* Program directed range */ /* PDC PAT MEM -- Manage memory page deallocation */ #define PDC_PAT_MEM 72L #define PDC_PAT_MEM_PD_INFO 0L /* Return PDT info for PD */ #define PDC_PAT_MEM_PD_CLEAR 1L /* Clear PDT for PD */ #define PDC_PAT_MEM_PD_READ 2L /* Read PDT entries for PD */ #define PDC_PAT_MEM_PD_RESET 3L /* Reset clear bit for PD */ #define PDC_PAT_MEM_CELL_INFO 5L /* Return PDT info For Cell */ #define PDC_PAT_MEM_CELL_CLEAR 6L /* Clear PDT For Cell */ #define PDC_PAT_MEM_CELL_READ 7L /* Read PDT entries For Cell */ #define PDC_PAT_MEM_CELL_RESET 8L /* Reset clear bit For Cell */ #define PDC_PAT_MEM_SETGM 9L /* Set Golden Memory value */ #define PDC_PAT_MEM_ADD_PAGE 10L /* ADDs a page to the cell */ #define PDC_PAT_MEM_ADDRESS 11L /* Get Physical Location From */ /* Memory Address */ #define PDC_PAT_MEM_GET_TXT_SIZE 12L /* Get Formatted Text Size */ #define PDC_PAT_MEM_GET_PD_TXT 13L /* Get PD Formatted Text */ #define PDC_PAT_MEM_GET_CELL_TXT 14L /* Get Cell Formatted Text */ #define PDC_PAT_MEM_RD_STATE_INFO 15L /* Read Mem Module State Info*/ #define PDC_PAT_MEM_CLR_STATE_INFO 16L /*Clear Mem Module State Info*/ #define PDC_PAT_MEM_CLEAN_RANGE 128L /*Clean Mem in specific range*/ #define PDC_PAT_MEM_GET_TBL_SIZE 131L /* Get Memory Table Size */ #define PDC_PAT_MEM_GET_TBL 132L /* Get Memory Table */ /* PDC PAT NVOLATILE -- Access Non-Volatile Memory */ #define PDC_PAT_NVOLATILE 73L #define PDC_PAT_NVOLATILE_READ 0L /* Read Non-Volatile Memory */ #define PDC_PAT_NVOLATILE_WRITE 1L /* Write Non-Volatile Memory */ #define PDC_PAT_NVOLATILE_GET_SIZE 2L /* Return size of NVM */ #define PDC_PAT_NVOLATILE_VERIFY 3L /* Verify contents of NVM */ #define PDC_PAT_NVOLATILE_INIT 4L /* Initialize NVM */ /* PDC PAT PD */ #define PDC_PAT_PD 74L /* Protection Domain Info */ #define PDC_PAT_PD_GET_ADDR_MAP 0L /* Get Address Map */ /* PDC_PAT_PD_GET_ADDR_MAP entry types */ #define PAT_MEMORY_DESCRIPTOR 1 /* PDC_PAT_PD_GET_ADDR_MAP memory types */ #define PAT_MEMTYPE_MEMORY 0 #define PAT_MEMTYPE_FIRMWARE 4 /* PDC_PAT_PD_GET_ADDR_MAP memory usage */ #define PAT_MEMUSE_GENERAL 0 #define PAT_MEMUSE_GI 128 #define PAT_MEMUSE_GNI 129 #ifndef __ASSEMBLY__ #include <linux/types.h> #ifdef CONFIG_64BIT #define is_pdc_pat() (PDC_TYPE_PAT == pdc_type) extern int pdc_pat_get_irt_size(unsigned long *num_entries, unsigned long cell_num); extern int pdc_pat_get_irt(void *r_addr, unsigned long cell_num); #else /* ! CONFIG_64BIT */ /* No PAT support for 32-bit kernels...sorry */ #define is_pdc_pat() (0) #define pdc_pat_get_irt_size(num_entries, cell_numn) PDC_BAD_PROC #define pdc_pat_get_irt(r_addr, cell_num) PDC_BAD_PROC #endif /* ! CONFIG_64BIT */ struct pdc_pat_cell_num { unsigned long cell_num; unsigned long cell_loc; }; struct pdc_pat_cpu_num { unsigned long cpu_num; unsigned long cpu_loc; }; struct pdc_pat_pd_addr_map_entry { unsigned char entry_type; /* 1 = Memory Descriptor Entry Type */ unsigned char reserve1[5]; unsigned char memory_type; unsigned char memory_usage; unsigned long paddr; unsigned int pages; /* Length in 4K pages */ unsigned int reserve2; unsigned long cell_map; }; /******************************************************************** * PDC_PAT_CELL[Return Cell Module] memaddr[0] conf_base_addr * ---------------------------------------------------------- * Bit 0 to 51 - conf_base_addr * Bit 52 to 62 - reserved * Bit 63 - endianess bit ********************************************************************/ #define PAT_GET_CBA(value) ((value) & 0xfffffffffffff000UL) /******************************************************************** * PDC_PAT_CELL[Return Cell Module] memaddr[1] mod_info * ---------------------------------------------------- * Bit 0 to 7 - entity type * 0 = central agent, 1 = processor, * 2 = memory controller, 3 = system bus adapter, * 4 = local bus adapter, 5 = processor bus converter, * 6 = crossbar fabric connect, 7 = fabric interconnect, * 8 to 254 reserved, 255 = unknown. * Bit 8 to 15 - DVI * Bit 16 to 23 - IOC functions * Bit 24 to 39 - reserved * Bit 40 to 63 - mod_pages * number of 4K pages a module occupies starting at conf_base_addr ********************************************************************/ #define PAT_GET_ENTITY(value) (((value) >> 56) & 0xffUL) #define PAT_GET_DVI(value) (((value) >> 48) & 0xffUL) #define PAT_GET_IOC(value) (((value) >> 40) & 0xffUL) #define PAT_GET_MOD_PAGES(value)(((value) & 0xffffffUL) /* ** PDC_PAT_CELL_GET_INFO return block */ typedef struct pdc_pat_cell_info_rtn_block { unsigned long cpu_info; unsigned long cell_info; unsigned long cell_location; unsigned long reo_location; unsigned long mem_size; unsigned long dimm_status; unsigned long pdc_rev; unsigned long fabric_info0; unsigned long fabric_info1; unsigned long fabric_info2; unsigned long fabric_info3; unsigned long reserved[21]; } pdc_pat_cell_info_rtn_block_t; /* FIXME: mod[508] should really be a union of the various mod components */ struct pdc_pat_cell_mod_maddr_block { /* PDC_PAT_CELL_MODULE */ unsigned long cba; /* func 0 cfg space address */ unsigned long mod_info; /* module information */ unsigned long mod_location; /* physical location of the module */ struct hardware_path mod_path; /* module path (device path - layers) */ unsigned long mod[508]; /* PAT cell module components */ } __attribute__((aligned(8))) ; typedef struct pdc_pat_cell_mod_maddr_block pdc_pat_cell_mod_maddr_block_t; extern int pdc_pat_chassis_send_log(unsigned long status, unsigned long data); extern int pdc_pat_cell_get_number(struct pdc_pat_cell_num *cell_info); extern int pdc_pat_cell_module(unsigned long *actcnt, unsigned long ploc, unsigned long mod, unsigned long view_type, void *mem_addr); extern int pdc_pat_cell_num_to_loc(void *, unsigned long); extern int pdc_pat_cpu_get_number(struct pdc_pat_cpu_num *cpu_info, void *hpa); extern int pdc_pat_pd_get_addr_map(unsigned long *actual_len, void *mem_addr, unsigned long count, unsigned long offset); extern int pdc_pat_io_pci_cfg_read(unsigned long pci_addr, int pci_size, u32 *val); extern int pdc_pat_io_pci_cfg_write(unsigned long pci_addr, int pci_size, u32 val); /* Flag to indicate this is a PAT box...don't use this unless you ** really have to...it might go away some day. */ extern int pdc_pat; /* arch/parisc/kernel/inventory.c */ /******************************************************************** * PDC_PAT_CELL[Return Cell Module] memaddr[0] conf_base_addr * ---------------------------------------------------------- * Bit 0 to 51 - conf_base_addr * Bit 52 to 62 - reserved * Bit 63 - endianess bit ********************************************************************/ #define PAT_GET_CBA(value) ((value) & 0xfffffffffffff000UL) /******************************************************************** * PDC_PAT_CELL[Return Cell Module] memaddr[1] mod_info * ---------------------------------------------------- * Bit 0 to 7 - entity type * 0 = central agent, 1 = processor, * 2 = memory controller, 3 = system bus adapter, * 4 = local bus adapter, 5 = processor bus converter, * 6 = crossbar fabric connect, 7 = fabric interconnect, * 8 to 254 reserved, 255 = unknown. * Bit 8 to 15 - DVI * Bit 16 to 23 - IOC functions * Bit 24 to 39 - reserved * Bit 40 to 63 - mod_pages * number of 4K pages a module occupies starting at conf_base_addr ********************************************************************/ #define PAT_GET_ENTITY(value) (((value) >> 56) & 0xffUL) #define PAT_GET_DVI(value) (((value) >> 48) & 0xffUL) #define PAT_GET_IOC(value) (((value) >> 40) & 0xffUL) #define PAT_GET_MOD_PAGES(value)(((value) & 0xffffffUL) #endif /* __ASSEMBLY__ */ #endif /* ! __PARISC_PATPDC_H */ |