[PATCH 1/3] staging: dwc2: disable dma when no dma_mask was setup

2013-07-19 Thread Matthijs Kooijman
If the platform or bus driver failed to setup a dma_mask, but the
hardware advertises support for DMA, before DMA would be enabled in
dwc2, but disabled in the usb core, making all connectivity break.

With this commit, the dwc2 driver will emit a warning and fall back to
slave mode in this case.

Note that since commit 642f2ec (staging: dwc2: Fix dma-enabled platform
devices using a default dma_mask) the platform bindings make sure a DMA
mask is always present, but having this check here anyway is probably a
good from a defensive programming standpoint (in case of changes to
platform.c or addition of new glue layers).

Signed-off-by: Matthijs Kooijman matth...@stdin.nl
Acked-by: Paul Zimmerman paul.zimmer...@synopsys.com
---
 drivers/staging/dwc2/hcd.c | 9 +
 1 file changed, 9 insertions(+)

diff --git a/drivers/staging/dwc2/hcd.c b/drivers/staging/dwc2/hcd.c
index 2ed54b1..b5b229a 100644
--- a/drivers/staging/dwc2/hcd.c
+++ b/drivers/staging/dwc2/hcd.c
@@ -2801,6 +2801,15 @@ int dwc2_hcd_init(struct dwc2_hsotg *hsotg, int irq,
/* Validate parameter values */
dwc2_set_parameters(hsotg, params);
 
+   /* Check if the bus driver or platform code has setup a dma_mask */
+   if (hsotg-core_params-dma_enable  0 
+   hsotg-dev-dma_mask == NULL) {
+   dev_warn(hsotg-dev,
+dma_mask not set, disabling DMA\n);
+   hsotg-core_params-dma_enable = 0;
+   hsotg-core_params-dma_desc_enable = 0;
+   }
+
/* Set device flags indicating whether the HCD supports DMA */
if (hsotg-core_params-dma_enable  0) {
if (dma_set_mask(hsotg-dev, DMA_BIT_MASK(32))  0)
-- 
1.8.3.rc1

--
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


[PATCH 1/3] staging: dwc2: disable dma when no dma_mask was setup

2013-07-17 Thread Matthijs Kooijman
If the platform or bus driver failed to setup a dma_mask, but the
hardware advertises support for DMA, before DMA would be enabled in
dwc2, but disabled in the usb core, making all connectivity break.

With this commit, the dwc2 driver will emit a warning and fall back to
slave mode in this case.

Note that since commit 642f2ec (staging: dwc2: Fix dma-enabled platform
devices using a default dma_mask) the platform bindings make sure a DMA
mask is always present, but having this check here anyway is probably a
good from a defensive programming standpoint (in case of changes to
platform.c or addition of new glue layers).

Signed-off-by: Matthijs Kooijman matth...@stdin.nl
---
 drivers/staging/dwc2/hcd.c | 9 +
 1 file changed, 9 insertions(+)

diff --git a/drivers/staging/dwc2/hcd.c b/drivers/staging/dwc2/hcd.c
index 8cbdbd9..4791d81 100644
--- a/drivers/staging/dwc2/hcd.c
+++ b/drivers/staging/dwc2/hcd.c
@@ -2740,6 +2740,15 @@ int dwc2_hcd_init(struct dwc2_hsotg *hsotg, int irq,
/* Validate parameter values */
dwc2_set_parameters(hsotg, params);
 
+   /* Check if the bus driver or platform code has setup a dma_mask */
+   if (hsotg-core_params-dma_enable  0 
+   hsotg-dev-dma_mask == NULL) {
+   dev_warn(hsotg-dev,
+dma_mask not set, disabling DMA\n);
+   hsotg-core_params-dma_enable = 0;
+   hsotg-core_params-dma_desc_enable = 0;
+   }
+
/* Set device flags indicating whether the HCD supports DMA */
if (hsotg-core_params-dma_enable  0) {
if (dma_set_mask(hsotg-dev, DMA_BIT_MASK(32))  0)
-- 
1.8.3.rc1

--
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