Commit a8ea8d53 authored by MD Danish Anwar's avatar MD Danish Anwar Committed by David S. Miller

net: ti: icssg-prueth: Split out common object into module

icssg_prueth.c and icssg_prueth_sr1.c drivers use multiple common .c
files. These common objects are getting added to multiple modules. As a
result when both drivers are enabled in .config, below warning is seen.

drivers/net/ethernet/ti/Makefile: icssg/icssg_common.o is added to multiple modules: icssg-prueth icssg-prueth-sr1
drivers/net/ethernet/ti/Makefile: icssg/icssg_classifier.o is added to multiple modules: icssg-prueth icssg-prueth-sr1
drivers/net/ethernet/ti/Makefile: icssg/icssg_config.o is added to multiple modules: icssg-prueth icssg-prueth-sr1
drivers/net/ethernet/ti/Makefile: icssg/icssg_mii_cfg.o is added to multiple modules: icssg-prueth icssg-prueth-sr1
drivers/net/ethernet/ti/Makefile: icssg/icssg_stats.o is added to multiple modules: icssg-prueth icssg-prueth-sr1
drivers/net/ethernet/ti/Makefile: icssg/icssg_ethtool.o is added to multiple modules: icssg-prueth icssg-prueth-sr1

Fix this by building a new module (icssg.o) for all the common objects.
Both the driver can then depend on this common module.

Some APIs being exported have emac_ as the prefix which may result into
confusion with other existing APIs with emac_ prefix, to avoid
confusion, rename the APIs being exported with emac_ to icssg_ prefix.

