mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-30 18:47:06 +00:00
7ace30aeb6
Backport upstream code split patch for qca8k needed for ipq40xx target to correctly implement a DSA driver. Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
103 lines
2.8 KiB
Diff
103 lines
2.8 KiB
Diff
From 9d1bcb1f293f1391302a109c9819c3705c804700 Mon Sep 17 00:00:00 2001
|
|
From: Christian Marangi <ansuelsmth@gmail.com>
|
|
Date: Wed, 27 Jul 2022 13:35:23 +0200
|
|
Subject: [PATCH 14/14] net: dsa: qca8k: move read_switch_id function to common
|
|
code
|
|
|
|
The same function to read the switch id is used by drivers based on
|
|
qca8k family switch. Move them to common code to make them accessible
|
|
also by other drivers.
|
|
|
|
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
|
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
|
|
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|
---
|
|
drivers/net/dsa/qca/qca8k-8xxx.c | 29 -----------------------------
|
|
drivers/net/dsa/qca/qca8k-common.c | 29 +++++++++++++++++++++++++++++
|
|
drivers/net/dsa/qca/qca8k.h | 1 +
|
|
3 files changed, 30 insertions(+), 29 deletions(-)
|
|
|
|
--- a/drivers/net/dsa/qca/qca8k-8xxx.c
|
|
+++ b/drivers/net/dsa/qca/qca8k-8xxx.c
|
|
@@ -1822,35 +1822,6 @@ static const struct dsa_switch_ops qca8k
|
|
.connect_tag_protocol = qca8k_connect_tag_protocol,
|
|
};
|
|
|
|
-static int qca8k_read_switch_id(struct qca8k_priv *priv)
|
|
-{
|
|
- u32 val;
|
|
- u8 id;
|
|
- int ret;
|
|
-
|
|
- if (!priv->info)
|
|
- return -ENODEV;
|
|
-
|
|
- ret = qca8k_read(priv, QCA8K_REG_MASK_CTRL, &val);
|
|
- if (ret < 0)
|
|
- return -ENODEV;
|
|
-
|
|
- id = QCA8K_MASK_CTRL_DEVICE_ID(val);
|
|
- if (id != priv->info->id) {
|
|
- dev_err(priv->dev,
|
|
- "Switch id detected %x but expected %x",
|
|
- id, priv->info->id);
|
|
- return -ENODEV;
|
|
- }
|
|
-
|
|
- priv->switch_id = id;
|
|
-
|
|
- /* Save revision to communicate to the internal PHY driver */
|
|
- priv->switch_revision = QCA8K_MASK_CTRL_REV_ID(val);
|
|
-
|
|
- return 0;
|
|
-}
|
|
-
|
|
static int
|
|
qca8k_sw_probe(struct mdio_device *mdiodev)
|
|
{
|
|
--- a/drivers/net/dsa/qca/qca8k-common.c
|
|
+++ b/drivers/net/dsa/qca/qca8k-common.c
|
|
@@ -1175,3 +1175,32 @@ int qca8k_port_lag_leave(struct dsa_swit
|
|
{
|
|
return qca8k_lag_refresh_portmap(ds, port, lag, true);
|
|
}
|
|
+
|
|
+int qca8k_read_switch_id(struct qca8k_priv *priv)
|
|
+{
|
|
+ u32 val;
|
|
+ u8 id;
|
|
+ int ret;
|
|
+
|
|
+ if (!priv->info)
|
|
+ return -ENODEV;
|
|
+
|
|
+ ret = qca8k_read(priv, QCA8K_REG_MASK_CTRL, &val);
|
|
+ if (ret < 0)
|
|
+ return -ENODEV;
|
|
+
|
|
+ id = QCA8K_MASK_CTRL_DEVICE_ID(val);
|
|
+ if (id != priv->info->id) {
|
|
+ dev_err(priv->dev,
|
|
+ "Switch id detected %x but expected %x",
|
|
+ id, priv->info->id);
|
|
+ return -ENODEV;
|
|
+ }
|
|
+
|
|
+ priv->switch_id = id;
|
|
+
|
|
+ /* Save revision to communicate to the internal PHY driver */
|
|
+ priv->switch_revision = QCA8K_MASK_CTRL_REV_ID(val);
|
|
+
|
|
+ return 0;
|
|
+}
|
|
--- a/drivers/net/dsa/qca/qca8k.h
|
|
+++ b/drivers/net/dsa/qca/qca8k.h
|
|
@@ -424,6 +424,7 @@ extern const struct qca8k_mib_desc ar832
|
|
extern const struct regmap_access_table qca8k_readable_table;
|
|
int qca8k_mib_init(struct qca8k_priv *priv);
|
|
void qca8k_port_set_status(struct qca8k_priv *priv, int port, int enable);
|
|
+int qca8k_read_switch_id(struct qca8k_priv *priv);
|
|
|
|
/* Common read/write/rmw function */
|
|
int qca8k_read(struct qca8k_priv *priv, u32 reg, u32 *val);
|