⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pciio.h

📁 上传linux-jx2410的源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
pciio_dmaaddr_drain_f	(devfs_handle_t vhdl,			 paddr_t addr,			 size_t bytes);typedef voidpciio_dmalist_drain_f	(devfs_handle_t vhdl,			 alenlist_t list);/* INTERRUPT MANAGEMENT */typedef pciio_intr_tpciio_intr_alloc_f      (devfs_handle_t dev,	/* which PCI device */			 device_desc_t dev_desc,	/* device descriptor */			 pciio_intr_line_t lines,	/* which line(s) will be used */			 devfs_handle_t owner_dev);	/* owner of this intr */typedef voidpciio_intr_free_f       (pciio_intr_t intr_hdl);typedef intpciio_intr_connect_f    (pciio_intr_t intr_hdl,		/* pciio intr resource handle */			 intr_func_t intr_func,		/* pciio intr handler */			 intr_arg_t intr_arg,	/* arg to intr handler */			 void *thread);	/* intr thread to use */typedef voidpciio_intr_disconnect_f (pciio_intr_t intr_hdl);typedef devfs_handle_tpciio_intr_cpu_get_f    (pciio_intr_t intr_hdl);	/* pciio intr resource handle *//* CONFIGURATION MANAGEMENT */typedef voidpciio_provider_startup_f (devfs_handle_t pciio_provider);typedef voidpciio_provider_shutdown_f (devfs_handle_t pciio_provider);typedef int	pciio_reset_f		(devfs_handle_t conn);	/* pci connection point */typedef intpciio_write_gather_flush_f (devfs_handle_t dev);    /* Device flushing buffers */typedef pciio_endian_t			/* actual endianness */pciio_endian_set_f      (devfs_handle_t dev,	/* specify endianness for this device */			 pciio_endian_t device_end,	/* endianness of device */			 pciio_endian_t desired_end);	/* desired endianness */typedef pciio_priority_tpciio_priority_set_f    (devfs_handle_t pcicard,			 pciio_priority_t device_prio);typedef uint64_tpciio_config_get_f	(devfs_handle_t conn,	/* pci connection point */			 unsigned reg,		/* register byte offset */			 unsigned size);	/* width in bytes (1..4) */typedef voidpciio_config_set_f	(devfs_handle_t conn,	/* pci connection point */			 unsigned reg,		/* register byte offset */			 unsigned size,		/* width in bytes (1..4) */			 uint64_t value);	/* value to store */typedef intpciio_error_devenable_f (devfs_handle_t pconn_vhdl, int error_code);typedef pciio_slot_tpciio_error_extract_f	(devfs_handle_t vhdl,			 pciio_space_t *spacep,			 iopaddr_t *addrp);typedef voidpciio_driver_reg_callback_f	(devfs_handle_t conn,				int key1,				int key2,				int error);typedef voidpciio_driver_unreg_callback_f	(devfs_handle_t conn, /* pci connection point */				 int key1,				 int key2,				 int error);typedef intpciio_device_unregister_f	(devfs_handle_t conn);typedef intpciio_dma_enabled_f		(devfs_handle_t conn);/* * Adapters that provide a PCI interface adhere to this software interface. */typedef struct pciio_provider_s {    /* PIO MANAGEMENT */    pciio_piomap_alloc_f   *piomap_alloc;    pciio_piomap_free_f    *piomap_free;    pciio_piomap_addr_f    *piomap_addr;    pciio_piomap_done_f    *piomap_done;    pciio_piotrans_addr_f  *piotrans_addr;    pciio_piospace_alloc_f *piospace_alloc;    pciio_piospace_free_f  *piospace_free;    /* DMA MANAGEMENT */    pciio_dmamap_alloc_f   *dmamap_alloc;    pciio_dmamap_free_f    *dmamap_free;    pciio_dmamap_addr_f    *dmamap_addr;    pciio_dmamap_list_f    *dmamap_list;    pciio_dmamap_done_f    *dmamap_done;    pciio_dmatrans_addr_f  *dmatrans_addr;    pciio_dmatrans_list_f  *dmatrans_list;    pciio_dmamap_drain_f   *dmamap_drain;    pciio_dmaaddr_drain_f  *dmaaddr_drain;    pciio_dmalist_drain_f  *dmalist_drain;    /* INTERRUPT MANAGEMENT */    pciio_intr_alloc_f     *intr_alloc;    pciio_intr_free_f      *intr_free;    pciio_intr_connect_f   *intr_connect;    pciio_intr_disconnect_f *intr_disconnect;    pciio_intr_cpu_get_f   *intr_cpu_get;    /* CONFIGURATION MANAGEMENT */    pciio_provider_startup_f *provider_startup;    pciio_provider_shutdown_f *provider_shutdown;    pciio_reset_f	   *reset;    pciio_write_gather_flush_f *write_gather_flush;    pciio_endian_set_f     *endian_set;    pciio_priority_set_f   *priority_set;    pciio_config_get_f	   *config_get;    pciio_config_set_f	   *config_set;    /* Error handling interface */    pciio_error_devenable_f *error_devenable;    pciio_error_extract_f *error_extract;    /* Callback support */    pciio_driver_reg_callback_f *driver_reg_callback;    pciio_driver_unreg_callback_f *driver_unreg_callback;    pciio_device_unregister_f 	*device_unregister;    pciio_dma_enabled_f		*dma_enabled;} pciio_provider_t;/* PCI devices use these standard PCI provider interfaces */extern pciio_piomap_alloc_f pciio_piomap_alloc;extern pciio_piomap_free_f pciio_piomap_free;extern pciio_piomap_addr_f pciio_piomap_addr;extern pciio_piomap_done_f pciio_piomap_done;extern pciio_piotrans_addr_f pciio_piotrans_addr;extern pciio_pio_addr_f pciio_pio_addr;extern pciio_piospace_alloc_f pciio_piospace_alloc;extern pciio_piospace_free_f pciio_piospace_free;extern pciio_dmamap_alloc_f pciio_dmamap_alloc;extern pciio_dmamap_free_f pciio_dmamap_free;extern pciio_dmamap_addr_f pciio_dmamap_addr;extern pciio_dmamap_list_f pciio_dmamap_list;extern pciio_dmamap_done_f pciio_dmamap_done;extern pciio_dmatrans_addr_f pciio_dmatrans_addr;extern pciio_dmatrans_list_f pciio_dmatrans_list;extern pciio_dmamap_drain_f pciio_dmamap_drain;extern pciio_dmaaddr_drain_f pciio_dmaaddr_drain;extern pciio_dmalist_drain_f pciio_dmalist_drain;extern pciio_intr_alloc_f pciio_intr_alloc;extern pciio_intr_free_f pciio_intr_free;extern pciio_intr_connect_f pciio_intr_connect;extern pciio_intr_disconnect_f pciio_intr_disconnect;extern pciio_intr_cpu_get_f pciio_intr_cpu_get;extern pciio_provider_startup_f pciio_provider_startup;extern pciio_provider_shutdown_f pciio_provider_shutdown;extern pciio_reset_f pciio_reset;extern pciio_write_gather_flush_f pciio_write_gather_flush;extern pciio_endian_set_f pciio_endian_set;extern pciio_priority_set_f pciio_priority_set;extern pciio_config_get_f pciio_config_get;extern pciio_config_set_f pciio_config_set;extern pciio_error_devenable_f pciio_error_devenable;extern pciio_error_extract_f pciio_error_extract;/* Widgetdev in the IOERROR structure is encoded as follows. *	+---------------------------+ *	| slot (7:3) | function(2:0)| *	+---------------------------+ * Following are the convenience interfaces to get at form * a widgetdev or to break it into its constituents. */#define PCIIO_WIDGETDEV_SLOT_SHFT		3#define PCIIO_WIDGETDEV_SLOT_MASK		0x1f#define PCIIO_WIDGETDEV_FUNC_MASK		0x7#define pciio_widgetdev_create(slot,func)       \        (((slot) << PCIIO_WIDGETDEV_SLOT_SHFT) + (func))#define pciio_widgetdev_slot_get(wdev)		\	(((wdev) >> PCIIO_WIDGETDEV_SLOT_SHFT) & PCIIO_WIDGETDEV_SLOT_MASK)#define pciio_widgetdev_func_get(wdev)		\	((wdev) & PCIIO_WIDGETDEV_FUNC_MASK)/* Generic PCI card initialization interface */extern intpciio_driver_register  (pciio_vendor_id_t vendor_id,	/* card's vendor number */			pciio_device_id_t device_id,	/* card's device number */			char *driver_prefix,	/* driver prefix */			unsigned flags);extern voidpciio_error_register   (devfs_handle_t pconn,	/* which slot */			error_handler_f *efunc,	/* function to call */			error_handler_arg_t einfo);	/* first parameter */extern void             pciio_driver_unregister(char *driver_prefix);typedef void		pciio_iter_f(devfs_handle_t pconn);	/* a connect point */extern void             pciio_iterate(char *driver_prefix,				      pciio_iter_f *func);/* Interfaces used by PCI Bus Providers to talk to * the Generic PCI layer. */extern devfs_handle_tpciio_device_register  (devfs_handle_t connectpt,	/* vertex at center of bus */			devfs_handle_t master,	/* card's master ASIC (pci provider) */			pciio_slot_t slot,	/* card's slot (0..?) */			pciio_function_t func,	/* card's func (0..?) */			pciio_vendor_id_t vendor,	/* card's vendor number */			pciio_device_id_t device);	/* card's device number */extern voidpciio_device_unregister(devfs_handle_t connectpt);extern pciio_info_tpciio_device_info_new  (pciio_info_t pciio_info,	/* preallocated info struct */			devfs_handle_t master,	/* card's master ASIC (pci provider) */			pciio_slot_t slot,	/* card's slot (0..?) */			pciio_function_t func,	/* card's func (0..?) */			pciio_vendor_id_t vendor,	/* card's vendor number */			pciio_device_id_t device);	/* card's device number */extern voidpciio_device_info_free(pciio_info_t pciio_info);extern devfs_handle_tpciio_device_info_register(			devfs_handle_t connectpt,	/* vertex at center of bus */			pciio_info_t pciio_info);	/* details about conn point */extern voidpciio_device_info_unregister(			devfs_handle_t connectpt,	/* vertex at center of bus */			pciio_info_t pciio_info);	/* details about conn point */extern int              pciio_device_attach(			devfs_handle_t pcicard,   /* vertex created by pciio_device_register */			int drv_flags);extern intpciio_device_detach(			devfs_handle_t pcicard,   /* vertex created by pciio_device_register */                        int drv_flags);/* * Generic PCI interface, for use with all PCI providers * and all PCI devices. *//* Generic PCI interrupt interfaces */extern devfs_handle_t     pciio_intr_dev_get(pciio_intr_t pciio_intr);extern devfs_handle_t     pciio_intr_cpu_get(pciio_intr_t pciio_intr);/* Generic PCI pio interfaces */extern devfs_handle_t     pciio_pio_dev_get(pciio_piomap_t pciio_piomap);extern pciio_slot_t     pciio_pio_slot_get(pciio_piomap_t pciio_piomap);extern pciio_space_t    pciio_pio_space_get(pciio_piomap_t pciio_piomap);extern iopaddr_t        pciio_pio_pciaddr_get(pciio_piomap_t pciio_piomap);extern ulong            pciio_pio_mapsz_get(pciio_piomap_t pciio_piomap);extern caddr_t          pciio_pio_kvaddr_get(pciio_piomap_t pciio_piomap);#ifdef LATER#ifdef USE_PCI_PIOextern uint8_t 		pciio_pio_read8(volatile uint8_t *addr);extern uint16_t 	pciio_pio_read16(volatile uint16_t *addr);extern uint32_t 	pciio_pio_read32(volatile uint32_t *addr);extern uint64_t 	pciio_pio_read64(volatile uint64_t *addr);extern void 		pciio_pio_write8(uint8_t val, volatile uint8_t *addr);extern void 		pciio_pio_write16(uint16_t val, volatile uint16_t *addr);extern void 		pciio_pio_write32(uint32_t val, volatile uint32_t *addr);extern void 		pciio_pio_write64(uint64_t val, volatile uint64_t *addr);#else /* !USE_PCI_PIO */__inline uint8_t pciio_pio_read8(volatile uint8_t *addr){ 	return *addr; }__inline uint16_t pciio_pio_read16(volatile uint16_t *addr){	return *addr; }__inline uint32_t pciio_pio_read32(volatile uint32_t *addr){	return *addr; }__inline uint64_t pciio_pio_read64(volatile uint64_t *addr){	return *addr;}__inline void pciio_pio_write8(uint8_t val, volatile uint8_t *addr){	*addr = val;}__inline void pciio_pio_write16(uint16_t val, volatile uint16_t *addr){	*addr = val;}__inline void pciio_pio_write32(uint32_t val, volatile uint32_t *addr){	*addr = val;}__inline void pciio_pio_write64(uint64_t val, volatile uint64_t *addr){	*addr = val;}#endif /* USE_PCI_PIO */#endif	/* LATER *//* Generic PCI dma interfaces */extern devfs_handle_t     pciio_dma_dev_get(pciio_dmamap_t pciio_dmamap);/* Register/unregister PCI providers and get implementation handle */extern void             pciio_provider_register(devfs_handle_t provider, pciio_provider_t *pciio_fns);extern void             pciio_provider_unregister(devfs_handle_t provider);extern pciio_provider_t *pciio_provider_fns_get(devfs_handle_t provider);/* Generic pci slot information access interface */extern pciio_info_t     pciio_info_chk(devfs_handle_t vhdl);extern pciio_info_t     pciio_info_get(devfs_handle_t vhdl);extern void             pciio_info_set(devfs_handle_t vhdl, pciio_info_t widget_info);extern devfs_handle_t     pciio_info_dev_get(pciio_info_t pciio_info);extern pciio_bus_t	pciio_info_bus_get(pciio_info_t pciio_info);extern pciio_slot_t     pciio_info_slot_get(pciio_info_t pciio_info);extern pciio_function_t	pciio_info_function_get(pciio_info_t pciio_info);extern pciio_vendor_id_t pciio_info_vendor_id_get(pciio_info_t pciio_info);extern pciio_device_id_t pciio_info_device_id_get(pciio_info_t pciio_info);extern devfs_handle_t     pciio_info_master_get(pciio_info_t pciio_info);extern arbitrary_info_t pciio_info_mfast_get(pciio_info_t pciio_info);extern pciio_provider_t *pciio_info_pops_get(pciio_info_t pciio_info);extern error_handler_f *pciio_info_efunc_get(pciio_info_t);extern error_handler_arg_t *pciio_info_einfo_get(pciio_info_t);extern pciio_space_t	pciio_info_bar_space_get(pciio_info_t, int);extern iopaddr_t	pciio_info_bar_base_get(pciio_info_t, int);extern size_t		pciio_info_bar_size_get(pciio_info_t, int);extern iopaddr_t	pciio_info_rom_base_get(pciio_info_t);extern size_t		pciio_info_rom_size_get(pciio_info_t);extern int              pciio_error_handler(devfs_handle_t, int, ioerror_mode_t, ioerror_t *);extern int		pciio_dma_enabled(devfs_handle_t);#ifdef __cplusplus};#endif#endif				/* C or C++ */#endif				/* _ASM_SN_PCI_PCIIO_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -