Skip to content

Commit

Permalink
net: ks8851: Implement EEPROM MAC address readout
Browse files Browse the repository at this point in the history
In case there is an EEPROM attached to the KS8851 MAC and the EEPROM
contains a valid MAC address, the MAC address is loaded into the NIC
registers on power on. Read the MAC address out of the NIC registers
and provide it to U-Boot.

Signed-off-by: Marek Vasut <[email protected]>
Cc: Eugen Hristev <[email protected]>
Cc: Joe Hershberger <[email protected]>
  • Loading branch information
Marek Vasut authored and trini committed Nov 9, 2020
1 parent 22ad69b commit 68cbc63
Showing 1 changed file with 29 additions and 0 deletions.
29 changes: 29 additions & 0 deletions drivers/net/ks8851_mll.c
Original file line number Diff line number Diff line change
Expand Up @@ -622,6 +622,34 @@ static int ks8851_write_hwaddr(struct udevice *dev)
return 0;
}

static int ks8851_read_rom_hwaddr(struct udevice *dev)
{
struct ks_net *ks = dev_get_priv(dev);
struct eth_pdata *pdata = dev_get_platdata(dev);
u16 addrl, addrm, addrh;

/* No EEPROM means no valid MAC address. */
if (!(ks_rdreg16(ks, KS_CCR) & CCR_EEPROM))
return -EINVAL;

/*
* If the EEPROM contains valid MAC address, it is loaded into
* the NIC on power on. Read the MAC out of the NIC registers.
*/
addrl = ks_rdreg16(ks, KS_MARL);
addrm = ks_rdreg16(ks, KS_MARM);
addrh = ks_rdreg16(ks, KS_MARH);

pdata->enetaddr[0] = (addrh >> 8) & 0xff;
pdata->enetaddr[1] = addrh & 0xff;
pdata->enetaddr[2] = (addrm >> 8) & 0xff;
pdata->enetaddr[3] = addrm & 0xff;
pdata->enetaddr[4] = (addrl >> 8) & 0xff;
pdata->enetaddr[5] = addrl & 0xff;

return !is_valid_ethaddr(pdata->enetaddr);
}

static int ks8851_bind(struct udevice *dev)
{
return device_set_name(dev, dev->name);
Expand Down Expand Up @@ -654,6 +682,7 @@ static const struct eth_ops ks8851_ops = {
.send = ks8851_send,
.recv = ks8851_recv,
.write_hwaddr = ks8851_write_hwaddr,
.read_rom_hwaddr = ks8851_read_rom_hwaddr,
};

static const struct udevice_id ks8851_ids[] = {
Expand Down

0 comments on commit 68cbc63

Please sign in to comment.