linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/4] phy: rcar-gen3-usb2: add support for r8a77995
@ 2017-08-31  7:31 Yoshihiro Shimoda
  2017-08-31  7:31 ` [PATCH 1/4] phy: rcar-gen3-usb2: check dr_mode for otg mode Yoshihiro Shimoda
                   ` (3 more replies)
  0 siblings, 4 replies; 13+ messages in thread
From: Yoshihiro Shimoda @ 2017-08-31  7:31 UTC (permalink / raw)
  To: kishon; +Cc: linux-kernel, linux-renesas-soc, Yoshihiro Shimoda

This patch set is based on the latest phy.git / next branch
(the commit id = d9c51f4c53ae2af03aa8bd001d46f21b0adcdab8).

After this patch set is applied, a usb 2.0 host node that is combined
with usb 2.0 peripheral needs 'dr_mode = "otg";' property.

Yoshihiro Shimoda (4):
  phy: rcar-gen3-usb2: check dr_mode for otg mode
  phy: rcar-gen3-usb2: split the two meaning of "has_otg"
  phy: rcar-gen3-usb2: add SoC-specific parameter for dedicated pins
  phy: rcar-gen3-usb2: add binding for r8a77995

 .../devicetree/bindings/phy/rcar-gen3-phy-usb2.txt |  2 +
 drivers/phy/renesas/phy-rcar-gen3-usb2.c           | 97 ++++++++++++++++------
 2 files changed, 73 insertions(+), 26 deletions(-)

-- 
1.9.1

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

* [PATCH 1/4] phy: rcar-gen3-usb2: check dr_mode for otg mode
  2017-08-31  7:31 [PATCH 0/4] phy: rcar-gen3-usb2: add support for r8a77995 Yoshihiro Shimoda
@ 2017-08-31  7:31 ` Yoshihiro Shimoda
  2017-08-31  9:40   ` Sergei Shtylyov
  2017-08-31  7:31 ` [PATCH 2/4] phy: rcar-gen3-usb2: split the two meaning of "has_otg" Yoshihiro Shimoda
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 13+ messages in thread
From: Yoshihiro Shimoda @ 2017-08-31  7:31 UTC (permalink / raw)
  To: kishon; +Cc: linux-kernel, linux-renesas-soc, Yoshihiro Shimoda

The previous code assumed a channel has otg capability if a channel
has interrupt property. But, it is not good because:
 - Battery charging feature also needs interrupt property.
 - Some R-Car Gen3 SoCs (e.g. R-Car D3) doesn't have OTG capability.

So, this patch checks whether usb 2.0 host node has dr_mode property or
not. If it has 'dr_mode = "otg";', this driver enables otg capability.

Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
 drivers/phy/renesas/phy-rcar-gen3-usb2.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/phy/renesas/phy-rcar-gen3-usb2.c b/drivers/phy/renesas/phy-rcar-gen3-usb2.c
index 54c3429..e00e99a 100644
--- a/drivers/phy/renesas/phy-rcar-gen3-usb2.c
+++ b/drivers/phy/renesas/phy-rcar-gen3-usb2.c
@@ -1,7 +1,7 @@
 /*
  * Renesas R-Car Gen3 for USB2.0 PHY driver
  *
- * Copyright (C) 2015 Renesas Electronics Corporation
+ * Copyright (C) 2015-2017 Renesas Electronics Corporation
  *
  * This is based on the phy-rcar-gen2 driver:
  * Copyright (C) 2014 Renesas Solutions Corp.
@@ -22,6 +22,7 @@
 #include <linux/platform_device.h>
 #include <linux/pm_runtime.h>
 #include <linux/regulator/consumer.h>
+#include <linux/usb/of.h>
 #include <linux/workqueue.h>
 
 /******* USB2.0 Host registers (original offset is +0x200) *******/
@@ -415,13 +416,16 @@ static int rcar_gen3_phy_usb2_probe(struct platform_device *pdev)
 	/* call request_irq for OTG */
 	irq = platform_get_irq(pdev, 0);
 	if (irq >= 0) {
-		int ret;
-
 		INIT_WORK(&channel->work, rcar_gen3_phy_usb2_work);
 		irq = devm_request_irq(dev, irq, rcar_gen3_phy_usb2_irq,
 				       IRQF_SHARED, dev_name(dev), channel);
 		if (irq < 0)
 			dev_err(dev, "No irq handler (%d)\n", irq);
+	}
+
+	if (of_usb_get_dr_mode_by_phy(dev->of_node, 0) == USB_DR_MODE_OTG) {
+		int ret;
+
 		channel->has_otg = true;
 		channel->extcon = devm_extcon_dev_allocate(dev,
 							rcar_gen3_phy_cable);
-- 
1.9.1

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

* [PATCH 2/4] phy: rcar-gen3-usb2: split the two meaning of "has_otg"
  2017-08-31  7:31 [PATCH 0/4] phy: rcar-gen3-usb2: add support for r8a77995 Yoshihiro Shimoda
  2017-08-31  7:31 ` [PATCH 1/4] phy: rcar-gen3-usb2: check dr_mode for otg mode Yoshihiro Shimoda
