lkml.org 
[lkml]   [2011]   [Nov]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[154/262] drivers/power/ds2780_battery.c: create central point for calling w1 interface
    3.0-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Clifton Barnes <cabarnes@indesign-llc.com>

    commit 853eee72f74f449797f0500ea19fc1bf497428d8 upstream.

    Simply creates one point to call the w1 interface.

    Signed-off-by: Clifton Barnes <cabarnes@indesign-llc.com>
    Cc: Evgeniy Polyakov <zbr@ioremap.net>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/power/ds2780_battery.c | 77 ++++++++++++++++++++++-------------------
    1 file changed, 42 insertions(+), 35 deletions(-)

    --- a/drivers/power/ds2780_battery.c
    +++ b/drivers/power/ds2780_battery.c
    @@ -49,8 +49,8 @@ enum current_types {
    static const char model[] = "DS2780";
    static const char manufacturer[] = "Maxim/Dallas";

    -static inline struct ds2780_device_info *to_ds2780_device_info(
    - struct power_supply *psy)
    +static inline struct ds2780_device_info *
    +to_ds2780_device_info(struct power_supply *psy)
    {
    return container_of(psy, struct ds2780_device_info, bat);
    }
    @@ -60,17 +60,25 @@ static inline struct power_supply *to_po
    return dev_get_drvdata(dev);
    }

    -static inline int ds2780_read8(struct device *dev, u8 *val, int addr)
    +static inline int ds2780_battery_io(struct ds2780_device_info *dev_info,
    + char *buf, int addr, size_t count, int io)
    {
    - return w1_ds2780_io(dev, val, addr, sizeof(u8), 0);
    + return w1_ds2780_io(dev_info->w1_dev, buf, addr, count, io);
    }

    -static int ds2780_read16(struct device *dev, s16 *val, int addr)
    +static inline int ds2780_read8(struct ds2780_device_info *dev_info, u8 *val,
    + int addr)
    +{
    + return ds2780_battery_io(dev_info, val, addr, sizeof(u8), 0);
    +}
    +
    +static int ds2780_read16(struct ds2780_device_info *dev_info, s16 *val,
    + int addr)
    {
    int ret;
    u8 raw[2];

    - ret = w1_ds2780_io(dev, raw, addr, sizeof(u8) * 2, 0);
    + ret = ds2780_battery_io(dev_info, raw, addr, sizeof(raw), 0);
    if (ret < 0)
    return ret;

    @@ -79,16 +87,16 @@ static int ds2780_read16(struct device *
    return 0;
    }

    -static inline int ds2780_read_block(struct device *dev, u8 *val, int addr,
    - size_t count)
    +static inline int ds2780_read_block(struct ds2780_device_info *dev_info,
    + u8 *val, int addr, size_t count)
    {
    - return w1_ds2780_io(dev, val, addr, count, 0);
    + return ds2780_battery_io(dev_info, val, addr, count, 0);
    }

    -static inline int ds2780_write(struct device *dev, u8 *val, int addr,
    - size_t count)
    +static inline int ds2780_write(struct ds2780_device_info *dev_info, u8 *val,
    + int addr, size_t count)
    {
    - return w1_ds2780_io(dev, val, addr, count, 1);
    + return ds2780_battery_io(dev_info, val, addr, count, 1);
    }

    static inline int ds2780_store_eeprom(struct device *dev, int addr)
    @@ -122,7 +130,7 @@ static int ds2780_set_sense_register(str
    {
    int ret;

    - ret = ds2780_write(dev_info->w1_dev, &conductance,
    + ret = ds2780_write(dev_info, &conductance,
    DS2780_RSNSP_REG, sizeof(u8));
    if (ret < 0)
    return ret;
    @@ -134,7 +142,7 @@ static int ds2780_set_sense_register(str
    static int ds2780_get_rsgain_register(struct ds2780_device_info *dev_info,
    u16 *rsgain)
    {
    - return ds2780_read16(dev_info->w1_dev, rsgain, DS2780_RSGAIN_MSB_REG);
    + return ds2780_read16(dev_info, rsgain, DS2780_RSGAIN_MSB_REG);
    }

    /* Set RSGAIN value from 0 to 1.999 in steps of 0.001 */
    @@ -144,8 +152,8 @@ static int ds2780_set_rsgain_register(st
    int ret;
    u8 raw[] = {rsgain >> 8, rsgain & 0xFF};

    - ret = ds2780_write(dev_info->w1_dev, raw,
    - DS2780_RSGAIN_MSB_REG, sizeof(u8) * 2);
    + ret = ds2780_write(dev_info, raw,
    + DS2780_RSGAIN_MSB_REG, sizeof(raw));
    if (ret < 0)
    return ret;

    @@ -167,7 +175,7 @@ static int ds2780_get_voltage(struct ds2
    * Bits 2 - 0 of the voltage value are in bits 7 - 5 of the
    * voltage LSB register
    */
    - ret = ds2780_read16(dev_info->w1_dev, &voltage_raw,
    + ret = ds2780_read16(dev_info, &voltage_raw,
    DS2780_VOLT_MSB_REG);
    if (ret < 0)
    return ret;
    @@ -196,7 +204,7 @@ static int ds2780_get_temperature(struct
    * Bits 2 - 0 of the temperature value are in bits 7 - 5 of the
    * temperature LSB register
    */
    - ret = ds2780_read16(dev_info->w1_dev, &temperature_raw,
    + ret = ds2780_read16(dev_info, &temperature_raw,
    DS2780_TEMP_MSB_REG);
    if (ret < 0)
    return ret;
    @@ -222,13 +230,13 @@ static int ds2780_get_current(struct ds2
    * The units of measurement for current are dependent on the value of
    * the sense resistor.
    */
    - ret = ds2780_read8(dev_info->w1_dev, &sense_res_raw, DS2780_RSNSP_REG);
    + ret = ds2780_read8(dev_info, &sense_res_raw, DS2780_RSNSP_REG);
    if (ret < 0)
    return ret;

    if (sense_res_raw == 0) {
    dev_err(dev_info->dev, "sense resistor value is 0\n");
    - return -ENXIO;
    + return -EINVAL;
    }
    sense_res = 1000 / sense_res_raw;

    @@ -248,7 +256,7 @@ static int ds2780_get_current(struct ds2
    * Bits 7 - 0 of the current value are in bits 7 - 0 of the current
    * LSB register
    */
    - ret = ds2780_read16(dev_info->w1_dev, &current_raw, reg_msb);
    + ret = ds2780_read16(dev_info, &current_raw, reg_msb);
    if (ret < 0)
    return ret;

    @@ -267,7 +275,7 @@ static int ds2780_get_accumulated_curren
    * The units of measurement for accumulated current are dependent on
    * the value of the sense resistor.
    */
    - ret = ds2780_read8(dev_info->w1_dev, &sense_res_raw, DS2780_RSNSP_REG);
    + ret = ds2780_read8(dev_info, &sense_res_raw, DS2780_RSNSP_REG);
    if (ret < 0)
    return ret;

    @@ -285,7 +293,7 @@ static int ds2780_get_accumulated_curren
    * Bits 7 - 0 of the ACR value are in bits 7 - 0 of the ACR
    * LSB register
    */
    - ret = ds2780_read16(dev_info->w1_dev, &current_raw, DS2780_ACR_MSB_REG);
    + ret = ds2780_read16(dev_info, &current_raw, DS2780_ACR_MSB_REG);
    if (ret < 0)
    return ret;

    @@ -299,7 +307,7 @@ static int ds2780_get_capacity(struct ds
    int ret;
    u8 raw;

    - ret = ds2780_read8(dev_info->w1_dev, &raw, DS2780_RARC_REG);
    + ret = ds2780_read8(dev_info, &raw, DS2780_RARC_REG);
    if (ret < 0)
    return ret;

    @@ -345,7 +353,7 @@ static int ds2780_get_charge_now(struct
    * Bits 7 - 0 of the RAAC value are in bits 7 - 0 of the RAAC
    * LSB register
    */
    - ret = ds2780_read16(dev_info->w1_dev, &charge_raw, DS2780_RAAC_MSB_REG);
    + ret = ds2780_read16(dev_info, &charge_raw, DS2780_RAAC_MSB_REG);
    if (ret < 0)
    return ret;

    @@ -356,7 +364,7 @@ static int ds2780_get_charge_now(struct
    static int ds2780_get_control_register(struct ds2780_device_info *dev_info,
    u8 *control_reg)
    {
    - return ds2780_read8(dev_info->w1_dev, control_reg, DS2780_CONTROL_REG);
    + return ds2780_read8(dev_info, control_reg, DS2780_CONTROL_REG);
    }

    static int ds2780_set_control_register(struct ds2780_device_info *dev_info,
    @@ -364,7 +372,7 @@ static int ds2780_set_control_register(s
    {
    int ret;

    - ret = ds2780_write(dev_info->w1_dev, &control_reg,
    + ret = ds2780_write(dev_info, &control_reg,
    DS2780_CONTROL_REG, sizeof(u8));
    if (ret < 0)
    return ret;
    @@ -503,7 +511,7 @@ static ssize_t ds2780_get_sense_resistor
    struct power_supply *psy = to_power_supply(dev);
    struct ds2780_device_info *dev_info = to_ds2780_device_info(psy);

    - ret = ds2780_read8(dev_info->w1_dev, &sense_resistor, DS2780_RSNSP_REG);
    + ret = ds2780_read8(dev_info, &sense_resistor, DS2780_RSNSP_REG);
    if (ret < 0)
    return ret;

    @@ -584,7 +592,7 @@ static ssize_t ds2780_get_pio_pin(struct
    struct power_supply *psy = to_power_supply(dev);
    struct ds2780_device_info *dev_info = to_ds2780_device_info(psy);

    - ret = ds2780_read8(dev_info->w1_dev, &sfr, DS2780_SFR_REG);
    + ret = ds2780_read8(dev_info, &sfr, DS2780_SFR_REG);
    if (ret < 0)
    return ret;

    @@ -611,7 +619,7 @@ static ssize_t ds2780_set_pio_pin(struct
    return -EINVAL;
    }

    - ret = ds2780_write(dev_info->w1_dev, &new_setting,
    + ret = ds2780_write(dev_info, &new_setting,
    DS2780_SFR_REG, sizeof(u8));
    if (ret < 0)
    return ret;
    @@ -632,7 +640,7 @@ static ssize_t ds2780_read_param_eeprom_
    DS2780_EEPROM_BLOCK1_END -
    DS2780_EEPROM_BLOCK1_START + 1 - off);

    - return ds2780_read_block(dev_info->w1_dev, buf,
    + return ds2780_read_block(dev_info, buf,
    DS2780_EEPROM_BLOCK1_START + off, count);
    }

    @@ -650,7 +658,7 @@ static ssize_t ds2780_write_param_eeprom
    DS2780_EEPROM_BLOCK1_END -
    DS2780_EEPROM_BLOCK1_START + 1 - off);

    - ret = ds2780_write(dev_info->w1_dev, buf,
    + ret = ds2780_write(dev_info, buf,
    DS2780_EEPROM_BLOCK1_START + off, count);
    if (ret < 0)
    return ret;
    @@ -685,9 +693,8 @@ static ssize_t ds2780_read_user_eeprom_b
    DS2780_EEPROM_BLOCK0_END -
    DS2780_EEPROM_BLOCK0_START + 1 - off);

    - return ds2780_read_block(dev_info->w1_dev, buf,
    + return ds2780_read_block(dev_info, buf,
    DS2780_EEPROM_BLOCK0_START + off, count);
    -
    }

    static ssize_t ds2780_write_user_eeprom_bin(struct file *filp,
    @@ -704,7 +711,7 @@ static ssize_t ds2780_write_user_eeprom_
    DS2780_EEPROM_BLOCK0_END -
    DS2780_EEPROM_BLOCK0_START + 1 - off);

    - ret = ds2780_write(dev_info->w1_dev, buf,
    + ret = ds2780_write(dev_info, buf,
    DS2780_EEPROM_BLOCK0_START + off, count);
    if (ret < 0)
    return ret;



    \
     
     \ /
      Last update: 2011-11-10 06:03    [W:0.034 / U:0.796 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site