96 lines
1.8 KiB
C
96 lines
1.8 KiB
C
/*
|
|
* xr806/cmd_proto.h
|
|
*
|
|
* Copyright (c) 2022
|
|
* Allwinner Technology Co., Ltd. <www.allwinner.com>
|
|
* laumy <liumingyuan@allwinner.com>
|
|
*
|
|
* cmd protocol implementation for Xr806 drivers
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License as
|
|
* published by the Free Software Foundation; either version 2 of
|
|
* the License, or (at your option) any later version.
|
|
*
|
|
*/
|
|
|
|
#ifndef __XR_CMD_PROTO_H__
|
|
#define __XR_CMD_PROTO_H__
|
|
|
|
/*XR_WIFI_HOST_HAND_WAY */
|
|
#define HAS_MAGIC (0x55aa55aa)
|
|
#define HAS_SET_WAKEUP_SRC (0x0264)
|
|
#define HAS_GET_WAKEUP_SRC (0x0259)
|
|
|
|
struct cmd_para_hand_way {
|
|
u8 id;
|
|
};
|
|
|
|
struct cmd_para_keep_alive {
|
|
u8 data;
|
|
};
|
|
|
|
/*XR_WIFI_HOST_DATA_TEST */
|
|
struct cmd_para_data_test {
|
|
u16 len;
|
|
u8 data[0];
|
|
};
|
|
|
|
/*XR_WIFI_HOST_HAND_WAY_RES */
|
|
struct cmd_para_hand_way_res {
|
|
u8 id;
|
|
u8 mac[6];
|
|
u8 ip_addr[4];
|
|
u8 netmask[4];
|
|
u8 gw[4];
|
|
};
|
|
|
|
struct cmd_para_data_test_res {
|
|
u16 len;
|
|
u8 data[0];
|
|
};
|
|
|
|
/* opcode */
|
|
enum cmd_host_opcode {
|
|
XR_WIFI_HOST_HAND_WAY = 0,
|
|
XR_WIFI_HOST_KEEP_AVLIE,
|
|
XR_WIFI_HOST_DATA_TEST,
|
|
XR_WIFI_HOST_KERNEL_MAX,
|
|
};
|
|
|
|
enum cmd_dev_opcode {
|
|
XR_WIFI_DEV_HAND_WAY_RES = 0,
|
|
XR_WIFI_DEV_RX_PAUSE,
|
|
XR_WIFI_DEV_RX_RESUME,
|
|
XR_WIFI_DEV_KEEP_AVLIE,
|
|
XR_WIFI_DEV_DATA_TEST_RES,
|
|
XR_WIFI_DEV_KERNEL_MAX,
|
|
};
|
|
|
|
/* config payload */
|
|
struct cmd_payload {
|
|
u16 type;
|
|
u16 len;
|
|
u8 param[0];
|
|
};
|
|
|
|
|
|
#pragma pack(1)
|
|
typedef struct{
|
|
u32 magic; /* HAS_PACKET_MAGIC */
|
|
u16 event;
|
|
u32 payload_size; /* total size of payload */
|
|
u8 wakeupsrc; /* the addr of payload */
|
|
}kpacket_box; //for transport reason
|
|
|
|
struct cmd_has_payload {
|
|
u16 unkown1;
|
|
u16 unkown2;
|
|
u32 len;
|
|
kpacket_box has_app_proto;
|
|
};
|
|
#pragma pack()
|
|
|
|
#define CMD_HEAD_SIZE (sizeof(struct cmd_payload))
|
|
#endif
|