@ 2017-08-31  7:31 ` Yoshihiro Shimoda
  2017-08-31  7:31 ` [PATCH 3/4] phy: rcar-gen3-usb2: add SoC-specific parameter for dedicated pins Yoshihiro Shimoda
  2017-08-31  7:31 ` [PATCH 4/4] phy: rcar-gen3-usb2: add binding for r8a77995 Yoshihiro Shimoda
  3 siblings, 0 replies; 13+ messages in thread
From: Yoshihiro Shimoda @ 2017-08-31  7:31 UTC (permalink / raw)
  To: kishon; +Cc: linux-kernel, linux-renesas-soc, Yoshihiro Shimoda

The has_otg on previous code has the two meaning:
 - The channel has dedicated otg pins (ID, VBUS).
 - The channel can swap the role via sysfs.

However, some SoCs (e.g. R-Car D3) doesn't have such dedicated pins,
but the SoCs can swap the role. So, this patch split the two meaning
of has_otg as "has dedicated otg pins" and adds a new value
"can_role_swap". For now, the behavior is the same as before.

Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
 drivers/phy/renesas/phy-rcar-gen3-usb2.c | 61 ++++++++++++++++++++++----------
 1 file changed, 42 insertions(+), 19 deletions(-)

diff --git a/drivers/phy/renesas/phy-rcar-gen3-usb2.c b/drivers/phy/renesas/phy-rcar-gen3-usb2.c
index e00e99a..4ea9902 100644
--- a/drivers/phy/renesas/phy-rcar-gen3-usb2.c
+++ b/drivers/phy/renesas/phy-rcar-gen3-usb2.c
@@ -87,7 +87,8 @@ struct rcar_gen3_chan {
 	struct regulator *vbus;
 	struct work_struct work;
 	bool extcon_host;
-	bool has_otg;
+	bool has_otg;	/* has dedicated pins (ID, VBUS) */
+	bool can_role_swap;
 };
 
 static void rcar_gen3_phy_usb2_work(struct work_struct *work)
@@ -219,14 +220,10 @@ static bool rcar_gen3_is_host(struct rcar_gen3_chan *ch)
 	return !(readl(ch->base + USB2_COMMCTRL) & USB2_COMMCTRL_OTG_PERI);
 }
 
-static ssize_t role_store(struct device *dev, struct device_attribute *attr,
-			  const char *buf, size_t count)
+static ssize_t rcar_gen3_otg_change_role(struct rcar_gen3_chan *ch,
+					 bool new_mode_is_host)
 {
-	struct rcar_gen3_chan *ch = dev_get_drvdata(dev);
-	bool is_b_device, is_host, new_mode_is_host;
-
-	if (!ch->has_otg || !ch->phy->init_count)
-		return -EIO;
+	bool is_b_device, is_host;
 
 	/*
 	 * is_b_device: true is B-Device. false is A-Device.
@@ -234,12 +231,6 @@ static ssize_t role_store(struct device *dev, struct device_attribute *attr,
 	 */
 	is_b_device = rcar_gen3_check_id(ch);
 	is_host = rcar_gen3_is_host(ch);
-	if (!strncmp(buf, "host", strlen("host")))
-		new_mode_is_host = true;
-	else if (!strncmp(buf, "peripheral", strlen("peripheral")))
-		new_mode_is_host = false;
-	else
-		return -EINVAL;
 
 	/* If current and new mode is the same, this returns the error */
 	if (is_host == new_mode_is_host)
@@ -257,6 +248,32 @@ static ssize_t role_store(struct device *dev, struct device_attribute *attr,
 			rcar_gen3_init_for_peri(ch);
 	}
 
+	return 0;
+}
+
+static ssize_t role_store(struct device *dev, struct device_attribute *attr,
+			  const char *buf, size_t count)
+{
+	struct rcar_gen3_chan *ch = dev_get_drvdata(dev);
+	bool new_mode_is_host;
+	ssize_t ret = -EIO;
+
+	if (!ch->phy->init_count)
+		return -EIO;
+
+	if (!strncmp(buf, "host", strlen("host")))
+		new_mode_is_host = true;
+	else if (!strncmp(buf, "peripheral", strlen("peripheral")))
+		new_mode_is_host = false;
+	else
+		return -EINVAL;
+
+	if (ch->has_otg)
+		ret = rcar_gen3_otg_change_role(ch, new_mode_is_host);
+
+	if (ret < 0)
+		return ret;
+
 	return count;
 }
 
@@ -264,12 +281,17 @@ static ssize_t role_show(struct device *dev, struct device_attribute *attr,
 			 char *buf)
 {
 	struct rcar_gen3_chan *ch = dev_get_drvdata(dev);
+	bool is_host;
 
-	if (!ch->has_otg || !ch->phy->init_count)
+	if (!ch->phy->init_count)
 		return -EIO;
 
-	return sprintf(buf, "%s\n", rcar_gen3_is_host(ch) ? "host" :
-							    "peripheral");
+	if (ch->has_otg)
+		is_host = rcar_gen3_is_host(ch);
+	else
+		return -EIO;
+
+	return sprintf(buf, "%s\n", is_host ? "host" : "peripheral");
 }
 static DEVICE_ATTR_RW(role);
 
@@ -427,6 +449,7 @@ static int rcar_gen3_phy_usb2_probe(struct platform_device *pdev)
 		int ret;
 
 		channel->has_otg = true;
+		channel->can_role_swap = true;
 		channel->extcon = devm_extcon_dev_allocate(dev,
 							rcar_gen3_phy_cable);
 		if (IS_ERR(channel->extcon))
@@ -468,7 +491,7 @@ static int rcar_gen3_phy_usb2_probe(struct platform_device *pdev)
 		dev_err(dev, "Failed to register PHY provider\n");
 		ret = PTR_ERR(provider);
 		goto error;
-	} else if (channel->has_otg) {
+	} else if (channel->can_role_swap) {
 		int ret;
 
 		ret = device_create_file(dev, &dev_attr_role);
@@ -488,7 +511,7 @@ static int rcar_gen3_phy_usb2_remove(struct platform_device *pdev)
 {
 	struct rcar_gen3_chan *channel = platform_get_drvdata(pdev);
 
-	if (channel->has_otg)
+	if (channel->can_role_swap)
 		device_remove_file(&pdev->dev, &dev_attr_role);
 
 	pm_runtime_disable(&pdev->dev);
-- 
1.9.1

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

* [PATCH 3/4] phy: rcar-gen3-usb2: add SoC-specific parameter for dedicated pins
  2017-08-31  7:31 [PATCH 0/4] phy: rcar-gen3-usb2: add support for r8a77995 Yoshihiro Shimoda
  2017-08-31  7:31 ` [PATCH 1/4] phy: rcar-gen3-usb2: check dr_mode for otg mode Yoshihiro Shimoda
  2017-08-31  7:31 ` [PATCH 2/4] phy: rcar-gen3-usb2: split the two meaning of "has_otg" Yoshihiro Shimoda
@ 2017-08-31  7:31 ` Yoshihiro Shimoda
  2017-08-31  7:51   ` Geert Uytterhoeven
  2017-08-31  9:43   ` Sergei Shtylyov
  2017-08-31  7:31 ` [PATCH 4/4] phy: rcar-gen3-usb2: add binding for r8a77995 Yoshihiro Shimoda
  3 siblings, 2 replies; 13+ messages in thread
From: Yoshihiro Shimoda @ 2017-08-31  7:31 UTC (permalink / raw)
  To: kishon; +Cc: linux-kernel, linux-renesas-soc, Yoshihiro Shimoda

This patch adds SoC-specific parameter to avoid reading/writing
specific registers wronly if this driver runs on a SoC which doesn't
have dedicated pins (e.g. R-Car D3).

Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
 drivers/phy/renesas/phy-rcar-gen3-usb2.c | 25 ++++++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)

diff --git a/drivers/phy/renesas/phy-rcar-gen3-usb2.c b/drivers/phy/renesas/phy-rcar-gen3-usb2.c
index 4ea9902..28ebc98 100644
--- a/drivers/phy/renesas/phy-rcar-gen3-usb2.c
+++ b/drivers/phy/renesas/phy-rcar-gen3-usb2.c
@@ -18,6 +18,7 @@
 #include <linux/module.h>
 #include <linux/of.h>
 #include <linux/of_address.h>
+#include <linux/of_device.h>
 #include <linux/phy/phy.h>
 #include <linux/platform_device.h>
 #include <linux/pm_runtime.h>
@@ -80,6 +81,8 @@
 #define USB2_ADPCTRL_IDPULLUP		BIT(5)	/* 1 = ID sampling is enabled */
 #define USB2_ADPCTRL_DRVVBUS		BIT(4)
 
+#define RCAR_GEN3_PHY_HAS_DEDICATED_PINS	1
+
 struct rcar_gen3_chan {
 	void __iomem *base;
 	struct extcon_dev *extcon;
@@ -400,9 +403,18 @@ static irqreturn_t rcar_gen3_phy_usb2_irq(int irq, void *_ch)
 }
 
 static const struct of_device_id rcar_gen3_phy_usb2_match_table[] = {
-	{ .compatible = "renesas,usb2-phy-r8a7795" },
-	{ .compatible = "renesas,usb2-phy-r8a7796" },
-	{ .compatible = "renesas,rcar-gen3-usb2-phy" },
+	{
+		.compatible = "renesas,usb2-phy-r8a7795",
+		.data = (void *)RCAR_GEN3_PHY_HAS_DEDICATED_PINS,
+	},
+	{
+		.compatible = "renesas,usb2-phy-r8a7796",
+		.data = (void *)RCAR_GEN3_PHY_HAS_DEDICATED_PINS,
+	},
+	{
+		.compatible = "renesas,rcar-gen3-usb2-phy",
+		.data = (void *)RCAR_GEN3_PHY_HAS_DEDICATED_PINS,
+	},
 	{ }
 };
 MODULE_DEVICE_TABLE(of, rcar_gen3_phy_usb2_match_table);
@@ -446,9 +458,12 @@ static int rcar_gen3_phy_usb2_probe(struct platform_device *pdev)
 	}
 
 	if (of_usb_get_dr_mode_by_phy(dev->of_node, 0) == USB_DR_MODE_OTG) {
-		int ret;
+		int ret, dedicated_pins;
+		const struct of_device_id *of_id =
+			of_match_device(rcar_gen3_phy_usb2_match_table, dev);
 
-		channel->has_otg = true;
+		dedicated_pins = of_id ? (uintptr_t)of_id->data : 0;
+		channel->has_otg = !!dedicated_pins;
 		channel->can_role_swap = true;
 		channel->extcon = devm_extcon_dev_allocate(dev,
 							rcar_gen3_phy_cable);
-- 
1.9.1

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

* [PATCH 4/4] phy: rcar-gen3-usb2: add binding for r8a77995
  2017-08-31  7:31 [PATCH 0/4] phy: rcar-gen3-usb2: add support for r8a77995 Yoshihiro Shimoda
                   ` (2 preceding siblings ...)
  2017-08-31  7:31 ` [PATCH 3/4] phy: rcar-gen3-usb2: add SoC-specific parameter for dedicated pins Yoshihiro Shimoda
@ 2017-08-31  7:31 ` Yoshihiro Shimoda
  3 siblings, 0 replies; 13+ messages in thread
