Commit b71413e0 authored by Mike Rapoport's avatar Mike Rapoport Committed by Greg Kroah-Hartman

staging: sm750fb: use BIT macro for I2C_CTRL fields

Replace complex definition of I2C_CTRL register fields with BIT() macro and
use open-coded implementation for register manipulation
Signed-off-by: default avatarMike Rapoport <mike.rapoport@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent cdce1f18
......@@ -26,12 +26,10 @@ unsigned char bus_speed_mode
enableI2C(1);
/* Enable the I2C Controller and set the bus speed mode */
value = PEEK32(I2C_CTRL);
if (bus_speed_mode == 0)
value = FIELD_SET(value, I2C_CTRL, MODE, STANDARD);
else
value = FIELD_SET(value, I2C_CTRL, MODE, FAST);
value = FIELD_SET(value, I2C_CTRL, EN, ENABLE);
value = PEEK32(I2C_CTRL) & ~(I2C_CTRL_MODE | I2C_CTRL_EN);
if (bus_speed_mode)
value |= I2C_CTRL_MODE;
value |= I2C_CTRL_EN;
POKE32(I2C_CTRL, value);
return 0;
......@@ -42,8 +40,7 @@ void sm750_hw_i2c_close(void)
unsigned int value;
/* Disable I2C controller */
value = PEEK32(I2C_CTRL);
value = FIELD_SET(value, I2C_CTRL, EN, DISABLE);
value = PEEK32(I2C_CTRL) & ~I2C_CTRL_EN;
POKE32(I2C_CTRL, value);
/* Disable I2C Power */
......@@ -120,8 +117,7 @@ static unsigned int hw_i2c_write_data(
POKE32(I2C_DATA0 + i, *buf++);
/* Start the I2C */
POKE32(I2C_CTRL,
FIELD_SET(PEEK32(I2C_CTRL), I2C_CTRL, CTRL, START));
POKE32(I2C_CTRL, PEEK32(I2C_CTRL) | I2C_CTRL_CTRL);
/* Wait until the transfer is completed. */
if (hw_i2c_wait_tx_done() != 0)
......@@ -183,8 +179,7 @@ static unsigned int hw_i2c_read_data(
POKE32(I2C_BYTE_COUNT, count);
/* Start the I2C */
POKE32(I2C_CTRL,
FIELD_SET(PEEK32(I2C_CTRL), I2C_CTRL, CTRL, START));
POKE32(I2C_CTRL, PEEK32(I2C_CTRL) | I2C_CTRL_CTRL);
/* Wait until transaction done. */
if (hw_i2c_wait_tx_done() != 0)
......
......@@ -1605,21 +1605,11 @@
#define I2C_BYTE_COUNT_COUNT 3:0
#define I2C_CTRL 0x010041
#define I2C_CTRL_INT 4:4
#define I2C_CTRL_INT_DISABLE 0
#define I2C_CTRL_INT_ENABLE 1
#define I2C_CTRL_DIR 3:3
#define I2C_CTRL_DIR_WR 0
#define I2C_CTRL_DIR_RD 1
#define I2C_CTRL_CTRL 2:2
#define I2C_CTRL_CTRL_STOP 0
#define I2C_CTRL_CTRL_START 1
#define I2C_CTRL_MODE 1:1
#define I2C_CTRL_MODE_STANDARD 0
#define I2C_CTRL_MODE_FAST 1
#define I2C_CTRL_EN 0:0
#define I2C_CTRL_EN_DISABLE 0
#define I2C_CTRL_EN_ENABLE 1
#define I2C_CTRL_INT BIT(4)
#define I2C_CTRL_DIR BIT(3)
#define I2C_CTRL_CTRL BIT(2)
#define I2C_CTRL_MODE BIT(1)
#define I2C_CTRL_EN BIT(0)
#define I2C_STATUS 0x010042
#define I2C_STATUS_TX 3:3
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment