11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef _PARISC_PDC_H 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define _PARISC_PDC_H 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 470c1674f62026e455c0c821fb7f4baf24d2d1139David Howells#include <uapi/asm/pdc.h> 56c86cb8237bf08443806089130dc108051569a93Kyle McMartin 6218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin#if !defined(__ASSEMBLY__) 7218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin 81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern int pdc_type; 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Values for pdc_type */ 111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PDC_TYPE_ILLEGAL -1 121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PDC_TYPE_PAT 0 /* 64-bit PAT-PDC */ 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PDC_TYPE_SYSTEM_MAP 1 /* 32-bit, but supports PDC_SYSTEM_MAP */ 141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PDC_TYPE_SNAKE 2 /* Doesn't support SYSTEM_MAP */ 151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct pdc_chassis_info { /* for PDC_CHASSIS_INFO */ 171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long actcnt; /* actual number of bytes returned */ 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long maxcnt; /* maximum number of bytes that could be returned */ 191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct pdc_coproc_cfg { /* for PDC_COPROC_CFG */ 221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long ccr_functional; 231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long ccr_present; 241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long revision; 251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long model; 261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct pdc_model { /* for PDC_MODEL */ 291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long hversion; 301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long sversion; 311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long hw_id; 321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long boot_id; 331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long sw_id; 341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long sw_cap; 351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long arch_rev; 361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long pot_key; 371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long curr_key; 381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct pdc_cache_cf { /* for PDC_CACHE (I/D-caches) */ 411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long 42513e7ecd695a4c0f95b9aa86c03ec9b7d2d09e03Helge Deller#ifdef CONFIG_64BIT 431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds cc_padW:32, 441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds cc_alias: 4, /* alias boundaries for virtual addresses */ 461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds cc_block: 4, /* to determine most efficient stride */ 471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds cc_line : 3, /* maximum amount written back as a result of store (multiple of 16 bytes) */ 481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds cc_shift: 2, /* how much to shift cc_block left */ 491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds cc_wt : 1, /* 0 = WT-Dcache, 1 = WB-Dcache */ 501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds cc_sh : 2, /* 0 = separate I/D-cache, else shared I/D-cache */ 511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds cc_cst : 3, /* 0 = incoherent D-cache, 1=coherent D-cache */ 52e5a2e7fdb53028ce187c0ce0ae0d45ca7546fd5eKyle McMartin cc_pad1 : 10, /* reserved */ 53e5a2e7fdb53028ce187c0ce0ae0d45ca7546fd5eKyle McMartin cc_hv : 3; /* hversion dependent */ 541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct pdc_tlb_cf { /* for PDC_CACHE (I/D-TLB's) */ 571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long tc_pad0:12, /* reserved */ 58513e7ecd695a4c0f95b9aa86c03ec9b7d2d09e03Helge Deller#ifdef CONFIG_64BIT 591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds tc_padW:32, 601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds tc_sh : 2, /* 0 = separate I/D-TLB, else shared I/D-TLB */ 621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds tc_hv : 1, /* HV */ 631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds tc_page : 1, /* 0 = 2K page-size-machine, 1 = 4k page size */ 641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds tc_cst : 3, /* 0 = incoherent operations, else coherent operations */ 651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds tc_aid : 5, /* ITLB: width of access ids of processor (encoded!) */ 661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds tc_pad1 : 8; /* ITLB: width of space-registers (encoded) */ 671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct pdc_cache_info { /* main-PDC_CACHE-structure (caches & TLB's) */ 701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* I-cache */ 711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long ic_size; /* size in bytes */ 721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct pdc_cache_cf ic_conf; /* configuration */ 731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long ic_base; /* base-addr */ 741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long ic_stride; 751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long ic_count; 761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long ic_loop; 771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* D-cache */ 781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long dc_size; /* size in bytes */ 791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct pdc_cache_cf dc_conf; /* configuration */ 801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long dc_base; /* base-addr */ 811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long dc_stride; 821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long dc_count; 831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long dc_loop; 841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* Instruction-TLB */ 851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long it_size; /* number of entries in I-TLB */ 861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct pdc_tlb_cf it_conf; /* I-TLB-configuration */ 871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long it_sp_base; 881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long it_sp_stride; 891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long it_sp_count; 901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long it_off_base; 911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long it_off_stride; 921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long it_off_count; 931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long it_loop; 941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* data-TLB */ 951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long dt_size; /* number of entries in D-TLB */ 961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct pdc_tlb_cf dt_conf; /* D-TLB-configuration */ 971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long dt_sp_base; 981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long dt_sp_stride; 991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long dt_sp_count; 1001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long dt_off_base; 1011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long dt_off_stride; 1021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long dt_off_count; 1031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long dt_loop; 1041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#if 0 1071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* If you start using the next struct, you'll have to adjust it to 1081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * work with 64-bit firmware I think -PB 1091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 1101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct pdc_iodc { /* PDC_IODC */ 1111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char hversion_model; 1121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char hversion; 1131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char spa; 1141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char type; 1151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int sversion_rev:4; 1161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int sversion_model:19; 1171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int sversion_opt:8; 1181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char rev; 1191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char dep; 1201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char features; 1211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char pad1; 1221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int checksum:16; 1231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int length:16; 1241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int pad[15]; 1251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} __attribute__((aligned(8))) ; 1261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 1271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef CONFIG_PA20 1291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* no BLTBs in pa2.0 processors */ 1301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct pdc_btlb_info_range { 1311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u8 res00; 1321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u8 num_i; 1331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u8 num_d; 1341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u8 num_comb; 1351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct pdc_btlb_info { /* PDC_BLOCK_TLB, return of PDC_BTLB_INFO */ 1381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int min_size; /* minimum size of BTLB in pages */ 1391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int max_size; /* maximum size of BTLB in pages */ 1401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct pdc_btlb_info_range fixed_range_info; 1411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct pdc_btlb_info_range variable_range_info; 1421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* !CONFIG_PA20 */ 1451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 146513e7ecd695a4c0f95b9aa86c03ec9b7d2d09e03Helge Deller#ifdef CONFIG_64BIT 1471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct pdc_memory_table_raddr { /* PDC_MEM/PDC_MEM_TABLE (return info) */ 1481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long entries_returned; 1491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long entries_total; 1501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct pdc_memory_table { /* PDC_MEM/PDC_MEM_TABLE (arguments) */ 1531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long paddr; 1541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int pages; 1551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int reserved; 1561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 157513e7ecd695a4c0f95b9aa86c03ec9b7d2d09e03Helge Deller#endif /* CONFIG_64BIT */ 1581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct pdc_system_map_mod_info { /* PDC_SYSTEM_MAP/FIND_MODULE */ 1601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long mod_addr; 1611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long mod_pgs; 1621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long add_addrs; 1631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct pdc_system_map_addr_info { /* PDC_SYSTEM_MAP/FIND_ADDRESS */ 1661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long mod_addr; 1671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long mod_pgs; 1681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct pdc_initiator { /* PDC_INITIATOR */ 1711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds int host_id; 1721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds int factor; 1731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds int width; 1741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds int mode; 1751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct hardware_path { 1781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds char flags; /* see bit definitions below */ 1791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds char bc[6]; /* Bus Converter routing info to a specific */ 1801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* I/O adaptor (< 0 means none, > 63 resvd) */ 1811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds char mod; /* fixed field of specified module */ 1821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 1851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Device path specifications used by PDC. 1861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 1871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct pdc_module_path { 1881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct hardware_path path; 1891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int layers[6]; /* device-specific info (ctlr #, unit # ...) */ 1901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef CONFIG_PA20 1931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Only used on some pre-PA2.0 boxes */ 1941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct pdc_memory_map { /* PDC_MEMORY_MAP */ 1951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long hpa; /* mod's register set address */ 1961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long more_pgs; /* number of additional I/O pgs */ 1971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 1991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct pdc_tod { 2011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long tod_sec; 2021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long tod_usec; 2031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 2041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* architected results from PDC_PIM/transfer hpmc on a PA1.1 machine */ 2061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct pdc_hpmc_pim_11 { /* PDC_PIM */ 2081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 gr[32]; 2091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 cr[32]; 2101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 sr[8]; 2111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 iasq_back; 2121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 iaoq_back; 2131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 check_type; 2141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 cpu_state; 2151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 rsvd1; 2161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 cache_check; 2171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 tlb_check; 2181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 bus_check; 2191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 assists_check; 2201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 rsvd2; 2211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 assist_state; 2221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 responder_addr; 2231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 requestor_addr; 2241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 path_info; 2251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u64 fr[32]; 2261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 2271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 2291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * architected results from PDC_PIM/transfer hpmc on a PA2.0 machine 2301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Note that PDC_PIM doesn't care whether or not wide mode was enabled 2321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * so the results are different on PA1.1 vs. PA2.0 when in narrow mode. 2331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Note also that there are unarchitected results available, which 2351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * are hversion dependent. Do a "ser pim 0 hpmc" after rebooting, since 2361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * the firmware is probably the best way of printing hversion dependent 2371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * data. 2381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 2391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct pdc_hpmc_pim_20 { /* PDC_PIM */ 2411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u64 gr[32]; 2421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u64 cr[32]; 2431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u64 sr[8]; 2441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u64 iasq_back; 2451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u64 iaoq_back; 2461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 check_type; 2471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 cpu_state; 2481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 cache_check; 2491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 tlb_check; 2501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 bus_check; 2511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 assists_check; 2521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 assist_state; 2531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 path_info; 2541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u64 responder_addr; 2551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u64 requestor_addr; 2561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u64 fr[32]; 2571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 2581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 259218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinvoid pdc_console_init(void); /* in pdc_console.c */ 260218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinvoid pdc_console_restart(void); 261218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin 262218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinvoid setup_pdc(void); /* in inventory.c */ 263218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin 264218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin/* wrapper-functions from pdc.c */ 265218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin 266218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_add_valid(unsigned long address); 267218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_chassis_info(struct pdc_chassis_info *chassis_info, void *led_info, unsigned long len); 268218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_chassis_disp(unsigned long disp); 269218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_chassis_warn(unsigned long *warn); 270218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_coproc_cfg(struct pdc_coproc_cfg *pdc_coproc_info); 27124b574d052a1996bac42fbd56715ab602092c291Kyle McMartinint pdc_coproc_cfg_unlocked(struct pdc_coproc_cfg *pdc_coproc_info); 272218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_iodc_read(unsigned long *actcnt, unsigned long hpa, unsigned int index, 273218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin void *iodc_data, unsigned int iodc_data_size); 274218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_system_map_find_mods(struct pdc_system_map_mod_info *pdc_mod_info, 275218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin struct pdc_module_path *mod_path, long mod_index); 276218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_system_map_find_addrs(struct pdc_system_map_addr_info *pdc_addr_info, 277218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin long mod_index, long addr_index); 278218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_model_info(struct pdc_model *model); 279218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_model_sysmodel(char *name); 280218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_model_cpuid(unsigned long *cpu_id); 281218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_model_versions(unsigned long *versions, int id); 282218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_model_capabilities(unsigned long *capabilities); 283218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_cache_info(struct pdc_cache_info *cache); 284218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_spaceid_bits(unsigned long *space_bits); 285218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin#ifndef CONFIG_PA20 286218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_btlb_info(struct pdc_btlb_info *btlb); 287218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_mem_map_hpa(struct pdc_memory_map *r_addr, struct pdc_module_path *mod_path); 288218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin#endif /* !CONFIG_PA20 */ 289218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_lan_station_id(char *lan_addr, unsigned long net_hpa); 290218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin 291218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_stable_read(unsigned long staddr, void *memaddr, unsigned long count); 292218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_stable_write(unsigned long staddr, void *memaddr, unsigned long count); 293218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_stable_get_size(unsigned long *size); 294218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_stable_verify_contents(void); 295218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_stable_initialize(void); 296218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin 297218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_pci_irt_size(unsigned long *num_entries, unsigned long hpa); 298218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_pci_irt(unsigned long num_entries, unsigned long hpa, void *tbl); 299218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin 300218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_get_initiator(struct hardware_path *, struct pdc_initiator *); 301218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_tod_read(struct pdc_tod *tod); 302218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_tod_set(unsigned long sec, unsigned long usec); 303218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin 304218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin#ifdef CONFIG_64BIT 305218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_mem_mem_table(struct pdc_memory_table_raddr *r_addr, 306218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin struct pdc_memory_table *tbl, unsigned long entries); 307218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin#endif 308218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin 309218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinvoid set_firmware_width(void); 31024b574d052a1996bac42fbd56715ab602092c291Kyle McMartinvoid set_firmware_width_unlocked(void); 311218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_do_firm_test_reset(unsigned long ftc_bitmap); 312218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_do_reset(void); 313218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_soft_power_info(unsigned long *power_reg); 314218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_soft_power_button(int sw_control); 315218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinvoid pdc_io_reset(void); 316218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinvoid pdc_io_reset_devices(void); 317218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_iodc_getc(void); 318ef1afd4d79f0479960ff36bb5fe6ec6eba1ebff2Kyle McMartinint pdc_iodc_print(const unsigned char *str, unsigned count); 319218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin 320218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinvoid pdc_emergency_unlock(void); 321218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinint pdc_sti_call(unsigned long func, unsigned long flags, 322218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin unsigned long inptr, unsigned long outputr, 323218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin unsigned long glob_cfg); 324218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin 325218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartinstatic inline char * os_id_to_string(u16 os_id) { 326218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin switch(os_id) { 327218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin case OS_ID_NONE: return "No OS"; 328218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin case OS_ID_HPUX: return "HP-UX"; 329218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin case OS_ID_MPEXL: return "MPE-iX"; 330218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin case OS_ID_OSF: return "OSF"; 331218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin case OS_ID_HPRT: return "HP-RT"; 332218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin case OS_ID_NOVEL: return "Novell Netware"; 333218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin case OS_ID_LINUX: return "Linux"; 334218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin default: return "Unknown"; 335218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin } 336218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin} 337218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin 338218c998caa4ec76a9da15f3946dbb2cc22564114Kyle McMartin#endif /* !defined(__ASSEMBLY__) */ 3391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* _PARISC_PDC_H */ 340