* [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.