From mboxrd@z Thu Jan 1 00:00:00 1970 From: Valentin Longchamp Date: Thu, 7 Jun 2012 12:06:53 +0200 Subject: [U-Boot] [PATCH 13/20] arm/km: enable external switch configuration for kmnusa In-Reply-To: <1339063620-8890-1-git-send-email-valentin.longchamp@keymile.com> References: <1339063620-8890-1-git-send-email-valentin.longchamp@keymile.com> Message-ID: <1339063620-8890-14-git-send-email-valentin.longchamp@keymile.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de The configuration EEPROM should be removed for P1B. Signed-off-by: Valentin Longchamp --- board/keymile/km_arm/km_arm.c | 11 +++++------ board/keymile/km_arm/managed_switch.c | 3 ++- board/keymile/km_arm/managed_switch.h | 7 +++++++ 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/board/keymile/km_arm/km_arm.c b/board/keymile/km_arm/km_arm.c index 4a6bff1..edaadb9 100644 --- a/board/keymile/km_arm/km_arm.c +++ b/board/keymile/km_arm/km_arm.c @@ -43,6 +43,7 @@ #include #include "../common/common.h" +#include "managed_switch.h" DECLARE_GLOBAL_DATA_PTR; @@ -407,13 +408,11 @@ void reset_phy(void) if (miiphy_set_current_dev(name)) return; - /* enable autoneg on port 0 phy */ - ext_switch_reg_write(name, CONFIG_KM_MANAGED_SW_ADDR, 0, 0, 0x3300); +#if defined(CONFIG_KM_NUSA) + ext_switch_program(name, CONFIG_KM_MANAGED_SW_ADDR); +#endif - /* egress broadcast franes on all macs, with forwarding */ - ext_switch_reg_write(name, CONFIG_KM_MANAGED_SW_ADDR, 16, 4, 0x000f); - ext_switch_reg_write(name, CONFIG_KM_MANAGED_SW_ADDR, 20, 4, 0x000f); - ext_switch_reg_write(name, CONFIG_KM_MANAGED_SW_ADDR, 21, 4, 0x000f); + ext_switch_reset(name, CONFIG_KM_MANAGED_SW_ADDR); } #endif diff --git a/board/keymile/km_arm/managed_switch.c b/board/keymile/km_arm/managed_switch.c index 3b022cd..a776f1d 100644 --- a/board/keymile/km_arm/managed_switch.c +++ b/board/keymile/km_arm/managed_switch.c @@ -32,9 +32,10 @@ struct switch_reg sw_conf[] = { /* port 0, PIGY4, autoneg */ { PORT(0), PORT_PHY, NO_SPEED_FOR }, { PORT(0), PORT_CTRL, FORWARDING | EGRS_FLD_ALL }, + { PHY(0), PHY_1000_CTRL, NO_ADV }, + { PHY(0), PHY_SPEC_CTRL, AUTO_MDIX_EN }, { PHY(0), PHY_CTRL, PHY_100_MBPS | AUTONEG_EN | AUTONEG_RST | FULL_DUPLEX }, - { PHY(0), PHY_SPEC_CTRL, AUTO_MDIX_EN }, /* port 1, unused */ { PORT(1), PORT_CTRL, PORT_DIS }, { PHY(1), PHY_CTRL, PHY_PWR_DOWN }, diff --git a/board/keymile/km_arm/managed_switch.h b/board/keymile/km_arm/managed_switch.h index c0dcf82..d5b938a 100644 --- a/board/keymile/km_arm/managed_switch.h +++ b/board/keymile/km_arm/managed_switch.h @@ -51,6 +51,7 @@ #define PHY_CTRL 0x00 #define PHY_100_MBPS 0x2000 +#define PHY_1_GBPS 0x0040 #define AUTONEG_EN 0x1000 #define AUTONEG_RST 0x0200 #define FULL_DUPLEX 0x0100 @@ -62,6 +63,12 @@ #define SPEC_PWR_DOWN 0x0004 #define AUTO_MDIX_EN 0x0060 +#define PHY_1000_CTRL 0x9 + +#define NO_ADV 0x0000 +#define ADV_1000_FDPX 0x0200 +#define ADV_1000_HDPX 0x0100 + /* PORT or MAC registers */ #define PORT(itf) (itf+0x10) -- 1.7.1