On 2012-09-18 11:53, Mauro Carvalho Chehab wrote:
Em 16-09-2012 05:48, Anders Thomson escreveu:
> It doesn't make any difference though :-( I still have the layer of noise...
That's weird. Hmm... perhaps priv->cfg.config is being initialized
latter. Maybe you can then do, instead:
return -EREMOTEIO;
}
+ priv->cfg.switch_addr = priv->i2c_props.addr;
if ((data == 0x83) || (data == 0x84)) {
priv->ver |= TDA18271;
tda829x_tda18271_config.config = priv->cfg.config;
No dice:
$ git diff | cat
diff --git a/drivers/media/common/tuners/tda8290.c
b/drivers/media/common/tuners/tda8290.c
index 8c48521..16d7ff7 100644
--- a/drivers/media/common/tuners/tda8290.c
+++ b/drivers/media/common/tuners/tda8290.c
@@ -627,6 +627,9 @@ static int tda829x_find_tuner(struct dvb_frontend *fe)
return -EREMOTEIO;
}
+ tuner_info("ANDERS: old priv->cfg.switch_addr %x\n",
priv->cfg.switch_addr);
+ priv->cfg.switch_addr = priv->i2c_props.addr;
+ tuner_info("ANDERS: new priv->cfg.switch_addr %x\n",
priv->cfg.switch_addr);
if ((data == 0x83) || (data == 0x84)) {
priv->ver |= TDA18271;
tda829x_tda18271_config.config = priv->cfg.config;
@@ -640,7 +643,6 @@ static int tda829x_find_tuner(struct dvb_frontend *fe)
dvb_attach(tda827x_attach, fe, priv->tda827x_addr,
priv->i2c_props.adap, &priv->cfg);
- priv->cfg.switch_addr = priv->i2c_props.addr;
}
if (fe->ops.tuner_ops.init)
fe->ops.tuner_ops.init(fe);
anders@tv /usr/src/linux $ dmesg | grep ANDERS
[ 5.667022] tda829x 4-004b: ANDERS: old priv->cfg.switch_addr 0
[ 5.667025] tda829x 4-004b: ANDERS: new priv->cfg.switch_addr 4b
Whereas to work, I need:
anders@tv /usr/src/linux $ grep ANDERS /3.3.8-d.patched
[ 6.565254] tda829x 5-004b: ANDERS: setting switch_addr. was 0x00,
new 0x4b
[ 6.565265] tda829x 5-004b: ANDERS: new 0x61
The right data should come from some i2d property I gather...
Is there any i2c CONFIG I need to have enabled to have this working
automagically?
here's what I have:
$ zgrep I2C /proc/config.gz
# CONFIG_BMP085_I2C is not set
CONFIG_SENSORS_LIS3_I2C=y
# CONFIG_MOUSE_SYNAPTICS_I2C is not set
CONFIG_I2C=y
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_COMPAT=y
CONFIG_I2C_CHARDEV=m
# CONFIG_I2C_MUX is not set
CONFIG_I2C_HELPER_AUTO=y
CONFIG_I2C_SMBUS=m
CONFIG_I2C_ALGOBIT=y
# I2C Hardware Bus support
CONFIG_I2C_ALI1535=m
CONFIG_I2C_ALI1563=m
CONFIG_I2C_ALI15X3=m
CONFIG_I2C_AMD756=m
CONFIG_I2C_AMD756_S4882=m
CONFIG_I2C_AMD8111=m
CONFIG_I2C_I801=m
# CONFIG_I2C_ISCH is not set
CONFIG_I2C_PIIX4=m
CONFIG_I2C_NFORCE2=m
# CONFIG_I2C_NFORCE2_S4985 is not set
CONFIG_I2C_SIS5595=m
CONFIG_I2C_SIS630=m
CONFIG_I2C_SIS96X=m
CONFIG_I2C_VIA=m
CONFIG_I2C_VIAPRO=m
CONFIG_I2C_SCMI=m
# I2C system bus drivers (mostly embedded / system-on-chip)
# CONFIG_I2C_DESIGNWARE_PCI is not set
# CONFIG_I2C_EG20T is not set
# CONFIG_I2C_INTEL_MID is not set
CONFIG_I2C_OCORES=m
# CONFIG_I2C_PCA_PLATFORM is not set
# CONFIG_I2C_PXA_PCI is not set
CONFIG_I2C_SIMTEC=m
# CONFIG_I2C_XILINX is not set
# External I2C/SMBus adapter drivers
# CONFIG_I2C_DIOLAN_U2C is not set
CONFIG_I2C_PARPORT=m
CONFIG_I2C_PARPORT_LIGHT=m
CONFIG_I2C_TAOS_EVM=m
CONFIG_I2C_TINY_USB=m
# Other I2C/SMBus bus drivers
CONFIG_I2C_STUB=m
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_MFD_DA9052_I2C is not set
# CONFIG_MFD_WM831X_I2C is not set
# CONFIG_MFD_WM8350_I2C is not set
# CONFIG_MFD_MC13XXX_I2C is not set
CONFIG_VIDEO_IR_I2C=m
# CONFIG_I2C_SI4713 is not set
# I2C encoder or helper chips
# CONFIG_DRM_I2C_CH7006 is not set
# CONFIG_DRM_I2C_SIL164 is not set
CONFIG_FB_RADEON_I2C=y
# I2C RTC drivers
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html