disable VLANs for RB1xx boards (#2132)
[openwrt/openwrt.git] / target / linux / adm5120-2.6 / files / arch / mips / adm5120 / boards / mikrotik.c
index c1b203f7cca843a3088d1000a34f1422d1b54dc0..4d037587c16b6d2b48ae4d6c0eb5c8af089eb8ed 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *  $Id$
  *
- *  Mikrotik RouterBOARDs 111/112/133/133C/153
+ *  Mikrotik RouterBOARDs 111/112/133/133C/150/153
  *
  *  Copyright (C) 2007 OpenWrt.org
  *  Copyright (C) 2007 Gabor Juhos <juhosg@freemail.hu>
@@ -50,6 +50,11 @@ static struct platform_device *rb1xx_devices[] __initdata = {
        &adm5120_nand_device,
 };
 
+static struct platform_device *rb150_devices[] __initdata = {
+       &adm5120_flash0_device,
+       /* TODO: nand device is not yet supported */
+};
+
 static void __init rb1xx_setup(void)
 {
        /* setup data for flash0 device */
@@ -59,6 +64,11 @@ static void __init rb1xx_setup(void)
        /* TODO: setup mac address */
 }
 
+#if 0
+/*
+ * RB1xx boards have bad network performance with the default VLAN matrixes.
+ * Disable it while the ethernet driver gets fixed.
+ */
 static unsigned char rb11x_vlans[6] __initdata = {
        /* FIXME: untested */
        0x41, 0x00, 0x00, 0x00, 0x00, 0x00
@@ -66,7 +76,7 @@ static unsigned char rb11x_vlans[6] __initdata = {
 
 static unsigned char rb133_vlans[6] __initdata = {
        /* FIXME: untested */
-       0x41, 0x42, 0x44, 0x00, 0x00, 0x00
+       0x44, 0x42, 0x41, 0x00, 0x00, 0x00
 };
 
 static unsigned char rb133c_vlans[6] __initdata = {
@@ -74,10 +84,19 @@ static unsigned char rb133c_vlans[6] __initdata = {
        0x44, 0x00, 0x00, 0x00, 0x00, 0x00
 };
 
-static unsigned char rb153_vlans[6] __initdata = {
+static unsigned char rb15x_vlans[6] __initdata = {
        /* FIXME: untested */
        0x41, 0x42, 0x44, 0x48, 0x50, 0x00
 };
+#else
+static unsigned char rb_vlans[6] __initdata = {
+       0x7F, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+#define rb11x_vlans    rb_vlans
+#define rb133_vlans    rb_vlans
+#define rb133c_vlans   rb_vlans
+#define rb15x_vlans    rb_vlans
+#endif
 
 static struct adm5120_board rb111_board __initdata = {
        .mach_type      = MACH_ADM5120_RB_111,
@@ -119,12 +138,22 @@ static struct adm5120_board rb133c_board __initdata = {
        .devices        = rb1xx_devices,
 };
 
+static struct adm5120_board rb150_board __initdata = {
+       .mach_type      = MACH_ADM5120_RB_150,
+       .name           = "Mikrotik RouterBOARD 150",
+       .board_setup    = rb1xx_setup,
+       .eth_num_ports  = 5,
+       .eth_vlans      = rb15x_vlans,
+       .num_devices    = ARRAY_SIZE(rb150_devices),
+       .devices        = rb150_devices,
+};
+
 static struct adm5120_board rb153_board __initdata = {
        .mach_type      = MACH_ADM5120_RB_153,
        .name           = "Mikrotik RouterBOARD 153",
        .board_setup    = rb1xx_setup,
        .eth_num_ports  = 5,
-       .eth_vlans      = rb153_vlans,
+       .eth_vlans      = rb15x_vlans,
        .num_devices    = ARRAY_SIZE(rb1xx_devices),
        .devices        = rb1xx_devices,
 };
@@ -135,6 +164,7 @@ static int __init register_boards(void)
        adm5120_board_register(&rb112_board);
        adm5120_board_register(&rb133_board);
        adm5120_board_register(&rb133c_board);
+       adm5120_board_register(&rb150_board);
        adm5120_board_register(&rb153_board);
        return 0;
 }