Great collaboration on these two fantastic routers on the openwrt forum:
https://forum.openwrt.org/viewtopic.php?id=32320

Above all kudos to aryufan. Well done and thank you everyone else who
contributed.

 

To-Do: LED for wlan is not yet activated

 

Signed-off-by: Hanno Schupp hanno.sch...@gmail.com

 

 

 

Index: target/linux/ar71xx/files/arch/mips/ath79/mach-rb750.c

===================================================================

--- target/linux/ar71xx/files/arch/mips/ath79/mach-rb750.c       (revision
31152)

+++ target/linux/ar71xx/files/arch/mips/ath79/mach-rb750.c    (working copy)

@@ -9,17 +9,24 @@

  */

 #include <linux/export.h>

+#include <linux/pci.h>

+#include <linux/ath9k_platform.h>

#include <linux/platform_device.h>

#include <linux/phy.h>

#include <linux/ar8216_platform.h>

 #include <asm/mach-ath79/ar71xx_regs.h>

#include <asm/mach-ath79/ath79.h>

+#include <asm/mach-ath79/pci.h>

+#include <asm/mach-ath79/irq.h>

#include <asm/mach-ath79/mach-rb750.h>

 #include "common.h"

+#include "dev-usb.h"

#include "dev-eth.h"

#include "machtypes.h"

+#include "pci-ath9k-fixup.h"

+#include "pci.h"

 static struct rb750_led_data rb750_leds[] = {

               {

@@ -270,3 +277,91 @@

 MIPS_MACHINE(ATH79_MACH_RB_750G_R3, "750Gr3", "MikroTik RouterBOARD 750GL",

                    rb750gr3_setup);

+

+static struct ath9k_platform_data rb751_wmac_data = {

+             .led_pin = -1,

+};

+

+static u8 rb751_wmac_mac[6];

+

+static int rb751_pci_plat_dev_init(struct pci_dev *dev)

+{

+             switch (PCI_SLOT(dev->devfn)) {

+             case 0:

+                             dev->dev.platform_data = &rb751_wmac_data;

+                             break;

+             }

+

+             return 0;

+}

+

+static int decode_rle(char* output, int len, char* in)

+{

+             char* ptr = output;

+             char* end = output + len;

+             while(*in)

+             {

+                             if(*in < 0)

+                             {

+                                             int i = -*in++;

+                                             while(i-- > 0)

+                                             {

+                                                             if(ptr >= end)

+
return -1;

+                                                             *ptr++ =
*in++;

+                                             }

+                             }

+                             else if(*in > 0)

+                             {

+                                             int i = *in++;

+                                             while(i-- > 0)

+                                             {

+                                                             if(ptr >= end)

+
return -1;

+                                                             *ptr++ = *in;

+                                             }

+                                             in++;

+                             }

+             }

+             return ptr - output;

+}

+

+#define RB751_HARDCONFIG 0x1f00b000

+#define RB751_MAC_ADDRESS_OFFSET 0xE80

+#define RB751_CALDATA_OFFSET 0x27C

+

+static void __init rb751_wlan_and_usb_setup(void)

+{

+             u8 *hardconfig = (u8 *) KSEG1ADDR(RB751_HARDCONFIG);

+

+             ath79_register_usb();

+

+             ath79_pci_set_plat_dev_init(rb751_pci_plat_dev_init);

+             ath79_register_pci();

+

+             rb751_wmac_data.macaddr = memcpy(rb751_wmac_mac, hardconfig +
RB751_MAC_ADDRESS_OFFSET, 6);

+

+             if(decode_rle((char*)rb751_wmac_data.eeprom_data,
sizeof(rb751_wmac_data.eeprom_data), hardconfig + RB751_CALDATA_OFFSET) ==
sizeof(rb751_wmac_data.eeprom_data))

+             {

+                             pr_info("rb7xx: calibration data found\n");

+                             pci_enable_ath9k_fixup(0,
rb751_wmac_data.eeprom_data);  

+             }

+}

+

+static void __init rb751_setup(void)

+{

+             rb750_setup();

+             rb751_wlan_and_usb_setup();

+}

+

+MIPS_MACHINE(ATH79_MACH_RB_751, "751", "MikroTik RouterBOARD 751",

+                  rb751_setup);

+

+static void __init rb751g_setup(void)

+{

+             rb750gr3_setup();

+             rb751_wlan_and_usb_setup();

+}

+

+MIPS_MACHINE(ATH79_MACH_RB_751G, "751g", "MikroTik RouterBOARD 751G",

+                  rb751g_setup);

Index: target/linux/ar71xx/patches-3.2/614-MIPS-ath79-RB751G-support.patch

===================================================================

--- target/linux/ar71xx/patches-3.2/614-MIPS-ath79-RB751G-support.patch
(revision 0)

+++ target/linux/ar71xx/patches-3.2/614-MIPS-ath79-RB751G-support.patch
(revision 0)

@@ -0,0 +1,11 @@

+--- a/arch/mips/ath79/machtypes.h

++++ b/arch/mips/ath79/machtypes.h

+@@ -51,6 +51,8 @@ enum ath79_mach_type {

+             ATH79_MACH_RB_493G,                             /* Mikrotik
RouterBOARD 493G */

+             ATH79_MACH_RB_750,                                /* MikroTik
RouterBOARD 750 */

+             ATH79_MACH_RB_750G_R3,                     /* MikroTik
RouterBOARD 750GL */

++           ATH79_MACH_RB_751,                                /* MikroTik
RouterBOARD 751 */

++           ATH79_MACH_RB_751G,                             /* MikroTik
RouterBOARD 751G */

+             ATH79_MACH_RW2458N,                            /* Redwave
RW2458N */

+             ATH79_MACH_TEW_632BRP,                     /* TRENDnet
TEW-632BRP */

+             ATH79_MACH_TEW_673GRU,                   /* TRENDnet
TEW-673GRU */

Index: target/linux/ar71xx/base-files/lib/ar71xx.sh

===================================================================

--- target/linux/ar71xx/base-files/lib/ar71xx.sh (revision 31152)

+++ target/linux/ar71xx/base-files/lib/ar71xx.sh              (working copy)

@@ -250,6 +250,12 @@

               *"RouterBOARD 750GL")

                               name="rb-750gl"

                               ;;

+             *"RouterBOARD 751")

+                             name="rb-751"

+                             ;;

+             *"RouterBOARD 751G")

+                             name="rb-751g"

+                             ;;

               *"Rocket M")

                               name="rocket-m"

                               ;;

Index: target/linux/ar71xx/base-files/etc/uci-defaults/network

===================================================================

--- target/linux/ar71xx/base-files/etc/uci-defaults/network       (revision
31152)

+++ target/linux/ar71xx/base-files/etc/uci-defaults/network    (working
copy)

@@ -63,6 +63,7 @@

               ;;

 rb-750gl |\

+rb-751g |\

wzr-hp-g450h)

               ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"

               ucidef_add_switch "switch0" "1" "1"

@@ -153,6 +154,7 @@

dir-615-e4 |\

ja76pf |\

rb-750 |\

+rb-751 |\

tew-632brp |\

tl-mr3220 |\

tl-mr3420 |\

 

 

 

 

 

 

 

_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to