s5m8767           162 drivers/regulator/s5m8767.c static int s5m8767_get_register(struct s5m8767_info *s5m8767, int reg_id,
s5m8767           191 drivers/regulator/s5m8767.c 	for (i = 0; i < s5m8767->num_regulators; i++) {
s5m8767           192 drivers/regulator/s5m8767.c 		if (s5m8767->opmode[i].id == reg_id) {
s5m8767           193 drivers/regulator/s5m8767.c 			mode = s5m8767->opmode[i].mode;
s5m8767           198 drivers/regulator/s5m8767.c 	if (i >= s5m8767->num_regulators)
s5m8767           206 drivers/regulator/s5m8767.c static int s5m8767_get_vsel_reg(int reg_id, struct s5m8767_info *s5m8767)
s5m8767           222 drivers/regulator/s5m8767.c 		if (s5m8767->buck2_gpiodvs)
s5m8767           223 drivers/regulator/s5m8767.c 			reg += s5m8767->buck_gpioindex;
s5m8767           227 drivers/regulator/s5m8767.c 		if (s5m8767->buck3_gpiodvs)
s5m8767           228 drivers/regulator/s5m8767.c 			reg += s5m8767->buck_gpioindex;
s5m8767           232 drivers/regulator/s5m8767.c 		if (s5m8767->buck4_gpiodvs)
s5m8767           233 drivers/regulator/s5m8767.c 			reg += s5m8767->buck_gpioindex;
s5m8767           270 drivers/regulator/s5m8767.c static inline int s5m8767_set_high(struct s5m8767_info *s5m8767)
s5m8767           272 drivers/regulator/s5m8767.c 	int temp_index = s5m8767->buck_gpioindex;
s5m8767           274 drivers/regulator/s5m8767.c 	gpio_set_value(s5m8767->buck_gpios[0], (temp_index >> 2) & 0x1);
s5m8767           275 drivers/regulator/s5m8767.c 	gpio_set_value(s5m8767->buck_gpios[1], (temp_index >> 1) & 0x1);
s5m8767           276 drivers/regulator/s5m8767.c 	gpio_set_value(s5m8767->buck_gpios[2], temp_index & 0x1);
s5m8767           281 drivers/regulator/s5m8767.c static inline int s5m8767_set_low(struct s5m8767_info *s5m8767)
s5m8767           283 drivers/regulator/s5m8767.c 	int temp_index = s5m8767->buck_gpioindex;
s5m8767           285 drivers/regulator/s5m8767.c 	gpio_set_value(s5m8767->buck_gpios[2], temp_index & 0x1);
s5m8767           286 drivers/regulator/s5m8767.c 	gpio_set_value(s5m8767->buck_gpios[1], (temp_index >> 1) & 0x1);
s5m8767           287 drivers/regulator/s5m8767.c 	gpio_set_value(s5m8767->buck_gpios[0], (temp_index >> 2) & 0x1);
s5m8767           295 drivers/regulator/s5m8767.c 	struct s5m8767_info *s5m8767 = rdev_get_drvdata(rdev);
s5m8767           304 drivers/regulator/s5m8767.c 		if (reg_id == S5M8767_BUCK2 && s5m8767->buck2_gpiodvs)
s5m8767           305 drivers/regulator/s5m8767.c 			buck234_vol = &s5m8767->buck2_vol[0];
s5m8767           306 drivers/regulator/s5m8767.c 		else if (reg_id == S5M8767_BUCK3 && s5m8767->buck3_gpiodvs)
s5m8767           307 drivers/regulator/s5m8767.c 			buck234_vol = &s5m8767->buck3_vol[0];
s5m8767           308 drivers/regulator/s5m8767.c 		else if (reg_id == S5M8767_BUCK4 && s5m8767->buck4_gpiodvs)
s5m8767           309 drivers/regulator/s5m8767.c 			buck234_vol = &s5m8767->buck4_vol[0];
s5m8767           325 drivers/regulator/s5m8767.c 		old_index = s5m8767->buck_gpioindex;
s5m8767           326 drivers/regulator/s5m8767.c 		s5m8767->buck_gpioindex = index;
s5m8767           329 drivers/regulator/s5m8767.c 			return s5m8767_set_high(s5m8767);
s5m8767           331 drivers/regulator/s5m8767.c 			return s5m8767_set_low(s5m8767);
s5m8767           341 drivers/regulator/s5m8767.c 	struct s5m8767_info *s5m8767 = rdev_get_drvdata(rdev);
s5m8767           343 drivers/regulator/s5m8767.c 	if ((old_sel < new_sel) && s5m8767->ramp_delay)
s5m8767           345 drivers/regulator/s5m8767.c 					s5m8767->ramp_delay * 1000);
s5m8767           427 drivers/regulator/s5m8767.c static void s5m8767_regulator_config_ext_control(struct s5m8767_info *s5m8767,
s5m8767           437 drivers/regulator/s5m8767.c 	for (i = 0; i < s5m8767->num_regulators; i++) {
s5m8767           438 drivers/regulator/s5m8767.c 		const struct sec_opmode_data *opmode = &s5m8767->opmode[i];
s5m8767           445 drivers/regulator/s5m8767.c 		dev_warn(s5m8767->dev,
s5m8767           452 drivers/regulator/s5m8767.c 		dev_warn(s5m8767->dev,
s5m8767           464 drivers/regulator/s5m8767.c static int s5m8767_enable_ext_control(struct s5m8767_info *s5m8767,
s5m8767           473 drivers/regulator/s5m8767.c 	ret = s5m8767_get_register(s5m8767, id, &reg, &enable_ctrl);
s5m8767           477 drivers/regulator/s5m8767.c 	return regmap_update_bits(s5m8767->iodev->regmap_pmic,
s5m8767           689 drivers/regulator/s5m8767.c 	struct s5m8767_info *s5m8767;
s5m8767           724 drivers/regulator/s5m8767.c 	s5m8767 = devm_kzalloc(&pdev->dev, sizeof(struct s5m8767_info),
s5m8767           726 drivers/regulator/s5m8767.c 	if (!s5m8767)
s5m8767           729 drivers/regulator/s5m8767.c 	s5m8767->dev = &pdev->dev;
s5m8767           730 drivers/regulator/s5m8767.c 	s5m8767->iodev = iodev;
s5m8767           731 drivers/regulator/s5m8767.c 	s5m8767->num_regulators = pdata->num_regulators;
s5m8767           732 drivers/regulator/s5m8767.c 	platform_set_drvdata(pdev, s5m8767);
s5m8767           734 drivers/regulator/s5m8767.c 	s5m8767->buck_gpioindex = pdata->buck_default_idx;
s5m8767           735 drivers/regulator/s5m8767.c 	s5m8767->buck2_gpiodvs = pdata->buck2_gpiodvs;
s5m8767           736 drivers/regulator/s5m8767.c 	s5m8767->buck3_gpiodvs = pdata->buck3_gpiodvs;
s5m8767           737 drivers/regulator/s5m8767.c 	s5m8767->buck4_gpiodvs = pdata->buck4_gpiodvs;
s5m8767           738 drivers/regulator/s5m8767.c 	s5m8767->buck_gpios[0] = pdata->buck_gpios[0];
s5m8767           739 drivers/regulator/s5m8767.c 	s5m8767->buck_gpios[1] = pdata->buck_gpios[1];
s5m8767           740 drivers/regulator/s5m8767.c 	s5m8767->buck_gpios[2] = pdata->buck_gpios[2];
s5m8767           741 drivers/regulator/s5m8767.c 	s5m8767->buck_ds[0] = pdata->buck_ds[0];
s5m8767           742 drivers/regulator/s5m8767.c 	s5m8767->buck_ds[1] = pdata->buck_ds[1];
s5m8767           743 drivers/regulator/s5m8767.c 	s5m8767->buck_ds[2] = pdata->buck_ds[2];
s5m8767           745 drivers/regulator/s5m8767.c 	s5m8767->ramp_delay = pdata->buck_ramp_delay;
s5m8767           746 drivers/regulator/s5m8767.c 	s5m8767->buck2_ramp = pdata->buck2_ramp_enable;
s5m8767           747 drivers/regulator/s5m8767.c 	s5m8767->buck3_ramp = pdata->buck3_ramp_enable;
s5m8767           748 drivers/regulator/s5m8767.c 	s5m8767->buck4_ramp = pdata->buck4_ramp_enable;
s5m8767           749 drivers/regulator/s5m8767.c 	s5m8767->opmode = pdata->opmode;
s5m8767           754 drivers/regulator/s5m8767.c 	regmap_write(s5m8767->iodev->regmap_pmic, S5M8767_REG_BUCK2DVS2,
s5m8767           760 drivers/regulator/s5m8767.c 	regmap_write(s5m8767->iodev->regmap_pmic, S5M8767_REG_BUCK3DVS2,
s5m8767           766 drivers/regulator/s5m8767.c 	regmap_write(s5m8767->iodev->regmap_pmic, S5M8767_REG_BUCK4DVS2,
s5m8767           770 drivers/regulator/s5m8767.c 		if (s5m8767->buck2_gpiodvs) {
s5m8767           771 drivers/regulator/s5m8767.c 			s5m8767->buck2_vol[i] =
s5m8767           777 drivers/regulator/s5m8767.c 		if (s5m8767->buck3_gpiodvs) {
s5m8767           778 drivers/regulator/s5m8767.c 			s5m8767->buck3_vol[i] =
s5m8767           784 drivers/regulator/s5m8767.c 		if (s5m8767->buck4_gpiodvs) {
s5m8767           785 drivers/regulator/s5m8767.c 			s5m8767->buck4_vol[i] =
s5m8767           819 drivers/regulator/s5m8767.c 				(s5m8767->buck_gpioindex >> 2) & 0x1);
s5m8767           822 drivers/regulator/s5m8767.c 				(s5m8767->buck_gpioindex >> 1) & 0x1);
s5m8767           825 drivers/regulator/s5m8767.c 				(s5m8767->buck_gpioindex >> 0) & 0x1);
s5m8767           849 drivers/regulator/s5m8767.c 		regmap_update_bits(s5m8767->iodev->regmap_pmic,
s5m8767           852 drivers/regulator/s5m8767.c 		regmap_update_bits(s5m8767->iodev->regmap_pmic,
s5m8767           855 drivers/regulator/s5m8767.c 		regmap_update_bits(s5m8767->iodev->regmap_pmic,
s5m8767           862 drivers/regulator/s5m8767.c 		if (s5m8767->buck2_gpiodvs) {
s5m8767           863 drivers/regulator/s5m8767.c 			regmap_write(s5m8767->iodev->regmap_pmic,
s5m8767           865 drivers/regulator/s5m8767.c 					s5m8767->buck2_vol[i]);
s5m8767           868 drivers/regulator/s5m8767.c 		if (s5m8767->buck3_gpiodvs) {
s5m8767           869 drivers/regulator/s5m8767.c 			regmap_write(s5m8767->iodev->regmap_pmic,
s5m8767           871 drivers/regulator/s5m8767.c 					s5m8767->buck3_vol[i]);
s5m8767           874 drivers/regulator/s5m8767.c 		if (s5m8767->buck4_gpiodvs) {
s5m8767           875 drivers/regulator/s5m8767.c 			regmap_write(s5m8767->iodev->regmap_pmic,
s5m8767           877 drivers/regulator/s5m8767.c 					s5m8767->buck4_vol[i]);
s5m8767           881 drivers/regulator/s5m8767.c 	if (s5m8767->buck2_ramp)
s5m8767           882 drivers/regulator/s5m8767.c 		regmap_update_bits(s5m8767->iodev->regmap_pmic,
s5m8767           885 drivers/regulator/s5m8767.c 	if (s5m8767->buck3_ramp)
s5m8767           886 drivers/regulator/s5m8767.c 		regmap_update_bits(s5m8767->iodev->regmap_pmic,
s5m8767           889 drivers/regulator/s5m8767.c 	if (s5m8767->buck4_ramp)
s5m8767           890 drivers/regulator/s5m8767.c 		regmap_update_bits(s5m8767->iodev->regmap_pmic,
s5m8767           893 drivers/regulator/s5m8767.c 	if (s5m8767->buck2_ramp || s5m8767->buck3_ramp
s5m8767           894 drivers/regulator/s5m8767.c 		|| s5m8767->buck4_ramp) {
s5m8767           896 drivers/regulator/s5m8767.c 		switch (s5m8767->ramp_delay) {
s5m8767           915 drivers/regulator/s5m8767.c 		regmap_update_bits(s5m8767->iodev->regmap_pmic,
s5m8767           934 drivers/regulator/s5m8767.c 				s5m8767_get_vsel_reg(id, s5m8767);
s5m8767           940 drivers/regulator/s5m8767.c 			ret = s5m8767_get_register(s5m8767, id, &enable_reg,
s5m8767           943 drivers/regulator/s5m8767.c 				dev_err(s5m8767->dev, "error reading registers\n");
s5m8767           951 drivers/regulator/s5m8767.c 		config.dev = s5m8767->dev;
s5m8767           953 drivers/regulator/s5m8767.c 		config.driver_data = s5m8767;
s5m8767           959 drivers/regulator/s5m8767.c 			s5m8767_regulator_config_ext_control(s5m8767,
s5m8767           966 drivers/regulator/s5m8767.c 			devm_gpiod_unhinge(s5m8767->dev, config.ena_gpiod);
s5m8767           972 drivers/regulator/s5m8767.c 			dev_err(s5m8767->dev, "regulator init failed for %d\n",
s5m8767           978 drivers/regulator/s5m8767.c 			ret = s5m8767_enable_ext_control(s5m8767, rdev);
s5m8767           980 drivers/regulator/s5m8767.c 				dev_err(s5m8767->dev,