4848
4949#define BUS_IDLE_TIMEOUT 20
5050#define PCH_I2CCTL_I2CMEN 0x0080
51- #define TEN_BIT_ADDR_DEFAULT 0xF000
52- #define TEN_BIT_ADDR_MASK 0xF0
5351#define PCH_START 0x0020
5452#define PCH_RESTART 0x0004
5553#define PCH_ESR_START 0x0001
5856#define PCH_ACK 0x0008
5957#define PCH_GETACK 0x0001
6058#define CLR_REG 0x0
61- #define I2C_RD 0x1
6259#define I2CMCF_BIT 0x0080
6360#define I2CMIF_BIT 0x0002
6461#define I2CMAL_BIT 0x0010
7673#define I2CMBB_BIT 0x0020
7774#define BUFFER_MODE_MASK (I2CBMFI_BIT | I2CBMAL_BIT | I2CBMNA_BIT | \
7875 I2CBMTO_BIT | I2CBMIS_BIT)
79- #define I2C_ADDR_MSK 0xFF
80- #define I2C_MSB_2B_MSK 0x300
8176#define FAST_MODE_CLK 400
8277#define FAST_MODE_EN 0x0001
8378#define SUB_ADDR_LEN_MAX 4
@@ -371,16 +366,12 @@ static s32 pch_i2c_writebytes(struct i2c_adapter *i2c_adap,
371366 struct i2c_algo_pch_data * adap = i2c_adap -> algo_data ;
372367 u8 * buf ;
373368 u32 length ;
374- u32 addr ;
375- u32 addr_2_msb ;
376- u32 addr_8_lsb ;
377369 s32 wrcount ;
378370 s32 rtn ;
379371 void __iomem * p = adap -> pch_base_address ;
380372
381373 length = msgs -> len ;
382374 buf = msgs -> buf ;
383- addr = msgs -> addr ;
384375
385376 /* enable master tx */
386377 pch_setbit (adap -> pch_base_address , PCH_I2CCTL , I2C_TX_MODE );
@@ -394,17 +385,15 @@ static s32 pch_i2c_writebytes(struct i2c_adapter *i2c_adap,
394385 }
395386
396387 if (msgs -> flags & I2C_M_TEN ) {
397- addr_2_msb = ((addr & I2C_MSB_2B_MSK ) >> 7 ) & 0x06 ;
398- iowrite32 (addr_2_msb | TEN_BIT_ADDR_MASK , p + PCH_I2CDR );
388+ iowrite32 (i2c_10bit_addr_hi_from_msg (msgs ), p + PCH_I2CDR );
399389 if (first )
400390 pch_i2c_start (adap );
401391
402392 rtn = pch_i2c_wait_for_check_xfer (adap );
403393 if (rtn )
404394 return rtn ;
405395
406- addr_8_lsb = (addr & I2C_ADDR_MSK );
407- iowrite32 (addr_8_lsb , p + PCH_I2CDR );
396+ iowrite32 (i2c_10bit_addr_lo_from_msg (msgs ), p + PCH_I2CDR );
408397 } else {
409398 /* set 7 bit slave address and R/W bit as 0 */
410399 iowrite32 (i2c_8bit_addr_from_msg (msgs ), p + PCH_I2CDR );
@@ -490,15 +479,11 @@ static s32 pch_i2c_readbytes(struct i2c_adapter *i2c_adap, struct i2c_msg *msgs,
490479 u8 * buf ;
491480 u32 count ;
492481 u32 length ;
493- u32 addr ;
494- u32 addr_2_msb ;
495- u32 addr_8_lsb ;
496482 void __iomem * p = adap -> pch_base_address ;
497483 s32 rtn ;
498484
499485 length = msgs -> len ;
500486 buf = msgs -> buf ;
501- addr = msgs -> addr ;
502487
503488 /* enable master reception */
504489 pch_clrbit (adap -> pch_base_address , PCH_I2CCTL , I2C_TX_MODE );
@@ -509,26 +494,23 @@ static s32 pch_i2c_readbytes(struct i2c_adapter *i2c_adap, struct i2c_msg *msgs,
509494 }
510495
511496 if (msgs -> flags & I2C_M_TEN ) {
512- addr_2_msb = ((addr & I2C_MSB_2B_MSK ) >> 7 );
513- iowrite32 (addr_2_msb | TEN_BIT_ADDR_MASK , p + PCH_I2CDR );
497+ iowrite32 (i2c_10bit_addr_hi_from_msg (msgs ) & ~I2C_M_RD , p + PCH_I2CDR );
514498 if (first )
515499 pch_i2c_start (adap );
516500
517501 rtn = pch_i2c_wait_for_check_xfer (adap );
518502 if (rtn )
519503 return rtn ;
520504
521- addr_8_lsb = (addr & I2C_ADDR_MSK );
522- iowrite32 (addr_8_lsb , p + PCH_I2CDR );
505+ iowrite32 (i2c_10bit_addr_lo_from_msg (msgs ), p + PCH_I2CDR );
523506
524507 pch_i2c_restart (adap );
525508
526509 rtn = pch_i2c_wait_for_check_xfer (adap );
527510 if (rtn )
528511 return rtn ;
529512
530- addr_2_msb |= I2C_RD ;
531- iowrite32 (addr_2_msb | TEN_BIT_ADDR_MASK , p + PCH_I2CDR );
513+ iowrite32 (i2c_10bit_addr_hi_from_msg (msgs ), p + PCH_I2CDR );
532514 } else {
533515 /* 7 address bits + R/W bit */
534516 iowrite32 (i2c_8bit_addr_from_msg (msgs ), p + PCH_I2CDR );
0 commit comments