lkml.org 
[lkml]   [2010]   [Feb]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: USB mass storage and ARM cache coherency
    On Tue, Feb 16, 2010 at 01:27:53PM +0530, Shilimkar, Santosh wrote:
    > Continuing on the USB issue w.r.t cache coherency, the usb host
    > code is violating the buffer ownership rules of streaming APIs from
    > dma and non-dma transfers point if view.
    >
    > We have a below temporary patch to get around the issue and probably it
    > needs to be fixed in the right way in the stack because some controllers
    > may not have PIO option even for control transfers. (e.g. Synopsis EHCI
    > controller)

    if (usb_endpoint_xfer_control(&urb->ep->desc)
    && !(urb->transfer_flags & URB_NO_SETUP_DMA_MAP)) {
    if (hcd->self.uses_dma) { <=================
    urb->setup_dma = dma_map_single(
    hcd->self.controller,
    urb->setup_packet,
    sizeof(struct usb_ctrlrequest),
    DMA_TO_DEVICE);

    struct usb_hcd *usb_create_hcd (const struct hc_driver *driver,
    struct device *dev, const char *bus_name)
    {
    ...
    hcd->self.uses_dma = (dev->dma_mask != NULL);

    Is it easier to make sure that PIO devices don't have dev->dma_mask set?


    \
     
     \ /
      Last update: 2010-02-16 09:47    [W:0.031 / U:0.336 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site