Re: [PATCH] mb86a20s: fix ISDB-T mode handling

2014-07-21 Thread Mauro Carvalho Chehab
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

2014-07-12 Thread Mauro Carvalho Chehab
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

2014-07-12 Thread Antti Palosaari

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