OSDN Git Service

usb: dwc2: gadget: Add descriptor DMA parameter
authorVahram Aharonyan <vahrama@synopsys.com>
Thu, 10 Nov 2016 03:27:48 +0000 (19:27 -0800)
committerFelipe Balbi <felipe.balbi@linux.intel.com>
Fri, 18 Nov 2016 11:54:18 +0000 (13:54 +0200)
Add a parameter for descriptor DMA and set it based on hardware
capabilities. This won't actually be used by the gadget until later,
when the descriptor DMA code is in place.

Signed-off-by: Vahram Aharonyan <vahrama@synopsys.com>
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
drivers/usb/dwc2/core.h
drivers/usb/dwc2/gadget.c
drivers/usb/dwc2/params.c

index f8c97f5..32a3cfc 100644 (file)
@@ -419,6 +419,7 @@ enum dwc2_ep0_state {
  *                     0 - No (default)
  *                     1 - Yes
  * @g_dma:              Enables gadget dma usage (default: autodetect).
+ * @g_dma_desc:         Enables gadget descriptor DMA (default: autodetect).
  * @g_rx_fifo_size:    The periodic rx fifo size for the device, in
  *                     DWORDS from 16-32768 (default: 2048 if
  *                     possible, otherwise autodetect).
@@ -498,6 +499,7 @@ struct dwc2_core_params {
 
        /* Gadget parameters */
        bool g_dma;
+       bool g_dma_desc;
        u16 g_rx_fifo_size;
        u16 g_np_tx_fifo_size;
        u32 g_tx_fifo_size[MAX_EPS_CHANNELS];
index 1ba0bfc..4013518 100644 (file)
@@ -96,6 +96,17 @@ static inline bool using_dma(struct dwc2_hsotg *hsotg)
        return hsotg->params.g_dma;
 }
 
+/*
+ * using_desc_dma - return the descriptor DMA status of the driver.
+ * @hsotg: The driver state.
+ *
+ * Return true if we're using descriptor DMA.
+ */
+static inline bool using_desc_dma(struct dwc2_hsotg *hsotg)
+{
+       return hsotg->params.g_dma_desc;
+}
+
 /**
  * dwc2_gadget_incr_frame_num - Increments the targeted frame number.
  * @hs_ep: The endpoint
index 74c3728..2f18a7b 100644 (file)
@@ -1097,6 +1097,12 @@ static void dwc2_set_gadget_dma(struct dwc2_hsotg *hsotg)
                            false, "gadget-dma",
                            true, false,
                            dma_capable);
+
+       /* DMA Descriptor */
+       dwc2_set_param_bool(hsotg, &p->g_dma_desc, false,
+                           "gadget-dma-desc",
+                           p->g_dma, false,
+                           !!hw->dma_desc_enable);
 }
 
 /**