From: Yoshihiro Shimoda @ 2017-08-31  7:31 UTC (permalink / raw)
  To: kishon; +Cc: linux-kernel, linux-renesas-soc, Yoshihiro Shimoda

This patch adds binding for r8a77995 (R-Car D3). Since r8a77995 doesn't
have dedicated pins (ID, VBUS), this of_device_id doesn't have any data.

For now, this driver doesn't support usb role swap for r8a77995.

Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
 Documentation/devicetree/bindings/phy/rcar-gen3-phy-usb2.txt | 2 ++
 drivers/phy/renesas/phy-rcar-gen3-usb2.c                     | 3 +++
 2 files changed, 5 insertions(+)

diff --git a/Documentation/devicetree/bindings/phy/rcar-gen3-phy-usb2.txt b/Documentation/devicetree/bindings/phy/rcar-gen3-phy-usb2.txt
index ace9cce..99b651b 100644
--- a/Documentation/devicetree/bindings/phy/rcar-gen3-phy-usb2.txt
+++ b/Documentation/devicetree/bindings/phy/rcar-gen3-phy-usb2.txt
@@ -8,6 +8,8 @@ Required properties:
 	      SoC.
 	      "renesas,usb2-phy-r8a7796" if the device is a part of an R8A7796
 	      SoC.