This also fixes below error seen when both drivers are built.
ERROR: modpost: "icssg_queue_pop"
[drivers/net/ethernet/ti/icssg-prueth-sr1.ko] undefined!
ERROR: modpost: "icssg_queue_push"
[drivers/net/ethernet/ti/icssg-prueth-sr1.ko] undefined!
Reported-and-tested-by: default avatarThorsten Leemhuis <linux@leemhuis.info>
Closes: https://lore.kernel.org/oe-kbuild-all/202405182038.ncf1mL7Z-lkp@intel.com/
Fixes: 487f7323 ("net: ti: icssg-prueth: Add helper functions to configure FDB")
Reviewed-by: default avatarRoger Quadros <rogerq@kernel.org>
Signed-off-by: default avatarMD Danish Anwar <danishanwar@ti.com>
Reviewed-by: default avatarSai Krishna <saikrishnag@marvell.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent f8321fa7
...@@ -31,22 +31,18 @@ ti-am65-cpsw-nuss-$(CONFIG_TI_AM65_CPSW_QOS) += am65-cpsw-qos.o ...@@ -31,22 +31,18 @@ ti-am65-cpsw-nuss-$(CONFIG_TI_AM65_CPSW_QOS) += am65-cpsw-qos.o
ti-am65-cpsw-nuss-$(CONFIG_TI_K3_AM65_CPSW_SWITCHDEV) += am65-cpsw-switchdev.o ti-am65-cpsw-nuss-$(CONFIG_TI_K3_AM65_CPSW_SWITCHDEV) += am65-cpsw-switchdev.o
obj-$(CONFIG_TI_K3_AM65_CPTS) += am65-cpts.o obj-$(CONFIG_TI_K3_AM65_CPTS) += am65-cpts.o
obj-$(CONFIG_TI_ICSSG_PRUETH) += icssg-prueth.o obj-$(CONFIG_TI_ICSSG_PRUETH) += icssg-prueth.o icssg.o
icssg-prueth-y := icssg/icssg_prueth.o \ icssg-prueth-y := icssg/icssg_prueth.o icssg/icssg_switchdev.o
icssg/icssg_common.o \
icssg/icssg_classifier.o \ obj-$(CONFIG_TI_ICSSG_PRUETH_SR1) += icssg-prueth-sr1.o icssg.o
icssg/icssg_queues.o \ icssg-prueth-sr1-y := icssg/icssg_prueth_sr1.o
icssg/icssg_config.o \
icssg/icssg_mii_cfg.o \ icssg-y := icssg/icssg_common.o \
icssg/icssg_stats.o \ icssg/icssg_classifier.o \
icssg/icssg_ethtool.o \ icssg/icssg_queues.o \
icssg/icssg_switchdev.o icssg/icssg_config.o \
obj-$(CONFIG_TI_ICSSG_PRUETH_SR1) += icssg-prueth-sr1.o icssg/icssg_mii_cfg.o \
icssg-prueth-sr1-y := icssg/icssg_prueth_sr1.o \ icssg/icssg_stats.o \
icssg/icssg_common.o \ icssg/icssg_ethtool.o
icssg/icssg_classifier.o \
icssg/icssg_config.o \
icssg/icssg_mii_cfg.o \
icssg/icssg_stats.o \
icssg/icssg_ethtool.o
obj-$(CONFIG_TI_ICSS_IEP) += icssg/icss_iep.o obj-$(CONFIG_TI_ICSS_IEP) += icssg/icss_iep.o
...@@ -297,6 +297,7 @@ void icssg_class_set_mac_addr(struct regmap *miig_rt, int slice, u8 *mac) ...@@ -297,6 +297,7 @@ void icssg_class_set_mac_addr(struct regmap *miig_rt, int slice, u8 *mac)
mac[2] << 16 | mac[3] << 24)); mac[2] << 16 | mac[3] << 24));
regmap_write(miig_rt, offs[slice].mac1, (u32)(mac[4] | mac[5] << 8)); regmap_write(miig_rt, offs[slice].mac1, (u32)(mac[4] | mac[5] << 8));
} }
EXPORT_SYMBOL_GPL(icssg_class_set_mac_addr);
static void icssg_class_ft1_add_mcast(struct regmap *miig_rt, int slice, static void icssg_class_ft1_add_mcast(struct regmap *miig_rt, int slice,
int slot, const u8 *addr, const u8 *mask) int slot, const u8 *addr, const u8 *mask)
...@@ -360,6 +361,7 @@ void icssg_class_disable(struct regmap *miig_rt, int slice) ...@@ -360,6 +361,7 @@ void icssg_class_disable(struct regmap *miig_rt, int slice)
/* clear CFG2 */ /* clear CFG2 */
regmap_write(miig_rt, offs[slice].rx_class_cfg2, 0); regmap_write(miig_rt, offs[slice].rx_class_cfg2, 0);
} }
EXPORT_SYMBOL_GPL(icssg_class_disable);
void icssg_class_default(struct regmap *miig_rt, int slice, bool allmulti, void icssg_class_default(struct regmap *miig_rt, int slice, bool allmulti,
bool is_sr1) bool is_sr1)
...@@ -390,6 +392,7 @@ void icssg_class_default(struct regmap *miig_rt, int slice, bool allmulti, ...@@ -390,6 +392,7 @@ void icssg_class_default(struct regmap *miig_rt, int slice, bool allmulti,
/* clear CFG2 */ /* clear CFG2 */
regmap_write(miig_rt, offs[slice].rx_class_cfg2, 0); regmap_write(miig_rt, offs[slice].rx_class_cfg2, 0);
} }
EXPORT_SYMBOL_GPL(icssg_class_default);
void icssg_class_promiscuous_sr1(struct regmap *miig_rt, int slice) void icssg_class_promiscuous_sr1(struct regmap *miig_rt, int slice)
{ {
...@@ -408,6 +411,7 @@ void icssg_class_promiscuous_sr1(struct regmap *miig_rt, int slice) ...@@ -408,6 +411,7 @@ void icssg_class_promiscuous_sr1(struct regmap *miig_rt, int slice)
regmap_write(miig_rt, offset, data); regmap_write(miig_rt, offset, data);
} }
} }
EXPORT_SYMBOL_GPL(icssg_class_promiscuous_sr1);
void icssg_class_add_mcast_sr1(struct regmap *miig_rt, int slice, void icssg_class_add_mcast_sr1(struct regmap *miig_rt, int slice,
struct net_device *ndev) struct net_device *ndev)
...@@ -449,6 +453,7 @@ void icssg_class_add_mcast_sr1(struct regmap *miig_rt, int slice, ...@@ -449,6 +453,7 @@ void icssg_class_add_mcast_sr1(struct regmap *miig_rt, int slice,
slot++; slot++;
} }
} }
EXPORT_SYMBOL_GPL(icssg_class_add_mcast_sr1);
/* required for SAV check */ /* required for SAV check */
void icssg_ft1_set_mac_addr(struct regmap *miig_rt, int slice, u8 *mac_addr) void icssg_ft1_set_mac_addr(struct regmap *miig_rt, int slice, u8 *mac_addr)
...@@ -460,3 +465,4 @@ void icssg_ft1_set_mac_addr(struct regmap *miig_rt, int slice, u8 *mac_addr) ...@@ -460,3 +465,4 @@ void icssg_ft1_set_mac_addr(struct regmap *miig_rt, int slice, u8 *mac_addr)
rx_class_ft1_set_da_mask(miig_rt, slice, 0, mask_addr); rx_class_ft1_set_da_mask(miig_rt, slice, 0, mask_addr);
rx_class_ft1_cfg_set_type(miig_rt, slice, 0, FT1_CFG_TYPE_EQ); rx_class_ft1_cfg_set_type(miig_rt, slice, 0, FT1_CFG_TYPE_EQ);
} }
EXPORT_SYMBOL_GPL(icssg_ft1_set_mac_addr);
...@@ -51,6 +51,7 @@ void prueth_cleanup_rx_chns(struct prueth_emac *emac, ...@@ -51,6 +51,7 @@ void prueth_cleanup_rx_chns(struct prueth_emac *emac,
if (rx_chn->rx_chn) if (rx_chn->rx_chn)
k3_udma_glue_release_rx_chn(rx_chn->rx_chn); k3_udma_glue_release_rx_chn(rx_chn->rx_chn);
} }
EXPORT_SYMBOL_GPL(prueth_cleanup_rx_chns);
void prueth_cleanup_tx_chns(struct prueth_emac *emac) void prueth_cleanup_tx_chns(struct prueth_emac *emac)
{ {
...@@ -71,6 +72,7 @@ void prueth_cleanup_tx_chns(struct prueth_emac *emac) ...@@ -71,6 +72,7 @@ void prueth_cleanup_tx_chns(struct prueth_emac *emac)
memset(tx_chn, 0, sizeof(*tx_chn)); memset(tx_chn, 0, sizeof(*tx_chn));
} }
} }
EXPORT_SYMBOL_GPL(prueth_cleanup_tx_chns);
void prueth_ndev_del_tx_napi(struct prueth_emac *emac, int num) void prueth_ndev_del_tx_napi(struct prueth_emac *emac, int num)
{ {
...@@ -84,6 +86,7 @@ void prueth_ndev_del_tx_napi(struct prueth_emac *emac, int num) ...@@ -84,6 +86,7 @@ void prueth_ndev_del_tx_napi(struct prueth_emac *emac, int num)
netif_napi_del(&tx_chn->napi_tx); netif_napi_del(&tx_chn->napi_tx);
} }
} }
EXPORT_SYMBOL_GPL(prueth_ndev_del_tx_napi);
void prueth_xmit_free(struct prueth_tx_chn *tx_chn, void prueth_xmit_free(struct prueth_tx_chn *tx_chn,
struct cppi5_host_desc_t *desc) struct cppi5_host_desc_t *desc)
...@@ -120,6 +123,7 @@ void prueth_xmit_free(struct prueth_tx_chn *tx_chn, ...@@ -120,6 +123,7 @@ void prueth_xmit_free(struct prueth_tx_chn *tx_chn,
k3_cppi_desc_pool_free(tx_chn->desc_pool, first_desc); k3_cppi_desc_pool_free(tx_chn->desc_pool, first_desc);
} }
EXPORT_SYMBOL_GPL(prueth_xmit_free);
int emac_tx_complete_packets(struct prueth_emac *emac, int chn, int emac_tx_complete_packets(struct prueth_emac *emac, int chn,
int budget, bool *tdown) int budget, bool *tdown)
...@@ -264,6 +268,7 @@ int prueth_ndev_add_tx_napi(struct prueth_emac *emac) ...@@ -264,6 +268,7 @@ int prueth_ndev_add_tx_napi(struct prueth_emac *emac)
prueth_ndev_del_tx_napi(emac, i); prueth_ndev_del_tx_napi(emac, i);
return ret; return ret;
} }
EXPORT_SYMBOL_GPL(prueth_ndev_add_tx_napi);
int prueth_init_tx_chns(struct prueth_emac *emac) int prueth_init_tx_chns(struct prueth_emac *emac)
{ {
...@@ -344,6 +349,7 @@ int prueth_init_tx_chns(struct prueth_emac *emac) ...@@ -344,6 +349,7 @@ int prueth_init_tx_chns(struct prueth_emac *emac)
prueth_cleanup_tx_chns(emac); prueth_cleanup_tx_chns(emac);
return ret; return ret;
} }
EXPORT_SYMBOL_GPL(prueth_init_tx_chns);
int prueth_init_rx_chns(struct prueth_emac *emac, int prueth_init_rx_chns(struct prueth_emac *emac,
struct prueth_rx_chn *rx_chn, struct prueth_rx_chn *rx_chn,
...@@ -453,6 +459,7 @@ int prueth_init_rx_chns(struct prueth_emac *emac, ...@@ -453,6 +459,7 @@ int prueth_init_rx_chns(struct prueth_emac *emac,
prueth_cleanup_rx_chns(emac, rx_chn, max_rflows); prueth_cleanup_rx_chns(emac, rx_chn, max_rflows);
return ret; return ret;
} }
EXPORT_SYMBOL_GPL(prueth_init_rx_chns);
int prueth_dma_rx_push(struct prueth_emac *emac, int prueth_dma_rx_push(struct prueth_emac *emac,
struct sk_buff *skb, struct sk_buff *skb,
...@@ -490,6 +497,7 @@ int prueth_dma_rx_push(struct prueth_emac *emac, ...@@ -490,6 +497,7 @@ int prueth_dma_rx_push(struct prueth_emac *emac,
return k3_udma_glue_push_rx_chn(rx_chn->rx_chn, 0, return k3_udma_glue_push_rx_chn(rx_chn->rx_chn, 0,
desc_rx, desc_dma); desc_rx, desc_dma);
} }
EXPORT_SYMBOL_GPL(prueth_dma_rx_push);
u64 icssg_ts_to_ns(u32 hi_sw, u32 hi, u32 lo, u32 cycle_time_ns) u64 icssg_ts_to_ns(u32 hi_sw, u32 hi, u32 lo, u32 cycle_time_ns)
{ {
...@@ -505,6 +513,7 @@ u64 icssg_ts_to_ns(u32 hi_sw, u32 hi, u32 lo, u32 cycle_time_ns) ...@@ -505,6 +513,7 @@ u64 icssg_ts_to_ns(u32 hi_sw, u32 hi, u32 lo, u32 cycle_time_ns)
return ns; return ns;
} }
EXPORT_SYMBOL_GPL(icssg_ts_to_ns);
void emac_rx_timestamp(struct prueth_emac *emac, void emac_rx_timestamp(struct prueth_emac *emac,
struct sk_buff *skb, u32 *psdata) struct sk_buff *skb, u32 *psdata)
...@@ -636,7 +645,7 @@ static int prueth_tx_ts_cookie_get(struct prueth_emac *emac) ...@@ -636,7 +645,7 @@ static int prueth_tx_ts_cookie_get(struct prueth_emac *emac)
} }
/** /**
* emac_ndo_start_xmit - EMAC Transmit function * icssg_ndo_start_xmit - EMAC Transmit function
* @skb: SKB pointer * @skb: SKB pointer
* @ndev: EMAC network adapter * @ndev: EMAC network adapter
* *
...@@ -647,7 +656,7 @@ static int prueth_tx_ts_cookie_get(struct prueth_emac *emac) ...@@ -647,7 +656,7 @@ static int prueth_tx_ts_cookie_get(struct prueth_emac *emac)
* *
* Return: enum netdev_tx * Return: enum netdev_tx
*/ */
enum netdev_tx emac_ndo_start_xmit(struct sk_buff *skb, struct net_device *ndev) enum netdev_tx icssg_ndo_start_xmit(struct sk_buff *skb, struct net_device *ndev)
{ {
struct cppi5_host_desc_t *first_desc, *next_desc, *cur_desc; struct cppi5_host_desc_t *first_desc, *next_desc, *cur_desc;
struct prueth_emac *emac = netdev_priv(ndev); struct prueth_emac *emac = netdev_priv(ndev);
...@@ -806,6 +815,7 @@ enum netdev_tx emac_ndo_start_xmit(struct sk_buff *skb, struct net_device *ndev) ...@@ -806,6 +815,7 @@ enum netdev_tx emac_ndo_start_xmit(struct sk_buff *skb, struct net_device *ndev)
netif_tx_stop_queue(netif_txq); netif_tx_stop_queue(netif_txq);
return NETDEV_TX_BUSY; return NETDEV_TX_BUSY;
} }
EXPORT_SYMBOL_GPL(icssg_ndo_start_xmit);
static void prueth_tx_cleanup(void *data, dma_addr_t desc_dma) static void prueth_tx_cleanup(void *data, dma_addr_t desc_dma)
{ {
...@@ -831,6 +841,7 @@ irqreturn_t prueth_rx_irq(int irq, void *dev_id) ...@@ -831,6 +841,7 @@ irqreturn_t prueth_rx_irq(int irq, void *dev_id)
return IRQ_HANDLED; return IRQ_HANDLED;
} }
EXPORT_SYMBOL_GPL(prueth_rx_irq);
void prueth_emac_stop(struct prueth_emac *emac) void prueth_emac_stop(struct prueth_emac *emac)
{ {
...@@ -855,6 +866,7 @@ void prueth_emac_stop(struct prueth_emac *emac) ...@@ -855,6 +866,7 @@ void prueth_emac_stop(struct prueth_emac *emac)
rproc_shutdown(prueth->rtu[slice]); rproc_shutdown(prueth->rtu[slice]);
rproc_shutdown(prueth->pru[slice]); rproc_shutdown(prueth->pru[slice]);
} }
EXPORT_SYMBOL_GPL(prueth_emac_stop);
void prueth_cleanup_tx_ts(struct prueth_emac *emac) void prueth_cleanup_tx_ts(struct prueth_emac *emac)
{ {
...@@ -867,8 +879,9 @@ void prueth_cleanup_tx_ts(struct prueth_emac *emac) ...@@ -867,8 +879,9 @@ void prueth_cleanup_tx_ts(struct prueth_emac *emac)
} }
} }
} }
EXPORT_SYMBOL_GPL(prueth_cleanup_tx_ts);
int emac_napi_rx_poll(struct napi_struct *napi_rx, int budget) int icssg_napi_rx_poll(struct napi_struct *napi_rx, int budget)
{ {
struct prueth_emac *emac = prueth_napi_to_emac(napi_rx); struct prueth_emac *emac = prueth_napi_to_emac(napi_rx);
int rx_flow = emac->is_sr1 ? int rx_flow = emac->is_sr1 ?
...@@ -905,6 +918,7 @@ int emac_napi_rx_poll(struct napi_struct *napi_rx, int budget) ...@@ -905,6 +918,7 @@ int emac_napi_rx_poll(struct napi_struct *napi_rx, int budget)
return num_rx; return num_rx;
} }
EXPORT_SYMBOL_GPL(icssg_napi_rx_poll);
int prueth_prepare_rx_chan(struct prueth_emac *emac, int prueth_prepare_rx_chan(struct prueth_emac *emac,
struct prueth_rx_chn *chn, struct prueth_rx_chn *chn,
...@@ -930,6 +944,7 @@ int prueth_prepare_rx_chan(struct prueth_emac *emac, ...@@ -930,6 +944,7 @@ int prueth_prepare_rx_chan(struct prueth_emac *emac,
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(prueth_prepare_rx_chan);
void prueth_reset_tx_chan(struct prueth_emac *emac, int ch_num, void prueth_reset_tx_chan(struct prueth_emac *emac, int ch_num,
bool free_skb) bool free_skb)
...@@ -944,6 +959,7 @@ void prueth_reset_tx_chan(struct prueth_emac *emac, int ch_num, ...@@ -944,6 +959,7 @@ void prueth_reset_tx_chan(struct prueth_emac *emac, int ch_num,
k3_udma_glue_disable_tx_chn(emac->tx_chns[i].tx_chn); k3_udma_glue_disable_tx_chn(emac->tx_chns[i].tx_chn);
} }
} }
EXPORT_SYMBOL_GPL(prueth_reset_tx_chan);
void prueth_reset_rx_chan(struct prueth_rx_chn *chn, void prueth_reset_rx_chan(struct prueth_rx_chn *chn,
int num_flows, bool disable) int num_flows, bool disable)
...@@ -956,11 +972,13 @@ void prueth_reset_rx_chan(struct prueth_rx_chn *chn, ...@@ -956,11 +972,13 @@ void prueth_reset_rx_chan(struct prueth_rx_chn *chn,
if (disable) if (disable)
k3_udma_glue_disable_rx_chn(chn->rx_chn); k3_udma_glue_disable_rx_chn(chn->rx_chn);
} }
EXPORT_SYMBOL_GPL(prueth_reset_rx_chan);
void emac_ndo_tx_timeout(struct net_device *ndev, unsigned int txqueue) void icssg_ndo_tx_timeout(struct net_device *ndev, unsigned int txqueue)
{ {
ndev->stats.tx_errors++; ndev->stats.tx_errors++;
} }
EXPORT_SYMBOL_GPL(icssg_ndo_tx_timeout);
static int emac_set_ts_config(struct net_device *ndev, struct ifreq *ifr) static int emac_set_ts_config(struct net_device *ndev, struct ifreq *ifr)
{ {
...@@ -1024,7 +1042,7 @@ static int emac_get_ts_config(struct net_device *ndev, struct ifreq *ifr) ...@@ -1024,7 +1042,7 @@ static int emac_get_ts_config(struct net_device *ndev, struct ifreq *ifr)
-EFAULT : 0; -EFAULT : 0;
} }
int emac_ndo_ioctl(struct net_device *ndev, struct ifreq *ifr, int cmd) int icssg_ndo_ioctl(struct net_device *ndev, struct ifreq *ifr, int cmd)
{ {
switch (cmd) { switch (cmd) {
case SIOCGHWTSTAMP: case SIOCGHWTSTAMP:
...@@ -1037,9 +1055,10 @@ int emac_ndo_ioctl(struct net_device *ndev, struct ifreq *ifr, int cmd) ...@@ -1037,9 +1055,10 @@ int emac_ndo_ioctl(struct net_device *ndev, struct ifreq *ifr, int cmd)
return phy_do_ioctl(ndev, ifr, cmd); return phy_do_ioctl(ndev, ifr, cmd);
} }
EXPORT_SYMBOL_GPL(icssg_ndo_ioctl);
void emac_ndo_get_stats64(struct net_device *ndev, void icssg_ndo_get_stats64(struct net_device *ndev,
struct rtnl_link_stats64 *stats) struct rtnl_link_stats64 *stats)
{ {
struct prueth_emac *emac = netdev_priv(ndev); struct prueth_emac *emac = netdev_priv(ndev);
...@@ -1058,9 +1077,10 @@ void emac_ndo_get_stats64(struct net_device *ndev, ...@@ -1058,9 +1077,10 @@ void emac_ndo_get_stats64(struct net_device *ndev,
stats->tx_errors = ndev->stats.tx_errors; stats->tx_errors = ndev->stats.tx_errors;
stats->tx_dropped = ndev->stats.tx_dropped; stats->tx_dropped = ndev->stats.tx_dropped;
} }
EXPORT_SYMBOL_GPL(icssg_ndo_get_stats64);
int emac_ndo_get_phys_port_name(struct net_device *ndev, char *name, int icssg_ndo_get_phys_port_name(struct net_device *ndev, char *name,
size_t len) size_t len)
{ {
struct prueth_emac *emac = netdev_priv(ndev); struct prueth_emac *emac = netdev_priv(ndev);
int ret; int ret;
...@@ -1071,6 +1091,7 @@ int emac_ndo_get_phys_port_name(struct net_device *ndev, char *name, ...@@ -1071,6 +1091,7 @@ int emac_ndo_get_phys_port_name(struct net_device *ndev, char *name,
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(icssg_ndo_get_phys_port_name);
/* get emac_port corresponding to eth_node name */ /* get emac_port corresponding to eth_node name */
int prueth_node_port(struct device_node *eth_node) int prueth_node_port(struct device_node *eth_node)
...@@ -1089,6 +1110,7 @@ int prueth_node_port(struct device_node *eth_node) ...@@ -1089,6 +1110,7 @@ int prueth_node_port(struct device_node *eth_node)
else else
return PRUETH_PORT_INVALID; return PRUETH_PORT_INVALID;
} }
EXPORT_SYMBOL_GPL(prueth_node_port);
/* get MAC instance corresponding to eth_node name */ /* get MAC instance corresponding to eth_node name */
int prueth_node_mac(struct device_node *eth_node) int prueth_node_mac(struct device_node *eth_node)
...@@ -1107,6 +1129,7 @@ int prueth_node_mac(struct device_node *eth_node) ...@@ -1107,6 +1129,7 @@ int prueth_node_mac(struct device_node *eth_node)
else else
return PRUETH_MAC_INVALID; return PRUETH_MAC_INVALID;
} }
EXPORT_SYMBOL_GPL(prueth_node_mac);
void prueth_netdev_exit(struct prueth *prueth, void prueth_netdev_exit(struct prueth *prueth,
struct device_node *eth_node) struct device_node *eth_node)
...@@ -1132,6 +1155,7 @@ void prueth_netdev_exit(struct prueth *prueth, ...@@ -1132,6 +1155,7 @@ void prueth_netdev_exit(struct prueth *prueth,
free_netdev(emac->ndev); free_netdev(emac->ndev);
prueth->emac[mac] = NULL; prueth->emac[mac] = NULL;
} }
EXPORT_SYMBOL_GPL(prueth_netdev_exit);
int prueth_get_cores(struct prueth *prueth, int slice, bool is_sr1) int prueth_get_cores(struct prueth *prueth, int slice, bool is_sr1)
{ {
...@@ -1182,6 +1206,7 @@ int prueth_get_cores(struct prueth *prueth, int slice, bool is_sr1) ...@@ -1182,6 +1206,7 @@ int prueth_get_cores(struct prueth *prueth, int slice, bool is_sr1)
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(prueth_get_cores);
void prueth_put_cores(struct prueth *prueth, int slice) void prueth_put_cores(struct prueth *prueth, int slice)
{ {
...@@ -1194,6 +1219,7 @@ void prueth_put_cores(struct prueth *prueth, int slice) ...@@ -1194,6 +1219,7 @@ void prueth_put_cores(struct prueth *prueth, int slice)
if (prueth->pru[slice]) if (prueth->pru[slice])
pru_rproc_put(prueth->pru[slice]); pru_rproc_put(prueth->pru[slice]);
} }
EXPORT_SYMBOL_GPL(prueth_put_cores);
#ifdef CONFIG_PM_SLEEP #ifdef CONFIG_PM_SLEEP
static int prueth_suspend(struct device *dev) static int prueth_suspend(struct device *dev)
...@@ -1250,3 +1276,9 @@ static int prueth_resume(struct device *dev) ...@@ -1250,3 +1276,9 @@ static int prueth_resume(struct device *dev)
const struct dev_pm_ops prueth_dev_pm_ops = { const struct dev_pm_ops prueth_dev_pm_ops = {
SET_SYSTEM_SLEEP_PM_OPS(prueth_suspend, prueth_resume) SET_SYSTEM_SLEEP_PM_OPS(prueth_suspend, prueth_resume)
}; };
EXPORT_SYMBOL_GPL(prueth_dev_pm_ops);
MODULE_AUTHOR("Roger Quadros <rogerq@ti.com>");
MODULE_AUTHOR("Md Danish Anwar <danishanwar@ti.com>");
MODULE_DESCRIPTION("PRUSS ICSSG Ethernet Driver Common Module");
MODULE_LICENSE("GPL");
...@@ -248,6 +248,7 @@ void icssg_config_ipg(struct prueth_emac *emac) ...@@ -248,6 +248,7 @@ void icssg_config_ipg(struct prueth_emac *emac)
icssg_mii_update_ipg(prueth->mii_rt, slice, ipg); icssg_mii_update_ipg(prueth->mii_rt, slice, ipg);
} }
EXPORT_SYMBOL_GPL(icssg_config_ipg);
static void emac_r30_cmd_init(struct prueth_emac *emac) static void emac_r30_cmd_init(struct prueth_emac *emac)
{ {
...@@ -508,6 +509,7 @@ int icssg_config(struct prueth *prueth, struct prueth_emac *emac, int slice) ...@@ -508,6 +509,7 @@ int icssg_config(struct prueth *prueth, struct prueth_emac *emac, int slice)
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(icssg_config);
/* Bitmask for ICSSG r30 commands */ /* Bitmask for ICSSG r30 commands */
static const struct icssg_r30_cmd emac_r32_bitmask[] = { static const struct icssg_r30_cmd emac_r32_bitmask[] = {
...@@ -532,8 +534,8 @@ static const struct icssg_r30_cmd emac_r32_bitmask[] = { ...@@ -532,8 +534,8 @@ static const struct icssg_r30_cmd emac_r32_bitmask[] = {
{{0xffef0000, EMAC_NONE, 0xffef0000, EMAC_NONE}} /* VLAN UNWARE*/ {{0xffef0000, EMAC_NONE, 0xffef0000, EMAC_NONE}} /* VLAN UNWARE*/
}; };
int emac_set_port_state(struct prueth_emac *emac, int icssg_set_port_state(struct prueth_emac *emac,
enum icssg_port_state_cmd cmd) enum icssg_port_state_cmd cmd)
{ {
struct icssg_r30_cmd __iomem *p; struct icssg_r30_cmd __iomem *p;
int ret = -ETIMEDOUT; int ret = -ETIMEDOUT;
...@@ -564,6 +566,7 @@ int emac_set_port_state(struct prueth_emac *emac, ...@@ -564,6 +566,7 @@ int emac_set_port_state(struct prueth_emac *emac,
return ret; return ret;
} }
EXPORT_SYMBOL_GPL(icssg_set_port_state);
void icssg_config_half_duplex(struct prueth_emac *emac) void icssg_config_half_duplex(struct prueth_emac *emac)
{ {
...@@ -575,6 +578,7 @@ void icssg_config_half_duplex(struct prueth_emac *emac) ...@@ -575,6 +578,7 @@ void icssg_config_half_duplex(struct prueth_emac *emac)
val = get_random_u32(); val = get_random_u32();
writel(val, emac->dram.va + HD_RAND_SEED_OFFSET); writel(val, emac->dram.va + HD_RAND_SEED_OFFSET);
} }
EXPORT_SYMBOL_GPL(icssg_config_half_duplex);
void icssg_config_set_speed(struct prueth_emac *emac) void icssg_config_set_speed(struct prueth_emac *emac)
{ {
...@@ -601,6 +605,7 @@ void icssg_config_set_speed(struct prueth_emac *emac) ...@@ -601,6 +605,7 @@ void icssg_config_set_speed(struct prueth_emac *emac)
writeb(fw_speed, emac->dram.va + PORT_LINK_SPEED_OFFSET); writeb(fw_speed, emac->dram.va + PORT_LINK_SPEED_OFFSET);
} }
EXPORT_SYMBOL_GPL(icssg_config_set_speed);
int icssg_send_fdb_msg(struct prueth_emac *emac, struct mgmt_cmd *cmd, int icssg_send_fdb_msg(struct prueth_emac *emac, struct mgmt_cmd *cmd,
struct mgmt_cmd_rsp *rsp) struct mgmt_cmd_rsp *rsp)
...@@ -635,6 +640,7 @@ int icssg_send_fdb_msg(struct prueth_emac *emac, struct mgmt_cmd *cmd, ...@@ -635,6 +640,7 @@ int icssg_send_fdb_msg(struct prueth_emac *emac, struct mgmt_cmd *cmd,
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(icssg_send_fdb_msg);
static void icssg_fdb_setup(struct prueth_emac *emac, struct mgmt_cmd *fdb_cmd, static void icssg_fdb_setup(struct prueth_emac *emac, struct mgmt_cmd *fdb_cmd,
const unsigned char *addr, u8 fid, int cmd) const unsigned char *addr, u8 fid, int cmd)
...@@ -687,6 +693,7 @@ int icssg_fdb_add_del(struct prueth_emac *emac, const unsigned char *addr, ...@@ -687,6 +693,7 @@ int icssg_fdb_add_del(struct prueth_emac *emac, const unsigned char *addr,
return -EINVAL; return -EINVAL;
} }
EXPORT_SYMBOL_GPL(icssg_fdb_add_del);
int icssg_fdb_lookup(struct prueth_emac *emac, const unsigned char *addr, int icssg_fdb_lookup(struct prueth_emac *emac, const unsigned char *addr,
u8 vid) u8 vid)
...@@ -716,6 +723,7 @@ int icssg_fdb_lookup(struct prueth_emac *emac, const unsigned char *addr, ...@@ -716,6 +723,7 @@ int icssg_fdb_lookup(struct prueth_emac *emac, const unsigned char *addr,
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(icssg_fdb_lookup);
void icssg_vtbl_modify(struct prueth_emac *emac, u8 vid, u8 port_mask, void icssg_vtbl_modify(struct prueth_emac *emac, u8 vid, u8 port_mask,
u8 untag_mask, bool add) u8 untag_mask, bool add)
...@@ -741,6 +749,7 @@ void icssg_vtbl_modify(struct prueth_emac *emac, u8 vid, u8 port_mask, ...@@ -741,6 +749,7 @@ void icssg_vtbl_modify(struct prueth_emac *emac, u8 vid, u8 port_mask,
tbl[vid].fid_c1 = fid_c1; tbl[vid].fid_c1 = fid_c1;
} }
EXPORT_SYMBOL_GPL(icssg_vtbl_modify);
u16 icssg_get_pvid(struct prueth_emac *emac) u16 icssg_get_pvid(struct prueth_emac *emac)
{ {
...@@ -756,6 +765,7 @@ u16 icssg_get_pvid(struct prueth_emac *emac) ...@@ -756,6 +765,7 @@ u16 icssg_get_pvid(struct prueth_emac *emac)
return pvid; return pvid;
} }
EXPORT_SYMBOL_GPL(icssg_get_pvid);
void icssg_set_pvid(struct prueth *prueth, u8 vid, u8 port) void icssg_set_pvid(struct prueth *prueth, u8 vid, u8 port)
{ {
...@@ -771,3 +781,4 @@ void icssg_set_pvid(struct prueth *prueth, u8 vid, u8 port) ...@@ -771,3 +781,4 @@ void icssg_set_pvid(struct prueth *prueth, u8 vid, u8 port)
else else
writel(pvid, prueth->shram.va + EMAC_ICSSG_SWITCH_PORT0_DEFAULT_VLAN_OFFSET); writel(pvid, prueth->shram.va + EMAC_ICSSG_SWITCH_PORT0_DEFAULT_VLAN_OFFSET);
} }
EXPORT_SYMBOL_GPL(icssg_set_pvid);
...@@ -312,3 +312,4 @@ const struct ethtool_ops icssg_ethtool_ops = { ...@@ -312,3 +312,4 @@ const struct ethtool_ops icssg_ethtool_ops = {
.nway_reset = emac_nway_reset, .nway_reset = emac_nway_reset,
.get_rmon_stats = emac_get_rmon_stats, .get_rmon_stats = emac_get_rmon_stats,
}; };
EXPORT_SYMBOL_GPL(icssg_ethtool_ops);
...@@ -40,6 +40,7 @@ void icssg_mii_update_mtu(struct regmap *mii_rt, int mii, int mtu) ...@@ -40,6 +40,7 @@ void icssg_mii_update_mtu(struct regmap *mii_rt, int mii, int mtu)
(mtu - 1) << PRUSS_MII_RT_RX_FRMS_MAX_FRM_SHIFT); (mtu - 1) << PRUSS_MII_RT_RX_FRMS_MAX_FRM_SHIFT);
} }
} }
EXPORT_SYMBOL_GPL(icssg_mii_update_mtu);
void icssg_update_rgmii_cfg(struct regmap *miig_rt, struct prueth_emac *emac) void icssg_update_rgmii_cfg(struct regmap *miig_rt, struct prueth_emac *emac)
{ {
...@@ -66,6 +67,7 @@ void icssg_update_rgmii_cfg(struct regmap *miig_rt, struct prueth_emac *emac) ...@@ -66,6 +67,7 @@ void icssg_update_rgmii_cfg(struct regmap *miig_rt, struct prueth_emac *emac)
regmap_update_bits(miig_rt, RGMII_CFG_OFFSET, full_duplex_mask, regmap_update_bits(miig_rt, RGMII_CFG_OFFSET, full_duplex_mask,
full_duplex_val); full_duplex_val);
} }
EXPORT_SYMBOL_GPL(icssg_update_rgmii_cfg);
void icssg_miig_set_interface_mode(struct regmap *miig_rt, int mii, phy_interface_t phy_if) void icssg_miig_set_interface_mode(struct regmap *miig_rt, int mii, phy_interface_t phy_if)
{ {
...@@ -105,6 +107,7 @@ u32 icssg_rgmii_get_speed(struct regmap *miig_rt, int mii) ...@@ -105,6 +107,7 @@ u32 icssg_rgmii_get_speed(struct regmap *miig_rt, int mii)
return icssg_rgmii_cfg_get_bitfield(miig_rt, mask, shift); return icssg_rgmii_cfg_get_bitfield(miig_rt, mask, shift);
} }
EXPORT_SYMBOL_GPL(icssg_rgmii_get_speed);
u32 icssg_rgmii_get_fullduplex(struct regmap *miig_rt, int mii) u32 icssg_rgmii_get_fullduplex(struct regmap *miig_rt, int mii)
{ {
...@@ -118,3 +121,4 @@ u32 icssg_rgmii_get_fullduplex(struct regmap *miig_rt, int mii) ...@@ -118,3 +121,4 @@ u32 icssg_rgmii_get_fullduplex(struct regmap *miig_rt, int mii)
return icssg_rgmii_cfg_get_bitfield(miig_rt, mask, shift); return icssg_rgmii_cfg_get_bitfield(miig_rt, mask, shift);
} }
EXPORT_SYMBOL_GPL(icssg_rgmii_get_fullduplex);
...@@ -249,10 +249,10 @@ static void emac_adjust_link(struct net_device *ndev) ...@@ -249,10 +249,10 @@ static void emac_adjust_link(struct net_device *ndev)
icssg_config_ipg(emac); icssg_config_ipg(emac);
spin_unlock_irqrestore(&emac->lock, flags); spin_unlock_irqrestore(&emac->lock, flags);
icssg_config_set_speed(emac); icssg_config_set_speed(emac);
emac_set_port_state(emac, ICSSG_EMAC_PORT_FORWARD); icssg_set_port_state(emac, ICSSG_EMAC_PORT_FORWARD);
} else { } else {
emac_set_port_state(emac, ICSSG_EMAC_PORT_DISABLE); icssg_set_port_state(emac, ICSSG_EMAC_PORT_DISABLE);
} }
} }
...@@ -694,17 +694,17 @@ static void emac_ndo_set_rx_mode_work(struct work_struct *work) ...@@ -694,17 +694,17 @@ static void emac_ndo_set_rx_mode_work(struct work_struct *work)
promisc = ndev->flags & IFF_PROMISC; promisc = ndev->flags & IFF_PROMISC;
allmulti = ndev->flags & IFF_ALLMULTI; allmulti = ndev->flags & IFF_ALLMULTI;
emac_set_port_state(emac, ICSSG_EMAC_PORT_UC_FLOODING_DISABLE); icssg_set_port_state(emac, ICSSG_EMAC_PORT_UC_FLOODING_DISABLE);
emac_set_port_state(emac, ICSSG_EMAC_PORT_MC_FLOODING_DISABLE); icssg_set_port_state(emac, ICSSG_EMAC_PORT_MC_FLOODING_DISABLE);
if (promisc) { if (promisc) {
emac_set_port_state(emac, ICSSG_EMAC_PORT_UC_FLOODING_ENABLE); icssg_set_port_state(emac, ICSSG_EMAC_PORT_UC_FLOODING_ENABLE);
emac_set_port_state(emac, ICSSG_EMAC_PORT_MC_FLOODING_ENABLE); icssg_set_port_state(emac, ICSSG_EMAC_PORT_MC_FLOODING_ENABLE);
return; return;
} }
if (allmulti) { if (allmulti) {
emac_set_port_state(emac, ICSSG_EMAC_PORT_MC_FLOODING_ENABLE); icssg_set_port_state(emac, ICSSG_EMAC_PORT_MC_FLOODING_ENABLE);
return; return;
} }
...@@ -728,14 +728,14 @@ static void emac_ndo_set_rx_mode(struct net_device *ndev) ...@@ -728,14 +728,14 @@ static void emac_ndo_set_rx_mode(struct net_device *ndev)
static const struct net_device_ops emac_netdev_ops = { static const struct net_device_ops emac_netdev_ops = {
.ndo_open = emac_ndo_open, .ndo_open = emac_ndo_open,
.ndo_stop = emac_ndo_stop, .ndo_stop = emac_ndo_stop,
.ndo_start_xmit = emac_ndo_start_xmit, .ndo_start_xmit = icssg_ndo_start_xmit,
.ndo_set_mac_address = eth_mac_addr, .ndo_set_mac_address = eth_mac_addr,
.ndo_validate_addr = eth_validate_addr, .ndo_validate_addr = eth_validate_addr,
.ndo_tx_timeout = emac_ndo_tx_timeout, .ndo_tx_timeout = icssg_ndo_tx_timeout,
.ndo_set_rx_mode = emac_ndo_set_rx_mode, .ndo_set_rx_mode = emac_ndo_set_rx_mode,
.ndo_eth_ioctl = emac_ndo_ioctl, .ndo_eth_ioctl = icssg_ndo_ioctl,
.ndo_get_stats64 = emac_ndo_get_stats64, .ndo_get_stats64 = icssg_ndo_get_stats64,
.ndo_get_phys_port_name = emac_ndo_get_phys_port_name, .ndo_get_phys_port_name = icssg_ndo_get_phys_port_name,
}; };
static int prueth_netdev_init(struct prueth *prueth, static int prueth_netdev_init(struct prueth *prueth,
...@@ -771,7 +771,7 @@ static int prueth_netdev_init(struct prueth *prueth, ...@@ -771,7 +771,7 @@ static int prueth_netdev_init(struct prueth *prueth,
} }
INIT_WORK(&emac->rx_mode_work, emac_ndo_set_rx_mode_work); INIT_WORK(&emac->rx_mode_work, emac_ndo_set_rx_mode_work);
INIT_DELAYED_WORK(&emac->stats_work, emac_stats_work_handler); INIT_DELAYED_WORK(&emac->stats_work, icssg_stats_work_handler);
ret = pruss_request_mem_region(prueth->pruss, ret = pruss_request_mem_region(prueth->pruss,
port == PRUETH_PORT_MII0 ? port == PRUETH_PORT_MII0 ?
...@@ -864,7 +864,7 @@ static int prueth_netdev_init(struct prueth *prueth, ...@@ -864,7 +864,7 @@ static int prueth_netdev_init(struct prueth *prueth,
ndev->hw_features = NETIF_F_SG; ndev->hw_features = NETIF_F_SG;
ndev->features = ndev->hw_features; ndev->features = ndev->hw_features;
netif_napi_add(ndev, &emac->napi_rx, emac_napi_rx_poll); netif_napi_add(ndev, &emac->napi_rx, icssg_napi_rx_poll);
hrtimer_init(&emac->rx_hrtimer, CLOCK_MONOTONIC, hrtimer_init(&emac->rx_hrtimer, CLOCK_MONOTONIC,
HRTIMER_MODE_REL_PINNED); HRTIMER_MODE_REL_PINNED);
emac->rx_hrtimer.function = &emac_rx_timer_callback; emac->rx_hrtimer.function = &emac_rx_timer_callback;
...@@ -927,8 +927,8 @@ static void prueth_emac_restart(struct prueth *prueth) ...@@ -927,8 +927,8 @@ static void prueth_emac_restart(struct prueth *prueth)
netif_device_detach(emac1->ndev); netif_device_detach(emac1->ndev);
/* Disable both PRUeth ports */ /* Disable both PRUeth ports */
emac_set_port_state(emac0, ICSSG_EMAC_PORT_DISABLE); icssg_set_port_state(emac0, ICSSG_EMAC_PORT_DISABLE);
emac_set_port_state(emac1, ICSSG_EMAC_PORT_DISABLE); icssg_set_port_state(emac1, ICSSG_EMAC_PORT_DISABLE);
/* Stop both pru cores for both PRUeth ports*/ /* Stop both pru cores for both PRUeth ports*/
prueth_emac_stop(emac0); prueth_emac_stop(emac0);
...@@ -943,8 +943,8 @@ static void prueth_emac_restart(struct prueth *prueth) ...@@ -943,8 +943,8 @@ static void prueth_emac_restart(struct prueth *prueth)
prueth->emacs_initialized++; prueth->emacs_initialized++;
/* Enable forwarding for both PRUeth ports */ /* Enable forwarding for both PRUeth ports */
emac_set_port_state(emac0, ICSSG_EMAC_PORT_FORWARD); icssg_set_port_state(emac0, ICSSG_EMAC_PORT_FORWARD);
emac_set_port_state(emac1, ICSSG_EMAC_PORT_FORWARD); icssg_set_port_state(emac1, ICSSG_EMAC_PORT_FORWARD);
/* Attache net_device for both PRUeth ports */ /* Attache net_device for both PRUeth ports */
netif_device_attach(emac0->ndev); netif_device_attach(emac0->ndev);
...@@ -972,7 +972,7 @@ static void icssg_enable_switch_mode(struct prueth *prueth) ...@@ -972,7 +972,7 @@ static void icssg_enable_switch_mode(struct prueth *prueth)
BIT(emac->port_id) | DEFAULT_UNTAG_MASK, BIT(emac->port_id) | DEFAULT_UNTAG_MASK,
true); true);
icssg_set_pvid(prueth, emac->port_vlan, emac->port_id); icssg_set_pvid(prueth, emac->port_vlan, emac->port_id);
emac_set_port_state(emac, ICSSG_EMAC_PORT_VLAN_AWARE_ENABLE); icssg_set_port_state(emac, ICSSG_EMAC_PORT_VLAN_AWARE_ENABLE);
} }
} }
} }
......
...@@ -329,8 +329,8 @@ void icssg_ft1_set_mac_addr(struct regmap *miig_rt, int slice, u8 *mac_addr); ...@@ -329,8 +329,8 @@ void icssg_ft1_set_mac_addr(struct regmap *miig_rt, int slice, u8 *mac_addr);
void icssg_config_ipg(struct prueth_emac *emac); void icssg_config_ipg(struct prueth_emac *emac);
int icssg_config(struct prueth *prueth, struct prueth_emac *emac, int icssg_config(struct prueth *prueth, struct prueth_emac *emac,
int slice); int slice);
int emac_set_port_state(struct prueth_emac *emac, int icssg_set_port_state(struct prueth_emac *emac,
enum icssg_port_state_cmd state); enum icssg_port_state_cmd state);
void icssg_config_set_speed(struct prueth_emac *emac); void icssg_config_set_speed(struct prueth_emac *emac);
void icssg_config_half_duplex(struct prueth_emac *emac); void icssg_config_half_duplex(struct prueth_emac *emac);
...@@ -352,7 +352,7 @@ void icssg_set_pvid(struct prueth *prueth, u8 vid, u8 port); ...@@ -352,7 +352,7 @@ void icssg_set_pvid(struct prueth *prueth, u8 vid, u8 port);
#define prueth_napi_to_tx_chn(pnapi) \ #define prueth_napi_to_tx_chn(pnapi) \
container_of(pnapi, struct prueth_tx_chn, napi_tx) container_of(pnapi, struct prueth_tx_chn, napi_tx)
void emac_stats_work_handler(struct work_struct *work); void icssg_stats_work_handler(struct work_struct *work);
void emac_update_hardware_stats(struct prueth_emac *emac); void emac_update_hardware_stats(struct prueth_emac *emac);
int emac_get_stat_by_name(struct prueth_emac *emac, char *stat_name); int emac_get_stat_by_name(struct prueth_emac *emac, char *stat_name);
...@@ -377,11 +377,11 @@ int prueth_dma_rx_push(struct prueth_emac *emac, ...@@ -377,11 +377,11 @@ int prueth_dma_rx_push(struct prueth_emac *emac,
struct prueth_rx_chn *rx_chn); struct prueth_rx_chn *rx_chn);
void emac_rx_timestamp(struct prueth_emac *emac, void emac_rx_timestamp(struct prueth_emac *emac,
struct sk_buff *skb, u32 *psdata); struct sk_buff *skb, u32 *psdata);
enum netdev_tx emac_ndo_start_xmit(struct sk_buff *skb, struct net_device *ndev); enum netdev_tx icssg_ndo_start_xmit(struct sk_buff *skb, struct net_device *ndev);
irqreturn_t prueth_rx_irq(int irq, void *dev_id); irqreturn_t prueth_rx_irq(int irq, void *dev_id);
void prueth_emac_stop(struct prueth_emac *emac); void prueth_emac_stop(struct prueth_emac *emac);
void prueth_cleanup_tx_ts(struct prueth_emac *emac); void prueth_cleanup_tx_ts(struct prueth_emac *emac);
int emac_napi_rx_poll(struct napi_struct *napi_rx, int budget); int icssg_napi_rx_poll(struct napi_struct *napi_rx, int budget);
int prueth_prepare_rx_chan(struct prueth_emac *emac, int prueth_prepare_rx_chan(struct prueth_emac *emac,
struct prueth_rx_chn *chn, struct prueth_rx_chn *chn,
int buf_size); int buf_size);
...@@ -389,12 +389,12 @@ void prueth_reset_tx_chan(struct prueth_emac *emac, int ch_num, ...@@ -389,12 +389,12 @@ void prueth_reset_tx_chan(struct prueth_emac *emac, int ch_num,
bool free_skb); bool free_skb);
void prueth_reset_rx_chan(struct prueth_rx_chn *chn, void prueth_reset_rx_chan(struct prueth_rx_chn *chn,
int num_flows, bool disable); int num_flows, bool disable);
void emac_ndo_tx_timeout(struct net_device *ndev, unsigned int txqueue); void icssg_ndo_tx_timeout(struct net_device *ndev, unsigned int txqueue);
int emac_ndo_ioctl(struct net_device *ndev, struct ifreq *ifr, int cmd); int icssg_ndo_ioctl(struct net_device *ndev, struct ifreq *ifr, int cmd);
void emac_ndo_get_stats64(struct net_device *ndev, void icssg_ndo_get_stats64(struct net_device *ndev,
struct rtnl_link_stats64 *stats); struct rtnl_link_stats64 *stats);
int emac_ndo_get_phys_port_name(struct net_device *ndev, char *name, int icssg_ndo_get_phys_port_name(struct net_device *ndev, char *name,
size_t len); size_t len);
int prueth_node_port(struct device_node *eth_node); int prueth_node_port(struct device_node *eth_node);
int prueth_node_mac(struct device_node *eth_node); int prueth_node_mac(struct device_node *eth_node);
void prueth_netdev_exit(struct prueth *prueth, void prueth_netdev_exit(struct prueth *prueth,
......
...@@ -722,14 +722,14 @@ static void emac_ndo_set_rx_mode_sr1(struct net_device *ndev) ...@@ -722,14 +722,14 @@ static void emac_ndo_set_rx_mode_sr1(struct net_device *ndev)
static const struct net_device_ops emac_netdev_ops = { static const struct net_device_ops emac_netdev_ops = {
.ndo_open = emac_ndo_open, .ndo_open = emac_ndo_open,
.ndo_stop = emac_ndo_stop, .ndo_stop = emac_ndo_stop,
.ndo_start_xmit = emac_ndo_start_xmit, .ndo_start_xmit = icssg_ndo_start_xmit,
.ndo_set_mac_address = eth_mac_addr, .ndo_set_mac_address = eth_mac_addr,
.ndo_validate_addr = eth_validate_addr, .ndo_validate_addr = eth_validate_addr,
.ndo_tx_timeout = emac_ndo_tx_timeout, .ndo_tx_timeout = icssg_ndo_tx_timeout,
.ndo_set_rx_mode = emac_ndo_set_rx_mode_sr1, .ndo_set_rx_mode = emac_ndo_set_rx_mode_sr1,
.ndo_eth_ioctl = emac_ndo_ioctl, .ndo_eth_ioctl = icssg_ndo_ioctl,
.ndo_get_stats64 = emac_ndo_get_stats64, .ndo_get_stats64 = icssg_ndo_get_stats64,
.ndo_get_phys_port_name = emac_ndo_get_phys_port_name, .ndo_get_phys_port_name = icssg_ndo_get_phys_port_name,
}; };
static int prueth_netdev_init(struct prueth *prueth, static int prueth_netdev_init(struct prueth *prueth,
...@@ -767,7 +767,7 @@ static int prueth_netdev_init(struct prueth *prueth, ...@@ -767,7 +767,7 @@ static int prueth_netdev_init(struct prueth *prueth,
goto free_ndev; goto free_ndev;
} }
INIT_DELAYED_WORK(&emac->stats_work, emac_stats_work_handler); INIT_DELAYED_WORK(&emac->stats_work, icssg_stats_work_handler);
ret = pruss_request_mem_region(prueth->pruss, ret = pruss_request_mem_region(prueth->pruss,
port == PRUETH_PORT_MII0 ? port == PRUETH_PORT_MII0 ?
...@@ -854,7 +854,7 @@ static int prueth_netdev_init(struct prueth *prueth, ...@@ -854,7 +854,7 @@ static int prueth_netdev_init(struct prueth *prueth,
ndev->hw_features = NETIF_F_SG; ndev->hw_features = NETIF_F_SG;
ndev->features = ndev->hw_features; ndev->features = ndev->hw_features;
netif_napi_add(ndev, &emac->napi_rx, emac_napi_rx_poll); netif_napi_add(ndev, &emac->napi_rx, icssg_napi_rx_poll);
prueth->emac[mac] = emac; prueth->emac[mac] = emac;
return 0; return 0;
......
...@@ -28,6 +28,7 @@ int icssg_queue_pop(struct prueth *prueth, u8 queue) ...@@ -28,6 +28,7 @@ int icssg_queue_pop(struct prueth *prueth, u8 queue)
return val; return val;
} }
EXPORT_SYMBOL_GPL(icssg_queue_pop);
void icssg_queue_push(struct prueth *prueth, int queue, u16 addr) void icssg_queue_push(struct prueth *prueth, int queue, u16 addr)
{ {
...@@ -36,6 +37,7 @@ void icssg_queue_push(struct prueth *prueth, int queue, u16 addr) ...@@ -36,6 +37,7 @@ void icssg_queue_push(struct prueth *prueth, int queue, u16 addr)
regmap_write(prueth->miig_rt, ICSSG_QUEUE_OFFSET + 4 * queue, addr); regmap_write(prueth->miig_rt, ICSSG_QUEUE_OFFSET + 4 * queue, addr);
} }
EXPORT_SYMBOL_GPL(icssg_queue_push);
u32 icssg_queue_level(struct prueth *prueth, int queue) u32 icssg_queue_level(struct prueth *prueth, int queue)
{ {
......
...@@ -42,7 +42,7 @@ void emac_update_hardware_stats(struct prueth_emac *emac) ...@@ -42,7 +42,7 @@ void emac_update_hardware_stats(struct prueth_emac *emac)
} }
} }
void emac_stats_work_handler(struct work_struct *work) void icssg_stats_work_handler(struct work_struct *work)
{ {
struct prueth_emac *emac = container_of(work, struct prueth_emac, struct prueth_emac *emac = container_of(work, struct prueth_emac,
stats_work.work); stats_work.work);
...@@ -51,6 +51,7 @@ void emac_stats_work_handler(struct work_struct *work) ...@@ -51,6 +51,7 @@ void emac_stats_work_handler(struct work_struct *work)
queue_delayed_work(system_long_wq, &emac->stats_work, queue_delayed_work(system_long_wq, &emac->stats_work,
msecs_to_jiffies((STATS_TIME_LIMIT_1G_MS * 1000) / emac->speed)); msecs_to_jiffies((STATS_TIME_LIMIT_1G_MS * 1000) / emac->speed));
} }
EXPORT_SYMBOL_GPL(icssg_stats_work_handler);
int emac_get_stat_by_name(struct prueth_emac *emac, char *stat_name) int emac_get_stat_by_name(struct prueth_emac *emac, char *stat_name)
{ {
......
...@@ -44,7 +44,7 @@ static int prueth_switchdev_stp_state_set(struct prueth_emac *emac, ...@@ -44,7 +44,7 @@ static int prueth_switchdev_stp_state_set(struct prueth_emac *emac,
return -EOPNOTSUPP; return -EOPNOTSUPP;
} }
emac_set_port_state(emac, emac_state); icssg_set_port_state(emac, emac_state);
netdev_dbg(emac->ndev, "STP state: %u\n", emac_state); netdev_dbg(emac->ndev, "STP state: %u\n", emac_state);
return ret; return ret;
...@@ -64,7 +64,7 @@ static int prueth_switchdev_attr_br_flags_set(struct prueth_emac *emac, ...@@ -64,7 +64,7 @@ static int prueth_switchdev_attr_br_flags_set(struct prueth_emac *emac,
netdev_dbg(emac->ndev, "BR_MCAST_FLOOD: %d port %u\n", netdev_dbg(emac->ndev, "BR_MCAST_FLOOD: %d port %u\n",
emac_state, emac->port_id); emac_state, emac->port_id);
emac_set_port_state(emac, emac_state); icssg_set_port_state(emac, emac_state);
return 0; return 0;
} }
......
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