diff mbox

[U-Boot] 4xx: cleanup ethernet phy initialization on PMC440 boards

Message ID 1395261039-19640-1-git-send-email-matthias.fuchs@esd.eu
State Superseded
Delegated to: Stefan Roese
Headers show

Commit Message

Matthias Fuchs March 19, 2014, 8:30 p.m. UTC
This patch moves phy initialization for VSC8601 ethernet
phys that are used on early board revisions into a separate
setup function.

Signed-off-by: Matthias Fuchs <matthias.fuchs@esd.eu>
---
 board/esd/pmc440/pmc440.c |   45 ++++++++++++++++++++++-----------------------
 1 files changed, 22 insertions(+), 23 deletions(-)

Comments

Stefan Roese March 20, 2014, 11:23 a.m. UTC | #1
Hi Matthias,

On 19.03.2014 21:30, Matthias Fuchs wrote:
> This patch moves phy initialization for VSC8601 ethernet
> phys that are used on early board revisions into a separate
> setup function.

Thanks for working on this. Some additional comments though.

> Signed-off-by: Matthias Fuchs <matthias.fuchs@esd.eu>
> ---
>   board/esd/pmc440/pmc440.c |   45 ++++++++++++++++++++++-----------------------
>   1 files changed, 22 insertions(+), 23 deletions(-)
>
> diff --git a/board/esd/pmc440/pmc440.c b/board/esd/pmc440/pmc440.c
> index 7aee8e4..3165486 100644
> --- a/board/esd/pmc440/pmc440.c
> +++ b/board/esd/pmc440/pmc440.c
> @@ -643,6 +643,23 @@ int is_pci_host(struct pci_controller *hose)
>   #endif /* defined(CONFIG_PCI) */
>
>   #ifdef CONFIG_RESET_PHY_R
> +int pmc440_setup_vsc8601(char *devname, int phy_addr,
> +			 unsigned short behavior, unsigned short method)

static int pmc440_...

> +{
> +	/* adjust LED behavior */
> +	if (miiphy_write(devname, phy_addr, 0x1f, 0x0001) != 0) {
> +		printf("Phy%d: register write access failed\n", phy_addr);
> +		return -1;
> +	}
> +
> +	miiphy_write(devname, phy_addr, 0x11, 0x0010);
> +	miiphy_write(devname, phy_addr, 0x11, behavior);
> +	miiphy_write(devname, phy_addr, 0x10, method);
> +	miiphy_write(devname, phy_addr, 0x1f, 0x0000);
> +
> +	return 0;
> +}

Look much nicer with less indentation. :)

>   int pmc440_setup_ksz9031(char *devname, int phy_addr)

And now I notice that this should also be:

static int pmc440_...

A new patch-set would be best to handle this. Or a new patch with both 
changes squashed together would be fine as well. Whatever you prefer.

Thanks,
Stefan
diff mbox

Patch

diff --git a/board/esd/pmc440/pmc440.c b/board/esd/pmc440/pmc440.c
index 7aee8e4..3165486 100644
--- a/board/esd/pmc440/pmc440.c
+++ b/board/esd/pmc440/pmc440.c
@@ -643,6 +643,23 @@  int is_pci_host(struct pci_controller *hose)
 #endif /* defined(CONFIG_PCI) */
 
 #ifdef CONFIG_RESET_PHY_R
+int pmc440_setup_vsc8601(char *devname, int phy_addr,
+			 unsigned short behavior, unsigned short method)
+{
+	/* adjust LED behavior */
+	if (miiphy_write(devname, phy_addr, 0x1f, 0x0001) != 0) {
+		printf("Phy%d: register write access failed\n", phy_addr);
+		return -1;
+	}
+
+	miiphy_write(devname, phy_addr, 0x11, 0x0010);
+	miiphy_write(devname, phy_addr, 0x11, behavior);
+	miiphy_write(devname, phy_addr, 0x10, method);
+	miiphy_write(devname, phy_addr, 0x1f, 0x0000);
+
+	return 0;
+}
+
 int pmc440_setup_ksz9031(char *devname, int phy_addr)
 {
 	unsigned short id1, id2;
@@ -683,29 +700,11 @@  void reset_phy(void)
 			val_behavior = 0x0cf0;
 		}
 
-		if (miiphy_write("ppc_4xx_eth0",
-				 CONFIG_PHY_ADDR, 0x1f, 0x0001) == 0) {
-			miiphy_write("ppc_4xx_eth0",
-				     CONFIG_PHY_ADDR, 0x11, 0x0010);
-			miiphy_write("ppc_4xx_eth0",
-				     CONFIG_PHY_ADDR, 0x11, val_behavior);
-			miiphy_write("ppc_4xx_eth0",
-				     CONFIG_PHY_ADDR, 0x10, val_method);
-			miiphy_write("ppc_4xx_eth0",
-				     CONFIG_PHY_ADDR, 0x1f, 0x0000);
-		}
-
-		if (miiphy_write("ppc_4xx_eth1",
-				 CONFIG_PHY1_ADDR, 0x1f, 0x0001) == 0) {
-			miiphy_write("ppc_4xx_eth1",
-				     CONFIG_PHY1_ADDR, 0x11, 0x0010);
-			miiphy_write("ppc_4xx_eth1",
-				     CONFIG_PHY1_ADDR, 0x11, val_behavior);
-			miiphy_write("ppc_4xx_eth1",
-				     CONFIG_PHY1_ADDR, 0x10, val_method);
-			miiphy_write("ppc_4xx_eth1",
-				     CONFIG_PHY1_ADDR, 0x1f, 0x0000);
-		}
+		/* boards up to rev. 1.3 use Vitesse VSC8601 phys */
+		pmc440_setup_vsc8601("ppc_4xx_eth0", CONFIG_PHY_ADDR,
+				     val_method, val_behavior);
+		pmc440_setup_vsc8601("ppc_4xx_eth1", CONFIG_PHY1_ADDR,
+				     val_method, val_behavior);
 	} else {
 		/* rev. 1.4 uses a Micrel KSZ9031 */
 		pmc440_setup_ksz9031("ppc_4xx_eth0", CONFIG_PHY_ADDR);