Ignore:
Timestamp:
2012-04-06T08:45:07+02:00 (5 years ago)
Author:
juhosg
Message:

ar71xx: initial support for Mikrotik RB751G-2HnD and RB751U-2HnD

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
To-Do: TxPower over 20dBm (RB751U) or 22dBm (RB751G) are not accepted by
the router

Signed-off-by: Hanno Schupp <hanno.schupp@…>
[juhosg: fix line wrapped patch, fix checkpatch errors, add missing
kernel patches]

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-rb750.c

    r31025 r31208  
    1010 
    1111#include <linux/export.h> 
     12#include <linux/pci.h> 
     13#include <linux/ath9k_platform.h> 
    1214#include <linux/platform_device.h> 
    1315#include <linux/phy.h> 
     
    1618#include <asm/mach-ath79/ar71xx_regs.h> 
    1719#include <asm/mach-ath79/ath79.h> 
     20#include <asm/mach-ath79/pci.h> 
     21#include <asm/mach-ath79/irq.h> 
    1822#include <asm/mach-ath79/mach-rb750.h> 
    1923 
    2024#include "common.h" 
     25#include "dev-usb.h" 
    2126#include "dev-eth.h" 
    2227#include "machtypes.h" 
     28#include "pci-ath9k-fixup.h" 
     29#include "pci.h" 
    2330 
    2431static struct rb750_led_data rb750_leds[] = { 
     
    271278MIPS_MACHINE(ATH79_MACH_RB_750G_R3, "750Gr3", "MikroTik RouterBOARD 750GL", 
    272279             rb750gr3_setup); 
     280 
     281static struct ath9k_platform_data rb751_wmac_data = { 
     282        .led_pin = -1, 
     283}; 
     284 
     285static u8 rb751_wmac_mac[6]; 
     286 
     287static int rb751_pci_plat_dev_init(struct pci_dev *dev) 
     288{ 
     289        switch (PCI_SLOT(dev->devfn)) { 
     290        case 0: 
     291                dev->dev.platform_data = &rb751_wmac_data; 
     292                break; 
     293        } 
     294 
     295        return 0; 
     296} 
     297 
     298static int decode_rle(char *output, int len, char *in) 
     299{ 
     300        char *ptr = output; 
     301        char *end = output + len; 
     302        while (*in) { 
     303                if (*in < 0) { 
     304                        int i = -*in++; 
     305                        while (i-- > 0) { 
     306                                if (ptr >= end) 
     307                                        return -1; 
     308                                *ptr++ = *in++; 
     309                        } 
     310                } else if (*in > 0) { 
     311                        int i = *in++; 
     312                        while (i-- > 0) { 
     313                                if (ptr >= end) 
     314                                        return -1; 
     315                                *ptr++ = *in; 
     316                        } 
     317                        in++; 
     318                } 
     319        } 
     320        return ptr - output; 
     321} 
     322 
     323#define RB751_HARDCONFIG 0x1f00b000 
     324#define RB751_MAC_ADDRESS_OFFSET 0xE80 
     325#define RB751_CALDATA_OFFSET 0x27C 
     326 
     327static void __init rb751_wlan_and_usb_setup(void) 
     328{ 
     329        u8 *hardconfig = (u8 *) KSEG1ADDR(RB751_HARDCONFIG); 
     330 
     331        ath79_register_usb(); 
     332 
     333        ath79_pci_set_plat_dev_init(rb751_pci_plat_dev_init); 
     334        ath79_register_pci(); 
     335 
     336        rb751_wmac_data.macaddr = memcpy(rb751_wmac_mac, 
     337                        hardconfig + RB751_MAC_ADDRESS_OFFSET, 6); 
     338 
     339        if (decode_rle((char *)rb751_wmac_data.eeprom_data, 
     340                        sizeof(rb751_wmac_data.eeprom_data), 
     341                        hardconfig + RB751_CALDATA_OFFSET) == 
     342                        sizeof(rb751_wmac_data.eeprom_data)) { 
     343                pr_info("rb7xx: calibration data found\n"); 
     344                pci_enable_ath9k_fixup(0, rb751_wmac_data.eeprom_data); 
     345        } 
     346} 
     347 
     348static void __init rb751_setup(void) 
     349{ 
     350        rb750_setup(); 
     351        rb751_wlan_and_usb_setup(); 
     352} 
     353 
     354MIPS_MACHINE(ATH79_MACH_RB_751, "751", "MikroTik RouterBOARD 751", 
     355             rb751_setup); 
     356 
     357static void __init rb751g_setup(void) 
     358{ 
     359        rb750gr3_setup(); 
     360        rb751_wlan_and_usb_setup(); 
     361} 
     362 
     363MIPS_MACHINE(ATH79_MACH_RB_751G, "751g", "MikroTik RouterBOARD 751G", 
     364             rb751g_setup); 
Note: See TracChangeset for help on using the changeset viewer.