|
@@ -519,6 +519,7 @@ void xgbe_get_all_hw_features(struct xgbe_prv_data *pdata)
|
|
RXFIFOSIZE);
|
|
RXFIFOSIZE);
|
|
hw_feat->tx_fifo_size = XGMAC_GET_BITS(mac_hfr1, MAC_HWF1R,
|
|
hw_feat->tx_fifo_size = XGMAC_GET_BITS(mac_hfr1, MAC_HWF1R,
|
|
TXFIFOSIZE);
|
|
TXFIFOSIZE);
|
|
|
|
+ hw_feat->dma_width = XGMAC_GET_BITS(mac_hfr1, MAC_HWF1R, ADDR64);
|
|
hw_feat->dcb = XGMAC_GET_BITS(mac_hfr1, MAC_HWF1R, DCBEN);
|
|
hw_feat->dcb = XGMAC_GET_BITS(mac_hfr1, MAC_HWF1R, DCBEN);
|
|
hw_feat->sph = XGMAC_GET_BITS(mac_hfr1, MAC_HWF1R, SPHEN);
|
|
hw_feat->sph = XGMAC_GET_BITS(mac_hfr1, MAC_HWF1R, SPHEN);
|
|
hw_feat->tso = XGMAC_GET_BITS(mac_hfr1, MAC_HWF1R, TSOEN);
|
|
hw_feat->tso = XGMAC_GET_BITS(mac_hfr1, MAC_HWF1R, TSOEN);
|
|
@@ -553,6 +554,21 @@ void xgbe_get_all_hw_features(struct xgbe_prv_data *pdata)
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /* Translate the address width setting into actual number */
|
|
|
|
+ switch (hw_feat->dma_width) {
|
|
|
|
+ case 0:
|
|
|
|
+ hw_feat->dma_width = 32;
|
|
|
|
+ break;
|
|
|
|
+ case 1:
|
|
|
|
+ hw_feat->dma_width = 40;
|
|
|
|
+ break;
|
|
|
|
+ case 2:
|
|
|
|
+ hw_feat->dma_width = 48;
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ hw_feat->dma_width = 32;
|
|
|
|
+ }
|
|
|
|
+
|
|
/* The Queue, Channel and TC counts are zero based so increment them
|
|
/* The Queue, Channel and TC counts are zero based so increment them
|
|
* to get the actual number
|
|
* to get the actual number
|
|
*/
|
|
*/
|