diff mbox

[U-Boot,v5,5/5] i.mx6q: mx6qsabrelite: Update the network configuration

Message ID 1328659730-7109-5-git-send-email-troy.kisky@boundarydevices.com
State Awaiting Upstream
Delegated to: Stefano Babic
Headers show

Commit Message

Troy Kisky Feb. 8, 2012, 12:08 a.m. UTC
Define CONFIG_PHY_MICREL, and
minimize the tx clock delay.

There is an issue with 1000 baseTx mode on early revs
of the SabreLite boards. The center tap pin 9 of the mag RJ45
USB combo was connected to the 3.3 filtered supply. Letting
this pin float solved the problem. Symptoms of the problem
were packets with many extra zeroes tacked on the end, and random
bit flips causing a high rate of CRC errors. 10/100 baseTx worked
fine on all revs. To disable 1000 baseTx for these boards, simply
define the environment variable disable_giga. ie.

setenv disable_giga 1

Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
Acked-by: Dirk Behme <dirk.behme@de.bosch.com>
---
 board/freescale/mx6qsabrelite/mx6qsabrelite.c |   51 +++++++------------------
 include/configs/mx6qsabrelite.h               |    2 +
 2 files changed, 16 insertions(+), 37 deletions(-)

Comments

Troy Kisky Feb. 10, 2012, 9:02 p.m. UTC | #1
On 2/7/2012 5:08 PM, Troy Kisky wrote:
> Define CONFIG_PHY_MICREL, and
> minimize the tx clock delay.
>
> There is an issue with 1000 baseTx mode on early revs
> of the SabreLite boards. The center tap pin 9 of the mag RJ45
> USB combo was connected to the 3.3 filtered supply. Letting
> this pin float solved the problem. Symptoms of the problem
> were packets with many extra zeroes tacked on the end, and random
> bit flips causing a high rate of CRC errors. 10/100 baseTx worked
> fine on all revs. To disable 1000 baseTx for these boards, simply
> define the environment variable disable_giga. ie.
>
> setenv disable_giga 1
>
> Signed-off-by: Troy Kisky<troy.kisky@boundarydevices.com>
> Acked-by: Dirk Behme<dirk.behme@de.bosch.com>
> ---
>   board/freescale/mx6qsabrelite/mx6qsabrelite.c |   51 +++++++------------------
>   include/configs/mx6qsabrelite.h               |    2 +
>   2 files changed, 16 insertions(+), 37 deletions(-)
>
> diff --git a/board/freescale/mx6qsabrelite/mx6qsabrelite.c b/board/freescale/mx6qsabrelite/mx6qsabrelite.c
> index a53b01f..2847539 100644
> --- a/board/freescale/mx6qsabrelite/mx6qsabrelite.c
> +++ b/board/freescale/mx6qsabrelite/mx6qsabrelite.c
>
This has a minor conflict with the recently applied
56c8eaf6cf44f8ec674fb863005e73250ad3d31c
mx6q: mx6qsabrelite: Add ECSPI support to the Sabrelite platform

Would you like me to resend 5/5,   1-5/5, or let you handle.

Thanks
Troy
Stefano Babic Feb. 13, 2012, 7:08 a.m. UTC | #2
On 10/02/2012 22:02, Troy Kisky wrote:
> On 2/7/2012 5:08 PM, Troy Kisky wrote:
>> Define CONFIG_PHY_MICREL, and
>> minimize the tx clock delay.
>>
>> There is an issue with 1000 baseTx mode on early revs
>> of the SabreLite boards. The center tap pin 9 of the mag RJ45
>> USB combo was connected to the 3.3 filtered supply. Letting
>> this pin float solved the problem. Symptoms of the problem
>> were packets with many extra zeroes tacked on the end, and random
>> bit flips causing a high rate of CRC errors. 10/100 baseTx worked
>> fine on all revs. To disable 1000 baseTx for these boards, simply
>> define the environment variable disable_giga. ie.
>>
>> setenv disable_giga 1
>>
>> Signed-off-by: Troy Kisky<troy.kisky@boundarydevices.com>
>> Acked-by: Dirk Behme<dirk.behme@de.bosch.com>
>> ---
>>   board/freescale/mx6qsabrelite/mx6qsabrelite.c |   51
>> +++++++------------------
>>   include/configs/mx6qsabrelite.h               |    2 +
>>   2 files changed, 16 insertions(+), 37 deletions(-)
>>
>> diff --git a/board/freescale/mx6qsabrelite/mx6qsabrelite.c
>> b/board/freescale/mx6qsabrelite/mx6qsabrelite.c
>> index a53b01f..2847539 100644
>> --- a/board/freescale/mx6qsabrelite/mx6qsabrelite.c
>> +++ b/board/freescale/mx6qsabrelite/mx6qsabrelite.c
>>
> This has a minor conflict with the recently applied
> 56c8eaf6cf44f8ec674fb863005e73250ad3d31c
> mx6q: mx6qsabrelite: Add ECSPI support to the Sabrelite platform
> 
> Would you like me to resend 5/5,   1-5/5, or let you handle.

