* [PATCH] leds:lp55xx: fix firmware loading error
@ 2015-06-25 19:33 Milo Kim
2015-06-26 9:04 ` Jacek Anaszewski
0 siblings, 1 reply; 2+ messages in thread
From: Milo Kim @ 2015-06-25 19:33 UTC (permalink / raw)
To: cooloney; +Cc: Milo Kim, Jacek Anaszewski, linux-leds
LP55xx driver uses not firmware file but raw data to load program data through
the firmware interface.(Documents/leds/leds-lp55xx.txt)
For example, run blinking green channel pattern,
echo 2 > /sys/bus/i2c/devices/xxxx/select_engine # 2 is for green channel
echo "RGB" > /sys/bus/i2c/devices/xxxx/engine_mux # engine mux for RGB
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
firmware load user helper was introduced.
LP55xx driver requires not only enabling CONFIG_FW_LOADER_USER_HELPER_FALLBACK
but also option, 'FW_OPT_USERHELPER'.
When _request_firmware() is invoked, this option enables to load raw data
manually (aka, fw_load_from_user_helper() is called)
The second parameter 'uevent' of request_firmware_nowait() is used for this
option, 'FW_OPT_USERHELPER'.
Signed-off-by: Milo Kim <milo.kim@ti.com>
Cc: Bryan Wu <cooloney@gmail.com>
Cc: Jacek Anaszewski <j.anaszewski@samsung.com>
Cc: linux-leds@vger.kernel.org
---
drivers/leds/Kconfig | 1 +
drivers/leds/leds-lp55xx-common.c | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
index 966b960..a39d608 100644
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
@@ -206,6 +206,7 @@ config LEDS_LP55XX_COMMON
tristate "Common Driver for TI/National LP5521/5523/55231/5562/8501"
depends on LEDS_LP5521 || LEDS_LP5523 || LEDS_LP5562 || LEDS_LP8501
select FW_LOADER
+ select FW_LOADER_USER_HELPER_FALLBACK
help
This option supports common operations for LP5521/5523/55231/5562/8501
devices.
diff --git a/drivers/leds/leds-lp55xx-common.c b/drivers/leds/leds-lp55xx-common.c
index 77c26bc..96d51e9 100644
--- a/drivers/leds/leds-lp55xx-common.c
+++ b/drivers/leds/leds-lp55xx-common.c
@@ -223,7 +223,7 @@ static int lp55xx_request_firmware(struct lp55xx_chip *chip)
const char *name = chip->cl->name;
struct device *dev = &chip->cl->dev;
- return request_firmware_nowait(THIS_MODULE, true, name, dev,
+ return request_firmware_nowait(THIS_MODULE, false, name, dev,
GFP_KERNEL, chip, lp55xx_firmware_loaded);
}
--
1.9.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] leds:lp55xx: fix firmware loading error
2015-06-25 19:33 [PATCH] leds:lp55xx: fix firmware loading error Milo Kim
@ 2015-06-26 9:04 ` Jacek Anaszewski
0 siblings, 0 replies; 2+ messages in thread
From: Jacek Anaszewski @ 2015-06-26 9:04 UTC (permalink / raw)
To: Milo Kim; +Cc: cooloney, linux-leds
Hi Milo,
Thanks for the patch.
On 06/25/2015 09:33 PM, Milo Kim wrote:
> LP55xx driver uses not firmware file but raw data to load program data through
> the firmware interface.(Documents/leds/leds-lp55xx.txt)
>
> For example, run blinking green channel pattern,
> echo 2 > /sys/bus/i2c/devices/xxxx/select_engine # 2 is for green channel
> echo "RGB" > /sys/bus/i2c/devices/xxxx/engine_mux # engine mux for RGB
> 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
Please don't exceed 75 characters line length limit.
>
> However, '/sys/class/firmware/<device name>' is not created after
> firmware load user helper was introduced.
>
> LP55xx driver requires not only enabling CONFIG_FW_LOADER_USER_HELPER_FALLBACK
> but also option, 'FW_OPT_USERHELPER'.
> When _request_firmware() is invoked, this option enables to load raw data
> manually (aka, fw_load_from_user_helper() is called)
> The second parameter 'uevent' of request_firmware_nowait() is used for this
> option, 'FW_OPT_USERHELPER'.
Could you describe it more clearly, i.e. how 'uevent' is used for the
option FW_OPT_USERHELPER? I can't get the relationship without going
deeper into details.
>
> Signed-off-by: Milo Kim <milo.kim@ti.com>
> Cc: Bryan Wu <cooloney@gmail.com>
> Cc: Jacek Anaszewski <j.anaszewski@samsung.com>
> Cc: linux-leds@vger.kernel.org
> ---
> drivers/leds/Kconfig | 1 +
> drivers/leds/leds-lp55xx-common.c | 2 +-
> 2 files changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
> index 966b960..a39d608 100644
> --- a/drivers/leds/Kconfig
> +++ b/drivers/leds/Kconfig
> @@ -206,6 +206,7 @@ config LEDS_LP55XX_COMMON
> tristate "Common Driver for TI/National LP5521/5523/55231/5562/8501"
> depends on LEDS_LP5521 || LEDS_LP5523 || LEDS_LP5562 || LEDS_LP8501
> select FW_LOADER
> + select FW_LOADER_USER_HELPER_FALLBACK
> help
> This option supports common operations for LP5521/5523/55231/5562/8501
> devices.
> diff --git a/drivers/leds/leds-lp55xx-common.c b/drivers/leds/leds-lp55xx-common.c
> index 77c26bc..96d51e9 100644
> --- a/drivers/leds/leds-lp55xx-common.c
> +++ b/drivers/leds/leds-lp55xx-common.c
> @@ -223,7 +223,7 @@ static int lp55xx_request_firmware(struct lp55xx_chip *chip)
> const char *name = chip->cl->name;
> struct device *dev = &chip->cl->dev;
>
> - return request_firmware_nowait(THIS_MODULE, true, name, dev,
> + return request_firmware_nowait(THIS_MODULE, false, name, dev,
> GFP_KERNEL, chip, lp55xx_firmware_loaded);
> }
>
>
--
Best Regards,
Jacek Anaszewski
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-06-26 9:04 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-06-25 19:33 [PATCH] leds:lp55xx: fix firmware loading error Milo Kim
2015-06-26 9:04 ` Jacek Anaszewski
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.