Skip to content

Commit 1f06784

Browse files
theadibkartben
authored andcommitted
eth_nxp_enet_qos: implement set_config
implements the set_config api for the eth_nxp_enet_qos_mac driver as in FRDM_MCXN947 Signed-off-by: Adib Taraben <[email protected]>
1 parent b92ad8a commit 1f06784

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

drivers/ethernet/eth_nxp_enet_qos/eth_nxp_enet_qos_mac.c

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -570,11 +570,55 @@ static const struct device *eth_nxp_enet_qos_get_phy(const struct device *dev)
570570
return config->phy_dev;
571571
}
572572

573+
574+
575+
static int eth_nxp_enet_qos_set_config(const struct device *dev,
576+
enum ethernet_config_type type,
577+
const struct ethernet_config *cfg)
578+
{
579+
const struct nxp_enet_qos_mac_config *config = dev->config;
580+
struct nxp_enet_qos_mac_data *data = dev->data;
581+
struct nxp_enet_qos_config *module_cfg = ENET_QOS_MODULE_CFG(config->enet_dev);
582+
enet_qos_t *base = module_cfg->base;
583+
584+
switch (type) {
585+
case ETHERNET_CONFIG_TYPE_MAC_ADDRESS:
586+
memcpy(data->mac_addr.addr,
587+
cfg->mac_address.addr,
588+
sizeof(data->mac_addr.addr));
589+
/* Set MAC address */
590+
base->MAC_ADDRESS0_HIGH =
591+
ENET_QOS_REG_PREP(MAC_ADDRESS0_HIGH, ADDRHI,
592+
data->mac_addr.addr[5] << 8 |
593+
data->mac_addr.addr[4]);
594+
base->MAC_ADDRESS0_LOW =
595+
ENET_QOS_REG_PREP(MAC_ADDRESS0_LOW, ADDRLO,
596+
data->mac_addr.addr[3] << 24 |
597+
data->mac_addr.addr[2] << 16 |
598+
data->mac_addr.addr[1] << 8 |
599+
data->mac_addr.addr[0]);
600+
net_if_set_link_addr(data->iface, data->mac_addr.addr,
601+
sizeof(data->mac_addr.addr),
602+
NET_LINK_ETHERNET);
603+
LOG_DBG("%s MAC set to %02x:%02x:%02x:%02x:%02x:%02x",
604+
dev->name,
605+
data->mac_addr.addr[0], data->mac_addr.addr[1],
606+
data->mac_addr.addr[2], data->mac_addr.addr[3],
607+
data->mac_addr.addr[4], data->mac_addr.addr[5]);
608+
return 0;
609+
default:
610+
break;
611+
}
612+
613+
return -ENOTSUP;
614+
}
615+
573616
static const struct ethernet_api api_funcs = {
574617
.iface_api.init = eth_nxp_enet_qos_iface_init,
575618
.send = eth_nxp_enet_qos_tx,
576619
.get_capabilities = eth_nxp_enet_qos_get_capabilities,
577620
.get_phy = eth_nxp_enet_qos_get_phy,
621+
.set_config = eth_nxp_enet_qos_set_config,
578622
};
579623

580624
#define NXP_ENET_QOS_NODE_HAS_MAC_ADDR_CHECK(n) \

0 commit comments

Comments
 (0)