static int wm8400_ldo_is_enabled(struct regulator_dev *dev) { struct wm8400 *wm8400 = rdev_get_drvdata(dev); u16 val; val = wm8400_reg_read(wm8400, WM8400_LDO1_CONTROL + rdev_get_id(dev)); return (val & WM8400_LDO1_ENA) != 0; }
static int wm8400_dcdc_is_enabled(struct regulator_dev *dev) { struct wm8400 *wm8400 = rdev_get_drvdata(dev); int offset = (rdev_get_id(dev) - WM8400_DCDC1) * 2; u16 val; val = wm8400_reg_read(wm8400, WM8400_DCDC1_CONTROL_1 + offset); return (val & WM8400_DC1_ENA) != 0; }
static inline unsigned int wm8400_read(struct snd_soc_codec *codec, unsigned int reg) { struct wm8400_priv *wm8400 = snd_soc_codec_get_drvdata(codec); if (reg == WM8400_INTDRIVBITS) return wm8400->fake_register; else return wm8400_reg_read(wm8400->wm8400, reg); }
static int wm8400_ldo_get_voltage_sel(struct regulator_dev *dev) { struct wm8400 *wm8400 = rdev_get_drvdata(dev); u16 val; val = wm8400_reg_read(wm8400, WM8400_LDO1_CONTROL + rdev_get_id(dev)); val &= WM8400_LDO1_VSEL_MASK; return val; }
static int wm8400_dcdc_get_voltage_sel(struct regulator_dev *dev) { struct wm8400 *wm8400 = rdev_get_drvdata(dev); u16 val; int offset = (rdev_get_id(dev) - WM8400_DCDC1) * 2; val = wm8400_reg_read(wm8400, WM8400_DCDC1_CONTROL_1 + offset); val &= WM8400_DC1_VSEL_MASK; return val; }
static int wm8400_ldo_get_voltage(struct regulator_dev *dev) { struct wm8400 *wm8400 = rdev_get_drvdata(dev); u16 val; val = wm8400_reg_read(wm8400, WM8400_LDO1_CONTROL + rdev_get_id(dev)); val &= WM8400_LDO1_VSEL_MASK; if (val < 15) return 900000 + (val * 50000); else return 1600000 + ((val - 14) * 100000); }