@@ -48,48 +48,6 @@ struct testunit_data {
48
48
49
49
static char tu_version_info [] = "v" UTS_RELEASE "\n\0" ;
50
50
51
- static void i2c_slave_testunit_work (struct work_struct * work )
52
- {
53
- struct testunit_data * tu = container_of (work , struct testunit_data , worker .work );
54
- struct i2c_msg msg ;
55
- u8 msgbuf [256 ];
56
- int ret = 0 ;
57
-
58
- msg .addr = I2C_CLIENT_END ;
59
- msg .buf = msgbuf ;
60
-
61
- switch (tu -> regs [TU_REG_CMD ]) {
62
- case TU_CMD_READ_BYTES :
63
- msg .addr = tu -> regs [TU_REG_DATAL ];
64
- msg .flags = I2C_M_RD ;
65
- msg .len = tu -> regs [TU_REG_DATAH ];
66
- break ;
67
-
68
- case TU_CMD_SMBUS_HOST_NOTIFY :
69
- msg .addr = 0x08 ;
70
- msg .flags = 0 ;
71
- msg .len = 3 ;
72
- msgbuf [0 ] = tu -> client -> addr ;
73
- msgbuf [1 ] = tu -> regs [TU_REG_DATAL ];
74
- msgbuf [2 ] = tu -> regs [TU_REG_DATAH ];
75
- break ;
76
-
77
- default :
78
- break ;
79
- }
80
-
81
- if (msg .addr != I2C_CLIENT_END ) {
82
- ret = i2c_transfer (tu -> client -> adapter , & msg , 1 );
83
- /* convert '0 msgs transferred' to errno */
84
- ret = (ret == 0 ) ? - EIO : ret ;
85
- }
86
-
87
- if (ret < 0 )
88
- dev_err (& tu -> client -> dev , "CMD%02X failed (%d)\n" , tu -> regs [TU_REG_CMD ], ret );
89
-
90
- clear_bit (TU_FLAG_IN_PROCESS , & tu -> flags );
91
- }
92
-
93
51
static int i2c_slave_testunit_slave_cb (struct i2c_client * client ,
94
52
enum i2c_slave_event event , u8 * val )
95
53
{
@@ -166,6 +124,48 @@ static int i2c_slave_testunit_slave_cb(struct i2c_client *client,
166
124
return ret ;
167
125
}
168
126
127
+ static void i2c_slave_testunit_work (struct work_struct * work )
128
+ {
129
+ struct testunit_data * tu = container_of (work , struct testunit_data , worker .work );
130
+ struct i2c_msg msg ;
131
+ u8 msgbuf [256 ];
132
+ int ret = 0 ;
133
+
134
+ msg .addr = I2C_CLIENT_END ;
135
+ msg .buf = msgbuf ;
136
+
137
+ switch (tu -> regs [TU_REG_CMD ]) {
138
+ case TU_CMD_READ_BYTES :
139
+ msg .addr = tu -> regs [TU_REG_DATAL ];
140
+ msg .flags = I2C_M_RD ;
141
+ msg .len = tu -> regs [TU_REG_DATAH ];
142
+ break ;
143
+
144
+ case TU_CMD_SMBUS_HOST_NOTIFY :
145
+ msg .addr = 0x08 ;
146
+ msg .flags = 0 ;
147
+ msg .len = 3 ;
148
+ msgbuf [0 ] = tu -> client -> addr ;
149
+ msgbuf [1 ] = tu -> regs [TU_REG_DATAL ];
150
+ msgbuf [2 ] = tu -> regs [TU_REG_DATAH ];
151
+ break ;
152
+
153
+ default :
154
+ break ;
155
+ }
156
+
157
+ if (msg .addr != I2C_CLIENT_END ) {
158
+ ret = i2c_transfer (tu -> client -> adapter , & msg , 1 );
159
+ /* convert '0 msgs transferred' to errno */
160
+ ret = (ret == 0 ) ? - EIO : ret ;
161
+ }
162
+
163
+ if (ret < 0 )
164
+ dev_err (& tu -> client -> dev , "CMD%02X failed (%d)\n" , tu -> regs [TU_REG_CMD ], ret );
165
+
166
+ clear_bit (TU_FLAG_IN_PROCESS , & tu -> flags );
167
+ }
168
+
169
169
static int i2c_slave_testunit_probe (struct i2c_client * client )
170
170
{
171
171
struct testunit_data * tu ;
0 commit comments