drivers/remoteproc/qcom_q6v5_mss.c

Source file repositories/reference/linux-study-clean/drivers/remoteproc/qcom_q6v5_mss.c

File Facts

System
Linux kernel
Corpus path
drivers/remoteproc/qcom_q6v5_mss.c
Extension
.c
Size
70464 bytes
Lines
2910
Domain
Driver Families
Bucket
drivers/remoteproc
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

struct reg_info {
	struct regulator *reg;
	int uV;
	int uA;
};

struct qcom_mss_reg_res {
	const char *supply;
	int uV;
	int uA;
};

struct rproc_hexagon_res {
	const char *hexagon_mba_image;
	struct qcom_mss_reg_res *proxy_supply;
	struct qcom_mss_reg_res *fallback_proxy_supply;
	struct qcom_mss_reg_res *active_supply;
	char **proxy_clk_names;
	char **reset_clk_names;
	char **active_clk_names;
	char **proxy_pd_names;
	int version;
	bool need_mem_protection;
	bool need_pas_mem_setup;
	bool has_alt_reset;
	bool has_mba_logs;
	bool has_spare_reg;
	bool has_qaccept_regs;
	bool has_ext_bhs_reg;
	bool has_ext_cntl_regs;
	bool has_vq6;
};

struct q6v5 {
	struct device *dev;
	struct rproc *rproc;

	void __iomem *reg_base;
	void __iomem *rmb_base;

	struct regmap *halt_map;
	struct regmap *conn_map;

	u32 halt_q6;
	u32 halt_modem;
	u32 halt_nc;
	u32 halt_vq6;
	u32 conn_box;
	u32 ext_bhs;

	u32 qaccept_mdm;
	u32 qaccept_cx;
	u32 qaccept_axi;

	u32 axim1_clk_off;
	u32 crypto_clk_off;
	u32 force_clk_on;
	u32 rscc_disable;

	struct reset_control *mss_restart;
	struct reset_control *pdc_reset;

	struct qcom_q6v5 q6v5;

	struct clk *active_clks[8];
	struct clk *reset_clks[4];
	struct clk *proxy_clks[4];
	struct device *proxy_pds[3];
	int active_clk_count;
	int reset_clk_count;
	int proxy_clk_count;
	int proxy_pd_count;

	struct reg_info active_regs[1];
	struct reg_info proxy_regs[1];
	struct reg_info fallback_proxy_regs[2];
	int active_reg_count;
	int proxy_reg_count;
	int fallback_proxy_reg_count;

	bool dump_mba_loaded;
	size_t current_dump_size;
	size_t total_dump_size;

	phys_addr_t mba_phys;
	size_t mba_size;
	size_t dp_size;

	phys_addr_t mdata_phys;
	size_t mdata_size;

Annotation

Implementation Notes