From e437b90026ac754a0f8b4fe44b844d12ce6162d1 Mon Sep 17 00:00:00 2001 From: Vladimir Zapolskiy Date: Thu, 24 Mar 2016 21:52:01 +0200 Subject: [PATCH 1/2] regulator: core: Remove duplicate copy of active-discharge parsing Apparently due to a wrongly resolved merge conflict between two branches, which contained the same commit, the commit contents partially was added two times in a row. This change reverts the latter wrong inclusion of commit 909f7ee0b5f3 ("regulator: core: Add support for active-discharge configuration"). The first applied commit 670666b9e0af ("regulator: core: Add support for active-discharge configuration") is not touched. Signed-off-by: Vladimir Zapolskiy Cc: Laxman Dewangan Signed-off-by: Mark Brown --- drivers/regulator/core.c | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index e0b764284773..1cff11205642 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -1150,17 +1150,6 @@ static int set_machine_constraints(struct regulator_dev *rdev, } } - if (rdev->constraints->active_discharge && ops->set_active_discharge) { - bool ad_state = (rdev->constraints->active_discharge == - REGULATOR_ACTIVE_DISCHARGE_ENABLE) ? true : false; - - ret = ops->set_active_discharge(rdev, ad_state); - if (ret < 0) { - rdev_err(rdev, "failed to set active discharge\n"); - return ret; - } - } - print_constraints(rdev); return 0; } From 2c0a303a128cbef54a7b58dc2e413b874d760097 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Tue, 12 Apr 2016 08:05:43 +0100 Subject: [PATCH 2/2] regulator: core: Fix locking of GPIO list on free When we acquire a shareable enable GPIO on probe we do so with the regulator_list_mutex held. However when we release the GPIOs we do this immediately after dropping the mutex meaning that the list could become corrupted. Move the release into the locked region to avoid this. Signed-off-by: Mark Brown --- drivers/regulator/core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index 1cff11205642..e414c24b2906 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -4021,8 +4021,8 @@ void regulator_unregister(struct regulator_dev *rdev) WARN_ON(rdev->open_count); unset_regulator_supplies(rdev); list_del(&rdev->list); - mutex_unlock(®ulator_list_mutex); regulator_ena_gpio_free(rdev); + mutex_unlock(®ulator_list_mutex); device_unregister(&rdev->dev); } EXPORT_SYMBOL_GPL(regulator_unregister);