Changeset 24333


Ignore:
Timestamp:
2010-12-08T11:15:07+01:00 (7 years ago)
Author:
juhosg
Message:

ramips: ramips_esw: add defines for switch register offsets

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/ramips/files/drivers/net/ramips_esw.c

    r24332 r24333  
    44#include <rt305x_esw_platform.h> 
    55 
    6 #define RT305X_ESW_PHY_WRITE            (1 << 13) 
    7 #define RT305X_ESW_PHY_TOUT                     (5 * HZ) 
    8 #define RT305X_ESW_PHY_CONTROL_0        0xC0 
    9 #define RT305X_ESW_PHY_CONTROL_1        0xC4 
     6#define RT305X_ESW_REG_FCT0             0x08 
     7#define RT305X_ESW_REG_PFC1             0x14 
     8#define RT305X_ESW_REG_PVIDC(_n)        (0x48 + 4 * (_n)) 
     9#define RT305X_ESW_REG_VLANI(_n)        (0x50 + 4 * (_n)) 
     10#define RT305X_ESW_REG_VMSC(_n)         (0x70 + 4 * (_n)) 
     11#define RT305X_ESW_REG_FPA              0x84 
     12#define RT305X_ESW_REG_SOCPC            0x8c 
     13#define RT305X_ESW_REG_POC1             0x90 
     14#define RT305X_ESW_REG_POC2             0x94 
     15#define RT305X_ESW_REG_POC3             0x98 
     16#define RT305X_ESW_REG_SGC              0x9c 
     17#define RT305X_ESW_REG_PCR0             0xc0 
     18#define RT305X_ESW_REG_PCR1             0xc4 
     19#define RT305X_ESW_REG_FPA2             0xc8 
     20#define RT305X_ESW_REG_FCT2             0xcc 
     21#define RT305X_ESW_REG_SGC2             0xe4 
     22 
     23#define RT305X_ESW_PCR0_WT_NWAY_DATA_S  16 
     24#define RT305X_ESW_PCR0_WT_PHY_CMD      BIT(13) 
     25#define RT305X_ESW_PCR0_CPU_PHY_REG_S   8 
     26 
     27#define RT305X_ESW_PCR1_WT_DONE         BIT(0) 
     28 
     29#define RT305X_ESW_PHY_TIMEOUT          (5 * HZ) 
    1030 
    1131struct rt305x_esw { 
     
    3555        while(1) 
    3656        { 
    37                 if(!(ramips_esw_rr(esw, RT305X_ESW_PHY_CONTROL_1) & (0x1 << 0))) 
     57                if (!(ramips_esw_rr(esw, RT305X_ESW_REG_PCR1) & 
     58                      RT305X_ESW_PCR1_WT_DONE)) 
    3859                        break; 
    39                 if(time_after(jiffies, t_start + RT305X_ESW_PHY_TOUT)) 
     60                if(time_after(jiffies, t_start + RT305X_ESW_PHY_TIMEOUT)) 
    4061                { 
    4162                        ret = 1; 
     
    4364                } 
    4465        } 
    45         ramips_esw_wr(esw, ((write_data & 0xFFFF) << 16) | (phy_register << 8) | 
    46                 (phy_addr) | RT305X_ESW_PHY_WRITE, RT305X_ESW_PHY_CONTROL_0); 
     66 
     67        write_data &= 0xffff; 
     68        ramips_esw_wr(esw, 
     69                      (write_data << RT305X_ESW_PCR0_WT_NWAY_DATA_S) | 
     70                      (phy_register << RT305X_ESW_PCR0_CPU_PHY_REG_S) | 
     71                      (phy_addr) | RT305X_ESW_PCR0_WT_PHY_CMD, 
     72                      RT305X_ESW_REG_PCR0); 
     73 
    4774        t_start = jiffies; 
    4875        while(1) 
    4976        { 
    50                 if(ramips_esw_rr(esw, RT305X_ESW_PHY_CONTROL_1) & (0x1 << 0)) 
     77                if (ramips_esw_rr(esw, RT305X_ESW_REG_PCR1) & 
     78                    RT305X_ESW_PCR1_WT_DONE) 
    5179                        break; 
    52                 if(time_after(jiffies, t_start + RT305X_ESW_PHY_TOUT)) 
     80                if(time_after(jiffies, t_start + RT305X_ESW_PHY_TIMEOUT)) 
    5381                { 
    5482                        ret = 1; 
     
    6896 
    6997        /* vodoo from original driver */ 
    70         ramips_esw_wr(esw, 0xC8A07850, 0x08); 
    71         ramips_esw_wr(esw, 0x00000000, 0xe4); 
    72         ramips_esw_wr(esw, 0x00405555, 0x14); 
    73         ramips_esw_wr(esw, 0x00002001, 0x50); 
    74         ramips_esw_wr(esw, 0x00007f7f, 0x90); 
    75         ramips_esw_wr(esw, 0x00007f3f, 0x98); 
    76         ramips_esw_wr(esw, 0x00d6500c, 0xcc); 
    77         ramips_esw_wr(esw, 0x0008a301, 0x9c); 
    78         ramips_esw_wr(esw, 0x02404040, 0x8c); 
    79         ramips_esw_wr(esw, 0x00001002, 0x48); 
    80         ramips_esw_wr(esw, 0x3f502b28, 0xc8); 
    81         ramips_esw_wr(esw, 0x00000000, 0x84); 
     98        ramips_esw_wr(esw, 0xC8A07850, RT305X_ESW_REG_FCT0); 
     99        ramips_esw_wr(esw, 0x00000000, RT305X_ESW_REG_SGC2); 
     100        ramips_esw_wr(esw, 0x00405555, RT305X_ESW_REG_PFC1); 
     101        ramips_esw_wr(esw, 0x00002001, RT305X_ESW_REG_VLANI(0)); 
     102        ramips_esw_wr(esw, 0x00007f7f, RT305X_ESW_REG_POC1); 
     103        ramips_esw_wr(esw, 0x00007f3f, RT305X_ESW_REG_POC3); 
     104        ramips_esw_wr(esw, 0x00d6500c, RT305X_ESW_REG_FCT2); 
     105        ramips_esw_wr(esw, 0x0008a301, RT305X_ESW_REG_SGC); 
     106        ramips_esw_wr(esw, 0x02404040, RT305X_ESW_REG_SOCPC); 
     107        ramips_esw_wr(esw, 0x00001002, RT305X_ESW_REG_PVIDC(2)); 
     108        ramips_esw_wr(esw, 0x3f502b28, RT305X_ESW_REG_FPA2); 
     109        ramips_esw_wr(esw, 0x00000000, RT305X_ESW_REG_FPA); 
    82110 
    83111        mii_mgr_write(esw, 0, 31, 0x8000); 
     
    98126 
    99127        /* set default vlan */ 
    100         ramips_esw_wr(esw, 0x2001, 0x50); 
    101         ramips_esw_wr(esw, 0x504f, 0x70); 
     128        ramips_esw_wr(esw, 0x2001, RT305X_ESW_REG_VLANI(0)); 
     129        ramips_esw_wr(esw, 0x504f, RT305X_ESW_REG_VMSC(0)); 
    102130} 
    103131 
Note: See TracChangeset for help on using the changeset viewer.