Do not worry, I solved the conflict myself. As I can understand, there
is not open issues with the patchset, and I will apply the patches after
Albert will merge my last pull request.

Stefano
diff mbox

Patch

diff --git a/board/freescale/mx6qsabrelite/mx6qsabrelite.c b/board/freescale/mx6qsabrelite/mx6qsabrelite.c
index a53b01f..2847539 100644
--- a/board/freescale/mx6qsabrelite/mx6qsabrelite.c
+++ b/board/freescale/mx6qsabrelite/mx6qsabrelite.c
@@ -29,9 +29,9 @@ 
 #include <asm/gpio.h>
 #include <mmc.h>
 #include <fsl_esdhc.h>
+#include <micrel.h>
 #include <miiphy.h>
 #include <netdev.h>
-
 DECLARE_GLOBAL_DATA_PTR;
 
 #define UART_PAD_CTRL  (PAD_CTL_PKE | PAD_CTL_PUE |            \
@@ -193,53 +193,30 @@  int board_mmc_init(bd_t *bis)
 }
 #endif
 
-#define MII_1000BASET_CTRL		0x9
-#define MII_EXTENDED_CTRL		0xb
-#define MII_EXTENDED_DATAW		0xc
-
-int fecmxc_mii_postcall(int phy)
+int board_phy_config(struct phy_device *phydev)
 {
-	/* prefer master mode */
-	miiphy_write("FEC", phy, MII_1000BASET_CTRL, 0x0f00);
-
 	/* min rx data delay */
-	miiphy_write("FEC", phy, MII_EXTENDED_CTRL, 0x8105);
-	miiphy_write("FEC", phy, MII_EXTENDED_DATAW, 0x0000);
-
-	/* max rx/tx clock delay, min rx/tx control delay */
-	miiphy_write("FEC", phy, MII_EXTENDED_CTRL, 0x8104);
-	miiphy_write("FEC", phy, MII_EXTENDED_DATAW, 0xf0f0);
-	miiphy_write("FEC", phy, MII_EXTENDED_CTRL, 0x104);
-
+	ksz9021_phy_extended_write(phydev,
+			MII_KSZ9021_EXT_RGMII_RX_DATA_SKEW, 0x0);
+	/* min tx data delay */
+	ksz9021_phy_extended_write(phydev,
+			MII_KSZ9021_EXT_RGMII_TX_DATA_SKEW, 0x0);
+	/* max rx/tx clock delay, min rx/tx control */
+	ksz9021_phy_extended_write(phydev,
+			MII_KSZ9021_EXT_RGMII_CLOCK_SKEW, 0xf0f0);
+	if (phydev->drv->config)
+		phydev->drv->config(phydev);
 	return 0;
 }
 
 int board_eth_init(bd_t *bis)
 {
-	struct eth_device *dev;
 	int ret;
-
 	setup_iomux_enet();
-
 	ret = cpu_eth_init(bis);
-	if (ret) {
+	if (ret)
 		printf("FEC MXC: %s:failed\n", __func__);
-		return ret;
-	}
-
-	dev = eth_get_dev_by_name("FEC");
-	if (!dev) {
-		printf("FEC MXC: Unable to get FEC device entry\n");
-		return -EINVAL;
-	}
-
-	ret = fecmxc_register_mii_postcall(dev, fecmxc_mii_postcall);
-	if (ret) {
-		printf("FEC MXC: Unable to register FEC mii postcall\n");
-		return ret;
-	}
-
-	return 0;
+	return ret;
 }
 
 int board_early_init_f(void)
diff --git a/include/configs/mx6qsabrelite.h b/include/configs/mx6qsabrelite.h
index d650ee3..3e143d4 100644
--- a/include/configs/mx6qsabrelite.h
+++ b/include/configs/mx6qsabrelite.h
@@ -66,6 +66,8 @@ 
 #define	CONFIG_FEC_XCV_TYPE		RGMII
 #define CONFIG_ETHPRIME			"FEC"
 #define CONFIG_FEC_MXC_PHYADDR		6
+#define CONFIG_PHYLIB
+#define CONFIG_PHY_MICREL
 
 /* allow to overwrite serial and ethaddr */
 #define CONFIG_ENV_OVERWRITE