diff mbox

[U-Boot,v2] musb: Move linux and usb compat files to include/linux/usb

Message ID 1371150441-3470-1-git-send-email-dmurphy@ti.com
State Changes Requested
Delegated to: Marek Vasut
Headers show

Commit Message

Dan Murphy June 13, 2013, 7:07 p.m. UTC
Move the linux and usb compat files to the
include/linux/usb directory in order for the files to be
reused.

Added GPLv2 license to the linux and usb compat as well.

Signed-off-by: Dan Murphy <dmurphy@ti.com>
---
v2 - Fix checkpatch issues only for newly introduced code - http://patchwork.ozlabs.org/patch/251127/

 drivers/usb/musb-new/linux-compat.h    |  114 --------------------------
 drivers/usb/musb-new/musb_core.c       |    4 +-
 drivers/usb/musb-new/musb_dsps.c       |    2 +-
 drivers/usb/musb-new/musb_gadget.c     |    2 +-
 drivers/usb/musb-new/musb_gadget_ep0.c |    2 +-
 drivers/usb/musb-new/musb_host.c       |    4 +-
 drivers/usb/musb-new/musb_host.h       |    2 +-
 drivers/usb/musb-new/musb_uboot.c      |    4 +-
 drivers/usb/musb-new/usb-compat.h      |   88 --------------------
 include/linux/usb/linux-compat.h       |  136 ++++++++++++++++++++++++++++++++
 include/linux/usb/usb-compat.h         |  110 ++++++++++++++++++++++++++
 11 files changed, 256 insertions(+), 212 deletions(-)
 delete mode 100644 drivers/usb/musb-new/linux-compat.h
 delete mode 100644 drivers/usb/musb-new/usb-compat.h
 create mode 100644 include/linux/usb/linux-compat.h
 create mode 100644 include/linux/usb/usb-compat.h

Comments

