157 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			157 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| #ifndef _NVT_DIAG_H_
 | |
| #define _NVT_DIAG_H_
 | |
| 
 | |
| #include <linux/cdev.h>
 | |
| 
 | |
| #define DIAG_NODE_NAME  "diag"
 | |
| #define NVT_DIAG_HDR_LEN        4
 | |
| #define NVT_DIAG_CMD_RESP_OFFSET        8
 | |
| 
 | |
| #define NVT_DIAG_RSP_FLAG       0x80
 | |
| 
 | |
| enum diag_cmd_class {
 | |
|         NVT_DIAG_CMD_CLASS_0 = 0xC0,
 | |
|         NVT_DIAG_CMD_CLASS_1 = 0xC1,
 | |
|         NVT_DIAG_CMD_CLASS_2 = 0xC2,
 | |
|         NVT_SYS_CMD = 0xFF,
 | |
| };
 | |
| 
 | |
| enum diag_c0_request {
 | |
|         NVT_DIAG_WRITE_CMD = 0,
 | |
|         NVT_DIAG_READ_CMD,
 | |
|         NVT_DIAG_ECHO_CMD,
 | |
|         NVT_DIAG_WRITE_LOCK_CMD,
 | |
|         NVT_DIAG_WRITE_UNLOCK_CMD,
 | |
|         NVT_DIAG_CHECK_SUM_CMD,
 | |
|         NVT_DIAG_GET_FW_VER_CMD,
 | |
|         NVT_DIAG_GET_MAC_ADDR_CMD,
 | |
|         NVT_DIAG_SET_MAC_ADDR_CMD,
 | |
|         NVT_DIAG_JUMP_TO_ADDR_CMD,
 | |
|         NVT_DIAG_REBOOT_CMD,
 | |
| };
 | |
| 
 | |
| enum diag_c1_request {
 | |
|         NVT_DIAG_ICONFIG_CMD = 0,
 | |
| };
 | |
| 
 | |
| enum sys_ff_request {
 | |
|         SYS_CMD_DEEPSLEEP = 0x00,
 | |
|         SYS_CMD_WAKEUP,
 | |
|         SYS_CMD_NUMBER,
 | |
| };
 | |
| 
 | |
| struct _nvt_diag_req {
 | |
|         u8 req_class;
 | |
|         u8 req_cmd;
 | |
|         u16 req_len;
 | |
| 
 | |
|         union {
 | |
|                 struct {
 | |
|                         u32 addr;
 | |
|                         u8  data[1024];
 | |
|                 } write;
 | |
| 
 | |
|                 struct {
 | |
|                         u32 addr;
 | |
|                         u32 len;
 | |
|                 } read;
 | |
| 
 | |
|                 struct {
 | |
|                         u8 data[1024];
 | |
|                 } echo;
 | |
| 
 | |
|                 struct {
 | |
|                         u8 data[7];
 | |
|                 } wr_locked;
 | |
| 
 | |
|                 struct {
 | |
|                         u8 data[9];
 | |
|                 } wr_unlocked;
 | |
| 
 | |
|                 struct {
 | |
|                         u32 addr;
 | |
|                         u32 len;
 | |
|                 } cksum_veri;
 | |
| 
 | |
|                 struct {
 | |
|                         u32 boot_type;
 | |
|                 } reboot_cmd;
 | |
|                 struct {
 | |
|                         u8 data[1024];
 | |
|                 } iconfig_cmd;
 | |
|         } sel;
 | |
| };
 | |
| 
 | |
| struct _nvt_diag_resp {
 | |
|         u8 resp_class;
 | |
|         u8 resp_cmd;
 | |
|         u16 resp_len;
 | |
|         u32 err_code;
 | |
| 
 | |
|         union {
 | |
|                 struct {
 | |
|                         u32 addr;
 | |
|                         u8 data[1024];
 | |
|                 } read;
 | |
| 
 | |
|                 struct {
 | |
|                         u8 data[1024];
 | |
|                 } echo;
 | |
| 
 | |
|                 struct {
 | |
|                         u32 cksum_val;
 | |
|                 } cksum_veri;
 | |
| 
 | |
|                 struct {
 | |
|                         u8 fw_ver[4];
 | |
|                         u8 fw_type[4];
 | |
|                         u32 fw_chipid;
 | |
|                 } get_fw_ver;
 | |
| 
 | |
|                 struct {
 | |
|                         u8 mac_addr[6];
 | |
|                 } get_mac_addr;
 | |
| 
 | |
|                 struct {
 | |
|                         u8 data[1024];
 | |
|                 } iconfig_resp;
 | |
| 
 | |
| 
 | |
|                 /* c2 response */
 | |
|                 struct {
 | |
|                         u8 bandwidth;
 | |
|                         u8 primary_channel;
 | |
|                 } hut_rx_setting_resp;
 | |
|         } sel;
 | |
| 
 | |
| };
 | |
| 
 | |
| struct _nvt_sys_req {
 | |
|         u8 req_class;
 | |
|         u8 req_cmd;
 | |
|         u16 req_len;
 | |
| };
 | |
| 
 | |
| struct _nvt_diag {
 | |
|         s32 diag_resp_rdy;
 | |
|         wait_queue_head_t diag_resp_wait;
 | |
|         s32 major_nm;
 | |
|         s32 minor_nm;
 | |
|         dev_t dev_n;
 | |
|         struct cdev chr_dev;
 | |
|         struct class *diag_class;
 | |
|         struct device *diag_device;
 | |
|         void *private_data;
 | |
| 
 | |
| };
 | |
| 
 | |
| struct _nvt_bus;
 | |
| extern s32 nvt_diag_create_node(struct _nvt_bus *bus);
 | |
| extern s32 nvt_diag_delete_node(void *data);
 | |
| extern s32 nvt_diag_pack_req(u8 cmd_class, u8 type, u32 addr,
 | |
|                 u32 data_len, u8 *buf, struct _nvt_diag_req *diag_req,
 | |
|                 s32 *pkt_len);
 | |
| extern s32 nvt_diag_rsp_header_check(struct _nvt_diag_resp *diag_resp);
 | |
| 
 | |
| #endif
 | 
