Hi, Laurent:

        Yes, the driver should be written in sub device form finally, and the 
sub device driver would be in the folder drivers/media/video/mfld_ci in future. 
But the driver in folder /drivers/staging/mfld_ledflash is only for function 
testing, so it can be used independently(if you write it in sub device form, 
you cannot test it very conveniently ), that why the driver is not written in 
subdevice form in this folder.

        Thanks~

Jing

Regards~

-----Original Message-----
From: Laurent Pinchart [mailto:[email protected]] 
Sent: Tuesday, November 09, 2010 4:18 PM
To: Tao, Jing
Cc: [email protected]; [email protected]
Subject: Re: [Meego-kernel] [PATCH] New functions added to the LED Driver

Hi,

On Thursday 04 November 2010 04:44:02 Laurent Pinchart wrote:
> On Thursday 28 October 2010 11:57:34 Tao, Jing wrote:
> > Thanks a lot for your kind remind, Greg. I repaired the problem using the
> > checkpatch.pl, please have a look:
> > 
> > This is the patch for the LED Flash Driver, the follow new functions are
> > added: --LED Mode Selection
> > --Flash Time Adjust
> > --Flash Current Adjust
> > --Torch Current Adjust
> > --Indicator Current Adjust
> > --OSPM
> > --Run-time PM
> > 
> >         According to Arjan's comment:
> >         --dev_dbg is removed from set_reg function
> >         --some unnecessary prototypes were cleaned up
> >         
> >         According to Alan's comment:
> >         --Check return value of i2c_read/i2c_write
> 
> Thanks for the patch.
> 
> [snip]
> 
> > diff --git a/drivers/staging/mfld_ledflash/lm3555.h
> > b/drivers/staging/mfld_ledflash/lm3555.h new file mode 100644
> > index 0000000..0fc290d
> > --- /dev/null
> > +++ b/drivers/staging/mfld_ledflash/lm3555.h
> 
> [snip]
> 
> > +/* Field for ioctl */
> > +/* Flash strobe control */
> > +#define    V4L2_CID_FLASH_STROBE           _IOW('v', 1, int)
> > +/* Flash timeout setting */
> > +#define    V4L2_CID_FLASH_TIMEOUT          _IOW('v', 2, int)
> > +/* Flash intensity setting */
> > +#define    V4L2_CID_FLASH_INTENSITY        _IOW('v', 3, int)
> > +/* Torch intensity setting */
> > +#define    V4L2_CID_TORCH_INTENSITY        _IOW('v', 4, int)
> > +/* Indicator intensity setting */
> > +#define    V4L2_CID_INDICATOR_INTENSITY    _IOW('v', 5, int)
> 
> You're defining ioctl values, why are they named like V4L2 controls ?
> 
> [snip]
> 
> > diff --git a/drivers/staging/mfld_ledflash/mfld_ledflash.c
> > b/drivers/staging/mfld_ledflash/mfld_ledflash.c index 624b8b1..3ba6bc1
> > 100644
> > --- a/drivers/staging/mfld_ledflash/mfld_ledflash.c
> > +++ b/drivers/staging/mfld_ledflash/mfld_ledflash.c
> 
> [snip]
> 
> > +static int mfld_ledflash_command(struct i2c_client *client,
> > +                            unsigned int cmd, void *arg)
> > +{
> > +   char *input = arg;
> > +   int ret = 0;
> > +
> > +   switch (cmd) {
> > +   case V4L2_CID_FLASH_STROBE:
> > +           ret = mfld_ledflash_set_extstrobe(client, *input);
> > +           break;
> > +   case V4L2_CID_FLASH_TIMEOUT:
> > +           ret = mfld_ledflash_set_flashtime(client, *input);
> > +           break;
> > +   case V4L2_CID_FLASH_INTENSITY:
> > +           ret = mfld_ledflash_set_flashcurrent(client, *input);
> > +           break;
> > +   case V4L2_CID_TORCH_INTENSITY:
> > +           ret = mfld_ledflash_set_assistlightcurrent(client, *input);
> > +           break;
> > +   case V4L2_CID_INDICATOR_INTENSITY:
> > +           ret = mfld_ledflash_set_ic(client, *input);
> > +           break;
> > +   default:
> > +           ret = EINVAL;
> > +           break;
> > +   }
> 
> The right way to implement this is to make the flash driver a V4L2
> sub-device and use V4L2 subdev control operations.
> 
> See drivers/media/video/adp1653.c in http://gitorious.org/maemo-
> multimedia/omap3isp-rx51 for a flash driver example.

Any update on this ?

-- 
Regards,

Laurent Pinchart
_______________________________________________
MeeGo-kernel mailing list
[email protected]
http://lists.meego.com/listinfo/meego-kernel

Reply via email to