Changeset 24338


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

ramips: ramips_esw: add helper function to set vlan members

File:
1 edited

Legend:

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

    r24337 r24338  
    3232#define RT305X_ESW_VLANI_VID_S          12 
    3333 
     34#define RT305X_ESW_VMSC_MSC_M           0xff 
     35#define RT305X_ESW_VMSC_MSC_S           8 
     36 
     37#define RT305X_ESW_PORT0                0 
     38#define RT305X_ESW_PORT1                1 
     39#define RT305X_ESW_PORT2                2 
     40#define RT305X_ESW_PORT3                3 
     41#define RT305X_ESW_PORT4                4 
     42#define RT305X_ESW_PORT5                5 
     43#define RT305X_ESW_PORT6                6 
     44 
    3445struct rt305x_esw { 
    3546        void __iomem *base; 
     
    122133                       RT305X_ESW_VLANI_VID_M << s, 
    123134                       (vid & RT305X_ESW_VLANI_VID_M) << s); 
     135} 
     136 
     137static void 
     138rt305x_esw_set_vmsc(struct rt305x_esw *esw, unsigned vlan, unsigned msc) 
     139{ 
     140        unsigned s; 
     141 
     142        s = RT305X_ESW_VMSC_MSC_S * (vlan % 4); 
     143        rt305x_esw_rmw(esw, 
     144                       RT305X_ESW_REG_VMSC(vlan / 4), 
     145                       RT305X_ESW_VMSC_MSC_M << s, 
     146                       (msc & RT305X_ESW_VMSC_MSC_M) << s); 
    124147} 
    125148 
     
    171194        rt305x_esw_set_vlan_id(esw, 0, 1); 
    172195        rt305x_esw_set_vlan_id(esw, 1, 2); 
    173         rt305x_esw_wr(esw, 0x504f, RT305X_ESW_REG_VMSC(0)); 
     196        rt305x_esw_set_vmsc(esw, 0, 
     197                            (BIT(RT305X_ESW_PORT0) | BIT(RT305X_ESW_PORT1) | 
     198                             BIT(RT305X_ESW_PORT2) | BIT(RT305X_ESW_PORT3) | 
     199                             BIT(RT305X_ESW_PORT6))); 
     200        rt305x_esw_set_vmsc(esw, 1, 
     201                            (BIT(RT305X_ESW_PORT4) | BIT(RT305X_ESW_PORT6))); 
     202        rt305x_esw_set_vmsc(esw, 2, 0); 
     203        rt305x_esw_set_vmsc(esw, 3, 0); 
    174204} 
    175205 
Note: See TracChangeset for help on using the changeset viewer.