+	      "renesas,usb2-phy-r8a77995" if the device is a part of an
+	      R8A77995 SoC.
 	      "renesas,rcar-gen3-usb2-phy" for a generic R-Car Gen3 compatible device.
 
 	      When compatible with the generic version, nodes must list the
diff --git a/drivers/phy/renesas/phy-rcar-gen3-usb2.c b/drivers/phy/renesas/phy-rcar-gen3-usb2.c
index 28ebc98..316eb41 100644
--- a/drivers/phy/renesas/phy-rcar-gen3-usb2.c
+++ b/drivers/phy/renesas/phy-rcar-gen3-usb2.c
@@ -412,6 +412,9 @@ static irqreturn_t rcar_gen3_phy_usb2_irq(int irq, void *_ch)
 		.data = (void *)RCAR_GEN3_PHY_HAS_DEDICATED_PINS,
 	},
 	{
+		.compatible = "renesas,usb2-phy-r8a77995",
+	},
+	{
 		.compatible = "renesas,rcar-gen3-usb2-phy",
 		.data = (void *)RCAR_GEN3_PHY_HAS_DEDICATED_PINS,
 	},
-- 
1.9.1

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

* Re: [PATCH 3/4] phy: rcar-gen3-usb2: add SoC-specific parameter for dedicated pins
  2017-08-31  7:31 ` [PATCH 3/4] phy: rcar-gen3-usb2: add SoC-specific parameter for dedicated pins Yoshihiro Shimoda
@ 2017-08-31  7:51   ` Geert Uytterhoeven
  2017-08-31  8:15     ` Yoshihiro Shimoda
  2017-08-31  9:43   ` Sergei Shtylyov
  1 sibling, 1 reply; 13+ messages in thread
