@@ -48,48 +48,6 @@ struct testunit_data {
4848
4949static char tu_version_info [] = "v" UTS_RELEASE "\n\0" ;
5050
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-
9351static int i2c_slave_testunit_slave_cb (struct i2c_client * client ,
9452 enum i2c_slave_event event , u8 * val )
9553{
@@ -166,6 +124,48 @@ static int i2c_slave_testunit_slave_cb(struct i2c_client *client,
166124 return ret ;
167125}
168126
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+
169169static int i2c_slave_testunit_probe (struct i2c_client * client )
170170{
171171 struct testunit_data * tu ;
0 commit comments