[U-Boot] [PATCH RFC 6/7] ATHEROS: AR934X: Add support for ar934x SoC

Nikolaos Pasaloukos Nikolaos.Pasaloukos at imgtec.com
Fri Nov 29 10:48:07 CET 2013


Add ethernet support to ar934x using Atheros phy

Signed-off-by: Nikolaos Pasaloukos <Nikolaos.Pasaloukos at imgtec.com>
Cc: Joe Hershberger <joe.hershberger at gmail.com>
---
 drivers/net/phy/atheros.c | 42 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

diff --git a/drivers/net/phy/atheros.c b/drivers/net/phy/atheros.c
index b20b4df..f69b4ec 100644
--- a/drivers/net/phy/atheros.c
+++ b/drivers/net/phy/atheros.c
@@ -5,6 +5,9 @@
  *
  * Copyright 2011, 2013 Freescale Semiconductor, Inc.
  * author Andy Fleming
+ *
+ * Copyright (C) 2013 Imagination Technologies
+ *
  */
 #include <phy.h>
 
@@ -37,6 +40,34 @@ static int ar8035_config(struct phy_device *phydev)
 	return 0;
 }
 
+static int ar9344_config(struct phy_device *phydev)
+{
+	/* configure the RGMII */
+	phy_write(phydev, 0x18, 0x00, 0x0000);
+	phy_write(phydev, 0x10, 0x01, 0x8000);
+	phy_write(phydev, 0x10, 0x00, 0x0000);
+	udelay(10000);
+	phy_write(phydev, 0x18, 0x00, 0x0003);
+	phy_write(phydev, 0x10, 0x13, 0x7f7f);
+	phy_write(phydev, 0x10, 0x12, 0x7f7f);
+	phy_write(phydev, 0x18, 0x00, 0x0000);
+	phy_write(phydev, 0x10, 0x09, 0x4000);
+	phy_write(phydev, 0x10, 0x08, 0x0000);
+	phy_write(phydev, 0x18, 0x00, 0x0000);
+	phy_write(phydev, 0x10, 0x03, 0x0760);
+	phy_write(phydev, 0x10, 0x02, 0x0000);
+	phy_write(phydev, 0x18, 0x00, 0x0000);
+	phy_write(phydev, 0x10, 0x07, 0x0100);
+	phy_write(phydev, 0x10, 0x06, 0x0000);
+	phy_write(phydev, 0x18, 0x00, 0x0000);
+	phy_write(phydev, 0x11, 0x1f, 0x0000);
+	phy_write(phydev, 0x11, 0x1e, 0x007e);
+
+	genphy_config_aneg(phydev);
+
+	return 0;
+}
+
 static struct phy_driver AR8021_driver =  {
 	.name = "AR8021",
 	.uid = 0x4dd040,
@@ -67,11 +98,22 @@ static struct phy_driver AR8035_driver =  {
 	.shutdown = genphy_shutdown,
 };
 
+static struct phy_driver AR9344_driver = {
+	.name = "AR9344",
+	.uid = 0x4dd036,
+	.mask = 0x4fffff,
+	.features = PHY_GBIT_FEATURES | SUPPORTED_Pause | SUPPORTED_Asym_Pause,
+	.config = ar9344_config,
+	.startup = genphy_startup,
+	.shutdown = genphy_shutdown,
+};
+
 int phy_atheros_init(void)
 {
 	phy_register(&AR8021_driver);
 	phy_register(&AR8031_driver);
 	phy_register(&AR8035_driver);
+	phy_register(&AR9344_driver);
 
 	return 0;
 }
-- 
1.8.3.2




More information about the U-Boot mailing list