drivers/bus/mhi/host/internal.h

Source file repositories/reference/linux-study-clean/drivers/bus/mhi/host/internal.h

File Facts

System
Linux kernel
Corpus path
drivers/bus/mhi/host/internal.h
Extension
.h
Size
13610 bytes
Lines
424
Domain
Driver Families
Bucket
drivers/bus
Inferred role
Driver Families: operation-table or driver-model contract
Status
pattern 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

extern const struct bus_type mhi_bus_type;

/* Host request register */
#define MHI_SOC_RESET_REQ_OFFSET			0xb0
#define MHI_SOC_RESET_REQ				BIT(0)

struct mhi_ctxt {
	struct mhi_event_ctxt *er_ctxt;
	struct mhi_chan_ctxt *chan_ctxt;
	struct mhi_cmd_ctxt *cmd_ctxt;
	dma_addr_t er_ctxt_addr;
	dma_addr_t chan_ctxt_addr;
	dma_addr_t cmd_ctxt_addr;
};

struct bhi_vec_entry {
	__le64 dma_addr;
	__le64 size;
};

enum mhi_fw_load_type {
	MHI_FW_LOAD_BHI,	/* BHI only in PBL */
	MHI_FW_LOAD_BHIE,	/* BHIe only in PBL */
	MHI_FW_LOAD_FBC,	/* BHI in PBL followed by BHIe in SBL */
	MHI_FW_LOAD_MAX,
};

enum mhi_ch_state_type {
	MHI_CH_STATE_TYPE_RESET,
	MHI_CH_STATE_TYPE_STOP,
	MHI_CH_STATE_TYPE_START,
	MHI_CH_STATE_TYPE_MAX,
};

#define MHI_CH_STATE_TYPE_LIST				\
	ch_state_type(RESET,		"RESET")	\
	ch_state_type(STOP,		"STOP")		\
	ch_state_type_end(START,	"START")

extern const char * const mhi_ch_state_type_str[MHI_CH_STATE_TYPE_MAX];
#define TO_CH_STATE_TYPE_STR(state) (((state) >= MHI_CH_STATE_TYPE_MAX) ? \
				     "INVALID_STATE" : \
				     mhi_ch_state_type_str[(state)])

#define MHI_INVALID_BRSTMODE(mode) (mode != MHI_DB_BRST_DISABLE && \
				    mode != MHI_DB_BRST_ENABLE)

#define MHI_EE_LIST						\
	mhi_ee(PBL,			"PRIMARY BOOTLOADER")	\
	mhi_ee(SBL,			"SECONDARY BOOTLOADER")	\
	mhi_ee(AMSS,			"MISSION MODE")		\
	mhi_ee(RDDM,			"RAMDUMP DOWNLOAD MODE")\
	mhi_ee(WFW,			"WLAN FIRMWARE")	\
	mhi_ee(PTHRU,			"PASS THROUGH")		\
	mhi_ee(EDL,			"EMERGENCY DOWNLOAD")	\
	mhi_ee(FP,			"FLASH PROGRAMMER")	\
	mhi_ee(DISABLE_TRANSITION,	"DISABLE")		\
	mhi_ee_end(NOT_SUPPORTED,	"NOT SUPPORTED")

extern const char * const mhi_ee_str[MHI_EE_MAX];
#define TO_MHI_EXEC_STR(ee) (((ee) >= MHI_EE_MAX) ? \
			     "INVALID_EE" : mhi_ee_str[ee])

#define MHI_IN_PBL(ee) (ee == MHI_EE_PBL || ee == MHI_EE_PTHRU || \
			ee == MHI_EE_EDL)
#define MHI_POWER_UP_CAPABLE(ee) (MHI_IN_PBL(ee) || ee == MHI_EE_AMSS)
#define MHI_FW_LOAD_CAPABLE(ee) (ee == MHI_EE_PBL || ee == MHI_EE_EDL)
#define MHI_IN_MISSION_MODE(ee) (ee == MHI_EE_AMSS || ee == MHI_EE_WFW || \
				 ee == MHI_EE_FP)

enum dev_st_transition {
	DEV_ST_TRANSITION_PBL,
	DEV_ST_TRANSITION_READY,
	DEV_ST_TRANSITION_SBL,
	DEV_ST_TRANSITION_MISSION_MODE,
	DEV_ST_TRANSITION_FP,
	DEV_ST_TRANSITION_SYS_ERR,
	DEV_ST_TRANSITION_DISABLE,
	DEV_ST_TRANSITION_DISABLE_DESTROY_DEVICE,
	DEV_ST_TRANSITION_MAX,
};

#define DEV_ST_TRANSITION_LIST					\
	dev_st_trans(PBL,		"PBL")			\
	dev_st_trans(READY,		"READY")		\
	dev_st_trans(SBL,		"SBL")			\
	dev_st_trans(MISSION_MODE,	"MISSION MODE")		\
	dev_st_trans(FP,		"FLASH PROGRAMMER")	\
	dev_st_trans(SYS_ERR,		"SYS ERROR")		\
	dev_st_trans(DISABLE,		"DISABLE")		\

Annotation

Implementation Notes