Re: [PATCH] mb86a20s: fix ISDB-T mode handling
Em Sat, 12 Jul 2014 21:52:46 +0300 Antti Palosaari cr...@iki.fi escreveu: Mauro, you have forgot some debug hacks to that patch. Thanks for noticing. Actually, it got merged by mistake with a hack I'm using to debug another driver. Just sent a version 2 of this patch. Regards, Mauro Antti On 07/12/2014 07:39 PM, Mauro Carvalho Chehab wrote: The driver was reporting an incorrect mode, when mode 2 is selected. While testing it, noticed that neither mode 1 or guard interval 1/32 is supported by this device. Document it, and ensure that it will report _AUTO when it doesn't lock, in order to not report a wrong detection to userspace. Cc: sta...@vger.kernel.org Signed-off-by: Mauro Carvalho Chehab m.che...@samsung.com --- drivers/media/dvb-frontends/dib0090.c | 6 +- drivers/media/dvb-frontends/mb86a20s.c | 9 + drivers/media/usb/dvb-usb/dib0700_devices.c | 3 +++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/drivers/media/dvb-frontends/dib0090.c b/drivers/media/dvb-frontends/dib0090.c index 68e2af2650d3..27d5c5cd439c 100644 --- a/drivers/media/dvb-frontends/dib0090.c +++ b/drivers/media/dvb-frontends/dib0090.c @@ -24,6 +24,8 @@ * */ +#define DEBUG_AGC + #include linux/kernel.h #include linux/slab.h #include linux/i2c.h @@ -1199,11 +1201,13 @@ int dib0090_gain_control(struct dvb_frontend *fe) state-rf_gain_limit = state-rf_ramp[0] WBD_ALPHA; state-current_gain = ((state-rf_ramp[0] + state-bb_ramp[0]) / 2) GAIN_ALPHA; +dprintk(Current gain: %d\n, state-current_gain); + *tune_state = CT_AGC_STEP_0; } else if (!state-agc_freeze) { s16 wbd = 0, i, cnt; - int adc; + int adc = 0; wbd_val = dib0090_get_slow_adc_val(state); if (*tune_state == CT_AGC_STEP_0) diff --git a/drivers/media/dvb-frontends/mb86a20s.c b/drivers/media/dvb-frontends/mb86a20s.c index 227a420f7069..b931179c70a4 100644 --- a/drivers/media/dvb-frontends/mb86a20s.c +++ b/drivers/media/dvb-frontends/mb86a20s.c @@ -711,11 +711,10 @@ static int mb86a20s_get_frontend(struct dvb_frontend *fe) rc = mb86a20s_readreg(state, 0x07); if (rc 0) return rc; + c-transmission_mode = TRANSMISSION_MODE_AUTO; if ((rc 0x60) == 0x20) { - switch (rc 0x0c 2) { - case 0: - c-transmission_mode = TRANSMISSION_MODE_2K; - break; + /* Only modes 2 and 3 are supported */ + switch ((rc 2) 0x03) { case 1: c-transmission_mode = TRANSMISSION_MODE_4K; break; @@ -724,7 +723,9 @@ static int mb86a20s_get_frontend(struct dvb_frontend *fe) break; } } + c-guard_interval = GUARD_INTERVAL_AUTO; if (!(rc 0x10)) { + /* Guard interval 1/32 is not supported */ switch (rc 0x3) { case 0: c-guard_interval = GUARD_INTERVAL_1_4; diff --git a/drivers/media/usb/dvb-usb/dib0700_devices.c b/drivers/media/usb/dvb-usb/dib0700_devices.c index 501947eaacfe..cad359fcd690 100644 --- a/drivers/media/usb/dvb-usb/dib0700_devices.c +++ b/drivers/media/usb/dvb-usb/dib0700_devices.c @@ -1645,6 +1645,8 @@ static int dib8096_set_param_override(struct dvb_frontend *fe) int ret = 0; enum frontend_tune_state tune_state = CT_SHUTDOWN; +printk(%s called.\n, __func__); + switch (band) { default: deb_info(Warning : Rf frequency (%iHz) is not in the supported range, using VHF switch , fe-dtv_property_cache.frequency); @@ -1714,6 +1716,7 @@ static int dib8096_set_param_override(struct dvb_frontend *fe) } else { /* for everything else than CBAND we are using standard AGC */ deb_info(not tuning in CBAND - standard AGC startup\n); +printk(%s: calling dib0090_pwm_gain_reset\n, __func__); dib0090_pwm_gain_reset(fe); } -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] mb86a20s: fix ISDB-T mode handling
The driver was reporting an incorrect mode, when mode 2 is selected. While testing it, noticed that neither mode 1 or guard interval 1/32 is supported by this device. Document it, and ensure that it will report _AUTO when it doesn't lock, in order to not report a wrong detection to userspace. Cc: sta...@vger.kernel.org Signed-off-by: Mauro Carvalho Chehab m.che...@samsung.com --- drivers/media/dvb-frontends/dib0090.c | 6 +- drivers/media/dvb-frontends/mb86a20s.c | 9 + drivers/media/usb/dvb-usb/dib0700_devices.c | 3 +++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/drivers/media/dvb-frontends/dib0090.c b/drivers/media/dvb-frontends/dib0090.c index 68e2af2650d3..27d5c5cd439c 100644 --- a/drivers/media/dvb-frontends/dib0090.c +++ b/drivers/media/dvb-frontends/dib0090.c @@ -24,6 +24,8 @@ * */ +#define DEBUG_AGC + #include linux/kernel.h #include linux/slab.h #include linux/i2c.h @@ -1199,11 +1201,13 @@ int dib0090_gain_control(struct dvb_frontend *fe) state-rf_gain_limit = state-rf_ramp[0] WBD_ALPHA; state-current_gain = ((state-rf_ramp[0] + state-bb_ramp[0]) / 2) GAIN_ALPHA; +dprintk(Current gain: %d\n, state-current_gain); + *tune_state = CT_AGC_STEP_0; } else if (!state-agc_freeze) { s16 wbd = 0, i, cnt; - int adc; + int adc = 0; wbd_val = dib0090_get_slow_adc_val(state); if (*tune_state == CT_AGC_STEP_0) diff --git a/drivers/media/dvb-frontends/mb86a20s.c b/drivers/media/dvb-frontends/mb86a20s.c index 227a420f7069..b931179c70a4 100644 --- a/drivers/media/dvb-frontends/mb86a20s.c +++ b/drivers/media/dvb-frontends/mb86a20s.c @@ -711,11 +711,10 @@ static int mb86a20s_get_frontend(struct dvb_frontend *fe) rc = mb86a20s_readreg(state, 0x07); if (rc 0) return rc; + c-transmission_mode = TRANSMISSION_MODE_AUTO; if ((rc 0x60) == 0x20) { - switch (rc 0x0c 2) { - case 0: - c-transmission_mode = TRANSMISSION_MODE_2K; - break; + /* Only modes 2 and 3 are supported */ + switch ((rc 2) 0x03) { case 1: c-transmission_mode = TRANSMISSION_MODE_4K; break; @@ -724,7 +723,9 @@ static int mb86a20s_get_frontend(struct dvb_frontend *fe) break; } } + c-guard_interval = GUARD_INTERVAL_AUTO; if (!(rc 0x10)) { + /* Guard interval 1/32 is not supported */ switch (rc 0x3) { case 0: c-guard_interval = GUARD_INTERVAL_1_4; diff --git a/drivers/media/usb/dvb-usb/dib0700_devices.c b/drivers/media/usb/dvb-usb/dib0700_devices.c index 501947eaacfe..cad359fcd690 100644 --- a/drivers/media/usb/dvb-usb/dib0700_devices.c +++ b/drivers/media/usb/dvb-usb/dib0700_devices.c @@ -1645,6 +1645,8 @@ static int dib8096_set_param_override(struct dvb_frontend *fe) int ret = 0; enum frontend_tune_state tune_state = CT_SHUTDOWN; +printk(%s called.\n, __func__); + switch (band) { default: deb_info(Warning : Rf frequency (%iHz) is not in the supported range, using VHF switch , fe-dtv_property_cache.frequency); @@ -1714,6 +1716,7 @@ static int dib8096_set_param_override(struct dvb_frontend *fe) } else { /* for everything else than CBAND we are using standard AGC */ deb_info(not tuning in CBAND - standard AGC startup\n); +printk(%s: calling dib0090_pwm_gain_reset\n, __func__); dib0090_pwm_gain_reset(fe); } -- 1.9.3 -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] mb86a20s: fix ISDB-T mode handling
Mauro, you have forgot some debug hacks to that patch. Antti On 07/12/2014 07:39 PM, Mauro Carvalho Chehab wrote: The driver was reporting an incorrect mode, when mode 2 is selected. While testing it, noticed that neither mode 1 or guard interval 1/32 is supported by this device. Document it, and ensure that it will report _AUTO when it doesn't lock, in order to not report a wrong detection to userspace. Cc: sta...@vger.kernel.org Signed-off-by: Mauro Carvalho Chehab m.che...@samsung.com --- drivers/media/dvb-frontends/dib0090.c | 6 +- drivers/media/dvb-frontends/mb86a20s.c | 9 + drivers/media/usb/dvb-usb/dib0700_devices.c | 3 +++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/drivers/media/dvb-frontends/dib0090.c b/drivers/media/dvb-frontends/dib0090.c index 68e2af2650d3..27d5c5cd439c 100644 --- a/drivers/media/dvb-frontends/dib0090.c +++ b/drivers/media/dvb-frontends/dib0090.c @@ -24,6 +24,8 @@ * */ +#define DEBUG_AGC + #include linux/kernel.h #include linux/slab.h #include linux/i2c.h @@ -1199,11 +1201,13 @@ int dib0090_gain_control(struct dvb_frontend *fe) state-rf_gain_limit = state-rf_ramp[0] WBD_ALPHA; state-current_gain = ((state-rf_ramp[0] + state-bb_ramp[0]) / 2) GAIN_ALPHA; +dprintk(Current gain: %d\n, state-current_gain); + *tune_state = CT_AGC_STEP_0; } else if (!state-agc_freeze) { s16 wbd = 0, i, cnt; - int adc; + int adc = 0; wbd_val = dib0090_get_slow_adc_val(state); if (*tune_state == CT_AGC_STEP_0) diff --git a/drivers/media/dvb-frontends/mb86a20s.c b/drivers/media/dvb-frontends/mb86a20s.c index 227a420f7069..b931179c70a4 100644 --- a/drivers/media/dvb-frontends/mb86a20s.c +++ b/drivers/media/dvb-frontends/mb86a20s.c @@ -711,11 +711,10 @@ static int mb86a20s_get_frontend(struct dvb_frontend *fe) rc = mb86a20s_readreg(state, 0x07); if (rc 0) return rc; + c-transmission_mode = TRANSMISSION_MODE_AUTO; if ((rc 0x60) == 0x20) { - switch (rc 0x0c 2) { - case 0: - c-transmission_mode = TRANSMISSION_MODE_2K; - break; + /* Only modes 2 and 3 are supported */ + switch ((rc 2) 0x03) { case 1: c-transmission_mode = TRANSMISSION_MODE_4K; break; @@ -724,7 +723,9 @@ static int mb86a20s_get_frontend(struct dvb_frontend *fe) break; } } + c-guard_interval = GUARD_INTERVAL_AUTO; if (!(rc 0x10)) { + /* Guard interval 1/32 is not supported */ switch (rc 0x3) { case 0: c-guard_interval = GUARD_INTERVAL_1_4; diff --git a/drivers/media/usb/dvb-usb/dib0700_devices.c b/drivers/media/usb/dvb-usb/dib0700_devices.c index 501947eaacfe..cad359fcd690 100644 --- a/drivers/media/usb/dvb-usb/dib0700_devices.c +++ b/drivers/media/usb/dvb-usb/dib0700_devices.c @@ -1645,6 +1645,8 @@ static int dib8096_set_param_override(struct dvb_frontend *fe) int ret = 0; enum frontend_tune_state tune_state = CT_SHUTDOWN; +printk(%s called.\n, __func__); + switch (band) { default: deb_info(Warning : Rf frequency (%iHz) is not in the supported range, using VHF switch , fe-dtv_property_cache.frequency); @@ -1714,6 +1716,7 @@ static int dib8096_set_param_override(struct dvb_frontend *fe) } else { /* for everything else than CBAND we are using standard AGC */ deb_info(not tuning in CBAND - standard AGC startup\n); +printk(%s: calling dib0090_pwm_gain_reset\n, __func__); dib0090_pwm_gain_reset(fe); } -- http://palosaari.fi/ -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html