Merge tag 'for-4.1' of git://git.kernel.org/pub/scm/linux/kernel/git/kishon/linux...
[deliverable/linux.git] / drivers / usb / gadget / udc / atmel_usba_udc.h
index 497cd18836f381c46b710e8751806adbc07eeb27..ea448a3447670f5e9017841cf76efcdb9909b724 100644 (file)
         | USBA_BF(name, value))
 
 /* Register access macros */
+#ifdef CONFIG_AVR32
+#define usba_io_readl  __raw_readl
+#define usba_io_writel __raw_writel
+#define usba_io_writew __raw_writew
+#else
+#define usba_io_readl  readl_relaxed
+#define usba_io_writel writel_relaxed
+#define usba_io_writew writew_relaxed
+#endif
+
 #define usba_readl(udc, reg)                                   \
-       __raw_readl((udc)->regs + USBA_##reg)
+       usba_io_readl((udc)->regs + USBA_##reg)
 #define usba_writel(udc, reg, value)                           \
-       __raw_writel((value), (udc)->regs + USBA_##reg)
+       usba_io_writel((value), (udc)->regs + USBA_##reg)
 #define usba_ep_readl(ep, reg)                                 \
-       __raw_readl((ep)->ep_regs + USBA_EPT_##reg)
+       usba_io_readl((ep)->ep_regs + USBA_EPT_##reg)
 #define usba_ep_writel(ep, reg, value)                         \
-       __raw_writel((value), (ep)->ep_regs + USBA_EPT_##reg)
+       usba_io_writel((value), (ep)->ep_regs + USBA_EPT_##reg)
 #define usba_dma_readl(ep, reg)                                        \
-       __raw_readl((ep)->dma_regs + USBA_DMA_##reg)
+       usba_io_readl((ep)->dma_regs + USBA_DMA_##reg)
 #define usba_dma_writel(ep, reg, value)                                \
-       __raw_writel((value), (ep)->dma_regs + USBA_DMA_##reg)
+       usba_io_writel((value), (ep)->dma_regs + USBA_DMA_##reg)
 
 /* Calculate base address for a given endpoint or DMA controller */
 #define USBA_EPT_BASE(x)       (0x100 + (x) * 0x20)
@@ -313,6 +323,9 @@ struct usba_udc {
        /* Protect hw registers from concurrent modifications */
        spinlock_t lock;
 
+       /* Mutex to prevent concurrent start or stop */
+       struct mutex vbus_mutex;
+
        void __iomem *regs;
        void __iomem *fifo;
 
@@ -328,6 +341,7 @@ struct usba_udc {
        struct clk *hclk;
        struct usba_ep *usba_ep;
        bool bias_pulse_needed;
+       bool clocked;
 
        u16 devstatus;
 
This page took 0.03156 seconds and 5 git commands to generate.