Skip to content

Commit

Permalink
mfd: Use SI-units for the lm3533 max-current interface
Browse files Browse the repository at this point in the history
Use SI-units (uA) for max-current interface (5000 - 29800 uA).

Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
  • Loading branch information
jhovold authored and Samuel Ortiz committed May 20, 2012
1 parent 7af5e87 commit 6fa4b9d
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 17 deletions.
43 changes: 29 additions & 14 deletions drivers/mfd/lm3533-ctrlbank.c
Expand Up @@ -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
Expand Down Expand Up @@ -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) \
{ \
Expand Down Expand Up @@ -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:
*
Expand Down
7 changes: 4 additions & 3 deletions include/linux/mfd/lm3533.h
Expand Up @@ -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 */
};

Expand Down Expand Up @@ -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);

Expand Down

0 comments on commit 6fa4b9d

Please sign in to comment.