Laurent Pinchart wrote: > Hi Sakari, Hi, > On Tuesday 05 April 2011 13:21:03 Sakari Ailus wrote: >> Laurent Pinchart wrote: >>> On Tuesday 05 April 2011 12:23:51 Sakari Ailus wrote: >>>> Sakari Ailus wrote: >>>>> Laurent Pinchart wrote: >>>>>> On Wednesday 30 March 2011 13:05:54 Sakari Ailus wrote: >>>>>>> Laurent Pinchart wrote: >>>>>>>> On Monday 28 March 2011 14:55:40 Sakari Ailus wrote: >>>>>>>> >>>>>>>> [snip] >>>>>>>> >>>>>>>>> V4L2_CID_FLASH_STROBE_MODE (menu; LED) >>>>>>>>> >>>>>>>>> Use hardware or software strobe. If hardware strobe is selected, >>>>>>>>> the flash controller is a slave in the system where the sensor >>>>>>>>> produces the strobe signal to the flash. >>>>>>>>> >>>>>>>>> In this case the flash controller setup is limited to programming >>>>>>>>> strobe timeout and power (LED flash) and the sensor controls the >>>>>>>>> timing and length of the strobe. >>>>>>>>> >>>>>>>>> enum v4l2_flash_strobe_mode { >>>>>>>>> >>>>>>>>> V4L2_FLASH_STROBE_MODE_SOFTWARE, >>>>>>>>> V4L2_FLASH_STROBE_MODE_EXT_STROBE, >>>>>>>>> >>>>>>>>> }; >>>>>>>> >>>>>>>> [snip] >>>>>>>> >>>>>>>>> V4L2_CID_FLASH_LED_MODE (menu; LED) >>>>>>>>> >>>>>>>>> enum v4l2_flash_led_mode { >>>>>>>>> >>>>>>>>> V4L2_FLASH_LED_MODE_FLASH = 1, >>>>>>>>> V4L2_FLASH_LED_MODE_TORCH, >>>>>>>>> >>>>>>>>> }; >>>>>>>> >>>>>>>> Thinking about this some more, shouldn't we combine the two controls >>>>>>>> ? They are basically used to configure how the flash LED is >>>>>>>> controlled: manually (torch mode), automatically by the flash >>>>>>>> controller (software strobe mode) or automatically by an external >>>>>>>> component (external strobe mode). >>>>>>> >>>>>>> That's a good question. >>>>>>> >>>>>>> The adp1653 supports also additional control (not implemented in the >>>>>>> driver, though) that affect hardware strobe length. Based on register >>>>>>> setting, the led will be on after strobe either until the timeout >>>>>>> expires, or until the strobe signal is high. >>>>>>> >>>>>>> Should this be also part of the same control, or a different one? >>>>>> >>>>>> That can be controlled by a duration control. If the duration is 0, >>>>>> the flash is lit for the duration of the external strobe, otherwise >>>>>> it's lit for the programmed duration. >>>>> >>>>> Sounds good to me. >>>> >>>> Thinking about this again; there won't be a separate duration control >>> >>> Why not ? I think we need two timeouts, a watchdog timeout to prevent >>> flash fire or meltdown, and a normal timeout to lit the flash for a >>> user-selected duration. >> >> Let's assume that an application wants to expose a frame using flash >> with software strobe. >> >> 1. strobe flash >> 2. qbuf >> 3. streamon >> 4. dqbuf >> 5. streamoff >> 6. ... >> >> How does an application know how long is the time between 1 -- 4? I'd >> guess that in 6 the application would like to switch off the flash >> instead of specifying a timeout for it. > > That's a valid use case, and we need to support it. It requires a way to lit > the flash with no timeout other than the watchdog timeout, and a way to turn > it off. > > However, I'm not sure we should rule out the usefulness of a duration-based > software flash strobe. Can't the two APIs coexist ? Or do you think a > duration-based API is useless ? I don't want to rule it out, but I don't see use for it either for the time being and thus don't see a reason to specify an API for it. The adp1653 driver does not implement a software based shutdown timeout and I'm not aware of others implementing it either. It was just an idea to overcome the coarse hardware watchdog timeout. If there is use for it then I think we could bring up the question again: use V4L2_CID_FLASH_TIMEOUT or create V4L2_CID_FLASH_DURATION for it. What do you think? -- Sakari Ailus sakari.ailus@xxxxxxxxxxxxxxxxxxxxxxxxxx -- 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