|
@@ -6941,6 +6941,20 @@ static int mvpp2_probe(struct platform_device *pdev)
|
|
|
/* Get system's tclk rate */
|
|
|
priv->tclk = clk_get_rate(priv->pp_clk);
|
|
|
|
|
|
+ if (priv->hw_version == MVPP22) {
|
|
|
+ err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(40));
|
|
|
+ if (err)
|
|
|
+ goto err_mg_clk;
|
|
|
+ /* Sadly, the BM pools all share the same register to
|
|
|
+ * store the high 32 bits of their address. So they
|
|
|
+ * must all have the same high 32 bits, which forces
|
|
|
+ * us to restrict coherent memory to DMA_BIT_MASK(32).
|
|
|
+ */
|
|
|
+ err = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32));
|
|
|
+ if (err)
|
|
|
+ goto err_mg_clk;
|
|
|
+ }
|
|
|
+
|
|
|
/* Initialize network controller */
|
|
|
err = mvpp2_init(pdev, priv);
|
|
|
if (err < 0) {
|