summaryrefslogtreecommitdiff
path: root/sys/src/9/imx8
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2022-07-10 12:02:00 +0000
committercinap_lenrek <cinap_lenrek@felloff.net>2022-07-10 12:02:00 +0000
commitfe14f67c92704dc608eff7453150448d4ad7c0d5 (patch)
tree890dba5063663d004a7ff32e5b9e8574ba3a12ca /sys/src/9/imx8
parentfdd3e1808fc2ec0f6a2d2c5dd8cec914a0b20476 (diff)
imx8: get mac address from OTP rom
Diffstat (limited to 'sys/src/9/imx8')
-rw-r--r--sys/src/9/imx8/etherimx.c28
1 files changed, 16 insertions, 12 deletions
diff --git a/sys/src/9/imx8/etherimx.c b/sys/src/9/imx8/etherimx.c
index 9b816920f..4ed331f8d 100644
--- a/sys/src/9/imx8/etherimx.c
+++ b/sys/src/9/imx8/etherimx.c
@@ -655,18 +655,22 @@ ctl(Ether*, void*, long len)
static int
reset(Ether *edev)
{
- Ctlr *ctlr = edev->ctlr;
- u32int paddr1, paddr2;
-
- /* steal mac address from uboot */
- paddr1 = rr(ctlr, ENET_PALR);
- paddr2 = rr(ctlr, ENET_PAUR);
- edev->ea[0] = paddr1>>24;
- edev->ea[1] = paddr1>>16;
- edev->ea[2] = paddr1>>8;
- edev->ea[3] = paddr1>>0;
- edev->ea[4] = paddr2>>24;
- edev->ea[5] = paddr2>>16;
+ enum {
+ OCOTP_HW_OCOTP_MAC_ADDR0 = 0x640/4,
+ OCOTP_HW_OCOTP_MAC_ADDR1 = 0x650/4,
+ };
+ static u32int *ocotp = (u32int*)(VIRTIO + 0x350000);
+ u32int a0, a1;
+
+ a0 = ocotp[OCOTP_HW_OCOTP_MAC_ADDR0];
+ a1 = ocotp[OCOTP_HW_OCOTP_MAC_ADDR1];
+
+ edev->ea[0] = a1>>8;
+ edev->ea[1] = a1>>0;
+ edev->ea[2] = a0>>24;
+ edev->ea[3] = a0>>16;
+ edev->ea[4] = a0>>8;
+ edev->ea[5] = a0>>0;
shutdown(edev);