Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 308745
b: refs/heads/master
c: 6fa4b9d
h: refs/heads/master
i:
  308743: 73f5679
v: v3
  • Loading branch information
Johan Hovold authored and Samuel Ortiz committed May 20, 2012
1 parent ceb587a commit e7a311f
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 18 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 7af5e87dc5e6b6f413ba95b06e06ebf810687858
refs/heads/master: 6fa4b9d802610116adf4b89c2f9bd155829aafd3
43 changes: 29 additions & 14 deletions trunk/drivers/mfd/lm3533-ctrlbank.c
Original file line number Diff line number Diff line change
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 trunk/include/linux/mfd/lm3533.h
Original file line number Diff line number Diff line change
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 e7a311f

Please sign in to comment.