lkml.org 
[lkml]   [2008]   [Oct]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 44/49] Staging: poch: Fine grained locking
    Date
    From: vijaykumar@bravegnu.org <vijaykumar@bravegnu.org>

    Lock only the portion of code that does register access.

    Signed-off-by: Vijay Kumar <vijaykumar@bravegnu.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
    ---
    drivers/staging/poch/poch.c | 7 +++++--
    1 files changed, 5 insertions(+), 2 deletions(-)

    diff --git a/drivers/staging/poch/poch.c b/drivers/staging/poch/poch.c
    index 3ecbd7c..1f14792 100644
    --- a/drivers/staging/poch/poch.c
    +++ b/drivers/staging/poch/poch.c
    @@ -485,27 +485,30 @@ static void channel_dma_init(struct channel_info *channel)
    /* The DMA address page register is shared between the RX and
    * TX channels, so acquire lock.
    */
    - spin_lock(channel->iomem_lock);
    for (i = 0; i < channel->group_count; i++) {
    page = i / 32;
    group_in_page = i % 32;

    group_reg = group_regs_base + (group_in_page * 4);

    + spin_lock(channel->iomem_lock);
    iowrite32(page, fpga + FPGA_DMA_ADR_PAGE_REG);
    iowrite32(channel->groups[i].dma_addr, fpga + group_reg);
    + spin_unlock(channel->iomem_lock);
    }
    +
    for (i = 0; i < channel->group_count; i++) {
    page = i / 32;
    group_in_page = i % 32;

    group_reg = group_regs_base + (group_in_page * 4);

    + spin_lock(channel->iomem_lock);
    iowrite32(page, fpga + FPGA_DMA_ADR_PAGE_REG);
    printk(KERN_INFO PFX "%ld: read dma_addr: 0x%x\n", i,
    ioread32(fpga + group_reg));
    + spin_unlock(channel->iomem_lock);
    }
    - spin_unlock(channel->iomem_lock);

    }

    --
    1.6.0.2


    \
     
     \ /
      Last update: 2008-10-30 00:03    [W:4.299 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site