All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH for-5.8 v2] usb: dwc2: Add missing cleanups when usb_add_gadget_udc() fails
@ 2020-07-03 22:50 Martin Blumenstingl
  2020-07-04  5:58 ` Minas Harutyunyan
  2020-07-26 10:04 ` Minas Harutyunyan
  0 siblings, 2 replies; 5+ messages in thread
From: Martin Blumenstingl @ 2020-07-03 22:50 UTC (permalink / raw)
  To: hminas, gregkh, linux-usb
  Cc: linux-kernel, marex, stable, Martin Blumenstingl

Call dwc2_debugfs_exit() and dwc2_hcd_remove() (if the HCD was enabled
earlier) when usb_add_gadget_udc() has failed. This ensures that the
debugfs entries created by dwc2_debugfs_init() as well as the HCD are
cleaned up in the error path.

Fixes: 207324a321a866 ("usb: dwc2: Postponed gadget registration to the udc class driver")
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
---
Changes since v1 at [0]
- also cleanup the HCD as suggested by Minas (thank you!)
- updated the subject accordingly


[0] https://patchwork.kernel.org/patch/11631381/


 drivers/usb/dwc2/platform.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/dwc2/platform.c b/drivers/usb/dwc2/platform.c
index c347d93eae64..9febae441069 100644
--- a/drivers/usb/dwc2/platform.c
+++ b/drivers/usb/dwc2/platform.c
@@ -582,12 +582,16 @@ static int dwc2_driver_probe(struct platform_device *dev)
 		retval = usb_add_gadget_udc(hsotg->dev, &hsotg->gadget);
 		if (retval) {
 			dwc2_hsotg_remove(hsotg);
-			goto error_init;
+			goto error_debugfs;
 		}
 	}
 #endif /* CONFIG_USB_DWC2_PERIPHERAL || CONFIG_USB_DWC2_DUAL_ROLE */
 	return 0;
 
+error_debugfs:
+	dwc2_debugfs_exit(hsotg);
+	if (hsotg->hcd_enabled)
+		dwc2_hcd_remove(hsotg);
 error_init:
 	if (hsotg->params.activate_stm_id_vb_detection)
 		regulator_disable(hsotg->usb33d);
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH for-5.8 v2] usb: dwc2: Add missing cleanups when usb_add_gadget_udc() fails
  2020-07-03 22:50 [PATCH for-5.8 v2] usb: dwc2: Add missing cleanups when usb_add_gadget_udc() fails Martin Blumenstingl
@ 2020-07-04  5:58 ` Minas Harutyunyan
  2020-07-26 10:04 ` Minas Harutyunyan
  1 sibling, 0 replies; 5+ messages in thread
From: Minas Harutyunyan @ 2020-07-04  5:58 UTC (permalink / raw)
  To: Martin Blumenstingl, gregkh, linux-usb; +Cc: linux-kernel, marex, stable



On 7/4/2020 2:50 AM, Martin Blumenstingl wrote:
> Call dwc2_debugfs_exit() and dwc2_hcd_remove() (if the HCD was enabled
> earlier) when usb_add_gadget_udc() has failed. This ensures that the
> debugfs entries created by dwc2_debugfs_init() as well as the HCD are
> cleaned up in the error path.
> 
> Fixes: 207324a321a866 ("usb: dwc2: Postponed gadget registration to the udc class driver")
> Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>

Acked-by: Minas Harutyunyan <hminas@synopsys.com>

