2022-04-21 08:52:23

by Michael Walle

[permalink] [raw]
Subject: [PATCH v2 0/2] pinctrl: ocelot: add shared reset

On LAN966x SoCs, there is an internal reset which is used to reset the
switch core. But this will also reset the GPIO and the SGPIO. Thus add
support for this shared reset line.

changes since v1:
- rebased onto linus' devel tree, former patch was still based on
v1 of the YAML conversion patch

Michael Walle (2):
dt-bindings: pinctrl: ocelot: add reset property
pinctrl: ocelot: add optional shared reset

.../devicetree/bindings/pinctrl/mscc,ocelot-pinctrl.yaml | 8 ++++++++
drivers/pinctrl/pinctrl-ocelot.c | 9 +++++++++
2 files changed, 17 insertions(+)

--
2.30.2


2022-04-22 19:27:25

by Michael Walle

[permalink] [raw]
Subject: [PATCH v2 2/2] pinctrl: ocelot: add optional shared reset

On the LAN9668 there is a shared reset line which affects GPIO, SGPIO
and the switch core. Add support for this shared reset line.

Signed-off-by: Michael Walle <[email protected]>
---
drivers/pinctrl/pinctrl-ocelot.c | 9 +++++++++
1 file changed, 9 insertions(+)

diff --git a/drivers/pinctrl/pinctrl-ocelot.c b/drivers/pinctrl/pinctrl-ocelot.c
index 1bdced67464b..b25eb04e4e1d 100644
--- a/drivers/pinctrl/pinctrl-ocelot.c
+++ b/drivers/pinctrl/pinctrl-ocelot.c
@@ -19,6 +19,7 @@
#include <linux/pinctrl/pinconf-generic.h>
#include <linux/platform_device.h>
#include <linux/regmap.h>
+#include <linux/reset.h>
#include <linux/slab.h>

#include "core.h"
@@ -1912,6 +1913,7 @@ static int ocelot_pinctrl_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
struct ocelot_pinctrl *info;
+ struct reset_control *reset;
struct regmap *pincfg;
void __iomem *base;
int ret;
@@ -1927,6 +1929,13 @@ static int ocelot_pinctrl_probe(struct platform_device *pdev)

info->desc = (struct pinctrl_desc *)device_get_match_data(dev);

+ reset = devm_reset_control_get_optional_shared(dev, "switch");
+ if (IS_ERR(reset)) {
+ dev_err(dev, "Failed to get reset\n");
+ return PTR_ERR(reset);
+ }
+ reset_control_reset(reset);
+
base = devm_ioremap_resource(dev,
platform_get_resource(pdev, IORESOURCE_MEM, 0));
if (IS_ERR(base))
--
2.30.2

2022-04-22 22:35:40

by Horatiu Vultur

[permalink] [raw]
Subject: Re: [PATCH v2 2/2] pinctrl: ocelot: add optional shared reset

The 04/20/2022 01:03, Michael Walle wrote:

Hi Michael,

>
> On the LAN9668 there is a shared reset line which affects GPIO, SGPIO
> and the switch core. Add support for this shared reset line.

I have just a small comment below. Otherwise:
Tested-by: Horatiu Vultur <[email protected]>

>
> Signed-off-by: Michael Walle <[email protected]>
> ---
> drivers/pinctrl/pinctrl-ocelot.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/drivers/pinctrl/pinctrl-ocelot.c b/drivers/pinctrl/pinctrl-ocelot.c
> index 1bdced67464b..b25eb04e4e1d 100644
> --- a/drivers/pinctrl/pinctrl-ocelot.c
> +++ b/drivers/pinctrl/pinctrl-ocelot.c
> @@ -19,6 +19,7 @@
> #include <linux/pinctrl/pinconf-generic.h>
> #include <linux/platform_device.h>
> #include <linux/regmap.h>
> +#include <linux/reset.h>
> #include <linux/slab.h>
>
> #include "core.h"
> @@ -1912,6 +1913,7 @@ static int ocelot_pinctrl_probe(struct platform_device *pdev)
> {
> struct device *dev = &pdev->dev;
> struct ocelot_pinctrl *info;
> + struct reset_control *reset;
> struct regmap *pincfg;
> void __iomem *base;
> int ret;
> @@ -1927,6 +1929,13 @@ static int ocelot_pinctrl_probe(struct platform_device *pdev)
>
> info->desc = (struct pinctrl_desc *)device_get_match_data(dev);
>
> + reset = devm_reset_control_get_optional_shared(dev, "switch");
> + if (IS_ERR(reset)) {
> + dev_err(dev, "Failed to get reset\n");
> + return PTR_ERR(reset);

Can you use dev_err_probe here?

> + }
> + reset_control_reset(reset);
> +
> base = devm_ioremap_resource(dev,
> platform_get_resource(pdev, IORESOURCE_MEM, 0));
> if (IS_ERR(base))
> --
> 2.30.2
>

--
/Horatiu

2022-04-29 13:30:39

by Linus Walleij

[permalink] [raw]
Subject: Re: [PATCH v2 0/2] pinctrl: ocelot: add shared reset

On Wed, Apr 20, 2022 at 1:03 AM Michael Walle <[email protected]> wrote:

> On LAN966x SoCs, there is an internal reset which is used to reset the
> switch core. But this will also reset the GPIO and the SGPIO. Thus add
> support for this shared reset line.
>
> changes since v1:
> - rebased onto linus' devel tree, former patch was still based on
> v1 of the YAML conversion patch

Patches applied!

Yours,
Linus Walleij