staticint act8945a_set_suspend_state(struct regulator_dev *rdev, bool enable)
{ struct regmap *regmap = rdev->regmap; int id = rdev_get_id(rdev); int reg, val;
switch (id) { case ACT8945A_ID_DCDC1:
reg = ACT8945A_DCDC1_SUS;
val = 0xa8; break; case ACT8945A_ID_DCDC2:
reg = ACT8945A_DCDC2_SUS;
val = 0xa8; break; case ACT8945A_ID_DCDC3:
reg = ACT8945A_DCDC3_SUS;
val = 0xa8; break; case ACT8945A_ID_LDO1:
reg = ACT8945A_LDO1_SUS;
val = 0xe8; break; case ACT8945A_ID_LDO2:
reg = ACT8945A_LDO2_SUS;
val = 0xe8; break; case ACT8945A_ID_LDO3:
reg = ACT8945A_LDO3_SUS;
val = 0xe8; break; case ACT8945A_ID_LDO4:
reg = ACT8945A_LDO4_SUS;
val = 0xe8; break; default: return -EINVAL;
}
if (enable)
val |= BIT(4);
/* * Ask the PMIC to enable/disable this output when entering hibernate * mode.
*/ return regmap_write(regmap, reg, val);
}
staticunsignedint act8945a_of_map_mode(unsignedint mode)
{ switch (mode) { case ACT8945A_REGULATOR_MODE_FIXED: case ACT8945A_REGULATOR_MODE_NORMAL: return REGULATOR_MODE_NORMAL; case ACT8945A_REGULATOR_MODE_LOWPOWER: return REGULATOR_MODE_STANDBY; default: return REGULATOR_MODE_INVALID;
}
}
staticint act8945a_set_mode(struct regulator_dev *rdev, unsignedint mode)
{ struct act8945a_pmic *act8945a = rdev_get_drvdata(rdev); struct regmap *regmap = rdev->regmap; int id = rdev_get_id(rdev); int reg, ret, val = 0;
switch (id) { case ACT8945A_ID_DCDC1:
reg = ACT8945A_DCDC1_CTRL; break; case ACT8945A_ID_DCDC2:
reg = ACT8945A_DCDC2_CTRL; break; case ACT8945A_ID_DCDC3:
reg = ACT8945A_DCDC3_CTRL; break; case ACT8945A_ID_LDO1:
reg = ACT8945A_LDO1_CTRL; break; case ACT8945A_ID_LDO2:
reg = ACT8945A_LDO2_CTRL; break; case ACT8945A_ID_LDO3:
reg = ACT8945A_LDO3_CTRL; break; case ACT8945A_ID_LDO4:
reg = ACT8945A_LDO4_CTRL; break; default: return -EINVAL;
}
switch (mode) { case REGULATOR_MODE_STANDBY: if (id > ACT8945A_ID_DCDC3)
val = BIT(5); break; case REGULATOR_MODE_NORMAL: if (id <= ACT8945A_ID_DCDC3)
val = BIT(5); break; default: return -EINVAL;
}
ret = regmap_update_bits(regmap, reg, BIT(5), val); if (ret) return ret;
act8945a->op_mode[id] = mode;
return 0;
}
staticunsignedint act8945a_get_mode(struct regulator_dev *rdev)
{ struct act8945a_pmic *act8945a = rdev_get_drvdata(rdev); int id = rdev_get_id(rdev);
if (id < ACT8945A_ID_DCDC1 || id >= ACT8945A_ID_MAX) return -EINVAL;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.