From: Geert Uytterhoeven @ 2017-08-31  7:51 UTC (permalink / raw)
  To: Yoshihiro Shimoda; +Cc: Kishon Vijay Abraham I, linux-kernel, Linux-Renesas

Hi Shimoda-san,

On Thu, Aug 31, 2017 at 9:31 AM, Yoshihiro Shimoda
<yoshihiro.shimoda.uh@renesas.com> wrote:
> This patch adds SoC-specific parameter to avoid reading/writing
> specific registers wronly if this driver runs on a SoC which doesn't
> have dedicated pins (e.g. R-Car D3).
>
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
> ---
>  drivers/phy/renesas/phy-rcar-gen3-usb2.c | 25 ++++++++++++++++++++-----
>  1 file changed, 20 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/phy/renesas/phy-rcar-gen3-usb2.c b/drivers/phy/renesas/phy-rcar-gen3-usb2.c
> index 4ea9902..28ebc98 100644
> --- a/drivers/phy/renesas/phy-rcar-gen3-usb2.c
> +++ b/drivers/phy/renesas/phy-rcar-gen3-usb2.c

> @@ -400,9 +403,18 @@ static irqreturn_t rcar_gen3_phy_usb2_irq(int irq, void *_ch)
>  }
>
>  static const struct of_device_id rcar_gen3_phy_usb2_match_table[] = {
> -       { .compatible = "renesas,usb2-phy-r8a7795" },
> -       { .compatible = "renesas,usb2-phy-r8a7796" },
> -       { .compatible = "renesas,rcar-gen3-usb2-phy" },
> +       {
> +               .compatible = "renesas,usb2-phy-r8a7795",
> +               .data = (void *)RCAR_GEN3_PHY_HAS_DEDICATED_PINS,
> +       },
> +       {
> +               .compatible = "renesas,usb2-phy-r8a7796",
> +               .data = (void *)RCAR_GEN3_PHY_HAS_DEDICATED_PINS,
> +       },
> +       {
> +               .compatible = "renesas,rcar-gen3-usb2-phy",
> +               .data = (void *)RCAR_GEN3_PHY_HAS_DEDICATED_PINS,
> +       },
>         { }
>  };

Given the generic R-Car Gen3 entry sets RCAR_GEN3_PHY_HAS_DEDICATED_PINS, you
cannot specify the fallback compatible value of "renesas,rcar-gen3-usb2-phy"
in the R-Car D3 .dtsi.

So I'm wondering, does the USB2 PHY still work (with limitations) on R-Car H3
and M3-W if you drop RCAR_GEN3_PHY_HAS_DEDICATED_PINS?
If yes, you can drop the flag from the generic entry, and R-Car D3 can specify
the generic fallback compatible value in its .dtsi, like H3 and M3-W.

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

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

