Commit 7c3d49b0 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'regulator-fix-v5.14-rc2' of...

Merge tag 'regulator-fix-v5.14-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator

Pull regulator fixes from Mark Brown:
 "A few driver specific fixes that came in since the merge window, plus
  a change to mark the regulator-fixed-domain DT binding as deprecated
  in order to try to to discourage any new users while a better solution
  is put in place"

* tag 'regulator-fix-v5.14-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator:
  regulator: hi6421: Fix getting wrong drvdata
  regulator: mtk-dvfsrc: Fix wrong dev pointer for devm_regulator_register
  regulator: fixed: Mark regulator-fixed-domain as deprecated
  regulator: bd9576: Fix testing wrong flag in check_temp_flag_mismatch
  regulator: hi6421v600: Fix getting wrong drvdata that causes boot failure
  regulator: rt5033: Fix n_voltages settings for BUCK and LDO
  regulator: rtmv20: Fix wrong mask for strobe-polarity-high
parents b4e62aaf 1c73daee
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -57,12 +57,14 @@ properties:
    maxItems: 1

  power-domains:
    deprecated: true
    description:
      Power domain to use for enable control. This binding is only
      available if the compatible is chosen to regulator-fixed-domain.
    maxItems: 1

  required-opps:
    deprecated: true
    description:
      Performance state to use for enable control. This binding is only
      available if the compatible is chosen to regulator-fixed-domain. The
