drivers/net/wireless/ath/ath12k/ahb.h

Source file repositories/reference/linux-study-clean/drivers/net/wireless/ath/ath12k/ahb.h

File Facts

System
Linux kernel
Corpus path
drivers/net/wireless/ath/ath12k/ahb.h
Extension
.h
Size
2616 bytes
Lines
91
Domain
Driver Families
Bucket
drivers/net
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 ath12k_ahb_device_family_ops {
	int (*probe)(struct platform_device *pdev);
	int (*arch_init)(struct ath12k_base *ab);
	void (*arch_deinit)(struct ath12k_base *ab);
};

struct ath12k_ahb {
	struct ath12k_base *ab;
	struct rproc *tgt_rproc;
	struct clk *xo_clk;
	struct completion rootpd_ready;
	struct notifier_block root_pd_nb;
	void *root_pd_notifier;
	struct qcom_smem_state *spawn_state;
	struct qcom_smem_state *stop_state;
	struct completion userpd_spawned;
	struct completion userpd_ready;
	struct completion userpd_stopped;
	u32 userpd_id;
	u32 spawn_bit;
	u32 stop_bit;
	int userpd_irq_num[ATH12K_USERPD_MAX_IRQ];
	const struct ath12k_ahb_ops *ahb_ops;
	const struct ath12k_ahb_device_family_ops *device_family_ops;
	bool scm_auth_enabled;
};

struct ath12k_ahb_driver {
	const char *name;
	const struct of_device_id *id_table;
	struct ath12k_ahb_device_family_ops ops;
	struct platform_driver driver;
};

static inline struct ath12k_ahb *ath12k_ab_to_ahb(struct ath12k_base *ab)
{
	return (struct ath12k_ahb *)ab->drv_priv;
}

int ath12k_ahb_register_driver(const enum ath12k_device_family device_id,
			       struct ath12k_ahb_driver *driver);
void ath12k_ahb_unregister_driver(const enum ath12k_device_family device_id);

#endif

Annotation

Implementation Notes