hardware.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:5k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. #ifndef _PARISC_HARDWARE_H
  2. #define _PARISC_HARDWARE_H
  3. #include <asm/pdc.h>
  4. struct parisc_device_id {
  5. unsigned char hw_type; /* 5 bits used */
  6. unsigned char hversion_rev; /* 4 bits */
  7. unsigned short hversion; /* 12 bits */
  8. unsigned int sversion; /* 20 bits */
  9. };
  10. #define HWTYPE_ANY_ID 0xff
  11. #define HVERSION_REV_ANY_ID 0xff
  12. #define HVERSION_ANY_ID 0xffff
  13. #define SVERSION_ANY_ID 0xffffffffU
  14. struct hp_hardware {
  15. unsigned short hw_type:5; /* HPHW_xxx */
  16. unsigned short hversion;
  17. unsigned long sversion:28;
  18. unsigned short opt;
  19. const char name[80]; /* The hardware description */
  20. };
  21. struct parisc_device {
  22. unsigned long   hpa; /* Hard Physical Address */
  23. struct parisc_device_id id;
  24. struct parisc_device *parent;
  25. struct parisc_device *sibling;
  26. struct parisc_device *child;
  27. struct parisc_driver *driver; /* Driver for this device */
  28. void *sysdata; /* Driver instance private data */
  29. char name[80]; /* The hardware description */
  30. int irq;
  31. char hw_path;        /* The module number on this bus */
  32. unsigned int num_addrs; /* some devices have additional address ranges. */
  33. unsigned long *addr;          /* which will be stored here */
  34.  
  35. #ifdef __LP64__
  36. /* parms for pdc_pat_cell_module() call */
  37. unsigned long pcell_loc; /* Physical Cell location */
  38. unsigned long mod_index; /* PAT specific - Misc Module info */
  39. /* generic info returned from pdc_pat_cell_module() */
  40. unsigned long mod_info; /* PAT specific - Misc Module info */
  41. unsigned long pmod_loc; /* physical Module location */
  42. #endif
  43. };
  44. enum cpu_type {
  45. pcx = 0, /* pa7000 pa 1.0  */
  46. pcxs = 1, /* pa7000 pa 1.1a */
  47. pcxt = 2, /* pa7100 pa 1.1b */
  48. pcxt_ = 3, /* pa7200 (t') pa 1.1c */
  49. pcxl = 4, /* pa7100lc pa 1.1d */
  50. pcxl2 = 5, /* pa7300lc pa 1.1e */
  51. pcxu = 6, /* pa8000 pa 2.0  */
  52. pcxu_ = 7, /* pa8200 (u+) pa 2.0  */
  53. pcxw = 8, /* pa8500 pa 2.0  */
  54. pcxw_ = 9, /* pa8600 (w+) pa 2.0  */
  55. pcxw2 = 10 /* pa8700 pa 2.0  */
  56. };
  57. extern char *cpu_name_version[][2]; /* mapping from enum cpu_type to strings */
  58. struct parisc_driver {
  59. struct parisc_driver *next;
  60. char *name; 
  61. const struct parisc_device_id *id_table;
  62. int (*probe) (struct parisc_device *dev); /* New device discovered */
  63. };
  64. struct io_module {
  65.         volatile uint32_t nothing; /* reg 0 */
  66.         volatile uint32_t io_eim;
  67.         volatile uint32_t io_dc_adata;
  68.         volatile uint32_t io_ii_cdata;
  69.         volatile uint32_t io_dma_link; /* reg 4 */
  70.         volatile uint32_t io_dma_command;
  71.         volatile uint32_t io_dma_address;
  72.         volatile uint32_t io_dma_count;
  73.         volatile uint32_t io_flex; /* reg 8 */
  74.         volatile uint32_t io_spa_address;
  75.         volatile uint32_t reserved1[2];
  76.         volatile uint32_t io_command; /* reg 12 */
  77.         volatile uint32_t io_status;
  78.         volatile uint32_t io_control;
  79.         volatile uint32_t io_data;
  80.         volatile uint32_t reserved2; /* reg 16 */
  81.         volatile uint32_t chain_addr;
  82.         volatile uint32_t sub_mask_clr;
  83.         volatile uint32_t reserved3[13];
  84.         volatile uint32_t undefined[480];
  85.         volatile uint32_t unpriv[512];
  86. };
  87. struct bc_module {
  88.         volatile uint32_t unused1[12];
  89.         volatile uint32_t io_command;
  90.         volatile uint32_t io_status;
  91.         volatile uint32_t io_control;
  92.         volatile uint32_t unused2[1];
  93.         volatile uint32_t io_err_resp;
  94.         volatile uint32_t io_err_info;
  95.         volatile uint32_t io_err_req;
  96.         volatile uint32_t unused3[11];
  97.         volatile uint32_t io_io_low;
  98.         volatile uint32_t io_io_high;
  99. };
  100. #define HPHW_NPROC     0 
  101. #define HPHW_MEMORY    1       
  102. #define HPHW_B_DMA     2
  103. #define HPHW_OBSOLETE  3
  104. #define HPHW_A_DMA     4
  105. #define HPHW_A_DIRECT  5
  106. #define HPHW_OTHER     6
  107. #define HPHW_BCPORT    7
  108. #define HPHW_CIO       8
  109. #define HPHW_CONSOLE   9
  110. #define HPHW_FIO       10
  111. #define HPHW_BA        11
  112. #define HPHW_IOA       12
  113. #define HPHW_BRIDGE    13
  114. #define HPHW_FABRIC    14
  115. #define HPHW_FAULTY    31
  116. /* hardware.c: */
  117. extern const char *parisc_hardware_description(struct parisc_device_id *id);
  118. extern enum cpu_type parisc_get_cpu_type(unsigned long hversion);
  119. struct pci_dev;
  120. /* drivers.c: */
  121. extern struct parisc_device *alloc_pa_dev(unsigned long hpa,
  122. struct hardware_path *path);
  123. extern int register_parisc_device(struct parisc_device *dev);
  124. extern int register_parisc_driver(struct parisc_driver *driver);
  125. extern int count_parisc_driver(struct parisc_driver *driver);
  126. extern int unregister_parisc_driver(struct parisc_driver *driver);
  127. extern void walk_central_bus(void);
  128. extern void fixup_child_irqs(struct parisc_device *parent, int irqbase,
  129. int (*choose)(struct parisc_device *parent));
  130. extern void print_subdevices(struct parisc_device *dev);
  131. extern const struct parisc_device *find_pa_parent_type(const struct parisc_device *, int);
  132. extern void print_parisc_devices(void);
  133. extern char *print_pa_hwpath(struct parisc_device *dev, char *path);
  134. extern char *print_pci_hwpath(struct pci_dev *dev, char *path);
  135. extern void get_pci_node_path(struct pci_dev *dev, struct hardware_path *path);
  136. /* inventory.c: */
  137. extern void do_memory_inventory(void);
  138. extern void do_device_inventory(void);
  139. #endif /* _PARISC_HARDWARE_H */