drivers/net/wwan/t7xx/t7xx_state_monitor.h

Source file repositories/reference/linux-study-clean/drivers/net/wwan/t7xx/t7xx_state_monitor.h

File Facts

System
Linux kernel
Corpus path
drivers/net/wwan/t7xx/t7xx_state_monitor.h
Extension
.h
Size
3621 bytes
Lines
140
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 t7xx_fsm_ctl {
	struct t7xx_modem	*md;
	enum md_state		md_state;
	unsigned int		curr_state;
	struct list_head	command_queue;
	struct list_head	event_queue;
	wait_queue_head_t	command_wq;
	wait_queue_head_t	event_wq;
	wait_queue_head_t	async_hk_wq;
	spinlock_t		event_lock;		/* Protects event queue */
	spinlock_t		command_lock;		/* Protects command queue */
	struct task_struct	*fsm_thread;
	bool			exp_flg;
	spinlock_t		notifier_lock;		/* Protects notifier list */
	struct list_head	notifier_list;
	u32			status;			/* Device boot stage */
};

struct t7xx_fsm_event {
	struct list_head	entry;
	enum t7xx_fsm_event_state event_id;
	unsigned int		length;
	unsigned char		data[] __counted_by(length);
};

struct t7xx_fsm_command {
	struct list_head	entry;
	enum t7xx_fsm_cmd_state	cmd_id;
	unsigned int		flag;
	struct completion	done;
	int			result;
	struct kref		refcnt;
};

struct t7xx_fsm_notifier {
	struct list_head	entry;
	int (*notifier_fn)(enum md_state state, void *data);
	void			*data;
};

int t7xx_fsm_append_cmd(struct t7xx_fsm_ctl *ctl, enum t7xx_fsm_cmd_state cmd_id,
			unsigned int flag);
int t7xx_fsm_append_event(struct t7xx_fsm_ctl *ctl, enum t7xx_fsm_event_state event_id,
			  unsigned char *data, unsigned int length);
void t7xx_fsm_clr_event(struct t7xx_fsm_ctl *ctl, enum t7xx_fsm_event_state event_id);
void t7xx_fsm_broadcast_state(struct t7xx_fsm_ctl *ctl, enum md_state state);
void t7xx_fsm_reset(struct t7xx_modem *md);
int t7xx_fsm_init(struct t7xx_modem *md);
void t7xx_fsm_uninit(struct t7xx_modem *md);
int t7xx_fsm_recv_md_intr(struct t7xx_fsm_ctl *ctl, enum t7xx_md_irq_type type);
enum md_state t7xx_fsm_get_md_state(struct t7xx_fsm_ctl *ctl);
unsigned int t7xx_fsm_get_ctl_state(struct t7xx_fsm_ctl *ctl);
void t7xx_fsm_notifier_register(struct t7xx_modem *md, struct t7xx_fsm_notifier *notifier);
void t7xx_fsm_notifier_unregister(struct t7xx_modem *md, struct t7xx_fsm_notifier *notifier);

#endif /* __T7XX_MONITOR_H__ */

Annotation

Implementation Notes