Hi Sakari, 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 ? -- Regards, Laurent Pinchart -- 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