Lines Matching defs:s5m8767

14 #include <linux/mfd/samsung/s5m8767.h>
162 static int s5m8767_get_register(struct s5m8767_info *s5m8767, int reg_id,
191 for (i = 0; i < s5m8767->num_regulators; i++) {
192 if (s5m8767->opmode[i].id == reg_id) {
193 mode = s5m8767->opmode[i].mode;
198 if (i >= s5m8767->num_regulators)
206 static int s5m8767_get_vsel_reg(int reg_id, struct s5m8767_info *s5m8767)
222 if (s5m8767->buck2_gpiodvs)
223 reg += s5m8767->buck_gpioindex;
227 if (s5m8767->buck3_gpiodvs)
228 reg += s5m8767->buck_gpioindex;
232 if (s5m8767->buck4_gpiodvs)
233 reg += s5m8767->buck_gpioindex;
270 static inline int s5m8767_set_high(struct s5m8767_info *s5m8767)
272 int temp_index = s5m8767->buck_gpioindex;
274 gpio_set_value(s5m8767->buck_gpios[0], (temp_index >> 2) & 0x1);
275 gpio_set_value(s5m8767->buck_gpios[1], (temp_index >> 1) & 0x1);
276 gpio_set_value(s5m8767->buck_gpios[2], temp_index & 0x1);
281 static inline int s5m8767_set_low(struct s5m8767_info *s5m8767)
283 int temp_index = s5m8767->buck_gpioindex;
285 gpio_set_value(s5m8767->buck_gpios[2], temp_index & 0x1);
286 gpio_set_value(s5m8767->buck_gpios[1], (temp_index >> 1) & 0x1);
287 gpio_set_value(s5m8767->buck_gpios[0], (temp_index >> 2) & 0x1);
295 struct s5m8767_info *s5m8767 = rdev_get_drvdata(rdev);
304 if (reg_id == S5M8767_BUCK2 && s5m8767->buck2_gpiodvs)
305 buck234_vol = &s5m8767->buck2_vol[0];
306 else if (reg_id == S5M8767_BUCK3 && s5m8767->buck3_gpiodvs)
307 buck234_vol = &s5m8767->buck3_vol[0];
308 else if (reg_id == S5M8767_BUCK4 && s5m8767->buck4_gpiodvs)
309 buck234_vol = &s5m8767->buck4_vol[0];
325 old_index = s5m8767->buck_gpioindex;
326 s5m8767->buck_gpioindex = index;
329 return s5m8767_set_high(s5m8767);
331 return s5m8767_set_low(s5m8767);
341 struct s5m8767_info *s5m8767 = rdev_get_drvdata(rdev);
343 if ((old_sel < new_sel) && s5m8767->ramp_delay)
345 s5m8767->ramp_delay * 1000);
427 static void s5m8767_regulator_config_ext_control(struct s5m8767_info *s5m8767,
437 for (i = 0; i < s5m8767->num_regulators; i++) {
438 const struct sec_opmode_data *opmode = &s5m8767->opmode[i];
445 dev_warn(s5m8767->dev,
452 dev_warn(s5m8767->dev,
464 static int s5m8767_enable_ext_control(struct s5m8767_info *s5m8767,
473 ret = s5m8767_get_register(s5m8767, id, &reg, &enable_ctrl);
477 return regmap_update_bits(s5m8767->iodev->regmap_pmic,
492 "s5m8767,pmic-buck-dvs-gpios", i);
510 "s5m8767,pmic-buck-ds-gpios", i);
577 "s5m8767,pmic-ext-control",
579 "s5m8767");
608 if (of_get_property(pmic_np, "s5m8767,pmic-buck2-uses-gpio-dvs", NULL)) {
612 "s5m8767,pmic-buck2-dvs-voltage",
619 if (of_get_property(pmic_np, "s5m8767,pmic-buck3-uses-gpio-dvs", NULL)) {
623 "s5m8767,pmic-buck3-dvs-voltage",
630 if (of_get_property(pmic_np, "s5m8767,pmic-buck4-uses-gpio-dvs", NULL)) {
634 "s5m8767,pmic-buck4-dvs-voltage",
648 "s5m8767,pmic-buck-default-dvs-idx",
664 if (of_get_property(pmic_np, "s5m8767,pmic-buck2-ramp-enable", NULL))
667 if (of_get_property(pmic_np, "s5m8767,pmic-buck3-ramp-enable", NULL))
670 if (of_get_property(pmic_np, "s5m8767,pmic-buck4-ramp-enable", NULL))
675 if (of_property_read_u32(pmic_np, "s5m8767,pmic-buck-ramp-delay",
695 struct s5m8767_info *s5m8767;
730 s5m8767 = devm_kzalloc(&pdev->dev, sizeof(struct s5m8767_info),
732 if (!s5m8767)
735 s5m8767->dev = &pdev->dev;
736 s5m8767->iodev = iodev;
737 s5m8767->num_regulators = pdata->num_regulators;
738 platform_set_drvdata(pdev, s5m8767);
740 s5m8767->buck_gpioindex = pdata->buck_default_idx;
741 s5m8767->buck2_gpiodvs = pdata->buck2_gpiodvs;
742 s5m8767->buck3_gpiodvs = pdata->buck3_gpiodvs;
743 s5m8767->buck4_gpiodvs = pdata->buck4_gpiodvs;
744 s5m8767->buck_gpios[0] = pdata->buck_gpios[0];
745 s5m8767->buck_gpios[1] = pdata->buck_gpios[1];
746 s5m8767->buck_gpios[2] = pdata->buck_gpios[2];
747 s5m8767->buck_ds[0] = pdata->buck_ds[0];
748 s5m8767->buck_ds[1] = pdata->buck_ds[1];
749 s5m8767->buck_ds[2] = pdata->buck_ds[2];
751 s5m8767->ramp_delay = pdata->buck_ramp_delay;
752 s5m8767->buck2_ramp = pdata->buck2_ramp_enable;
753 s5m8767->buck3_ramp = pdata->buck3_ramp_enable;
754 s5m8767->buck4_ramp = pdata->buck4_ramp_enable;
755 s5m8767->opmode = pdata->opmode;
760 regmap_write(s5m8767->iodev->regmap_pmic, S5M8767_REG_BUCK2DVS2,
766 regmap_write(s5m8767->iodev->regmap_pmic, S5M8767_REG_BUCK3DVS2,
772 regmap_write(s5m8767->iodev->regmap_pmic, S5M8767_REG_BUCK4DVS2,
776 if (s5m8767->buck2_gpiodvs) {
777 s5m8767->buck2_vol[i] =
783 if (s5m8767->buck3_gpiodvs) {
784 s5m8767->buck3_vol[i] =
790 if (s5m8767->buck4_gpiodvs) {
791 s5m8767->buck4_vol[i] =
825 (s5m8767->buck_gpioindex >> 2) & 0x1);
828 (s5m8767->buck_gpioindex >> 1) & 0x1);
831 (s5m8767->buck_gpioindex >> 0) & 0x1);
853 regmap_update_bits(s5m8767->iodev->regmap_pmic,
856 regmap_update_bits(s5m8767->iodev->regmap_pmic,
859 regmap_update_bits(s5m8767->iodev->regmap_pmic,
865 if (s5m8767->buck2_gpiodvs) {
866 regmap_write(s5m8767->iodev->regmap_pmic,
868 s5m8767->buck2_vol[i]);
871 if (s5m8767->buck3_gpiodvs) {
872 regmap_write(s5m8767->iodev->regmap_pmic,
874 s5m8767->buck3_vol[i]);
877 if (s5m8767->buck4_gpiodvs) {
878 regmap_write(s5m8767->iodev->regmap_pmic,
880 s5m8767->buck4_vol[i]);
884 if (s5m8767->buck2_ramp)
885 regmap_update_bits(s5m8767->iodev->regmap_pmic,
888 if (s5m8767->buck3_ramp)
889 regmap_update_bits(s5m8767->iodev->regmap_pmic,
892 if (s5m8767->buck4_ramp)
893 regmap_update_bits(s5m8767->iodev->regmap_pmic,
896 if (s5m8767->buck2_ramp || s5m8767->buck3_ramp
897 || s5m8767->buck4_ramp) {
899 switch (s5m8767->ramp_delay) {
918 regmap_update_bits(s5m8767->iodev->regmap_pmic,
941 s5m8767_get_vsel_reg(id, s5m8767);
947 ret = s5m8767_get_register(s5m8767, id, &enable_reg,
950 dev_err(s5m8767->dev, "error reading registers\n");
958 config.dev = s5m8767->dev;
960 config.driver_data = s5m8767;
966 s5m8767_regulator_config_ext_control(s5m8767,
973 devm_gpiod_unhinge(s5m8767->dev, config.ena_gpiod);
979 dev_err(s5m8767->dev, "regulator init failed for %d\n",
985 ret = s5m8767_enable_ext_control(s5m8767, rdev);
987 dev_err(s5m8767->dev,
999 { "s5m8767-pmic", 0},
1006 .name = "s5m8767-pmic",