[2/2] Revert "[media] saa7164: Improvements for I2C handling"
Commit Message
This reverts commit ad90b6b0f10566d4a5546e27fe455ce3b5e6b6c7.
This patch breaks I2C communication towards Si2168. After reverting and
applying the other patch in this series the I2C communication is
correct.
Signed-off-by: Olli Salonen <olli.salonen@iki.fi>
---
drivers/media/pci/saa7164/saa7164-api.c | 11 +----------
1 file changed, 1 insertion(+), 10 deletions(-)
Comments
On 06/06/2015 10:44 AM, Olli Salonen wrote:
> This reverts commit ad90b6b0f10566d4a5546e27fe455ce3b5e6b6c7.
>
> This patch breaks I2C communication towards Si2168. After reverting and
> applying the other patch in this series the I2C communication is
> correct.
>
> Signed-off-by: Olli Salonen <olli.salonen@iki.fi>
Reviewed-by: Antti Palosaari <crope@iki.fi>
Antti
> ---
> drivers/media/pci/saa7164/saa7164-api.c | 11 +----------
> 1 file changed, 1 insertion(+), 10 deletions(-)
>
> diff --git a/drivers/media/pci/saa7164/saa7164-api.c b/drivers/media/pci/saa7164/saa7164-api.c
> index e807703..e7e586c 100644
> --- a/drivers/media/pci/saa7164/saa7164-api.c
> +++ b/drivers/media/pci/saa7164/saa7164-api.c
> @@ -1385,8 +1385,7 @@ int saa7164_api_i2c_read(struct saa7164_i2c *bus, u8 addr, u32 reglen, u8 *reg,
> * 08... register address
> */
> memset(buf, 0, sizeof(buf));
> - if (reg)
> - memcpy((buf + 2 * sizeof(u32) + 0), reg, reglen);
> + memcpy((buf + 2 * sizeof(u32) + 0), reg, reglen);
> *((u32 *)(buf + 0 * sizeof(u32))) = reglen;
> *((u32 *)(buf + 1 * sizeof(u32))) = datalen;
>
> @@ -1475,14 +1474,6 @@ int saa7164_api_i2c_write(struct saa7164_i2c *bus, u8 addr, u32 datalen,
> * 04-07 dest bytes to write
> * 08... register address
> */
> - if (datalen == 1) {
> - /* Workaround for issues with i2c components
> - * that issue writes with no data. IE: SI2168/2157
> - * Increase reglen by 1, strobe out an additional byte,
> - * ignored by SI2168/2157.
> - */
> - datalen++;
> - }
> *((u32 *)(buf + 0 * sizeof(u32))) = reglen;
> *((u32 *)(buf + 1 * sizeof(u32))) = datalen - reglen;
> memcpy((buf + 2 * sizeof(u32)), data, datalen);
>
On Sat, Jun 6, 2015 at 3:44 AM, Olli Salonen <olli.salonen@iki.fi> wrote:
> This reverts commit ad90b6b0f10566d4a5546e27fe455ce3b5e6b6c7.
>
> This patch breaks I2C communication towards Si2168. After reverting and
> applying the other patch in this series the I2C communication is
> correct.
Tested-By: Steven Toth <stoth@kernellabs.com>
Checked with a HVR-2205 and a HVR-2215, firmware loads as expected.
Thanks for chasing this down Olli.
@@ -1385,8 +1385,7 @@ int saa7164_api_i2c_read(struct saa7164_i2c *bus, u8 addr, u32 reglen, u8 *reg,
* 08... register address
*/
memset(buf, 0, sizeof(buf));
- if (reg)
- memcpy((buf + 2 * sizeof(u32) + 0), reg, reglen);
+ memcpy((buf + 2 * sizeof(u32) + 0), reg, reglen);
*((u32 *)(buf + 0 * sizeof(u32))) = reglen;
*((u32 *)(buf + 1 * sizeof(u32))) = datalen;
@@ -1475,14 +1474,6 @@ int saa7164_api_i2c_write(struct saa7164_i2c *bus, u8 addr, u32 datalen,
* 04-07 dest bytes to write
* 08... register address
*/
- if (datalen == 1) {
- /* Workaround for issues with i2c components
- * that issue writes with no data. IE: SI2168/2157
- * Increase reglen by 1, strobe out an additional byte,
- * ignored by SI2168/2157.
- */
- datalen++;
- }
*((u32 *)(buf + 0 * sizeof(u32))) = reglen;
*((u32 *)(buf + 1 * sizeof(u32))) = datalen - reglen;
memcpy((buf + 2 * sizeof(u32)), data, datalen);