* RE: [PATCH 3/4] phy: rcar-gen3-usb2: add SoC-specific parameter for dedicated pins
  2017-08-31  7:51   ` Geert Uytterhoeven
@ 2017-08-31  8:15     ` Yoshihiro Shimoda
  2017-08-31  8:27       ` Geert Uytterhoeven
  0 siblings, 1 reply; 13+ messages in thread
From: Yoshihiro Shimoda @ 2017-08-31  8:15 UTC (permalink / raw)
  To: Geert Uytterhoeven; +Cc: Kishon Vijay Abraham I, linux-kernel, Linux-Renesas

Hi Geert-san,

Thank you for the comments!

> From: Geert Uytterhoeven
> Sent: Thursday, August 31, 2017 4:51 PM
> 
> Hi Shimoda-san,
> 
> On Thu, Aug 31, 2017 at 9:31 AM, Yoshihiro Shimoda
> <yoshihiro.shimoda.uh@renesas.com> wrote:
> > This patch adds SoC-specific parameter to avoid reading/writing
> > specific registers wronly if this driver runs on a SoC which doesn't
> > have dedicated pins (e.g. R-Car D3).
> >
> > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
> > ---
> >  drivers/phy/renesas/phy-rcar-gen3-usb2.c | 25 ++++++++++++++++++++-----
> >  1 file changed, 20 insertions(+), 5 deletions(-)
> >
> > diff --git a/drivers/phy/renesas/phy-rcar-gen3-usb2.c b/drivers/phy/renesas/phy-rcar-gen3-usb2.c
> > index 4ea9902..28ebc98 100644
> > --- a/drivers/phy/renesas/phy-rcar-gen3-usb2.c
> > +++ b/drivers/phy/renesas/phy-rcar-gen3-usb2.c
> 
> > @@ -400,9 +403,18 @@ static irqreturn_t rcar_gen3_phy_usb2_irq(int irq, void *_ch)
> >  }
> >
> >  static const struct of_device_id rcar_gen3_phy_usb2_match_table[] = {
> > -       { .compatible = "renesas,usb2-phy-r8a7795" },
> > -       { .compatible = "renesas,usb2-phy-r8a7796" },
> > -       { .compatible = "renesas,rcar-gen3-usb2-phy" },
> > +       {
> > +               .compatible = "renesas,usb2-phy-r8a7795",
> > +               .data = (void *)RCAR_GEN3_PHY_HAS_DEDICATED_PINS,
> > +       },
> > +       {
> > +               .compatible = "renesas,usb2-phy-r8a7796",
> > +               .data = (void *)RCAR_GEN3_PHY_HAS_DEDICATED_PINS,
> > +       },
> > +       {
> > +               .compatible = "renesas,rcar-gen3-usb2-phy",
> > +               .data = (void *)RCAR_GEN3_PHY_HAS_DEDICATED_PINS,
> > +       },
> >         { }
> >  };
> 
> Given the generic R-Car Gen3 entry sets RCAR_GEN3_PHY_HAS_DEDICATED_PINS, you
> cannot specify the fallback compatible value of "renesas,rcar-gen3-usb2-phy"
> in the R-Car D3 .dtsi.

I understood it.

> So I'm wondering, does the USB2 PHY still work (with limitations) on R-Car H3
> and M3-W if you drop RCAR_GEN3_PHY_HAS_DEDICATED_PINS?

Yes, the USB PHY still work with limitation (otg capability channel works as
peripheral mode only. Other channels are no limitation).

> If yes, you can drop the flag from the generic entry, and R-Car D3 can specify
> the generic fallback compatible value in its .dtsi, like H3 and M3-W.

I got it. I will fix this patch set.

Best regards,
Yoshihiro Shimoda

> Gr{oetje,eeting}s,
> 
>                         Geert
> 
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
> 
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
>                                 -- Linus Torvalds

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

* Re: [PATCH 3/4] phy: rcar-gen3-usb2: add SoC-specific parameter for dedicated pins
  2017-08-31  8:15     ` Yoshihiro Shimoda
@ 2017-08-31  8:27       ` Geert Uytterhoeven
  2017-08-31  8:35         ` Yoshihiro Shimoda
  0 siblings, 1 reply; 13+ messages in thread
From: Geert Uytterhoeven @ 2017-08-31  8:27 UTC (permalink / raw)
  To: Yoshihiro Shimoda; +Cc: Kishon Vijay Abraham I, linux-kernel, Linux-Renesas

Hi Shimoda-san,

On Thu, Aug 31, 2017 at 10:15 AM, Yoshihiro Shimoda
<yoshihiro.shimoda.uh@renesas.com> wrote:
>> From: Geert Uytterhoeven
>> Sent: Thursday, August 31, 2017 4:51 PM
>> On Thu, Aug 31, 2017 at 9:31 AM, Yoshihiro Shimoda
>> <yoshihiro.shimoda.uh@renesas.com> wrote:
>> > This patch adds SoC-specific parameter to avoid reading/writing
>> > specific registers wronly if this driver runs on a SoC which doesn't
>> > have dedicated pins (e.g. R-Car D3).
>> >
>> > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
>> > ---
>> >  drivers/phy/renesas/phy-rcar-gen3-usb2.c | 25 ++++++++++++++++++++-----
>> >  1 file changed, 20 insertions(+), 5 deletions(-)
>> >
>> > diff --git a/drivers/phy/renesas/phy-rcar-gen3-usb2.c b/drivers/phy/renesas/phy-rcar-gen3-usb2.c
>> > index 4ea9902..28ebc98 100644
>> > --- a/drivers/phy/renesas/phy-rcar-gen3-usb2.c
>> > +++ b/drivers/phy/renesas/phy-rcar-gen3-usb2.c
>>
>> > @@ -400,9 +403,18 @@ static irqreturn_t rcar_gen3_phy_usb2_irq(int irq, void *_ch)
>> >  }
>> >
>> >  static const struct of_device_id rcar_gen3_phy_usb2_match_table[] = {
>> > -       { .compatible = "renesas,usb2-phy-r8a7795" },
>> > -       { .compatible = "renesas,usb2-phy-r8a7796" },
>> > -       { .compatible = "renesas,rcar-gen3-usb2-phy" },
>> > +       {
>> > +               .compatible = "renesas,usb2-phy-r8a7795",
>> > +               .data = (void *)RCAR_GEN3_PHY_HAS_DEDICATED_PINS,
>> > +       },
>> > +       {
>> > +               .compatible = "renesas,usb2-phy-r8a7796",
>> > +               .data = (void *)RCAR_GEN3_PHY_HAS_DEDICATED_PINS,
>> > +       },
>> > +       {
>> > +               .compatible = "renesas,rcar-gen3-usb2-phy",
>> > +               .data = (void *)RCAR_GEN3_PHY_HAS_DEDICATED_PINS,
>> > +       },
>> >         { }
>> >  };
>>
>> Given the generic R-Car Gen3 entry sets RCAR_GEN3_PHY_HAS_DEDICATED_PINS, you
>> cannot specify the fallback compatible value of "renesas,rcar-gen3-usb2-phy"
>> in the R-Car D3 .dtsi.
>
> I understood it.
>
>> So I'm wondering, does the USB2 PHY still work (with limitations) on R-Car H3
>> and M3-W if you drop RCAR_GEN3_PHY_HAS_DEDICATED_PINS?
>
> Yes, the USB PHY still work with limitation (otg capability channel works as
> peripheral mode only. Other channels are no limitation).

