linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RESEND PATCH v3 0/3] phy: Add USB HSIC PHY driver for Marvell MMP3 SoC
@ 2020-08-17 22:33 Lubomir Rintel
  2020-08-17 22:33 ` [RESEND PATCH v3 1/3] dt-bindings: phy: Drop reset-gpios from marvell,mmp3-hsic-phy Lubomir Rintel
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Lubomir Rintel @ 2020-08-17 22:33 UTC (permalink / raw)
  To: Kishon Vijay Abraham I; +Cc: Vinod Koul, Rob Herring, linux-kernel, devicetree

Hi,

please consider applying this patch set. Still applies on top of
5.9-rc1.

It adds the HSIC PHY driver for Marvell MMP3 along with related DT binding
changes.

Compared to v2, the Reviewed-by/Acked-by tags for DT patches have been
collected.

Thank you,
Lubo



^ permalink raw reply	[flat|nested] 6+ messages in thread

* [RESEND PATCH v3 1/3] dt-bindings: phy: Drop reset-gpios from marvell,mmp3-hsic-phy
  2020-08-17 22:33 [RESEND PATCH v3 0/3] phy: Add USB HSIC PHY driver for Marvell MMP3 SoC Lubomir Rintel
@ 2020-08-17 22:33 ` Lubomir Rintel
  2020-08-17 22:33 ` [RESEND PATCH v3 2/3] dt-bindings: phy: Allow BSD licensing of marvell,mmp3-hsic-phy.yaml Lubomir Rintel
  2020-08-17 22:34 ` [RESEND PATCH v3 3/3] phy: Add USB HSIC PHY driver for Marvell MMP3 SoC Lubomir Rintel
  2 siblings, 0 replies; 6+ messages in thread
From: Lubomir Rintel @ 2020-08-17 22:33 UTC (permalink / raw)
  To: Kishon Vijay Abraham I
  Cc: Vinod Koul, Rob Herring, linux-kernel, devicetree,
	Lubomir Rintel, Rob Herring

This has been added in error -- the PHY block doesn't have a reset pin.

Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
Reviewed-by: Rob Herring <robh@kernel.org>

---
Changes since v2:
- Add Rob's Reviewed-by tag

 .../devicetree/bindings/phy/marvell,mmp3-hsic-phy.yaml     | 7 -------
 1 file changed, 7 deletions(-)

diff --git a/Documentation/devicetree/bindings/phy/marvell,mmp3-hsic-phy.yaml b/Documentation/devicetree/bindings/phy/marvell,mmp3-hsic-phy.yaml
index 00609ace677c9..30e290c579308 100644
--- a/Documentation/devicetree/bindings/phy/marvell,mmp3-hsic-phy.yaml
+++ b/Documentation/devicetree/bindings/phy/marvell,mmp3-hsic-phy.yaml
@@ -18,27 +18,20 @@ properties:
     maxItems: 1
     description: base address of the device
 
-  reset-gpios:
-    maxItems: 1
-    description: GPIO connected to reset
-
   "#phy-cells":
     const: 0
 
 required:
   - compatible
   - reg
-  - reset-gpios
   - "#phy-cells"
 
 additionalProperties: false
 
 examples:
   - |
