drivers/scsi/aic7xxx/aic79xx_inline.h

Source file repositories/reference/linux-study-clean/drivers/scsi/aic7xxx/aic79xx_inline.h

File Facts

System
Linux kernel
Corpus path
drivers/scsi/aic7xxx/aic79xx_inline.h
Extension
.h
Size
5997 bytes
Lines
173
Domain
Driver Families
Bucket
drivers/scsi
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

#ifndef _AIC79XX_INLINE_H_
#define _AIC79XX_INLINE_H_

/******************************** Debugging ***********************************/
static inline char *ahd_name(struct ahd_softc *ahd);

static inline char *ahd_name(struct ahd_softc *ahd)
{
	return (ahd->name);
}

/************************ Sequencer Execution Control *************************/
static inline void ahd_known_modes(struct ahd_softc *ahd,
				     ahd_mode src, ahd_mode dst);
static inline ahd_mode_state ahd_build_mode_state(struct ahd_softc *ahd,
						    ahd_mode src,
						    ahd_mode dst);
static inline void ahd_extract_mode_state(struct ahd_softc *ahd,
					    ahd_mode_state state,
					    ahd_mode *src, ahd_mode *dst);

void ahd_set_modes(struct ahd_softc *ahd, ahd_mode src,
		   ahd_mode dst);
ahd_mode_state ahd_save_modes(struct ahd_softc *ahd);
void ahd_restore_modes(struct ahd_softc *ahd,
		       ahd_mode_state state);
int  ahd_is_paused(struct ahd_softc *ahd);
void ahd_pause(struct ahd_softc *ahd);
void ahd_unpause(struct ahd_softc *ahd);

static inline void
ahd_known_modes(struct ahd_softc *ahd, ahd_mode src, ahd_mode dst)
{
	ahd->src_mode = src;
	ahd->dst_mode = dst;
	ahd->saved_src_mode = src;
	ahd->saved_dst_mode = dst;
}

static inline ahd_mode_state
ahd_build_mode_state(struct ahd_softc *ahd, ahd_mode src, ahd_mode dst)
{
	return ((src << SRC_MODE_SHIFT) | (dst << DST_MODE_SHIFT));
}

static inline void
ahd_extract_mode_state(struct ahd_softc *ahd, ahd_mode_state state,
		       ahd_mode *src, ahd_mode *dst)
{
	*src = (state & SRC_MODE) >> SRC_MODE_SHIFT;
	*dst = (state & DST_MODE) >> DST_MODE_SHIFT;
}

/*********************** Scatter Gather List Handling *************************/
void	*ahd_sg_setup(struct ahd_softc *ahd, struct scb *scb,
		      void *sgptr, dma_addr_t addr,
		      bus_size_t len, int last);

/************************** Memory mapping routines ***************************/
static inline size_t	ahd_sg_size(struct ahd_softc *ahd);

void	ahd_sync_sglist(struct ahd_softc *ahd,
			struct scb *scb, int op);

static inline size_t ahd_sg_size(struct ahd_softc *ahd)
{
	if ((ahd->flags & AHD_64BIT_ADDRESSING) != 0)
		return (sizeof(struct ahd_dma64_seg));
	return (sizeof(struct ahd_dma_seg));
}

/*********************** Miscellaneous Support Functions ***********************/
struct ahd_initiator_tinfo *
	ahd_fetch_transinfo(struct ahd_softc *ahd,
			    char channel, u_int our_id,
			    u_int remote_id,
			    struct ahd_tmode_tstate **tstate);
uint16_t
	ahd_inw(struct ahd_softc *ahd, u_int port);
void	ahd_outw(struct ahd_softc *ahd, u_int port,
		 u_int value);
uint32_t
	ahd_inl(struct ahd_softc *ahd, u_int port);
void	ahd_outl(struct ahd_softc *ahd, u_int port,
		 uint32_t value);
uint64_t
	ahd_inq(struct ahd_softc *ahd, u_int port);
void	ahd_outq(struct ahd_softc *ahd, u_int port,
		 uint64_t value);
u_int	ahd_get_scbptr(struct ahd_softc *ahd);

Annotation

Implementation Notes