Dan Murphy June 19, 2013, 12:08 p.m. UTC | #1
+ Marek
and a bump
On 06/13/2013 02:07 PM, Dan Murphy wrote:
> Move the linux and usb compat files to the
> include/linux/usb directory in order for the files to be
> reused.
>
> Added GPLv2 license to the linux and usb compat as well.
>
> Signed-off-by: Dan Murphy <dmurphy@ti.com>
> ---
> v2 - Fix checkpatch issues only for newly introduced code - http://patchwork.ozlabs.org/patch/251127/
>
>  drivers/usb/musb-new/linux-compat.h    |  114 --------------------------
>  drivers/usb/musb-new/musb_core.c       |    4 +-
>  drivers/usb/musb-new/musb_dsps.c       |    2 +-
>  drivers/usb/musb-new/musb_gadget.c     |    2 +-
>  drivers/usb/musb-new/musb_gadget_ep0.c |    2 +-
>  drivers/usb/musb-new/musb_host.c       |    4 +-
>  drivers/usb/musb-new/musb_host.h       |    2 +-
>  drivers/usb/musb-new/musb_uboot.c      |    4 +-
>  drivers/usb/musb-new/usb-compat.h      |   88 --------------------
>  include/linux/usb/linux-compat.h       |  136 ++++++++++++++++++++++++++++++++
>  include/linux/usb/usb-compat.h         |  110 ++++++++++++++++++++++++++
>  11 files changed, 256 insertions(+), 212 deletions(-)
>  delete mode 100644 drivers/usb/musb-new/linux-compat.h
>  delete mode 100644 drivers/usb/musb-new/usb-compat.h
>  create mode 100644 include/linux/usb/linux-compat.h
>  create mode 100644 include/linux/usb/usb-compat.h
>
> diff --git a/drivers/usb/musb-new/linux-compat.h b/drivers/usb/musb-new/linux-compat.h
> deleted file mode 100644
> index 72c8c2b..0000000
> --- a/drivers/usb/musb-new/linux-compat.h
> +++ /dev/null
> @@ -1,114 +0,0 @@
> -#ifndef __LINUX_COMPAT_H__
> -#define __LINUX_COMPAT_H__
> -
> -#include <malloc.h>
> -#include <linux/list.h>
> -#include <linux/compat.h>
> -
> -#define __init
> -#define __devinit
> -#define __devinitdata
> -#define __devinitconst
> -#define __iomem
> -#define __deprecated
> -
> -struct unused {};
> -typedef struct unused unused_t;
> -
> -typedef int irqreturn_t;
> -typedef unused_t spinlock_t;
> -
> -struct work_struct {};
> -
> -struct timer_list {};
> -struct notifier_block {};
> -
> -typedef unsigned long dmaaddr_t;
> -
> -#define spin_lock_init(lock) do {} while (0)
> -#define spin_lock(lock) do {} while (0)
> -#define spin_unlock(lock) do {} while (0)
> -#define spin_lock_irqsave(lock, flags) do {} while (0)
> -#define spin_unlock_irqrestore(lock, flags) do {} while (0)
> -
> -#define setup_timer(timer, func, data) do {} while (0)
> -#define del_timer_sync(timer) do {} while (0)
> -#define schedule_work(work) do {} while (0)
> -#define INIT_WORK(work, fun) do {} while (0)
> -
> -#define cpu_relax() do {} while (0)
> -
> -#define pr_debug(fmt, args...) debug(fmt, ##args)
> -#define dev_dbg(dev, fmt, args...)		\
> -	debug(fmt, ##args)
> -#define dev_vdbg(dev, fmt, args...)		\
> -	debug(fmt, ##args)
> -#define dev_info(dev, fmt, args...)		\
> -	printf(fmt, ##args)
> -#define dev_err(dev, fmt, args...)		\
> -	printf(fmt, ##args)
> -#define printk printf
> -
> -#define WARN(condition, fmt, args...) ({	\
> -	int ret_warn = !!condition;		\
> -	if (ret_warn)				\
> -		printf(fmt, ##args);		\
> -	ret_warn; })
> -
> -#define KERN_DEBUG
> -#define KERN_NOTICE
> -#define KERN_WARNING
> -#define KERN_ERR
> -
> -#define kfree(ptr) free(ptr)
> -
> -#define pm_runtime_get_sync(dev) do {} while (0)
> -#define pm_runtime_put(dev) do {} while (0)
> -#define pm_runtime_put_sync(dev) do {} while (0)
> -#define pm_runtime_use_autosuspend(dev) do {} while (0)
> -#define pm_runtime_set_autosuspend_delay(dev, delay) do {} while (0)
> -#define pm_runtime_enable(dev) do {} while (0)
> -
> -#define MODULE_DESCRIPTION(desc)
> -#define MODULE_AUTHOR(author)
> -#define MODULE_LICENSE(license)
> -#define MODULE_ALIAS(alias)
> -#define module_param(name, type, perm)
> -#define MODULE_PARM_DESC(name, desc)
> -#define EXPORT_SYMBOL_GPL(name)
> -
> -#define writesl(a, d, s) __raw_writesl((unsigned long)a, d, s)
> -#define readsl(a, d, s) __raw_readsl((unsigned long)a, d, s)
> -#define writesw(a, d, s) __raw_writesw((unsigned long)a, d, s)
> -#define readsw(a, d, s) __raw_readsw((unsigned long)a, d, s)
> -#define writesb(a, d, s) __raw_writesb((unsigned long)a, d, s)
> -#define readsb(a, d, s) __raw_readsb((unsigned long)a, d, s)
> -
> -#define IRQ_NONE 0
> -#define IRQ_HANDLED 0
> -
> -#define dev_set_drvdata(dev, data) do {} while (0)
> -
> -#define disable_irq_wake(irq) do {} while (0)
> -#define enable_irq_wake(irq) -EINVAL
> -#define free_irq(irq, data) do {} while (0)
> -#define request_irq(nr, f, flags, nm, data) 0
> -
> -#define device_init_wakeup(dev, a) do {} while (0)
> -
> -#define platform_data device_data
> -
> -#ifndef wmb
> -#define wmb()			asm volatile (""   : : : "memory")
> -#endif
> -
> -#define msleep(a)	udelay(a * 1000)
> -
> -/*
> - * Map U-Boot config options to Linux ones
> - */
> -#ifdef CONFIG_OMAP34XX
> -#define CONFIG_SOC_OMAP3430
> -#endif
> -
> -#endif /* __LINUX_COMPAT_H__ */
> diff --git a/drivers/usb/musb-new/musb_core.c b/drivers/usb/musb-new/musb_core.c
> index da93571..2cb3181 100644
> --- a/drivers/usb/musb-new/musb_core.c
> +++ b/drivers/usb/musb-new/musb_core.c
> @@ -109,8 +109,8 @@
>  #include <linux/usb/gadget.h>
>  #include <linux/usb/musb.h>
>  #include <asm/io.h>
> -#include "linux-compat.h"
> -#include "usb-compat.h"
> +#include <linux/usb/linux-compat.h>
> +#include <linux/usb/usb-compat.h>
>  #endif
>  
>  #include "musb_core.h"
> diff --git a/drivers/usb/musb-new/musb_dsps.c b/drivers/usb/musb-new/musb_dsps.c
> index 9a03917..aa5f8aa 100644
> --- a/drivers/usb/musb-new/musb_dsps.c
> +++ b/drivers/usb/musb-new/musb_dsps.c
> @@ -47,7 +47,7 @@
>  #else
>  #include <common.h>
>  #include <asm/omap_musb.h>
> -#include "linux-compat.h"
> +#include <linux/usb/linux-compat.h>
>  #endif
>  
>  #include "musb_core.h"
> diff --git a/drivers/usb/musb-new/musb_gadget.c b/drivers/usb/musb-new/musb_gadget.c
> index d2cb91a..0186b57 100644
> --- a/drivers/usb/musb-new/musb_gadget.c
> +++ b/drivers/usb/musb-new/musb_gadget.c
> @@ -47,7 +47,7 @@
>  #else
>  #include <common.h>
>  #include <linux/usb/ch9.h>
> -#include "linux-compat.h"
> +#include <linux/usb/linux-compat.h>
>  #endif
>  
>  #include "musb_core.h"
> diff --git a/drivers/usb/musb-new/musb_gadget_ep0.c b/drivers/usb/musb-new/musb_gadget_ep0.c
> index 6599d38..bbc67b0 100644
> --- a/drivers/usb/musb-new/musb_gadget_ep0.c
> +++ b/drivers/usb/musb-new/musb_gadget_ep0.c
> @@ -43,7 +43,7 @@
>  #include <linux/interrupt.h>
>  #else
>  #include <common.h>
> -#include "linux-compat.h"
> +#include <linux/usb/linux-compat.h>
>  #endif
>  
>  #include "musb_core.h"
> diff --git a/drivers/usb/musb-new/musb_host.c b/drivers/usb/musb-new/musb_host.c
> index 9a2cf59..7bc19bf 100644
> --- a/drivers/usb/musb-new/musb_host.c
> +++ b/drivers/usb/musb-new/musb_host.c
> @@ -47,8 +47,8 @@
>  #else
>  #include <common.h>
>  #include <usb.h>
> -#include "linux-compat.h"
> -#include "usb-compat.h"
> +#include <linux/usb/linux-compat.h>
> +#include <linux/usb/usb-compat.h>
>  #endif
>  
>  #include "musb_core.h"
> diff --git a/drivers/usb/musb-new/musb_host.h b/drivers/usb/musb-new/musb_host.h
> index ebebe0c..1be9206 100644
> --- a/drivers/usb/musb-new/musb_host.h
> +++ b/drivers/usb/musb-new/musb_host.h
> @@ -35,7 +35,7 @@
>  #ifndef _MUSB_HOST_H
>  #define _MUSB_HOST_H
>  #ifdef __UBOOT__
> -#include "usb-compat.h"
> +#include <linux/usb/usb-compat.h>
>  #endif
>  
>  static inline struct usb_hcd *musb_to_hcd(struct musb *musb)
> diff --git a/drivers/usb/musb-new/musb_uboot.c b/drivers/usb/musb-new/musb_uboot.c
> index 15d2ec0..bebf4c6 100644
> --- a/drivers/usb/musb-new/musb_uboot.c
> +++ b/drivers/usb/musb-new/musb_uboot.c
> @@ -5,8 +5,8 @@
>  
>  #define __UBOOT__
>  #include <usb.h>
> -#include "linux-compat.h"
> -#include "usb-compat.h"
> +#include <linux/usb/linux-compat.h>
> +#include <linux/usb/usb-compat.h>
>  #include "musb_core.h"
>  #include "musb_host.h"
>  #include "musb_gadget.h"
> diff --git a/drivers/usb/musb-new/usb-compat.h b/drivers/usb/musb-new/usb-compat.h
> deleted file mode 100644
> index 27f656f..0000000
> --- a/drivers/usb/musb-new/usb-compat.h
> +++ /dev/null
> @@ -1,88 +0,0 @@
> -#ifndef __USB_COMPAT_H__
> -#define __USB_COMPAT_H__
> -
> -#include "usb.h"
> -
> -struct usb_hcd {
> -	void *hcd_priv;
> -};
> -
> -struct usb_host_endpoint {
> -	struct usb_endpoint_descriptor		desc;
> -	struct list_head urb_list;
> -	void *hcpriv;
> -};
> -
> -/*
> - * urb->transfer_flags:
> - *
> - * Note: URB_DIR_IN/OUT is automatically set in usb_submit_urb().
> - */
> -#define URB_SHORT_NOT_OK	0x0001	/* report short reads as errors */
> -#define URB_ZERO_PACKET		0x0040	/* Finish bulk OUT with short packet */
> -
> -struct urb;
> -
> -typedef void (*usb_complete_t)(struct urb *);
> -
> -struct urb {
> -	void *hcpriv;			/* private data for host controller */
> -	struct list_head urb_list;	/* list head for use by the urb's
> -					 * current owner */
> -	struct usb_device *dev;		/* (in) pointer to associated device */
> -	struct usb_host_endpoint *ep;	/* (internal) pointer to endpoint */
> -	unsigned int pipe;		/* (in) pipe information */
> -	int status;			/* (return) non-ISO status */
> -	unsigned int transfer_flags;	/* (in) URB_SHORT_NOT_OK | ...*/
> -	void *transfer_buffer;		/* (in) associated data buffer */
> -	dma_addr_t transfer_dma;	/* (in) dma addr for transfer_buffer */
> -	u32 transfer_buffer_length;	/* (in) data buffer length */
> -	u32 actual_length;		/* (return) actual transfer length */
> -	unsigned char *setup_packet;	/* (in) setup packet (control only) */
> -	int start_frame;		/* (modify) start frame (ISO) */
> -	usb_complete_t complete;	/* (in) completion routine */
> -};
> -
> -#define usb_hcd_link_urb_to_ep(hcd, urb)	({		\
> -	int ret = 0;						\
> -	list_add_tail(&urb->urb_list, &urb->ep->urb_list);	\
> -	ret; })
> -#define usb_hcd_unlink_urb_from_ep(hcd, urb)	list_del_init(&urb->urb_list)
> -
> -static inline void usb_hcd_giveback_urb(struct usb_hcd *hcd,
> -					struct urb *urb,
> -					int status)
> -{
> -	urb->status = status;
> -	if (urb->complete)
> -		urb->complete(urb);
> -}
> -
> -static inline int usb_hcd_unmap_urb_for_dma(struct usb_hcd *hcd,
> -					struct urb *urb)
> -{
> -	/* TODO: add cache invalidation here */
> -	return 0;
> -}
> -
> -static inline u16 find_tt(struct usb_device *dev)
> -{
> -	u8 chid;
> -	u8 hub;
> -
> -	/* Find out the nearest parent which is high speed */
> -	while (dev->parent->parent != NULL)
> -		if (dev->parent->speed != USB_SPEED_HIGH)
> -			dev = dev->parent;
> -		else
> -			break;
> -
> -	/* determine the port address at that hub */
> -	hub = dev->parent->devnum;
> -	for (chid = 0; chid < USB_MAXCHILDREN; chid++)
> -		if (dev->parent->children[chid] == dev)
> -			break;
> -
> -	return (hub << 8) | chid;
> -}
> -#endif /* __USB_COMPAT_H__ */
> diff --git a/include/linux/usb/linux-compat.h b/include/linux/usb/linux-compat.h
> new file mode 100644
> index 0000000..a93dec7
> --- /dev/null
> +++ b/include/linux/usb/linux-compat.h
> @@ -0,0 +1,136 @@
> +/*
> + * linux_compat.h -- linux compatibility header file
> + *
> + * Copyright (C) 2012-2013
> + * Texas Instruments Incorporated.
> + * Cogent Embedded.
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License as published by
> + * the Free Software Foundation; either version 2 of the License, or
> + * (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
> + */
> +
> +#ifndef __LINUX_COMPAT_H__
> +#define __LINUX_COMPAT_H__
> +
> +#include <malloc.h>
> +#include <linux/list.h>
> +#include <linux/compat.h>
> +
> +#define __init
> +#define __devinit
> +#define __devinitdata
> +#define __devinitconst
> +#define __iomem
> +#define __deprecated
> +
> +struct unused {};
> +typedef struct unused unused_t;
> +
> +typedef int irqreturn_t;
> +typedef unused_t spinlock_t;
> +
> +struct work_struct {};
> +
> +struct timer_list {};
> +struct notifier_block {};
> +
> +typedef unsigned long dmaaddr_t;
> +
> +#define spin_lock_init(lock) do {} while (0)
> +#define spin_lock(lock) do {} while (0)
> +#define spin_unlock(lock) do {} while (0)
> +#define spin_lock_irqsave(lock, flags) do {} while (0)
> +#define spin_unlock_irqrestore(lock, flags) do {} while (0)
> +
> +#define setup_timer(timer, func, data) do {} while (0)
> +#define del_timer_sync(timer) do {} while (0)
> +#define schedule_work(work) do {} while (0)
> +#define INIT_WORK(work, fun) do {} while (0)
> +
> +#define cpu_relax() do {} while (0)
> +
> +#define pr_debug(fmt, args...) debug(fmt, ##args)
> +#define dev_dbg(dev, fmt, args...)		\
> +	debug(fmt, ##args)
> +#define dev_vdbg(dev, fmt, args...)		\
> +	debug(fmt, ##args)
> +#define dev_info(dev, fmt, args...)		\
> +	printf(fmt, ##args)
> +#define dev_err(dev, fmt, args...)		\
> +	printf(fmt, ##args)
> +#define printk printf
> +
> +#define WARN(condition, fmt, args...) ({	\
> +	int ret_warn = !!condition;		\
> +	if (ret_warn)				\
> +		printf(fmt, ##args);		\
> +	ret_warn; })
> +
> +#define KERN_DEBUG
> +#define KERN_NOTICE
> +#define KERN_WARNING
> +#define KERN_ERR
> +
> +#define kfree(ptr) free(ptr)
> +
> +#define pm_runtime_get_sync(dev) do {} while (0)
> +#define pm_runtime_put(dev) do {} while (0)
> +#define pm_runtime_put_sync(dev) do {} while (0)
> +#define pm_runtime_use_autosuspend(dev) do {} while (0)
> +#define pm_runtime_set_autosuspend_delay(dev, delay) do {} while (0)
> +#define pm_runtime_enable(dev) do {} while (0)
> +
> +#define MODULE_DESCRIPTION(desc)
> +#define MODULE_AUTHOR(author)
> +#define MODULE_LICENSE(license)
> +#define MODULE_ALIAS(alias)
> +#define module_param(name, type, perm)
> +#define MODULE_PARM_DESC(name, desc)
> +#define EXPORT_SYMBOL_GPL(name)
> +
> +#define writesl(a, d, s) __raw_writesl((unsigned long)a, d, s)
> +#define readsl(a, d, s) __raw_readsl((unsigned long)a, d, s)
> +#define writesw(a, d, s) __raw_writesw((unsigned long)a, d, s)
> +#define readsw(a, d, s) __raw_readsw((unsigned long)a, d, s)
> +#define writesb(a, d, s) __raw_writesb((unsigned long)a, d, s)
> +#define readsb(a, d, s) __raw_readsb((unsigned long)a, d, s)
> +
> +#define IRQ_NONE 0
> +#define IRQ_HANDLED 0
> +
> +#define dev_set_drvdata(dev, data) do {} while (0)
> +
> +#define disable_irq_wake(irq) do {} while (0)
> +#define enable_irq_wake(irq) -EINVAL
> +#define free_irq(irq, data) do {} while (0)
> +#define request_irq(nr, f, flags, nm, data) 0
> +
> +#define device_init_wakeup(dev, a) do {} while (0)
> +
> +#define platform_data device_data
> +
> +#ifndef wmb
> +#define wmb()			asm volatile (""   : : : "memory")
> +#endif
> +
> +#define msleep(a)	udelay(a * 1000)
> +
> +/*
> + * Map U-Boot config options to Linux ones
> + */
> +#ifdef CONFIG_OMAP34XX
> +#define CONFIG_SOC_OMAP3430
> +#endif
> +
> +#endif /* __LINUX_COMPAT_H__ */
> diff --git a/include/linux/usb/usb-compat.h b/include/linux/usb/usb-compat.h
> new file mode 100644
> index 0000000..295f1b7
> --- /dev/null
> +++ b/include/linux/usb/usb-compat.h
> @@ -0,0 +1,110 @@
> +/*
> + * usb_compat.h -- usb compatibility header file
> + *
> + * Copyright (C) 2012-2013
> + * Texas Instruments Incorporated.
> + * Cogent Embedded.
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License as published by
> + * the Free Software Foundation; either version 2 of the License, or
> + * (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
> + */
> +
> +#ifndef __USB_COMPAT_H__
> +#define __USB_COMPAT_H__
> +
> +#include "usb.h"
> +
> +struct usb_hcd {
> +	void *hcd_priv;
> +};
> +
> +struct usb_host_endpoint {
> +	struct usb_endpoint_descriptor		desc;
> +	struct list_head urb_list;
> +	void *hcpriv;
> +};
> +
> +/*
> + * urb->transfer_flags:
> + *
> + * Note: URB_DIR_IN/OUT is automatically set in usb_submit_urb().
> + */
> +#define URB_SHORT_NOT_OK	0x0001	/* report short reads as errors */
> +#define URB_ZERO_PACKET		0x0040	/* Finish bulk OUT with short packet */
> +
> +struct urb;
> +
> +typedef void (*usb_complete_t)(struct urb *);
> +
> +struct urb {
> +	void *hcpriv;			/* private data for host controller */
> +	struct list_head urb_list;	/* list head for use by the urb's
> +					 * current owner */
> +	struct usb_device *dev;		/* (in) pointer to associated device */
> +	struct usb_host_endpoint *ep;	/* (internal) pointer to endpoint */
> +	unsigned int pipe;		/* (in) pipe information */
> +	int status;			/* (return) non-ISO status */
> +	unsigned int transfer_flags;	/* (in) URB_SHORT_NOT_OK | ...*/
> +	void *transfer_buffer;		/* (in) associated data buffer */
> +	dma_addr_t transfer_dma;	/* (in) dma addr for transfer_buffer */
> +	u32 transfer_buffer_length;	/* (in) data buffer length */
> +	u32 actual_length;		/* (return) actual transfer length */
> +	unsigned char *setup_packet;	/* (in) setup packet (control only) */
> +	int start_frame;		/* (modify) start frame (ISO) */
> +	usb_complete_t complete;	/* (in) completion routine */
> +};
> +
> +#define usb_hcd_link_urb_to_ep(hcd, urb)	({		\
> +	int ret = 0;						\
> +	list_add_tail(&urb->urb_list, &urb->ep->urb_list);	\
> +	ret; })
> +#define usb_hcd_unlink_urb_from_ep(hcd, urb)	list_del_init(&urb->urb_list)
> +
> +static inline void usb_hcd_giveback_urb(struct usb_hcd *hcd,
> +					struct urb *urb,
> +					int status)
> +{
> +	urb->status = status;
> +	if (urb->complete)
> +		urb->complete(urb);
> +}
> +
> +static inline int usb_hcd_unmap_urb_for_dma(struct usb_hcd *hcd,
> +					struct urb *urb)
> +{
> +	/* TODO: add cache invalidation here */
> +	return 0;
> +}
> +
> +static inline u16 find_tt(struct usb_device *dev)
> +{
> +	u8 chid;
> +	u8 hub;
> +
> +	/* Find out the nearest parent which is high speed */
> +	while (dev->parent->parent != NULL)
> +		if (dev->parent->speed != USB_SPEED_HIGH)
> +			dev = dev->parent;
> +		else
> +			break;
> +
> +	/* determine the port address at that hub */
> +	hub = dev->parent->devnum;
> +	for (chid = 0; chid < USB_MAXCHILDREN; chid++)
> +		if (dev->parent->children[chid] == dev)
> +			break;
> +
> +	return (hub << 8) | chid;
> +}
> +#endif /* __USB_COMPAT_H__ */
Marek Vasut June 20, 2013, 1:49 p.m. UTC | #2
Dear Dan Murphy,

> + Marek
> and a bump
> 
> On 06/13/2013 02:07 PM, Dan Murphy wrote:
> > Move the linux and usb compat files to the
> > include/linux/usb directory in order for the files to be
> > reused.
> > 
> > Added GPLv2 license to the linux and usb compat as well.
> > 
> > Signed-off-by: Dan Murphy <dmurphy@ti.com>
> > ---
> > v2 - Fix checkpatch issues only for newly introduced code -
> > http://patchwork.ozlabs.org/patch/251127/

Can you please make this into two patches? First adding the license and the 
other doing the move? This way you would be able to even git format-patch -MC 
and reduce the patch to a bare minimum , making it nicely reviewable.

btw are you sure about the license?

Best regards,
Marek Vasut
Dan Murphy June 20, 2013, 2:10 p.m. UTC | #3
Marek
On 06/20/2013 08:49 AM, Marek Vasut wrote:
> Dear Dan Murphy,
>
>> + Marek
>> and a bump
>>
>> On 06/13/2013 02:07 PM, Dan Murphy wrote:
>>> Move the linux and usb compat files to the
>>> include/linux/usb directory in order for the files to be
>>> reused.
>>>
>>> Added GPLv2 license to the linux and usb compat as well.
>>>
>>> Signed-off-by: Dan Murphy <dmurphy@ti.com>
>>> ---
>>> v2 - Fix checkpatch issues only for newly introduced code -
>>> http://patchwork.ozlabs.org/patch/251127/
> Can you please make this into two patches? First adding the license and the 
> other doing the move? This way you would be able to even git format-patch -MC 
> and reduce the patch to a bare minimum , making it nicely reviewable.
>
> btw are you sure about the license?
>
> Best regards,
> Marek Vasut
Thanks for the review.

I am rethinking the move of these files.

Do you have specific questions on the license?
Because I will still be sending that patch in.
Tom Rini June 20, 2013, 2:17 p.m. UTC | #4
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 06/20/2013 09:49 AM, Marek Vasut wrote:
> Dear Dan Murphy,
> 
>> + Marek and a bump
>> 
>> On 06/13/2013 02:07 PM, Dan Murphy wrote:
>>> Move the linux and usb compat files to the include/linux/usb
>>> directory in order for the files to be reused.
>>> 
>>> Added GPLv2 license to the linux and usb compat as well.
>>> 
>>> Signed-off-by: Dan Murphy <dmurphy@ti.com> --- v2 - Fix
>>> checkpatch issues only for newly introduced code - 
>>> http://patchwork.ozlabs.org/patch/251127/
> 
> Can you please make this into two patches? First adding the license
> and the other doing the move? This way you would be able to even
> git format-patch -MC and reduce the patch to a bare minimum ,
> making it nicely reviewable.
> 
> btw are you sure about the license?

Yes, we have talked with Cogent Embedded.  They did the work while
contracting for TI and we're sharing the copyright.

- -- 
Tom
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQIcBAEBAgAGBQJRww7tAAoJENk4IS6UOR1Wdf0QAJ3MEkIo4sc9kjuEkAjRVvtj
Is7lgrSbw21iXSsHxN5gccwnimGO2eGJJMw2T2dgUwLB+ybbg9wWQ3FVpsrZy5dd
toyw8o+odXJyJg6jux4ZyuA/1FrR+2+zWlULYQ5cMzRgWLOgTbGayFPXuK1JCm9I
Zt03VIyJp2iYuN2ho9XgKD5lYHeYb0iJLeCoDccEzQEGWCMI0eOCeHcrGXz8jp8O
qVYFsQHZaQAsRzZIPY0mv7yxJXmX63vdR7Q3Em/qDMI7JpfCRtK9mnj90E9itULH
djw45yYU/rjzx667QWwDYukq5a8fDQJ4Ou5mxxWeahYFsaJZxcuk2x/olz6sEH7M
mfyT90A8w4buMJ12Oha1Y5HwuWS6UeDbINZMxK94n5sR/pzI5Yry5JdLoph4uewZ
GDBDLT7OAMcud6ofi9xCwCy4dvrSxIZh3J0pMPNrMC7EZsyaItTevITKLtWRyTGd
doTlUjpTdnTtbMqQNArGZ+SQtAgQvrTJOqlhj/My5OAEH/gpZ5OHPXcaDSBMWcQv
t2eCLHudh72EFoyge+KNoqwJELwRc1RWX+BleyzOZev0HKQr4r2Z9DIfLw9XI4Os
jZgZp7Wwmaro7yUYzSkt5FdFGcJhxqhJocMSXkhd45bnA2k/eXPxOuOMuJpgZHMM
e2QmOENBI7pcwyDYnhdi
=nzfH
-----END PGP SIGNATURE-----
Marek Vasut June 20, 2013, 3:02 p.m. UTC | #5
Dear Dan Murphy,

> Marek
> 
> On 06/20/2013 08:49 AM, Marek Vasut wrote:
> > Dear Dan Murphy,
> > 
> >> + Marek
> >> and a bump
> >> 
> >> On 06/13/2013 02:07 PM, Dan Murphy wrote:
> >>> Move the linux and usb compat files to the
> >>> include/linux/usb directory in order for the files to be
> >>> reused.
> >>> 
> >>> Added GPLv2 license to the linux and usb compat as well.
> >>> 
> >>> Signed-off-by: Dan Murphy <dmurphy@ti.com>
> >>> ---
> >>> v2 - Fix checkpatch issues only for newly introduced code -
> >>> http://patchwork.ozlabs.org/patch/251127/
> > 
> > Can you please make this into two patches? First adding the license and
> > the other doing the move? This way you would be able to even git
> > format-patch -MC and reduce the patch to a bare minimum , making it
> > nicely reviewable.
> > 
> > btw are you sure about the license?
> > 
> > Best regards,
> > Marek Vasut
> 
> Thanks for the review.
> 
> I am rethinking the move of these files.
> 
> Do you have specific questions on the license?
> Because I will still be sending that patch in.

Tom seem to have cleared it up, no prob.

Best regards,
Marek Vasut
diff mbox

Patch

diff --git a/drivers/usb/musb-new/linux-compat.h b/drivers/usb/musb-new/linux-compat.h
deleted file mode 100644
index 72c8c2b..0000000
--- a/drivers/usb/musb-new/linux-compat.h
+++ /dev/null
@@ -1,114 +0,0 @@ 
-#ifndef __LINUX_COMPAT_H__
-#define __LINUX_COMPAT_H__
-
-#include <malloc.h>
-#include <linux/list.h>
-#include <linux/compat.h>
-
-#define __init
-#define __devinit
-#define __devinitdata
-#define __devinitconst
-#define __iomem
-#define __deprecated
-
-struct unused {};
-typedef struct unused unused_t;
-
-typedef int irqreturn_t;
-typedef unused_t spinlock_t;
-
-struct work_struct {};
-
-struct timer_list {};
-struct notifier_block {};
-
-typedef unsigned long dmaaddr_t;
-
-#define spin_lock_init(lock) do {} while (0)
-#define spin_lock(lock) do {} while (0)
-#define spin_unlock(lock) do {} while (0)
-#define spin_lock_irqsave(lock, flags) do {} while (0)
-#define spin_unlock_irqrestore(lock, flags) do {} while (0)
-
-#define setup_timer(timer, func, data) do {} while (0)
-#define del_timer_sync(timer) do {} while (0)
-#define schedule_work(work) do {} while (0)
-#define INIT_WORK(work, fun) do {} while (0)
-
-#define cpu_relax() do {} while (0)
-
-#define pr_debug(fmt, args...) debug(fmt, ##args)
-#define dev_dbg(dev, fmt, args...)		\
-	debug(fmt, ##args)
-#define dev_vdbg(dev, fmt, args...)		\
-	debug(fmt, ##args)
-#define dev_info(dev, fmt, args...)		\
-	printf(fmt, ##args)
-#define dev_err(dev, fmt, args...)		\
-	printf(fmt, ##args)
-#define printk printf
-
-#define WARN(condition, fmt, args...) ({	\
-	int ret_warn = !!condition;		\
-	if (ret_warn)				\
-		printf(fmt, ##args);		\
-	ret_warn; })
-
-#define KERN_DEBUG
-#define KERN_NOTICE
-#define KERN_WARNING
-#define KERN_ERR
-
-#define kfree(ptr) free(ptr)
-
-#define pm_runtime_get_sync(dev) do {} while (0)
-#define pm_runtime_put(dev) do {} while (0)
-#define pm_runtime_put_sync(dev) do {} while (0)
-#define pm_runtime_use_autosuspend(dev) do {} while (0)
-#define pm_runtime_set_autosuspend_delay(dev, delay) do {} while (0)
-#define pm_runtime_enable(dev) do {} while (0)
-
-#define MODULE_DESCRIPTION(desc)
-#define MODULE_AUTHOR(author)
-#define MODULE_LICENSE(license)
-#define MODULE_ALIAS(alias)
-#define module_param(name, type, perm)
-#define MODULE_PARM_DESC(name, desc)
-#define EXPORT_SYMBOL_GPL(name)
-
-#define writesl(a, d, s) __raw_writesl((unsigned long)a, d, s)
-#define readsl(a, d, s) __raw_readsl((unsigned long)a, d, s)
-#define writesw(a, d, s) __raw_writesw((unsigned long)a, d, s)
-#define readsw(a, d, s) __raw_readsw((unsigned long)a, d, s)
-#define writesb(a, d, s) __raw_writesb((unsigned long)a, d, s)
-#define readsb(a, d, s) __raw_readsb((unsigned long)a, d, s)
-
-#define IRQ_NONE 0
-#define IRQ_HANDLED 0
-
-#define dev_set_drvdata(dev, data) do {} while (0)
-
-#define disable_irq_wake(irq) do {} while (0)
-#define enable_irq_wake(irq) -EINVAL
-#define free_irq(irq, data) do {} while (0)
-#define request_irq(nr, f, flags, nm, data) 0
-
-#define device_init_wakeup(dev, a) do {} while (0)
-
-#define platform_data device_data
-
-#ifndef wmb
-#define wmb()			asm volatile (""   : : : "memory")
-#endif
-
-#define msleep(a)	udelay(a * 1000)
-
-/*
- * Map U-Boot config options to Linux ones
- */
-#ifdef CONFIG_OMAP34XX
-#define CONFIG_SOC_OMAP3430
-#endif
-
-#endif /* __LINUX_COMPAT_H__ */
diff --git a/drivers/usb/musb-new/musb_core.c b/drivers/usb/musb-new/musb_core.c
index da93571..2cb3181 100644
--- a/drivers/usb/musb-new/musb_core.c
+++ b/drivers/usb/musb-new/musb_core.c
@@ -109,8 +109,8 @@ 
 #include <linux/usb/gadget.h>
 #include <linux/usb/musb.h>
 #include <asm/io.h>
-#include "linux-compat.h"
-#include "usb-compat.h"
+#include <linux/usb/linux-compat.h>
+#include <linux/usb/usb-compat.h>
 #endif
 
 #include "musb_core.h"
diff --git a/drivers/usb/musb-new/musb_dsps.c b/drivers/usb/musb-new/musb_dsps.c
index 9a03917..aa5f8aa 100644
--- a/drivers/usb/musb-new/musb_dsps.c
+++ b/drivers/usb/musb-new/musb_dsps.c
@@ -47,7 +47,7 @@ 
 #else
 #include <common.h>
 #include <asm/omap_musb.h>
-#include "linux-compat.h"
+#include <linux/usb/linux-compat.h>
 #endif
 
 #include "musb_core.h"
diff --git a/drivers/usb/musb-new/musb_gadget.c b/drivers/usb/musb-new/musb_gadget.c
index d2cb91a..0186b57 100644
--- a/drivers/usb/musb-new/musb_gadget.c
+++ b/drivers/usb/musb-new/musb_gadget.c
@@ -47,7 +47,7 @@ 
 #else
 #include <common.h>
 #include <linux/usb/ch9.h>
-#include "linux-compat.h"
+#include <linux/usb/linux-compat.h>
 #endif
 
 #include "musb_core.h"
diff --git a/drivers/usb/musb-new/musb_gadget_ep0.c b/drivers/usb/musb-new/musb_gadget_ep0.c
index 6599d38..bbc67b0 100644
--- a/drivers/usb/musb-new/musb_gadget_ep0.c
+++ b/drivers/usb/musb-new/musb_gadget_ep0.c
@@ -43,7 +43,7 @@ 
 #include <linux/interrupt.h>
 #else
 #include <common.h>
-#include "linux-compat.h"
+#include <linux/usb/linux-compat.h>
 #endif
 
 #include "musb_core.h"
diff --git a/drivers/usb/musb-new/musb_host.c b/drivers/usb/musb-new/musb_host.c
index 9a2cf59..7bc19bf 100644
--- a/drivers/usb/musb-new/musb_host.c
+++ b/drivers/usb/musb-new/musb_host.c
@@ -47,8 +47,8 @@ 
 #else
 #include <common.h>
 #include <usb.h>
-#include "linux-compat.h"
-#include "usb-compat.h"
+#include <linux/usb/linux-compat.h>
+#include <linux/usb/usb-compat.h>
 #endif
 
 #include "musb_core.h"
diff --git a/drivers/usb/musb-new/musb_host.h b/drivers/usb/musb-new/musb_host.h
index ebebe0c..1be9206 100644
--- a/drivers/usb/musb-new/musb_host.h
+++ b/drivers/usb/musb-new/musb_host.h
@@ -35,7 +35,7 @@ 
 #ifndef _MUSB_HOST_H
 #define _MUSB_HOST_H
 #ifdef __UBOOT__
-#include "usb-compat.h"
+#include <linux/usb/usb-compat.h>
 #endif
 
 static inline struct usb_hcd *musb_to_hcd(struct musb *musb)
diff --git a/drivers/usb/musb-new/musb_uboot.c b/drivers/usb/musb-new/musb_uboot.c
index 15d2ec0..bebf4c6 100644
--- a/drivers/usb/musb-new/musb_uboot.c
+++ b/drivers/usb/musb-new/musb_uboot.c
@@ -5,8 +5,8 @@ 
 
 #define __UBOOT__
 #include <usb.h>
-#include "linux-compat.h"
-#include "usb-compat.h"
+#include <linux/usb/linux-compat.h>
+#include <linux/usb/usb-compat.h>
 #include "musb_core.h"
 #include "musb_host.h"
 #include "musb_gadget.h"
diff --git a/drivers/usb/musb-new/usb-compat.h b/drivers/usb/musb-new/usb-compat.h
deleted file mode 100644
index 27f656f..0000000
--- a/drivers/usb/musb-new/usb-compat.h
+++ /dev/null
@@ -1,88 +0,0 @@ 
-#ifndef __USB_COMPAT_H__
-#define __USB_COMPAT_H__
-
-#include "usb.h"
-
-struct usb_hcd {
-	void *hcd_priv;
-};
-
-struct usb_host_endpoint {
-	struct usb_endpoint_descriptor		desc;
-	struct list_head urb_list;
-	void *hcpriv;
-};
-
-/*
- * urb->transfer_flags:
- *
- * Note: URB_DIR_IN/OUT is automatically set in usb_submit_urb().
- */
-#define URB_SHORT_NOT_OK	0x0001	/* report short reads as errors */
-#define URB_ZERO_PACKET		0x0040	/* Finish bulk OUT with short packet */
-
-struct urb;
-
-typedef void (*usb_complete_t)(struct urb *);
-
-struct urb {
-	void *hcpriv;			/* private data for host controller */
-	struct list_head urb_list;	/* list head for use by the urb's
-					 * current owner */
-	struct usb_device *dev;		/* (in) pointer to associated device */
-	struct usb_host_endpoint *ep;	/* (internal) pointer to endpoint */
-	unsigned int pipe;		/* (in) pipe information */
-	int status;			/* (return) non-ISO status */
-	unsigned int transfer_flags;	/* (in) URB_SHORT_NOT_OK | ...*/
-	void *transfer_buffer;		/* (in) associated data buffer */
-	dma_addr_t transfer_dma;	/* (in) dma addr for transfer_buffer */
-	u32 transfer_buffer_length;	/* (in) data buffer length */
-	u32 actual_length;		/* (return) actual transfer length */
-	unsigned char *setup_packet;	/* (in) setup packet (control only) */
-	int start_frame;		/* (modify) start frame (ISO) */
-	usb_complete_t complete;	/* (in) completion routine */
-};
-
-#define usb_hcd_link_urb_to_ep(hcd, urb)	({		\
-	int ret = 0;						\
-	list_add_tail(&urb->urb_list, &urb->ep->urb_list);	\
-	ret; })
-#define usb_hcd_unlink_urb_from_ep(hcd, urb)	list_del_init(&urb->urb_list)
-
-static inline void usb_hcd_giveback_urb(struct usb_hcd *hcd,
-					struct urb *urb,
-					int status)
-{
-	urb->status = status;
-	if (urb->complete)
-		urb->complete(urb);
-}
-
-static inline int usb_hcd_unmap_urb_for_dma(struct usb_hcd *hcd,
-					struct urb *urb)
-{
-	/* TODO: add cache invalidation here */
-	return 0;
-}
-
-static inline u16 find_tt(struct usb_device *dev)
-{
-	u8 chid;
-	u8 hub;
-
-	/* Find out the nearest parent which is high speed */
-	while (dev->parent->parent != NULL)
-		if (dev->parent->speed != USB_SPEED_HIGH)
-			dev = dev->parent;
-		else
-			break;
-
-	/* determine the port address at that hub */
-	hub = dev->parent->devnum;
-	for (chid = 0; chid < USB_MAXCHILDREN; chid++)
-		if (dev->parent->children[chid] == dev)
-			break;
-
-	return (hub << 8) | chid;
-}
-#endif /* __USB_COMPAT_H__ */
diff --git a/include/linux/usb/linux-compat.h b/include/linux/usb/linux-compat.h
new file mode 100644
index 0000000..a93dec7
--- /dev/null
+++ b/include/linux/usb/linux-compat.h
@@ -0,0 +1,136 @@ 
+/*
+ * linux_compat.h -- linux compatibility header file
+ *
+ * Copyright (C) 2012-2013
+ * Texas Instruments Incorporated.
+ * Cogent Embedded.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#ifndef __LINUX_COMPAT_H__
+#define __LINUX_COMPAT_H__
+
+#include <malloc.h>
+#include <linux/list.h>
+#include <linux/compat.h>
+
+#define __init
+#define __devinit
+#define __devinitdata
+#define __devinitconst
+#define __iomem
+#define __deprecated
+
+struct unused {};
+typedef struct unused unused_t;
+
+typedef int irqreturn_t;
+typedef unused_t spinlock_t;
+
+struct work_struct {};
+
+struct timer_list {};
+struct notifier_block {};
+
+typedef unsigned long dmaaddr_t;
+
+#define spin_lock_init(lock) do {} while (0)
+#define spin_lock(lock) do {} while (0)
+#define spin_unlock(lock) do {} while (0)
+#define spin_lock_irqsave(lock, flags) do {} while (0)
+#define spin_unlock_irqrestore(lock, flags) do {} while (0)
+
+#define setup_timer(timer, func, data) do {} while (0)
+#define del_timer_sync(timer) do {} while (0)
+#define schedule_work(work) do {} while (0)
+#define INIT_WORK(work, fun) do {} while (0)
+
+#define cpu_relax() do {} while (0)
+
+#define pr_debug(fmt, args...) debug(fmt, ##args)
+#define dev_dbg(dev, fmt, args...)		\
+	debug(fmt, ##args)
+#define dev_vdbg(dev, fmt, args...)		\
+	debug(fmt, ##args)
+#define dev_info(dev, fmt, args...)		\
+	printf(fmt, ##args)
+#define dev_err(dev, fmt, args...)		\
+	printf(fmt, ##args)
+#define printk printf
+
+#define WARN(condition, fmt, args...) ({	\
+	int ret_warn = !!condition;		\
+	if (ret_warn)				\
+		printf(fmt, ##args);		\
+	ret_warn; })
+
+#define KERN_DEBUG
+#define KERN_NOTICE
+#define KERN_WARNING
+#define KERN_ERR
+
+#define kfree(ptr) free(ptr)
+
+#define pm_runtime_get_sync(dev) do {} while (0)
+#define pm_runtime_put(dev) do {} while (0)
+#define pm_runtime_put_sync(dev) do {} while (0)
+#define pm_runtime_use_autosuspend(dev) do {} while (0)
+#define pm_runtime_set_autosuspend_delay(dev, delay) do {} while (0)
+#define pm_runtime_enable(dev) do {} while (0)
+
+#define MODULE_DESCRIPTION(desc)
+#define MODULE_AUTHOR(author)
+#define MODULE_LICENSE(license)
+#define MODULE_ALIAS(alias)
+#define module_param(name, type, perm)
+#define MODULE_PARM_DESC(name, desc)
+#define EXPORT_SYMBOL_GPL(name)
+
+#define writesl(a, d, s) __raw_writesl((unsigned long)a, d, s)
+#define readsl(a, d, s) __raw_readsl((unsigned long)a, d, s)
+#define writesw(a, d, s) __raw_writesw((unsigned long)a, d, s)
+#define readsw(a, d, s) __raw_readsw((unsigned long)a, d, s)
+#define writesb(a, d, s) __raw_writesb((unsigned long)a, d, s)
+#define readsb(a, d, s) __raw_readsb((unsigned long)a, d, s)
+
+#define IRQ_NONE 0
+#define IRQ_HANDLED 0
+
+#define dev_set_drvdata(dev, data) do {} while (0)
+
+#define disable_irq_wake(irq) do {} while (0)
+#define enable_irq_wake(irq) -EINVAL
+#define free_irq(irq, data) do {} while (0)
+#define request_irq(nr, f, flags, nm, data) 0
+
+#define device_init_wakeup(dev, a) do {} while (0)
+
+#define platform_data device_data
+
+#ifndef wmb
+#define wmb()			asm volatile (""   : : : "memory")
+#endif
+
+#define msleep(a)	udelay(a * 1000)
+
+/*
+ * Map U-Boot config options to Linux ones
+ */
+#ifdef CONFIG_OMAP34XX
+#define CONFIG_SOC_OMAP3430
+#endif
+
+#endif /* __LINUX_COMPAT_H__ */
diff --git a/include/linux/usb/usb-compat.h b/include/linux/usb/usb-compat.h
new file mode 100644
index 0000000..295f1b7
--- /dev/null
+++ b/include/linux/usb/usb-compat.h
@@ -0,0 +1,110 @@ 
+/*
+ * usb_compat.h -- usb compatibility header file
+ *
+ * Copyright (C) 2012-2013
+ * Texas Instruments Incorporated.
+ * Cogent Embedded.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#ifndef __USB_COMPAT_H__
+#define __USB_COMPAT_H__
+
+#include "usb.h"
+
+struct usb_hcd {
+	void *hcd_priv;
+};
+
+struct usb_host_endpoint {
+	struct usb_endpoint_descriptor		desc;
+	struct list_head urb_list;
+	void *hcpriv;
+};
+
+/*
+ * urb->transfer_flags:
+ *
+ * Note: URB_DIR_IN/OUT is automatically set in usb_submit_urb().
+ */
+#define URB_SHORT_NOT_OK	0x0001	/* report short reads as errors */
+#define URB_ZERO_PACKET		0x0040	/* Finish bulk OUT with short packet */
+
+struct urb;
+
+typedef void (*usb_complete_t)(struct urb *);
+
+struct urb {
+	void *hcpriv;			/* private data for host controller */
+	struct list_head urb_list;	/* list head for use by the urb's
+					 * current owner */
+	struct usb_device *dev;		/* (in) pointer to associated device */
+	struct usb_host_endpoint *ep;	/* (internal) pointer to endpoint */
+	unsigned int pipe;		/* (in) pipe information */
+	int status;			/* (return) non-ISO status */
+	unsigned int transfer_flags;	/* (in) URB_SHORT_NOT_OK | ...*/
+	void *transfer_buffer;		/* (in) associated data buffer */
+	dma_addr_t transfer_dma;	/* (in) dma addr for transfer_buffer */
+	u32 transfer_buffer_length;	/* (in) data buffer length */
+	u32 actual_length;		/* (return) actual transfer length */
+	unsigned char *setup_packet;	/* (in) setup packet (control only) */
+	int start_frame;		/* (modify) start frame (ISO) */
+	usb_complete_t complete;	/* (in) completion routine */
+};
+
+#define usb_hcd_link_urb_to_ep(hcd, urb)	({		\
+	int ret = 0;						\
+	list_add_tail(&urb->urb_list, &urb->ep->urb_list);	\
+	ret; })
+#define usb_hcd_unlink_urb_from_ep(hcd, urb)	list_del_init(&urb->urb_list)
+
+static inline void usb_hcd_giveback_urb(struct usb_hcd *hcd,
+					struct urb *urb,
+					int status)
+{
+	urb->status = status;
+	if (urb->complete)
+		urb->complete(urb);
+}
+
+static inline int usb_hcd_unmap_urb_for_dma(struct usb_hcd *hcd,
+					struct urb *urb)
+{
+	/* TODO: add cache invalidation here */
+	return 0;
+}
+
+static inline u16 find_tt(struct usb_device *dev)
+{
+	u8 chid;
+	u8 hub;
+
+	/* Find out the nearest parent which is high speed */
+	while (dev->parent->parent != NULL)
+		if (dev->parent->speed != USB_SPEED_HIGH)
+			dev = dev->parent;
+		else
+			break;
+
+	/* determine the port address at that hub */
+	hub = dev->parent->devnum;
+	for (chid = 0; chid < USB_MAXCHILDREN; chid++)
+		if (dev->parent->children[chid] == dev)
+			break;
+
+	return (hub << 8) | chid;
+}
+#endif /* __USB_COMPAT_H__ */