]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/usb/gadget/ci13xxx_udc.h
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / drivers / usb / gadget / ci13xxx_udc.h
index 4026e9cede3415445749f38809121e5be90ea2f3..a2492b65f98c41a3b57e795c546f73eb6b551d46 100644 (file)
@@ -19,7 +19,8 @@
 /******************************************************************************
  * DEFINE
  *****************************************************************************/
-#define ENDPT_MAX          (16)
+#define CI13XXX_PAGE_SIZE  4096ul /* page size for TD's */
+#define ENDPT_MAX          (32)
 #define CTRL_PAYLOAD_MAX   (64)
 #define RX        (0)  /* similar to USB_DIR_OUT but can be used as an index */
 #define TX        (1)  /* similar to USB_DIR_IN  but can be used as an index */
@@ -87,8 +88,7 @@ struct ci13xxx_ep {
                struct list_head   queue;
                struct ci13xxx_qh *ptr;
                dma_addr_t         dma;
-       }                                      qh[2];
-       struct usb_request                    *status;
+       }                                      qh;
        int                                    wedge;
 
        /* global resources */
@@ -97,17 +97,39 @@ struct ci13xxx_ep {
        struct dma_pool                       *td_pool;
 };
 
+struct ci13xxx;
+struct ci13xxx_udc_driver {
+       const char      *name;
+       unsigned long    flags;
+#define CI13XXX_REGS_SHARED            BIT(0)
+#define CI13XXX_REQUIRE_TRANSCEIVER    BIT(1)
+#define CI13XXX_PULLUP_ON_VBUS         BIT(2)
+#define CI13XXX_DISABLE_STREAMING      BIT(3)
+
+#define CI13XXX_CONTROLLER_RESET_EVENT         0
+#define CI13XXX_CONTROLLER_STOPPED_EVENT       1
+       void    (*notify_event) (struct ci13xxx *udc, unsigned event);
+};
+
 /* CI13XXX UDC descriptor & global resources */
 struct ci13xxx {
        spinlock_t                *lock;      /* ctrl register bank access */
+       void __iomem              *regs;      /* registers address space */
 
        struct dma_pool           *qh_pool;   /* DMA pool for queue heads */
        struct dma_pool           *td_pool;   /* DMA pool for transfer descs */
+       struct usb_request        *status;    /* ep0 status request */
 
        struct usb_gadget          gadget;     /* USB slave device */
        struct ci13xxx_ep          ci13xxx_ep[ENDPT_MAX]; /* extended endpts */
+       u32                        ep0_dir;    /* ep0 direction */
+#define ep0out ci13xxx_ep[0]
+#define ep0in  ci13xxx_ep[16]
 
        struct usb_gadget_driver  *driver;     /* 3rd party gadget driver */
+       struct ci13xxx_udc_driver *udc_driver; /* device controller driver */
+       int                        vbus_active; /* is VBUS active */
+       struct otg_transceiver    *transceiver; /* Transceiver struct */
 };
 
 /******************************************************************************
@@ -157,6 +179,7 @@ struct ci13xxx {
 #define    USBMODE_CM_DEVICE  (0x02UL <<  0)
 #define    USBMODE_CM_HOST    (0x03UL <<  0)
 #define USBMODE_SLOM          BIT(3)
+#define USBMODE_SDIS          BIT(4)
 
 /* ENDPTCTRL */
 #define ENDPTCTRL_RXS         BIT(0)