[U-Boot] [PATCH 1/3] net: fec: do not access reserved register for i.MX6ULL

The MIB RAM and FIFO receive start register does not exist on i.MX6ULL. Accessing these register will cause enet not work well or cause system report fault.
Signed-off-by: Peng Fan peng.fan@nxp.com Cc: Joe Hershberger joe.hershberger@ni.com --- drivers/net/fec_mxc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c index 910879b..ac7afb5 100644 --- a/drivers/net/fec_mxc.c +++ b/drivers/net/fec_mxc.c @@ -563,7 +563,7 @@ static int fec_init(struct eth_device *dev, bd_t *bd) writel(0x00000000, &fec->eth->gaddr2);
/* Do not access reserved register for i.MX6UL */ - if (!is_mx6ul()) { + if (!is_mx6ul() && !is_mx6ull()) { /* clear MIB RAM */ for (i = mib_ptr; i <= mib_ptr + 0xfc; i += 4) writel(0, i);

From: Andy Duan fugang.duan@nxp.com
Avoid transfer parameter dev_id value with "-1" to .fec_get_hwaddr(), it should transfer fec->dev_id to get mac address from fuse.
Signed-off-by: Fugang Duan fugang.duan@nxp.com Signed-off-by: Peng Fan peng.fan@nxp.com Cc: Joe Hershberger joe.hershberger@ni.com --- drivers/net/fec_mxc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c index ac7afb5..d67a69b 100644 --- a/drivers/net/fec_mxc.c +++ b/drivers/net/fec_mxc.c @@ -1086,8 +1086,8 @@ static int fec_probe(bd_t *bd, int dev_id, uint32_t base_addr, #endif eth_register(edev);
- if (fec_get_hwaddr(dev_id, ethaddr) == 0) { - debug("got MAC%d address from fuse: %pM\n", dev_id, ethaddr); + if (fec_get_hwaddr(fec->dev_id, ethaddr) == 0) { + debug("got MAC%d address from fuse: %pM\n", fec->dev_id, ethaddr); memcpy(edev->enetaddr, ethaddr, 6); if (!getenv("ethaddr")) eth_setenv_enetaddr("ethaddr", ethaddr);

On 10/04/2017 13:44, Peng Fan wrote:
From: Andy Duan fugang.duan@nxp.com
Avoid transfer parameter dev_id value with "-1" to .fec_get_hwaddr(), it should transfer fec->dev_id to get mac address from fuse.
Signed-off-by: Fugang Duan fugang.duan@nxp.com Signed-off-by: Peng Fan peng.fan@nxp.com Cc: Joe Hershberger joe.hershberger@ni.com
drivers/net/fec_mxc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c index ac7afb5..d67a69b 100644 --- a/drivers/net/fec_mxc.c +++ b/drivers/net/fec_mxc.c @@ -1086,8 +1086,8 @@ static int fec_probe(bd_t *bd, int dev_id, uint32_t base_addr, #endif eth_register(edev);
- if (fec_get_hwaddr(dev_id, ethaddr) == 0) {
debug("got MAC%d address from fuse: %pM\n", dev_id, ethaddr);
- if (fec_get_hwaddr(fec->dev_id, ethaddr) == 0) {
memcpy(edev->enetaddr, ethaddr, 6); if (!getenv("ethaddr")) eth_setenv_enetaddr("ethaddr", ethaddr);debug("got MAC%d address from fuse: %pM\n", fec->dev_id, ethaddr);
Right !
Acked-by: Stefano Babic sbabic@denx.de
Best regards, Stefano Babic

From: Andy Duan fugang.duan@nxp.com
Specify the registered eth index by dev_id.
Signed-off-by: Fugang Duan fugang.duan@nxp.com Signed-off-by: Peng Fan peng.fan@nxp.com Cc: Joe Hershberger joe.hershberger@ni.com --- drivers/net/fec_mxc.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c index d67a69b..08bea8b 100644 --- a/drivers/net/fec_mxc.c +++ b/drivers/net/fec_mxc.c @@ -1023,6 +1023,7 @@ static int fec_probe(bd_t *bd, int dev_id, uint32_t base_addr, struct eth_device *edev; struct fec_priv *fec; unsigned char ethaddr[6]; + char mac[16]; uint32_t start; int ret = 0;
@@ -1085,12 +1086,18 @@ static int fec_probe(bd_t *bd, int dev_id, uint32_t base_addr, fec->phy_id = phy_id; #endif eth_register(edev); + /* only support one eth device, the index number pointed by dev_id */ + edev->index = fec->dev_id;
if (fec_get_hwaddr(fec->dev_id, ethaddr) == 0) { debug("got MAC%d address from fuse: %pM\n", fec->dev_id, ethaddr); memcpy(edev->enetaddr, ethaddr, 6); - if (!getenv("ethaddr")) - eth_setenv_enetaddr("ethaddr", ethaddr); + if (fec->dev_id) + sprintf(mac, "eth%daddr", fec->dev_id); + else + strcpy(mac, "ethaddr"); + if (!getenv(mac)) + eth_setenv_enetaddr(mac, ethaddr); } return ret; err4:

On 10/04/2017 13:44, Peng Fan wrote:
From: Andy Duan fugang.duan@nxp.com
Specify the registered eth index by dev_id.
Signed-off-by: Fugang Duan fugang.duan@nxp.com Signed-off-by: Peng Fan peng.fan@nxp.com Cc: Joe Hershberger joe.hershberger@ni.com
drivers/net/fec_mxc.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c index d67a69b..08bea8b 100644 --- a/drivers/net/fec_mxc.c +++ b/drivers/net/fec_mxc.c @@ -1023,6 +1023,7 @@ static int fec_probe(bd_t *bd, int dev_id, uint32_t base_addr, struct eth_device *edev; struct fec_priv *fec; unsigned char ethaddr[6];
- char mac[16]; uint32_t start; int ret = 0;
@@ -1085,12 +1086,18 @@ static int fec_probe(bd_t *bd, int dev_id, uint32_t base_addr, fec->phy_id = phy_id; #endif eth_register(edev);
/* only support one eth device, the index number pointed by dev_id */
edev->index = fec->dev_id;
if (fec_get_hwaddr(fec->dev_id, ethaddr) == 0) { debug("got MAC%d address from fuse: %pM\n", fec->dev_id, ethaddr); memcpy(edev->enetaddr, ethaddr, 6);
if (!getenv("ethaddr"))
eth_setenv_enetaddr("ethaddr", ethaddr);
if (fec->dev_id)
sprintf(mac, "eth%daddr", fec->dev_id);
else
strcpy(mac, "ethaddr");
if (!getenv(mac))
} return ret;eth_setenv_enetaddr(mac, ethaddr);
err4:
Reviewed-by : Stefano Babic sbabic@denx.de
Best regards, Stefano Babic

On 10/04/2017 13:44, Peng Fan wrote:
The MIB RAM and FIFO receive start register does not exist on i.MX6ULL. Accessing these register will cause enet not work well or cause system report fault.
Signed-off-by: Peng Fan peng.fan@nxp.com Cc: Joe Hershberger joe.hershberger@ni.com
drivers/net/fec_mxc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c index 910879b..ac7afb5 100644 --- a/drivers/net/fec_mxc.c +++ b/drivers/net/fec_mxc.c @@ -563,7 +563,7 @@ static int fec_init(struct eth_device *dev, bd_t *bd) writel(0x00000000, &fec->eth->gaddr2);
/* Do not access reserved register for i.MX6UL */
- if (!is_mx6ul()) {
- if (!is_mx6ul() && !is_mx6ull()) { /* clear MIB RAM */ for (i = mib_ptr; i <= mib_ptr + 0xfc; i += 4) writel(0, i);
Reviewed-by : Stefano Babic sbabic@denx.de
Joe, I see Tom has assigned the series to me. If it is ok for you, I will merge the series into u-boot-imx.
Regards, Stefano

Hi Stefano,
-----Original Message----- From: Stefano Babic [mailto:sbabic@denx.de] Sent: Thursday, April 13, 2017 12:22 AM To: Peng Fan peng.fan@nxp.com; joe.hershberger@ni.com Cc: u-boot@lists.denx.de Subject: Re: [U-Boot] [PATCH 1/3] net: fec: do not access reserved register for i.MX6ULL
On 10/04/2017 13:44, Peng Fan wrote:
The MIB RAM and FIFO receive start register does not exist on i.MX6ULL. Accessing these register will cause enet not work well or cause system report fault.
Signed-off-by: Peng Fan peng.fan@nxp.com Cc: Joe Hershberger joe.hershberger@ni.com
drivers/net/fec_mxc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c index 910879b..ac7afb5 100644 --- a/drivers/net/fec_mxc.c +++ b/drivers/net/fec_mxc.c @@ -563,7 +563,7 @@ static int fec_init(struct eth_device *dev, bd_t *bd) writel(0x00000000, &fec->eth->gaddr2);
/* Do not access reserved register for i.MX6UL */
- if (!is_mx6ul()) {
- if (!is_mx6ul() && !is_mx6ull()) { /* clear MIB RAM */ for (i = mib_ptr; i <= mib_ptr + 0xfc; i += 4) writel(0, i);
Reviewed-by : Stefano Babic sbabic@denx.de
Joe, I see Tom has assigned the series to me. If it is ok for you, I will merge the series into u-boot-imx.
Will you pick up this patch set?
Thanks, Peng.
Regards, Stefano
--
========= DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic@denx.de ============================================================ =========

On 18/04/2017 15:39, Peng Fan wrote:
Hi Stefano,
-----Original Message----- From: Stefano Babic [mailto:sbabic@denx.de] Sent: Thursday, April 13, 2017 12:22 AM To: Peng Fan peng.fan@nxp.com; joe.hershberger@ni.com Cc: u-boot@lists.denx.de Subject: Re: [U-Boot] [PATCH 1/3] net: fec: do not access reserved register for i.MX6ULL
On 10/04/2017 13:44, Peng Fan wrote:
The MIB RAM and FIFO receive start register does not exist on i.MX6ULL. Accessing these register will cause enet not work well or cause system report fault.
Signed-off-by: Peng Fan peng.fan@nxp.com Cc: Joe Hershberger joe.hershberger@ni.com
drivers/net/fec_mxc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c index 910879b..ac7afb5 100644 --- a/drivers/net/fec_mxc.c +++ b/drivers/net/fec_mxc.c @@ -563,7 +563,7 @@ static int fec_init(struct eth_device *dev, bd_t *bd) writel(0x00000000, &fec->eth->gaddr2);
/* Do not access reserved register for i.MX6UL */
- if (!is_mx6ul()) {
- if (!is_mx6ul() && !is_mx6ull()) { /* clear MIB RAM */ for (i = mib_ptr; i <= mib_ptr + 0xfc; i += 4) writel(0, i);
Reviewed-by : Stefano Babic sbabic@denx.de
Joe, I see Tom has assigned the series to me. If it is ok for you, I will merge the series into u-boot-imx.
Will you pick up this patch set?
Yes, I pick it up. Applied to u-boot-imx, thanks !
Best regards, Stefano Babic
participants (2)
-
Peng Fan
-
Stefano Babic