patch-2.4.20 linux-2.4.20/include/asm-parisc/hardware.h
Next file: linux-2.4.20/include/asm-parisc/hil.h
Previous file: linux-2.4.20/include/asm-parisc/hardirq.h
Back to the patch index
Back to the overall index
- Lines: 197
- Date:
Thu Nov 28 15:53:15 2002
- Orig file:
linux-2.4.19/include/asm-parisc/hardware.h
- Orig date:
Tue Dec 5 12:29:39 2000
diff -urN linux-2.4.19/include/asm-parisc/hardware.h linux-2.4.20/include/asm-parisc/hardware.h
@@ -1,35 +1,51 @@
-#ifndef _PARISC_HP_MACHINES_H_
-#define _PARISC_HP_MACHINES_H_
+#ifndef _PARISC_HARDWARE_H
+#define _PARISC_HARDWARE_H
-struct hp_hardware {
- unsigned short hw_type:5; /* HPHW_xxx */
- unsigned short hversion;
- unsigned long sversion:28;
- unsigned short opt;
- char *name;
+#include <asm/pdc.h>
+
+struct parisc_device_id {
+ unsigned char hw_type; /* 5 bits used */
+ unsigned char hversion_rev; /* 4 bits */
+ unsigned short hversion; /* 12 bits */
+ unsigned int sversion; /* 20 bits */
};
-struct hp_device {
- unsigned short hw_type:5; /* HPHW_xxx */
- unsigned short hversion; /* HP-UX uses hv_model:12 */
- unsigned int sversion; /* HP-UX uses sv_model:20 sv_opt:8 */
- unsigned short opt;
- unsigned int hversion_rev;
- unsigned int sversion_rev;
- struct hp_hardware * reference; /* This is a pointer to the
- reference */
- unsigned int managed; /* this is if the device has a driver for it */
- void * hpa;
+#define HWTYPE_ANY_ID 0xff
+#define HVERSION_REV_ANY_ID 0xff
+#define HVERSION_ANY_ID 0xffff
+#define SVERSION_ANY_ID 0xffffffffU
+
+struct hp_hardware {
+ unsigned short hw_type:5; /* HPHW_xxx */
+ unsigned short hversion;
+ unsigned long sversion:28;
+ unsigned short opt;
+ const char name[80]; /* The hardware description */
+};
+struct parisc_device {
+ unsigned long hpa; /* Hard Physical Address */
+ struct parisc_device_id id;
+ struct parisc_device *parent;
+ struct parisc_device *sibling;
+ struct parisc_device *child;
+ struct parisc_driver *driver; /* Driver for this device */
+ void *sysdata; /* Driver instance private data */
+ char name[80]; /* The hardware description */
+ int irq;
+
+ char hw_path; /* The module number on this bus */
+ unsigned int num_addrs; /* some devices have additional address ranges. */
+ unsigned long *addr; /* which will be stored here */
+
#ifdef __LP64__
/* parms for pdc_pat_cell_module() call */
- unsigned long pcell_loc; /* Physical Cell location */
- unsigned long mod_index; /* PAT specific - Misc Module info */
+ unsigned long pcell_loc; /* Physical Cell location */
+ unsigned long mod_index; /* PAT specific - Misc Module info */
/* generic info returned from pdc_pat_cell_module() */
- unsigned long mod_info; /* PAT specific - Misc Module info */
- unsigned long pmod_loc; /* physical Module location */
- unsigned long mod_path; /* Module HW path */
+ unsigned long mod_info; /* PAT specific - Misc Module info */
+ unsigned long pmod_loc; /* physical Module location */
#endif
};
@@ -43,33 +59,56 @@
pcxu = 6, /* pa8000 pa 2.0 */
pcxu_ = 7, /* pa8200 (u+) pa 2.0 */
pcxw = 8, /* pa8500 pa 2.0 */
- pcxw_ = 9 /* pa8600 (w+) pa 2.0 */
+ pcxw_ = 9, /* pa8600 (w+) pa 2.0 */
+ pcxw2 = 10 /* pa8700 pa 2.0 */
};
extern char *cpu_name_version[][2]; /* mapping from enum cpu_type to strings */
-struct pa_iodc_driver {
- unsigned short hw_type:5; /* HPHW_xxx */
- unsigned short hversion;
- unsigned short hversion_rev;
- unsigned long sversion:28;
- unsigned short sversion_rev;
- unsigned short opt;
- unsigned int check; /* Components that are significant */
+struct parisc_driver {
+ struct parisc_driver *next;
char *name;
- char *version;
- int (* callback)(struct hp_device *d, struct pa_iodc_driver *dri);
+ const struct parisc_device_id *id_table;
+ int (*probe) (struct parisc_device *dev); /* New device discovered */
};
-#define DRIVER_CHECK_HWTYPE 1
-#define DRIVER_CHECK_HVERSION 2
-#define DRIVER_CHECK_SVERSION 4
-#define DRIVER_CHECK_OPT 8
-/* The following two are useless right now */
-#define DRIVER_CHECK_HVERSION_REV 16
-#define DRIVER_CHECK_SVERSION_REV 32
-#define DRIVER_CHECK_EVERYTHING 63
+struct io_module {
+ volatile uint32_t nothing; /* reg 0 */
+ volatile uint32_t io_eim;
+ volatile uint32_t io_dc_adata;
+ volatile uint32_t io_ii_cdata;
+ volatile uint32_t io_dma_link; /* reg 4 */
+ volatile uint32_t io_dma_command;
+ volatile uint32_t io_dma_address;
+ volatile uint32_t io_dma_count;
+ volatile uint32_t io_flex; /* reg 8 */
+ volatile uint32_t io_spa_address;
+ volatile uint32_t reserved1[2];
+ volatile uint32_t io_command; /* reg 12 */
+ volatile uint32_t io_status;
+ volatile uint32_t io_control;
+ volatile uint32_t io_data;
+ volatile uint32_t reserved2; /* reg 16 */
+ volatile uint32_t chain_addr;
+ volatile uint32_t sub_mask_clr;
+ volatile uint32_t reserved3[13];
+ volatile uint32_t undefined[480];
+ volatile uint32_t unpriv[512];
+};
+struct bc_module {
+ volatile uint32_t unused1[12];
+ volatile uint32_t io_command;
+ volatile uint32_t io_status;
+ volatile uint32_t io_control;
+ volatile uint32_t unused2[1];
+ volatile uint32_t io_err_resp;
+ volatile uint32_t io_err_info;
+ volatile uint32_t io_err_req;
+ volatile uint32_t unused3[11];
+ volatile uint32_t io_io_low;
+ volatile uint32_t io_io_high;
+};
#define HPHW_NPROC 0
#define HPHW_MEMORY 1
@@ -88,16 +127,33 @@
#define HPHW_FABRIC 14
#define HPHW_FAULTY 31
-extern struct hp_hardware hp_hardware_list[];
-
-char *parisc_getHWtype( unsigned short hw_type );
-/* Attention: first hversion, then sversion...! */
-char *parisc_getHWdescription( unsigned short hw_type,
- unsigned long hversion, /* have to be long ! */
- unsigned long sversion );
+/* hardware.c: */
+extern const char *parisc_hardware_description(struct parisc_device_id *id);
+extern enum cpu_type parisc_get_cpu_type(unsigned long hversion);
+
+struct pci_dev;
+
+/* drivers.c: */
+extern struct parisc_device *alloc_pa_dev(unsigned long hpa,
+ struct hardware_path *path);
+extern int register_parisc_device(struct parisc_device *dev);
+extern int register_parisc_driver(struct parisc_driver *driver);
+extern int count_parisc_driver(struct parisc_driver *driver);
+extern int unregister_parisc_driver(struct parisc_driver *driver);
+extern void walk_central_bus(void);
+extern void fixup_child_irqs(struct parisc_device *parent, int irqbase,
+ int (*choose)(struct parisc_device *parent));
+extern void print_subdevices(struct parisc_device *dev);
+extern const struct parisc_device *find_pa_parent_type(const struct parisc_device *, int);
+extern void print_parisc_devices(void);
+extern char *print_pa_hwpath(struct parisc_device *dev, char *path);
+extern char *print_pci_hwpath(struct pci_dev *dev, char *path);
+extern void get_pci_node_path(struct pci_dev *dev, struct hardware_path *path);
+
+
+/* inventory.c: */
+extern void do_memory_inventory(void);
+extern void do_device_inventory(void);
-enum cpu_type parisc_get_cpu_type( unsigned long hversion );
-
-extern int register_driver(struct pa_iodc_driver *driver);
-#endif
+#endif /* _PARISC_HARDWARE_H */
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)