> ---
> Changes since v1 at [0]
> - also cleanup the HCD as suggested by Minas (thank you!)
> - updated the subject accordingly
> 
> 
> [0] https://urldefense.com/v3/__https://patchwork.kernel.org/patch/11631381/__;!!A4F2R9G_pg!K0ZJIzYVYtrwy2VgxTI28Z_qA995uqmg1dFrMNx3XMQ653ROMKPkt_zQdJe1OOk$
> 
> 
>   drivers/usb/dwc2/platform.c | 6 +++++-
>   1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/usb/dwc2/platform.c b/drivers/usb/dwc2/platform.c
> index c347d93eae64..9febae441069 100644
> --- a/drivers/usb/dwc2/platform.c
> +++ b/drivers/usb/dwc2/platform.c
> @@ -582,12 +582,16 @@ static int dwc2_driver_probe(struct platform_device *dev)
>   		retval = usb_add_gadget_udc(hsotg->dev, &hsotg->gadget);
>   		if (retval) {
>   			dwc2_hsotg_remove(hsotg);
> -			goto error_init;
> +			goto error_debugfs;
>   		}
>   	}
>   #endif /* CONFIG_USB_DWC2_PERIPHERAL || CONFIG_USB_DWC2_DUAL_ROLE */
>   	return 0;
>   
> +error_debugfs:
> +	dwc2_debugfs_exit(hsotg);
> +	if (hsotg->hcd_enabled)
> +		dwc2_hcd_remove(hsotg);
>   error_init:
>   	if (hsotg->params.activate_stm_id_vb_detection)
>   		regulator_disable(hsotg->usb33d);
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH for-5.8 v2] usb: dwc2: Add missing cleanups when usb_add_gadget_udc() fails
  2020-07-03 22:50 [PATCH for-5.8 v2] usb: dwc2: Add missing cleanups when usb_add_gadget_udc() fails Martin Blumenstingl
  2020-07-04  5:58 ` Minas Harutyunyan
@ 2020-07-26 10:04 ` Minas Harutyunyan
  2020-07-27 17:35   ` Martin Blumenstingl
  1 sibling, 1 reply; 5+ messages in thread
From: Minas Harutyunyan @ 2020-07-26 10:04 UTC (permalink / raw)
  To: Martin Blumenstingl, gregkh, linux-usb; +Cc: linux-kernel, marex, stable

Hi Martin,

On 7/4/2020 2:50 AM, Martin Blumenstingl wrote:
> Call dwc2_debugfs_exit() and dwc2_hcd_remove() (if the HCD was enabled
> earlier) when usb_add_gadget_udc() has failed. This ensures that the
> debugfs entries created by dwc2_debugfs_init() as well as the HCD are
> cleaned up in the error path.
> 
> Fixes: 207324a321a866 ("usb: dwc2: Postponed gadget registration to the udc class driver")
> Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
> ---
> Changes since v1 at [0]
> - also cleanup the HCD as suggested by Minas (thank you!)
> - updated the subject accordingly
> 
> 
> [0] https://urldefense.com/v3/__https://patchwork.kernel.org/patch/11631381/__;!!A4F2R9G_pg!K0ZJIzYVYtrwy2VgxTI28Z_qA995uqmg1dFrMNx3XMQ653ROMKPkt_zQdJe1OOk$
> 
> 
>   drivers/usb/dwc2/platform.c | 6 +++++-
>   1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/usb/dwc2/platform.c b/drivers/usb/dwc2/platform.c
> index c347d93eae64..9febae441069 100644
> --- a/drivers/usb/dwc2/platform.c
> +++ b/drivers/usb/dwc2/platform.c
> @@ -582,12 +582,16 @@ static int dwc2_driver_probe(struct platform_device *dev)
>   		retval = usb_add_gadget_udc(hsotg->dev, &hsotg->gadget);
>   		if (retval) {
>   			dwc2_hsotg_remove(hsotg);
> -			goto error_init;
> +			goto error_debugfs;
>   		}
>   	}
>   #endif /* CONFIG_USB_DWC2_PERIPHERAL || CONFIG_USB_DWC2_DUAL_ROLE */
>   	return 0;
>  

Kernel test robot found issue:
 >> warning: unused label 'error_debugfs' [-Wunused-label]
    error_debugfs:
    ^~~~~~~~~~~~~~
    1 warning generated.

So, 'error_debugfs:' label should be under #if/#endif:

#if IS_ENABLED(CONFIG_USB_DWC2_PERIPHERAL) || \
         IS_ENABLED(CONFIG_USB_DWC2_DUAL_ROLE)
error_debugfs:
#endif /* CONFIG_USB_DWC2_PERIPHERAL || CONFIG_USB_DWC2_DUAL_ROLE */

Or you have other suggestion?

Could you please fix this issue and submit new version of patch.

Thanks,
Minas


> +error_debugfs:
> +	dwc2_debugfs_exit(hsotg);
> +	if (hsotg->hcd_enabled)
> +		dwc2_hcd_remove(hsotg);
>   error_init:
>   	if (hsotg->params.activate_stm_id_vb_detection)
>   		regulator_disable(hsotg->usb33d);
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH for-5.8 v2] usb: dwc2: Add missing cleanups when usb_add_gadget_udc() fails
  2020-07-26 10:04 ` Minas Harutyunyan
