Hi folks,
The original design decision in the V4L2 flash API allows controlling a two LEDs (an indicator and a flash) through a single sub-device. This covered virtually all flash driver chips back then but this no longer holds as there are many LED driver chips with multiple flash LED outputs. This necessitates creating as many sub-devices as there are flash LEDs.
Additionally the flash LEDs can be associated to different sensors. This is not unconceivable although not very probable.
This patchset splits the indicator and flash LEDs exposed by the V4L2 flash class framework into multiple sub-devices. This way the driver creates the sub-devices individually for each LED which will also facilitate fwnode matching (e.g. will you refer to LED or a LED driver chip with a phandle?).
Note that this set depends on patch 85f7ff9702bc ("media: v4l2-flash: Use led_classdev instead of led_classdev_flash for indicator") in mediatree master.
since v2:
- Add Hans's acks and Rui's reviewed-by.
- Use IS_ERR() instead of IS_ERR_OR_NULL() to check v4l2_flash_init() success --- it never returns NULL.
since v1:
- Drop patch "staging: greybus: light: Don't leak memory for no gain" in favour of Rui's "staging: greybus: light: fix memory leak in v4l2 register".
- Rebase "staging: greybus: light: fix memory leak in v4l2 register" on "media: v4l2-flash: Use led_classdev instead of led_classdev_flash for indicator" already in mediatree.
- Add "v4l2-flash-led-class: Document v4l2_flash_init() references" to the set.
Rui Miguel Silva (1): staging: greybus: light: fix memory leak in v4l2 register
Sakari Ailus (2): v4l2-flash-led-class: Create separate sub-devices for indicators v4l2-flash-led-class: Document v4l2_flash_init() references
drivers/leds/leds-aat1290.c | 4 +- drivers/leds/leds-max77693.c | 4 +- drivers/media/v4l2-core/v4l2-flash-led-class.c | 113 +++++++++++++++---------- drivers/staging/greybus/light.c | 42 ++++----- include/media/v4l2-flash-led-class.h | 47 +++++++--- 5 files changed, 127 insertions(+), 83 deletions(-)