From 824a77cfd7d0c32083c384f9270a4bc20c191f23 Mon Sep 17 00:00:00 2001 From: Bhadram Varka Date: Mon, 30 Dec 2019 12:19:19 +0530 Subject: [PATCH] nvethernet: add support for XPCS Adds supoort for getting XPCS base address from DT Bug 200552796 Change-Id: I078f0aeca8a2e10fe1dfba7cf23c6ff285a110d1 Signed-off-by: Bhadram Varka Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2270581 --- drivers/net/ethernet/nvidia/nvethernet/Makefile | 1 + .../net/ethernet/nvidia/nvethernet/ether_linux.c | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/nvidia/nvethernet/Makefile b/drivers/net/ethernet/nvidia/nvethernet/Makefile index 41cf41a1..cedc8add 100644 --- a/drivers/net/ethernet/nvidia/nvethernet/Makefile +++ b/drivers/net/ethernet/nvidia/nvethernet/Makefile @@ -35,6 +35,7 @@ nvethernet-objs:= ether_linux.o \ $(OSI_CORE)/eqos_core.o \ $(OSI_CORE)/ivc_core.o \ $(OSI_CORE)/mgbe_core.o \ + $(OSI_CORE)/xpcs.o \ $(OSI_DMA)/mgbe_dma.o \ $(OSI_CORE)/eqos_mmc.o \ $(OSI_DMA)/eqos_dma.o diff --git a/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c b/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c index 603a9039..3acae5aa 100644 --- a/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c +++ b/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c @@ -3609,7 +3609,7 @@ static int ether_init_plat_resources(struct platform_device *pdev, int ret = 0; /* get base address and remap */ - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "mac-base"); osi_core->base = devm_ioremap_resource(&pdev->dev, res); if (IS_ERR(osi_core->base)) { dev_err(&pdev->dev, "failed to ioremap MAC base address\n"); @@ -3630,6 +3630,17 @@ static int ether_init_plat_resources(struct platform_device *pdev, osi_dma->base = osi_core->base; } + res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "xpcs-base"); + if (res) { + osi_core->xpcs_base = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(osi_core->xpcs_base)) { + dev_err(&pdev->dev, "failed to ioremap XPCS address\n"); + return PTR_ERR(osi_core->xpcs_base); + } + } else { + osi_core->xpcs_base = NULL; + } + ret = ether_configure_car(pdev, pdata); if (ret < 0) { dev_err(&pdev->dev, "failed to get clks/reset");