drivers: net: fsl-mc: add support for CONFIG_DM_ETH

Make any adjustments necessary in order to support DPAA2 devices probed
using CONFIG_DM_ETH. While at it, fixup some styling issues aroung the
switch-case statement.

Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
Reviewed-by: Priyanka Jain <priyanka.jain@nxp.com>
This commit is contained in:
Ioana Ciornei 2020-03-18 16:47:38 +02:00 committed by Priyanka Jain
parent 267c5146d3
commit 988e33f8d4

View File

@ -174,9 +174,21 @@ enum mc_fixup_type {
};
static int mc_fixup_mac_addr(void *blob, int nodeoffset,
#ifdef CONFIG_DM_ETH
const char *propname, struct udevice *eth_dev,
#else
const char *propname, struct eth_device *eth_dev,
#endif
enum mc_fixup_type type)
{
#ifdef CONFIG_DM_ETH
struct eth_pdata *plat = dev_get_platdata(eth_dev);
unsigned char *enetaddr = plat->enetaddr;
int eth_index = eth_dev->seq;
#else
unsigned char *enetaddr = eth_dev->enetaddr;
int eth_index = eth_dev->index;
#endif
int err = 0, len = 0, size, i;
unsigned char env_enetaddr[ARP_HLEN];
unsigned int enetaddr_32[ARP_HLEN];
@ -184,23 +196,22 @@ static int mc_fixup_mac_addr(void *blob, int nodeoffset,
switch (type) {
case MC_FIXUP_DPL:
/* DPL likes its addresses on 32 * ARP_HLEN bits */
for (i = 0; i < ARP_HLEN; i++)
enetaddr_32[i] = cpu_to_fdt32(eth_dev->enetaddr[i]);
val = enetaddr_32;
len = sizeof(enetaddr_32);
break;
/* DPL likes its addresses on 32 * ARP_HLEN bits */
for (i = 0; i < ARP_HLEN; i++)
enetaddr_32[i] = cpu_to_fdt32(enetaddr[i]);
val = enetaddr_32;
len = sizeof(enetaddr_32);
break;
case MC_FIXUP_DPC:
val = eth_dev->enetaddr;
len = ARP_HLEN;
break;
val = enetaddr;
len = ARP_HLEN;
break;
}
/* MAC address property present */
if (fdt_get_property(blob, nodeoffset, propname, NULL)) {
/* u-boot MAC addr randomly assigned - leave the present one */
if (!eth_env_get_enetaddr_by_index("eth", eth_dev->index,
if (!eth_env_get_enetaddr_by_index("eth", eth_index,
env_enetaddr))
return err;
} else {
@ -250,7 +261,11 @@ const char *dpl_get_connection_endpoint(void *blob, char *endpoint)
}
static int mc_fixup_dpl_mac_addr(void *blob, int dpmac_id,
#ifdef CONFIG_DM_ETH
struct udevice *eth_dev)
#else
struct eth_device *eth_dev)
#endif
{
int objoff = fdt_path_offset(blob, "/objects");
int dpmacoff = -1, dpnioff = -1;
@ -334,7 +349,11 @@ void fdt_fsl_mc_fixup_iommu_map_entry(void *blob)
}
static int mc_fixup_dpc_mac_addr(void *blob, int dpmac_id,
#ifdef CONFIG_DM_ETH
struct udevice *eth_dev)
#else
struct eth_device *eth_dev)
#endif
{
int nodeoffset = fdt_path_offset(blob, "/board_info/ports"), noff;
int err = 0;
@ -377,8 +396,13 @@ static int mc_fixup_dpc_mac_addr(void *blob, int dpmac_id,
static int mc_fixup_mac_addrs(void *blob, enum mc_fixup_type type)
{
int i, err = 0, ret = 0;
char ethname[ETH_NAME_LEN];
#ifdef CONFIG_DM_ETH
#define ETH_NAME_LEN 20
struct udevice *eth_dev;
#else
struct eth_device *eth_dev;
#endif
char ethname[ETH_NAME_LEN];
for (i = WRIOP1_DPMAC1; i < NUM_WRIOP_PORTS; i++) {
/* port not enabled */