fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / drivers / usb / gadget / omap_udc.h
index bd5420c..1dc398b 100644 (file)
@@ -20,6 +20,7 @@
 #define        UDC_CTRL_REG                    UDC_REG(0x0C)   /* Endpoint control */
 #      define  UDC_CLR_HALT            (1 << 7)
 #      define  UDC_SET_HALT            (1 << 6)
+#      define  UDC_CLRDATA_TOGGLE      (1 << 3)
 #      define  UDC_SET_FIFO_EN         (1 << 2)
 #      define  UDC_CLR_EP              (1 << 1)
 #      define  UDC_RESET_EP            (1 << 0)
 
 /* DMA configuration registers:  up to three channels in each direction.  */
 #define        UDC_RXDMA_CFG_REG               UDC_REG(0x40)   /* 3 eps for RX DMA */
+#      define  UDC_DMA_REQ             (1 << 12)
 #define        UDC_TXDMA_CFG_REG               UDC_REG(0x44)   /* 3 eps for TX DMA */
 #define        UDC_DATA_DMA_REG                UDC_REG(0x48)   /* rx/tx fifo addr */
 
@@ -146,11 +148,14 @@ struct omap_ep {
        u8                              bmAttributes;
        unsigned                        double_buf:1;
        unsigned                        stopped:1;
-       unsigned                        ackwait:1;
+       unsigned                        fnf:1;
        unsigned                        has_dma:1;
+       u8                              ackwait;
        u8                              dma_channel;
+       u16                             dma_counter;
        int                             lch;
        struct omap_udc                 *udc;
+       struct timer_list               timer;
 };
 
 struct omap_udc {
@@ -159,6 +164,7 @@ struct omap_udc {
        spinlock_t                      lock;
        struct omap_ep                  ep[32];
        u16                             devstat;
+       u16                             clr_halt;
        struct otg_transceiver          *transceiver;
        struct list_head                iso;
        unsigned                        softconnect:1;
@@ -168,9 +174,10 @@ struct omap_udc {
        unsigned                        ep0_set_config:1;
        unsigned                        ep0_reset_config:1;
        unsigned                        ep0_setup:1;
-       unsigned                        hmc:6;
-
        struct completion               *done;
+       struct clk                      *dc_clk;
+       struct clk                      *hhc_clk;
+       unsigned                        clk_requested:1;
 };
 
 /*-------------------------------------------------------------------------*/
@@ -193,7 +200,14 @@ struct omap_udc {
 
 /*-------------------------------------------------------------------------*/
 
-// #define     HMC_1510        ((MOD_CONF_CTRL_0_REG >> 1) & 0x3f)
+#define        MOD_CONF_CTRL_0_REG     __REG32(MOD_CONF_CTRL_0)
+#define        VBUS_W2FC_1510          (1 << 17)       /* 0 gpio0, 1 dvdd2 pin */
+
+#define        FUNC_MUX_CTRL_0_REG     __REG32(FUNC_MUX_CTRL_0)
+#define        VBUS_CTRL_1510          (1 << 19)       /* 1 connected (software) */
+#define        VBUS_MODE_1510          (1 << 18)       /* 0 hardware, 1 software */
+
+#define        HMC_1510        ((MOD_CONF_CTRL_0_REG >> 1) & 0x3f)
 #define        HMC_1610        (OTG_SYSCON_2_REG & 0x3f)
-#define        HMC              HMC_1610
+#define        HMC             (cpu_is_omap15xx() ? HMC_1510 : HMC_1610)