Re: [PATCH v2 10/13] usb: dwc2: host: enable descriptor dma for fs devices

2015-11-20 Thread Herrero, Gregory
On Thu, Nov 19, 2015 at 08:26:22PM +0100, Felipe Balbi wrote:
> 
> Hi,
> 
> Gregory Herrero  writes:
> > From: Mian Yousaf Kaukab 
> >
> > As descriptor dma mode does not support split transfers, it can't be
> > enabled for high speed devices. Add a core parameter to enable it for
> > full speed devices.
> >
> > Ensure frame list and descriptor list are correctly freed during
> > disconnect.
> >
> > Signed-off-by: Mian Yousaf Kaukab 
> > Signed-off-by: Gregory Herrero 
> 
> this one doesn't apply:
> 
> Applying: usb: dwc2: host: enable descriptor dma for fs devices
> error: drivers/usb/dwc2/core.h: does not match index
> error: drivers/usb/dwc2/hcd.c: does not match index
> error: drivers/usb/dwc2/hcd_intr.c: does not match index
> error: drivers/usb/dwc2/platform.c: does not match index
> Patch failed at 0001 usb: dwc2: host: enable descriptor dma for fs devices
> The copy of the patch that failed is found in: 
> workspace/linux/.git/rebase-apply/patch
> When you have resolved this problem, run "git am --continue".
> If you prefer to skip this patch, run "git am --skip" instead.
> To restore the original branch and stop patching, run "git am --abort".
> 
> Care to rebase on my testing/next ? Patches 1-9 are already applied.
> 
Ok, I will resend patches 10-13 rebased on your testing/next.

Regards,
Gregory
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 10/13] usb: dwc2: host: enable descriptor dma for fs devices

2015-11-19 Thread Felipe Balbi

Hi,

Gregory Herrero  writes:
> From: Mian Yousaf Kaukab 
>
> As descriptor dma mode does not support split transfers, it can't be
> enabled for high speed devices. Add a core parameter to enable it for
> full speed devices.
>
> Ensure frame list and descriptor list are correctly freed during
> disconnect.
>
> Signed-off-by: Mian Yousaf Kaukab 
> Signed-off-by: Gregory Herrero 

this one doesn't apply:

Applying: usb: dwc2: host: enable descriptor dma for fs devices
error: drivers/usb/dwc2/core.h: does not match index
error: drivers/usb/dwc2/hcd.c: does not match index
error: drivers/usb/dwc2/hcd_intr.c: does not match index
error: drivers/usb/dwc2/platform.c: does not match index
Patch failed at 0001 usb: dwc2: host: enable descriptor dma for fs devices
The copy of the patch that failed is found in: 
workspace/linux/.git/rebase-apply/patch
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".

Care to rebase on my testing/next ? Patches 1-9 are already applied.

-- 
balbi


signature.asc
Description: PGP signature


[PATCH v2 10/13] usb: dwc2: host: enable descriptor dma for fs devices

2015-11-05 Thread Gregory Herrero
From: Mian Yousaf Kaukab 

As descriptor dma mode does not support split transfers, it can't be
enabled for high speed devices. Add a core parameter to enable it for
full speed devices.

Ensure frame list and descriptor list are correctly freed during
disconnect.

Signed-off-by: Mian Yousaf Kaukab 
Signed-off-by: Gregory Herrero 
---
 drivers/usb/dwc2/core.c  | 24 
 drivers/usb/dwc2/core.h  | 20 
 drivers/usb/dwc2/hcd.c   | 22 ++
 drivers/usb/dwc2/hcd_intr.c  | 15 +--
 drivers/usb/dwc2/hcd_queue.c |  2 +-
 drivers/usb/dwc2/platform.c  |  4 
 6 files changed, 84 insertions(+), 3 deletions(-)

diff --git a/drivers/usb/dwc2/core.c b/drivers/usb/dwc2/core.c
index ef73e49..5568d9c 100644
--- a/drivers/usb/dwc2/core.c
+++ b/drivers/usb/dwc2/core.c
@@ -2485,6 +2485,29 @@ void dwc2_set_param_dma_desc_enable(struct dwc2_hsotg 
*hsotg, int val)
hsotg->core_params->dma_desc_enable = val;
 }
 