-    #include <dt-bindings/gpio/gpio.h>
     hsic-phy@f0001800 {
             compatible = "marvell,mmp3-hsic-phy";
             reg = <0xf0001800 0x40>;
-            reset-gpios = <&gpio 63 GPIO_ACTIVE_HIGH>;
             #phy-cells = <0>;
     };
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [RESEND PATCH v3 2/3] dt-bindings: phy: Allow BSD licensing of marvell,mmp3-hsic-phy.yaml
  2020-08-17 22:33 [RESEND PATCH v3 0/3] phy: Add USB HSIC PHY driver for Marvell MMP3 SoC Lubomir Rintel
  2020-08-17 22:33 ` [RESEND PATCH v3 1/3] dt-bindings: phy: Drop reset-gpios from marvell,mmp3-hsic-phy Lubomir Rintel
@ 2020-08-17 22:33 ` Lubomir Rintel
  2020-08-17 22:34 ` [RESEND PATCH v3 3/3] phy: Add USB HSIC PHY driver for Marvell MMP3 SoC Lubomir Rintel
  2 siblings, 0 replies; 6+ messages in thread
From: Lubomir Rintel @ 2020-08-17 22:33 UTC (permalink / raw)
  To: Kishon Vijay Abraham I
  Cc: Vinod Koul, Rob Herring, linux-kernel, devicetree,
	Lubomir Rintel, Rob Herring

I wrote this binding and I'm fine with it being GPL + BSD dual-licensed,
as is recommended for new DT bindings.

Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
Acked-by: Rob Herring <robh@kernel.org>

---
Changes since v2:
- Add Rob's ack

 .../devicetree/bindings/phy/marvell,mmp3-hsic-phy.yaml          | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/phy/marvell,mmp3-hsic-phy.yaml b/Documentation/devicetree/bindings/phy/marvell,mmp3-hsic-phy.yaml
index 30e290c579308..ff255aa4cc103 100644
--- a/Documentation/devicetree/bindings/phy/marvell,mmp3-hsic-phy.yaml
+++ b/Documentation/devicetree/bindings/phy/marvell,mmp3-hsic-phy.yaml
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: GPL-2.0-or-later
+# SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
 # Copyright 2019 Lubomir Rintel <lkundrak@v3.sk>
 %YAML 1.2
 ---
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [RESEND PATCH v3 3/3] phy: Add USB HSIC PHY driver for Marvell MMP3 SoC
  2020-08-17 22:33 [RESEND PATCH v3 0/3] phy: Add USB HSIC PHY driver for Marvell MMP3 SoC Lubomir Rintel
  2020-08-17 22:33 ` [RESEND PATCH v3 1/3] dt-bindings: phy: Drop reset-gpios from marvell,mmp3-hsic-phy Lubomir Rintel
  2020-08-17 22:33 ` [RESEND PATCH v3 2/3] dt-bindings: phy: Allow BSD licensing of marvell,mmp3-hsic-phy.yaml Lubomir Rintel
@ 2020-08-17 22:34 ` Lubomir Rintel
  2020-08-31  8:58   ` Vinod Koul
  2 siblings, 1 reply; 6+ messages in thread
From: Lubomir Rintel @ 2020-08-17 22:34 UTC (permalink / raw)
  To: Kishon Vijay Abraham I
  Cc: Vinod Koul, Rob Herring, linux-kernel, devicetree, Lubomir Rintel

Add PHY driver for the HSICs found on Marvell MMP3 SoC. The driver is
rather straightforward -- the PHY essentially just needs to be enabled.

Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>

---
Changes since v1:
- Explicitely cast drvdata pointer to make sparse happy

 drivers/phy/marvell/Kconfig         | 12 +++++
 drivers/phy/marvell/Makefile        |  1 +
 drivers/phy/marvell/phy-mmp3-hsic.c | 82 +++++++++++++++++++++++++++++
 3 files changed, 95 insertions(+)
 create mode 100644 drivers/phy/marvell/phy-mmp3-hsic.c

diff --git a/drivers/phy/marvell/Kconfig b/drivers/phy/marvell/Kconfig
index 8f6273c837ec3..6c96f2bf52665 100644
--- a/drivers/phy/marvell/Kconfig
+++ b/drivers/phy/marvell/Kconfig
@@ -116,3 +116,15 @@ config PHY_MMP3_USB
 	  The PHY driver will be used by Marvell udc/ehci/otg driver.
 
 	  To compile this driver as a module, choose M here.
+
+config PHY_MMP3_HSIC
+	tristate "Marvell MMP3 USB HSIC PHY Driver"
+	depends on MACH_MMP3_DT || COMPILE_TEST
+	select GENERIC_PHY
+	help
+	  Enable this to support Marvell MMP3 USB HSIC PHY driver for
+	  Marvell MMP3 SoC. This driver will be used my the Marvell EHCI
+	  driver to initialize the interface to internal USB HSIC
+	  components on MMP3-based boards.
+
+	  To compile this driver as a module, choose M here.
diff --git a/drivers/phy/marvell/Makefile b/drivers/phy/marvell/Makefile
index 5a106b1549f41..7f296ef028292 100644
--- a/drivers/phy/marvell/Makefile
+++ b/drivers/phy/marvell/Makefile
@@ -3,6 +3,7 @@ obj-$(CONFIG_ARMADA375_USBCLUSTER_PHY)	+= phy-armada375-usb2.o
 obj-$(CONFIG_PHY_BERLIN_SATA)		+= phy-berlin-sata.o
 obj-$(CONFIG_PHY_BERLIN_USB)		+= phy-berlin-usb.o
 obj-$(CONFIG_PHY_MMP3_USB)		+= phy-mmp3-usb.o
+obj-$(CONFIG_PHY_MMP3_HSIC)		+= phy-mmp3-hsic.o
 obj-$(CONFIG_PHY_MVEBU_A3700_COMPHY)	+= phy-mvebu-a3700-comphy.o
 obj-$(CONFIG_PHY_MVEBU_A3700_UTMI)	+= phy-mvebu-a3700-utmi.o
 obj-$(CONFIG_PHY_MVEBU_A38X_COMPHY)	+= phy-armada38x-comphy.o
diff --git a/drivers/phy/marvell/phy-mmp3-hsic.c b/drivers/phy/marvell/phy-mmp3-hsic.c
new file mode 100644
index 0000000000000..47c1e8894939f
--- /dev/null
+++ b/drivers/phy/marvell/phy-mmp3-hsic.c
@@ -0,0 +1,82 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2020 Lubomir Rintel <lkundrak@v3.sk>
+ */
+
+#include <linux/delay.h>
+#include <linux/io.h>
+#include <linux/module.h>
+#include <linux/phy/phy.h>
+#include <linux/platform_device.h>
+
+#define HSIC_CTRL	0x08
+#define HSIC_ENABLE	BIT(7)
+#define PLL_BYPASS	BIT(4)
+
+static int mmp3_hsic_phy_init(struct phy *phy)
+{
+	void __iomem *base = (void __iomem *)phy_get_drvdata(phy);
+	u32 hsic_ctrl;
+
+	hsic_ctrl = readl_relaxed(base + HSIC_CTRL);
+	hsic_ctrl |= HSIC_ENABLE;
+	hsic_ctrl |= PLL_BYPASS;
+	writel_relaxed(hsic_ctrl, base + HSIC_CTRL);
+
+	return 0;
+}
+
+static const struct phy_ops mmp3_hsic_phy_ops = {
+	.init		= mmp3_hsic_phy_init,
+	.owner		= THIS_MODULE,
+};
+
+static const struct of_device_id mmp3_hsic_phy_of_match[] = {
+	{ .compatible = "marvell,mmp3-hsic-phy", },
+	{ },
+};
+MODULE_DEVICE_TABLE(of, mmp3_hsic_phy_of_match);
+
+static int mmp3_hsic_phy_probe(struct platform_device *pdev)
+{
+	struct device *dev = &pdev->dev;
+	struct phy_provider *provider;
+	struct resource *resource;
+	void __iomem *base;
+	struct phy *phy;
+
+	resource = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	base = devm_ioremap_resource(dev, resource);
+	if (IS_ERR(base)) {
+		dev_err(dev, "failed to remap PHY regs\n");
+		return PTR_ERR(base);
+	}
+
+	phy = devm_phy_create(dev, NULL, &mmp3_hsic_phy_ops);
+	if (IS_ERR(phy)) {
+		dev_err(dev, "failed to create PHY\n");
+		return PTR_ERR(phy);
+	}
+
+	phy_set_drvdata(phy, (void *)base);
+	provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate);
+	if (IS_ERR(provider)) {
+		dev_err(dev, "failed to register PHY provider\n");
+		return PTR_ERR(provider);
+	}
+
+	return 0;
+}
+
+static struct platform_driver mmp3_hsic_phy_driver = {
+	.probe		= mmp3_hsic_phy_probe,
+	.driver		= {
+		.name	= "mmp3-hsic-phy",
+		.of_match_table = mmp3_hsic_phy_of_match,
+	},
+};
+module_platform_driver(mmp3_hsic_phy_driver);
+
+MODULE_AUTHOR("Lubomir Rintel <lkundrak@v3.sk>");
+MODULE_DESCRIPTION("Marvell MMP3 USB HSIC PHY Driver");
+MODULE_LICENSE("GPL");
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [RESEND PATCH v3 3/3] phy: Add USB HSIC PHY driver for Marvell MMP3 SoC
  2020-08-17 22:34 ` [RESEND PATCH v3 3/3] phy: Add USB HSIC PHY driver for Marvell MMP3 SoC Lubomir Rintel
