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

📄 libata.h

📁 Axis 221 camera embedded programing interface
💻 H
📖 第 1 页 / 共 3 页
字号:
	struct scsi_cmnd	*scsicmd;	void			(*scsidone)(struct scsi_cmnd *);	struct ata_taskfile	tf;	u8			cdb[ATAPI_CDB_LEN];	unsigned long		flags;		/* ATA_QCFLAG_xxx */	unsigned int		tag;	unsigned int		n_elem;	unsigned int		orig_n_elem;	int			dma_dir;	unsigned int		pad_len;	unsigned int		nsect;	unsigned int		cursect;	unsigned int		nbytes;	unsigned int		curbytes;	unsigned int		cursg;	unsigned int		cursg_ofs;	struct scatterlist	sgent;	struct scatterlist	pad_sgent;	void			*buf_virt;	/* DO NOT iterate over __sg manually, use ata_for_each_sg() */	struct scatterlist	*__sg;	unsigned int		err_mask;	struct ata_taskfile	result_tf;	ata_qc_cb_t		complete_fn;	void			*private_data;};struct ata_port_stats {	unsigned long		unhandled_irq;	unsigned long		idle_irq;	unsigned long		rw_reqbuf;};struct ata_ering_entry {	int			is_io;	unsigned int		err_mask;	u64			timestamp;};struct ata_ering {	int			cursor;	struct ata_ering_entry	ring[ATA_ERING_SIZE];};struct ata_device {	struct ata_port		*ap;	unsigned int		devno;		/* 0 or 1 */	unsigned long		flags;		/* ATA_DFLAG_xxx */	struct scsi_device	*sdev;		/* attached SCSI device */	/* n_sector is used as CLEAR_OFFSET, read comment above CLEAR_OFFSET */	u64			n_sectors;	/* size of device, if ATA */	unsigned int		class;		/* ATA_DEV_xxx */	u16			id[ATA_ID_WORDS]; /* IDENTIFY xxx DEVICE data */	u8			pio_mode;	u8			dma_mode;	u8			xfer_mode;	unsigned int		xfer_shift;	/* ATA_SHIFT_xxx */	unsigned int		multi_count;	/* sectors count for						   READ/WRITE MULTIPLE */	unsigned int		max_sectors;	/* per-device max sectors */	unsigned int		cdb_len;	/* per-dev xfer mask */	unsigned int		pio_mask;	unsigned int		mwdma_mask;	unsigned int		udma_mask;	/* for CHS addressing */	u16			cylinders;	/* Number of cylinders */	u16			heads;		/* Number of heads */	u16			sectors;	/* Number of sectors per track */	/* error history */	struct ata_ering	ering;	unsigned int		horkage;	/* List of broken features */};/* Offset into struct ata_device.  Fields above it are maintained * acress device init.  Fields below are zeroed. */#define ATA_DEVICE_CLEAR_OFFSET		offsetof(struct ata_device, n_sectors)struct ata_eh_info {	struct ata_device	*dev;		/* offending device */	u32			serror;		/* SError from LLDD */	unsigned int		err_mask;	/* port-wide err_mask */	unsigned int		action;		/* ATA_EH_* action mask */	unsigned int		dev_action[ATA_MAX_DEVICES]; /* dev EH action */	unsigned int		flags;		/* ATA_EHI_* flags */	unsigned long		hotplug_timestamp;	unsigned int		probe_mask;	char			desc[ATA_EH_DESC_LEN];	int			desc_len;};struct ata_eh_context {	struct ata_eh_info	i;	int			tries[ATA_MAX_DEVICES];	unsigned int		classes[ATA_MAX_DEVICES];	unsigned int		did_probe_mask;};struct ata_port {	struct Scsi_Host	*scsi_host; /* our co-allocated scsi host */	const struct ata_port_operations *ops;	spinlock_t		*lock;	unsigned long		flags;	/* ATA_FLAG_xxx */	unsigned int		pflags; /* ATA_PFLAG_xxx */	unsigned int		id;	/* unique id req'd by scsi midlyr */	unsigned int		port_no; /* unique port #; from zero */	struct ata_prd		*prd;	 /* our SG list */	dma_addr_t		prd_dma; /* and its DMA mapping */	void			*pad;	/* array of DMA pad buffers */	dma_addr_t		pad_dma;	struct ata_ioports	ioaddr;	/* ATA cmd/ctl/dma register blocks */	u8			ctl;	/* cache of ATA control register */	u8			last_ctl;	/* Cache last written value */	unsigned int		pio_mask;	unsigned int		mwdma_mask;	unsigned int		udma_mask;	unsigned int		cbl;	/* cable type; ATA_CBL_xxx */	unsigned int		hw_sata_spd_limit;	unsigned int		sata_spd_limit;	/* SATA PHY speed limit */	/* record runtime error info, protected by host lock */	struct ata_eh_info	eh_info;	/* EH context owned by EH */	struct ata_eh_context	eh_context;	struct ata_device	device[ATA_MAX_DEVICES];	struct ata_queued_cmd	qcmd[ATA_MAX_QUEUE];	unsigned long		qc_allocated;	unsigned int		qc_active;	unsigned int		active_tag;	u32			sactive;	struct ata_port_stats	stats;	struct ata_host		*host;	struct device 		*dev;	void			*port_task_data;	struct delayed_work	port_task;	struct delayed_work	hotplug_task;	struct work_struct	scsi_rescan_task;	unsigned int		hsm_task_state;	u32			msg_enable;	struct list_head	eh_done_q;	wait_queue_head_t	eh_wait_q;	pm_message_t		pm_mesg;	int			*pm_result;	void			*private_data;	u8			sector_buf[ATA_SECT_SIZE]; /* owned by EH */};struct ata_port_operations {	void (*port_disable) (struct ata_port *);	void (*dev_config) (struct ata_port *, struct ata_device *);	void (*set_piomode) (struct ata_port *, struct ata_device *);	void (*set_dmamode) (struct ata_port *, struct ata_device *);	unsigned long (*mode_filter) (const struct ata_port *, struct ata_device *, unsigned long);	void (*tf_load) (struct ata_port *ap, const struct ata_taskfile *tf);	void (*tf_read) (struct ata_port *ap, struct ata_taskfile *tf);	void (*exec_command)(struct ata_port *ap, const struct ata_taskfile *tf);	u8   (*check_status)(struct ata_port *ap);	u8   (*check_altstatus)(struct ata_port *ap);	void (*dev_select)(struct ata_port *ap, unsigned int device);	void (*phy_reset) (struct ata_port *ap); /* obsolete */	int  (*set_mode) (struct ata_port *ap, struct ata_device **r_failed_dev);	void (*post_set_mode) (struct ata_port *ap);	int  (*check_atapi_dma) (struct ata_queued_cmd *qc);	void (*bmdma_setup) (struct ata_queued_cmd *qc);	void (*bmdma_start) (struct ata_queued_cmd *qc);	void (*data_xfer) (struct ata_device *, unsigned char *, unsigned int, int);	void (*qc_prep) (struct ata_queued_cmd *qc);	unsigned int (*qc_issue) (struct ata_queued_cmd *qc);	/* Error handlers.  ->error_handler overrides ->eng_timeout and	 * indicates that new-style EH is in place.	 */	void (*eng_timeout) (struct ata_port *ap); /* obsolete */	void (*freeze) (struct ata_port *ap);	void (*thaw) (struct ata_port *ap);	void (*error_handler) (struct ata_port *ap);	void (*post_internal_cmd) (struct ata_queued_cmd *qc);	irq_handler_t irq_handler;	void (*irq_clear) (struct ata_port *);	u32 (*scr_read) (struct ata_port *ap, unsigned int sc_reg);	void (*scr_write) (struct ata_port *ap, unsigned int sc_reg,			   u32 val);	int (*port_suspend) (struct ata_port *ap, pm_message_t mesg);	int (*port_resume) (struct ata_port *ap);	int (*port_start) (struct ata_port *ap);	void (*port_stop) (struct ata_port *ap);	void (*host_stop) (struct ata_host *host);	void (*bmdma_stop) (struct ata_queued_cmd *qc);	u8   (*bmdma_status) (struct ata_port *ap);};struct ata_port_info {	struct scsi_host_template	*sht;	unsigned long		flags;	unsigned long		pio_mask;	unsigned long		mwdma_mask;	unsigned long		udma_mask;	const struct ata_port_operations *port_ops;	void 			*private_data;};struct ata_timing {	unsigned short mode;		/* ATA mode */	unsigned short setup;		/* t1 */	unsigned short act8b;		/* t2 for 8-bit I/O */	unsigned short rec8b;		/* t2i for 8-bit I/O */	unsigned short cyc8b;		/* t0 for 8-bit I/O */	unsigned short active;		/* t2 or tD */	unsigned short recover;		/* t2i or tK */	unsigned short cycle;		/* t0 */	unsigned short udma;		/* t2CYCTYP/2 */};#define FIT(v,vmin,vmax)	max_t(short,min_t(short,v,vmax),vmin)extern const unsigned long sata_deb_timing_normal[];extern const unsigned long sata_deb_timing_hotplug[];extern const unsigned long sata_deb_timing_long[];extern const struct ata_port_operations ata_dummy_port_ops;static inline const unsigned long *sata_ehc_deb_timing(struct ata_eh_context *ehc){	if (ehc->i.flags & ATA_EHI_HOTPLUGGED)		return sata_deb_timing_hotplug;	else		return sata_deb_timing_normal;}static inline int ata_port_is_dummy(struct ata_port *ap){	return ap->ops == &ata_dummy_port_ops;}extern void ata_port_probe(struct ata_port *);extern void __sata_phy_reset(struct ata_port *ap);extern void sata_phy_reset(struct ata_port *ap);extern void ata_bus_reset(struct ata_port *ap);extern int sata_set_spd(struct ata_port *ap);extern int sata_phy_debounce(struct ata_port *ap, const unsigned long *param);extern int sata_phy_resume(struct ata_port *ap, const unsigned long *param);extern int ata_std_prereset(struct ata_port *ap);extern int ata_std_softreset(struct ata_port *ap, unsigned int *classes);extern int sata_port_hardreset(struct ata_port *ap,			       const unsigned long *timing);extern int sata_std_hardreset(struct ata_port *ap, unsigned int *class);extern void ata_std_postreset(struct ata_port *ap, unsigned int *classes);extern void ata_port_disable(struct ata_port *);extern void ata_std_ports(struct ata_ioports *ioaddr);#ifdef CONFIG_PCIextern int ata_pci_init_one (struct pci_dev *pdev, struct ata_port_info **port_info,			     unsigned int n_ports);extern void ata_pci_remove_one (struct pci_dev *pdev);extern void ata_pci_device_do_suspend(struct pci_dev *pdev, pm_message_t mesg);extern void ata_pci_device_do_resume(struct pci_dev *pdev);extern int ata_pci_device_suspend(struct pci_dev *pdev, pm_message_t mesg);extern int ata_pci_device_resume(struct pci_dev *pdev);extern int ata_pci_clear_simplex(struct pci_dev *pdev);#endif /* CONFIG_PCI */extern int ata_device_add(const struct ata_probe_ent *ent);extern void ata_port_detach(struct ata_port *ap);extern void ata_host_init(struct ata_host *, struct device *,			  unsigned long, const struct ata_port_operations *);extern void ata_host_remove(struct ata_host *host);extern int ata_scsi_detect(struct scsi_host_template *sht);extern int ata_scsi_ioctl(struct scsi_device *dev, int cmd, void __user *arg);extern int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *));extern int ata_scsi_release(struct Scsi_Host *host);extern void ata_sas_port_destroy(struct ata_port *);extern struct ata_port *ata_sas_port_alloc(struct ata_host *,					   struct ata_port_info *, struct Scsi_Host *);extern int ata_sas_port_init(struct ata_port *);extern int ata_sas_port_start(struct ata_port *ap);extern void ata_sas_port_stop(struct ata_port *ap);extern int ata_sas_slave_configure(struct scsi_device *, struct ata_port *);extern int ata_sas_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *),			    struct ata_port *ap);extern unsigned int ata_host_intr(struct ata_port *ap, struct ata_queued_cmd *qc);extern int sata_scr_valid(struct ata_port *ap);extern int sata_scr_read(struct ata_port *ap, int reg, u32 *val);extern int sata_scr_write(struct ata_port *ap, int reg, u32 val);extern int sata_scr_write_flush(struct ata_port *ap, int reg, u32 val);extern int ata_port_online(struct ata_port *ap);extern int ata_port_offline(struct ata_port *ap);extern int ata_scsi_device_resume(struct scsi_device *);extern int ata_scsi_device_suspend(struct scsi_device *, pm_message_t mesg);extern int ata_host_suspend(struct ata_host *host, pm_message_t mesg);extern void ata_host_resume(struct ata_host *host);extern int ata_ratelimit(void);extern int ata_busy_sleep(struct ata_port *ap,			  unsigned long timeout_pat, unsigned long timeout);extern void ata_port_queue_task(struct ata_port *ap, work_func_t fn,				void *data, unsigned long delay);extern u32 ata_wait_register(void __iomem *reg, u32 mask, u32 val,			     unsigned long interval_msec,			     unsigned long timeout_msec);/* * Default driver ops implementations */extern void ata_tf_load(struct ata_port *ap, const struct ata_taskfile *tf);extern void ata_tf_read(struct ata_port *ap, struct ata_taskfile *tf);extern void ata_tf_to_fis(const struct ata_taskfile *tf, u8 *fis, u8 pmp);extern void ata_tf_from_fis(const u8 *fis, struct ata_taskfile *tf);extern void ata_noop_dev_select (struct ata_port *ap, unsigned int device);extern void ata_std_dev_select (struct ata_port *ap, unsigned int device);extern u8 ata_check_status(struct ata_port *ap);extern u8 ata_altstatus(struct ata_port *ap);extern void ata_exec_command(struct ata_port *ap, const struct ata_taskfile *tf);extern int ata_port_start (struct ata_port *ap);extern void ata_port_stop (struct ata_port *ap);extern void ata_host_stop (struct ata_host *host);extern irqreturn_t ata_interrupt (int irq, void *dev_instance);extern void ata_mmio_data_xfer(struct ata_device *adev, unsigned char *buf,			       unsigned int buflen, int write_data);extern void ata_pio_data_xfer(struct ata_device *adev, unsigned char *buf,			      unsigned int buflen, int write_data);extern void ata_pio_data_xfer_noirq(struct ata_device *adev, unsigned char *buf,			      unsigned int buflen, int write_data);extern void ata_qc_prep(struct ata_queued_cmd *qc);extern void ata_noop_qc_prep(struct ata_queued_cmd *qc);extern unsigned int ata_qc_issue_prot(struct ata_queued_cmd *qc);extern void ata_sg_init_one(struct ata_queued_cmd *qc, void *buf,		unsigned int buflen);extern void ata_sg_init(struct ata_queued_cmd *qc, struct scatterlist *sg,		 unsigned int n_elem);extern unsigned int ata_dev_classify(const struct ata_taskfile *tf);extern void ata_id_string(const u16 *id, unsigned char *s,			  unsigned int ofs, unsigned int len);extern void ata_id_c_string(const u16 *id, unsigned char *s,			    unsigned int ofs, unsigned int len);extern unsigned long ata_device_blacklisted(const struct ata_device *dev);extern void ata_bmdma_setup (struct ata_queued_cmd *qc);extern void ata_bmdma_start (struct ata_queued_cmd *qc);extern void ata_bmdma_stop(struct ata_queued_cmd *qc);extern u8   ata_bmdma_status(struct ata_port *ap);extern void ata_bmdma_irq_clear(struct ata_port *ap);extern void ata_bmdma_freeze(struct ata_port *ap);extern void ata_bmdma_thaw(struct ata_port *ap);extern void ata_bmdma_drive_eh(struct ata_port *ap, ata_prereset_fn_t prereset,			       ata_reset_fn_t softreset,			       ata_reset_fn_t hardreset,			       ata_postreset_fn_t postreset);extern void ata_bmdma_error_handler(struct ata_port *ap);extern void ata_bmdma_post_internal_cmd(struct ata_queued_cmd *qc);extern int ata_hsm_move(struct ata_port *ap, struct ata_queued_cmd *qc,			u8 status, int in_wq);extern void ata_qc_complete(struct ata_queued_cmd *qc);extern int ata_qc_complete_multiple(struct ata_port *ap, u32 qc_active,				    void (*finish_qc)(struct ata_queued_cmd *));extern void ata_scsi_simulate(struct ata_device *dev, struct scsi_cmnd *cmd,			      void (*done)(struct scsi_cmnd *));extern int ata_std_bios_param(struct scsi_device *sdev,			      struct block_device *bdev,			      sector_t capacity, int geom[]);extern int ata_scsi_slave_config(struct scsi_device *sdev);extern void ata_scsi_slave_destroy(struct scsi_device *sdev);extern int ata_scsi_change_queue_depth(struct scsi_device *sdev,				       int queue_depth);extern struct ata_device *ata_dev_pair(struct ata_device *adev);/* * Timing helpers */extern unsigned int ata_pio_need_iordy(const struct ata_device *);extern int ata_timing_compute(struct ata_device *, unsigned short,			      struct ata_timing *, int, int);

⌨️ 快捷键说明

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