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

📄 aic7xxx_osm.h

📁 linux和2410结合开发 用他可以生成2410所需的zImage文件
💻 H
📖 第 1 页 / 共 3 页
字号:
#else /* LINUX_VERSION_CODE < KERNEL_VERSION(2,1,0) */ahc_lockinit(struct ahc_softc *ahc){}static __inline voidahc_lock(struct ahc_softc *ahc, unsigned long *flags){	*flags = 0;	save_flags(*flags);	cli();}static __inline voidahc_unlock(struct ahc_softc *ahc, unsigned long *flags){	restore_flags(*flags);}ahc_done_lockinit(struct ahc_softc *ahc){}static __inline voidahc_done_lock(struct ahc_softc *ahc, unsigned long *flags){	/*	 * The done lock is always held while	 * the ahc lock is held so blocking	 * interrupts again would have no effect.	 */}static __inline voidahc_done_unlock(struct ahc_softc *ahc, unsigned long *flags){}#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2,1,0) *//******************************* PCI Definitions ******************************//* * PCIM_xxx: mask to locate subfield in register * PCIR_xxx: config register offset * PCIC_xxx: device class * PCIS_xxx: device subclass * PCIP_xxx: device programming interface * PCIV_xxx: PCI vendor ID (only required to fixup ancient devices) * PCID_xxx: device ID */#define PCIR_DEVVENDOR		0x00#define PCIR_VENDOR		0x00#define PCIR_DEVICE		0x02#define PCIR_COMMAND		0x04#define PCIM_CMD_PORTEN		0x0001#define PCIM_CMD_MEMEN		0x0002#define PCIM_CMD_BUSMASTEREN	0x0004#define PCIM_CMD_MWRICEN	0x0010#define PCIM_CMD_PERRESPEN	0x0040#define PCIR_STATUS		0x06#define PCIR_REVID		0x08#define PCIR_PROGIF		0x09#define PCIR_SUBCLASS		0x0a#define PCIR_CLASS		0x0b#define PCIR_CACHELNSZ		0x0c#define PCIR_LATTIMER		0x0d#define PCIR_HEADERTYPE		0x0e#define PCIM_MFDEV		0x80#define PCIR_BIST		0x0f#define PCIR_CAP_PTR		0x34/* config registers for header type 0 devices */#define PCIR_MAPS	0x10#define PCIR_SUBVEND_0	0x2c#define PCIR_SUBDEV_0	0x2e#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)extern struct pci_driver aic7xxx_pci_driver;#endiftypedef enum{	AHC_POWER_STATE_D0,	AHC_POWER_STATE_D1,	AHC_POWER_STATE_D2,	AHC_POWER_STATE_D3} ahc_power_state;void ahc_power_state_change(struct ahc_softc *ahc,			    ahc_power_state new_state);/**************************** VL/EISA Routines ********************************/int			 aic7770_linux_probe(Scsi_Host_Template *);int			 aic7770_map_registers(struct ahc_softc *ahc);int			 aic7770_map_int(struct ahc_softc *ahc, u_int irq);/******************************* PCI Routines *********************************//* * We need to use the bios32.h routines if we are kernel version 2.1.92 or less. */#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,1,92)#if defined(__sparc_v9__) || defined(__powerpc__)#error "PPC and Sparc platforms are only support under 2.1.92 and above"#endif#include <linux/bios32.h>#endifint			 ahc_linux_pci_probe(Scsi_Host_Template *);int			 ahc_pci_map_registers(struct ahc_softc *ahc);int			 ahc_pci_map_int(struct ahc_softc *ahc);static __inline uint32_t ahc_pci_read_config(ahc_dev_softc_t pci,					     int reg, int width);static __inline uint32_tahc_pci_read_config(ahc_dev_softc_t pci, int reg, int width){	switch (width) {	case 1:	{		uint8_t retval;		pci_read_config_byte(pci, reg, &retval);		return (retval);	}	case 2:	{		uint16_t retval;		pci_read_config_word(pci, reg, &retval);		return (retval);	}	case 4:	{		uint32_t retval;		pci_read_config_dword(pci, reg, &retval);		return (retval);	}	default:		panic("ahc_pci_read_config: Read size too big");		/* NOTREACHED */		return (0);	}}static __inline void ahc_pci_write_config(ahc_dev_softc_t pci,					  int reg, uint32_t value,					  int width);static __inline voidahc_pci_write_config(ahc_dev_softc_t pci, int reg, uint32_t value, int width){	switch (width) {	case 1:		pci_write_config_byte(pci, reg, value);		break;	case 2:		pci_write_config_word(pci, reg, value);		break;	case 4:		pci_write_config_dword(pci, reg, value);		break;	default:		panic("ahc_pci_write_config: Write size too big");		/* NOTREACHED */	}}static __inline int ahc_get_pci_function(ahc_dev_softc_t);static __inline intahc_get_pci_function(ahc_dev_softc_t pci){	return (PCI_FUNC(pci->devfn));}static __inline int ahc_get_pci_slot(ahc_dev_softc_t);static __inline intahc_get_pci_slot(ahc_dev_softc_t pci){	return (PCI_SLOT(pci->devfn));}static __inline int ahc_get_pci_bus(ahc_dev_softc_t);static __inline intahc_get_pci_bus(ahc_dev_softc_t pci){	return (pci->bus->number);}static __inline void ahc_flush_device_writes(struct ahc_softc *);static __inline voidahc_flush_device_writes(struct ahc_softc *ahc){	/* XXX Is this sufficient for all architectures??? */	ahc_inb(ahc, INTSTAT);}#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,3,0)#define pci_map_sg(pdev, sg_list, nseg, direction) (nseg)#define pci_unmap_sg(pdev, sg_list, nseg, direction)#define sg_dma_address(sg) (VIRT_TO_BUS((sg)->address))#define sg_dma_len(sg) ((sg)->length)#define pci_map_single(pdev, buffer, bufflen, direction) \	(VIRT_TO_BUS(buffer))#define pci_unmap_single(pdev, buffer, buflen, direction)#endif/*********************** Transaction Access Wrappers **************************/static __inline void ahc_set_transaction_status(struct scb *, uint32_t);static __inlinevoid ahc_set_transaction_status(struct scb *scb, uint32_t status){	scb->io_ctx->result &= ~(CAM_STATUS_MASK << 16);	scb->io_ctx->result |= status << 16;}static __inline void ahc_set_scsi_status(struct scb *, uint32_t);static __inlinevoid ahc_set_scsi_status(struct scb *scb, uint32_t status){	scb->io_ctx->result &= ~0xFFFF;	scb->io_ctx->result |= status;}static __inline uint32_t ahc_get_transaction_status(struct scb *);static __inlineuint32_t ahc_get_transaction_status(struct scb *scb){	return ((scb->io_ctx->result >> 16) & CAM_STATUS_MASK);}static __inline uint32_t ahc_get_scsi_status(struct scb *);static __inlineuint32_t ahc_get_scsi_status(struct scb *scb){	return (scb->io_ctx->result & 0xFFFF);}static __inline void ahc_set_transaction_tag(struct scb *, int, u_int);static __inlinevoid ahc_set_transaction_tag(struct scb *scb, int enabled, u_int type){	/*	 * Nothing to do for linux as the incoming transaction	 * has no concept of tag/non tagged, etc.	 */}static __inline u_long ahc_get_transfer_length(struct scb *);static __inlineu_long ahc_get_transfer_length(struct scb *scb){	return (scb->platform_data->xfer_len);}static __inline int ahc_get_transfer_dir(struct scb *);static __inlineint ahc_get_transfer_dir(struct scb *scb){#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,40)	return (scb->io_ctx->sc_data_direction);#else	if (scb->io_ctx->bufflen == 0)		return (CAM_DIR_NONE);	switch(scb->io_ctx->cmnd[0]) {	case 0x08:  /* READ(6)  */	case 0x28:  /* READ(10) */	case 0xA8:  /* READ(12) */		return (CAM_DIR_IN);        case 0x0A:  /* WRITE(6)  */        case 0x2A:  /* WRITE(10) */        case 0xAA:  /* WRITE(12) */		return (CAM_DIR_OUT);        default:		return (CAM_DIR_NONE);        }#endif}static __inline void ahc_set_residual(struct scb *, u_long);static __inlinevoid ahc_set_residual(struct scb *scb, u_long resid){#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,0)	scb->io_ctx->resid = resid;#else	scb->platform_data->resid = resid;#endif}static __inline void ahc_set_sense_residual(struct scb *, u_long);static __inlinevoid ahc_set_sense_residual(struct scb *scb, u_long resid){	/* This can't be reported in Linux */}static __inline u_long ahc_get_residual(struct scb *);static __inlineu_long ahc_get_residual(struct scb *scb){#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,0)	return (scb->io_ctx->resid);#else	return (scb->platform_data->resid);#endif}static __inline int ahc_perform_autosense(struct scb *);static __inlineint ahc_perform_autosense(struct scb *scb){	/*	 * We always perform autosense in Linux.	 * On other platforms this is set on a	 * per-transaction basis.	 */	return (1);}static __inline uint32_tahc_get_sense_bufsize(struct ahc_softc *ahc, struct scb *scb){	return (sizeof(struct scsi_sense_data));}static __inline void ahc_notify_xfer_settings_change(struct ahc_softc *,						     struct ahc_devinfo *);static __inline voidahc_notify_xfer_settings_change(struct ahc_softc *ahc,				struct ahc_devinfo *devinfo){	/* Nothing to do here for linux */}static __inline void ahc_platform_scb_free(struct ahc_softc *ahc,					   struct scb *scb);static __inline voidahc_platform_scb_free(struct ahc_softc *ahc, struct scb *scb){	ahc->flags &= ~AHC_RESOURCE_SHORTAGE;}int	ahc_platform_alloc(struct ahc_softc *ahc, void *platform_arg);void	ahc_platform_free(struct ahc_softc *ahc);void	ahc_platform_freeze_devq(struct ahc_softc *ahc, struct scb *scb);static __inline void	ahc_freeze_scb(struct scb *scb);static __inline voidahc_freeze_scb(struct scb *scb){	/* Noting to do here for linux */}void	ahc_platform_set_tags(struct ahc_softc *ahc,			      struct ahc_devinfo *devinfo, ahc_queue_alg);int	ahc_platform_abort_scbs(struct ahc_softc *ahc, int target,				char channel, int lun, u_int tag,				role_t role, uint32_t status);void	ahc_linux_isr(int irq, void *dev_id, struct pt_regs * regs);void	ahc_platform_flushwork(struct ahc_softc *ahc);int	ahc_softc_comp(struct ahc_softc *, struct ahc_softc *);void	ahc_done(struct ahc_softc*, struct scb*);void	ahc_send_async(struct ahc_softc *, char channel,		       u_int target, u_int lun, ac_code, void *);void	ahc_print_path(struct ahc_softc *, struct scb *);void	ahc_platform_dump_card_state(struct ahc_softc *ahc);#ifdef CONFIG_PCI#define AHC_PCI_CONFIG 1#else#define AHC_PCI_CONFIG 0#endif#define bootverbose aic7xxx_verboseextern int aic7xxx_verbose;#endif /* _AIC7XXX_LINUX_H_ */

⌨️ 快捷键说明

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