drivers/nfc/s3fwrn5/firmware.h

Source file repositories/reference/linux-study-clean/drivers/nfc/s3fwrn5/firmware.h

File Facts

System
Linux kernel
Corpus path
drivers/nfc/s3fwrn5/firmware.h
Extension
.h
Size
2473 bytes
Lines
102
Domain
Driver Families
Bucket
drivers/nfc
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 s3fwrn5_fw_header {
	__u8 type;
	__u8 code;
	__u16 len;
};

#define S3FWRN5_FW_CMD_RESET			0x00

#define S3FWRN5_FW_CMD_GET_BOOTINFO		0x01

struct s3fwrn5_fw_cmd_get_bootinfo_rsp {
	__u8 hw_version[4];
	__u16 sector_size;
	__u16 page_size;
	__u16 frame_max_size;
	__u16 hw_buffer_size;
};

#define S3FWRN5_FW_CMD_ENTER_UPDATE_MODE	0x02

struct s3fwrn5_fw_cmd_enter_updatemode {
	__u16 hashcode_size;
	__u16 signature_size;
};

#define S3FWRN5_FW_CMD_UPDATE_SECTOR		0x04

struct s3fwrn5_fw_cmd_update_sector {
	__u32 base_address;
};

#define S3FWRN5_FW_CMD_COMPLETE_UPDATE_MODE	0x05

struct s3fwrn5_fw_image {
	const struct firmware *fw;

	char date[13];
	u32 version;
	const void *sig;
	u32 sig_size;
	const void *image;
	u32 image_sectors;
	const void *custom_sig;
	u32 custom_sig_size;
};

struct s3fwrn5_fw_info {
	struct nci_dev *ndev;
	struct s3fwrn5_fw_image fw;
	char fw_name[NFC_FIRMWARE_NAME_MAXSIZE + 1];

	const void *sig;
	u32 sig_size;
	u32 sector_size;
	u32 base_addr;

	struct completion completion;
	struct sk_buff *rsp;
	char parity;
};

int s3fwrn5_fw_request_firmware(struct s3fwrn5_fw_info *fw_info);
void s3fwrn5_fw_init(struct s3fwrn5_fw_info *fw_info, const char *fw_name);
int s3fwrn5_fw_setup(struct s3fwrn5_fw_info *fw_info);
bool s3fwrn5_fw_check_version(const struct s3fwrn5_fw_info *fw_info, u32 version);
int s3fwrn5_fw_download(struct s3fwrn5_fw_info *fw_info);
void s3fwrn5_fw_cleanup(struct s3fwrn5_fw_info *fw_info);

int s3fwrn5_fw_recv_frame(struct nci_dev *ndev, struct sk_buff *skb);

#endif /* __LOCAL_S3FWRN5_FIRMWARE_H_ */

Annotation

Implementation Notes