lkml.org 
[lkml]   [2012]   [May]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/2] mfd: lm3533: use SI-units for max-current interface
    Date
    Use SI-units (uA) for max-current interface (5000 - 29800 uA).

    Signed-off-by: Johan Hovold <jhovold@gmail.com>
    ---
    drivers/mfd/lm3533-ctrlbank.c | 43 +++++++++++++++++++++++++++-------------
    include/linux/mfd/lm3533.h | 7 +++--
    2 files changed, 33 insertions(+), 17 deletions(-)

    diff --git a/drivers/mfd/lm3533-ctrlbank.c b/drivers/mfd/lm3533-ctrlbank.c
    index adf4c1a..a4cb7a5 100644
    --- a/drivers/mfd/lm3533-ctrlbank.c
    +++ b/drivers/mfd/lm3533-ctrlbank.c
    @@ -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) \
    { \
    @@ -102,19 +130,6 @@ 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:
    *
    * bit 5 - PWM-input enabled in Zone 4
    diff --git a/include/linux/mfd/lm3533.h b/include/linux/mfd/lm3533.h
    index 7cfef9e..9660feb 100644
    --- a/include/linux/mfd/lm3533.h
    +++ b/include/linux/mfd/lm3533.h
    @@ -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);

    --
    1.7.8.5


    \
     
     \ /
      Last update: 2012-05-10 20:01    [W:0.028 / U:90.088 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site