diff options
Diffstat (limited to 'drivers/staging/sm750fb/ddk750_hwi2c.c')
-rw-r--r-- | drivers/staging/sm750fb/ddk750_hwi2c.c | 109 |
1 files changed, 51 insertions, 58 deletions
diff --git a/drivers/staging/sm750fb/ddk750_hwi2c.c b/drivers/staging/sm750fb/ddk750_hwi2c.c index 5ddac430a..7be211128 100644 --- a/drivers/staging/sm750fb/ddk750_hwi2c.c +++ b/drivers/staging/sm750fb/ddk750_hwi2c.c @@ -8,9 +8,8 @@ #define MAX_HWI2C_FIFO 16 #define HWI2C_WAIT_TIMEOUT 0xF0000 - -int hwI2CInit( -unsigned char busSpeedMode +int sm750_hw_i2c_init( +unsigned char bus_speed_mode ) { unsigned int value; @@ -29,7 +28,7 @@ unsigned char busSpeedMode /* Enable the I2C Controller and set the bus speed mode */ value = PEEK32(I2C_CTRL); - if (busSpeedMode == 0) + if (bus_speed_mode == 0) value = FIELD_SET(value, I2C_CTRL, MODE, STANDARD); else value = FIELD_SET(value, I2C_CTRL, MODE, FAST); @@ -39,8 +38,7 @@ unsigned char busSpeedMode return 0; } - -void hwI2CClose(void) +void sm750_hw_i2c_close(void) { unsigned int value; @@ -59,14 +57,14 @@ void hwI2CClose(void) POKE32(GPIO_MUX, value); } - -static long hwI2CWaitTXDone(void) +static long hw_i2c_wait_tx_done(void) { unsigned int timeout; /* Wait until the transfer is completed. */ timeout = HWI2C_WAIT_TIMEOUT; - while ((FIELD_GET(PEEK32(I2C_STATUS), I2C_STATUS, TX) != I2C_STATUS_TX_COMPLETED) && + while ((FIELD_GET(PEEK32(I2C_STATUS), + I2C_STATUS, TX) != I2C_STATUS_TX_COMPLETED) && (timeout != 0)) timeout--; @@ -76,38 +74,39 @@ static long hwI2CWaitTXDone(void) return 0; } - - /* * This function writes data to the i2c slave device registers. * * Parameters: - * deviceAddress - i2c Slave device address + * addr - i2c Slave device address * length - Total number of bytes to be written to the device - * pBuffer - The buffer that contains the data to be written to the + * buf - The buffer that contains the data to be written to the * i2c device. * * Return Value: * Total number of bytes those are actually written. */ -static unsigned int hwI2CWriteData( - unsigned char deviceAddress, +static unsigned int hw_i2c_write_data( + unsigned char addr, unsigned int length, - unsigned char *pBuffer + unsigned char *buf ) { unsigned char count, i; - unsigned int totalBytes = 0; + unsigned int total_bytes = 0; /* Set the Device Address */ - POKE32(I2C_SLAVE_ADDRESS, deviceAddress & ~0x01); + POKE32(I2C_SLAVE_ADDRESS, addr & ~0x01); /* Write data. * Note: * Only 16 byte can be accessed per i2c start instruction. */ do { - /* Reset I2C by writing 0 to I2C_RESET register to clear the previous status. */ + /* + * Reset I2C by writing 0 to I2C_RESET register to + * clear the previous status. + */ POKE32(I2C_RESET, 0); /* Set the number of bytes to be written */ @@ -119,61 +118,62 @@ static unsigned int hwI2CWriteData( /* Move the data to the I2C data register */ for (i = 0; i <= count; i++) - POKE32(I2C_DATA0 + i, *pBuffer++); + POKE32(I2C_DATA0 + i, *buf++); /* Start the I2C */ - POKE32(I2C_CTRL, FIELD_SET(PEEK32(I2C_CTRL), I2C_CTRL, CTRL, START)); + POKE32(I2C_CTRL, + FIELD_SET(PEEK32(I2C_CTRL), I2C_CTRL, CTRL, START)); /* Wait until the transfer is completed. */ - if (hwI2CWaitTXDone() != 0) + if (hw_i2c_wait_tx_done() != 0) break; /* Substract length */ length -= (count + 1); /* Total byte written */ - totalBytes += (count + 1); + total_bytes += (count + 1); } while (length > 0); - return totalBytes; + return total_bytes; } - - - /* * This function reads data from the slave device and stores them * in the given buffer * * Parameters: - * deviceAddress - i2c Slave device address + * addr - i2c Slave device address * length - Total number of bytes to be read - * pBuffer - Pointer to a buffer to be filled with the data read + * buf - Pointer to a buffer to be filled with the data read * from the slave device. It has to be the same size as the * length to make sure that it can keep all the data read. * * Return Value: * Total number of actual bytes read from the slave device */ -static unsigned int hwI2CReadData( - unsigned char deviceAddress, +static unsigned int hw_i2c_read_data( + unsigned char addr, unsigned int length, - unsigned char *pBuffer + unsigned char *buf ) { unsigned char count, i; - unsigned int totalBytes = 0; + unsigned int total_bytes = 0; /* Set the Device Address */ - POKE32(I2C_SLAVE_ADDRESS, deviceAddress | 0x01); + POKE32(I2C_SLAVE_ADDRESS, addr | 0x01); /* Read data and save them to the buffer. * Note: * Only 16 byte can be accessed per i2c start instruction. */ do { - /* Reset I2C by writing 0 to I2C_RESET register to clear all the status. */ + /* + * Reset I2C by writing 0 to I2C_RESET register to + * clear all the status. + */ POKE32(I2C_RESET, 0); /* Set the number of bytes to be read */ @@ -184,30 +184,28 @@ static unsigned int hwI2CReadData( POKE32(I2C_BYTE_COUNT, count); /* Start the I2C */ - POKE32(I2C_CTRL, FIELD_SET(PEEK32(I2C_CTRL), I2C_CTRL, CTRL, START)); + POKE32(I2C_CTRL, + FIELD_SET(PEEK32(I2C_CTRL), I2C_CTRL, CTRL, START)); /* Wait until transaction done. */ - if (hwI2CWaitTXDone() != 0) + if (hw_i2c_wait_tx_done() != 0) break; /* Save the data to the given buffer */ for (i = 0; i <= count; i++) - *pBuffer++ = PEEK32(I2C_DATA0 + i); + *buf++ = PEEK32(I2C_DATA0 + i); /* Substract length by 16 */ length -= (count + 1); /* Number of bytes read. */ - totalBytes += (count + 1); + total_bytes += (count + 1); } while (length > 0); - return totalBytes; + return total_bytes; } - - - /* * This function reads the slave device's register * @@ -219,23 +217,19 @@ static unsigned int hwI2CReadData( * Return Value: * Register value */ -unsigned char hwI2CReadReg( - unsigned char deviceAddress, - unsigned char registerIndex +unsigned char sm750_hw_i2c_read_reg( + unsigned char addr, + unsigned char reg ) { unsigned char value = (0xFF); - if (hwI2CWriteData(deviceAddress, 1, ®isterIndex) == 1) - hwI2CReadData(deviceAddress, 1, &value); + if (hw_i2c_write_data(addr, 1, ®) == 1) + hw_i2c_read_data(addr, 1, &value); return value; } - - - - /* * This function writes a value to the slave device's register * @@ -249,21 +243,20 @@ unsigned char hwI2CReadReg( * 0 - Success * -1 - Fail */ -int hwI2CWriteReg( - unsigned char deviceAddress, - unsigned char registerIndex, +int sm750_hw_i2c_write_reg( + unsigned char addr, + unsigned char reg, unsigned char data ) { unsigned char value[2]; - value[0] = registerIndex; + value[0] = reg; value[1] = data; - if (hwI2CWriteData(deviceAddress, 2, value) == 2) + if (hw_i2c_write_data(addr, 2, value) == 2) return 0; return (-1); } - #endif |