summaryrefslogtreecommitdiffstats
path: root/drivers/usb/gadget/mv_udc_core.c
diff options
context:
space:
mode:
authorXenia Ragiadakou <burzalodowa@gmail.com>2013-08-14 05:55:19 +0300
committerSarah Sharp <sarah.a.sharp@linux.intel.com>2013-08-13 21:16:42 -0700
commitc10cf1189d7659ffd7dbe488a4cee7ec0dcdd9c6 (patch)
treeeec5cbbdb43a74e0b74675732346a2dd2dc70fcb /drivers/usb/gadget/mv_udc_core.c
parent68ffb01111500c769ceac055bdc2fb000322b2d7 (diff)
downloadblackbird-obmc-linux-c10cf1189d7659ffd7dbe488a4cee7ec0dcdd9c6.tar.gz
blackbird-obmc-linux-c10cf1189d7659ffd7dbe488a4cee7ec0dcdd9c6.zip
xhci: fix dma mask setup in xhci.c
The function dma_set_mask() tests internally whether the dma_mask pointer for the device is initialized and fails if the dma_mask pointer is NULL. On pci platforms, the device dma_mask pointer is initialized, when pci devices are enumerated, to point to the pci_dev->dma_mask which is 0xffffffff. However, for non-pci platforms, the dma_mask pointer may not be initialized and in that case dma_set_mask() will fail. This patch initializes the dma_mask and the coherent_dma_mask to 32bits in xhci_plat_probe(), before the call to usb_create_hcd() that sets the "uses_dma" flag for the usb bus and the call to usb_add_hcd() that creates coherent dma pools for the usb hcd. Moreover, a call to dma_set_mask() does not set the device coherent_dma_mask. Since the xhci-hcd driver calls dma_alloc_coherent() and dma_pool_alloc() to allocate consistent DMA memory blocks, the coherent DMA address mask has to be set explicitly. This patch sets the coherent_dma_mask to 64bits in xhci_gen_setup() when the xHC is capable for 64-bit DMA addressing. If dma_set_mask() succeeds, for a given bitmask, it is guaranteed that the given bitmask is also supported for consistent DMA mappings. Other changes introduced in this patch are: - The return value of dma_set_mask() is checked to ensure that the required dma bitmask conforms with the host system's addressing capabilities. - The dma_mask setup code for the non-primary hcd was removed since both primary and non-primary hcd refer to the same generic device whose dma_mask and coherent_dma_mask are already set during the setup of the primary hcd. - The code for reading the HCCPARAMS register to find out the addressing capabilities of xHC was removed since its value is already cached in xhci->hccparams. - hcd->self.controller was replaced with the dev variable since it is already available. Signed-off-by: Xenia Ragiadakou <burzalodowa@gmail.com> Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Diffstat (limited to 'drivers/usb/gadget/mv_udc_core.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud