This source file includes following definitions.
- qcafrm_fsm_init_spi
- qcafrm_fsm_init_uart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 #ifndef _QCA_FRAMING_H
25 #define _QCA_FRAMING_H
26
27 #include <linux/if_ether.h>
28 #include <linux/if_vlan.h>
29 #include <linux/types.h>
30
31
32 #define QCAFRM_GATHER 0
33
34
35 #define QCAFRM_NOHEAD (QCAFRM_ERR_BASE - 1)
36
37
38 #define QCAFRM_NOTAIL (QCAFRM_ERR_BASE - 2)
39
40
41 #define QCAFRM_INVLEN (QCAFRM_ERR_BASE - 3)
42
43
44 #define QCAFRM_INVFRAME (QCAFRM_ERR_BASE - 4)
45
46
47 #define QCAFRM_MIN_MTU (ETH_ZLEN - ETH_HLEN)
48 #define QCAFRM_MAX_MTU ETH_DATA_LEN
49
50
51 #define QCAFRM_MIN_LEN (QCAFRM_MIN_MTU + ETH_HLEN)
52 #define QCAFRM_MAX_LEN (QCAFRM_MAX_MTU + VLAN_ETH_HLEN)
53
54
55 #define QCAFRM_HEADER_LEN 8
56
57
58 #define QCAFRM_FOOTER_LEN 2
59
60
61 #define QCAFRM_ERR_BASE -1000
62
63 enum qcafrm_state {
64
65 QCAFRM_HW_LEN0 = 0x8000,
66 QCAFRM_HW_LEN1 = QCAFRM_HW_LEN0 - 1,
67 QCAFRM_HW_LEN2 = QCAFRM_HW_LEN1 - 1,
68 QCAFRM_HW_LEN3 = QCAFRM_HW_LEN2 - 1,
69
70
71 QCAFRM_WAIT_AA1 = QCAFRM_HW_LEN3 - 1,
72
73
74 QCAFRM_WAIT_AA2 = QCAFRM_WAIT_AA1 - 1,
75
76
77 QCAFRM_WAIT_AA3 = QCAFRM_WAIT_AA2 - 1,
78
79
80 QCAFRM_WAIT_AA4 = QCAFRM_WAIT_AA3 - 1,
81
82
83 QCAFRM_WAIT_LEN_BYTE0 = QCAFRM_WAIT_AA4 - 1,
84 QCAFRM_WAIT_LEN_BYTE1 = QCAFRM_WAIT_AA4 - 2,
85
86
87 QCAFRM_WAIT_RSVD_BYTE1 = QCAFRM_WAIT_AA4 - 3,
88 QCAFRM_WAIT_RSVD_BYTE2 = QCAFRM_WAIT_AA4 - 4,
89
90
91
92
93
94 QCAFRM_WAIT_551 = 1,
95
96
97 QCAFRM_WAIT_552 = QCAFRM_WAIT_551 - 1
98 };
99
100
101
102 struct qcafrm_handle {
103
104 enum qcafrm_state state;
105
106 enum qcafrm_state init;
107
108
109 u16 offset;
110
111
112 u16 len;
113 };
114
115 u16 qcafrm_create_header(u8 *buf, u16 len);
116
117 u16 qcafrm_create_footer(u8 *buf);
118
119 static inline void qcafrm_fsm_init_spi(struct qcafrm_handle *handle)
120 {
121 handle->init = QCAFRM_HW_LEN0;
122 handle->state = handle->init;
123 }
124
125 static inline void qcafrm_fsm_init_uart(struct qcafrm_handle *handle)
126 {
127 handle->init = QCAFRM_WAIT_AA1;
128 handle->state = handle->init;
129 }
130
131
132
133
134
135
136
137
138
139
140
141
142 s32 qcafrm_fsm_decode(struct qcafrm_handle *handle, u8 *buf, u16 buf_len, u8 recv_byte);
143
144 #endif