Em Fri, 28 Sep 2012 16:21:35 +0200 Hans Verkuil <hverkuil@xxxxxxxxx> escreveu: > On Fri September 28 2012 14:43:32 Hans Verkuil wrote: > > Hi Antti, > > > > Mauro asked me to look into LNA as well, in particular how this could be done > > on the analog side as well. Thanks for that! > > > > While reading through this patch I noticed that the new property was added to > > dtv_property_process_set, but not to dtv_property_process_get. Can you look > > into that and add 'get' support for this property? > > It's a sign of insanity when you start replying to your own email, but so > be it :-) :) > > I've been thinking how this can be implemented in such a way that it works > well in all the various board/tuner configurations. > > First, the property should be cached in dtv_frontend_properties, that way > tuners with a built-in LNA can use it. The initial value should be AUTO, > I guess. > > The property_process_set code changes to: > > case DTV_LNA: > if (fe->ops.set_lna) > r = fe->ops.set_lna(fe, tvp->u.data); > if (!r) > c->lna = tvp->u.data; > break; > > Tuners can now check the c->lna value when set_params is called and take the > appropriate steps if they have a built-in LNA. > > To be able to access the LNA from the V4L2 side you would need to add two > new tuner ops in include/media/v4l2-subdev.h: > > int (*g_lna)(struct v4l2_subdev *sd, u32 *lna); > int (*s_lna)(struct v4l2_subdev *sd, u32 lna); > > The tuner-core.c driver can implement these ops to get and set c->lna accordingly. > > A menu control would be needed to actually change the LNA. > > The code that handles that control would have to call a board-specific function > if necessary (if the LNA is on the board), and call the tuner's s_lna op otherwise. > Makes sense. > > The only question is whether the digital and analog APIs should share the same > LNA setting or keep different LNA states for each. > > So if I call DTV_LNA to set the LNA, and then check the LNA control value from V4L2, > should the two match? Or should we keep separate states and whenever you select > digital or analog mode the LNA is updated with the corresponding LNA value for that > mode. > > The latter is a bit more work (struct analog_parameters should probably be extended > with an LNA value), but I do think it is a cleaner solution. I think they both should share the same LNA state, as this depends on the physical connection (e. g. if the antenna has LNA; if the signal reception is weak or strong with that particular antenna). > I am not sure if the LNA work on the analog side should be done without having > hardware that actually uses it, but at least the LNA support on the digital side > should be done in such a way that it can be extended for analog as well. There are several saa7134 hardware with LNA support. I have one of such boards here, although never needed to dig into the LNA stuff on it. > > Anyway, I think this approach would work for analog LNA support. Comments are > welcome! Regards, Mauro -- 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