That's good to hear.

>> If yes, you can drop the flag from the generic entry, and R-Car D3 can specify
>> the generic fallback compatible value in its .dtsi, like H3 and M3-W.
>
> I got it. I will fix this patch set.

And you can drop the driver change from "[PATCH 4/4] phy: rcar-gen3-usb2: add
binding for r8a77995", as it will match against the generic fallback on D3.

Thanks.

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

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

* RE: [PATCH 3/4] phy: rcar-gen3-usb2: add SoC-specific parameter for dedicated pins
  2017-08-31  8:27       ` Geert Uytterhoeven
@ 2017-08-31  8:35         ` Yoshihiro Shimoda
  0 siblings, 0 replies; 13+ messages in thread
From: Yoshihiro Shimoda @ 2017-08-31  8:35 UTC (permalink / raw)
  To: Geert Uytterhoeven; +Cc: Kishon Vijay Abraham I, linux-kernel, Linux-Renesas

Hi Geert-san,

> From: Geert Uytterhoeven
> Sent: Thursday, August 31, 2017 5:27 PM
> 
> Hi Shimoda-san,
> 
> On Thu, Aug 31, 2017 at 10:15 AM, Yoshihiro Shimoda
> <yoshihiro.shimoda.uh@renesas.com> wrote:
> >> From: Geert Uytterhoeven
> >> Sent: Thursday, August 31, 2017 4:51 PM
> >> On Thu, Aug 31, 2017 at 9:31 AM, Yoshihiro Shimoda
> >> <yoshihiro.shimoda.uh@renesas.com> wrote:
< snip >
> >> Given the generic R-Car Gen3 entry sets RCAR_GEN3_PHY_HAS_DEDICATED_PINS, you
> >> cannot specify the fallback compatible value of "renesas,rcar-gen3-usb2-phy"
> >> in the R-Car D3 .dtsi.
> >
> > I understood it.
> >
> >> So I'm wondering, does the USB2 PHY still work (with limitations) on R-Car H3
> >> and M3-W if you drop RCAR_GEN3_PHY_HAS_DEDICATED_PINS?
> >
> > Yes, the USB PHY still work with limitation (otg capability channel works as
> > peripheral mode only. Other channels are no limitation).
> 
> That's good to hear.
> 
> >> If yes, you can drop the flag from the generic entry, and R-Car D3 can specify
> >> the generic fallback compatible value in its .dtsi, like H3 and M3-W.
> >
> > I got it. I will fix this patch set.
> 
> And you can drop the driver change from "[PATCH 4/4] phy: rcar-gen3-usb2: add
> binding for r8a77995", as it will match against the generic fallback on D3.

I got it. I will submit v2 patches soon.

Best regards,
Yoshihiro Shimoda

> Thanks.
> 
> Gr{oetje,eeting}s,
> 
>                         Geert
> 
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
> 
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
>                                 -- Linus Torvalds

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

* Re: [PATCH 1/4] phy: rcar-gen3-usb2: check dr_mode for otg mode
  2017-08-31  7:31 ` [PATCH 1/4] phy: rcar-gen3-usb2: check dr_mode for otg mode Yoshihiro Shimoda
@ 2017-08-31  9:40   ` Sergei Shtylyov
  2017-09-01  2:43     ` Yoshihiro Shimoda
  0 siblings, 1 reply; 13+ messages in thread
From: Sergei Shtylyov @ 2017-08-31  9:40 UTC (permalink / raw)
  To: Yoshihiro Shimoda, kishon; +Cc: linux-kernel, linux-renesas-soc

Hello!

On 8/31/2017 10:31 AM, Yoshihiro Shimoda wrote:

> The previous code assumed a channel has otg capability if a channel
> has interrupt property. But, it is not good because:
>   - Battery charging feature also needs interrupt property.
>   - Some R-Car Gen3 SoCs (e.g. R-Car D3) doesn't have OTG capability.

    Don't.

> So, this patch checks whether usb 2.0 host node has dr_mode property or
> not. If it has 'dr_mode = "otg";', this driver enables otg capability.
> 
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
[...]

MBR, Sergei

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

* Re: [PATCH 3/4] phy: rcar-gen3-usb2: add SoC-specific parameter for dedicated pins
  2017-08-31  7:31 ` [PATCH 3/4] phy: rcar-gen3-usb2: add SoC-specific parameter for dedicated pins Yoshihiro Shimoda
  2017-08-31  7:51   ` Geert Uytterhoeven
@ 2017-08-31  9:43   ` Sergei Shtylyov
  2017-09-01  2:44     ` Yoshihiro Shimoda
  1 sibling, 1 reply; 13+ messages in thread
From: Sergei Shtylyov @ 2017-08-31  9:43 UTC (permalink / raw)
  To: Yoshihiro Shimoda, kishon; +Cc: linux-kernel, linux-renesas-soc

On 8/31/2017 10:31 AM, Yoshihiro Shimoda wrote:

> This patch adds SoC-specific parameter to avoid reading/writing
> specific registers wronly if this driver runs on a SoC which doesn't

    Wrongly? Perhaps "incorrectly"?

> have dedicated pins (e.g. R-Car D3).
> 
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
[...]

MBR, Sergei

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

* RE: [PATCH 1/4] phy: rcar-gen3-usb2: check dr_mode for otg mode
  2017-08-31  9:40   ` Sergei Shtylyov
