allow kmod-switch to be used on brcm63xx (#4599)
authorFlorian Fainelli <florian@openwrt.org>
Mon, 9 Mar 2009 21:57:11 +0000 (21:57 +0000)
committerFlorian Fainelli <florian@openwrt.org>
Mon, 9 Mar 2009 21:57:11 +0000 (21:57 +0000)
SVN-Revision: 14825

package/switch/Makefile
package/switch/src/gpio.h
package/switch/src/switch-robo.c

index 43a4ee2..01e2314 100644 (file)
@@ -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) \
index f4fadfc..e541cda 100644 (file)
 #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 */
index 779b89f..5733d50 100644 (file)
@@ -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;
        }