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

Commit 6fa4b9d8 authored by Johan Hovold's avatar Johan Hovold Committed by Samuel Ortiz
Browse files

mfd: Use SI-units for the lm3533 max-current interface



Use SI-units (uA) for max-current interface (5000 - 29800 uA).

Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
parent 7af5e87d
Loading
Loading
Loading
Loading
+29 −14
Original line number Diff line number Diff line
@@ -17,8 +17,11 @@
#include <linux/mfd/lm3533.h>


#define LM3533_MAX_CURRENT_MIN		5000
#define LM3533_MAX_CURRENT_MAX		29800
#define LM3533_MAX_CURRENT_STEP		800

#define LM3533_BRIGHTNESS_MAX		255
#define LM3533_MAX_CURRENT_MAX		31
#define LM3533_PWM_MAX			0x3f

#define LM3533_REG_PWM_BASE		0x14
@@ -65,6 +68,31 @@ int lm3533_ctrlbank_disable(struct lm3533_ctrlbank *cb)
}
EXPORT_SYMBOL_GPL(lm3533_ctrlbank_disable);

/*
 * Full-scale current.
 *
 * imax		5000 - 29800 uA (800 uA step)
 */
int lm3533_ctrlbank_set_max_current(struct lm3533_ctrlbank *cb, u16 imax)
{
	u8 reg;
	u8 val;
	int ret;

	if (imax < LM3533_MAX_CURRENT_MIN || imax > LM3533_MAX_CURRENT_MAX)
		return -EINVAL;

	val = (imax - LM3533_MAX_CURRENT_MIN) / LM3533_MAX_CURRENT_STEP;

	reg = lm3533_ctrlbank_get_reg(cb, LM3533_REG_MAX_CURRENT_BASE);
	ret = lm3533_write(cb->lm3533, reg, val);
	if (ret)
		dev_err(cb->dev, "failed to set max current\n");

	return ret;
}
EXPORT_SYMBOL_GPL(lm3533_ctrlbank_set_max_current);

#define lm3533_ctrlbank_set(_name, _NAME)				\
int lm3533_ctrlbank_set_##_name(struct lm3533_ctrlbank *cb, u8 val)	\
{									\
@@ -101,19 +129,6 @@ EXPORT_SYMBOL_GPL(lm3533_ctrlbank_get_##_name);
lm3533_ctrlbank_set(brightness, BRIGHTNESS);
lm3533_ctrlbank_get(brightness, BRIGHTNESS);

/*
 * Full scale current.
 *
 * Imax = 5 + val * 0.8 mA, e.g.:
 *
 *    0 - 5 mA
 *     ...
 *   19 - 20.2 mA (default)
 *     ...
 *   31 - 29.8 mA
 */
lm3533_ctrlbank_set(max_current, MAX_CURRENT);

/*
 * PWM-input control mask:
 *
+4 −3
Original line number Diff line number Diff line
@@ -47,15 +47,15 @@ struct lm3533_als_platform_data {

struct lm3533_bl_platform_data {
	char *name;
	u16 max_current;		/* 5000 - 29800 uA (800 uA step) */
	u8 default_brightness;		/* 0 - 255 */
	u8 max_current;			/* 0 - 31 */
	u8 pwm;				/* 0 - 0x3f */
};

struct lm3533_led_platform_data {
	char *name;
	const char *default_trigger;
	u8 max_current;			/* 0 - 31 */
	u16 max_current;		/* 5000 - 29800 uA (800 uA step) */
	u8 pwm;				/* 0 - 0x3f */
};

@@ -91,7 +91,8 @@ extern int lm3533_ctrlbank_disable(struct lm3533_ctrlbank *cb);

extern int lm3533_ctrlbank_set_brightness(struct lm3533_ctrlbank *cb, u8 val);
extern int lm3533_ctrlbank_get_brightness(struct lm3533_ctrlbank *cb, u8 *val);
extern int lm3533_ctrlbank_set_max_current(struct lm3533_ctrlbank *cb, u8 val);
extern int lm3533_ctrlbank_set_max_current(struct lm3533_ctrlbank *cb,
								u16 imax);
extern int lm3533_ctrlbank_set_pwm(struct lm3533_ctrlbank *cb, u8 val);
extern int lm3533_ctrlbank_get_pwm(struct lm3533_ctrlbank *cb, u8 *val);