Ticket #6185: titan-mdio.patch

File titan-mdio.patch, 2.9 KB (added by Xin Zhen (LoneStar) <xlonestar2000@…>, 8 years ago)

Correct the MDIO register address for Titan

  • target/linux/ar7/files/include/asm-mips/ar7/ar7.h

     
    4444#define UR8_REGS_WDT    (AR7_REGS_BASE + 0x0b00) 
    4545#define UR8_REGS_UART1  (AR7_REGS_BASE + 0x0f00) 
    4646 
    47 #define TITAN_REGS_MAC0         (0x08640000) 
    48 #define TITAN_REGS_MAC1         (TITAN_REGS_MAC0 + 0x0800) 
     47#define TITAN_REGS_ESWITCH_BASE (0x08640000) 
     48#define TITAN_REGS_MAC0                 (TITAN_REGS_ESWITCH_BASE + 0) 
     49#define TITAN_REGS_MAC1                 (TITAN_REGS_ESWITCH_BASE + 0x0800) 
     50#define TITAN_REGS_MDIO                 (TITAN_REGS_ESWITCH_BASE + 0x02000) 
    4951#define TITAN_REGS_VLYNQ0       (AR7_REGS_BASE + 0x1c00) 
    5052#define TITAN_REGS_VLYNQ1       (AR7_REGS_BASE + 0x1300) 
    5153 
  • target/linux/ar7/patches-2.6.30/940-cpmac-titan.patch

     
    1 --- a/arch/mips/ar7/platform.c  2009-11-18 15:47:42.000000000 +0800 
    2 +++ b/arch/mips/ar7/platform.c  2009-11-19 00:56:05.000000000 +0800 
     1--- a/arch/mips/ar7/platform.c  2010-01-25 16:11:24.000000000 +0800 
     2+++ b/arch/mips/ar7/platform.c  2010-01-13 14:46:16.000000000 +0800 
    33@@ -677,24 +677,32 @@ 
    44        } 
    55  
     
    4141        if (res) 
    4242                return res; 
    4343  
    44 --- a/drivers/net/cpmac.c       2009-11-18 15:47:42.000000000 +0800 
    45 +++ b/drivers/net/cpmac.c       2009-11-19 00:58:25.000000000 +0800 
    46 @@ -1236,6 +1236,10 @@ 
    47         ar7_device_reset(AR7_RESET_BIT_CPMAC_HI); 
     44--- a/drivers/net/cpmac.c       2010-01-25 16:11:24.000000000 +0800 
     45+++ b/drivers/net/cpmac.c       2010-01-25 16:48:02.000000000 +0800 
     46@@ -1141,6 +1141,8 @@ 
     47                goto fail; 
     48        } 
     49  
     50+       ar7_device_reset(pdata->reset_bit); 
     51+ 
     52        dev->irq = platform_get_irq_byname(pdev, "irq"); 
     53  
     54        dev->open               = cpmac_open; 
     55@@ -1221,7 +1223,7 @@ 
     56        cpmac_mii->reset = cpmac_mdio_reset; 
     57        cpmac_mii->irq = mii_irqs; 
     58  
     59-       cpmac_mii->priv = ioremap(AR7_REGS_MDIO, 256); 
     60+       cpmac_mii->priv = ioremap(ar7_is_titan()?TITAN_REGS_MDIO:AR7_REGS_MDIO, 256); 
     61  
     62        if (!cpmac_mii->priv) { 
     63                printk(KERN_ERR "Can't ioremap mdio registers\n"); 
     64@@ -1232,9 +1234,10 @@ 
     65 #warning FIXME: unhardcode gpio&reset bits 
     66        ar7_gpio_disable(26); 
     67        ar7_gpio_disable(27); 
     68-       ar7_device_reset(AR7_RESET_BIT_CPMAC_LO); 
     69-       ar7_device_reset(AR7_RESET_BIT_CPMAC_HI); 
    4870        ar7_device_reset(AR7_RESET_BIT_EPHY); 
    49   
    5071+       if (ar7_is_titan()) { 
    5172+               ar7_device_reset(TITAN_RESET_BIT_EPHY1); 
    5273+       } 
    53 + 
     74  
    5475        cpmac_mii->reset(cpmac_mii); 
    5576  
    56         for (i = 0; i < 300; i++) 
    57 @@ -1250,7 +1254,8 @@ 
    58                 mask = 0; 
    59         } 
    60   
    61 -       cpmac_mii->phy_mask = ~(mask | 0x80000000); 
    62 +       cpmac_mii->phy_mask = ar7_is_titan()? ~(mask | 0x80000000 | 0x40000000): 
    63 +               ~(mask | 0x80000000); 
    64         snprintf(cpmac_mii->id, MII_BUS_ID_SIZE, "1"); 
    65   
    66         res = mdiobus_register(cpmac_mii);