]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
mfd: Use SI-units for the lm3533 max-current interface
authorJohan Hovold <jhovold@gmail.com>
Thu, 10 May 2012 17:18:29 +0000 (19:18 +0200)
committerSamuel Ortiz <sameo@linux.intel.com>
Sun, 20 May 2012 15:27:02 +0000 (17:27 +0200)
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>
drivers/mfd/lm3533-ctrlbank.c
include/linux/mfd/lm3533.h

index adf4c1a542a99f3a021b27c0dc106453b67c54b7..a4cb7a5220a7dc4922dc990a1af7f2c973332e11 100644 (file)
 #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:
  *
index 7cfef9e4f41b38e4553ab75d0175bc8a0f749217..9660febe93c24d481d65e9f15120ded51c81b6cc 100644 (file)
@@ -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);