+2 −2
Original line number Diff line number Diff line
@@ -294,9 +294,9 @@ static bool check_temp_flag_mismatch(struct regulator_dev *rdev, int severity,
				    struct bd957x_regulator_data *r)
{
	if ((severity == REGULATOR_SEVERITY_ERR &&
	     r->ovd_notif != REGULATOR_EVENT_OVER_TEMP) ||
	     r->temp_notif != REGULATOR_EVENT_OVER_TEMP) ||
	     (severity == REGULATOR_SEVERITY_WARN &&
	     r->ovd_notif != REGULATOR_EVENT_OVER_TEMP_WARN)) {
	     r->temp_notif != REGULATOR_EVENT_OVER_TEMP_WARN)) {
		dev_warn(rdev_get_dev(rdev),
			 "Can't support both thermal WARN and ERR\n");
		if (severity == REGULATOR_SEVERITY_WARN)
+13 −9
Original line number Diff line number Diff line
@@ -366,9 +366,8 @@ static struct hi6421_regulator_info

static int hi6421_regulator_enable(struct regulator_dev *rdev)
{
	struct hi6421_regulator_pdata *pdata;
	struct hi6421_regulator_pdata *pdata = rdev_get_drvdata(rdev);

	pdata = dev_get_drvdata(rdev->dev.parent);
	/* hi6421 spec requires regulator enablement must be serialized:
	 *  - Because when BUCK, LDO switching from off to on, it will have
	 *    a huge instantaneous current; so you can not turn on two or
@@ -385,9 +384,10 @@ static int hi6421_regulator_enable(struct regulator_dev *rdev)

static unsigned int hi6421_regulator_ldo_get_mode(struct regulator_dev *rdev)
{
	struct hi6421_regulator_info *info = rdev_get_drvdata(rdev);
	struct hi6421_regulator_info *info;
	unsigned int reg_val;

	info = container_of(rdev->desc, struct hi6421_regulator_info, desc);
	regmap_read(rdev->regmap, rdev->desc->enable_reg, &reg_val);
	if (reg_val & info->mode_mask)
		return REGULATOR_MODE_IDLE;
@@ -397,9 +397,10 @@ static unsigned int hi6421_regulator_ldo_get_mode(struct regulator_dev *rdev)

static unsigned int hi6421_regulator_buck_get_mode(struct regulator_dev *rdev)
{
	struct hi6421_regulator_info *info = rdev_get_drvdata(rdev);
	struct hi6421_regulator_info *info;
	unsigned int reg_val;

	info = container_of(rdev->desc, struct hi6421_regulator_info, desc);
	regmap_read(rdev->regmap, rdev->desc->enable_reg, &reg_val);
	if (reg_val & info->mode_mask)
		return REGULATOR_MODE_STANDBY;
@@ -410,9 +411,10 @@ static unsigned int hi6421_regulator_buck_get_mode(struct regulator_dev *rdev)
static int hi6421_regulator_ldo_set_mode(struct regulator_dev *rdev,
						unsigned int mode)
{
	struct hi6421_regulator_info *info = rdev_get_drvdata(rdev);
	struct hi6421_regulator_info *info;
	unsigned int new_mode;

	info = container_of(rdev->desc, struct hi6421_regulator_info, desc);
	switch (mode) {
	case REGULATOR_MODE_NORMAL:
		new_mode = 0;
@@ -434,9 +436,10 @@ static int hi6421_regulator_ldo_set_mode(struct regulator_dev *rdev,
static int hi6421_regulator_buck_set_mode(struct regulator_dev *rdev,
						unsigned int mode)
{
	struct hi6421_regulator_info *info = rdev_get_drvdata(rdev);
	struct hi6421_regulator_info *info;
	unsigned int new_mode;

	info = container_of(rdev->desc, struct hi6421_regulator_info, desc);
	switch (mode) {
	case REGULATOR_MODE_NORMAL:
		new_mode = 0;
@@ -459,7 +462,9 @@ static unsigned int
hi6421_regulator_ldo_get_optimum_mode(struct regulator_dev *rdev,
			int input_uV, int output_uV, int load_uA)
{
	struct hi6421_regulator_info *info = rdev_get_drvdata(rdev);
	struct hi6421_regulator_info *info;

	info = container_of(rdev->desc, struct hi6421_regulator_info, desc);

	if (load_uA > info->eco_microamp)
		return REGULATOR_MODE_NORMAL;
@@ -543,14 +548,13 @@ static int hi6421_regulator_probe(struct platform_device *pdev)
	if (!pdata)
		return -ENOMEM;
	mutex_init(&pdata->lock);
	platform_set_drvdata(pdev, pdata);

	for (i = 0; i < ARRAY_SIZE(hi6421_regulator_info); i++) {
		/* assign per-regulator data */
		info = &hi6421_regulator_info[i];

		config.dev = pdev->dev.parent;
		config.driver_data = info;
		config.driver_data = pdata;
		config.regmap = pmic->regmap;

		rdev = devm_regulator_register(&pdev->dev, &info->desc,
+9 −7
Original line number Diff line number Diff line
@@ -98,10 +98,9 @@ static const unsigned int ldo34_voltages[] = {

static int hi6421_spmi_regulator_enable(struct regulator_dev *rdev)
{
	struct hi6421_spmi_reg_priv *priv;
	struct hi6421_spmi_reg_priv *priv = rdev_get_drvdata(rdev);
	int ret;

	priv = dev_get_drvdata(rdev->dev.parent);
	/* cannot enable more than one regulator at one time */
	mutex_lock(&priv->enable_mutex);

@@ -119,9 +118,10 @@ static int hi6421_spmi_regulator_enable(struct regulator_dev *rdev)

static unsigned int hi6421_spmi_regulator_get_mode(struct regulator_dev *rdev)
{
	struct hi6421_spmi_reg_info *sreg = rdev_get_drvdata(rdev);
	struct hi6421_spmi_reg_info *sreg;
	unsigned int reg_val;

	sreg = container_of(rdev->desc, struct hi6421_spmi_reg_info, desc);
	regmap_read(rdev->regmap, rdev->desc->enable_reg, &reg_val);

	if (reg_val & sreg->eco_mode_mask)
@@ -133,9 +133,10 @@ static unsigned int hi6421_spmi_regulator_get_mode(struct regulator_dev *rdev)
static int hi6421_spmi_regulator_set_mode(struct regulator_dev *rdev,
					  unsigned int mode)
{
	struct hi6421_spmi_reg_info *sreg = rdev_get_drvdata(rdev);
	struct hi6421_spmi_reg_info *sreg;
	unsigned int val;

	sreg = container_of(rdev->desc, struct hi6421_spmi_reg_info, desc);
	switch (mode) {
	case REGULATOR_MODE_NORMAL:
		val = 0;
@@ -159,7 +160,9 @@ hi6421_spmi_regulator_get_optimum_mode(struct regulator_dev *rdev,
				       int input_uV, int output_uV,
				       int load_uA)
{
	struct hi6421_spmi_reg_info *sreg = rdev_get_drvdata(rdev);
	struct hi6421_spmi_reg_info *sreg;

	sreg = container_of(rdev->desc, struct hi6421_spmi_reg_info, desc);

	if (!sreg->eco_uA || ((unsigned int)load_uA > sreg->eco_uA))
		return REGULATOR_MODE_NORMAL;
@@ -252,13 +255,12 @@ static int hi6421_spmi_regulator_probe(struct platform_device *pdev)
		return -ENOMEM;

	mutex_init(&priv->enable_mutex);
	platform_set_drvdata(pdev, priv);

	for (i = 0; i < ARRAY_SIZE(regulator_info); i++) {
		info = &regulator_info[i];

		config.dev = pdev->dev.parent;
		config.driver_data = info;
		config.driver_data = priv;
		config.regmap = pmic->regmap;

		rdev = devm_regulator_register(dev, &info->desc, &config);
+1 −2
Original line number Diff line number Diff line
@@ -179,8 +179,7 @@ static int dvfsrc_vcore_regulator_probe(struct platform_device *pdev)
	for (i = 0; i < regulator_init_data->size; i++) {
		config.dev = dev->parent;
		config.driver_data = (mt_regulators + i);
		rdev = devm_regulator_register(dev->parent,
					       &(mt_regulators + i)->desc,
		rdev = devm_regulator_register(dev, &(mt_regulators + i)->desc,
					       &config);
		if (IS_ERR(rdev)) {
			dev_err(dev, "failed to register %s\n",
Loading