]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/net/ethernet/apm/xgene/xgene_enet_xgmac.c
drivers: net: xgene: Add helper function
[karo-tx-linux.git] / drivers / net / ethernet / apm / xgene / xgene_enet_xgmac.c
index d1758b072623efdf6fc1155e3705eb10b3b78772..f97e599b6d77872446729ae593334c896726e732 100644 (file)
@@ -359,7 +359,7 @@ static void xgene_enet_xgcle_bypass(struct xgene_enet_pdata *pdata,
        CFG_CLE_IP_PROTOCOL0_SET(&cb, 3);
        xgene_enet_wr_csr(pdata, XCLE_BYPASS_REG0_ADDR, cb);
 
-       fpsel = xgene_enet_ring_bufnum(bufpool_id) - 0x20;
+       fpsel = xgene_enet_get_fpsel(bufpool_id);
        xgene_enet_rd_csr(pdata, XCLE_BYPASS_REG1_ADDR, &cb);
        CFG_CLE_DSTQID0_SET(&cb, dst_ring_num);
        CFG_CLE_FPSEL0_SET(&cb, fpsel);
@@ -370,24 +370,20 @@ static void xgene_enet_shutdown(struct xgene_enet_pdata *pdata)
 {
        struct device *dev = &pdata->pdev->dev;
        struct xgene_enet_desc_ring *ring;
-       u32 pb, val;
+       u32 pb;
        int i;
 
        pb = 0;
        for (i = 0; i < pdata->rxq_cnt; i++) {
                ring = pdata->rx_ring[i]->buf_pool;
-
-               val = xgene_enet_ring_bufnum(ring->id);
-               pb |= BIT(val - 0x20);
+               pb |= BIT(xgene_enet_get_fpsel(ring->id));
        }
        xgene_enet_wr_ring_if(pdata, ENET_CFGSSQMIFPRESET_ADDR, pb);
 
        pb = 0;
        for (i = 0; i < pdata->txq_cnt; i++) {
                ring = pdata->tx_ring[i];
-
-               val = xgene_enet_ring_bufnum(ring->id);
-               pb |= BIT(val);
+               pb |= BIT(xgene_enet_ring_bufnum(ring->id));
        }
        xgene_enet_wr_ring_if(pdata, ENET_CFGSSQMIWQRESET_ADDR, pb);
 
@@ -400,16 +396,14 @@ static void xgene_enet_shutdown(struct xgene_enet_pdata *pdata)
 static void xgene_enet_clear(struct xgene_enet_pdata *pdata,
                             struct xgene_enet_desc_ring *ring)
 {
-       u32 addr, val, data;
-
-       val = xgene_enet_ring_bufnum(ring->id);
+       u32 addr, data;
 
        if (xgene_enet_is_bufpool(ring->id)) {
                addr = ENET_CFGSSQMIFPRESET_ADDR;
-               data = BIT(val - 0x20);
+               data = BIT(xgene_enet_get_fpsel(ring->id));
        } else {
                addr = ENET_CFGSSQMIWQRESET_ADDR;
-               data = BIT(val);
+               data = BIT(xgene_enet_ring_bufnum(ring->id));
        }
 
        xgene_enet_wr_ring_if(pdata, addr, data);