• Thomas Petazzoni's avatar
    net: mvpp2: adjust the allocation/free of BM pools for PPv2.2 · d01524d8
    Thomas Petazzoni authored
    This commit adjusts the allocation and freeing of BM pools to support
    PPv2.2. This involves:
    
     - Checking that the number of buffer pointers is a multiple of 16, as
       required by the hardware.
    
     - Adjusting the size of the DMA coherent area allocated for buffer
       pointers. Indeed, PPv2.2 needs space for 2 pointers of 64-bits per
       buffer, as opposed to 2 pointers of 32-bits per buffer in
       PPv2.1. The size in bytes is now stored in a new field of the
       mvpp2_bm_pool structure.
    
     - On PPv2.2, getting the DMA address and cookie (used for the physical
       address) of each buffer requires reading the
       MVPP22_BM_ADDR_HIGH_ALLOC to get the high order bits of those
       addresses. A new utility function mvpp2_bm_bufs_get_addrs() is
       introduced to handle this.
    
     - On PPv2.2, releasing a buffer requires writing the high order 32 bits
       of the DMA address and cookie to MVPP22_BM_PHY_VIRT_HIGH_RLS_REG.
    Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    d01524d8
mvpp2.c 184 KB