1. 06 Jul, 2011 1 commit
  2. 05 Jul, 2011 1 commit
    • Holger Brunck's avatar
      spi/fsl_spi: fix CPM spi driver · fb644095
      Holger Brunck authored
      This patch fixes the freescale spi driver for CPM. Without this
      patch SPI on CPM failed because cpm_muram_alloc_fixed tries to
      allocate muram in an preserved area. The error reported was:
      
      mpc8xxx_spi f0011a80.spi: can't allocate spi parameter ram
      mpc8xxx_spi: probe of f0011a80.spi failed with error -12
      
      Now the driver uses of_iomap to get access to this area
      similar to i2c driver driver in the i2c-cpm.c which has a
      similar device tree node. This is tested on a MPC8247 with CPM2.
      Signed-off-by: default avatarHolger Brunck <holger.brunck@keymile.com>
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      fb644095
  3. 04 Jul, 2011 5 commits
  4. 19 Jun, 2011 1 commit
  5. 17 Jun, 2011 6 commits
  6. 16 Jun, 2011 3 commits
  7. 15 Jun, 2011 1 commit
  8. 13 Jun, 2011 10 commits
  9. 12 Jun, 2011 8 commits
  10. 11 Jun, 2011 4 commits
    • Mika Westerberg's avatar
      net: ep93xx_eth: fix DMA API violations · f1c089e3
      Mika Westerberg authored
      Russell King said:
      >
      > So, to summarize what its doing:
      >
      > 1. It allocates buffers for rx and tx.
      > 2. It maps them with dma_map_single().
      >       This transfers ownership of the buffer to the DMA device.
      > 3. In ep93xx_xmit,
      > 3a. It copies the data into the buffer with skb_copy_and_csum_dev()
      >       This violates the DMA buffer ownership rules - the CPU should
      >       not be writing to this buffer while it is (in principle) owned
      >       by the DMA device.
      > 3b. It then calls dma_sync_single_for_cpu() for the buffer.
      >       This transfers ownership of the buffer to the CPU, which surely
      >       is the wrong direction.
      > 4. In ep93xx_rx,
      > 4a. It calls dma_sync_single_for_cpu() for the buffer.
      >       This at least transfers the DMA buffer ownership to the CPU
      >       before the CPU reads the buffer
      > 4b. It then uses skb_copy_to_linear_data() to copy the data out.
      >       At no point does it transfer ownership back to the DMA device.
      > 5. When the driver is removed, it dma_unmap_single()'s the buffer.
      >       This transfers ownership of the buffer to the CPU.
      > 6. It frees the buffer.
      >
      > While it may work on ep93xx, it's not respecting the DMA API rules,
      > and with DMA debugging enabled it will probably encounter quite a few
      > warnings.
      
      This patch fixes these violations.
      Signed-off-by: default avatarMika Westerberg <mika.westerberg@iki.fi>
      Acked-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      Acked-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
      Tested-by: default avatarPetr Stetiar <ynezz@true.cz>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f1c089e3
    • Mika Westerberg's avatar
      net: ep93xx_eth: drop GFP_DMA from call to dma_alloc_coherent() · 1f758a43
      Mika Westerberg authored
      Commit a197b59a (mm: fail GFP_DMA allocations when ZONE_DMA is not
      configured) made page allocator to return NULL if GFP_DMA is set but
      CONFIG_ZONE_DMA is disabled.
      
      This causes ep93xx_eth to fail:
      
       WARNING: at mm/page_alloc.c:2251 __alloc_pages_nodemask+0x11c/0x638()
       Modules linked in:
       [<c0035498>] (unwind_backtrace+0x0/0xf4) from [<c0043da4>] (warn_slowpath_common+0x48/0x60)
       [<c0043da4>] (warn_slowpath_common+0x48/0x60) from [<c0043dd8>] (warn_slowpath_null+0x1c/0x24)
       [<c0043dd8>] (warn_slowpath_null+0x1c/0x24) from [<c0083b6c>] (__alloc_pages_nodemask+0x11c/0x638)
       [<c0083b6c>] (__alloc_pages_nodemask+0x11c/0x638) from [<c00366fc>] (__dma_alloc+0x8c/0x3ec)
       [<c00366fc>] (__dma_alloc+0x8c/0x3ec) from [<c0036adc>] (dma_alloc_coherent+0x54/0x60)
       [<c0036adc>] (dma_alloc_coherent+0x54/0x60) from [<c0227808>] (ep93xx_open+0x20/0x864)
       [<c0227808>] (ep93xx_open+0x20/0x864) from [<c0283144>] (__dev_open+0xb8/0x108)
       [<c0283144>] (__dev_open+0xb8/0x108) from [<c0280528>] (__dev_change_flags+0x70/0x128)
       [<c0280528>] (__dev_change_flags+0x70/0x128) from [<c0283054>] (dev_change_flags+0x10/0x48)
       [<c0283054>] (dev_change_flags+0x10/0x48) from [<c001a720>] (ip_auto_config+0x190/0xf68)
       [<c001a720>] (ip_auto_config+0x190/0xf68) from [<c00233b0>] (do_one_initcall+0x34/0x18c)
       [<c00233b0>] (do_one_initcall+0x34/0x18c) from [<c0008400>] (kernel_init+0x94/0x134)
       [<c0008400>] (kernel_init+0x94/0x134) from [<c0030858>] (kernel_thread_exit+0x0/0x8)
      
      Since there is no restrictions for DMA on ep93xx, we can fix this by just
      removing the GFP_DMA flag from the call.
      Signed-off-by: default avatarMika Westerberg <mika.westerberg@iki.fi>
      Acked-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      Acked-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
      Tested-by: default avatarPetr Stetiar <ynezz@true.cz>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1f758a43
    • Mika Westerberg's avatar
      net: ep93xx_eth: allocate buffers using kmalloc() · 3247a1fc
      Mika Westerberg authored
      We can use simply kmalloc() to allocate the buffers. This also simplifies the
      code and allows us to perform DMA sync operations more easily.
      
      Memory is allocated with only GFP_KERNEL since there are no DMA allocation
      restrictions on this platform.
      Signed-off-by: default avatarMika Westerberg <mika.westerberg@iki.fi>
      Acked-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      Acked-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
      Tested-by: default avatarPetr Stetiar <ynezz@true.cz>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3247a1fc
    • Mika Westerberg's avatar
      net: ep93xx_eth: pass struct device to DMA API functions · fc9b4910
      Mika Westerberg authored
      We shouldn't use NULL for any DMA API functions, unless we are dealing with
      ISA or EISA device. So pass correct struct dev pointer to these functions.
      Signed-off-by: default avatarMika Westerberg <mika.westerberg@iki.fi>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      fc9b4910