• Milo Kim's avatar
    leds:lp55xx: fix firmware loading error · b6789320
    Milo Kim authored
    LP55xx driver uses not firmware file but raw data to load program through
    the firmware interface.(Documents/leds/leds-lp55xx.txt)
    
      For example, here is how to run blinking green channel pattern.
      (The second engine is seleted and MUX is mapped to 'RGB' mode)
      echo 2 > /sys/bus/i2c/devices/xxxx/select_engine
      echo "RGB" > /sys/bus/i2c/devices/xxxx/engine_mux
      echo 1 > /sys/class/firmware/lp5562/loading
      echo "4000600040FF6000" > /sys/class/firmware/lp5562/data
      echo 0 > /sys/class/firmware/lp5562/loading
      echo 1 > /sys/bus/i2c/devices/xxxx/run_engine
    
    However, '/sys/class/firmware/<device name>' is not created after the
    firmware loader user helper was introduced.
    This feature is used in the case below.
    
      As soon as the firmware download is requested by the driver, firmware
      class subsystem tries to find the binary file.
      If it gets failed, then it just falls back to user helper to load
      raw data manually. Here, you can see the device file under
      /sys/class/firmware/.
    
    To make it happen, LP55xx driver requires two configurations.
    
      1. Enable CONFIG_FW_LOADER_USER_HELPER_FALLBACK in Kconfig
      2. Set option, 'FW_OPT_USERHELPER' on requesting the firmware data.
         It means the second option should be 'false' in
         request_firmware_nowait().
         This option enables to load firmware data manually by calling
         fw_load_from_user_helper().
    
    Cc: linux-leds@vger.kernel.org
    Signed-off-by: default avatarMilo Kim <milo.kim@ti.com>
    Acked-by: default avatarJacek Anaszewski <j.anaszewski@samsung.com>
    Signed-off-by: default avatarBryan Wu <cooloney@gmail.com>
    b6789320
leds-lp55xx-common.c 13.6 KB