From: suzuki.katsuhiro@socionext.com (Katsuhiro Suzuki)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3] media: dvb-frontends: add Socionext SC1501A ISDB-S/T demodulator driver
Date: Wed, 18 Jul 2018 09:39:18 +0900 [thread overview]
Message-ID: <001301d41e2f$c3169400$4943bc00$@socionext.com> (raw)
In-Reply-To: <20180717195853.07b2b42b@vela.lan>
Hello Mauro,
> -----Original Message-----
> From: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
> Sent: Tuesday, July 17, 2018 7:59 PM
> To: Suzuki, Katsuhiro/?? ?? <suzuki.katsuhiro@socionext.com>
> Cc: linux-media at vger.kernel.org; Masami Hiramatsu <masami.hiramatsu@linaro.org>;
> Jassi Brar <jaswinder.singh@linaro.org>; linux-arm-kernel at lists.infradead.org;
> linux-kernel at vger.kernel.org; Abylay Ospan <aospan@netup.ru>
> Subject: Re: [PATCH v3] media: dvb-frontends: add Socionext SC1501A ISDB-S/T
> demodulator driver
>
> Em Tue, 17 Jul 2018 15:07:32 +0900
> "Katsuhiro Suzuki" <suzuki.katsuhiro@socionext.com> escreveu:
>
> > Hello Mauro,
> >
> > I want to send next version (v4) of this patch (just fix wrong max/min range of
> > frequency, fix symbol rate). But it depends your patches for DVB cores.
> >
> > Which way is better?
> >
> > - Send next version now
> > - Send next version after your DVB cores patches applied
> >
> > I want to try to solve LNB problem after current codes applied. I think LNB IC
> > will be defined as regulator device. Please tell me if you have comments about
> > it.
>
> I'm out of the town this week, but you can send it. No need to wait for
> my patches. Just add a notice that the patch depends on them. I'll
> handle after returning back from my trip.
>
Thank you, I see. Have a nice trip!
Regards,
--
Katsuhiro Suzuki
> >
> >
> > Regards,
> > --
> > Katsuhiro Suzuki
> >
> >
> > > -----Original Message-----
> > > From: Katsuhiro Suzuki <suzuki.katsuhiro@socionext.com>
> > > Sent: Tuesday, July 10, 2018 11:51 AM
> > > To: 'Mauro Carvalho Chehab' <mchehab+samsung@kernel.org>; Suzuki, Katsuhiro/
> ??
> > > ?? <suzuki.katsuhiro@socionext.com>
> > > Cc: linux-media at vger.kernel.org; Masami Hiramatsu
> <masami.hiramatsu@linaro.org>;
> > > Jassi Brar <jaswinder.singh@linaro.org>;
> linux-arm-kernel at lists.infradead.org;
> > > linux-kernel at vger.kernel.org; Abylay Ospan <aospan@netup.ru>
> > > Subject: Re: [PATCH v3] media: dvb-frontends: add Socionext SC1501A ISDB-S/T
> > > demodulator driver
> > >
> > > Hello Mauro,
> > >
> > > > -----Original Message-----
> > > > From: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
> > > > Sent: Monday, July 9, 2018 11:00 PM
> > > > To: Suzuki, Katsuhiro/?? ?? <suzuki.katsuhiro@socionext.com>
> > > > Cc: linux-media at vger.kernel.org; Masami Hiramatsu
> > > <masami.hiramatsu@linaro.org>;
> > > > Jassi Brar <jaswinder.singh@linaro.org>;
> linux-arm-kernel at lists.infradead.org;
> > > > linux-kernel at vger.kernel.org; Abylay Ospan <aospan@netup.ru>
> > > > Subject: Re: [PATCH v3] media: dvb-frontends: add Socionext SC1501A ISDB-S/T
> > > > demodulator driver
> > > >
> > > > Em Mon, 9 Jul 2018 11:04:36 +0900
> > > > "Katsuhiro Suzuki" <suzuki.katsuhiro@socionext.com> escreveu:
> > > >
> > > > > Hello Mauro,
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: linux-media-owner at vger.kernel.org
> <linux-media-owner@vger.kernel.org>
> > > > On
> > > > > > Behalf Of Mauro Carvalho Chehab
> > > > > > Sent: Friday, July 6, 2018 8:16 PM
> > > > > > To: Suzuki, Katsuhiro/?? ?? <suzuki.katsuhiro@socionext.com>
> > > > > > Cc: linux-media at vger.kernel.org; Masami Hiramatsu
> > > > > <masami.hiramatsu@linaro.org>;
> > > > > > Jassi Brar <jaswinder.singh@linaro.org>;
> > > > linux-arm-kernel at lists.infradead.org;
> > > > > > linux-kernel at vger.kernel.org; Abylay Ospan <aospan@netup.ru>
> > > > > > Subject: Re: [PATCH v3] media: dvb-frontends: add Socionext SC1501A ISDB-S/T
> > > > > > demodulator driver
> > > > > >
> > > > > > Em Fri, 6 Jul 2018 15:04:08 +0900
> > > > > > "Katsuhiro Suzuki" <suzuki.katsuhiro@socionext.com> escreveu:
> > > > > >
> > > > > > > Here is the log of dvb-fe-tool on my environment.
> > > > > > >
> > > > > > > --------------------
> > > > > > > # ./utils/dvb/.libs/dvb-fe-tool -d isdbs
> > > > > > > Changing delivery system to: ISDBS
> > > > > > > ERROR FE_SET_VOLTAGE: Unknown error 524
> > > > > >
> > > > > > Hmm... ENOTSUPP. Doesn't the device supposed to be able to power on the
> > > > > > LNBf?
> > > > >
> > > > > Ah, maybe it's not implemented yet in Helene driver.
> > > >
> > > > That depends on how the hardware works. On some hardware, the
> > > > LNBf power supply and control is at the demod; on others, it is
> > > > supported by a separate chipset. See, for example, isl642.c for
> > > > an example of such external hardware.
> > > >
> > > > I don't know much about ISDB-S, but, as far as what was
> > > > implemented on v4l-utils dvb-sat.c for Japan 110BS/CS LNBf,
> > > > the LNBf voltage is not used to switch the polarity.
> > > >
> > > > So, the control here is simpler than on DVB-S/S2, as the only
> > > > control is either to send 18V to power on the LNBf/Dish, or
> > > > zero in order to save power.
> > > >
> > >
> > > Thank you, I misunderstood about LNB. I checked circuit of evaluation
> > > board, the board has discrete LNB IC (ST micro LNBH29) for supplying
> > > voltage to Helene. This IC is controlled by I2C.
> > >
> > > The standard (ARIB STD-B21) says DC 15V power is needed to drive the
> > > converter (BS freq -> BS-IF freq) of BS dish antenna. This power
> > > can be supplied via antenna line.
> > >
> > > It seems,
> > > LNBH29 --(LNB_PWR)--> Helene --> BS antenna
> > >
> > > I don't know enough about Helene, but it maybe supply 15V power to
> > > converter of BS dish via antenna line if it receive 15V LNB_PWR...
> > >
> > >
> > > I don't have idea about controlling this IC. Should I write some
> > > driver for LNBH29, and pass the phandle to demodulator via device
> > > tree??
> > >
> > >
> > > > >
> > > > >
> > > > > >
> > > > > > Anyway, I changed the error print message to be clearer, displaying
> > > > > > instead:
> > > > > >
> > > > > > ERROR FE_SET_VOLTAGE: driver doesn't support it!
> > > > > >
> > > > >
> > > > > It's nice for users. Thanks!
> > > > >
> > > > >
> > > > > > >
> > > > > > > # ./utils/dvb/.libs/dvb-fe-tool
> > > > > > > Device Socionext SC1501A (/dev/dvb/adapter0/frontend0) capabilities:
> > > > > > > CAN_FEC_AUTO
> > > > > > > CAN_GUARD_INTERVAL_AUTO
> > > > > > > CAN_HIERARCHY_AUTO
> > > > > > > CAN_INVERSION_AUTO
> > > > > > > CAN_QAM_AUTO
> > > > > > > CAN_TRANSMISSION_MODE_AUTO
> > > > > > > DVB API Version 5.11, Current v5 delivery system: ISDBS
> > > > > > > Supported delivery systems:
> > > > > > > [ISDBS]
> > > > > > > ISDBT
> > > > > > > Frequency range for the current standard:
> > > > > > > From: 470 MHz
> > > > > > > To: 2.07 GHz
> > > > > > > Step: 25.0 kHz
> > > > > > > Symbol rate ranges for the current standard:
> > > > > > > From: 0Bauds
> > > > > > > To: 0Bauds
> > > > > >
> > > > > > That seems a driver issue. The ISDB-S ops.info should be
> > > > > > filling both symbol_rate_min and symbol_rate_max.
> > > > > >
> > > > > > I suspect that both should be filled with 28860000.
> > > > > >
> > > > > > The dvb_frontend.c core might hardcode it, but, IMHO,
> > > > > > it is better to keep those information inside the
> > > > > > tuner/frontend ops.info.
> > > > > >
> > > > >
> > > > > Indeed, thank you for reviewing. I fixed my driver. It seems works fine.
> > > > >
> > > > > ----
> > > > > # utils/dvb/.libs/dvb-fe-tool -a 0
> > > > > Device Socionext SC1501A (/dev/dvb/adapter0/frontend0) capabilities:
> > > > > CAN_FEC_AUTO
> > > > > CAN_GUARD_INTERVAL_AUTO
> > > > > CAN_HIERARCHY_AUTO
> > > > > CAN_INVERSION_AUTO
> > > > > CAN_QAM_AUTO
> > > > > CAN_TRANSMISSION_MODE_AUTO
> > > > > DVB API Version 5.11, Current v5 delivery system: ISDBS
> > > > > Supported delivery systems:
> > > > > [ISDBS]
> > > > > ISDBT
> > > > > Frequency range for the current standard:
> > > > > From: 470 MHz
> > > > > To: 2.07 GHz
> > > > > Step: 25.0 kHz
> > > > > Symbol rate ranges for the current standard:
> > > > > From: 28.9 MBauds
> > > > > To: 28.9 MBauds
> > > > > SEC: set voltage to OFF
> > > > > ERROR FE_SET_VOLTAGE: Operation not permitted
> > > > > ----
> > > >
> > > > That sounds ok.
> > > >
> > > > >
> > > > >
> > > > > > > SEC: set voltage to OFF
> > > > > > > ERROR FE_SET_VOLTAGE: Operation not permitted
> > > > > > >
> > > > > > >
> > > > > > > # ./utils/dvb/.libs/dvb-fe-tool -d isdbt
> > > > > > > Changing delivery system to: ISDBT
> > > > > > > ERROR FE_SET_VOLTAGE: Unknown error 524
> > > > > > >
> > > > > > > # ./utils/dvb/.libs/dvb-fe-tool
> > > > > > > Device Socionext SC1501A (/dev/dvb/adapter0/frontend0) capabilities:
> > > > > > > CAN_FEC_AUTO
> > > > > > > CAN_GUARD_INTERVAL_AUTO
> > > > > > > CAN_HIERARCHY_AUTO
> > > > > > > CAN_INVERSION_AUTO
> > > > > > > CAN_QAM_AUTO
> > > > > > > CAN_TRANSMISSION_MODE_AUTO
> > > > > > > DVB API Version 5.11, Current v5 delivery system: ISDBT
> > > > > > > Supported delivery systems:
> > > > > > > ISDBS
> > > > > > > [ISDBT]
> > > > > > > Frequency range for the current standard:
> > > > > > > From: 470 MHz
> > > > > > > To: 2.07 GHz
> > > > > > > Step: 25.0 kHz
> > > > > >
> > > > > > The rest looks OK for me.
> > > > > >
> > > > > > > > > For example, Helene uses these info for only Ter or Sat freq ranges:
> > > > > > > > >
> > > > > > > > > .name = "Sony HELENE Ter tuner",
> > > > > > > > > .frequency_min_hz = 1 * MHz,
> > > > > > > > > .frequency_max_hz = 1200 * MHz,
> > > > > > > > > .frequency_step_hz = 25 * kHz,
> > > > > > > > >
> > > > > > > > > .name = "Sony HELENE Sat tuner",
> > > > > > > > > .frequency_min_hz = 500 * MHz,
> > > > > > > > > .frequency_max_hz = 2500 * MHz,
> > > > > > > > > .frequency_step_hz = 1 * MHz,
> > > > > > > > >
> > > > > > > > > Is this better to add new info for both system?
> > > > > > > > >
> > > > > > > > > .name = "Sony HELENE Sat/Ter tuner",
> > > > > > > > > .frequency_min_hz = 1 * MHz,
> > > > > > > > > .frequency_max_hz = 2500 * MHz,
> > > > > > > > > .frequency_step_hz = 25 * kHz, // Is this
> correct...?
> > > > > > > >
> > > > > > > > That is indeed a very good question, and maybe a reason why we
> > > > > > > > may need other approaches.
> > > > > > > >
> > > > > > > > See, if the tuner is capable of tuning from 1 MHz to 2500 MHz,
> > > > > > > > the frequency range should be ok. It would aget_frontend_algoctually
> be
> > > > > pretty
> > > > > > cool
> > > > > > > > to use a tuner with such wide range for SDR, if the hardware supports
> > > > > > > > raw I/Q collect :-D
> > > > > > > >
> > > > > > > > The frequency step is a different issue. If the tuner driver uses
> > > > > > > > DVBFE_ALGO_SW (e. g. if ops.get_frontend_algo() returns it, or if
> > > > > > > > this function is not defined), then the step will be used to adjust
> > > > > > > > the zigzag interactions. If it is too small, the tuning will lose
> > > > > > > > channels if the signal is not strong.
> > > > > > > >
> > > > > > >
> > > > > > > Thank you for describing. It's difficult problem...
> > > > > >
> > > > > > I double-checked the implementation. We don't need to worry about
> > > > > > zigzag, provided that the ISDB-S implementation at the core is correct.
> > > > > >
> > > > > > For satellite/cable standards, the zigzag logic takes the symbol
> > > > > > rate into account, and not the stepsize:
> > > > > >
> > > > > > case SYS_DVBS:
> > > > > > case SYS_DVBS2:
> > > > > > case SYS_ISDBS:
> > > > > > case SYS_TURBO:
> > > > > > case SYS_DVBC_ANNEX_A:
> > > > > > case SYS_DVBC_ANNEX_C:
> > > > > > fepriv->min_delay = HZ / 20;
> > > > > > fepriv->step_size = c->symbol_rate / 16000;
> > > > > > fepriv->max_drift = c->symbol_rate / 2000;
> > > > > > break;
> > > > > >
> > > > > > For terrestrial standards, it uses the stepsize:
> > > > > >
> > > > > > case SYS_DVBT:
> > > > > > case SYS_DVBT2:
> > > > > > case SYS_ISDBT:
> > > > > > case SYS_DTMB:
> > > > > > fepriv->min_delay = HZ / 20;
> > > > > > fepriv->step_size =
> dvb_frontend_get_stepsize(fe) *
> > > > 2;
> > > > > > fepriv->max_drift =
> (dvb_frontend_get_stepsize(fe)
> > > *
> > > > 2)
> > > > > +
> > > > > > 1;
> > > > > > break;
> > > > > >
> > > > > > So, having a value of 25 kHz there won't affect the zigzag algorithm
> > > > > > for ISDB-S, as it will be used only for ISDB-T.
> > > > > >
> > > > >
> > > > > Thank you for checking and describing. I checked it too.
> > > > >
> > > > > Default value is fine as you said, and we can use get_tune_settings()
> > > > > callback if we face the problem or need different settings for each
> > > > > delivery systems in the future.
> > > > >
> > > > > /* get frontend-specific tuning settings */
> > > > > memset(&fetunesettings, 0, sizeof(struct
> > > dvb_frontend_tune_settings));
> > > > > if (fe->ops.get_tune_settings && (fe->ops.get_tune_settings(fe,
> > > > > &fetunesettings) == 0)) {
> > > > > fepriv->min_delay = (fetunesettings.min_delay_ms * HZ) /
> 1000;
> > > > > fepriv->max_drift = fetunesettings.max_drift;
> > > > > fepriv->step_size = fetunesettings.step_size;
> > > > > } else {
> > > > > /* default values */
> > > > > ...
> > > >
> > > > Sure.
> > > >
> > > > >
> > > > >
> > > > > > > > In the specific case of helene, it doesn't have a get_frontend_algo,
> > > > > > > > so it will use the step frequency.
> > > > > > > >
> > > > > > > > I'm not sure how to solve this issue. Maybe Abylay may shed a light
> > > > > > > > here, if helene does sigzag in hardware or not.
> > > > > > > >
> > > > > > >
> > > > > > > As far as I know, Helene does not have automatic scan mechanism in
> > > > > > > hardware.
> > > > > >
> > > > > > Ok, so the driver is doing the right thing here.
> > > > > >
> > > > > > > > If it does in hardware, you could add a get_frontend_algo() routine
> > > > > > > > at helene driver and return DVBFE_ALGO_HW. The tuning zigzag software
> > > > > > > > algorithm in the Kernel will stop, as it will rely at the hardware.
> > > > > > > >
> > > > > > > > Please notice that, if the hardware doesn't do zigzag itself, this
> > > > > > > > will make it lose channels. On the other hand, if the hardware does
> > > > > > > > have sigzag, changing to DVBFE_ALGO_HW will speedup tuning, as the
> > > > > > > > Kernel won't try to do sigzag itself.
> > > > > > > >
> > > > > > >
> > > > > > > ISDB-T uses 6MHz bandwidth per channel (in Japan), ISDB-S for
> > > > > > > BS/CS110 uses 38.36MHz bandwidth. Maybe 1MHz zigzag step is large for
> > > > > > > ISDB-T system and 25kHz is small for ISDB-S system.
> > > > > >
> > > > > > Yeah, but, after double-checking the logic, for ISDB-S, it will
> > > > > > use:
> > > > > >
> > > > > > c->symbol_rate = 28860000;
> > > > > > c->rolloff = ROLLOFF_35;
> > > > > > c->bandwidth_hz = c->symbol_rate / 100 * 135;
> > > > > >
> > > > > > That would actually set the ISDB-S channel separation to 38.961 MHz.
> > > > > >
> > > > > > By setting symbol_rate like that, the zigzag for ISDB-S will
> > > > > > be defined by:
> > > > > >
> > > > > > fepriv->step_size = c->symbol_rate / 16000; /* 38.961MHz / 16000
> =
> > > > > .002435
> > > > > > - e. g. steps of ~25 kHz */
> > > > > > fepriv->max_drift = c->symbol_rate / 2000; /* 38.961MHz / 2000
> =
> > > > > .0194805
> > > > > > - e. g. max drift of ~195 kHz */
> > > > > >
> > > > > > Funny enough, it will be using about 25 kHz as step size for ISDB-S.
> > > > > >
> > > > > > I have no idea if the ISDB-S standard defines the zigzag logic,
> > > > > > but I would be expecting a higher value for it. So, perhaps
> > > > > > the ISDB-S zigzag could be optimized.
> > > > > >
> > > > > > Thanks,
> > > > > > Mauro
> > > > >
> > > > > Hmm, interesting. I don't know zigzag for ISDB-S too, sorry...
> > > > >
> > > > > Anyway, I don't worry about that. I said in above, we can use
> > > > > get_tune_settings() for fine tuning.
> > > > >
> > > > >
> > > > > Regards,
> > > > > --
> > > > > Katsuhiro Suzuki
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > > > Thanks,
> > > > Mauro
> > >
> >
> >
> >
>
>
>
>
> Cheers,
> Mauro
WARNING: multiple messages have this Message-ID (diff)
From: "Katsuhiro Suzuki" <suzuki.katsuhiro@socionext.com>
To: "'Mauro Carvalho Chehab'" <mchehab+samsung@kernel.org>,
"Suzuki, Katsuhiro/鈴木 勝博" <suzuki.katsuhiro@socionext.com>
Cc: <linux-media@vger.kernel.org>,
"Masami Hiramatsu" <masami.hiramatsu@linaro.org>,
"Jassi Brar" <jaswinder.singh@linaro.org>,
<linux-arm-kernel@lists.infradead.org>,
<linux-kernel@vger.kernel.org>, "Abylay Ospan" <aospan@netup.ru>
Subject: Re: [PATCH v3] media: dvb-frontends: add Socionext SC1501A ISDB-S/T demodulator driver
Date: Wed, 18 Jul 2018 09:39:18 +0900 [thread overview]
Message-ID: <001301d41e2f$c3169400$4943bc00$@socionext.com> (raw)
In-Reply-To: <20180717195853.07b2b42b@vela.lan>
Hello Mauro,
> -----Original Message-----
> From: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
> Sent: Tuesday, July 17, 2018 7:59 PM
> To: Suzuki, Katsuhiro/鈴木 勝博 <suzuki.katsuhiro@socionext.com>
> Cc: linux-media@vger.kernel.org; Masami Hiramatsu <masami.hiramatsu@linaro.org>;
> Jassi Brar <jaswinder.singh@linaro.org>; linux-arm-kernel@lists.infradead.org;
> linux-kernel@vger.kernel.org; Abylay Ospan <aospan@netup.ru>
> Subject: Re: [PATCH v3] media: dvb-frontends: add Socionext SC1501A ISDB-S/T
> demodulator driver
>
> Em Tue, 17 Jul 2018 15:07:32 +0900
> "Katsuhiro Suzuki" <suzuki.katsuhiro@socionext.com> escreveu:
>
> > Hello Mauro,
> >
> > I want to send next version (v4) of this patch (just fix wrong max/min range of
> > frequency, fix symbol rate). But it depends your patches for DVB cores.
> >
> > Which way is better?
> >
> > - Send next version now
> > - Send next version after your DVB cores patches applied
> >
> > I want to try to solve LNB problem after current codes applied. I think LNB IC
> > will be defined as regulator device. Please tell me if you have comments about
> > it.
>
> I'm out of the town this week, but you can send it. No need to wait for
> my patches. Just add a notice that the patch depends on them. I'll
> handle after returning back from my trip.
>
Thank you, I see. Have a nice trip!
Regards,
--
Katsuhiro Suzuki
> >
> >
> > Regards,
> > --
> > Katsuhiro Suzuki
> >
> >
> > > -----Original Message-----
> > > From: Katsuhiro Suzuki <suzuki.katsuhiro@socionext.com>
> > > Sent: Tuesday, July 10, 2018 11:51 AM
> > > To: 'Mauro Carvalho Chehab' <mchehab+samsung@kernel.org>; Suzuki, Katsuhiro/
> 鈴木
> > > 勝博 <suzuki.katsuhiro@socionext.com>
> > > Cc: linux-media@vger.kernel.org; Masami Hiramatsu
> <masami.hiramatsu@linaro.org>;
> > > Jassi Brar <jaswinder.singh@linaro.org>;
> linux-arm-kernel@lists.infradead.org;
> > > linux-kernel@vger.kernel.org; Abylay Ospan <aospan@netup.ru>
> > > Subject: Re: [PATCH v3] media: dvb-frontends: add Socionext SC1501A ISDB-S/T
> > > demodulator driver
> > >
> > > Hello Mauro,
> > >
> > > > -----Original Message-----
> > > > From: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
> > > > Sent: Monday, July 9, 2018 11:00 PM
> > > > To: Suzuki, Katsuhiro/鈴木 勝博 <suzuki.katsuhiro@socionext.com>
> > > > Cc: linux-media@vger.kernel.org; Masami Hiramatsu
> > > <masami.hiramatsu@linaro.org>;
> > > > Jassi Brar <jaswinder.singh@linaro.org>;
> linux-arm-kernel@lists.infradead.org;
> > > > linux-kernel@vger.kernel.org; Abylay Ospan <aospan@netup.ru>
> > > > Subject: Re: [PATCH v3] media: dvb-frontends: add Socionext SC1501A ISDB-S/T
> > > > demodulator driver
> > > >
> > > > Em Mon, 9 Jul 2018 11:04:36 +0900
> > > > "Katsuhiro Suzuki" <suzuki.katsuhiro@socionext.com> escreveu:
> > > >
> > > > > Hello Mauro,
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: linux-media-owner@vger.kernel.org
> <linux-media-owner@vger.kernel.org>
> > > > On
> > > > > > Behalf Of Mauro Carvalho Chehab
> > > > > > Sent: Friday, July 6, 2018 8:16 PM
> > > > > > To: Suzuki, Katsuhiro/鈴木 勝博 <suzuki.katsuhiro@socionext.com>
> > > > > > Cc: linux-media@vger.kernel.org; Masami Hiramatsu
> > > > > <masami.hiramatsu@linaro.org>;
> > > > > > Jassi Brar <jaswinder.singh@linaro.org>;
> > > > linux-arm-kernel@lists.infradead.org;
> > > > > > linux-kernel@vger.kernel.org; Abylay Ospan <aospan@netup.ru>
> > > > > > Subject: Re: [PATCH v3] media: dvb-frontends: add Socionext SC1501A ISDB-S/T
> > > > > > demodulator driver
> > > > > >
> > > > > > Em Fri, 6 Jul 2018 15:04:08 +0900
> > > > > > "Katsuhiro Suzuki" <suzuki.katsuhiro@socionext.com> escreveu:
> > > > > >
> > > > > > > Here is the log of dvb-fe-tool on my environment.
> > > > > > >
> > > > > > > --------------------
> > > > > > > # ./utils/dvb/.libs/dvb-fe-tool -d isdbs
> > > > > > > Changing delivery system to: ISDBS
> > > > > > > ERROR FE_SET_VOLTAGE: Unknown error 524
> > > > > >
> > > > > > Hmm... ENOTSUPP. Doesn't the device supposed to be able to power on the
> > > > > > LNBf?
> > > > >
> > > > > Ah, maybe it's not implemented yet in Helene driver.
> > > >
> > > > That depends on how the hardware works. On some hardware, the
> > > > LNBf power supply and control is at the demod; on others, it is
> > > > supported by a separate chipset. See, for example, isl642.c for
> > > > an example of such external hardware.
> > > >
> > > > I don't know much about ISDB-S, but, as far as what was
> > > > implemented on v4l-utils dvb-sat.c for Japan 110BS/CS LNBf,
> > > > the LNBf voltage is not used to switch the polarity.
> > > >
> > > > So, the control here is simpler than on DVB-S/S2, as the only
> > > > control is either to send 18V to power on the LNBf/Dish, or
> > > > zero in order to save power.
> > > >
> > >
> > > Thank you, I misunderstood about LNB. I checked circuit of evaluation
> > > board, the board has discrete LNB IC (ST micro LNBH29) for supplying
> > > voltage to Helene. This IC is controlled by I2C.
> > >
> > > The standard (ARIB STD-B21) says DC 15V power is needed to drive the
> > > converter (BS freq -> BS-IF freq) of BS dish antenna. This power
> > > can be supplied via antenna line.
> > >
> > > It seems,
> > > LNBH29 --(LNB_PWR)--> Helene --> BS antenna
> > >
> > > I don't know enough about Helene, but it maybe supply 15V power to
> > > converter of BS dish via antenna line if it receive 15V LNB_PWR...
> > >
> > >
> > > I don't have idea about controlling this IC. Should I write some
> > > driver for LNBH29, and pass the phandle to demodulator via device
> > > tree??
> > >
> > >
> > > > >
> > > > >
> > > > > >
> > > > > > Anyway, I changed the error print message to be clearer, displaying
> > > > > > instead:
> > > > > >
> > > > > > ERROR FE_SET_VOLTAGE: driver doesn't support it!
> > > > > >
> > > > >
> > > > > It's nice for users. Thanks!
> > > > >
> > > > >
> > > > > > >
> > > > > > > # ./utils/dvb/.libs/dvb-fe-tool
> > > > > > > Device Socionext SC1501A (/dev/dvb/adapter0/frontend0) capabilities:
> > > > > > > CAN_FEC_AUTO
> > > > > > > CAN_GUARD_INTERVAL_AUTO
> > > > > > > CAN_HIERARCHY_AUTO
> > > > > > > CAN_INVERSION_AUTO
> > > > > > > CAN_QAM_AUTO
> > > > > > > CAN_TRANSMISSION_MODE_AUTO
> > > > > > > DVB API Version 5.11, Current v5 delivery system: ISDBS
> > > > > > > Supported delivery systems:
> > > > > > > [ISDBS]
> > > > > > > ISDBT
> > > > > > > Frequency range for the current standard:
> > > > > > > From: 470 MHz
> > > > > > > To: 2.07 GHz
> > > > > > > Step: 25.0 kHz
> > > > > > > Symbol rate ranges for the current standard:
> > > > > > > From: 0Bauds
> > > > > > > To: 0Bauds
> > > > > >
> > > > > > That seems a driver issue. The ISDB-S ops.info should be
> > > > > > filling both symbol_rate_min and symbol_rate_max.
> > > > > >
> > > > > > I suspect that both should be filled with 28860000.
> > > > > >
> > > > > > The dvb_frontend.c core might hardcode it, but, IMHO,
> > > > > > it is better to keep those information inside the
> > > > > > tuner/frontend ops.info.
> > > > > >
> > > > >
> > > > > Indeed, thank you for reviewing. I fixed my driver. It seems works fine.
> > > > >
> > > > > ----
> > > > > # utils/dvb/.libs/dvb-fe-tool -a 0
> > > > > Device Socionext SC1501A (/dev/dvb/adapter0/frontend0) capabilities:
> > > > > CAN_FEC_AUTO
> > > > > CAN_GUARD_INTERVAL_AUTO
> > > > > CAN_HIERARCHY_AUTO
> > > > > CAN_INVERSION_AUTO
> > > > > CAN_QAM_AUTO
> > > > > CAN_TRANSMISSION_MODE_AUTO
> > > > > DVB API Version 5.11, Current v5 delivery system: ISDBS
> > > > > Supported delivery systems:
> > > > > [ISDBS]
> > > > > ISDBT
> > > > > Frequency range for the current standard:
> > > > > From: 470 MHz
> > > > > To: 2.07 GHz
> > > > > Step: 25.0 kHz
> > > > > Symbol rate ranges for the current standard:
> > > > > From: 28.9 MBauds
> > > > > To: 28.9 MBauds
> > > > > SEC: set voltage to OFF
> > > > > ERROR FE_SET_VOLTAGE: Operation not permitted
> > > > > ----
> > > >
> > > > That sounds ok.
> > > >
> > > > >
> > > > >
> > > > > > > SEC: set voltage to OFF
> > > > > > > ERROR FE_SET_VOLTAGE: Operation not permitted
> > > > > > >
> > > > > > >
> > > > > > > # ./utils/dvb/.libs/dvb-fe-tool -d isdbt
> > > > > > > Changing delivery system to: ISDBT
> > > > > > > ERROR FE_SET_VOLTAGE: Unknown error 524
> > > > > > >
> > > > > > > # ./utils/dvb/.libs/dvb-fe-tool
> > > > > > > Device Socionext SC1501A (/dev/dvb/adapter0/frontend0) capabilities:
> > > > > > > CAN_FEC_AUTO
> > > > > > > CAN_GUARD_INTERVAL_AUTO
> > > > > > > CAN_HIERARCHY_AUTO
> > > > > > > CAN_INVERSION_AUTO
> > > > > > > CAN_QAM_AUTO
> > > > > > > CAN_TRANSMISSION_MODE_AUTO
> > > > > > > DVB API Version 5.11, Current v5 delivery system: ISDBT
> > > > > > > Supported delivery systems:
> > > > > > > ISDBS
> > > > > > > [ISDBT]
> > > > > > > Frequency range for the current standard:
> > > > > > > From: 470 MHz
> > > > > > > To: 2.07 GHz
> > > > > > > Step: 25.0 kHz
> > > > > >
> > > > > > The rest looks OK for me.
> > > > > >
> > > > > > > > > For example, Helene uses these info for only Ter or Sat freq ranges:
> > > > > > > > >
> > > > > > > > > .name = "Sony HELENE Ter tuner",
> > > > > > > > > .frequency_min_hz = 1 * MHz,
> > > > > > > > > .frequency_max_hz = 1200 * MHz,
> > > > > > > > > .frequency_step_hz = 25 * kHz,
> > > > > > > > >
> > > > > > > > > .name = "Sony HELENE Sat tuner",
> > > > > > > > > .frequency_min_hz = 500 * MHz,
> > > > > > > > > .frequency_max_hz = 2500 * MHz,
> > > > > > > > > .frequency_step_hz = 1 * MHz,
> > > > > > > > >
> > > > > > > > > Is this better to add new info for both system?
> > > > > > > > >
> > > > > > > > > .name = "Sony HELENE Sat/Ter tuner",
> > > > > > > > > .frequency_min_hz = 1 * MHz,
> > > > > > > > > .frequency_max_hz = 2500 * MHz,
> > > > > > > > > .frequency_step_hz = 25 * kHz, // Is this
> correct...?
> > > > > > > >
> > > > > > > > That is indeed a very good question, and maybe a reason why we
> > > > > > > > may need other approaches.
> > > > > > > >
> > > > > > > > See, if the tuner is capable of tuning from 1 MHz to 2500 MHz,
> > > > > > > > the frequency range should be ok. It would aget_frontend_algoctually
> be
> > > > > pretty
> > > > > > cool
> > > > > > > > to use a tuner with such wide range for SDR, if the hardware supports
> > > > > > > > raw I/Q collect :-D
> > > > > > > >
> > > > > > > > The frequency step is a different issue. If the tuner driver uses
> > > > > > > > DVBFE_ALGO_SW (e. g. if ops.get_frontend_algo() returns it, or if
> > > > > > > > this function is not defined), then the step will be used to adjust
> > > > > > > > the zigzag interactions. If it is too small, the tuning will lose
> > > > > > > > channels if the signal is not strong.
> > > > > > > >
> > > > > > >
> > > > > > > Thank you for describing. It's difficult problem...
> > > > > >
> > > > > > I double-checked the implementation. We don't need to worry about
> > > > > > zigzag, provided that the ISDB-S implementation at the core is correct.
> > > > > >
> > > > > > For satellite/cable standards, the zigzag logic takes the symbol
> > > > > > rate into account, and not the stepsize:
> > > > > >
> > > > > > case SYS_DVBS:
> > > > > > case SYS_DVBS2:
> > > > > > case SYS_ISDBS:
> > > > > > case SYS_TURBO:
> > > > > > case SYS_DVBC_ANNEX_A:
> > > > > > case SYS_DVBC_ANNEX_C:
> > > > > > fepriv->min_delay = HZ / 20;
> > > > > > fepriv->step_size = c->symbol_rate / 16000;
> > > > > > fepriv->max_drift = c->symbol_rate / 2000;
> > > > > > break;
> > > > > >
> > > > > > For terrestrial standards, it uses the stepsize:
> > > > > >
> > > > > > case SYS_DVBT:
> > > > > > case SYS_DVBT2:
> > > > > > case SYS_ISDBT:
> > > > > > case SYS_DTMB:
> > > > > > fepriv->min_delay = HZ / 20;
> > > > > > fepriv->step_size =
> dvb_frontend_get_stepsize(fe) *
> > > > 2;
> > > > > > fepriv->max_drift =
> (dvb_frontend_get_stepsize(fe)
> > > *
> > > > 2)
> > > > > +
> > > > > > 1;
> > > > > > break;
> > > > > >
> > > > > > So, having a value of 25 kHz there won't affect the zigzag algorithm
> > > > > > for ISDB-S, as it will be used only for ISDB-T.
> > > > > >
> > > > >
> > > > > Thank you for checking and describing. I checked it too.
> > > > >
> > > > > Default value is fine as you said, and we can use get_tune_settings()
> > > > > callback if we face the problem or need different settings for each
> > > > > delivery systems in the future.
> > > > >
> > > > > /* get frontend-specific tuning settings */
> > > > > memset(&fetunesettings, 0, sizeof(struct
> > > dvb_frontend_tune_settings));
> > > > > if (fe->ops.get_tune_settings && (fe->ops.get_tune_settings(fe,
> > > > > &fetunesettings) == 0)) {
> > > > > fepriv->min_delay = (fetunesettings.min_delay_ms * HZ) /
> 1000;
> > > > > fepriv->max_drift = fetunesettings.max_drift;
> > > > > fepriv->step_size = fetunesettings.step_size;
> > > > > } else {
> > > > > /* default values */
> > > > > ...
> > > >
> > > > Sure.
> > > >
> > > > >
> > > > >
> > > > > > > > In the specific case of helene, it doesn't have a get_frontend_algo,
> > > > > > > > so it will use the step frequency.
> > > > > > > >
> > > > > > > > I'm not sure how to solve this issue. Maybe Abylay may shed a light
> > > > > > > > here, if helene does sigzag in hardware or not.
> > > > > > > >
> > > > > > >
> > > > > > > As far as I know, Helene does not have automatic scan mechanism in
> > > > > > > hardware.
> > > > > >
> > > > > > Ok, so the driver is doing the right thing here.
> > > > > >
> > > > > > > > If it does in hardware, you could add a get_frontend_algo() routine
> > > > > > > > at helene driver and return DVBFE_ALGO_HW. The tuning zigzag software
> > > > > > > > algorithm in the Kernel will stop, as it will rely at the hardware.
> > > > > > > >
> > > > > > > > Please notice that, if the hardware doesn't do zigzag itself, this
> > > > > > > > will make it lose channels. On the other hand, if the hardware does
> > > > > > > > have sigzag, changing to DVBFE_ALGO_HW will speedup tuning, as the
> > > > > > > > Kernel won't try to do sigzag itself.
> > > > > > > >
> > > > > > >
> > > > > > > ISDB-T uses 6MHz bandwidth per channel (in Japan), ISDB-S for
> > > > > > > BS/CS110 uses 38.36MHz bandwidth. Maybe 1MHz zigzag step is large for
> > > > > > > ISDB-T system and 25kHz is small for ISDB-S system.
> > > > > >
> > > > > > Yeah, but, after double-checking the logic, for ISDB-S, it will
> > > > > > use:
> > > > > >
> > > > > > c->symbol_rate = 28860000;
> > > > > > c->rolloff = ROLLOFF_35;
> > > > > > c->bandwidth_hz = c->symbol_rate / 100 * 135;
> > > > > >
> > > > > > That would actually set the ISDB-S channel separation to 38.961 MHz.
> > > > > >
> > > > > > By setting symbol_rate like that, the zigzag for ISDB-S will
> > > > > > be defined by:
> > > > > >
> > > > > > fepriv->step_size = c->symbol_rate / 16000; /* 38.961MHz / 16000
> =
> > > > > .002435
> > > > > > - e. g. steps of ~25 kHz */
> > > > > > fepriv->max_drift = c->symbol_rate / 2000; /* 38.961MHz / 2000
> =
> > > > > .0194805
> > > > > > - e. g. max drift of ~195 kHz */
> > > > > >
> > > > > > Funny enough, it will be using about 25 kHz as step size for ISDB-S.
> > > > > >
> > > > > > I have no idea if the ISDB-S standard defines the zigzag logic,
> > > > > > but I would be expecting a higher value for it. So, perhaps
> > > > > > the ISDB-S zigzag could be optimized.
> > > > > >
> > > > > > Thanks,
> > > > > > Mauro
> > > > >
> > > > > Hmm, interesting. I don't know zigzag for ISDB-S too, sorry...
> > > > >
> > > > > Anyway, I don't worry about that. I said in above, we can use
> > > > > get_tune_settings() for fine tuning.
> > > > >
> > > > >
> > > > > Regards,
> > > > > --
> > > > > Katsuhiro Suzuki
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > > > Thanks,
> > > > Mauro
> > >
> >
> >
> >
>
>
>
>
> Cheers,
> Mauro
next prev parent reply other threads:[~2018-07-18 0:39 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-21 3:17 [PATCH v3] media: dvb-frontends: add Socionext SC1501A ISDB-S/T demodulator driver Katsuhiro Suzuki
2018-06-21 3:17 ` Katsuhiro Suzuki
2018-07-04 16:58 ` Mauro Carvalho Chehab
2018-07-04 16:58 ` Mauro Carvalho Chehab
2018-07-05 1:58 ` Katsuhiro Suzuki
2018-07-05 1:58 ` Katsuhiro Suzuki
2018-07-05 2:42 ` Mauro Carvalho Chehab
2018-07-05 2:42 ` Mauro Carvalho Chehab
2018-07-05 5:43 ` Katsuhiro Suzuki
2018-07-05 5:43 ` Katsuhiro Suzuki
2018-07-06 0:27 ` Mauro Carvalho Chehab
2018-07-06 0:27 ` Mauro Carvalho Chehab
2018-07-06 6:04 ` Katsuhiro Suzuki
2018-07-06 6:04 ` Katsuhiro Suzuki
2018-07-06 11:16 ` Mauro Carvalho Chehab
2018-07-06 11:16 ` Mauro Carvalho Chehab
2018-07-09 2:04 ` Katsuhiro Suzuki
2018-07-09 2:04 ` Katsuhiro Suzuki
2018-07-09 13:59 ` Mauro Carvalho Chehab
2018-07-09 13:59 ` Mauro Carvalho Chehab
2018-07-10 2:50 ` Katsuhiro Suzuki
2018-07-10 2:50 ` Katsuhiro Suzuki
2018-07-17 6:07 ` Katsuhiro Suzuki
2018-07-17 6:07 ` Katsuhiro Suzuki
2018-07-17 10:58 ` Mauro Carvalho Chehab
2018-07-17 10:58 ` Mauro Carvalho Chehab
2018-07-18 0:39 ` Katsuhiro Suzuki [this message]
2018-07-18 0:39 ` Katsuhiro Suzuki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='001301d41e2f$c3169400$4943bc00$@socionext.com' \
--to=suzuki.katsuhiro@socionext.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.