@ 2020-07-27 17:35   ` Martin Blumenstingl
  0 siblings, 0 replies; 5+ messages in thread
From: Martin Blumenstingl @ 2020-07-27 17:35 UTC (permalink / raw)
  To: Minas Harutyunyan; +Cc: gregkh, linux-usb, linux-kernel, marex, stable

Hello Minas,

On Sun, Jul 26, 2020 at 12:04 PM Minas Harutyunyan
<Minas.Harutyunyan@synopsys.com> wrote:
[...]
> Kernel test robot found issue:
>  >> warning: unused label 'error_debugfs' [-Wunused-label]
>     error_debugfs:
>     ^~~~~~~~~~~~~~
>     1 warning generated.
>
> So, 'error_debugfs:' label should be under #if/#endif:
>
> #if IS_ENABLED(CONFIG_USB_DWC2_PERIPHERAL) || \
>          IS_ENABLED(CONFIG_USB_DWC2_DUAL_ROLE)
> error_debugfs:
> #endif /* CONFIG_USB_DWC2_PERIPHERAL || CONFIG_USB_DWC2_DUAL_ROLE */
>
> Or you have other suggestion?
unfortunately I have no better idea

> Could you please fix this issue and submit new version of patch.
I'm going to cover everything I add inside the same #if (not just the
error label).
if any additional label is added (above) in the future then the code
that I'm adding must not be executed when that #if evaluates to false

v3 is coming in the next few minutes.


Best regards,
Martin

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH for-5.8 v2] usb: dwc2: Add missing cleanups when usb_add_gadget_udc() fails
@ 2020-07-04  6:04 kernel test robot
  0 siblings, 0 replies; 5+ messages in thread
From: kernel test robot @ 2020-07-04  6:04 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 26036 bytes --]

CC: kbuild-all(a)lists.01.org
In-Reply-To: <20200703225043.387769-1-martin.blumenstingl@googlemail.com>
References: <20200703225043.387769-1-martin.blumenstingl@googlemail.com>
TO: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
TO: hminas(a)synopsys.com
TO: gregkh(a)linuxfoundation.org
TO: linux-usb(a)vger.kernel.org
CC: linux-kernel(a)vger.kernel.org
CC: marex(a)denx.de
CC: stable(a)vger.kernel.org
CC: Martin Blumenstingl <martin.blumenstingl@googlemail.com>

Hi Martin,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on usb/usb-testing]
[also build test WARNING on v5.8-rc3 next-20200703]
[cannot apply to balbi-usb/testing/next peter.chen-usb/ci-for-usb-next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use  as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Martin-Blumenstingl/usb-dwc2-Add-missing-cleanups-when-usb_add_gadget_udc-fails/20200704-065314
base:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-testing
:::::: branch date: 7 hours ago
:::::: commit date: 7 hours ago
config: x86_64-randconfig-s022-20200702 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-14) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.2-3-gfa153962-dirty
        # save the attached .config to linux build tree
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


sparse warnings: (new ones prefixed by >>)

>> drivers/usb/dwc2/platform.c:591:1: sparse: sparse: unused label 'error_debugfs'

# https://github.com/0day-ci/linux/commit/67a20d5fad7c28a1e955244ff3712266b0a4bc76
git remote add linux-review https://github.com/0day-ci/linux
git remote update linux-review
git checkout 67a20d5fad7c28a1e955244ff3712266b0a4bc76
vim +/error_debugfs +591 drivers/usb/dwc2/platform.c

65dc2e72528610 drivers/usb/dwc2/platform.c     Minas Harutyunyan       2020-05-21  395  
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  396  /**
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  397   * dwc2_driver_probe() - Called when the DWC_otg core is bound to the DWC_otg
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  398   * driver
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  399   *
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  400   * @dev: Platform device
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  401   *
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  402   * This routine creates the driver components required to control the device
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  403   * (core, HCD, and PCD) and initializes the device. The driver components are
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  404   * stored in a dwc2_hsotg structure. A reference to the dwc2_hsotg is saved
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  405   * in the device private data. This allows the driver to access the dwc2_hsotg
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  406   * structure on subsequent calls to driver methods for this device.
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  407   */
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  408  static int dwc2_driver_probe(struct platform_device *dev)
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  409  {
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  410  	struct dwc2_hsotg *hsotg;
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  411  	struct resource *res;
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  412  	int retval;
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  413  
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  414  	hsotg = devm_kzalloc(&dev->dev, sizeof(*hsotg), GFP_KERNEL);
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  415  	if (!hsotg)
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  416  		return -ENOMEM;
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  417  
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  418  	hsotg->dev = &dev->dev;
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  419  
642f2ecc092f4d drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-05-17  420  	/*
642f2ecc092f4d drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-05-17  421  	 * Use reasonable defaults so platforms don't have to provide these.
642f2ecc092f4d drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-05-17  422  	 */
642f2ecc092f4d drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-05-17  423  	if (!dev->dev.dma_mask)
642f2ecc092f4d drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-05-17  424  		dev->dev.dma_mask = &dev->dev.coherent_dma_mask;
4cdbb4ff7fe456 drivers/staging/dwc2/platform.c Russell King            2013-06-10  425  	retval = dma_set_coherent_mask(&dev->dev, DMA_BIT_MASK(32));
42c6a25235677a drivers/usb/dwc2/platform.c     Stefan Wahren           2018-02-12  426  	if (retval) {
42c6a25235677a drivers/usb/dwc2/platform.c     Stefan Wahren           2018-02-12  427  		dev_err(&dev->dev, "can't set coherent DMA mask: %d\n", retval);
4cdbb4ff7fe456 drivers/staging/dwc2/platform.c Russell King            2013-06-10  428  		return retval;
42c6a25235677a drivers/usb/dwc2/platform.c     Stefan Wahren           2018-02-12  429  	}
642f2ecc092f4d drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-05-17  430  
5bf7e2883f1242 drivers/usb/dwc2/platform.c     Dejin Zheng             2020-03-24  431  	hsotg->regs = devm_platform_get_and_ioremap_resource(dev, 0, &res);
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  432  	if (IS_ERR(hsotg->regs))
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  433  		return PTR_ERR(hsotg->regs);
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  434  
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  435  	dev_dbg(&dev->dev, "mapped PA %08lx to VA %p\n",
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  436  		(unsigned long)res->start, hsotg->regs);
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  437  
09a75e85779014 drivers/usb/dwc2/platform.c     Marek Szyprowski        2015-10-14  438  	retval = dwc2_lowlevel_hw_init(hsotg);
ecb176c63ac49d drivers/usb/dwc2/platform.c     Mian Yousaf Kaukab      2015-04-29  439  	if (retval)
ecb176c63ac49d drivers/usb/dwc2/platform.c     Mian Yousaf Kaukab      2015-04-29  440  		return retval;
ecb176c63ac49d drivers/usb/dwc2/platform.c     Mian Yousaf Kaukab      2015-04-29  441  
09a75e85779014 drivers/usb/dwc2/platform.c     Marek Szyprowski        2015-10-14  442  	spin_lock_init(&hsotg->lock);
09a75e85779014 drivers/usb/dwc2/platform.c     Marek Szyprowski        2015-10-14  443  
a40a00318c7fcd drivers/usb/dwc2/platform.c     Heiko Stübner           2015-12-18  444  	hsotg->irq = platform_get_irq(dev, 0);
b33f37064b743d drivers/usb/dwc2/platform.c     Stephen Boyd            2019-07-30  445  	if (hsotg->irq < 0)
a40a00318c7fcd drivers/usb/dwc2/platform.c     Heiko Stübner           2015-12-18  446  		return hsotg->irq;
f74875dc36135e drivers/usb/dwc2/platform.c     Stefan Wahren           2015-11-12  447  
f74875dc36135e drivers/usb/dwc2/platform.c     Stefan Wahren           2015-11-12  448  	dev_dbg(hsotg->dev, "registering common handler for irq%d\n",
a40a00318c7fcd drivers/usb/dwc2/platform.c     Heiko Stübner           2015-12-18  449  		hsotg->irq);
a40a00318c7fcd drivers/usb/dwc2/platform.c     Heiko Stübner           2015-12-18  450  	retval = devm_request_irq(hsotg->dev, hsotg->irq,
f74875dc36135e drivers/usb/dwc2/platform.c     Stefan Wahren           2015-11-12  451  				  dwc2_handle_common_intr, IRQF_SHARED,
f74875dc36135e drivers/usb/dwc2/platform.c     Stefan Wahren           2015-11-12  452  				  dev_name(hsotg->dev), hsotg);
f74875dc36135e drivers/usb/dwc2/platform.c     Stefan Wahren           2015-11-12  453  	if (retval)
f74875dc36135e drivers/usb/dwc2/platform.c     Stefan Wahren           2015-11-12  454  		return retval;
f74875dc36135e drivers/usb/dwc2/platform.c     Stefan Wahren           2015-11-12  455  
e0f681c2c11a25 drivers/usb/dwc2/platform.c     Fabrice Gasnier         2018-09-05  456  	hsotg->vbus_supply = devm_regulator_get_optional(hsotg->dev, "vbus");
e0f681c2c11a25 drivers/usb/dwc2/platform.c     Fabrice Gasnier         2018-09-05  457  	if (IS_ERR(hsotg->vbus_supply)) {
e0f681c2c11a25 drivers/usb/dwc2/platform.c     Fabrice Gasnier         2018-09-05  458  		retval = PTR_ERR(hsotg->vbus_supply);
e0f681c2c11a25 drivers/usb/dwc2/platform.c     Fabrice Gasnier         2018-09-05  459  		hsotg->vbus_supply = NULL;
e0f681c2c11a25 drivers/usb/dwc2/platform.c     Fabrice Gasnier         2018-09-05  460  		if (retval != -ENODEV)
e0f681c2c11a25 drivers/usb/dwc2/platform.c     Fabrice Gasnier         2018-09-05  461  			return retval;
e0f681c2c11a25 drivers/usb/dwc2/platform.c     Fabrice Gasnier         2018-09-05  462  	}
e0f681c2c11a25 drivers/usb/dwc2/platform.c     Fabrice Gasnier         2018-09-05  463  
09a75e85779014 drivers/usb/dwc2/platform.c     Marek Szyprowski        2015-10-14  464  	retval = dwc2_lowlevel_hw_enable(hsotg);
09a75e85779014 drivers/usb/dwc2/platform.c     Marek Szyprowski        2015-10-14  465  	if (retval)
09a75e85779014 drivers/usb/dwc2/platform.c     Marek Szyprowski        2015-10-14  466  		return retval;
09a75e85779014 drivers/usb/dwc2/platform.c     Marek Szyprowski        2015-10-14  467  
d9707490077bee drivers/usb/dwc2/platform.c     Bruno Meirelles Herrera 2018-08-27  468  	hsotg->needs_byte_swap = dwc2_check_core_endianness(hsotg);
d9707490077bee drivers/usb/dwc2/platform.c     Bruno Meirelles Herrera 2018-08-27  469  
5268ed9d2e3b52 drivers/usb/dwc2/platform.c     John Youn               2015-12-17  470  	retval = dwc2_get_dr_mode(hsotg);
5268ed9d2e3b52 drivers/usb/dwc2/platform.c     John Youn               2015-12-17  471  	if (retval)
a6ef3e02542a33 drivers/usb/dwc2/platform.c     John Youn               2016-04-27  472  		goto error;
5268ed9d2e3b52 drivers/usb/dwc2/platform.c     John Youn               2015-12-17  473  
c846b03ff76714 drivers/usb/dwc2/platform.c     Douglas Anderson        2019-05-20  474  	hsotg->need_phy_for_wake =
c846b03ff76714 drivers/usb/dwc2/platform.c     Douglas Anderson        2019-05-20  475  		of_property_read_bool(dev->dev.of_node,
c846b03ff76714 drivers/usb/dwc2/platform.c     Douglas Anderson        2019-05-20  476  				      "snps,need-phy-for-wake");
c846b03ff76714 drivers/usb/dwc2/platform.c     Douglas Anderson        2019-05-20  477  
65dc2e72528610 drivers/usb/dwc2/platform.c     Minas Harutyunyan       2020-05-21  478  	/*
65dc2e72528610 drivers/usb/dwc2/platform.c     Minas Harutyunyan       2020-05-21  479  	 * Before performing any core related operations
65dc2e72528610 drivers/usb/dwc2/platform.c     Minas Harutyunyan       2020-05-21  480  	 * check core version.
65dc2e72528610 drivers/usb/dwc2/platform.c     Minas Harutyunyan       2020-05-21  481  	 */
65dc2e72528610 drivers/usb/dwc2/platform.c     Minas Harutyunyan       2020-05-21  482  	retval = dwc2_check_core_version(hsotg);
65dc2e72528610 drivers/usb/dwc2/platform.c     Minas Harutyunyan       2020-05-21  483  	if (retval)
65dc2e72528610 drivers/usb/dwc2/platform.c     Minas Harutyunyan       2020-05-21  484  		goto error;
65dc2e72528610 drivers/usb/dwc2/platform.c     Minas Harutyunyan       2020-05-21  485  
03b32e4c9bd1b5 drivers/usb/dwc2/platform.c     John Youn               2016-01-11  486  	/*
03b32e4c9bd1b5 drivers/usb/dwc2/platform.c     John Youn               2016-01-11  487  	 * Reset before dwc2_get_hwparams() then it could get power-on real
03b32e4c9bd1b5 drivers/usb/dwc2/platform.c     John Youn               2016-01-11  488  	 * reset value form registers.
03b32e4c9bd1b5 drivers/usb/dwc2/platform.c     John Youn               2016-01-11  489  	 */
13b1f8e25bfd1d drivers/usb/dwc2/platform.c     Vardan Mikayelyan       2018-02-16  490  	retval = dwc2_core_reset(hsotg, false);
13b1f8e25bfd1d drivers/usb/dwc2/platform.c     Vardan Mikayelyan       2018-02-16  491  	if (retval)
13b1f8e25bfd1d drivers/usb/dwc2/platform.c     Vardan Mikayelyan       2018-02-16  492  		goto error;
03b32e4c9bd1b5 drivers/usb/dwc2/platform.c     John Youn               2016-01-11  493  
03b32e4c9bd1b5 drivers/usb/dwc2/platform.c     John Youn               2016-01-11  494  	/* Detect config values from hardware */
09a75e85779014 drivers/usb/dwc2/platform.c     Marek Szyprowski        2015-10-14  495  	retval = dwc2_get_hwparams(hsotg);
09a75e85779014 drivers/usb/dwc2/platform.c     Marek Szyprowski        2015-10-14  496  	if (retval)
09a75e85779014 drivers/usb/dwc2/platform.c     Marek Szyprowski        2015-10-14  497  		goto error;
09a75e85779014 drivers/usb/dwc2/platform.c     Marek Szyprowski        2015-10-14  498  
13b1f8e25bfd1d drivers/usb/dwc2/platform.c     Vardan Mikayelyan       2018-02-16  499  	/*
13b1f8e25bfd1d drivers/usb/dwc2/platform.c     Vardan Mikayelyan       2018-02-16  500  	 * For OTG cores, set the force mode bits to reflect the value
13b1f8e25bfd1d drivers/usb/dwc2/platform.c     Vardan Mikayelyan       2018-02-16  501  	 * of dr_mode. Force mode bits should not be touched at any
13b1f8e25bfd1d drivers/usb/dwc2/platform.c     Vardan Mikayelyan       2018-02-16  502  	 * other time after this.
13b1f8e25bfd1d drivers/usb/dwc2/platform.c     Vardan Mikayelyan       2018-02-16  503  	 */
25362d318371e1 drivers/usb/dwc2/platform.c     John Youn               2015-12-17  504  	dwc2_force_dr_mode(hsotg);
263b7fb557f797 drivers/usb/dwc2/platform.c     John Youn               2015-12-17  505  
334bbd4ebe1b34 drivers/usb/dwc2/platform.c     John Youn               2016-11-03  506  	retval = dwc2_init_params(hsotg);
334bbd4ebe1b34 drivers/usb/dwc2/platform.c     John Youn               2016-11-03  507  	if (retval)
334bbd4ebe1b34 drivers/usb/dwc2/platform.c     John Youn               2016-11-03  508  		goto error;
334bbd4ebe1b34 drivers/usb/dwc2/platform.c     John Youn               2016-11-03  509  
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  510  	if (hsotg->params.activate_stm_id_vb_detection) {
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  511  		u32 ggpio;
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  512  
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  513  		hsotg->usb33d = devm_regulator_get(hsotg->dev, "usb33d");
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  514  		if (IS_ERR(hsotg->usb33d)) {
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  515  			retval = PTR_ERR(hsotg->usb33d);
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  516  			if (retval != -EPROBE_DEFER)
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  517  				dev_err(hsotg->dev,
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  518  					"failed to request usb33d supply: %d\n",
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  519  					retval);
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  520  			goto error;
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  521  		}
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  522  		retval = regulator_enable(hsotg->usb33d);
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  523  		if (retval) {
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  524  			dev_err(hsotg->dev,
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  525  				"failed to enable usb33d supply: %d\n", retval);
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  526  			goto error;
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  527  		}
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  528  
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  529  		ggpio = dwc2_readl(hsotg, GGPIO);
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  530  		ggpio |= GGPIO_STM32_OTG_GCCFG_IDEN;
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  531  		ggpio |= GGPIO_STM32_OTG_GCCFG_VBDEN;
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  532  		dwc2_writel(hsotg, ggpio, GGPIO);
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  533  	}
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  534  
e39af88f18dfe9 drivers/usb/dwc2/platform.c     Marek Szyprowski        2015-03-10  535  	if (hsotg->dr_mode != USB_DR_MODE_HOST) {
f3768997013e1c drivers/usb/dwc2/platform.c     Vardan Mikayelyan       2017-12-25  536  		retval = dwc2_gadget_init(hsotg);
117777b2c3bb96 drivers/usb/dwc2/platform.c     Dinh Nguyen             2014-11-11  537  		if (retval)
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  538  			goto error_init;
e39af88f18dfe9 drivers/usb/dwc2/platform.c     Marek Szyprowski        2015-03-10  539  		hsotg->gadget_enabled = 1;
e39af88f18dfe9 drivers/usb/dwc2/platform.c     Marek Szyprowski        2015-03-10  540  	}
e39af88f18dfe9 drivers/usb/dwc2/platform.c     Marek Szyprowski        2015-03-10  541  
c846b03ff76714 drivers/usb/dwc2/platform.c     Douglas Anderson        2019-05-20  542  	/*
c846b03ff76714 drivers/usb/dwc2/platform.c     Douglas Anderson        2019-05-20  543  	 * If we need PHY for wakeup we must be wakeup capable.
c846b03ff76714 drivers/usb/dwc2/platform.c     Douglas Anderson        2019-05-20  544  	 * When we have a device that can wake without the PHY we
c846b03ff76714 drivers/usb/dwc2/platform.c     Douglas Anderson        2019-05-20  545  	 * can adjust this condition.
c846b03ff76714 drivers/usb/dwc2/platform.c     Douglas Anderson        2019-05-20  546  	 */
c846b03ff76714 drivers/usb/dwc2/platform.c     Douglas Anderson        2019-05-20  547  	if (hsotg->need_phy_for_wake)
c846b03ff76714 drivers/usb/dwc2/platform.c     Douglas Anderson        2019-05-20  548  		device_set_wakeup_capable(&dev->dev, true);
c846b03ff76714 drivers/usb/dwc2/platform.c     Douglas Anderson        2019-05-20  549  
c40cf7705e13d2 drivers/usb/dwc2/platform.c     Douglas Anderson        2019-04-16  550  	hsotg->reset_phy_on_wake =
c40cf7705e13d2 drivers/usb/dwc2/platform.c     Douglas Anderson        2019-04-16  551  		of_property_read_bool(dev->dev.of_node,
c40cf7705e13d2 drivers/usb/dwc2/platform.c     Douglas Anderson        2019-04-16  552  				      "snps,reset-phy-on-wake");
c40cf7705e13d2 drivers/usb/dwc2/platform.c     Douglas Anderson        2019-04-16  553  	if (hsotg->reset_phy_on_wake && !hsotg->phy) {
c40cf7705e13d2 drivers/usb/dwc2/platform.c     Douglas Anderson        2019-04-16  554  		dev_warn(hsotg->dev,
c40cf7705e13d2 drivers/usb/dwc2/platform.c     Douglas Anderson        2019-04-16  555  			 "Quirk reset-phy-on-wake only supports generic PHYs\n");
c40cf7705e13d2 drivers/usb/dwc2/platform.c     Douglas Anderson        2019-04-16  556  		hsotg->reset_phy_on_wake = false;
c40cf7705e13d2 drivers/usb/dwc2/platform.c     Douglas Anderson        2019-04-16  557  	}
c40cf7705e13d2 drivers/usb/dwc2/platform.c     Douglas Anderson        2019-04-16  558  
e39af88f18dfe9 drivers/usb/dwc2/platform.c     Marek Szyprowski        2015-03-10  559  	if (hsotg->dr_mode != USB_DR_MODE_PERIPHERAL) {
4fe160d51e4226 drivers/usb/dwc2/platform.c     Heiner Kallweit         2017-01-25  560  		retval = dwc2_hcd_init(hsotg);
e39af88f18dfe9 drivers/usb/dwc2/platform.c     Marek Szyprowski        2015-03-10  561  		if (retval) {
e39af88f18dfe9 drivers/usb/dwc2/platform.c     Marek Szyprowski        2015-03-10  562  			if (hsotg->gadget_enabled)
1f91b4cc03556b drivers/usb/dwc2/platform.c     Felipe Balbi            2015-08-06  563  				dwc2_hsotg_remove(hsotg);
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  564  			goto error_init;
e39af88f18dfe9 drivers/usb/dwc2/platform.c     Marek Szyprowski        2015-03-10  565  		}
e39af88f18dfe9 drivers/usb/dwc2/platform.c     Marek Szyprowski        2015-03-10  566  		hsotg->hcd_enabled = 1;
e39af88f18dfe9 drivers/usb/dwc2/platform.c     Marek Szyprowski        2015-03-10  567  	}
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  568  
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  569  	platform_set_drvdata(dev, hsotg);
20fe440982e72d drivers/usb/dwc2/platform.c     Vardan Mikayelyan       2018-02-16  570  	hsotg->hibernated = 0;
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  571  
f91eea447ac32d drivers/usb/dwc2/platform.c     Mian Yousaf Kaukab      2015-04-29  572  	dwc2_debugfs_init(hsotg);
f91eea447ac32d drivers/usb/dwc2/platform.c     Mian Yousaf Kaukab      2015-04-29  573  
09a75e85779014 drivers/usb/dwc2/platform.c     Marek Szyprowski        2015-10-14  574  	/* Gadget code manages lowlevel hw on its own */
09a75e85779014 drivers/usb/dwc2/platform.c     Marek Szyprowski        2015-10-14  575  	if (hsotg->dr_mode == USB_DR_MODE_PERIPHERAL)
09a75e85779014 drivers/usb/dwc2/platform.c     Marek Szyprowski        2015-10-14  576  		dwc2_lowlevel_hw_disable(hsotg);
09a75e85779014 drivers/usb/dwc2/platform.c     Marek Szyprowski        2015-10-14  577  
207324a321a866 drivers/usb/dwc2/platform.c     Minas Harutyunyan       2020-06-09  578  #if IS_ENABLED(CONFIG_USB_DWC2_PERIPHERAL) || \
207324a321a866 drivers/usb/dwc2/platform.c     Minas Harutyunyan       2020-06-09  579  	IS_ENABLED(CONFIG_USB_DWC2_DUAL_ROLE)
207324a321a866 drivers/usb/dwc2/platform.c     Minas Harutyunyan       2020-06-09  580  	/* Postponed adding a new gadget to the udc class driver list */
207324a321a866 drivers/usb/dwc2/platform.c     Minas Harutyunyan       2020-06-09  581  	if (hsotg->gadget_enabled) {
207324a321a866 drivers/usb/dwc2/platform.c     Minas Harutyunyan       2020-06-09  582  		retval = usb_add_gadget_udc(hsotg->dev, &hsotg->gadget);
207324a321a866 drivers/usb/dwc2/platform.c     Minas Harutyunyan       2020-06-09  583  		if (retval) {
207324a321a866 drivers/usb/dwc2/platform.c     Minas Harutyunyan       2020-06-09  584  			dwc2_hsotg_remove(hsotg);
67a20d5fad7c28 drivers/usb/dwc2/platform.c     Martin Blumenstingl     2020-07-04  585  			goto error_debugfs;
207324a321a866 drivers/usb/dwc2/platform.c     Minas Harutyunyan       2020-06-09  586  		}
207324a321a866 drivers/usb/dwc2/platform.c     Minas Harutyunyan       2020-06-09  587  	}
207324a321a866 drivers/usb/dwc2/platform.c     Minas Harutyunyan       2020-06-09  588  #endif /* CONFIG_USB_DWC2_PERIPHERAL || CONFIG_USB_DWC2_DUAL_ROLE */
09a75e85779014 drivers/usb/dwc2/platform.c     Marek Szyprowski        2015-10-14  589  	return 0;
09a75e85779014 drivers/usb/dwc2/platform.c     Marek Szyprowski        2015-10-14  590  
67a20d5fad7c28 drivers/usb/dwc2/platform.c     Martin Blumenstingl     2020-07-04 @591  error_debugfs:
67a20d5fad7c28 drivers/usb/dwc2/platform.c     Martin Blumenstingl     2020-07-04  592  	dwc2_debugfs_exit(hsotg);
67a20d5fad7c28 drivers/usb/dwc2/platform.c     Martin Blumenstingl     2020-07-04  593  	if (hsotg->hcd_enabled)
67a20d5fad7c28 drivers/usb/dwc2/platform.c     Martin Blumenstingl     2020-07-04  594  		dwc2_hcd_remove(hsotg);
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  595  error_init:
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  596  	if (hsotg->params.activate_stm_id_vb_detection)
a415083a11cc76 drivers/usb/dwc2/platform.c     Amelie Delaunay         2020-01-24  597  		regulator_disable(hsotg->usb33d);
09a75e85779014 drivers/usb/dwc2/platform.c     Marek Szyprowski        2015-10-14  598  error:
09a75e85779014 drivers/usb/dwc2/platform.c     Marek Szyprowski        2015-10-14  599  	dwc2_lowlevel_hw_disable(hsotg);
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  600  	return retval;
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  601  }
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman       2013-04-22  602  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 41178 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2020-07-27 17:35 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-03 22:50 [PATCH for-5.8 v2] usb: dwc2: Add missing cleanups when usb_add_gadget_udc() fails Martin Blumenstingl
2020-07-04  5:58 ` Minas Harutyunyan
2020-07-26 10:04 ` Minas Harutyunyan
2020-07-27 17:35   ` Martin Blumenstingl
2020-07-04  6:04 kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.