return i2c_smbus_write_byte(client, command);
}
-static u32 max11801_dcm_sample_aux(struct i2c_client *client)
+static int max11801_dcm_sample_aux(struct i2c_client *client)
{
int ret;
int aux = 0;
- u32 sample_data;
+ int sample_data;
/* AUX_measurement */
max11801_dcm_write_command(client, AUX_measurement);
mdelay(5);
ret = i2c_smbus_read_i2c_block_data(client, FIFO_RD_AUX_MSB,
1, &aux_buf[0]);
- if (ret < 1) {
- dev_err(&client->dev, "FIFO_RD_AUX_MSB read fails\n");
+ if (ret < 0) {
+ dev_err(&client->dev, "FIFO_RD_AUX_MSB read failed (%d)\n",
+ ret);
return ret;
}
mdelay(5);
ret = i2c_smbus_read_i2c_block_data(client, FIFO_RD_AUX_LSB,
1, &aux_buf[1]);
- if (ret < 1) {
- dev_err(&client->dev, "FIFO_RD_AUX_LSB read fails\n");
+ if (ret < 0) {
+ dev_err(&client->dev, "FIFO_RD_AUX_LSB read failed (%d)\n",
+ ret);
return ret;
}
return sample_data;
}
-u32 max11801_read_adc(void)
+int max11801_read_adc(void)
{
- u32 adc_data;
+ int adc_data;
- if (!max11801_client) {
- pr_err("FAIL max11801_client not initialize\n");
- return -1;
- }
+ if (!max11801_client)
+ return -ENODEV;
adc_data = max11801_dcm_sample_aux(max11801_client);
return adc_data;
POWER_SUPPLY_PROP_CAPACITY_LEVEL,
};
-extern u32 max11801_read_adc(void);
+extern int max11801_read_adc(void);
static void max8903_charger_update_status(struct max8903_data *data)
{
u32 calibration_voltage(struct max8903_data *data)
{
u32 voltage_data = 0;
+ int adc_val = 0;
int i;
int offset;
offset = offset_charger;
/* simple average */
- for (i = 0; i < ADC_SAMPLE_COUNT; i++)
- voltage_data += max11801_read_adc()-offset;
+ for (i = 0; i < ADC_SAMPLE_COUNT; i++) {
+ adc_val = max11801_read_adc();
+ /* Check if touch driver is probed */
+ if (max11801_read_adc() < 0)
+ break;
+ voltage_data += adc_val - offset;
+ }
voltage_data = voltage_data / ADC_SAMPLE_COUNT;
dev_dbg(data->dev, "volt: %d\n", voltage_data);