airoha: net: fix building for en7523

Latest an7581/an7583 improvements breaks en7523. This patch just fixes
en7523 building.

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/20365
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit fe31e5c82ad6fbabd44969ac075c57a57c9f796b)
[ fix conflict error, refresh patch ]
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
(cherry picked from commit fb959f67fe1d3aae796f563edcf93d4514cddd44)
This commit is contained in:
Mikhail Kshevetskiy 2025-10-10 03:15:42 +03:00 committed by ahmed sassi
parent 69825981b5
commit cb3f06bc57
3 changed files with 149 additions and 1 deletions

View File

@ -207,6 +207,9 @@ CONFIG_OF_GPIO=y
CONFIG_OF_IRQ=y
CONFIG_OF_KOBJ=y
CONFIG_OF_MDIO=y
# CONFIG_MDIO_AIROHA is not set
# CONFIG_PCS_AIROHA_AN7581 is not set
# CONFIG_PCS_AIROHA_AN7583 is not set
CONFIG_OLD_SIGACTION=y
CONFIG_OLD_SIGSUSPEND3=y
CONFIG_OUTER_CACHE=y

View File

@ -0,0 +1,145 @@
From 843e2892f2d9353bf039e0dfb5442a600e75009e Mon Sep 17 00:00:00 2001
From: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Date: Thu, 9 Oct 2025 23:46:08 +0300
Subject: [PATCH] net: airoha: disable external phy code if PCS_AIROHA is not
enabled
External phy code breaks building for EN7523, so disable it if
PCS_AIROHA is not selected.
Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
---
drivers/net/ethernet/airoha/airoha_eth.c | 16 ++++++++++++++++
drivers/net/ethernet/airoha/airoha_eth.h | 2 ++
2 files changed, 18 insertions(+)
--- a/drivers/net/ethernet/airoha/airoha_eth.c
+++ b/drivers/net/ethernet/airoha/airoha_eth.c
@@ -72,10 +72,12 @@ static void airoha_qdma_irq_disable(stru
airoha_qdma_set_irqmask(irq_bank, index, mask, 0);
}
+#if defined(CONFIG_PCS_AIROHA)
static bool airhoa_is_phy_external(struct airoha_gdm_port *port)
{
return port->id != 1;
}
+#endif
static void airoha_set_macaddr(struct airoha_gdm_port *port, const u8 *addr)
{
@@ -1631,6 +1633,7 @@ static int airoha_dev_open(struct net_de
struct airoha_gdm_port *port = netdev_priv(dev);
struct airoha_qdma *qdma = port->qdma;
+#if defined(CONFIG_PCS_AIROHA)
if (airhoa_is_phy_external(port)) {
err = phylink_of_phy_connect(port->phylink, dev->dev.of_node, 0);
if (err) {
@@ -1641,6 +1644,7 @@ static int airoha_dev_open(struct net_de
phylink_start(port->phylink);
}
+#endif
netif_tx_start_all_queues(dev);
err = airoha_set_vip_for_gdm_port(port, true);
@@ -1695,10 +1699,12 @@ static int airoha_dev_stop(struct net_de
}
}
+#if defined(CONFIG_PCS_AIROHA)
if (airhoa_is_phy_external(port)) {
phylink_stop(port->phylink);
phylink_disconnect_phy(port->phylink);
}
+#endif
return 0;
}
@@ -2842,6 +2848,7 @@ static const struct ethtool_ops airoha_e
.get_link = ethtool_op_get_link,
};
+#if defined(CONFIG_PCS_AIROHA)
static struct phylink_pcs *airoha_phylink_mac_select_pcs(struct phylink_config *config,
phy_interface_t interface)
{
@@ -2855,6 +2862,7 @@ static void airoha_mac_config(struct phy
const struct phylink_link_state *state)
{
}
+#endif
static int airoha_metadata_dst_alloc(struct airoha_gdm_port *port)
{
@@ -2900,6 +2908,7 @@ bool airoha_is_valid_gdm_port(struct air
return false;
}
+#if defined(CONFIG_PCS_AIROHA)
static void airoha_mac_link_up(struct phylink_config *config, struct phy_device *phy,
unsigned int mode, phy_interface_t interface,
int speed, int duplex, bool tx_pause, bool rx_pause)
@@ -2992,6 +3001,7 @@ static int airoha_setup_phylink(struct n
return 0;
}
+#endif
static int airoha_alloc_gdm_port(struct airoha_eth *eth,
struct device_node *np, int index)
@@ -3071,11 +3081,13 @@ static int airoha_alloc_gdm_port(struct
if (err)
return err;
+#if defined(CONFIG_PCS_AIROHA)
if (airhoa_is_phy_external(port)) {
err = airoha_setup_phylink(dev);
if (err)
goto free_metadata_dst;
}
+#endif
err = register_netdev(dev);
if (err)
@@ -3192,10 +3204,12 @@ error_hw_cleanup:
if (port && port->dev->reg_state == NETREG_REGISTERED) {
unregister_netdev(port->dev);
airoha_metadata_dst_free(port);
+#if defined(CONFIG_PCS_AIROHA)
if (airhoa_is_phy_external(port)) {
phylink_destroy(port->phylink);
airoha_pcs_destroy(port->pcs);
}
+#endif
}
}
free_netdev(eth->napi_dev);
@@ -3223,10 +3237,12 @@ static void airoha_remove(struct platfor
airoha_dev_stop(port->dev);
unregister_netdev(port->dev);
airoha_metadata_dst_free(port);
+#if defined(CONFIG_PCS_AIROHA)
if (airhoa_is_phy_external(port)) {
phylink_destroy(port->phylink);
airoha_pcs_destroy(port->pcs);
}
+#endif
}
free_netdev(eth->napi_dev);
--- a/drivers/net/ethernet/airoha/airoha_eth.h
+++ b/drivers/net/ethernet/airoha/airoha_eth.h
@@ -536,9 +536,11 @@ struct airoha_gdm_port {
struct net_device *dev;
int id;
+#if defined(CONFIG_PCS_AIROHA)
struct phylink *phylink;
struct phylink_config phylink_config;
struct phylink_pcs *pcs;
+#endif
struct airoha_hw_stats stats;

View File

@ -16,7 +16,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
--- a/drivers/net/ethernet/airoha/airoha_eth.c
+++ b/drivers/net/ethernet/airoha/airoha_eth.c
@@ -2839,6 +2839,7 @@ static const struct ethtool_ops airoha_e
@@ -2845,6 +2845,7 @@ static const struct ethtool_ops airoha_e
.get_drvinfo = airoha_ethtool_get_drvinfo,
.get_eth_mac_stats = airoha_ethtool_get_mac_stats,
.get_rmon_stats = airoha_ethtool_get_rmon_stats,