Changeset 24329


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

ramips: ramips_esw: use a private structure for the functions

File:
1 edited

Legend:

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

    r18139 r24329  
    99#define RT305X_ESW_PHY_CONTROL_1        0xC4 
    1010 
    11 static void __iomem *ramips_esw_base = 0; 
     11struct rt305x_esw { 
     12        void __iomem *base; 
     13}; 
     14 
     15static struct rt305x_esw rt305x_esw; 
    1216 
    1317static inline void 
    14 ramips_esw_wr(u32 val, unsigned reg) 
     18ramips_esw_wr(struct rt305x_esw *esw, u32 val, unsigned reg) 
    1519{ 
    16         __raw_writel(val, ramips_esw_base + reg); 
     20        __raw_writel(val, esw->base + reg); 
    1721} 
    1822 
    1923static inline u32 
    20 ramips_esw_rr(unsigned reg) 
     24ramips_esw_rr(struct rt305x_esw *esw, unsigned reg) 
    2125{ 
    22         return __raw_readl(ramips_esw_base + reg); 
     26        return __raw_readl(esw->base + reg); 
    2327} 
    2428 
     
    3539 
    3640u32 
    37 mii_mgr_write(u32 phy_addr, u32 phy_register, u32 write_data) 
     41mii_mgr_write(struct rt305x_esw *esw, u32 phy_addr, u32 phy_register, 
     42              u32 write_data) 
    3843{ 
    3944        unsigned long volatile t_start = jiffies; 
     
    4348        while(1) 
    4449        { 
    45                 if(!(ramips_esw_rr(RT305X_ESW_PHY_CONTROL_1) & (0x1 << 0))) 
     50                if(!(ramips_esw_rr(esw, RT305X_ESW_PHY_CONTROL_1) & (0x1 << 0))) 
    4651                        break; 
    4752                if(time_after(jiffies, t_start + RT305X_ESW_PHY_TOUT)) 
     
    5156                } 
    5257        } 
    53         ramips_esw_wr(((write_data & 0xFFFF) << 16) | (phy_register << 8) | 
     58        ramips_esw_wr(esw, ((write_data & 0xFFFF) << 16) | (phy_register << 8) | 
    5459                (phy_addr) | RT305X_ESW_PHY_WRITE, RT305X_ESW_PHY_CONTROL_0); 
    5560        t_start = jiffies; 
    5661        while(1) 
    5762        { 
    58                 if(ramips_esw_rr(RT305X_ESW_PHY_CONTROL_1) & (0x1 << 0)) 
     63                if(ramips_esw_rr(esw, RT305X_ESW_PHY_CONTROL_1) & (0x1 << 0)) 
    5964                        break; 
    6065                if(time_after(jiffies, t_start + RT305X_ESW_PHY_TOUT)) 
     
    7479rt305x_esw_init(void) 
    7580{ 
     81        struct rt305x_esw *esw; 
    7682        int i; 
    7783 
    78         ramips_esw_base = ioremap_nocache(RT305X_SWITCH_BASE, PAGE_SIZE); 
    79         if(!ramips_esw_base) 
     84        esw = &rt305x_esw; 
     85        esw->base = ioremap_nocache(RT305X_SWITCH_BASE, PAGE_SIZE); 
     86        if(!esw->base) 
    8087                return -ENOMEM; 
    8188 
    8289        /* vodoo from original driver */ 
    83         ramips_esw_wr(0xC8A07850, 0x08); 
    84         ramips_esw_wr(0x00000000, 0xe4); 
    85         ramips_esw_wr(0x00405555, 0x14); 
    86         ramips_esw_wr(0x00002001, 0x50); 
    87         ramips_esw_wr(0x00007f7f, 0x90); 
    88         ramips_esw_wr(0x00007f3f, 0x98); 
    89         ramips_esw_wr(0x00d6500c, 0xcc); 
    90         ramips_esw_wr(0x0008a301, 0x9c); 
    91         ramips_esw_wr(0x02404040, 0x8c); 
    92         ramips_esw_wr(0x00001002, 0x48); 
    93         ramips_esw_wr(0x3f502b28, 0xc8); 
    94         ramips_esw_wr(0x00000000, 0x84); 
     90        ramips_esw_wr(esw, 0xC8A07850, 0x08); 
     91        ramips_esw_wr(esw, 0x00000000, 0xe4); 
     92        ramips_esw_wr(esw, 0x00405555, 0x14); 
     93        ramips_esw_wr(esw, 0x00002001, 0x50); 
     94        ramips_esw_wr(esw, 0x00007f7f, 0x90); 
     95        ramips_esw_wr(esw, 0x00007f3f, 0x98); 
     96        ramips_esw_wr(esw, 0x00d6500c, 0xcc); 
     97        ramips_esw_wr(esw, 0x0008a301, 0x9c); 
     98        ramips_esw_wr(esw, 0x02404040, 0x8c); 
     99        ramips_esw_wr(esw, 0x00001002, 0x48); 
     100        ramips_esw_wr(esw, 0x3f502b28, 0xc8); 
     101        ramips_esw_wr(esw, 0x00000000, 0x84); 
    95102 
    96         mii_mgr_write(0, 31, 0x8000); 
     103        mii_mgr_write(esw, 0, 31, 0x8000); 
    97104        for(i = 0; i < 5; i++) 
    98105        { 
    99                 mii_mgr_write(i, 0, 0x3100);   //TX10 waveform coefficient 
    100                 mii_mgr_write(i, 26, 0x1601);   //TX10 waveform coefficient 
    101                 mii_mgr_write(i, 29, 0x7058);   //TX100/TX10 AD/DA current bias 
    102                 mii_mgr_write(i, 30, 0x0018);   //TX100 slew rate control 
     106                mii_mgr_write(esw, i, 0, 0x3100);   //TX10 waveform coefficient 
     107                mii_mgr_write(esw, i, 26, 0x1601);   //TX10 waveform coefficient 
     108                mii_mgr_write(esw, i, 29, 0x7058);   //TX100/TX10 AD/DA current bias 
     109                mii_mgr_write(esw, i, 30, 0x0018);   //TX100 slew rate control 
    103110        } 
    104111        /* PHY IOT */ 
    105         mii_mgr_write(0, 31, 0x0);      //select global register 
    106         mii_mgr_write(0, 22, 0x052f);   //tune TP_IDL tail and head waveform 
    107         mii_mgr_write(0, 17, 0x0fe0);   //set TX10 signal amplitude threshold to minimum 
    108         mii_mgr_write(0, 18, 0x40ba);   //set squelch amplitude to higher threshold 
    109         mii_mgr_write(0, 14, 0x65);     //longer TP_IDL tail length 
    110         mii_mgr_write(0, 31, 0x8000);   //select local register 
     112        mii_mgr_write(esw, 0, 31, 0x0);      //select global register 
     113        mii_mgr_write(esw, 0, 22, 0x052f);   //tune TP_IDL tail and head waveform 
     114        mii_mgr_write(esw, 0, 17, 0x0fe0);   //set TX10 signal amplitude threshold to minimum 
     115        mii_mgr_write(esw, 0, 18, 0x40ba);   //set squelch amplitude to higher threshold 
     116        mii_mgr_write(esw, 0, 14, 0x65);     //longer TP_IDL tail length 
     117        mii_mgr_write(esw, 0, 31, 0x8000);   //select local register 
    111118 
    112119        /* Port 5 Disabled */ 
     
    116123 
    117124        /* set default vlan */ 
    118         ramips_esw_wr(0x2001, 0x50); 
    119         ramips_esw_wr(0x504f, 0x70); 
     125        ramips_esw_wr(esw, 0x2001, 0x50); 
     126        ramips_esw_wr(esw, 0x504f, 0x70); 
    120127 
    121128        return 0; 
Note: See TracChangeset for help on using the changeset viewer.