@ 2020-08-31  8:58   ` Vinod Koul
  2020-09-03 20:14     ` Lubomir Rintel
  0 siblings, 1 reply; 6+ messages in thread
From: Vinod Koul @ 2020-08-31  8:58 UTC (permalink / raw)
  To: Lubomir Rintel
  Cc: Kishon Vijay Abraham I, Rob Herring, linux-kernel, devicetree

On 18-08-20, 00:34, Lubomir Rintel wrote:
> Add PHY driver for the HSICs found on Marvell MMP3 SoC. The driver is
> rather straightforward -- the PHY essentially just needs to be enabled.
> 
> Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
> 
> ---
> Changes since v1:
> - Explicitely cast drvdata pointer to make sparse happy
> 
>  drivers/phy/marvell/Kconfig         | 12 +++++
>  drivers/phy/marvell/Makefile        |  1 +
>  drivers/phy/marvell/phy-mmp3-hsic.c | 82 +++++++++++++++++++++++++++++
>  3 files changed, 95 insertions(+)
>  create mode 100644 drivers/phy/marvell/phy-mmp3-hsic.c
> 
> diff --git a/drivers/phy/marvell/Kconfig b/drivers/phy/marvell/Kconfig
> index 8f6273c837ec3..6c96f2bf52665 100644
> --- a/drivers/phy/marvell/Kconfig
> +++ b/drivers/phy/marvell/Kconfig
> @@ -116,3 +116,15 @@ config PHY_MMP3_USB
>  	  The PHY driver will be used by Marvell udc/ehci/otg driver.
>  
>  	  To compile this driver as a module, choose M here.
> +
> +config PHY_MMP3_HSIC
> +	tristate "Marvell MMP3 USB HSIC PHY Driver"
> +	depends on MACH_MMP3_DT || COMPILE_TEST
> +	select GENERIC_PHY
> +	help
> +	  Enable this to support Marvell MMP3 USB HSIC PHY driver for
> +	  Marvell MMP3 SoC. This driver will be used my the Marvell EHCI
> +	  driver to initialize the interface to internal USB HSIC
> +	  components on MMP3-based boards.
> +
> +	  To compile this driver as a module, choose M here.
> diff --git a/drivers/phy/marvell/Makefile b/drivers/phy/marvell/Makefile
> index 5a106b1549f41..7f296ef028292 100644
> --- a/drivers/phy/marvell/Makefile
> +++ b/drivers/phy/marvell/Makefile
> @@ -3,6 +3,7 @@ obj-$(CONFIG_ARMADA375_USBCLUSTER_PHY)	+= phy-armada375-usb2.o
>  obj-$(CONFIG_PHY_BERLIN_SATA)		+= phy-berlin-sata.o
>  obj-$(CONFIG_PHY_BERLIN_USB)		+= phy-berlin-usb.o
>  obj-$(CONFIG_PHY_MMP3_USB)		+= phy-mmp3-usb.o
> +obj-$(CONFIG_PHY_MMP3_HSIC)		+= phy-mmp3-hsic.o
>  obj-$(CONFIG_PHY_MVEBU_A3700_COMPHY)	+= phy-mvebu-a3700-comphy.o
>  obj-$(CONFIG_PHY_MVEBU_A3700_UTMI)	+= phy-mvebu-a3700-utmi.o
>  obj-$(CONFIG_PHY_MVEBU_A38X_COMPHY)	+= phy-armada38x-comphy.o
> diff --git a/drivers/phy/marvell/phy-mmp3-hsic.c b/drivers/phy/marvell/phy-mmp3-hsic.c
> new file mode 100644
> index 0000000000000..47c1e8894939f
> --- /dev/null
> +++ b/drivers/phy/marvell/phy-mmp3-hsic.c
> @@ -0,0 +1,82 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * Copyright (C) 2020 Lubomir Rintel <lkundrak@v3.sk>
> + */
> +
> +#include <linux/delay.h>
> +#include <linux/io.h>
> +#include <linux/module.h>
> +#include <linux/phy/phy.h>
> +#include <linux/platform_device.h>
> +
> +#define HSIC_CTRL	0x08
> +#define HSIC_ENABLE	BIT(7)
> +#define PLL_BYPASS	BIT(4)
> +
> +static int mmp3_hsic_phy_init(struct phy *phy)
> +{
> +	void __iomem *base = (void __iomem *)phy_get_drvdata(phy);

you are casting away from void * and casting to another void *,
something doesn't look correct!

> +	u32 hsic_ctrl;
> +
> +	hsic_ctrl = readl_relaxed(base + HSIC_CTRL);
> +	hsic_ctrl |= HSIC_ENABLE;
> +	hsic_ctrl |= PLL_BYPASS;
> +	writel_relaxed(hsic_ctrl, base + HSIC_CTRL);
> +
> +	return 0;
> +}
> +
> +static const struct phy_ops mmp3_hsic_phy_ops = {
> +	.init		= mmp3_hsic_phy_init,
> +	.owner		= THIS_MODULE,
> +};
> +
> +static const struct of_device_id mmp3_hsic_phy_of_match[] = {
> +	{ .compatible = "marvell,mmp3-hsic-phy", },
> +	{ },
> +};
> +MODULE_DEVICE_TABLE(of, mmp3_hsic_phy_of_match);
> +
> +static int mmp3_hsic_phy_probe(struct platform_device *pdev)
> +{
> +	struct device *dev = &pdev->dev;
> +	struct phy_provider *provider;
> +	struct resource *resource;
> +	void __iomem *base;
> +	struct phy *phy;
> +
> +	resource = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> +	base = devm_ioremap_resource(dev, resource);
> +	if (IS_ERR(base)) {
> +		dev_err(dev, "failed to remap PHY regs\n");
> +		return PTR_ERR(base);
> +	}
> +
> +	phy = devm_phy_create(dev, NULL, &mmp3_hsic_phy_ops);
> +	if (IS_ERR(phy)) {
> +		dev_err(dev, "failed to create PHY\n");
> +		return PTR_ERR(phy);
> +	}
> +
> +	phy_set_drvdata(phy, (void *)base);

again skip the cast

> +	provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate);
> +	if (IS_ERR(provider)) {
> +		dev_err(dev, "failed to register PHY provider\n");
> +		return PTR_ERR(provider);
> +	}
> +
> +	return 0;
> +}
> +
> +static struct platform_driver mmp3_hsic_phy_driver = {
> +	.probe		= mmp3_hsic_phy_probe,
> +	.driver		= {
> +		.name	= "mmp3-hsic-phy",
> +		.of_match_table = mmp3_hsic_phy_of_match,
> +	},
> +};
> +module_platform_driver(mmp3_hsic_phy_driver);
> +
> +MODULE_AUTHOR("Lubomir Rintel <lkundrak@v3.sk>");
> +MODULE_DESCRIPTION("Marvell MMP3 USB HSIC PHY Driver");
> +MODULE_LICENSE("GPL");
> -- 
> 2.26.2

