cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

leds-class-flash.rst (3268B)


      1==============================
      2Flash LED handling under Linux
      3==============================
      4
      5Some LED devices provide two modes - torch and flash. In the LED subsystem
      6those modes are supported by LED class (see Documentation/leds/leds-class.rst)
      7and LED Flash class respectively. The torch mode related features are enabled
      8by default and the flash ones only if a driver declares it by setting
      9LED_DEV_CAP_FLASH flag.
     10
     11In order to enable the support for flash LEDs CONFIG_LEDS_CLASS_FLASH symbol
     12must be defined in the kernel config. A LED Flash class driver must be
     13registered in the LED subsystem with led_classdev_flash_register function.
     14
     15Following sysfs attributes are exposed for controlling flash LED devices:
     16(see Documentation/ABI/testing/sysfs-class-led-flash)
     17
     18	- flash_brightness
     19	- max_flash_brightness
     20	- flash_timeout
     21	- max_flash_timeout
     22	- flash_strobe
     23	- flash_fault
     24
     25
     26V4L2 flash wrapper for flash LEDs
     27=================================
     28
     29A LED subsystem driver can be controlled also from the level of VideoForLinux2
     30subsystem. In order to enable this CONFIG_V4L2_FLASH_LED_CLASS symbol has to
     31be defined in the kernel config.
     32
     33The driver must call the v4l2_flash_init function to get registered in the
     34V4L2 subsystem. The function takes six arguments:
     35
     36- dev:
     37	flash device, e.g. an I2C device
     38- of_node:
     39	of_node of the LED, may be NULL if the same as device's
     40- fled_cdev:
     41	LED flash class device to wrap
     42- iled_cdev:
     43	LED flash class device representing indicator LED associated with
     44	fled_cdev, may be NULL
     45- ops:
     46	V4L2 specific ops
     47
     48	* external_strobe_set
     49		defines the source of the flash LED strobe -
     50		V4L2_CID_FLASH_STROBE control or external source, typically
     51		a sensor, which makes it possible to synchronise the flash
     52		strobe start with exposure start,
     53	* intensity_to_led_brightness and led_brightness_to_intensity
     54		perform
     55		enum led_brightness <-> V4L2 intensity conversion in a device
     56		specific manner - they can be used for devices with non-linear
     57		LED current scale.
     58- config:
     59	configuration for V4L2 Flash sub-device
     60
     61	* dev_name
     62		the name of the media entity, unique in the system,
     63	* flash_faults
     64		bitmask of flash faults that the LED flash class
     65		device can report; corresponding LED_FAULT* bit definitions are
     66		available in <linux/led-class-flash.h>,
     67	* torch_intensity
     68		constraints for the LED in TORCH mode
     69		in microamperes,
     70	* indicator_intensity
     71		constraints for the indicator LED
     72		in microamperes,
     73	* has_external_strobe
     74		determines whether the flash strobe source
     75		can be switched to external,
     76
     77On remove the v4l2_flash_release function has to be called, which takes one
     78argument - struct v4l2_flash pointer returned previously by v4l2_flash_init.
     79This function can be safely called with NULL or error pointer argument.
     80
     81Please refer to drivers/leds/leds-max77693.c for an exemplary usage of the
     82v4l2 flash wrapper.
     83
     84Once the V4L2 sub-device is registered by the driver which created the Media
     85controller device, the sub-device node acts just as a node of a native V4L2
     86flash API device would. The calls are simply routed to the LED flash API.
     87
     88Opening the V4L2 flash sub-device makes the LED subsystem sysfs interface
     89unavailable. The interface is re-enabled after the V4L2 flash sub-device
     90is closed.