as3645a: Use integer numbers for parsing LEDs
Use integer numbers for LEDs, 0 is the flash and 1 is the indicator. Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Acked-by: Pavel Machek <pavel@ucw.cz> Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
This commit is contained in:
parent
75f9f7279e
commit
e626c32527
|
@ -267,15 +267,19 @@
|
||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
|
|
||||||
as3645a@30 {
|
as3645a@30 {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
reg = <0x30>;
|
reg = <0x30>;
|
||||||
compatible = "ams,as3645a";
|
compatible = "ams,as3645a";
|
||||||
flash {
|
flash@0 {
|
||||||
|
reg = <0x0>;
|
||||||
flash-timeout-us = <150000>;
|
flash-timeout-us = <150000>;
|
||||||
flash-max-microamp = <320000>;
|
flash-max-microamp = <320000>;
|
||||||
led-max-microamp = <60000>;
|
led-max-microamp = <60000>;
|
||||||
ams,input-max-microamp = <1750000>;
|
ams,input-max-microamp = <1750000>;
|
||||||
};
|
};
|
||||||
indicator {
|
indicator@1 {
|
||||||
|
reg = <0x1>;
|
||||||
led-max-microamp = <10000>;
|
led-max-microamp = <10000>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -112,6 +112,10 @@
|
||||||
#define AS_PEAK_mA_TO_REG(a) \
|
#define AS_PEAK_mA_TO_REG(a) \
|
||||||
((min_t(u32, AS_PEAK_mA_MAX, a) - 1250) / 250)
|
((min_t(u32, AS_PEAK_mA_MAX, a) - 1250) / 250)
|
||||||
|
|
||||||
|
/* LED numbers for Devicetree */
|
||||||
|
#define AS_LED_FLASH 0
|
||||||
|
#define AS_LED_INDICATOR 1
|
||||||
|
|
||||||
enum as_mode {
|
enum as_mode {
|
||||||
AS_MODE_EXT_TORCH = 0 << AS_CONTROL_MODE_SETTING_SHIFT,
|
AS_MODE_EXT_TORCH = 0 << AS_CONTROL_MODE_SETTING_SHIFT,
|
||||||
AS_MODE_INDICATOR = 1 << AS_CONTROL_MODE_SETTING_SHIFT,
|
AS_MODE_INDICATOR = 1 << AS_CONTROL_MODE_SETTING_SHIFT,
|
||||||
|
@ -491,10 +495,29 @@ static int as3645a_parse_node(struct as3645a *flash,
|
||||||
struct device_node *node)
|
struct device_node *node)
|
||||||
{
|
{
|
||||||
struct as3645a_config *cfg = &flash->cfg;
|
struct as3645a_config *cfg = &flash->cfg;
|
||||||
|
struct device_node *child;
|
||||||
const char *name;
|
const char *name;
|
||||||
int rval;
|
int rval;
|
||||||
|
|
||||||
flash->flash_node = of_get_child_by_name(node, "flash");
|
for_each_child_of_node(node, child) {
|
||||||
|
u32 id = 0;
|
||||||
|
|
||||||
|
of_property_read_u32(child, "reg", &id);
|
||||||
|
|
||||||
|
switch (id) {
|
||||||
|
case AS_LED_FLASH:
|
||||||
|
flash->flash_node = of_node_get(child);
|
||||||
|
break;
|
||||||
|
case AS_LED_INDICATOR:
|
||||||
|
flash->indicator_node = of_node_get(child);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
dev_warn(&flash->client->dev,
|
||||||
|
"unknown LED %u encountered, ignoring\n", id);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!flash->flash_node) {
|
if (!flash->flash_node) {
|
||||||
dev_err(&flash->client->dev, "can't find flash node\n");
|
dev_err(&flash->client->dev, "can't find flash node\n");
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
@ -538,7 +561,6 @@ static int as3645a_parse_node(struct as3645a *flash,
|
||||||
&cfg->peak);
|
&cfg->peak);
|
||||||
cfg->peak = AS_PEAK_mA_TO_REG(cfg->peak);
|
cfg->peak = AS_PEAK_mA_TO_REG(cfg->peak);
|
||||||
|
|
||||||
flash->indicator_node = of_get_child_by_name(node, "indicator");
|
|
||||||
if (!flash->indicator_node) {
|
if (!flash->indicator_node) {
|
||||||
dev_warn(&flash->client->dev,
|
dev_warn(&flash->client->dev,
|
||||||
"can't find indicator node\n");
|
"can't find indicator node\n");
|
||||||
|
|
Loading…
Reference in New Issue