From 2185d914ee565f064a8a579bf815edf54271b814 Mon Sep 17 00:00:00 2001 From: Sakethram Bommisetti Date: Wed, 9 Nov 2011 19:13:53 +0530 Subject: ux500:USB:Call is_compatible only in gadget mode DMA channel program is called both in host and device modes. We are checking is_compatible in channel program.is_compatible should be used only by the gadget mode. So removing is_compatible in channel program and keeping generic checks. ST-Ericsson Linux next: NA ST-Ericsson ID: 373086 ST-Ericsson FOSS-OUT ID: Trivial Change-Id: I9c4d8dcaa93dd46d035c9060eeb437c15950bff2 Signed-off-by: Sakethram Bommisetti Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/37188 Reviewed-by: QABUILD Reviewed-by: Srinidhi KASAGAR --- drivers/usb/musb/ux500_dma.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/usb/musb/ux500_dma.c b/drivers/usb/musb/ux500_dma.c index cb86beb8ec2..db657104292 100644 --- a/drivers/usb/musb/ux500_dma.c +++ b/drivers/usb/musb/ux500_dma.c @@ -36,7 +36,7 @@ #undef WARNING #undef INFO #include -#define U8500_USB_DMA_MIN_TRANSFER_SIZE 512 +#define Ux500_USB_DMA_MIN_TRANSFER_SIZE 512 struct ux500_dma_channel { struct dma_channel channel; @@ -218,7 +218,7 @@ static int ux500_dma_is_compatible(struct dma_channel *channel, struct usb_gadget *gadget = &musb->g; struct usb_composite_dev *cdev = get_gadget_data(gadget); - if (length < U8500_USB_DMA_MIN_TRANSFER_SIZE) + if (length < Ux500_USB_DMA_MIN_TRANSFER_SIZE) return 0; list_for_each_entry(f, &cdev->config->functions, list) { @@ -265,12 +265,15 @@ static int ux500_dma_channel_program(struct dma_channel *channel, dma_addr_t dma_addr, u32 len) { int ret; + struct ux500_dma_channel *ux500_dma_channel = channel->private_data; BUG_ON(channel->status == MUSB_DMA_STATUS_UNKNOWN || channel->status == MUSB_DMA_STATUS_BUSY); - if (!ux500_dma_is_compatible(channel, packet_sz, (void *)dma_addr, len)) - return false; + if (len < Ux500_USB_DMA_MIN_TRANSFER_SIZE) + return 0; + if (!ux500_dma_channel->is_tx && len < packet_sz) + return 0; channel->status = MUSB_DMA_STATUS_BUSY; channel->actual_len = 0; -- cgit v1.2.3