diff mbox

[v2] drm/i2c: tda998x: Set the CEC I2C address based on the slave I2C address.

Message ID 545C835D.1050008@arm.com (mailing list archive)
State New, archived
Headers show

Commit Message

Andrew Jackson Nov. 7, 2014, 8:31 a.m. UTC
The I2C address for the TDA9989 and TDA19989 is fixed at 0x34
but the two LSBs of the TDA19988's address are set by two configuration
pins on the chip.  Irrespective of the chip, the associated CEC
peripheral's I2C address is based upon the main I2C address.

This patch avoids any special handling required to support
systems that contain multiple TDA19988 devices on the same
I2C bus.

Signed-off-by: Andrew Jackson <Andrew.Jackson@arm.com>
Signed-off-by: Liviu Dudau <Liviu.Dudau@arm.com>
---
 drivers/gpu/drm/i2c/tda998x_drv.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

Comments

Liviu Dudau Jan. 21, 2015, 6:44 p.m. UTC | #1
On Fri, Nov 07, 2014 at 08:31:25AM +0000, Andrew Jackson wrote:
> The I2C address for the TDA9989 and TDA19989 is fixed at 0x34
> but the two LSBs of the TDA19988's address are set by two configuration
> pins on the chip.  Irrespective of the chip, the associated CEC
> peripheral's I2C address is based upon the main I2C address.
> 
> This patch avoids any special handling required to support
> systems that contain multiple TDA19988 devices on the same
> I2C bus.
> 
> Signed-off-by: Andrew Jackson <Andrew.Jackson@arm.com>
> Signed-off-by: Liviu Dudau <Liviu.Dudau@arm.com>

Hi Andrew,

What is the status of this patch? Is it going to be pulled by anyone?

Best regards,
Liviu

> ---
>  drivers/gpu/drm/i2c/tda998x_drv.c |    5 ++++-
>  1 files changed, 4 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c b/drivers/gpu/drm/i2c/tda998x_drv.c
> index d476279..eeab17a 100644
> --- a/drivers/gpu/drm/i2c/tda998x_drv.c
> +++ b/drivers/gpu/drm/i2c/tda998x_drv.c
> @@ -1255,6 +1255,7 @@ static int tda998x_create(struct i2c_client *client, struct tda998x_priv *priv)
>  	struct device_node *np = client->dev.of_node;
>  	u32 video;
>  	int rev_lo, rev_hi, ret;
> +	unsigned short cec_addr;
>  
>  	priv->vip_cntrl_0 = VIP_CNTRL_0_SWAP_A(2) | VIP_CNTRL_0_SWAP_B(3);
>  	priv->vip_cntrl_1 = VIP_CNTRL_1_SWAP_C(0) | VIP_CNTRL_1_SWAP_D(1);
> @@ -1262,7 +1263,9 @@ static int tda998x_create(struct i2c_client *client, struct tda998x_priv *priv)
>  
>  	priv->current_page = 0xff;
>  	priv->hdmi = client;
> -	priv->cec = i2c_new_dummy(client->adapter, 0x34);
> +	/* CEC I2C address bound to TDA998x I2C addr by configuration pins */
> +	cec_addr = 0x34 + (client->addr & 0x03);
> +	priv->cec = i2c_new_dummy(client->adapter, cec_addr);
>  	if (!priv->cec)
>  		return -ENODEV;
>  
> -- 
> 1.7.1
>
Russell King - ARM Linux Jan. 21, 2015, 6:46 p.m. UTC | #2
On Wed, Jan 21, 2015 at 06:44:05PM +0000, Liviu Dudau wrote:
> On Fri, Nov 07, 2014 at 08:31:25AM +0000, Andrew Jackson wrote:
> > The I2C address for the TDA9989 and TDA19989 is fixed at 0x34
> > but the two LSBs of the TDA19988's address are set by two configuration
> > pins on the chip.  Irrespective of the chip, the associated CEC
> > peripheral's I2C address is based upon the main I2C address.
> > 
> > This patch avoids any special handling required to support
> > systems that contain multiple TDA19988 devices on the same
> > I2C bus.
> > 
> > Signed-off-by: Andrew Jackson <Andrew.Jackson@arm.com>
> > Signed-off-by: Liviu Dudau <Liviu.Dudau@arm.com>
> 
> Hi Andrew,
> 
> What is the status of this patch? Is it going to be pulled by anyone?

It's been sent to David.
Liviu Dudau Jan. 21, 2015, 7:15 p.m. UTC | #3
On Wed, Jan 21, 2015 at 06:46:58PM +0000, Russell King - ARM Linux wrote:
> On Wed, Jan 21, 2015 at 06:44:05PM +0000, Liviu Dudau wrote:
> > On Fri, Nov 07, 2014 at 08:31:25AM +0000, Andrew Jackson wrote:
> > > The I2C address for the TDA9989 and TDA19989 is fixed at 0x34
> > > but the two LSBs of the TDA19988's address are set by two configuration
> > > pins on the chip.  Irrespective of the chip, the associated CEC
> > > peripheral's I2C address is based upon the main I2C address.
> > > 
> > > This patch avoids any special handling required to support
> > > systems that contain multiple TDA19988 devices on the same
> > > I2C bus.
> > > 
> > > Signed-off-by: Andrew Jackson <Andrew.Jackson@arm.com>
> > > Signed-off-by: Liviu Dudau <Liviu.Dudau@arm.com>
> > 
> > Hi Andrew,
> > 
> > What is the status of this patch? Is it going to be pulled by anyone?
> 
> It's been sent to David.

Thanks, Russell!

Liviu

> 
> -- 
> FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up
> according to speedtest.net.
>
diff mbox

Patch

diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c b/drivers/gpu/drm/i2c/tda998x_drv.c
index d476279..eeab17a 100644
--- a/drivers/gpu/drm/i2c/tda998x_drv.c
+++ b/drivers/gpu/drm/i2c/tda998x_drv.c
@@ -1255,6 +1255,7 @@  static int tda998x_create(struct i2c_client *client, struct tda998x_priv *priv)
 	struct device_node *np = client->dev.of_node;
 	u32 video;
 	int rev_lo, rev_hi, ret;
+	unsigned short cec_addr;
 
 	priv->vip_cntrl_0 = VIP_CNTRL_0_SWAP_A(2) | VIP_CNTRL_0_SWAP_B(3);
 	priv->vip_cntrl_1 = VIP_CNTRL_1_SWAP_C(0) | VIP_CNTRL_1_SWAP_D(1);
@@ -1262,7 +1263,9 @@  static int tda998x_create(struct i2c_client *client, struct tda998x_priv *priv)
 
 	priv->current_page = 0xff;
 	priv->hdmi = client;
-	priv->cec = i2c_new_dummy(client->adapter, 0x34);
+	/* CEC I2C address bound to TDA998x I2C addr by configuration pins */
+	cec_addr = 0x34 + (client->addr & 0x03);
+	priv->cec = i2c_new_dummy(client->adapter, cec_addr);
 	if (!priv->cec)
 		return -ENODEV;