From bfd0d22a35d1c6b8701dd984b89f75da844c1c80 Mon Sep 17 00:00:00 2001 From: Florian Fainelli Date: Mon, 9 Mar 2009 21:57:11 +0000 Subject: [PATCH] [package] allow kmod-switch to be used on brcm63xx (#4599) SVN-Revision: 14825 --- package/switch/Makefile | 2 +- package/switch/src/gpio.h | 10 +++++++++- package/switch/src/switch-robo.c | 6 ++++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/package/switch/Makefile b/package/switch/Makefile index 43a4ee24b6..01e2314b46 100644 --- a/package/switch/Makefile +++ b/package/switch/Makefile @@ -16,7 +16,7 @@ include $(INCLUDE_DIR)/package.mk define KernelPackage/switch SUBMENU:=Other modules - DEPENDS:=@TARGET_brcm_2_4||TARGET_brcm47xx + DEPENDS:=@TARGET_brcm_2_4||TARGET_brcm47xx||TARGET_brcm63xx TITLE:=Switch drivers FILES:= \ $(PKG_BUILD_DIR)/switch-core.$(LINUX_KMOD_SUFFIX) \ diff --git a/package/switch/src/gpio.h b/package/switch/src/gpio.h index f4fadfc640..e541cdac55 100644 --- a/package/switch/src/gpio.h +++ b/package/switch/src/gpio.h @@ -11,7 +11,15 @@ #ifdef BROADCOM #include "gpio-bcm947xx.h" #else -#error "Unsupported configuration." +#warning "Unsupported configuration." + +#define gpio_in() (-1U) +#define gpio_out(mask, value) (-1U) +#define gpio_outen(mask, value) (-1U) +#define gpio_control(mask, value) (-1U) +#define gpio_intmask(mask, value) (-1U) +#define gpio_intpolarity(mask, value) (-1U) + #endif #endif /* __GPIO_H */ diff --git a/package/switch/src/switch-robo.c b/package/switch/src/switch-robo.c index 779b89f615..5733d5024e 100644 --- a/package/switch/src/switch-robo.c +++ b/package/switch/src/switch-robo.c @@ -41,6 +41,7 @@ #define ROBO_PHY_ADDR 0x1E /* robo switch phy address */ #define ROBO_PHY_ADDR_TG3 0x01 /* Tigon3 PHY address */ +#define ROBO_PHY_ADDR_BCM63XX 0x00 /* BCM63XX PHY address */ /* MII registers */ #define REG_MII_PAGE 0x10 /* MII Page register */ @@ -318,13 +319,14 @@ static int robo_probe(char *devname) /* got phy address check for robo address */ struct mii_ioctl_data *mii = (struct mii_ioctl_data *) &robo.ifr.ifr_data; if ((mii->phy_id != ROBO_PHY_ADDR) && + (mii->phy_id != ROBO_PHY_ADDR_BCM63XX) && (mii->phy_id != ROBO_PHY_ADDR_TG3)) { printk("Invalid phy address (%d)\n", mii->phy_id); return 1; } robo.use_et = 0; /* The robo has a fixed PHY address that is different from the - * Tigon3 PHY address. */ + * Tigon3 and BCM63xx PHY address. */ robo.phy_addr = ROBO_PHY_ADDR; } @@ -332,7 +334,7 @@ static int robo_probe(char *devname) (mdio_read(robo.phy_addr, 0x3) << 16); if (phyid == 0xffffffff || phyid == 0x55210022) { - printk("No Robo switch in managed mode found\n"); + printk("No Robo switch in managed mode found, phy_id = 0x%08x\n", phyid); return 1; } -- 2.30.2