]> Pileus Git - ~andy/linux/blobdiff - drivers/power/rx51_battery.c
ARC: Add documentation on DT binding for ARC700 PMU
[~andy/linux] / drivers / power / rx51_battery.c
index 8a6288d87056ef40f92538ce30b30eded9763a9a..1bc5857b8bd5103c0f66bb0bdfb6798d2272c933 100644 (file)
 #include <linux/slab.h>
 #include <linux/i2c/twl4030-madc.h>
 
+/* RX51 specific channels */
+#define TWL4030_MADC_BTEMP_RX51        TWL4030_MADC_ADCIN0
+#define TWL4030_MADC_BCI_RX51  TWL4030_MADC_ADCIN4
+
 struct rx51_device_info {
        struct device *dev;
        struct power_supply bat;
@@ -37,7 +41,7 @@ static int rx51_battery_read_adc(int channel)
 {
        struct twl4030_madc_request req;
 
-       req.channels = 1 << channel;
+       req.channels = channel;
        req.do_avg = 1;
        req.method = TWL4030_MADC_SW1;
        req.func_cb = NULL;
@@ -47,7 +51,7 @@ static int rx51_battery_read_adc(int channel)
        if (twl4030_madc_conversion(&req) <= 0)
                return -ENODATA;
 
-       return req.rbuf[channel];
+       return req.rbuf[ffs(channel) - 1];
 }
 
 /*
@@ -56,7 +60,7 @@ static int rx51_battery_read_adc(int channel)
  */
 static int rx51_battery_read_voltage(struct rx51_device_info *di)
 {
-       int voltage = rx51_battery_read_adc(12);
+       int voltage = rx51_battery_read_adc(TWL4030_MADC_VBAT);
 
        if (voltage < 0)
                return voltage;
@@ -108,7 +112,7 @@ static int rx51_battery_read_temperature(struct rx51_device_info *di)
 {
        int min = 0;
        int max = ARRAY_SIZE(rx51_temp_table2) - 1;
-       int raw = rx51_battery_read_adc(0);
+       int raw = rx51_battery_read_adc(TWL4030_MADC_BTEMP_RX51);
 
        /* Zero and negative values are undefined */
        if (raw <= 0)
@@ -142,7 +146,7 @@ static int rx51_battery_read_temperature(struct rx51_device_info *di)
  */
 static int rx51_battery_read_capacity(struct rx51_device_info *di)
 {
-       int capacity = rx51_battery_read_adc(4);
+       int capacity = rx51_battery_read_adc(TWL4030_MADC_BCI_RX51);
 
        if (capacity < 0)
                return capacity;