@ 2017-09-01  2:43     ` Yoshihiro Shimoda
  0 siblings, 0 replies; 13+ messages in thread
From: Yoshihiro Shimoda @ 2017-09-01  2:43 UTC (permalink / raw)
  To: Sergei Shtylyov, kishon; +Cc: linux-kernel, linux-renesas-soc

Hello,

> -----Original Message-----
> From: Sergei Shtylyov
> Sent: Thursday, August 31, 2017 6:41 PM
> 
> Hello!
> 
> On 8/31/2017 10:31 AM, Yoshihiro Shimoda wrote:
> 
> > The previous code assumed a channel has otg capability if a channel
> > has interrupt property. But, it is not good because:
> >   - Battery charging feature also needs interrupt property.
> >   - Some R-Car Gen3 SoCs (e.g. R-Car D3) doesn't have OTG capability.
> 
>     Don't.

Thank you for the point. I will revise it.

Best regards,
Yoshihiro Shimoda

> > So, this patch checks whether usb 2.0 host node has dr_mode property or
> > not. If it has 'dr_mode = "otg";', this driver enables otg capability.
> >
> > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
> [...]
> 
> MBR, Sergei

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

* RE: [PATCH 3/4] phy: rcar-gen3-usb2: add SoC-specific parameter for dedicated pins
  2017-08-31  9:43   ` Sergei Shtylyov
@ 2017-09-01  2:44     ` Yoshihiro Shimoda
  0 siblings, 0 replies; 13+ messages in thread
From: Yoshihiro Shimoda @ 2017-09-01  2:44 UTC (permalink / raw)
  To: Sergei Shtylyov, kishon; +Cc: linux-kernel, linux-renesas-soc


> -----Original Message-----
> From: Sergei Shtylyov
> Sent: Thursday, August 31, 2017 6:43 PM
> 
> On 8/31/2017 10:31 AM, Yoshihiro Shimoda wrote:
> 
> > This patch adds SoC-specific parameter to avoid reading/writing
> > specific registers wronly if this driver runs on a SoC which doesn't
> 
>     Wrongly? Perhaps "incorrectly"?

Thank you for the point. In v2 patch, I already revised it as "wrongly".

Best regards,
Yoshihiro Shimoda

> > have dedicated pins (e.g. R-Car D3).
> >
> > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
> [...]
> 
> MBR, Sergei

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

end of thread, other threads:[~2017-09-01  2:44 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-08-31  7:31 [PATCH 0/4] phy: rcar-gen3-usb2: add support for r8a77995 Yoshihiro Shimoda
2017-08-31  7:31 ` [PATCH 1/4] phy: rcar-gen3-usb2: check dr_mode for otg mode Yoshihiro Shimoda
2017-08-31  9:40   ` Sergei Shtylyov
2017-09-01  2:43     ` Yoshihiro Shimoda
2017-08-31  7:31 ` [PATCH 2/4] phy: rcar-gen3-usb2: split the two meaning of "has_otg" Yoshihiro Shimoda
2017-08-31  7:31 ` [PATCH 3/4] phy: rcar-gen3-usb2: add SoC-specific parameter for dedicated pins Yoshihiro Shimoda
2017-08-31  7:51   ` Geert Uytterhoeven
2017-08-31  8:15     ` Yoshihiro Shimoda
2017-08-31  8:27       ` Geert Uytterhoeven
2017-08-31  8:35         ` Yoshihiro Shimoda
2017-08-31  9:43   ` Sergei Shtylyov
2017-09-01  2:44     ` Yoshihiro Shimoda
2017-08-31  7:31 ` [PATCH 4/4] phy: rcar-gen3-usb2: add binding for r8a77995 Yoshihiro Shimoda

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).