xref: /OK3568_Linux_fs/kernel/drivers/net/wireless/rockchip_wlan/ssv6xxx/bridge/sdiobridge_pub.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  * Copyright (c) 2015 South Silicon Valley Microelectronics Inc.
3  * Copyright (c) 2015 iComm Corporation
4  *
5  * This program is free software: you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation, either version 3 of the License, or
8  * (at your option) any later version.
9  * This program is distributed in the hope that it will be useful, but
10  * WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12  * See the GNU General Public License for more details.
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  */
16 
17 #ifndef SSVSDIOBRIDGE_PUB_H
18 #define SSVSDIOBRIDGE_PUB_H
19 #include <linux/etherdevice.h>
20 #include <linux/device.h>
21 #include <linux/interrupt.h>
22 #include <linux/leds.h>
23 #include <linux/completion.h>
24 #include <linux/ioctl.h>
25 #include <linux/types.h>
26 struct ssv_sdiobridge_cmd {
27     __u32 in_data_len;
28     u8* in_data;
29 #ifndef __x86_64
30     __u32 padding1;
31 #endif
32     __u32 out_data_len;
33     u8* out_data;
34 #ifndef __x86_64
35         __u32 padding2;
36 #endif
37     __u32 response;
38 }__attribute__((packed));
39 #define FILE_DEVICE_SSVSDIO MMC_BLOCK_MAJOR
40 #define FILE_DEVICE_SSVSDIO_SEQ 0x50
41 #define FILE_DEVICE_SSVSDIO_NAME "ssvsdiobridge"
42 #if 0
43 #define IOCTL_SSVSDIO_GET_DRIVER_VERSION \
44  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x01, struct ssv_sdiobridge_cmd)
45 #define IOCTL_SSVSDIO_GET_FUNCTION_NUMBER \
46  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x02, struct ssv_sdiobridge_cmd)
47 #endif
48 #define IOCTL_SSVSDIO_GET_FUNCTION_FOCUS \
49  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x03, struct ssv_sdiobridge_cmd)
50 #define IOCTL_SSVSDIO_SET_FUNCTION_FOCUS \
51  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x04, struct ssv_sdiobridge_cmd)
52 #define IOCTL_SSVSDIO_GET_BUS_WIDTH \
53  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x05, struct ssv_sdiobridge_cmd)
54 #define IOCTL_SSVSDIO_SET_BUS_WIDTH \
55  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x06, struct ssv_sdiobridge_cmd)
56 #define IOCTL_SSVSDIO_GET_BUS_CLOCK \
57  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x07, struct ssv_sdiobridge_cmd)
58 #define IOCTL_SSVSDIO_SET_BUS_CLOCK \
59  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x08, struct ssv_sdiobridge_cmd)
60 #if 0
61 #define IOCTL_SSVSDIO_GET_BLOCK_MODE \
62  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x09, struct ssv_sdiobridge_cmd)
63 #define IOCTL_SSVSDIO_SET_BLOCK_MODE \
64  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x0a, struct ssv_sdiobridge_cmd)
65 #endif
66 #define IOCTL_SSVSDIO_GET_BLOCKLEN \
67  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x0b, struct ssv_sdiobridge_cmd)
68 #define IOCTL_SSVSDIO_SET_BLOCKLEN \
69  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x0c, struct ssv_sdiobridge_cmd)
70 #if 0
71 #define IOCTL_SSVSDIO_GET_FN0_BLOCKLEN \
72  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x0d, struct ssv_sdiobridge_cmd)
73 #define IOCTL_SSVSDIO_SET_FN0_BLOCKLEN \
74  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x0e, struct ssv_sdiobridge_cmd)
75 #define IOCTL_SSVSDIO_GET_BUS_INTERFACE_CONTROL \
76  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x0f, struct ssv_sdiobridge_cmd)
77 #define IOCTL_SSVSDIO_SET_BUS_INTERFACE_CONTROL \
78  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x10, struct ssv_sdiobridge_cmd)
79 #define IOCTL_SSVSDIO_GET_INT_ENABLE \
80  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x11, struct ssv_sdiobridge_cmd)
81 #define IOCTL_SSVSDIO_SET_INT_ENABLE \
82  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x12, struct ssv_sdiobridge_cmd)
83 #define IOCTL_SSVSDIO_GET_AUTO_ACK_INT \
84  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x13, struct ssv_sdiobridge_cmd)
85 #define IOCTL_SSVSDIO_SET_AUTO_ACK_INT \
86  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x14, struct ssv_sdiobridge_cmd)
87 #define IOCTL_SSVSDIO_ACK_INT \
88  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x15, struct ssv_sdiobridge_cmd)
89 #endif
90 #define IOCTL_SSVSDIO_READ_BYTE \
91  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x16, struct ssv_sdiobridge_cmd)
92 #define IOCTL_SSVSDIO_WRITE_BYTE \
93  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x17, struct ssv_sdiobridge_cmd)
94 #define IOCTL_SSVSDIO_GET_MULTI_BYTE_IO_PORT \
95  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x18, struct ssv_sdiobridge_cmd)
96 #define IOCTL_SSVSDIO_SET_MULTI_BYTE_IO_PORT \
97  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x19, struct ssv_sdiobridge_cmd)
98 #define IOCTL_SSVSDIO_READ_MULTI_BYTE \
99  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x1a, struct ssv_sdiobridge_cmd)
100 #define IOCTL_SSVSDIO_WRITE_MULTI_BYTE \
101  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x1b, struct ssv_sdiobridge_cmd)
102 #define IOCTL_SSVSDIO_GET_MULTI_BYTE_REG_IO_PORT \
103  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x1c, struct ssv_sdiobridge_cmd)
104 #define IOCTL_SSVSDIO_SET_MULTI_BYTE_REG_IO_PORT \
105  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x1d, struct ssv_sdiobridge_cmd)
106 #define IOCTL_SSVSDIO_READ_REG \
107  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x1e, struct ssv_sdiobridge_cmd)
108 #define IOCTL_SSVSDIO_WRITE_REG \
109  _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x1f, struct ssv_sdiobridge_cmd)
110 #define IOCTL_SSVSDIO_READ_DATA \
111     _IOWR( FILE_DEVICE_SSVSDIO, FILE_DEVICE_SSVSDIO_SEQ+0x20, struct ssv_sdiobridge_cmd)
112 #endif
113