* [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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.