dsa: qca8k: add mac_power_sel support
Add missing mac power sel support needed for ipq8064/5 SoC that require 1.8v for the internal regulator port instead of the default 1.5v. If other device needs this, consider adding a dedicated binding to support this. Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com> Reviewed-by: Vladimir Oltean <olteanv@gmail.com> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
bacc8daf97
Коммит
d8b6f5bae6
|
@ -950,6 +950,33 @@ qca8k_setup_of_rgmii_delay(struct qca8k_priv *priv)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
qca8k_setup_mac_pwr_sel(struct qca8k_priv *priv)
|
||||
{
|
||||
u32 mask = 0;
|
||||
int ret = 0;
|
||||
|
||||
/* SoC specific settings for ipq8064.
|
||||
* If more device require this consider adding
|
||||
* a dedicated binding.
|
||||
*/
|
||||
if (of_machine_is_compatible("qcom,ipq8064"))
|
||||
mask |= QCA8K_MAC_PWR_RGMII0_1_8V;
|
||||
|
||||
/* SoC specific settings for ipq8065 */
|
||||
if (of_machine_is_compatible("qcom,ipq8065"))
|
||||
mask |= QCA8K_MAC_PWR_RGMII1_1_8V;
|
||||
|
||||
if (mask) {
|
||||
ret = qca8k_rmw(priv, QCA8K_REG_MAC_PWR_SEL,
|
||||
QCA8K_MAC_PWR_RGMII0_1_8V |
|
||||
QCA8K_MAC_PWR_RGMII1_1_8V,
|
||||
mask);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int
|
||||
qca8k_setup(struct dsa_switch *ds)
|
||||
{
|
||||
|
@ -979,6 +1006,10 @@ qca8k_setup(struct dsa_switch *ds)
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = qca8k_setup_mac_pwr_sel(priv);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/* Enable CPU Port */
|
||||
ret = qca8k_reg_set(priv, QCA8K_REG_GLOBAL_FW_CTRL0,
|
||||
QCA8K_GLOBAL_FW_CTRL0_CPU_PORT_EN);
|
||||
|
|
|
@ -100,6 +100,11 @@
|
|||
#define QCA8K_SGMII_MODE_CTRL_PHY (1 << 22)
|
||||
#define QCA8K_SGMII_MODE_CTRL_MAC (2 << 22)
|
||||
|
||||
/* MAC_PWR_SEL registers */
|
||||
#define QCA8K_REG_MAC_PWR_SEL 0x0e4
|
||||
#define QCA8K_MAC_PWR_RGMII1_1_8V BIT(18)
|
||||
#define QCA8K_MAC_PWR_RGMII0_1_8V BIT(19)
|
||||
|
||||
/* EEE control registers */
|
||||
#define QCA8K_REG_EEE_CTRL 0x100
|
||||
#define QCA8K_REG_EEE_CTRL_LPI_EN(_i) ((_i + 1) * 2)
|
||||
|
|
Загрузка…
Ссылка в новой задаче