lkml.org 
[lkml]   [2018]   [Mar]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL for 4.9 019/219] net: mvpp2: set dma mask and coherent dma mask on PPv2.2
    Date
    From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

    [ Upstream commit 2067e0a13cfe0b1bdca7b91bc5e4f2740b07d478 ]

    On PPv2.2, the streaming mappings can be anywhere in the first 40 bits
    of the physical address space. However, for the coherent mappings, we
    still need them to be in the first 32 bits of the address space,
    because all BM pools share a single register to store the high 32 bits
    of the BM pool address, which means all BM pools must be allocated in
    the same 4GB memory area.

    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    ---
    drivers/net/ethernet/marvell/mvpp2.c | 14 ++++++++++++++
    1 file changed, 14 insertions(+)

    diff --git a/drivers/net/ethernet/marvell/mvpp2.c b/drivers/net/ethernet/marvell/mvpp2.c
    index 7e2ebfc565ee..28dcef283c69 100644
    --- a/drivers/net/ethernet/marvell/mvpp2.c
    +++ b/drivers/net/ethernet/marvell/mvpp2.c
    @@ -6420,6 +6420,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) {
    --
    2.14.1
    \
     
     \ /
      Last update: 2022-09-17 16:04    [W:4.040 / U:0.048 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site