@@ -186,9 +186,9 @@ static int amd_ec_write(struct amd_smbus *smbus, unsigned char address,
186186#define AMD_SMB_PRTCL_PEC 0x80
187187
188188
189- static s32 amd8111_access (struct i2c_adapter * adap , u16 addr ,
189+ static s32 amd8111_access (struct i2c_adapter * adap , u16 addr ,
190190 unsigned short flags , char read_write , u8 command , int size ,
191- union i2c_smbus_data * data )
191+ union i2c_smbus_data * data )
192192{
193193 struct amd_smbus * smbus = adap -> algo_data ;
194194 unsigned char protocol , len , pec , temp [2 ];
@@ -199,130 +199,130 @@ static s32 amd8111_access(struct i2c_adapter * adap, u16 addr,
199199 pec = (flags & I2C_CLIENT_PEC ) ? AMD_SMB_PRTCL_PEC : 0 ;
200200
201201 switch (size ) {
202- case I2C_SMBUS_QUICK :
203- protocol |= AMD_SMB_PRTCL_QUICK ;
204- read_write = I2C_SMBUS_WRITE ;
205- break ;
206-
207- case I2C_SMBUS_BYTE :
208- if (read_write == I2C_SMBUS_WRITE ) {
209- status = amd_ec_write (smbus , AMD_SMB_CMD ,
210- command );
211- if (status )
212- return status ;
213- }
214- protocol |= AMD_SMB_PRTCL_BYTE ;
215- break ;
216-
217- case I2C_SMBUS_BYTE_DATA :
218- status = amd_ec_write (smbus , AMD_SMB_CMD , command );
202+ case I2C_SMBUS_QUICK :
203+ protocol |= AMD_SMB_PRTCL_QUICK ;
204+ read_write = I2C_SMBUS_WRITE ;
205+ break ;
206+
207+ case I2C_SMBUS_BYTE :
208+ if (read_write == I2C_SMBUS_WRITE ) {
209+ status = amd_ec_write (smbus , AMD_SMB_CMD ,
210+ command );
219211 if (status )
220212 return status ;
221- if (read_write == I2C_SMBUS_WRITE ) {
222- status = amd_ec_write (smbus , AMD_SMB_DATA ,
223- data -> byte );
224- if (status )
225- return status ;
226- }
227- protocol |= AMD_SMB_PRTCL_BYTE_DATA ;
228- break ;
213+ }
214+ protocol |= AMD_SMB_PRTCL_BYTE ;
215+ break ;
229216
230- case I2C_SMBUS_WORD_DATA :
231- status = amd_ec_write (smbus , AMD_SMB_CMD , command );
217+ case I2C_SMBUS_BYTE_DATA :
218+ status = amd_ec_write (smbus , AMD_SMB_CMD , command );
219+ if (status )
220+ return status ;
221+ if (read_write == I2C_SMBUS_WRITE ) {
222+ status = amd_ec_write (smbus , AMD_SMB_DATA ,
223+ data -> byte );
232224 if (status )
233225 return status ;
234- if (read_write == I2C_SMBUS_WRITE ) {
235- status = amd_ec_write (smbus , AMD_SMB_DATA ,
236- data -> word & 0xff );
237- if (status )
238- return status ;
239- status = amd_ec_write (smbus , AMD_SMB_DATA + 1 ,
240- data -> word >> 8 );
241- if (status )
242- return status ;
243- }
244- protocol |= AMD_SMB_PRTCL_WORD_DATA | pec ;
245- break ;
226+ }
227+ protocol |= AMD_SMB_PRTCL_BYTE_DATA ;
228+ break ;
246229
247- case I2C_SMBUS_BLOCK_DATA :
248- status = amd_ec_write (smbus , AMD_SMB_CMD , command );
249- if (status )
250- return status ;
251- if (read_write == I2C_SMBUS_WRITE ) {
252- len = min_t (u8 , data -> block [0 ],
253- I2C_SMBUS_BLOCK_MAX );
254- status = amd_ec_write (smbus , AMD_SMB_BCNT , len );
255- if (status )
256- return status ;
257- for (i = 0 ; i < len ; i ++ ) {
258- status =
259- amd_ec_write (smbus , AMD_SMB_DATA + i ,
260- data -> block [i + 1 ]);
261- if (status )
262- return status ;
263- }
264- }
265- protocol |= AMD_SMB_PRTCL_BLOCK_DATA | pec ;
266- break ;
267-
268- case I2C_SMBUS_I2C_BLOCK_DATA :
269- len = min_t (u8 , data -> block [0 ],
270- I2C_SMBUS_BLOCK_MAX );
271- status = amd_ec_write (smbus , AMD_SMB_CMD , command );
272- if (status )
273- return status ;
274- status = amd_ec_write (smbus , AMD_SMB_BCNT , len );
275- if (status )
276- return status ;
277- if (read_write == I2C_SMBUS_WRITE )
278- for (i = 0 ; i < len ; i ++ ) {
279- status =
280- amd_ec_write (smbus , AMD_SMB_DATA + i ,
281- data -> block [i + 1 ]);
282- if (status )
283- return status ;
284- }
285- protocol |= AMD_SMB_PRTCL_I2C_BLOCK_DATA ;
286- break ;
287-
288- case I2C_SMBUS_PROC_CALL :
289- status = amd_ec_write (smbus , AMD_SMB_CMD , command );
290- if (status )
291- return status ;
230+ case I2C_SMBUS_WORD_DATA :
231+ status = amd_ec_write (smbus , AMD_SMB_CMD , command );
232+ if (status )
233+ return status ;
234+ if (read_write == I2C_SMBUS_WRITE ) {
292235 status = amd_ec_write (smbus , AMD_SMB_DATA ,
293- data -> word & 0xff );
236+ data -> word & 0xff );
294237 if (status )
295238 return status ;
296239 status = amd_ec_write (smbus , AMD_SMB_DATA + 1 ,
297- data -> word >> 8 );
240+ data -> word >> 8 );
298241 if (status )
299242 return status ;
300- protocol = AMD_SMB_PRTCL_PROC_CALL | pec ;
301- read_write = I2C_SMBUS_READ ;
302- break ;
243+ }
244+ protocol |= AMD_SMB_PRTCL_WORD_DATA | pec ;
245+ break ;
303246
304- case I2C_SMBUS_BLOCK_PROC_CALL :
247+ case I2C_SMBUS_BLOCK_DATA :
248+ status = amd_ec_write (smbus , AMD_SMB_CMD , command );
249+ if (status )
250+ return status ;
251+ if (read_write == I2C_SMBUS_WRITE ) {
305252 len = min_t (u8 , data -> block [0 ],
306- I2C_SMBUS_BLOCK_MAX - 1 );
307- status = amd_ec_write (smbus , AMD_SMB_CMD , command );
308- if (status )
309- return status ;
253+ I2C_SMBUS_BLOCK_MAX );
310254 status = amd_ec_write (smbus , AMD_SMB_BCNT , len );
311255 if (status )
312256 return status ;
313257 for (i = 0 ; i < len ; i ++ ) {
314- status = amd_ec_write (smbus , AMD_SMB_DATA + i ,
315- data -> block [i + 1 ]);
258+ status =
259+ amd_ec_write (smbus , AMD_SMB_DATA + i ,
260+ data -> block [i + 1 ]);
316261 if (status )
317262 return status ;
318263 }
319- protocol = AMD_SMB_PRTCL_BLOCK_PROC_CALL | pec ;
320- read_write = I2C_SMBUS_READ ;
321- break ;
264+ }
265+ protocol |= AMD_SMB_PRTCL_BLOCK_DATA | pec ;
266+ break ;
267+
268+ case I2C_SMBUS_I2C_BLOCK_DATA :
269+ len = min_t (u8 , data -> block [0 ],
270+ I2C_SMBUS_BLOCK_MAX );
271+ status = amd_ec_write (smbus , AMD_SMB_CMD , command );
272+ if (status )
273+ return status ;
274+ status = amd_ec_write (smbus , AMD_SMB_BCNT , len );
275+ if (status )
276+ return status ;
277+ if (read_write == I2C_SMBUS_WRITE )
278+ for (i = 0 ; i < len ; i ++ ) {
279+ status =
280+ amd_ec_write (smbus , AMD_SMB_DATA + i ,
281+ data -> block [i + 1 ]);
282+ if (status )
283+ return status ;
284+ }
285+ protocol |= AMD_SMB_PRTCL_I2C_BLOCK_DATA ;
286+ break ;
322287
323- default :
324- dev_warn (& adap -> dev , "Unsupported transaction %d\n" , size );
325- return - EOPNOTSUPP ;
288+ case I2C_SMBUS_PROC_CALL :
289+ status = amd_ec_write (smbus , AMD_SMB_CMD , command );
290+ if (status )
291+ return status ;
292+ status = amd_ec_write (smbus , AMD_SMB_DATA ,
293+ data -> word & 0xff );
294+ if (status )
295+ return status ;
296+ status = amd_ec_write (smbus , AMD_SMB_DATA + 1 ,
297+ data -> word >> 8 );
298+ if (status )
299+ return status ;
300+ protocol = AMD_SMB_PRTCL_PROC_CALL | pec ;
301+ read_write = I2C_SMBUS_READ ;
302+ break ;
303+
304+ case I2C_SMBUS_BLOCK_PROC_CALL :
305+ len = min_t (u8 , data -> block [0 ],
306+ I2C_SMBUS_BLOCK_MAX - 1 );
307+ status = amd_ec_write (smbus , AMD_SMB_CMD , command );
308+ if (status )
309+ return status ;
310+ status = amd_ec_write (smbus , AMD_SMB_BCNT , len );
311+ if (status )
312+ return status ;
313+ for (i = 0 ; i < len ; i ++ ) {
314+ status = amd_ec_write (smbus , AMD_SMB_DATA + i ,
315+ data -> block [i + 1 ]);
316+ if (status )
317+ return status ;
318+ }
319+ protocol = AMD_SMB_PRTCL_BLOCK_PROC_CALL | pec ;
320+ read_write = I2C_SMBUS_READ ;
321+ break ;
322+
323+ default :
324+ dev_warn (& adap -> dev , "Unsupported transaction %d\n" , size );
325+ return - EOPNOTSUPP ;
326326 }
327327
328328 status = amd_ec_write (smbus , AMD_SMB_ADDR , addr << 1 );
@@ -357,40 +357,40 @@ static s32 amd8111_access(struct i2c_adapter * adap, u16 addr,
357357 return 0 ;
358358
359359 switch (size ) {
360- case I2C_SMBUS_BYTE :
361- case I2C_SMBUS_BYTE_DATA :
362- status = amd_ec_read (smbus , AMD_SMB_DATA , & data -> byte );
363- if (status )
364- return status ;
365- break ;
360+ case I2C_SMBUS_BYTE :
361+ case I2C_SMBUS_BYTE_DATA :
362+ status = amd_ec_read (smbus , AMD_SMB_DATA , & data -> byte );
363+ if (status )
364+ return status ;
365+ break ;
366366
367- case I2C_SMBUS_WORD_DATA :
368- case I2C_SMBUS_PROC_CALL :
369- status = amd_ec_read (smbus , AMD_SMB_DATA , temp + 0 );
370- if (status )
371- return status ;
372- status = amd_ec_read (smbus , AMD_SMB_DATA + 1 , temp + 1 );
373- if (status )
374- return status ;
375- data -> word = (temp [1 ] << 8 ) | temp [0 ];
376- break ;
367+ case I2C_SMBUS_WORD_DATA :
368+ case I2C_SMBUS_PROC_CALL :
369+ status = amd_ec_read (smbus , AMD_SMB_DATA , temp + 0 );
370+ if (status )
371+ return status ;
372+ status = amd_ec_read (smbus , AMD_SMB_DATA + 1 , temp + 1 );
373+ if (status )
374+ return status ;
375+ data -> word = (temp [1 ] << 8 ) | temp [0 ];
376+ break ;
377377
378- case I2C_SMBUS_BLOCK_DATA :
379- case I2C_SMBUS_BLOCK_PROC_CALL :
380- status = amd_ec_read (smbus , AMD_SMB_BCNT , & len );
378+ case I2C_SMBUS_BLOCK_DATA :
379+ case I2C_SMBUS_BLOCK_PROC_CALL :
380+ status = amd_ec_read (smbus , AMD_SMB_BCNT , & len );
381+ if (status )
382+ return status ;
383+ len = min_t (u8 , len , I2C_SMBUS_BLOCK_MAX );
384+ fallthrough ;
385+ case I2C_SMBUS_I2C_BLOCK_DATA :
386+ for (i = 0 ; i < len ; i ++ ) {
387+ status = amd_ec_read (smbus , AMD_SMB_DATA + i ,
388+ data -> block + i + 1 );
381389 if (status )
382390 return status ;
383- len = min_t (u8 , len , I2C_SMBUS_BLOCK_MAX );
384- fallthrough ;
385- case I2C_SMBUS_I2C_BLOCK_DATA :
386- for (i = 0 ; i < len ; i ++ ) {
387- status = amd_ec_read (smbus , AMD_SMB_DATA + i ,
388- data -> block + i + 1 );
389- if (status )
390- return status ;
391- }
392- data -> block [0 ] = len ;
393- break ;
391+ }
392+ data -> block [0 ] = len ;
393+ break ;
394394 }
395395
396396 return 0 ;
0 commit comments