Changeset 33547


Ignore:
Timestamp:
2012-09-25T16:46:58+02:00 (5 years ago)
Author:
blogic
Message:

[ramips] make ramips ethernet use a register mapping table

File:
1 edited

Legend:

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

    r31844 r33547  
    4848#endif 
    4949 
     50enum raeth_reg { 
     51        RAETH_REG_PDMA_GLO_CFG = 0, 
     52        RAETH_REG_PDMA_RST_CFG, 
     53        RAETH_REG_DLY_INT_CFG, 
     54        RAETH_REG_TX_BASE_PTR0, 
     55        RAETH_REG_TX_MAX_CNT0, 
     56        RAETH_REG_TX_CTX_IDX0, 
     57        RAETH_REG_RX_BASE_PTR0, 
     58        RAETH_REG_RX_MAX_CNT0, 
     59        RAETH_REG_RX_CALC_IDX0, 
     60        RAETH_REG_FE_INT_ENABLE, 
     61        RAETH_REG_FE_INT_STATUS, 
     62        RAETH_REG_COUNT 
     63}; 
     64 
     65static const u32 ramips_reg_table[RAETH_REG_COUNT] = { 
     66        [RAETH_REG_PDMA_GLO_CFG] = RAMIPS_PDMA_GLO_CFG, 
     67        [RAETH_REG_PDMA_RST_CFG] = RAMIPS_PDMA_RST_CFG, 
     68        [RAETH_REG_DLY_INT_CFG] = RAMIPS_DLY_INT_CFG, 
     69        [RAETH_REG_TX_BASE_PTR0] = RAMIPS_TX_BASE_PTR0, 
     70        [RAETH_REG_TX_MAX_CNT0] = RAMIPS_TX_MAX_CNT0, 
     71        [RAETH_REG_TX_CTX_IDX0] = RAMIPS_TX_CTX_IDX0, 
     72        [RAETH_REG_RX_BASE_PTR0] = RAMIPS_RX_BASE_PTR0, 
     73        [RAETH_REG_RX_MAX_CNT0] = RAMIPS_RX_MAX_CNT0, 
     74        [RAETH_REG_RX_CALC_IDX0] = RAMIPS_RX_CALC_IDX0, 
     75        [RAETH_REG_FE_INT_ENABLE] = RAMIPS_FE_INT_ENABLE, 
     76        [RAETH_REG_FE_INT_STATUS] = RAMIPS_FE_INT_STATUS, 
     77}; 
     78 
    5079static struct net_device * ramips_dev; 
    5180static void __iomem *ramips_fe_base = 0; 
    5281 
     82static inline u32 get_reg_offset(enum raeth_reg reg) 
     83{ 
     84        const u32 *table; 
     85 
     86        table = ramips_reg_table; 
     87 
     88        return table[reg]; 
     89} 
     90 
    5391static inline void 
    5492ramips_fe_wr(u32 val, unsigned reg) 
     
    64102 
    65103static inline void 
     104ramips_fe_twr(u32 val, enum raeth_reg reg) 
     105{ 
     106        ramips_fe_wr(val, get_reg_offset(reg)); 
     107} 
     108 
     109static inline u32 
     110ramips_fe_trr(enum raeth_reg reg) 
     111{ 
     112        return ramips_fe_rr(get_reg_offset(reg)); 
     113} 
     114 
     115static inline void 
    66116ramips_fe_int_disable(u32 mask) 
    67117{ 
    68         ramips_fe_wr(ramips_fe_rr(RAMIPS_FE_INT_ENABLE) & ~mask, 
    69                      RAMIPS_FE_INT_ENABLE); 
     118        ramips_fe_twr(ramips_fe_trr(RAETH_REG_FE_INT_ENABLE) & ~mask, 
     119                     RAETH_REG_FE_INT_ENABLE); 
    70120        /* flush write */ 
    71         ramips_fe_rr(RAMIPS_FE_INT_ENABLE); 
     121        ramips_fe_trr(RAETH_REG_FE_INT_ENABLE); 
    72122} 
    73123 
     
    75125ramips_fe_int_enable(u32 mask) 
    76126{ 
    77         ramips_fe_wr(ramips_fe_rr(RAMIPS_FE_INT_ENABLE) | mask, 
    78                      RAMIPS_FE_INT_ENABLE); 
     127        ramips_fe_twr(ramips_fe_trr(RAETH_REG_FE_INT_ENABLE) | mask, 
     128                     RAETH_REG_FE_INT_ENABLE); 
    79129        /* flush write */ 
    80         ramips_fe_rr(RAMIPS_FE_INT_ENABLE); 
     130        ramips_fe_trr(RAETH_REG_FE_INT_ENABLE); 
    81131} 
    82132 
     
    643693ramips_setup_dma(struct raeth_priv *re) 
    644694{ 
    645         ramips_fe_wr(re->tx_desc_dma, RAMIPS_TX_BASE_PTR0); 
    646         ramips_fe_wr(NUM_TX_DESC, RAMIPS_TX_MAX_CNT0); 
    647         ramips_fe_wr(0, RAMIPS_TX_CTX_IDX0); 
    648         ramips_fe_wr(RAMIPS_PST_DTX_IDX0, RAMIPS_PDMA_RST_CFG); 
    649  
    650         ramips_fe_wr(re->rx_desc_dma, RAMIPS_RX_BASE_PTR0); 
    651         ramips_fe_wr(NUM_RX_DESC, RAMIPS_RX_MAX_CNT0); 
    652         ramips_fe_wr((NUM_RX_DESC - 1), RAMIPS_RX_CALC_IDX0); 
    653         ramips_fe_wr(RAMIPS_PST_DRX_IDX0, RAMIPS_PDMA_RST_CFG); 
     695        ramips_fe_twr(re->tx_desc_dma, RAETH_REG_TX_BASE_PTR0); 
     696        ramips_fe_twr(NUM_TX_DESC, RAETH_REG_TX_MAX_CNT0); 
     697        ramips_fe_twr(0, RAETH_REG_TX_CTX_IDX0); 
     698        ramips_fe_twr(RAMIPS_PST_DTX_IDX0, RAETH_REG_PDMA_RST_CFG); 
     699 
     700        ramips_fe_twr(re->rx_desc_dma, RAETH_REG_RX_BASE_PTR0); 
     701        ramips_fe_twr(NUM_RX_DESC, RAETH_REG_RX_MAX_CNT0); 
     702        ramips_fe_twr((NUM_RX_DESC - 1), RAETH_REG_RX_CALC_IDX0); 
     703        ramips_fe_twr(RAMIPS_PST_DRX_IDX0, RAETH_REG_PDMA_RST_CFG); 
    654704} 
    655705 
     
    681731 
    682732        spin_lock(&re->page_lock); 
    683         tx = ramips_fe_rr(RAMIPS_TX_CTX_IDX0); 
     733        tx = ramips_fe_trr(RAETH_REG_TX_CTX_IDX0); 
    684734        tx_next = (tx + 1) % NUM_TX_DESC; 
    685735 
     
    701751        dev->stats.tx_packets++; 
    702752        dev->stats.tx_bytes += skb->len; 
    703         ramips_fe_wr(tx_next, RAMIPS_TX_CTX_IDX0); 
     753        ramips_fe_twr(tx_next, RAETH_REG_TX_CTX_IDX0); 
    704754        netdev_sent_queue(dev, skb->len); 
    705755        spin_unlock(&re->page_lock); 
     
    721771        int max_rx = 16; 
    722772 
    723         rx = ramips_fe_rr(RAMIPS_RX_CALC_IDX0); 
     773        rx = ramips_fe_trr(RAETH_REG_RX_CALC_IDX0); 
    724774 
    725775        while (max_rx) { 
     
    769819 
    770820                rxd->rxd2 = RX_DMA_LSO; 
    771                 ramips_fe_wr(rx, RAMIPS_RX_CALC_IDX0); 
     821                ramips_fe_twr(rx, RAETH_REG_RX_CALC_IDX0); 
    772822                max_rx--; 
    773823        } 
     
    826876        unsigned int status; 
    827877 
    828         status = ramips_fe_rr(RAMIPS_FE_INT_STATUS); 
    829         status &= ramips_fe_rr(RAMIPS_FE_INT_ENABLE); 
     878        status = ramips_fe_trr(RAETH_REG_FE_INT_STATUS); 
     879        status &= ramips_fe_trr(RAETH_REG_FE_INT_ENABLE); 
    830880 
    831881        if (!status) 
    832882                return IRQ_NONE; 
    833883 
    834         ramips_fe_wr(status, RAMIPS_FE_INT_STATUS); 
     884        ramips_fe_twr(status, RAETH_REG_FE_INT_STATUS); 
    835885 
    836886        if (status & RAMIPS_RX_DLY_INT) { 
     
    868918 
    869919        ramips_setup_dma(re); 
    870         ramips_fe_wr((ramips_fe_rr(RAMIPS_PDMA_GLO_CFG) & 0xff) | 
     920        ramips_fe_twr((ramips_fe_trr(RAETH_REG_PDMA_GLO_CFG) & 0xff) | 
    871921                (RAMIPS_TX_WB_DDONE | RAMIPS_RX_DMA_EN | 
    872922                RAMIPS_TX_DMA_EN | RAMIPS_PDMA_SIZE_4DWORDS), 
    873                 RAMIPS_PDMA_GLO_CFG); 
     923                RAETH_REG_PDMA_GLO_CFG); 
    874924        ramips_fe_wr((ramips_fe_rr(RAMIPS_FE_GLO_CFG) & 
    875925                ~(RAMIPS_US_CYC_CNT_MASK << RAMIPS_US_CYC_CNT_SHIFT)) | 
     
    883933        ramips_phy_start(re); 
    884934 
    885         ramips_fe_wr(RAMIPS_DELAY_INIT, RAMIPS_DLY_INT_CFG); 
    886         ramips_fe_wr(RAMIPS_TX_DLY_INT | RAMIPS_RX_DLY_INT, RAMIPS_FE_INT_ENABLE); 
     935        ramips_fe_twr(RAMIPS_DELAY_INIT, RAETH_REG_DLY_INT_CFG); 
     936        ramips_fe_twr(RAMIPS_TX_DLY_INT | RAMIPS_RX_DLY_INT, RAETH_REG_FE_INT_ENABLE); 
    887937        ramips_fe_wr(ramips_fe_rr(RAMIPS_GDMA1_FWD_CFG) & 
    888938                ~(RAMIPS_GDM1_ICS_EN | RAMIPS_GDM1_TCS_EN | RAMIPS_GDM1_UCS_EN | 0xffff), 
     
    908958        struct raeth_priv *re = netdev_priv(dev); 
    909959 
    910         ramips_fe_wr(ramips_fe_rr(RAMIPS_PDMA_GLO_CFG) & 
     960        ramips_fe_twr(ramips_fe_trr(RAETH_REG_PDMA_GLO_CFG) & 
    911961                     ~(RAMIPS_TX_WB_DDONE | RAMIPS_RX_DMA_EN | RAMIPS_TX_DMA_EN), 
    912                      RAMIPS_PDMA_GLO_CFG); 
     962                     RAETH_REG_PDMA_GLO_CFG); 
    913963 
    914964        /* disable all interrupts in the hw */ 
    915         ramips_fe_wr(0, RAMIPS_FE_INT_ENABLE); 
     965        ramips_fe_twr(0, RAETH_REG_FE_INT_ENABLE); 
    916966 
    917967        ramips_phy_stop(re); 
Note: See TracChangeset for help on using the changeset viewer.