+void dwc2_set_param_dma_desc_fs_enable(struct dwc2_hsotg *hsotg, int val)
+{
+   int valid = 1;
+
+   if (val > 0 && (hsotg->core_params->dma_enable <= 0 ||
+   !hsotg->hw_params.dma_desc_enable))
+   valid = 0;
+   if (val < 0)
+   valid = 0;
+
+   if (!valid) {
+   if (val >= 0)
+   dev_err(hsotg->dev,
+   "%d invalid for dma_desc_fs_enable parameter. 
Check HW configuration.\n",
+   val);
+   val = (hsotg->core_params->dma_enable > 0 &&
+   hsotg->hw_params.dma_desc_enable);
+   }
+
+   hsotg->core_params->dma_desc_fs_enable = val;
+   dev_dbg(hsotg->dev, "Setting dma_desc_fs_enable to %d\n", val);
+}
+
 void dwc2_set_param_host_support_fs_ls_low_power(struct dwc2_hsotg *hsotg,
 int val)
 {
@@ -3016,6 +3039,7 @@ void dwc2_set_parameters(struct dwc2_hsotg *hsotg,
dwc2_set_param_otg_cap(hsotg, params->otg_cap);
dwc2_set_param_dma_enable(hsotg, params->dma_enable);
dwc2_set_param_dma_desc_enable(hsotg, params->dma_desc_enable);
+   dwc2_set_param_dma_desc_fs_enable(hsotg, params->dma_desc_fs_enable);
dwc2_set_param_host_support_fs_ls_low_power(hsotg,
params->host_support_fs_ls_low_power);
dwc2_set_param_enable_dynamic_fifo(hsotg,
diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h
index a66d3cb..fd4c236 100644
--- a/drivers/usb/dwc2/core.h
+++ b/drivers/usb/dwc2/core.h
@@ -246,6 +246,13 @@ enum dwc2_ep0_state {
  *  value for this if none is specified.
  *   0 - Address DMA
  *   1 - Descriptor DMA (default, if available)
+ * @dma_desc_fs_enable: When DMA mode is enabled, specifies whether to use
+ *  address DMA mode or descriptor DMA mode for accessing
+ *  the data FIFOs in Full Speed mode only. The driver
+ *  will automatically detect the value for this if none is
+ *  specified.
+ *   0 - Address DMA
+ *   1 - Descriptor DMA in FS (default, if available)
  * @speed:  Specifies the maximum speed of operation in host and
  *  device mode. The actual speed depends on the speed of
  *  the attached device and the value of phy_type.
@@ -375,6 +382,7 @@ struct dwc2_core_params {
int otg_ver;
int dma_enable;
int dma_desc_enable;
+   int dma_desc_fs_enable;
int speed;
int enable_dynamic_fifo;
int en_multiple_tx_fifo;
@@ -456,6 +464,7 @@ struct dwc2_hw_params {
unsigned op_mode:3;
unsigned arch:2;
unsigned dma_desc_enable:1;
+   unsigned dma_desc_fs_enable:1;
unsigned enable_dynamic_fifo:1;
unsigned en_multiple_tx_fifo:1;
unsigned host_rx_fifo_size:16;
@@ -770,6 +779,7 @@ struct dwc2_hsotg {
u16 frame_number;
u16 periodic_qh_count;
bool bus_suspended;
+   bool new_connection;
 
 #ifdef CONFIG_USB_DWC2_TRACK_MISSED_SOFS
 #define FRAME_NUM_ARRAY_SIZE 1000
@@ -942,6 +952,16 @@ extern void dwc2_set_param_dma_enable(struct dwc2_hsotg 
*hsotg, int val);
 extern void dwc2_set_param_dma_desc_enable(struct dwc2_hsotg *hsotg, int val);
 
 /*
+ * When DMA mode is enabled specifies whether to use
+ * address DMA or DMA Descritor mode with full speed devices
+ * for accessing the data FIFOs in host mode.
+ * 0 - address DMA
+ * 1 - FS DMA Descriptor(default, if available)
+ */
+extern void dwc2_set_param_dma_desc_fs_enable(struct dwc2_hsotg *hsotg,
+ int val);
+
+/*
  * Specifies the maximum speed of operation in host and device mode.
  * The actual speed depends on the speed of the attached device and
  * the value of phy_type. The