netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [net-next 1/3] net: mdio: ipq8064: clean whitespaces in define
@ 2021-05-14 21:03 Ansuel Smith
  2021-05-14 21:03 ` [net-next 2/3] net: mdio: ipq8064: add regmap config to disable REGCACHE Ansuel Smith
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Ansuel Smith @ 2021-05-14 21:03 UTC (permalink / raw)
  To: Andrew Lunn, Heiner Kallweit, Russell King, David S. Miller,
	Jakub Kicinski, netdev, linux-kernel
  Cc: Ansuel Smith

Fix mixed whitespace and tab for define spacing.

Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
---
 drivers/net/mdio/mdio-ipq8064.c | 25 +++++++++++++------------
 1 file changed, 13 insertions(+), 12 deletions(-)

diff --git a/drivers/net/mdio/mdio-ipq8064.c b/drivers/net/mdio/mdio-ipq8064.c
index 8fe8f0119fc1..f776a843a63b 100644
--- a/drivers/net/mdio/mdio-ipq8064.c
+++ b/drivers/net/mdio/mdio-ipq8064.c
@@ -15,25 +15,26 @@
 #include <linux/regmap.h>
 
 /* MII address register definitions */
-#define MII_ADDR_REG_ADDR                       0x10
-#define MII_BUSY                                BIT(0)
-#define MII_WRITE                               BIT(1)
-#define MII_CLKRANGE_60_100M                    (0 << 2)
-#define MII_CLKRANGE_100_150M                   (1 << 2)
-#define MII_CLKRANGE_20_35M                     (2 << 2)
-#define MII_CLKRANGE_35_60M                     (3 << 2)
-#define MII_CLKRANGE_150_250M                   (4 << 2)
-#define MII_CLKRANGE_250_300M                   (5 << 2)
+#define MII_ADDR_REG_ADDR			0x10
+#define MII_BUSY				BIT(0)
+#define MII_WRITE				BIT(1)
+#define MII_CLKRANGE(x)				((x) << 2)
+#define MII_CLKRANGE_60_100M			MII_CLKRANGE(0)
+#define MII_CLKRANGE_100_150M			MII_CLKRANGE(1)
+#define MII_CLKRANGE_20_35M			MII_CLKRANGE(2)
+#define MII_CLKRANGE_35_60M			MII_CLKRANGE(3)
+#define MII_CLKRANGE_150_250M			MII_CLKRANGE(4)
+#define MII_CLKRANGE_250_300M			MII_CLKRANGE(5)
 #define MII_CLKRANGE_MASK			GENMASK(4, 2)
 #define MII_REG_SHIFT				6
 #define MII_REG_MASK				GENMASK(10, 6)
 #define MII_ADDR_SHIFT				11
 #define MII_ADDR_MASK				GENMASK(15, 11)
 
-#define MII_DATA_REG_ADDR                       0x14
+#define MII_DATA_REG_ADDR			0x14
 
-#define MII_MDIO_DELAY_USEC                     (1000)
-#define MII_MDIO_RETRY_MSEC                     (10)
+#define MII_MDIO_DELAY_USEC			(1000)
+#define MII_MDIO_RETRY_MSEC			(10)
 
 struct ipq8064_mdio {
 	struct regmap *base; /* NSS_GMAC0_BASE */
-- 
2.30.2


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

* [net-next 2/3] net: mdio: ipq8064: add regmap config to disable REGCACHE
  2021-05-14 21:03 [net-next 1/3] net: mdio: ipq8064: clean whitespaces in define Ansuel Smith
@ 2021-05-14 21:03 ` Ansuel Smith
  2021-05-14 21:03 ` [net-next 3/3] net: mdio: ipq8064: enlarge sleep after read/write operation Ansuel Smith
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Ansuel Smith @ 2021-05-14 21:03 UTC (permalink / raw)
  To: Andrew Lunn, Heiner Kallweit, Russell King, David S. Miller,
	Jakub Kicinski, netdev, linux-kernel
  Cc: Ansuel Smith, Florian Fainelli

mdio drivers should not use REGCHACHE. Also disable locking since it's
handled by the mdio users and regmap is always accessed atomically.

Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
---
 drivers/net/mdio/mdio-ipq8064.c | 34 +++++++++++++++++++++++----------
 1 file changed, 24 insertions(+), 10 deletions(-)

diff --git a/drivers/net/mdio/mdio-ipq8064.c b/drivers/net/mdio/mdio-ipq8064.c
index f776a843a63b..14b3c310af73 100644
--- a/drivers/net/mdio/mdio-ipq8064.c
+++ b/drivers/net/mdio/mdio-ipq8064.c
@@ -7,10 +7,9 @@
 
 #include <linux/delay.h>
 #include <linux/kernel.h>
-#include <linux/mfd/syscon.h>
 #include <linux/module.h>
 #include <linux/of_mdio.h>
-#include <linux/phy.h>
+#include <linux/of_address.h>
 #include <linux/platform_device.h>
 #include <linux/regmap.h>
 
@@ -97,14 +96,34 @@ ipq8064_mdio_write(struct mii_bus *bus, int phy_addr, int reg_offset, u16 data)
 	return ipq8064_mdio_wait_busy(priv);
 }
 
+static const struct regmap_config ipq8064_mdio_regmap_config = {
+	.reg_bits = 32,
+	.reg_stride = 4,
+	.val_bits = 32,
+	.can_multi_write = false,
+	/* the mdio lock is used by any user of this mdio driver */
+	.disable_locking = true,
+
+	.cache_type = REGCACHE_NONE,
+};
+
 static int
 ipq8064_mdio_probe(struct platform_device *pdev)
 {
 	struct device_node *np = pdev->dev.of_node;
 	struct ipq8064_mdio *priv;
+	struct resource res;
 	struct mii_bus *bus;
+	void __iomem *base;
 	int ret;
 
+	if (of_address_to_resource(np, 0, &res))
+		return -ENOMEM;
+
+	base = ioremap(res.start, resource_size(&res));
+	if (!base)
+		return -ENOMEM;
+
 	bus = devm_mdiobus_alloc_size(&pdev->dev, sizeof(*priv));
 	if (!bus)
 		return -ENOMEM;
@@ -116,15 +135,10 @@ ipq8064_mdio_probe(struct platform_device *pdev)
 	bus->parent = &pdev->dev;
 
 	priv = bus->priv;
-	priv->base = device_node_to_regmap(np);
-	if (IS_ERR(priv->base)) {
-		if (priv->base == ERR_PTR(-EPROBE_DEFER))
-			return -EPROBE_DEFER;
-
-		dev_err(&pdev->dev, "error getting device regmap, error=%pe\n",
-			priv->base);
+	priv->base = devm_regmap_init_mmio(&pdev->dev, base,
+					   &ipq8064_mdio_regmap_config);
+	if (IS_ERR(priv->base))
 		return PTR_ERR(priv->base);
-	}
 
 	ret = of_mdiobus_register(bus, np);
 	if (ret)
-- 
2.30.2


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

* [net-next 3/3] net: mdio: ipq8064: enlarge sleep after read/write operation
  2021-05-14 21:03 [net-next 1/3] net: mdio: ipq8064: clean whitespaces in define Ansuel Smith
  2021-05-14 21:03 ` [net-next 2/3] net: mdio: ipq8064: add regmap config to disable REGCACHE Ansuel Smith
