regulator: s2mps11: Fix GPIO descriptor initialization

Message ID 20181120123844.3003-1-m.szyprowski@samsung.com
State New
Headers show
Series
  • regulator: s2mps11: Fix GPIO descriptor initialization
Related show

Commit Message

Marek Szyprowski Nov. 20, 2018, 12:38 p.m.
GPIO descriptor array must be zero initialized to ensure that core will
properly handle also the case when no external GPIO pin is defined.

Fixes: 1c984942f0a4 ("regulator: s2mps11: Pass descriptor instead of GPIO number")
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>

---
This fixes broken eMMC boot on Artik, Rinato and Odroid XU3/XU4/HC1
boards.
---
 drivers/regulator/s2mps11.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

-- 
2.17.1

Comments

Krzysztof Kozlowski Nov. 20, 2018, 12:51 p.m. | #1
On Tue, 20 Nov 2018 at 13:39, Marek Szyprowski <m.szyprowski@samsung.com> wrote:
>

> GPIO descriptor array must be zero initialized to ensure that core will

> properly handle also the case when no external GPIO pin is defined.

>

> Fixes: 1c984942f0a4 ("regulator: s2mps11: Pass descriptor instead of GPIO number")

> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>

> ---

> This fixes broken eMMC boot on Artik, Rinato and Odroid XU3/XU4/HC1

> boards.


I missed that on my review. Now it looks fine, thanks for fixing it!
Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>


Best regards,
Krzysztof


> ---

>  drivers/regulator/s2mps11.c | 5 ++---

>  1 file changed, 2 insertions(+), 3 deletions(-)

>

> diff --git a/drivers/regulator/s2mps11.c b/drivers/regulator/s2mps11.c

> index 6fec45897194..63e66f485cc0 100644

> --- a/drivers/regulator/s2mps11.c

> +++ b/drivers/regulator/s2mps11.c

> @@ -1134,9 +1134,8 @@ static int s2mps11_pmic_probe(struct platform_device *pdev)

>                 return -EINVAL;

>         }

>

> -       s2mps11->ext_control_gpiod = devm_kmalloc_array(&pdev->dev,

> -                       rdev_num, sizeof(*s2mps11->ext_control_gpiod),

> -                       GFP_KERNEL);

> +       s2mps11->ext_control_gpiod = devm_kcalloc(&pdev->dev, rdev_num,

> +                              sizeof(*s2mps11->ext_control_gpiod), GFP_KERNEL);

>         if (!s2mps11->ext_control_gpiod)

>                 return -ENOMEM;

>

> --

> 2.17.1

>

Patch

diff --git a/drivers/regulator/s2mps11.c b/drivers/regulator/s2mps11.c
index 6fec45897194..63e66f485cc0 100644
--- a/drivers/regulator/s2mps11.c
+++ b/drivers/regulator/s2mps11.c
@@ -1134,9 +1134,8 @@  static int s2mps11_pmic_probe(struct platform_device *pdev)
 		return -EINVAL;
 	}
 
-	s2mps11->ext_control_gpiod = devm_kmalloc_array(&pdev->dev,
-			rdev_num, sizeof(*s2mps11->ext_control_gpiod),
-			GFP_KERNEL);
+	s2mps11->ext_control_gpiod = devm_kcalloc(&pdev->dev, rdev_num,
+			       sizeof(*s2mps11->ext_control_gpiod), GFP_KERNEL);
 	if (!s2mps11->ext_control_gpiod)
 		return -ENOMEM;