-- 
~Vinod

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [RESEND PATCH v3 3/3] phy: Add USB HSIC PHY driver for Marvell MMP3 SoC
  2020-08-31  8:58   ` Vinod Koul
@ 2020-09-03 20:14     ` Lubomir Rintel
  0 siblings, 0 replies; 6+ messages in thread
From: Lubomir Rintel @ 2020-09-03 20:14 UTC (permalink / raw)
  To: Vinod Koul; +Cc: Kishon Vijay Abraham I, Rob Herring, linux-kernel, devicetree

On Mon, Aug 31, 2020 at 02:28:08PM +0530, Vinod Koul wrote:
> On 18-08-20, 00:34, Lubomir Rintel wrote:
> > Add PHY driver for the HSICs found on Marvell MMP3 SoC. The driver is
> > rather straightforward -- the PHY essentially just needs to be enabled.
> > 
> > Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
> > 
> > ---
> > Changes since v1:
> > - Explicitely cast drvdata pointer to make sparse happy
> > 
> >  drivers/phy/marvell/Kconfig         | 12 +++++
> >  drivers/phy/marvell/Makefile        |  1 +
> >  drivers/phy/marvell/phy-mmp3-hsic.c | 82 +++++++++++++++++++++++++++++
> >  3 files changed, 95 insertions(+)
> >  create mode 100644 drivers/phy/marvell/phy-mmp3-hsic.c
> > 
> > diff --git a/drivers/phy/marvell/Kconfig b/drivers/phy/marvell/Kconfig
> > index 8f6273c837ec3..6c96f2bf52665 100644
> > --- a/drivers/phy/marvell/Kconfig
> > +++ b/drivers/phy/marvell/Kconfig
> > @@ -116,3 +116,15 @@ config PHY_MMP3_USB
> >  	  The PHY driver will be used by Marvell udc/ehci/otg driver.
> >  
> >  	  To compile this driver as a module, choose M here.
> > +
> > +config PHY_MMP3_HSIC
> > +	tristate "Marvell MMP3 USB HSIC PHY Driver"
> > +	depends on MACH_MMP3_DT || COMPILE_TEST
> > +	select GENERIC_PHY
> > +	help
> > +	  Enable this to support Marvell MMP3 USB HSIC PHY driver for
> > +	  Marvell MMP3 SoC. This driver will be used my the Marvell EHCI
> > +	  driver to initialize the interface to internal USB HSIC
> > +	  components on MMP3-based boards.
> > +
> > +	  To compile this driver as a module, choose M here.
> > diff --git a/drivers/phy/marvell/Makefile b/drivers/phy/marvell/Makefile
> > index 5a106b1549f41..7f296ef028292 100644
> > --- a/drivers/phy/marvell/Makefile
> > +++ b/drivers/phy/marvell/Makefile
> > @@ -3,6 +3,7 @@ obj-$(CONFIG_ARMADA375_USBCLUSTER_PHY)	+= phy-armada375-usb2.o
> >  obj-$(CONFIG_PHY_BERLIN_SATA)		+= phy-berlin-sata.o
> >  obj-$(CONFIG_PHY_BERLIN_USB)		+= phy-berlin-usb.o
> >  obj-$(CONFIG_PHY_MMP3_USB)		+= phy-mmp3-usb.o
> > +obj-$(CONFIG_PHY_MMP3_HSIC)		+= phy-mmp3-hsic.o
> >  obj-$(CONFIG_PHY_MVEBU_A3700_COMPHY)	+= phy-mvebu-a3700-comphy.o
> >  obj-$(CONFIG_PHY_MVEBU_A3700_UTMI)	+= phy-mvebu-a3700-utmi.o
> >  obj-$(CONFIG_PHY_MVEBU_A38X_COMPHY)	+= phy-armada38x-comphy.o
> > diff --git a/drivers/phy/marvell/phy-mmp3-hsic.c b/drivers/phy/marvell/phy-mmp3-hsic.c
> > new file mode 100644
> > index 0000000000000..47c1e8894939f
> > --- /dev/null
> > +++ b/drivers/phy/marvell/phy-mmp3-hsic.c
> > @@ -0,0 +1,82 @@
> > +// SPDX-License-Identifier: GPL-2.0+
> > +/*
> > + * Copyright (C) 2020 Lubomir Rintel <lkundrak@v3.sk>
> > + */
> > +
> > +#include <linux/delay.h>
> > +#include <linux/io.h>
> > +#include <linux/module.h>
> > +#include <linux/phy/phy.h>
> > +#include <linux/platform_device.h>
> > +
> > +#define HSIC_CTRL	0x08
> > +#define HSIC_ENABLE	BIT(7)
> > +#define PLL_BYPASS	BIT(4)
> > +
> > +static int mmp3_hsic_phy_init(struct phy *phy)
> > +{
> > +	void __iomem *base = (void __iomem *)phy_get_drvdata(phy);
> 
> you are casting away from void * and casting to another void *,
> something doesn't look correct!

This is to make it explicit to sparse that the destination type is
supposed to have the __iomem annotation. Otherwise it complains:

  drivers/phy/marvell/phy-mmp3-hsic.c:61:31: warning: cast removes address space '__iomem' of expression

> > +	u32 hsic_ctrl;
> > +
> > +	hsic_ctrl = readl_relaxed(base + HSIC_CTRL);
> > +	hsic_ctrl |= HSIC_ENABLE;
> > +	hsic_ctrl |= PLL_BYPASS;
> > +	writel_relaxed(hsic_ctrl, base + HSIC_CTRL);
> > +
> > +	return 0;
> > +}
> > +
> > +static const struct phy_ops mmp3_hsic_phy_ops = {
> > +	.init		= mmp3_hsic_phy_init,
> > +	.owner		= THIS_MODULE,
> > +};
> > +
> > +static const struct of_device_id mmp3_hsic_phy_of_match[] = {
> > +	{ .compatible = "marvell,mmp3-hsic-phy", },
> > +	{ },
> > +};
> > +MODULE_DEVICE_TABLE(of, mmp3_hsic_phy_of_match);
> > +
> > +static int mmp3_hsic_phy_probe(struct platform_device *pdev)
> > +{
> > +	struct device *dev = &pdev->dev;
> > +	struct phy_provider *provider;
> > +	struct resource *resource;
> > +	void __iomem *base;
> > +	struct phy *phy;
> > +
> > +	resource = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> > +	base = devm_ioremap_resource(dev, resource);
> > +	if (IS_ERR(base)) {
> > +		dev_err(dev, "failed to remap PHY regs\n");
> > +		return PTR_ERR(base);
> > +	}
> > +
> > +	phy = devm_phy_create(dev, NULL, &mmp3_hsic_phy_ops);
> > +	if (IS_ERR(phy)) {
> > +		dev_err(dev, "failed to create PHY\n");
> > +		return PTR_ERR(phy);
> > +	}
> > +
> > +	phy_set_drvdata(phy, (void *)base);
> 
> again skip the cast
> 
> > +	provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate);
> > +	if (IS_ERR(provider)) {
> > +		dev_err(dev, "failed to register PHY provider\n");
> > +		return PTR_ERR(provider);
> > +	}
> > +
> > +	return 0;
> > +}
> > +
> > +static struct platform_driver mmp3_hsic_phy_driver = {
> > +	.probe		= mmp3_hsic_phy_probe,
> > +	.driver		= {
> > +		.name	= "mmp3-hsic-phy",
> > +		.of_match_table = mmp3_hsic_phy_of_match,
> > +	},
> > +};
> > +module_platform_driver(mmp3_hsic_phy_driver);
> > +
> > +MODULE_AUTHOR("Lubomir Rintel <lkundrak@v3.sk>");
> > +MODULE_DESCRIPTION("Marvell MMP3 USB HSIC PHY Driver");
> > +MODULE_LICENSE("GPL");
> > -- 
> > 2.26.2
> 
> -- 
> ~Vinod

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-09-03 20:14 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-17 22:33 [RESEND PATCH v3 0/3] phy: Add USB HSIC PHY driver for Marvell MMP3 SoC Lubomir Rintel
2020-08-17 22:33 ` [RESEND PATCH v3 1/3] dt-bindings: phy: Drop reset-gpios from marvell,mmp3-hsic-phy Lubomir Rintel
2020-08-17 22:33 ` [RESEND PATCH v3 2/3] dt-bindings: phy: Allow BSD licensing of marvell,mmp3-hsic-phy.yaml Lubomir Rintel
2020-08-17 22:34 ` [RESEND PATCH v3 3/3] phy: Add USB HSIC PHY driver for Marvell MMP3 SoC Lubomir Rintel
2020-08-31  8:58   ` Vinod Koul
2020-09-03 20:14     ` Lubomir Rintel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).