Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e626c325 authored by Sakari Ailus's avatar Sakari Ailus Committed by Jacek Anaszewski
Browse files

as3645a: Use integer numbers for parsing LEDs



Use integer numbers for LEDs, 0 is the flash and 1 is the indicator.

Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
Acked-by: default avatarPavel Machek <pavel@ucw.cz>
Signed-off-by: default avatarJacek Anaszewski <jacek.anaszewski@gmail.com>
parent 75f9f727
Loading
Loading
Loading
Loading
+6 −2
Original line number Original line Diff line number Diff line
@@ -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>;
		};
		};
	};
	};
+24 −2
Original line number Original line Diff line number Diff line
@@ -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");