@ 2021-05-14 21:03 ` Ansuel Smith
  2021-05-14 22:40 ` [net-next 1/3] net: mdio: ipq8064: clean whitespaces in define patchwork-bot+netdevbpf
  2021-05-14 23:01 ` Florian Fainelli
  3 siblings, 0 replies; 5+ messages in thread
From: Ansuel Smith @ 2021-05-14 21:03 UTC (permalink / raw)
  To: Andrew Lunn, Heiner Kallweit, Russell King, David S. Miller,
	Jakub Kicinski, netdev, linux-kernel
  Cc: Ansuel Smith, Florian Fainelli

With the use of the qca8k dsa driver, some problem arised related to
port status detection. With a load on a specific port (for example a
simple speed test), the driver starts to behave in a strange way and
garbage data is produced. To address this, enlarge the sleep delay and
address a bug for the reg offset 31 that require additional delay for
this specific reg.

Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
---
 drivers/net/mdio/mdio-ipq8064.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/net/mdio/mdio-ipq8064.c b/drivers/net/mdio/mdio-ipq8064.c
index 14b3c310af73..bd1aea2d5a26 100644
--- a/drivers/net/mdio/mdio-ipq8064.c
+++ b/drivers/net/mdio/mdio-ipq8064.c
@@ -65,7 +65,7 @@ ipq8064_mdio_read(struct mii_bus *bus, int phy_addr, int reg_offset)
 		   ((reg_offset << MII_REG_SHIFT) & MII_REG_MASK);
 
 	regmap_write(priv->base, MII_ADDR_REG_ADDR, miiaddr);
-	usleep_range(8, 10);
+	usleep_range(10, 13);
 
 	err = ipq8064_mdio_wait_busy(priv);
 	if (err)
@@ -91,7 +91,14 @@ ipq8064_mdio_write(struct mii_bus *bus, int phy_addr, int reg_offset, u16 data)
 		   ((reg_offset << MII_REG_SHIFT) & MII_REG_MASK);
 
 	regmap_write(priv->base, MII_ADDR_REG_ADDR, miiaddr);
-	usleep_range(8, 10);
+
+	/* For the specific reg 31 extra time is needed or the next
+	 * read will produce garbage data.
+	 */
+	if (reg_offset == 31)
+		usleep_range(30, 43);
+	else
+		usleep_range(10, 13);
 
 	return ipq8064_mdio_wait_busy(priv);
 }
-- 
2.30.2


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

* Re: [net-next 1/3] net: mdio: ipq8064: clean whitespaces in define
  2021-05-14 21:03 [net-next 1/3] net: mdio: ipq8064: clean whitespaces in define Ansuel Smith
  2021-05-14 21:03 ` [net-next 2/3] net: mdio: ipq8064: add regmap config to disable REGCACHE Ansuel Smith
  2021-05-14 21:03 ` [net-next 3/3] net: mdio: ipq8064: enlarge sleep after read/write operation Ansuel Smith
@ 2021-05-14 22:40 ` patchwork-bot+netdevbpf
  2021-05-14 23:01 ` Florian Fainelli
  3 siblings, 0 replies; 5+ messages in thread
From: patchwork-bot+netdevbpf @ 2021-05-14 22:40 UTC (permalink / raw)
  To: Ansuel Smith; +Cc: andrew, hkallweit1, linux, davem, kuba, netdev, linux-kernel

Hello:

This series was applied to netdev/net-next.git (refs/heads/master):

On Fri, 14 May 2021 23:03:49 +0200 you wrote:
> Fix mixed whitespace and tab for define spacing.
> 
> Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
> Reviewed-by: Andrew Lunn <andrew@lunn.ch>
> ---
>  drivers/net/mdio/mdio-ipq8064.c | 25 +++++++++++++------------
>  1 file changed, 13 insertions(+), 12 deletions(-)

Here is the summary with links:
  - [net-next,1/3] net: mdio: ipq8064: clean whitespaces in define
    https://git.kernel.org/netdev/net-next/c/948640698199
  - [net-next,2/3] net: mdio: ipq8064: add regmap config to disable REGCACHE
    https://git.kernel.org/netdev/net-next/c/b097bea10215
  - [net-next,3/3] net: mdio: ipq8064: enlarge sleep after read/write operation
    https://git.kernel.org/netdev/net-next/c/77091933e453

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



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

* Re: [net-next 1/3] net: mdio: ipq8064: clean whitespaces in define
  2021-05-14 21:03 [net-next 1/3] net: mdio: ipq8064: clean whitespaces in define Ansuel Smith
                   ` (2 preceding siblings ...)
  2021-05-14 22:40 ` [net-next 1/3] net: mdio: ipq8064: clean whitespaces in define patchwork-bot+netdevbpf
@ 2021-05-14 23:01 ` Florian Fainelli
  3 siblings, 0 replies; 5+ messages in thread
From: Florian Fainelli @ 2021-05-14 23:01 UTC (permalink / raw)
  To: Ansuel Smith, Andrew Lunn, Heiner Kallweit, Russell King,
	David S. Miller, Jakub Kicinski, netdev, linux-kernel



On 5/14/2021 2:03 PM, Ansuel Smith wrote:
> Fix mixed whitespace and tab for define spacing.
> 
> Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
> Reviewed-by: Andrew Lunn <andrew@lunn.ch>

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
-- 
Florian

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

end of thread, other threads:[~2021-05-14 23:01 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-14 21:03 [net-next 1/3] net: mdio: ipq8064: clean whitespaces in define Ansuel Smith
2021-05-14 21:03 ` [net-next 2/3] net: mdio: ipq8064: add regmap config to disable REGCACHE Ansuel Smith
2021-05-14 21:03 ` [net-next 3/3] net: mdio: ipq8064: enlarge sleep after read/write operation Ansuel Smith
2021-05-14 22:40 ` [net-next 1/3] net: mdio: ipq8064: clean whitespaces in define patchwork-bot+netdevbpf
2021-05-14 23:01 ` Florian Fainelli

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