summaryrefslogtreecommitdiffstats
path: root/drivers/media
diff options
context:
space:
mode:
authorMatthias Schwarzott <zzam@gentoo.org>2014-10-02 07:21:01 +0200
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>2014-10-30 20:38:36 +0100
commit8a0253481c4db5e0790de16748435dbc06b63e65 (patch)
treee6199ee405f1ed99ed6440941c9b392f8a8f415f /drivers/media
parent[media] cx231xx: remember status of i2c port_3 switch (diff)
downloadlinux-8a0253481c4db5e0790de16748435dbc06b63e65.tar.xz
linux-8a0253481c4db5e0790de16748435dbc06b63e65.zip
[media] cx231xx: let is_tuner check the real i2c port and not the i2c master number
Get used i2c port from bus_nr and status of port_3 switch. Signed-off-by: Matthias Schwarzott <zzam@gentoo.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/usb/cx231xx/cx231xx-i2c.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/media/usb/cx231xx/cx231xx-i2c.c b/drivers/media/usb/cx231xx/cx231xx-i2c.c
index af9180f3bf30..9ade3acbc877 100644
--- a/drivers/media/usb/cx231xx/cx231xx-i2c.c
+++ b/drivers/media/usb/cx231xx/cx231xx-i2c.c
@@ -54,10 +54,19 @@ do { \
} \
} while (0)
+static inline int get_real_i2c_port(struct cx231xx *dev, int bus_nr)
+{
+ if (bus_nr == 1)
+ return dev->port_3_switch_enabled ? I2C_1_MUX_3 : I2C_1_MUX_1;
+ return bus_nr;
+}
+
static inline bool is_tuner(struct cx231xx *dev, struct cx231xx_i2c *bus,
const struct i2c_msg *msg, int tuner_type)
{
- if (bus->nr != dev->board.tuner_i2c_master)
+ int i2c_port = get_real_i2c_port(dev, bus->nr);
+
+ if (i2c_port != dev->board.tuner_i2c_master)
return false;
if (msg->addr != dev->board.tuner_addr)