mirror of https://gitee.com/openkylin/linux.git
usb: host: tegra: code clean up
With this patch: 1. Renamed structure and function names to be more meaningful. 2. Removed unnecessary local variables. Signed-off-by: Venu Byravarasu <vbyravarasu@nvidia.com> Acked-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
259b83a387
commit
fe375774bd
|
@ -462,26 +462,23 @@ static int tegra_ehci_bus_resume(struct usb_hcd *hcd)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct temp_buffer {
|
struct dma_aligned_buffer {
|
||||||
void *kmalloc_ptr;
|
void *kmalloc_ptr;
|
||||||
void *old_xfer_buffer;
|
void *old_xfer_buffer;
|
||||||
u8 data[0];
|
u8 data[0];
|
||||||
};
|
};
|
||||||
|
|
||||||
static void free_temp_buffer(struct urb *urb)
|
static void free_dma_aligned_buffer(struct urb *urb)
|
||||||
{
|
{
|
||||||
enum dma_data_direction dir;
|
struct dma_aligned_buffer *temp;
|
||||||
struct temp_buffer *temp;
|
|
||||||
|
|
||||||
if (!(urb->transfer_flags & URB_ALIGNED_TEMP_BUFFER))
|
if (!(urb->transfer_flags & URB_ALIGNED_TEMP_BUFFER))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
dir = usb_urb_dir_in(urb) ? DMA_FROM_DEVICE : DMA_TO_DEVICE;
|
temp = container_of(urb->transfer_buffer,
|
||||||
|
struct dma_aligned_buffer, data);
|
||||||
|
|
||||||
temp = container_of(urb->transfer_buffer, struct temp_buffer,
|
if (usb_urb_dir_in(urb))
|
||||||
data);
|
|
||||||
|
|
||||||
if (dir == DMA_FROM_DEVICE)
|
|
||||||
memcpy(temp->old_xfer_buffer, temp->data,
|
memcpy(temp->old_xfer_buffer, temp->data,
|
||||||
urb->transfer_buffer_length);
|
urb->transfer_buffer_length);
|
||||||
urb->transfer_buffer = temp->old_xfer_buffer;
|
urb->transfer_buffer = temp->old_xfer_buffer;
|
||||||
|
@ -490,10 +487,9 @@ static void free_temp_buffer(struct urb *urb)
|
||||||
urb->transfer_flags &= ~URB_ALIGNED_TEMP_BUFFER;
|
urb->transfer_flags &= ~URB_ALIGNED_TEMP_BUFFER;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int alloc_temp_buffer(struct urb *urb, gfp_t mem_flags)
|
static int alloc_dma_aligned_buffer(struct urb *urb, gfp_t mem_flags)
|
||||||
{
|
{
|
||||||
enum dma_data_direction dir;
|
struct dma_aligned_buffer *temp, *kmalloc_ptr;
|
||||||
struct temp_buffer *temp, *kmalloc_ptr;
|
|
||||||
size_t kmalloc_size;
|
size_t kmalloc_size;
|
||||||
|
|
||||||
if (urb->num_sgs || urb->sg ||
|
if (urb->num_sgs || urb->sg ||
|
||||||
|
@ -501,22 +497,19 @@ static int alloc_temp_buffer(struct urb *urb, gfp_t mem_flags)
|
||||||
!((uintptr_t)urb->transfer_buffer & (TEGRA_USB_DMA_ALIGN - 1)))
|
!((uintptr_t)urb->transfer_buffer & (TEGRA_USB_DMA_ALIGN - 1)))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
dir = usb_urb_dir_in(urb) ? DMA_FROM_DEVICE : DMA_TO_DEVICE;
|
|
||||||
|
|
||||||
/* Allocate a buffer with enough padding for alignment */
|
/* Allocate a buffer with enough padding for alignment */
|
||||||
kmalloc_size = urb->transfer_buffer_length +
|
kmalloc_size = urb->transfer_buffer_length +
|
||||||
sizeof(struct temp_buffer) + TEGRA_USB_DMA_ALIGN - 1;
|
sizeof(struct dma_aligned_buffer) + TEGRA_USB_DMA_ALIGN - 1;
|
||||||
|
|
||||||
kmalloc_ptr = kmalloc(kmalloc_size, mem_flags);
|
kmalloc_ptr = kmalloc(kmalloc_size, mem_flags);
|
||||||
if (!kmalloc_ptr)
|
if (!kmalloc_ptr)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
/* Position our struct temp_buffer such that data is aligned */
|
/* Position our struct dma_aligned_buffer such that data is aligned */
|
||||||
temp = PTR_ALIGN(kmalloc_ptr + 1, TEGRA_USB_DMA_ALIGN) - 1;
|
temp = PTR_ALIGN(kmalloc_ptr + 1, TEGRA_USB_DMA_ALIGN) - 1;
|
||||||
|
|
||||||
temp->kmalloc_ptr = kmalloc_ptr;
|
temp->kmalloc_ptr = kmalloc_ptr;
|
||||||
temp->old_xfer_buffer = urb->transfer_buffer;
|
temp->old_xfer_buffer = urb->transfer_buffer;
|
||||||
if (dir == DMA_TO_DEVICE)
|
if (usb_urb_dir_out(urb))
|
||||||
memcpy(temp->data, urb->transfer_buffer,
|
memcpy(temp->data, urb->transfer_buffer,
|
||||||
urb->transfer_buffer_length);
|
urb->transfer_buffer_length);
|
||||||
urb->transfer_buffer = temp->data;
|
urb->transfer_buffer = temp->data;
|
||||||
|
@ -531,13 +524,13 @@ static int tegra_ehci_map_urb_for_dma(struct usb_hcd *hcd, struct urb *urb,
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = alloc_temp_buffer(urb, mem_flags);
|
ret = alloc_dma_aligned_buffer(urb, mem_flags);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
ret = usb_hcd_map_urb_for_dma(hcd, urb, mem_flags);
|
ret = usb_hcd_map_urb_for_dma(hcd, urb, mem_flags);
|
||||||
if (ret)
|
if (ret)
|
||||||
free_temp_buffer(urb);
|
free_dma_aligned_buffer(urb);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -545,7 +538,7 @@ static int tegra_ehci_map_urb_for_dma(struct usb_hcd *hcd, struct urb *urb,
|
||||||
static void tegra_ehci_unmap_urb_for_dma(struct usb_hcd *hcd, struct urb *urb)
|
static void tegra_ehci_unmap_urb_for_dma(struct usb_hcd *hcd, struct urb *urb)
|
||||||
{
|
{
|
||||||
usb_hcd_unmap_urb_for_dma(hcd, urb);
|
usb_hcd_unmap_urb_for_dma(hcd, urb);
|
||||||
free_temp_buffer(urb);
|
free_dma_aligned_buffer(urb);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct hc_driver tegra_ehci_hc_driver = {
|
static const struct hc_driver tegra_ehci_hc_driver = {
|
||||||
|
|
Loading…
Reference in New Issue