static int ltc294x_reset(const struct ltc294x_info *info, int prescaler_exp) { int ret; u8 value; u8 control; /* Read status and control registers */ ret = ltc294x_read_regs(info->client, LTC294X_REG_CONTROL, &value, 1); if (ret < 0) { dev_err(&info->client->dev, "Could not read registers from device\n"); goto error_exit; } control = LTC294X_REG_CONTROL_PRESCALER_SET(prescaler_exp) | LTC294X_REG_CONTROL_ALCC_CONFIG_DISABLED; /* Put the 2943 into "monitor" mode, so it measures every 10 sec */ if (info->num_regs == LTC2943_NUM_REGS) control |= LTC2943_REG_CONTROL_MODE_SCAN; if (value != control) { ret = ltc294x_write_regs(info->client, LTC294X_REG_CONTROL, &control, 1); if (ret < 0) { dev_err(&info->client->dev, "Could not write register\n"); goto error_exit; } } return 0; error_exit: return ret; }
int ltc294x_reset( int prescaler_exp) { struct ltc294x_info *info = <c2943_info; int ret; u8 value[3]; u8 control; /* Read status and control registers */ ret = ltc294x_read_regs(info->client, LTC294X_REG_CONTROL, &value[0], 1); if (ret < 0) { dev_err(&info->client->dev, "Could not read registers from device\n"); goto error_exit; } control = LTC294X_REG_CONTROL_PRESCALER_SET(prescaler_exp) | LTC294X_REG_CONTROL_ALCC_CONFIG_OUTPUT_ALERT; /* Set the 2943 mode*/ if (info->num_regs == LTC2943_NUM_REGS) control |= LTC2943_REG_CONTROL_MODE_SCAN; do { if (value[0] != control) { ret = ltc294x_write_regs(info->client, LTC294X_REG_CONTROL, &control, 1); if (ret < 0) { dev_err(&info->client->dev, "Could not write register\n"); goto error_exit; } } /* Read status and control registers again */ ret = ltc294x_read_regs(info->client, LTC294X_REG_CONTROL, &value[0], 1); if (ret < 0) { dev_err(&info->client->dev, "Could not read registers from device\n"); goto error_exit; } } while(value[0]!= control); return 0; error_exit: return ret; }
static int ltc294x_reset(const struct ltc294x_info *info, int prescaler_exp) { int ret; u8 value; u8 control; /* Read status and control registers */ ret = ltc294x_read_regs(info->client, LTC294X_REG_CONTROL, &value, 1); if (ret < 0) { dev_err(&info->client->dev, "Could not read registers from device\n"); goto error_exit; } control = LTC294X_REG_CONTROL_PRESCALER_SET(prescaler_exp) | LTC294X_REG_CONTROL_ALCC_CONFIG_DISABLED; /* Put device into "monitor" mode */ switch (info->id) { case LTC2942_ID: /* 2942 measures every 2 sec */ control |= LTC2942_REG_CONTROL_MODE_SCAN; break; case LTC2943_ID: case LTC2944_ID: /* 2943 and 2944 measure every 10 sec */ control |= LTC2943_REG_CONTROL_MODE_SCAN; break; default: break; } if (value != control) { ret = ltc294x_write_regs(info->client, LTC294X_REG_CONTROL, &control, 1); if (ret < 0) { dev_err(&info->client->dev, "Could not write register\n"); goto error_exit; } } return 0; error_exit: return ret; }