Commit f477d1c8 authored by Ansuel Smith's avatar Ansuel Smith Committed by David S. Miller

net: dsa: qca8k: add support for QCA8328

QCA8328 switch is the bigger brother of the qca8327. Same regs different
chip. Change the function to set the correct pin layout and introduce a
new match_data to differentiate the 2 switch as they have the same ID
and their internal PHY have the same ID.
Signed-off-by: default avatarAnsuel Smith <ansuelsmth@gmail.com>
Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent ed7988d7
...@@ -935,6 +935,7 @@ static int ...@@ -935,6 +935,7 @@ static int
qca8k_setup_of_pws_reg(struct qca8k_priv *priv) qca8k_setup_of_pws_reg(struct qca8k_priv *priv)
{ {
struct device_node *node = priv->dev->of_node; struct device_node *node = priv->dev->of_node;
const struct qca8k_match_data *data;
u32 val = 0; u32 val = 0;
int ret; int ret;
...@@ -943,8 +944,14 @@ qca8k_setup_of_pws_reg(struct qca8k_priv *priv) ...@@ -943,8 +944,14 @@ qca8k_setup_of_pws_reg(struct qca8k_priv *priv)
* Should be applied by default but we set this just to make sure. * Should be applied by default but we set this just to make sure.
*/ */
if (priv->switch_id == QCA8K_ID_QCA8327) { if (priv->switch_id == QCA8K_ID_QCA8327) {
data = of_device_get_match_data(priv->dev);
/* Set the correct package of 148 pin for QCA8327 */
if (data->reduced_package)
val |= QCA8327_PWS_PACKAGE148_EN;
ret = qca8k_rmw(priv, QCA8K_REG_PWS, QCA8327_PWS_PACKAGE148_EN, ret = qca8k_rmw(priv, QCA8K_REG_PWS, QCA8327_PWS_PACKAGE148_EN,
QCA8327_PWS_PACKAGE148_EN); val);
if (ret) if (ret)
return ret; return ret;
} }
...@@ -2105,7 +2112,12 @@ static int qca8k_resume(struct device *dev) ...@@ -2105,7 +2112,12 @@ static int qca8k_resume(struct device *dev)
static SIMPLE_DEV_PM_OPS(qca8k_pm_ops, static SIMPLE_DEV_PM_OPS(qca8k_pm_ops,
qca8k_suspend, qca8k_resume); qca8k_suspend, qca8k_resume);
static const struct qca8k_match_data qca832x = { static const struct qca8k_match_data qca8327 = {
.id = QCA8K_ID_QCA8327,
.reduced_package = true,
};
static const struct qca8k_match_data qca8328 = {
.id = QCA8K_ID_QCA8327, .id = QCA8K_ID_QCA8327,
}; };
...@@ -2114,7 +2126,8 @@ static const struct qca8k_match_data qca833x = { ...@@ -2114,7 +2126,8 @@ static const struct qca8k_match_data qca833x = {
}; };
static const struct of_device_id qca8k_of_match[] = { static const struct of_device_id qca8k_of_match[] = {
{ .compatible = "qca,qca8327", .data = &qca832x }, { .compatible = "qca,qca8327", .data = &qca8327 },
{ .compatible = "qca,qca8328", .data = &qca8328 },
{ .compatible = "qca,qca8334", .data = &qca833x }, { .compatible = "qca,qca8334", .data = &qca833x },
{ .compatible = "qca,qca8337", .data = &qca833x }, { .compatible = "qca,qca8337", .data = &qca833x },
{ /* sentinel */ }, { /* sentinel */ },
......
...@@ -260,6 +260,7 @@ struct ar8xxx_port_status { ...@@ -260,6 +260,7 @@ struct ar8xxx_port_status {
struct qca8k_match_data { struct qca8k_match_data {
u8 id; u8 id;
bool reduced_package;
}; };
enum { enum {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment