CC: kbuild-all(a)lists.01.org
CC: linux-usb(a)vger.kernel.org
CC: linux-omap(a)vger.kernel.org
CC: Felipe Balbi <balbi(a)kernel.org>
TO: Martin Blumenstingl <martin.blumenstingl(a)googlemail.com>
CC: Felipe Balbi <balbi(a)kernel.org>
tree:
https://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git testing/next
head: a1ff2f6769e39055e973b068070aeea0b3bcd90f
commit: 602fb68e303fb96c9e4a5eb5f25ad0ce999df37d [40/48] usb: dwc2: Add missing cleanups
when usb_add_gadget_udc() fails
:::::: branch date: 32 hours ago
:::::: commit date: 32 hours ago
config: h8300-randconfig-s031-20200726 (attached as .config)
compiler: h8300-linux-gcc (GCC) 9.3.0
reproduce:
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.2-93-g4c6cbe55-dirty
git checkout 602fb68e303fb96c9e4a5eb5f25ad0ce999df37d
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1
CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=h8300
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
> drivers/usb/dwc2/platform.c:593:1: sparse: sparse: unused label
'error_debugfs'
drivers/usb/dwc2/platform.c: note: in included file
(through arch/h8300/include/asm/io.h, include/linux/scatterlist.h,
include/linux/dma-mapping.h):
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
drivers/usb/dwc2/platform.c: note: in included file (through
include/linux/scatterlist.h, include/linux/dma-mapping.h):
arch/h8300/include/asm/io.h:26:18: sparse: sparse: cast removes address space
'__iomem' of expression
arch/h8300/include/asm/io.h:26:18: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/usb/dwc2/platform.c: note: in included file (through
arch/h8300/include/asm/io.h, include/linux/scatterlist.h, include/linux/dma-mapping.h):
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
drivers/usb/dwc2/platform.c: note: in included file (through
include/linux/scatterlist.h, include/linux/dma-mapping.h):
arch/h8300/include/asm/io.h:26:18: sparse: sparse: cast removes address space
'__iomem' of expression
arch/h8300/include/asm/io.h:26:18: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/usb/dwc2/platform.c: note: in included file (through
arch/h8300/include/asm/io.h, include/linux/scatterlist.h, include/linux/dma-mapping.h):
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
drivers/usb/dwc2/platform.c: note: in included file (through
include/linux/scatterlist.h, include/linux/dma-mapping.h):
arch/h8300/include/asm/io.h:26:18: sparse: sparse: cast removes address space
'__iomem' of expression
arch/h8300/include/asm/io.h:26:18: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/usb/dwc2/platform.c: note: in included file (through
arch/h8300/include/asm/io.h, include/linux/scatterlist.h, include/linux/dma-mapping.h):
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1
(different base types) @@ expected unsigned int [usertype] b @@ got restricted
__le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] b
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
drivers/usb/dwc2/platform.c: note: in included file (through
include/linux/scatterlist.h, include/linux/dma-mapping.h):
arch/h8300/include/asm/io.h:44:11: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/usb/dwc2/platform.c: note: in included file (through
arch/h8300/include/asm/io.h, include/linux/scatterlist.h, include/linux/dma-mapping.h):
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1
(different base types) @@ expected unsigned int [usertype] b @@ got restricted
__le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] b
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
drivers/usb/dwc2/platform.c: note: in included file (through
include/linux/scatterlist.h, include/linux/dma-mapping.h):
arch/h8300/include/asm/io.h:44:11: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/usb/dwc2/platform.c: note: in included file (through
arch/h8300/include/asm/io.h, include/linux/scatterlist.h, include/linux/dma-mapping.h):
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
drivers/usb/dwc2/platform.c: note: in included file (through
include/linux/scatterlist.h, include/linux/dma-mapping.h):
arch/h8300/include/asm/io.h:26:18: sparse: sparse: cast removes address space
'__iomem' of expression
arch/h8300/include/asm/io.h:26:18: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/usb/dwc2/platform.c: note: in included file (through
arch/h8300/include/asm/io.h, include/linux/scatterlist.h, include/linux/dma-mapping.h):
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
drivers/usb/dwc2/platform.c: note: in included file (through
include/linux/scatterlist.h, include/linux/dma-mapping.h):
arch/h8300/include/asm/io.h:26:18: sparse: sparse: cast removes address space
'__iomem' of expression
arch/h8300/include/asm/io.h:26:18: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/usb/dwc2/platform.c: note: in included file (through
arch/h8300/include/asm/io.h, include/linux/scatterlist.h, include/linux/dma-mapping.h):
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1
(different base types) @@ expected unsigned int [usertype] b @@ got restricted
__le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] b
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
drivers/usb/dwc2/platform.c: note: in included file (through
include/linux/scatterlist.h, include/linux/dma-mapping.h):
arch/h8300/include/asm/io.h:44:11: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/usb/dwc2/platform.c: note: in included file (through
arch/h8300/include/asm/io.h, include/linux/scatterlist.h, include/linux/dma-mapping.h):
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1
(different base types) @@ expected unsigned int [usertype] b @@ got restricted
__le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] b
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
drivers/usb/dwc2/platform.c: note: in included file (through
include/linux/scatterlist.h, include/linux/dma-mapping.h):
arch/h8300/include/asm/io.h:44:11: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/usb/dwc2/platform.c: note: in included file (through
arch/h8300/include/asm/io.h, include/linux/scatterlist.h, include/linux/dma-mapping.h):
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
drivers/usb/dwc2/platform.c: note: in included file (through
include/linux/scatterlist.h, include/linux/dma-mapping.h):
arch/h8300/include/asm/io.h:26:18: sparse: sparse: cast removes address space
'__iomem' of expression
arch/h8300/include/asm/io.h:26:18: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/usb/dwc2/platform.c: note: in included file (through
arch/h8300/include/asm/io.h, include/linux/scatterlist.h, include/linux/dma-mapping.h):
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1
(different base types) @@ expected unsigned int [usertype] b @@ got restricted
__le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] b
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
drivers/usb/dwc2/platform.c: note: in included file (through
include/linux/scatterlist.h, include/linux/dma-mapping.h):
arch/h8300/include/asm/io.h:44:11: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/usb/dwc2/platform.c: note: in included file (through
arch/h8300/include/asm/io.h, include/linux/scatterlist.h, include/linux/dma-mapping.h):
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1
(different base types) @@ expected unsigned int [usertype] b @@ got restricted
__le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] b
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
drivers/usb/dwc2/platform.c: note: in included file (through
include/linux/scatterlist.h, include/linux/dma-mapping.h):
arch/h8300/include/asm/io.h:44:11: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/usb/dwc2/platform.c: note: in included file (through
arch/h8300/include/asm/io.h, include/linux/scatterlist.h, include/linux/dma-mapping.h):
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
#
https://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git/commit/?id=...
git remote add balbi-usb
https://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git
git remote update balbi-usb
git checkout 602fb68e303fb96c9e4a5eb5f25ad0ce999df37d
vim +/error_debugfs +593 drivers/usb/dwc2/platform.c
65dc2e72528610 drivers/usb/dwc2/platform.c Minas Harutyunyan 2020-05-21 396
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 397
/**
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 398 *
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 399 *
driver
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 400
*
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 401 *
@dev: Platform device
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 402
*
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 403 *
This routine creates the driver components required to control the device
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 404 *
(core, HCD, and PCD) and initializes the device. The driver components are
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 405 *
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 406 *
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 407 *
structure on subsequent calls to driver methods for this device.
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 408
*/
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 409
static int dwc2_driver_probe(struct platform_device *dev)
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 410 {
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 411
struct dwc2_hsotg *hsotg;
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 412
struct resource *res;
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 413
int retval;
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 414
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 415
hsotg = devm_kzalloc(&dev->dev, sizeof(*hsotg), GFP_KERNEL);
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 416
if (!hsotg)
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 417
return -ENOMEM;
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 418
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 419
hsotg->dev = &dev->dev;
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 420
642f2ecc092f4d drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-05-17 421
/*
642f2ecc092f4d drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-05-17 422
* Use reasonable defaults so platforms don't have to provide these.
642f2ecc092f4d drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-05-17 423
*/
642f2ecc092f4d drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-05-17 424
if (!dev->dev.dma_mask)
642f2ecc092f4d drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-05-17 425
dev->dev.dma_mask = &dev->dev.coherent_dma_mask;
4cdbb4ff7fe456 drivers/staging/dwc2/platform.c Russell King 2013-06-10 426
retval = dma_set_coherent_mask(&dev->dev, DMA_BIT_MASK(32));
42c6a25235677a drivers/usb/dwc2/platform.c Stefan Wahren 2018-02-12 427
if (retval) {
42c6a25235677a drivers/usb/dwc2/platform.c Stefan Wahren 2018-02-12 428
dev_err(&dev->dev, "can't set coherent DMA mask: %d\n", retval);
4cdbb4ff7fe456 drivers/staging/dwc2/platform.c Russell King 2013-06-10 429
return retval;
42c6a25235677a drivers/usb/dwc2/platform.c Stefan Wahren 2018-02-12 430
}
642f2ecc092f4d drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-05-17 431
5bf7e2883f1242 drivers/usb/dwc2/platform.c Dejin Zheng 2020-03-24 432
hsotg->regs = devm_platform_get_and_ioremap_resource(dev, 0, &res);
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 433
if (IS_ERR(hsotg->regs))
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 434
return PTR_ERR(hsotg->regs);
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 435
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 436
dev_dbg(&dev->dev, "mapped PA %08lx to VA %p\n",
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 437
(unsigned long)res->start, hsotg->regs);
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 438
09a75e85779014 drivers/usb/dwc2/platform.c Marek Szyprowski 2015-10-14 439
retval = dwc2_lowlevel_hw_init(hsotg);
ecb176c63ac49d drivers/usb/dwc2/platform.c Mian Yousaf Kaukab 2015-04-29 440
if (retval)
ecb176c63ac49d drivers/usb/dwc2/platform.c Mian Yousaf Kaukab 2015-04-29 441
return retval;
ecb176c63ac49d drivers/usb/dwc2/platform.c Mian Yousaf Kaukab 2015-04-29 442
09a75e85779014 drivers/usb/dwc2/platform.c Marek Szyprowski 2015-10-14 443
spin_lock_init(&hsotg->lock);
09a75e85779014 drivers/usb/dwc2/platform.c Marek Szyprowski 2015-10-14 444
a40a00318c7fcd drivers/usb/dwc2/platform.c Heiko Stübner 2015-12-18 445
hsotg->irq = platform_get_irq(dev, 0);
b33f37064b743d drivers/usb/dwc2/platform.c Stephen Boyd 2019-07-30 446
if (hsotg->irq < 0)
a40a00318c7fcd drivers/usb/dwc2/platform.c Heiko Stübner 2015-12-18 447
return hsotg->irq;
f74875dc36135e drivers/usb/dwc2/platform.c Stefan Wahren 2015-11-12 448
f74875dc36135e drivers/usb/dwc2/platform.c Stefan Wahren 2015-11-12 449
dev_dbg(hsotg->dev, "registering common handler for irq%d\n",
a40a00318c7fcd drivers/usb/dwc2/platform.c Heiko Stübner 2015-12-18 450
hsotg->irq);
a40a00318c7fcd drivers/usb/dwc2/platform.c Heiko Stübner 2015-12-18 451
retval = devm_request_irq(hsotg->dev, hsotg->irq,
f74875dc36135e drivers/usb/dwc2/platform.c Stefan Wahren 2015-11-12 452
dwc2_handle_common_intr, IRQF_SHARED,
f74875dc36135e drivers/usb/dwc2/platform.c Stefan Wahren 2015-11-12 453
dev_name(hsotg->dev), hsotg);
f74875dc36135e drivers/usb/dwc2/platform.c Stefan Wahren 2015-11-12 454
if (retval)
f74875dc36135e drivers/usb/dwc2/platform.c Stefan Wahren 2015-11-12 455
return retval;
f74875dc36135e drivers/usb/dwc2/platform.c Stefan Wahren 2015-11-12 456
e0f681c2c11a25 drivers/usb/dwc2/platform.c Fabrice Gasnier 2018-09-05 457
hsotg->vbus_supply = devm_regulator_get_optional(hsotg->dev, "vbus");
e0f681c2c11a25 drivers/usb/dwc2/platform.c Fabrice Gasnier 2018-09-05 458
if (IS_ERR(hsotg->vbus_supply)) {
e0f681c2c11a25 drivers/usb/dwc2/platform.c Fabrice Gasnier 2018-09-05 459
retval = PTR_ERR(hsotg->vbus_supply);
e0f681c2c11a25 drivers/usb/dwc2/platform.c Fabrice Gasnier 2018-09-05 460
hsotg->vbus_supply = NULL;
e0f681c2c11a25 drivers/usb/dwc2/platform.c Fabrice Gasnier 2018-09-05 461
if (retval != -ENODEV)
e0f681c2c11a25 drivers/usb/dwc2/platform.c Fabrice Gasnier 2018-09-05 462
return retval;
e0f681c2c11a25 drivers/usb/dwc2/platform.c Fabrice Gasnier 2018-09-05 463
}
e0f681c2c11a25 drivers/usb/dwc2/platform.c Fabrice Gasnier 2018-09-05 464
09a75e85779014 drivers/usb/dwc2/platform.c Marek Szyprowski 2015-10-14 465
retval = dwc2_lowlevel_hw_enable(hsotg);
09a75e85779014 drivers/usb/dwc2/platform.c Marek Szyprowski 2015-10-14 466
if (retval)
09a75e85779014 drivers/usb/dwc2/platform.c Marek Szyprowski 2015-10-14 467
return retval;
09a75e85779014 drivers/usb/dwc2/platform.c Marek Szyprowski 2015-10-14 468
d9707490077bee drivers/usb/dwc2/platform.c Bruno Meirelles Herrera 2018-08-27 469
hsotg->needs_byte_swap = dwc2_check_core_endianness(hsotg);
d9707490077bee drivers/usb/dwc2/platform.c Bruno Meirelles Herrera 2018-08-27 470
5268ed9d2e3b52 drivers/usb/dwc2/platform.c John Youn 2015-12-17 471
retval = dwc2_get_dr_mode(hsotg);
5268ed9d2e3b52 drivers/usb/dwc2/platform.c John Youn 2015-12-17 472
if (retval)
a6ef3e02542a33 drivers/usb/dwc2/platform.c John Youn 2016-04-27 473
goto error;
5268ed9d2e3b52 drivers/usb/dwc2/platform.c John Youn 2015-12-17 474
c846b03ff76714 drivers/usb/dwc2/platform.c Douglas Anderson 2019-05-20 475
hsotg->need_phy_for_wake =
c846b03ff76714 drivers/usb/dwc2/platform.c Douglas Anderson 2019-05-20 476
of_property_read_bool(dev->dev.of_node,
c846b03ff76714 drivers/usb/dwc2/platform.c Douglas Anderson 2019-05-20 477
"snps,need-phy-for-wake");
c846b03ff76714 drivers/usb/dwc2/platform.c Douglas Anderson 2019-05-20 478
65dc2e72528610 drivers/usb/dwc2/platform.c Minas Harutyunyan 2020-05-21 479
/*
65dc2e72528610 drivers/usb/dwc2/platform.c Minas Harutyunyan 2020-05-21 480
* Before performing any core related operations
65dc2e72528610 drivers/usb/dwc2/platform.c Minas Harutyunyan 2020-05-21 481
* check core version.
65dc2e72528610 drivers/usb/dwc2/platform.c Minas Harutyunyan 2020-05-21 482
*/
65dc2e72528610 drivers/usb/dwc2/platform.c Minas Harutyunyan 2020-05-21 483
retval = dwc2_check_core_version(hsotg);
65dc2e72528610 drivers/usb/dwc2/platform.c Minas Harutyunyan 2020-05-21 484
if (retval)
65dc2e72528610 drivers/usb/dwc2/platform.c Minas Harutyunyan 2020-05-21 485
goto error;
65dc2e72528610 drivers/usb/dwc2/platform.c Minas Harutyunyan 2020-05-21 486
03b32e4c9bd1b5 drivers/usb/dwc2/platform.c John Youn 2016-01-11 487
/*
03b32e4c9bd1b5 drivers/usb/dwc2/platform.c John Youn 2016-01-11 488
* Reset before dwc2_get_hwparams() then it could get power-on real
03b32e4c9bd1b5 drivers/usb/dwc2/platform.c John Youn 2016-01-11 489
* reset value form registers.
03b32e4c9bd1b5 drivers/usb/dwc2/platform.c John Youn 2016-01-11 490
*/
13b1f8e25bfd1d drivers/usb/dwc2/platform.c Vardan Mikayelyan 2018-02-16 491
retval = dwc2_core_reset(hsotg, false);
13b1f8e25bfd1d drivers/usb/dwc2/platform.c Vardan Mikayelyan 2018-02-16 492
if (retval)
13b1f8e25bfd1d drivers/usb/dwc2/platform.c Vardan Mikayelyan 2018-02-16 493
goto error;
03b32e4c9bd1b5 drivers/usb/dwc2/platform.c John Youn 2016-01-11 494
03b32e4c9bd1b5 drivers/usb/dwc2/platform.c John Youn 2016-01-11 495
/* Detect config values from hardware */
09a75e85779014 drivers/usb/dwc2/platform.c Marek Szyprowski 2015-10-14 496
retval = dwc2_get_hwparams(hsotg);
09a75e85779014 drivers/usb/dwc2/platform.c Marek Szyprowski 2015-10-14 497
if (retval)
09a75e85779014 drivers/usb/dwc2/platform.c Marek Szyprowski 2015-10-14 498
goto error;
09a75e85779014 drivers/usb/dwc2/platform.c Marek Szyprowski 2015-10-14 499
13b1f8e25bfd1d drivers/usb/dwc2/platform.c Vardan Mikayelyan 2018-02-16 500
/*
13b1f8e25bfd1d drivers/usb/dwc2/platform.c Vardan Mikayelyan 2018-02-16 501
* For OTG cores, set the force mode bits to reflect the value
13b1f8e25bfd1d drivers/usb/dwc2/platform.c Vardan Mikayelyan 2018-02-16 502
* of dr_mode. Force mode bits should not be touched at any
13b1f8e25bfd1d drivers/usb/dwc2/platform.c Vardan Mikayelyan 2018-02-16 503
* other time after this.
13b1f8e25bfd1d drivers/usb/dwc2/platform.c Vardan Mikayelyan 2018-02-16 504
*/
25362d318371e1 drivers/usb/dwc2/platform.c John Youn 2015-12-17 505
dwc2_force_dr_mode(hsotg);
263b7fb557f797 drivers/usb/dwc2/platform.c John Youn 2015-12-17 506
334bbd4ebe1b34 drivers/usb/dwc2/platform.c John Youn 2016-11-03 507
retval = dwc2_init_params(hsotg);
334bbd4ebe1b34 drivers/usb/dwc2/platform.c John Youn 2016-11-03 508
if (retval)
334bbd4ebe1b34 drivers/usb/dwc2/platform.c John Youn 2016-11-03 509
goto error;
334bbd4ebe1b34 drivers/usb/dwc2/platform.c John Youn 2016-11-03 510
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 511
if (hsotg->params.activate_stm_id_vb_detection) {
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 512
u32 ggpio;
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 513
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 514
hsotg->usb33d = devm_regulator_get(hsotg->dev, "usb33d");
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 515
if (IS_ERR(hsotg->usb33d)) {
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 516
retval = PTR_ERR(hsotg->usb33d);
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 517
if (retval != -EPROBE_DEFER)
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 518
dev_err(hsotg->dev,
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 519
"failed to request usb33d supply: %d\n",
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 520
retval);
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 521
goto error;
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 522
}
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 523
retval = regulator_enable(hsotg->usb33d);
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 524
if (retval) {
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 525
dev_err(hsotg->dev,
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 526
"failed to enable usb33d supply: %d\n", retval);
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 527
goto error;
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 528
}
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 529
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 530
ggpio = dwc2_readl(hsotg, GGPIO);
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 531
ggpio |= GGPIO_STM32_OTG_GCCFG_IDEN;
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 532
ggpio |= GGPIO_STM32_OTG_GCCFG_VBDEN;
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 533
dwc2_writel(hsotg, ggpio, GGPIO);
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 534
}
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 535
e39af88f18dfe9 drivers/usb/dwc2/platform.c Marek Szyprowski 2015-03-10 536
if (hsotg->dr_mode != USB_DR_MODE_HOST) {
f3768997013e1c drivers/usb/dwc2/platform.c Vardan Mikayelyan 2017-12-25 537
retval = dwc2_gadget_init(hsotg);
117777b2c3bb96 drivers/usb/dwc2/platform.c Dinh Nguyen 2014-11-11 538
if (retval)
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 539
goto error_init;
e39af88f18dfe9 drivers/usb/dwc2/platform.c Marek Szyprowski 2015-03-10 540
hsotg->gadget_enabled = 1;
e39af88f18dfe9 drivers/usb/dwc2/platform.c Marek Szyprowski 2015-03-10 541
}
e39af88f18dfe9 drivers/usb/dwc2/platform.c Marek Szyprowski 2015-03-10 542
c846b03ff76714 drivers/usb/dwc2/platform.c Douglas Anderson 2019-05-20 543
/*
c846b03ff76714 drivers/usb/dwc2/platform.c Douglas Anderson 2019-05-20 544
* If we need PHY for wakeup we must be wakeup capable.
c846b03ff76714 drivers/usb/dwc2/platform.c Douglas Anderson 2019-05-20 545
* When we have a device that can wake without the PHY we
c846b03ff76714 drivers/usb/dwc2/platform.c Douglas Anderson 2019-05-20 546
* can adjust this condition.
c846b03ff76714 drivers/usb/dwc2/platform.c Douglas Anderson 2019-05-20 547
*/
c846b03ff76714 drivers/usb/dwc2/platform.c Douglas Anderson 2019-05-20 548
if (hsotg->need_phy_for_wake)
c846b03ff76714 drivers/usb/dwc2/platform.c Douglas Anderson 2019-05-20 549
device_set_wakeup_capable(&dev->dev, true);
c846b03ff76714 drivers/usb/dwc2/platform.c Douglas Anderson 2019-05-20 550
c40cf7705e13d2 drivers/usb/dwc2/platform.c Douglas Anderson 2019-04-16 551
hsotg->reset_phy_on_wake =
c40cf7705e13d2 drivers/usb/dwc2/platform.c Douglas Anderson 2019-04-16 552
of_property_read_bool(dev->dev.of_node,
c40cf7705e13d2 drivers/usb/dwc2/platform.c Douglas Anderson 2019-04-16 553
"snps,reset-phy-on-wake");
c40cf7705e13d2 drivers/usb/dwc2/platform.c Douglas Anderson 2019-04-16 554
if (hsotg->reset_phy_on_wake && !hsotg->phy) {
c40cf7705e13d2 drivers/usb/dwc2/platform.c Douglas Anderson 2019-04-16 555
dev_warn(hsotg->dev,
c40cf7705e13d2 drivers/usb/dwc2/platform.c Douglas Anderson 2019-04-16 556
"Quirk reset-phy-on-wake only supports generic PHYs\n");
c40cf7705e13d2 drivers/usb/dwc2/platform.c Douglas Anderson 2019-04-16 557
hsotg->reset_phy_on_wake = false;
c40cf7705e13d2 drivers/usb/dwc2/platform.c Douglas Anderson 2019-04-16 558
}
c40cf7705e13d2 drivers/usb/dwc2/platform.c Douglas Anderson 2019-04-16 559
e39af88f18dfe9 drivers/usb/dwc2/platform.c Marek Szyprowski 2015-03-10 560
if (hsotg->dr_mode != USB_DR_MODE_PERIPHERAL) {
4fe160d51e4226 drivers/usb/dwc2/platform.c Heiner Kallweit 2017-01-25 561
retval = dwc2_hcd_init(hsotg);
e39af88f18dfe9 drivers/usb/dwc2/platform.c Marek Szyprowski 2015-03-10 562
if (retval) {
e39af88f18dfe9 drivers/usb/dwc2/platform.c Marek Szyprowski 2015-03-10 563
if (hsotg->gadget_enabled)
1f91b4cc03556b drivers/usb/dwc2/platform.c Felipe Balbi 2015-08-06 564
dwc2_hsotg_remove(hsotg);
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 565
goto error_init;
e39af88f18dfe9 drivers/usb/dwc2/platform.c Marek Szyprowski 2015-03-10 566
}
e39af88f18dfe9 drivers/usb/dwc2/platform.c Marek Szyprowski 2015-03-10 567
hsotg->hcd_enabled = 1;
e39af88f18dfe9 drivers/usb/dwc2/platform.c Marek Szyprowski 2015-03-10 568
}
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 569
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 570
platform_set_drvdata(dev, hsotg);
20fe440982e72d drivers/usb/dwc2/platform.c Vardan Mikayelyan 2018-02-16 571
hsotg->hibernated = 0;
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 572
f91eea447ac32d drivers/usb/dwc2/platform.c Mian Yousaf Kaukab 2015-04-29 573
dwc2_debugfs_init(hsotg);
f91eea447ac32d drivers/usb/dwc2/platform.c Mian Yousaf Kaukab 2015-04-29 574
09a75e85779014 drivers/usb/dwc2/platform.c Marek Szyprowski 2015-10-14 575
/* Gadget code manages lowlevel hw on its own */
09a75e85779014 drivers/usb/dwc2/platform.c Marek Szyprowski 2015-10-14 576
if (hsotg->dr_mode == USB_DR_MODE_PERIPHERAL)
09a75e85779014 drivers/usb/dwc2/platform.c Marek Szyprowski 2015-10-14 577
dwc2_lowlevel_hw_disable(hsotg);
09a75e85779014 drivers/usb/dwc2/platform.c Marek Szyprowski 2015-10-14 578
207324a321a866 drivers/usb/dwc2/platform.c Minas Harutyunyan 2020-06-09 579
#if IS_ENABLED(CONFIG_USB_DWC2_PERIPHERAL) || \
207324a321a866 drivers/usb/dwc2/platform.c Minas Harutyunyan 2020-06-09 580
IS_ENABLED(CONFIG_USB_DWC2_DUAL_ROLE)
207324a321a866 drivers/usb/dwc2/platform.c Minas Harutyunyan 2020-06-09 581
/* Postponed adding a new gadget to the udc class driver list */
207324a321a866 drivers/usb/dwc2/platform.c Minas Harutyunyan 2020-06-09 582
if (hsotg->gadget_enabled) {
207324a321a866 drivers/usb/dwc2/platform.c Minas Harutyunyan 2020-06-09 583
retval = usb_add_gadget_udc(hsotg->dev, &hsotg->gadget);
207324a321a866 drivers/usb/dwc2/platform.c Minas Harutyunyan 2020-06-09 584
if (retval) {
ac66bc02b04eeb drivers/usb/dwc2/platform.c Marek Szyprowski 2020-07-16 585
hsotg->gadget.udc = NULL;
207324a321a866 drivers/usb/dwc2/platform.c Minas Harutyunyan 2020-06-09 586
dwc2_hsotg_remove(hsotg);
602fb68e303fb9 drivers/usb/dwc2/platform.c Martin Blumenstingl 2020-07-04 587
goto error_debugfs;
207324a321a866 drivers/usb/dwc2/platform.c Minas Harutyunyan 2020-06-09 588
}
207324a321a866 drivers/usb/dwc2/platform.c Minas Harutyunyan 2020-06-09 589
}
207324a321a866 drivers/usb/dwc2/platform.c Minas Harutyunyan 2020-06-09 590
#endif /* CONFIG_USB_DWC2_PERIPHERAL || CONFIG_USB_DWC2_DUAL_ROLE */
09a75e85779014 drivers/usb/dwc2/platform.c Marek Szyprowski 2015-10-14 591
return 0;
09a75e85779014 drivers/usb/dwc2/platform.c Marek Szyprowski 2015-10-14 592
602fb68e303fb9 drivers/usb/dwc2/platform.c Martin Blumenstingl 2020-07-04 @593
error_debugfs:
602fb68e303fb9 drivers/usb/dwc2/platform.c Martin Blumenstingl 2020-07-04 594
dwc2_debugfs_exit(hsotg);
602fb68e303fb9 drivers/usb/dwc2/platform.c Martin Blumenstingl 2020-07-04 595
if (hsotg->hcd_enabled)
602fb68e303fb9 drivers/usb/dwc2/platform.c Martin Blumenstingl 2020-07-04 596
dwc2_hcd_remove(hsotg);
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 597
error_init:
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 598
if (hsotg->params.activate_stm_id_vb_detection)
a415083a11cc76 drivers/usb/dwc2/platform.c Amelie Delaunay 2020-01-24 599
regulator_disable(hsotg->usb33d);
09a75e85779014 drivers/usb/dwc2/platform.c Marek Szyprowski 2015-10-14 600
error:
ac66bc02b04eeb drivers/usb/dwc2/platform.c Marek Szyprowski 2020-07-16 601
if (hsotg->dr_mode != USB_DR_MODE_PERIPHERAL)
09a75e85779014 drivers/usb/dwc2/platform.c Marek Szyprowski 2015-10-14 602
dwc2_lowlevel_hw_disable(hsotg);
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 603
return retval;
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 604 }
5b9974b13e3648 drivers/staging/dwc2/platform.c Matthijs Kooijman 2013-04-22 605
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org