RE: [PATCH v1 13/16] OMAP3: hwmod DSS: VENC Move init,exit to driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----Original Message-----
> From: Thomas Petazzoni [mailto:thomas.petazzoni@xxxxxxxxxxxxxxxxxx]
> Sent: Friday, October 08, 2010 1:28 AM
> To: Guruswamy, Senthilvadivu
> Cc: khilman@xxxxxxxxxxxxxxxxxxx; tomi.valkeinen@xxxxxxxxx; paul@xxxxxxxxx;
> Hiremath, Vaibhav; linux-omap@xxxxxxxxxxxxxxx
> Subject: Re: [PATCH v1 13/16] OMAP3: hwmod DSS: VENC Move init,exit to
> driver
> 
> Hello Senthil,
> 
> On Wed,  6 Oct 2010 16:44:56 +0530
> Guruswamy Senthilvadivu <svadivu@xxxxxx> wrote:
> 
> > diff --git a/drivers/video/omap2/dss/venc.c
> b/drivers/video/omap2/dss/venc.c
> > index ec17b28..3a121cb 100644
> > --- a/drivers/video/omap2/dss/venc.c
> > +++ b/drivers/video/omap2/dss/venc.c
> > @@ -87,26 +87,6 @@
> >  #define VENC_OUTPUT_TEST			0xC8
> >  #define VENC_DAC_B__DAC_C			0xC8
> >
> > -/* VENC HW IP initialisation */
> > -static int omap_venchw_probe(struct platform_device *pdev)
> > -{
> > -	return 0;
> > -}
> > -
> > -static int omap_venchw_remove(struct platform_device *pdev)
> > -{
> > -	return 0;
> > -}
> > -
> > -static struct platform_driver omap_venchw_driver = {
> > -	.probe          = omap_venchw_probe,
> > -	.remove         = omap_venchw_remove,
> > -	.driver         = {
> > -		.name   = "dss_venc",
> > -		.owner  = THIS_MODULE,
> > -	},
> > -};
> 
> Would be better in patch 7/16 to put this stuff at the correct place
> (bottom of the file) so it does not need to be moved here.
> 
[Senthil]  Taken.  Will do the movement in the first patch itself.
> > +/* VENC HW IP initialisation */
> > +static int omap_venchw_probe(struct platform_device *pdev)
> > +{
> > +	int r;
> > +	venc.pdev = pdev;
> > +
> > +	r = venc_init(pdev);
> > +	if (r) {
> > +		DSSERR("Failed to initialize venc\n");
> > +		goto err_venc;
> > +	}
> > +
> > +err_venc:
> > +	return r;
> > +}
> > +
> > +static int omap_venchw_remove(struct platform_device *pdev)
> > +{
> > +	venc_exit();
> > +	return 0;
> > +}
> 
> Same comment as before: include the code of venc_init() and venc_exit()
> directly in the ->probe() and ->remove() hooks respectively.
> 
> > +struct regulator *dss_get_vdda_dac(void)
> > +{
> > +	struct regulator *reg;
> > +
> > +	if (venc.vdda_dac_reg != NULL)
> > +		return venc.vdda_dac_reg;
> > +
> > +	reg = regulator_get(&venc.pdev->dev, "vdda_dac");
> > +	if (!IS_ERR(reg))
> > +		venc.vdda_dac_reg = reg;
> >
> > +	return reg;
> > +}
> 
> As far as I can see, this function is now only used in venc_init(),
> which is in the same file, so the function should be static, and the
> prototype removed from drivers/video/omap2/dss/core.h.
> 
> I'm also a bit skeptical about what this function does. It is called
> this way in venc_init():
> 
>   venc.vdda_dac_reg = dss_get_vdda_dac();
> 
> so it is dss_get_vdda_dac() responsability to set venc.vdda_dac_reg, or
> is it the caller responsability ?
> 
> Moreover, the logic in dss_get_vdda_dac() that tests whether
> venc.vdda_dac_reg is already initialized seems to indicate that this
> function could be called several times. However, I only see it called
> from venc_init(), which as far as I understand is called only once.
> 
[Senthil] when code was in core.c there were chances of it getting called more than once.  Now it is called only once as you see, so it could be made static.
> Isn't it possible to simplify this by removing the dss_get_vdda_dac()
> function and just doing:
> 
>   venc.vdda_dac_reg = regulator_get(&venc.pdev->dev, "vdda_dac");
> 
> in the venc_init() function (which should become the ->probe() method).
> 
> Thanks!
> 
> Thomas
> --
> Thomas Petazzoni, Free Electrons
> Kernel, drivers, real-time and embedded Linux
> development, consulting, training and support.
> http://free-electrons.com
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux