* [PATCH 0/5] usb drivers use devm_clk_get_enabled() helpers
@ 2024-08-21 12:10 Lei Liu
2024-08-21 12:10 ` [PATCH 1/5] usb: aspeed_udc: Use " Lei Liu
` (4 more replies)
0 siblings, 5 replies; 11+ messages in thread
From: Lei Liu @ 2024-08-21 12:10 UTC (permalink / raw)
To: linux-aspeed
The devm_clk_get_enabled() helpers:
- call devm_clk_get()
- call clk_prepare_enable() and register what is needed in order to
call clk_disable_unprepare() when needed, as a managed resource.
This simplifies the code and avoids calls to clk_disable_unprepare().
Lei Liu (5):
usb: aspeed_udc: Use devm_clk_get_enabled() helpers
usb: pxa27x_udc: Use devm_clk_get_enabled() helpers
usb: r8a66597-udc: Use devm_clk_get_enabled() helpers
usb: mpfs: Use devm_clk_get_enabled() helpers
usb: ux500: Use devm_clk_get_enabled() helpers
drivers/usb/gadget/udc/aspeed_udc.c | 9 +--------
drivers/usb/gadget/udc/pxa27x_udc.c | 6 +-----
drivers/usb/gadget/udc/r8a66597-udc.c | 16 ++++------------
drivers/usb/musb/mpfs.c | 22 ++++++----------------
drivers/usb/musb/ux500.c | 18 ++++--------------
5 files changed, 16 insertions(+), 55 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/5] usb: aspeed_udc: Use devm_clk_get_enabled() helpers
2024-08-21 12:10 [PATCH 0/5] usb drivers use devm_clk_get_enabled() helpers Lei Liu
@ 2024-08-21 12:10 ` Lei Liu
2024-08-22 1:40 ` Andrew Jeffery
2024-08-21 12:10 ` [PATCH 2/5] usb: pxa27x_udc: " Lei Liu
` (3 subsequent siblings)
4 siblings, 1 reply; 11+ messages in thread
From: Lei Liu @ 2024-08-21 12:10 UTC (permalink / raw)
To: linux-aspeed
The devm_clk_get_enabled() helpers:
- call devm_clk_get()
- call clk_prepare_enable() and register what is needed in order to
call clk_disable_unprepare() when needed, as a managed resource.
This simplifies the code and avoids calls to clk_disable_unprepare().
Signed-off-by: Lei Liu <liulei.rjpt@vivo.com>
---
drivers/usb/gadget/udc/aspeed_udc.c | 9 +--------
1 file changed, 1 insertion(+), 8 deletions(-)
diff --git a/drivers/usb/gadget/udc/aspeed_udc.c b/drivers/usb/gadget/udc/aspeed_udc.c
index f4781e611aaa..a362e31f7550 100644
--- a/drivers/usb/gadget/udc/aspeed_udc.c
+++ b/drivers/usb/gadget/udc/aspeed_udc.c
@@ -1459,8 +1459,6 @@ static void ast_udc_remove(struct platform_device *pdev)
ctrl = ast_udc_read(udc, AST_UDC_FUNC_CTRL) & ~USB_UPSTREAM_EN;
ast_udc_write(udc, ctrl, AST_UDC_FUNC_CTRL);
- clk_disable_unprepare(udc->clk);
-
spin_unlock_irqrestore(&udc->lock, flags);
if (udc->ep0_buf)
@@ -1500,16 +1498,11 @@ static int ast_udc_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, udc);
- udc->clk = devm_clk_get(&pdev->dev, NULL);
+ udc->clk = devm_clk_get_enabled(&pdev->dev, NULL);
if (IS_ERR(udc->clk)) {
rc = PTR_ERR(udc->clk);
goto err;
}
- rc = clk_prepare_enable(udc->clk);
- if (rc) {
- dev_err(&pdev->dev, "Failed to enable clock (0x%x)\n", rc);
- goto err;
- }
/* Check if we need to limit the HW to USB1 */
max_speed = usb_get_maximum_speed(&pdev->dev);
--
2.34.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 2/5] usb: pxa27x_udc: Use devm_clk_get_enabled() helpers
2024-08-21 12:10 [PATCH 0/5] usb drivers use devm_clk_get_enabled() helpers Lei Liu
2024-08-21 12:10 ` [PATCH 1/5] usb: aspeed_udc: Use " Lei Liu
@ 2024-08-21 12:10 ` Lei Liu
2024-08-22 3:55 ` kernel test robot
` (2 more replies)
2024-08-21 12:10 ` [PATCH 3/5] usb: r8a66597-udc: " Lei Liu
` (2 subsequent siblings)
4 siblings, 3 replies; 11+ messages in thread
From: Lei Liu @ 2024-08-21 12:10 UTC (permalink / raw)
To: linux-aspeed
The devm_clk_get_enabled() helpers:
- call devm_clk_get()
- call clk_prepare_enable() and register what is needed in order to
call clk_disable_unprepare() when needed, as a managed resource.
This simplifies the code and avoids calls to clk_disable_unprepare().
Signed-off-by: Lei Liu <liulei.rjpt@vivo.com>
---
drivers/usb/gadget/udc/pxa27x_udc.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/drivers/usb/gadget/udc/pxa27x_udc.c b/drivers/usb/gadget/udc/pxa27x_udc.c
index 1a6317e4b2a3..6e99e75f1acb 100644
--- a/drivers/usb/gadget/udc/pxa27x_udc.c
+++ b/drivers/usb/gadget/udc/pxa27x_udc.c
@@ -2398,14 +2398,10 @@ static int pxa_udc_probe(struct platform_device *pdev)
if (udc->gpiod)
gpiod_direction_output(udc->gpiod, 0);
- udc->clk = devm_clk_get(&pdev->dev, NULL);
+ udc->clk = clk_prepare_enable(&pdev->dev, NULL);
if (IS_ERR(udc->clk))
return PTR_ERR(udc->clk);
- retval = clk_prepare(udc->clk);
- if (retval)
- return retval;
-
udc->vbus_sensed = 0;
the_controller = udc;
--
2.34.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 3/5] usb: r8a66597-udc: Use devm_clk_get_enabled() helpers
2024-08-21 12:10 [PATCH 0/5] usb drivers use devm_clk_get_enabled() helpers Lei Liu
2024-08-21 12:10 ` [PATCH 1/5] usb: aspeed_udc: Use " Lei Liu
2024-08-21 12:10 ` [PATCH 2/5] usb: pxa27x_udc: " Lei Liu
@ 2024-08-21 12:10 ` Lei Liu
2024-08-21 12:10 ` [PATCH 4/5] usb: mpfs: " Lei Liu
2024-08-21 12:10 ` [PATCH 5/5] usb: ux500: " Lei Liu
4 siblings, 0 replies; 11+ messages in thread
From: Lei Liu @ 2024-08-21 12:10 UTC (permalink / raw)
To: linux-aspeed
The devm_clk_get_enabled() helpers:
- call devm_clk_get()
- call clk_prepare_enable() and register what is needed in order to
call clk_disable_unprepare() when needed, as a managed resource.
This simplifies the code and avoids calls to clk_disable_unprepare().
Signed-off-by: Lei Liu <liulei.rjpt@vivo.com>
---
drivers/usb/gadget/udc/r8a66597-udc.c | 16 ++++------------
1 file changed, 4 insertions(+), 12 deletions(-)
diff --git a/drivers/usb/gadget/udc/r8a66597-udc.c b/drivers/usb/gadget/udc/r8a66597-udc.c
index db4a10a979f9..bdbe5ead741e 100644
--- a/drivers/usb/gadget/udc/r8a66597-udc.c
+++ b/drivers/usb/gadget/udc/r8a66597-udc.c
@@ -1812,10 +1812,6 @@ static void r8a66597_remove(struct platform_device *pdev)
usb_del_gadget_udc(&r8a66597->gadget);
del_timer_sync(&r8a66597->timer);
r8a66597_free_request(&r8a66597->ep[0].ep, r8a66597->ep0_req);
-
- if (r8a66597->pdata->on_chip) {
- clk_disable_unprepare(r8a66597->clk);
- }
}
static void nop_completion(struct usb_ep *ep, struct usb_request *r)
@@ -1876,18 +1872,17 @@ static int r8a66597_probe(struct platform_device *pdev)
if (r8a66597->pdata->on_chip) {
snprintf(clk_name, sizeof(clk_name), "usb%d", pdev->id);
- r8a66597->clk = devm_clk_get(dev, clk_name);
+ r8a66597->clk = devm_clk_get_enabled(dev, clk_name);
if (IS_ERR(r8a66597->clk)) {
dev_err(dev, "cannot get clock \"%s\"\n", clk_name);
return PTR_ERR(r8a66597->clk);
}
- clk_prepare_enable(r8a66597->clk);
}
if (r8a66597->pdata->sudmac) {
ret = r8a66597_sudmac_ioremap(r8a66597, pdev);
if (ret < 0)
- goto clean_up2;
+ goto err_add_udc;
}
disable_controller(r8a66597); /* make sure controller is disabled */
@@ -1896,7 +1891,7 @@ static int r8a66597_probe(struct platform_device *pdev)
udc_name, r8a66597);
if (ret < 0) {
dev_err(dev, "request_irq error (%d)\n", ret);
- goto clean_up2;
+ goto err_add_udc;
}
INIT_LIST_HEAD(&r8a66597->gadget.ep_list);
@@ -1939,7 +1934,7 @@ static int r8a66597_probe(struct platform_device *pdev)
GFP_KERNEL);
if (r8a66597->ep0_req == NULL) {
ret = -ENOMEM;
- goto clean_up2;
+ goto err_add_udc;
}
r8a66597->ep0_req->complete = nop_completion;
@@ -1952,9 +1947,6 @@ static int r8a66597_probe(struct platform_device *pdev)
err_add_udc:
r8a66597_free_request(&r8a66597->ep[0].ep, r8a66597->ep0_req);
-clean_up2:
- if (r8a66597->pdata->on_chip)
- clk_disable_unprepare(r8a66597->clk);
if (r8a66597->ep0_req)
r8a66597_free_request(&r8a66597->ep[0].ep, r8a66597->ep0_req);
--
2.34.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 4/5] usb: mpfs: Use devm_clk_get_enabled() helpers
2024-08-21 12:10 [PATCH 0/5] usb drivers use devm_clk_get_enabled() helpers Lei Liu
` (2 preceding siblings ...)
2024-08-21 12:10 ` [PATCH 3/5] usb: r8a66597-udc: " Lei Liu
@ 2024-08-21 12:10 ` Lei Liu
2024-08-21 12:28 ` Conor Dooley
2024-08-21 12:10 ` [PATCH 5/5] usb: ux500: " Lei Liu
4 siblings, 1 reply; 11+ messages in thread
From: Lei Liu @ 2024-08-21 12:10 UTC (permalink / raw)
To: linux-aspeed
The devm_clk_get_enabled() helpers:
- call devm_clk_get()
- call clk_prepare_enable() and register what is needed in order to
call clk_disable_unprepare() when needed, as a managed resource.
This simplifies the code and avoids calls to clk_disable_unprepare().
Signed-off-by: Lei Liu <liulei.rjpt@vivo.com>
---
drivers/usb/musb/mpfs.c | 22 ++++++----------------
1 file changed, 6 insertions(+), 16 deletions(-)
diff --git a/drivers/usb/musb/mpfs.c b/drivers/usb/musb/mpfs.c
index 29c7e5cdb230..06faf5ab22e6 100644
--- a/drivers/usb/musb/mpfs.c
+++ b/drivers/usb/musb/mpfs.c
@@ -159,19 +159,13 @@ static int mpfs_probe(struct platform_device *pdev)
return -ENOMEM;
}
- clk = devm_clk_get(&pdev->dev, NULL);
+ clk = devm_clk_get_enable(&pdev->dev, NULL);
if (IS_ERR(clk)) {
dev_err(&pdev->dev, "failed to get clock\n");
ret = PTR_ERR(clk);
goto err_phy_release;
}
- ret = clk_prepare_enable(clk);
- if (ret) {
- dev_err(&pdev->dev, "failed to enable clock\n");
- goto err_phy_release;
- }
-
musb_pdev->dev.parent = dev;
musb_pdev->dev.coherent_dma_mask = DMA_BIT_MASK(39);
musb_pdev->dev.dma_mask = &musb_pdev->dev.coherent_dma_mask;
@@ -184,7 +178,7 @@ static int mpfs_probe(struct platform_device *pdev)
pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL);
if (!pdata) {
ret = -ENOMEM;
- goto err_clk_disable;
+ goto err_phy_release;
}
pdata->config = &mpfs_musb_hdrc_config;
@@ -203,7 +197,7 @@ static int mpfs_probe(struct platform_device *pdev)
dev_err(dev, "failed to register usb-phy %ld\n",
PTR_ERR(glue->phy));
ret = PTR_ERR(glue->phy);
- goto err_clk_disable;
+ goto err_phy_release;
}
platform_set_drvdata(pdev, glue);
@@ -211,27 +205,24 @@ static int mpfs_probe(struct platform_device *pdev)
ret = platform_device_add_resources(musb_pdev, pdev->resource, pdev->num_resources);
if (ret) {
dev_err(dev, "failed to add resources\n");
- goto err_clk_disable;
+ goto err_phy_release;
}
ret = platform_device_add_data(musb_pdev, pdata, sizeof(*pdata));
if (ret) {
dev_err(dev, "failed to add platform_data\n");
- goto err_clk_disable;
+ goto err_phy_release;
}
ret = platform_device_add(musb_pdev);
if (ret) {
dev_err(dev, "failed to register musb device\n");
- goto err_clk_disable;
+ goto err_phy_release;
}
dev_info(&pdev->dev, "Registered MPFS MUSB driver\n");
return 0;
-err_clk_disable:
- clk_disable_unprepare(clk);
-
err_phy_release:
usb_phy_generic_unregister(glue->phy);
platform_device_put(musb_pdev);
@@ -242,7 +233,6 @@ static void mpfs_remove(struct platform_device *pdev)
{
struct mpfs_glue *glue = platform_get_drvdata(pdev);
- clk_disable_unprepare(glue->clk);
platform_device_unregister(glue->musb);
usb_phy_generic_unregister(pdev);
}
--
2.34.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 5/5] usb: ux500: Use devm_clk_get_enabled() helpers
2024-08-21 12:10 [PATCH 0/5] usb drivers use devm_clk_get_enabled() helpers Lei Liu
` (3 preceding siblings ...)
2024-08-21 12:10 ` [PATCH 4/5] usb: mpfs: " Lei Liu
@ 2024-08-21 12:10 ` Lei Liu
4 siblings, 0 replies; 11+ messages in thread
From: Lei Liu @ 2024-08-21 12:10 UTC (permalink / raw)
To: linux-aspeed
The devm_clk_get_enabled() helpers:
- call devm_clk_get()
- call clk_prepare_enable() and register what is needed in order to
call clk_disable_unprepare() when needed, as a managed resource.
This simplifies the code and avoids calls to clk_disable_unprepare().
Signed-off-by: Lei Liu <liulei.rjpt@vivo.com>
---
drivers/usb/musb/ux500.c | 18 ++++--------------
1 file changed, 4 insertions(+), 14 deletions(-)
diff --git a/drivers/usb/musb/ux500.c b/drivers/usb/musb/ux500.c
index c8d9d2a1d2f0..51ce67678c0c 100644
--- a/drivers/usb/musb/ux500.c
+++ b/drivers/usb/musb/ux500.c
@@ -246,19 +246,13 @@ static int ux500_probe(struct platform_device *pdev)
goto err0;
}
- clk = devm_clk_get(&pdev->dev, NULL);
+ clk = clk_prepare_enable(&pdev->dev, NULL);
if (IS_ERR(clk)) {
dev_err(&pdev->dev, "failed to get clock\n");
ret = PTR_ERR(clk);
goto err1;
}
- ret = clk_prepare_enable(clk);
- if (ret) {
- dev_err(&pdev->dev, "failed to enable clock\n");
- goto err1;
- }
-
musb->dev.parent = &pdev->dev;
musb->dev.dma_mask = &pdev->dev.coherent_dma_mask;
musb->dev.coherent_dma_mask = pdev->dev.coherent_dma_mask;
@@ -276,26 +270,23 @@ static int ux500_probe(struct platform_device *pdev)
ret = platform_device_add_resources(musb, pdev->resource, pdev->num_resources);
if (ret) {
dev_err(&pdev->dev, "failed to add resources\n");
- goto err2;
+ goto err1;
}
ret = platform_device_add_data(musb, pdata, sizeof(*pdata));
if (ret) {
dev_err(&pdev->dev, "failed to add platform_data\n");
- goto err2;
+ goto err1;
}
ret = platform_device_add(musb);
if (ret) {
dev_err(&pdev->dev, "failed to register musb device\n");
- goto err2;
+ goto err1;
}
return 0;
-err2:
- clk_disable_unprepare(clk);
-
err1:
platform_device_put(musb);
@@ -308,7 +299,6 @@ static void ux500_remove(struct platform_device *pdev)
struct ux500_glue *glue = platform_get_drvdata(pdev);
platform_device_unregister(glue->musb);
- clk_disable_unprepare(glue->clk);
}
#ifdef CONFIG_PM_SLEEP
--
2.34.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 4/5] usb: mpfs: Use devm_clk_get_enabled() helpers
2024-08-21 12:10 ` [PATCH 4/5] usb: mpfs: " Lei Liu
@ 2024-08-21 12:28 ` Conor Dooley
0 siblings, 0 replies; 11+ messages in thread
From: Conor Dooley @ 2024-08-21 12:28 UTC (permalink / raw)
To: linux-aspeed
On Wed, Aug 21, 2024 at 08:10:42PM +0800, Lei Liu wrote:
> The devm_clk_get_enabled() helpers:
> - call devm_clk_get()
> - call clk_prepare_enable() and register what is needed in order to
> call clk_disable_unprepare() when needed, as a managed resource.
>
> This simplifies the code and avoids calls to clk_disable_unprepare().
>
> Signed-off-by: Lei Liu <liulei.rjpt@vivo.com>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <http://lists.ozlabs.org/pipermail/linux-aspeed/attachments/20240821/49844545/attachment.sig>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/5] usb: aspeed_udc: Use devm_clk_get_enabled() helpers
2024-08-21 12:10 ` [PATCH 1/5] usb: aspeed_udc: Use " Lei Liu
@ 2024-08-22 1:40 ` Andrew Jeffery
0 siblings, 0 replies; 11+ messages in thread
From: Andrew Jeffery @ 2024-08-22 1:40 UTC (permalink / raw)
To: linux-aspeed
On Wed, 2024-08-21 at 20:10 +0800, Lei Liu wrote:
> The devm_clk_get_enabled() helpers:
> - call devm_clk_get()
> - call clk_prepare_enable() and register what is needed in order to
> call clk_disable_unprepare() when needed, as a managed resource.
>
> This simplifies the code and avoids calls to clk_disable_unprepare().
>
> Signed-off-by: Lei Liu <liulei.rjpt@vivo.com>
Acked-by: Andrew Jeffery <andrew@codeconstruct.com.au>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 2/5] usb: pxa27x_udc: Use devm_clk_get_enabled() helpers
2024-08-21 12:10 ` [PATCH 2/5] usb: pxa27x_udc: " Lei Liu
@ 2024-08-22 3:55 ` kernel test robot
2024-08-22 4:16 ` kernel test robot
2024-08-22 4:26 ` Greg Kroah-Hartman
2 siblings, 0 replies; 11+ messages in thread
From: kernel test robot @ 2024-08-22 3:55 UTC (permalink / raw)
To: linux-aspeed
Hi Lei,
kernel test robot noticed the following build errors:
[auto build test ERROR on usb/usb-testing]
[also build test ERROR on usb/usb-next usb/usb-linus linus/master v6.11-rc4 next-20240821]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Lei-Liu/usb-aspeed_udc-Use-devm_clk_get_enabled-helpers/20240821-201358
base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-testing
patch link: https://lore.kernel.org/r/20240821121048.31566-3-liulei.rjpt%40vivo.com
patch subject: [PATCH 2/5] usb: pxa27x_udc: Use devm_clk_get_enabled() helpers
config: x86_64-randconfig-161-20240822 (https://download.01.org/0day-ci/archive/20240822/202408221155.UveHbLu0-lkp at intel.com/config)
compiler: clang version 18.1.5 (https://github.com/llvm/llvm-project 617a15a9eac96088ae5e9134248d8236e34b91b1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240822/202408221155.UveHbLu0-lkp at intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202408221155.UveHbLu0-lkp at intel.com/
All errors (new ones prefixed by >>):
>> drivers/usb/gadget/udc/pxa27x_udc.c:2401:44: error: too many arguments to function call, expected single argument 'clk', have 2 arguments
2401 | udc->clk = clk_prepare_enable(&pdev->dev, NULL);
| ~~~~~~~~~~~~~~~~~~ ^~~~
include/linux/stddef.h:8:14: note: expanded from macro 'NULL'
8 | #define NULL ((void *)0)
| ^~~~~~~~~~~
include/linux/clk.h:1107:19: note: 'clk_prepare_enable' declared here
1107 | static inline int clk_prepare_enable(struct clk *clk)
| ^ ~~~~~~~~~~~~~~~
1 error generated.
vim +/clk +2401 drivers/usb/gadget/udc/pxa27x_udc.c
2345
2346 /**
2347 * pxa_udc_probe - probes the udc device
2348 * @pdev: platform device
2349 *
2350 * Perform basic init : allocates udc clock, creates sysfs files, requests
2351 * irq.
2352 */
2353 static int pxa_udc_probe(struct platform_device *pdev)
2354 {
2355 struct pxa_udc *udc = &memory;
2356 int retval = 0, gpio;
2357 struct pxa2xx_udc_mach_info *mach = dev_get_platdata(&pdev->dev);
2358 unsigned long gpio_flags;
2359
2360 if (mach) {
2361 gpio_flags = mach->gpio_pullup_inverted ? GPIOF_ACTIVE_LOW : 0;
2362 gpio = mach->gpio_pullup;
2363 if (gpio_is_valid(gpio)) {
2364 retval = devm_gpio_request_one(&pdev->dev, gpio,
2365 gpio_flags,
2366 "USB D+ pullup");
2367 if (retval)
2368 return retval;
2369 udc->gpiod = gpio_to_desc(mach->gpio_pullup);
2370 }
2371 udc->udc_command = mach->udc_command;
2372 } else {
2373 udc->gpiod = devm_gpiod_get(&pdev->dev, NULL, GPIOD_ASIS);
2374 }
2375
2376 udc->regs = devm_platform_ioremap_resource(pdev, 0);
2377 if (IS_ERR(udc->regs))
2378 return PTR_ERR(udc->regs);
2379 udc->irq = platform_get_irq(pdev, 0);
2380 if (udc->irq < 0)
2381 return udc->irq;
2382
2383 udc->dev = &pdev->dev;
2384 if (of_have_populated_dt()) {
2385 udc->transceiver =
2386 devm_usb_get_phy_by_phandle(udc->dev, "phys", 0);
2387 if (IS_ERR(udc->transceiver))
2388 return PTR_ERR(udc->transceiver);
2389 } else {
2390 udc->transceiver = usb_get_phy(USB_PHY_TYPE_USB2);
2391 }
2392
2393 if (IS_ERR(udc->gpiod)) {
2394 dev_err(&pdev->dev, "Couldn't find or request D+ gpio : %ld\n",
2395 PTR_ERR(udc->gpiod));
2396 return PTR_ERR(udc->gpiod);
2397 }
2398 if (udc->gpiod)
2399 gpiod_direction_output(udc->gpiod, 0);
2400
> 2401 udc->clk = clk_prepare_enable(&pdev->dev, NULL);
2402 if (IS_ERR(udc->clk))
2403 return PTR_ERR(udc->clk);
2404
2405 udc->vbus_sensed = 0;
2406
2407 the_controller = udc;
2408 platform_set_drvdata(pdev, udc);
2409 udc_init_data(udc);
2410
2411 /* irq setup after old hardware state is cleaned up */
2412 retval = devm_request_irq(&pdev->dev, udc->irq, pxa_udc_irq,
2413 IRQF_SHARED, driver_name, udc);
2414 if (retval != 0) {
2415 dev_err(udc->dev, "%s: can't get irq %i, err %d\n",
2416 driver_name, udc->irq, retval);
2417 goto err;
2418 }
2419
2420 if (!IS_ERR_OR_NULL(udc->transceiver))
2421 usb_register_notifier(udc->transceiver, &pxa27x_udc_phy);
2422 retval = usb_add_gadget_udc(&pdev->dev, &udc->gadget);
2423 if (retval)
2424 goto err_add_gadget;
2425
2426 pxa_init_debugfs(udc);
2427 if (should_enable_udc(udc))
2428 udc_enable(udc);
2429 return 0;
2430
2431 err_add_gadget:
2432 if (!IS_ERR_OR_NULL(udc->transceiver))
2433 usb_unregister_notifier(udc->transceiver, &pxa27x_udc_phy);
2434 err:
2435 clk_unprepare(udc->clk);
2436 return retval;
2437 }
2438
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 2/5] usb: pxa27x_udc: Use devm_clk_get_enabled() helpers
2024-08-21 12:10 ` [PATCH 2/5] usb: pxa27x_udc: " Lei Liu
2024-08-22 3:55 ` kernel test robot
@ 2024-08-22 4:16 ` kernel test robot
2024-08-22 4:26 ` Greg Kroah-Hartman
2 siblings, 0 replies; 11+ messages in thread
From: kernel test robot @ 2024-08-22 4:16 UTC (permalink / raw)
To: linux-aspeed
Hi Lei,
kernel test robot noticed the following build errors:
[auto build test ERROR on usb/usb-testing]
[also build test ERROR on usb/usb-next usb/usb-linus linus/master v6.11-rc4 next-20240821]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Lei-Liu/usb-aspeed_udc-Use-devm_clk_get_enabled-helpers/20240821-201358
base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-testing
patch link: https://lore.kernel.org/r/20240821121048.31566-3-liulei.rjpt%40vivo.com
patch subject: [PATCH 2/5] usb: pxa27x_udc: Use devm_clk_get_enabled() helpers
config: s390-allyesconfig (https://download.01.org/0day-ci/archive/20240822/202408221126.F1eulsSr-lkp at intel.com/config)
compiler: s390-linux-gcc (GCC) 14.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240822/202408221126.F1eulsSr-lkp at intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202408221126.F1eulsSr-lkp at intel.com/
All errors (new ones prefixed by >>):
drivers/usb/gadget/udc/pxa27x_udc.c: In function 'pxa_udc_probe':
drivers/usb/gadget/udc/pxa27x_udc.c:2401:39: error: passing argument 1 of 'clk_prepare_enable' from incompatible pointer type [-Wincompatible-pointer-types]
2401 | udc->clk = clk_prepare_enable(&pdev->dev, NULL);
| ^~~~~~~~~~
| |
| struct device *
In file included from drivers/usb/gadget/udc/pxa27x_udc.c:18:
include/linux/clk.h:1107:50: note: expected 'struct clk *' but argument is of type 'struct device *'
1107 | static inline int clk_prepare_enable(struct clk *clk)
| ~~~~~~~~~~~~^~~
drivers/usb/gadget/udc/pxa27x_udc.c:2401:20: error: too many arguments to function 'clk_prepare_enable'
2401 | udc->clk = clk_prepare_enable(&pdev->dev, NULL);
| ^~~~~~~~~~~~~~~~~~
include/linux/clk.h:1107:19: note: declared here
1107 | static inline int clk_prepare_enable(struct clk *clk)
| ^~~~~~~~~~~~~~~~~~
>> drivers/usb/gadget/udc/pxa27x_udc.c:2401:18: error: assignment to 'struct clk *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
2401 | udc->clk = clk_prepare_enable(&pdev->dev, NULL);
| ^
vim +2401 drivers/usb/gadget/udc/pxa27x_udc.c
2345
2346 /**
2347 * pxa_udc_probe - probes the udc device
2348 * @pdev: platform device
2349 *
2350 * Perform basic init : allocates udc clock, creates sysfs files, requests
2351 * irq.
2352 */
2353 static int pxa_udc_probe(struct platform_device *pdev)
2354 {
2355 struct pxa_udc *udc = &memory;
2356 int retval = 0, gpio;
2357 struct pxa2xx_udc_mach_info *mach = dev_get_platdata(&pdev->dev);
2358 unsigned long gpio_flags;
2359
2360 if (mach) {
2361 gpio_flags = mach->gpio_pullup_inverted ? GPIOF_ACTIVE_LOW : 0;
2362 gpio = mach->gpio_pullup;
2363 if (gpio_is_valid(gpio)) {
2364 retval = devm_gpio_request_one(&pdev->dev, gpio,
2365 gpio_flags,
2366 "USB D+ pullup");
2367 if (retval)
2368 return retval;
2369 udc->gpiod = gpio_to_desc(mach->gpio_pullup);
2370 }
2371 udc->udc_command = mach->udc_command;
2372 } else {
2373 udc->gpiod = devm_gpiod_get(&pdev->dev, NULL, GPIOD_ASIS);
2374 }
2375
2376 udc->regs = devm_platform_ioremap_resource(pdev, 0);
2377 if (IS_ERR(udc->regs))
2378 return PTR_ERR(udc->regs);
2379 udc->irq = platform_get_irq(pdev, 0);
2380 if (udc->irq < 0)
2381 return udc->irq;
2382
2383 udc->dev = &pdev->dev;
2384 if (of_have_populated_dt()) {
2385 udc->transceiver =
2386 devm_usb_get_phy_by_phandle(udc->dev, "phys", 0);
2387 if (IS_ERR(udc->transceiver))
2388 return PTR_ERR(udc->transceiver);
2389 } else {
2390 udc->transceiver = usb_get_phy(USB_PHY_TYPE_USB2);
2391 }
2392
2393 if (IS_ERR(udc->gpiod)) {
2394 dev_err(&pdev->dev, "Couldn't find or request D+ gpio : %ld\n",
2395 PTR_ERR(udc->gpiod));
2396 return PTR_ERR(udc->gpiod);
2397 }
2398 if (udc->gpiod)
2399 gpiod_direction_output(udc->gpiod, 0);
2400
> 2401 udc->clk = clk_prepare_enable(&pdev->dev, NULL);
2402 if (IS_ERR(udc->clk))
2403 return PTR_ERR(udc->clk);
2404
2405 udc->vbus_sensed = 0;
2406
2407 the_controller = udc;
2408 platform_set_drvdata(pdev, udc);
2409 udc_init_data(udc);
2410
2411 /* irq setup after old hardware state is cleaned up */
2412 retval = devm_request_irq(&pdev->dev, udc->irq, pxa_udc_irq,
2413 IRQF_SHARED, driver_name, udc);
2414 if (retval != 0) {
2415 dev_err(udc->dev, "%s: can't get irq %i, err %d\n",
2416 driver_name, udc->irq, retval);
2417 goto err;
2418 }
2419
2420 if (!IS_ERR_OR_NULL(udc->transceiver))
2421 usb_register_notifier(udc->transceiver, &pxa27x_udc_phy);
2422 retval = usb_add_gadget_udc(&pdev->dev, &udc->gadget);
2423 if (retval)
2424 goto err_add_gadget;
2425
2426 pxa_init_debugfs(udc);
2427 if (should_enable_udc(udc))
2428 udc_enable(udc);
2429 return 0;
2430
2431 err_add_gadget:
2432 if (!IS_ERR_OR_NULL(udc->transceiver))
2433 usb_unregister_notifier(udc->transceiver, &pxa27x_udc_phy);
2434 err:
2435 clk_unprepare(udc->clk);
2436 return retval;
2437 }
2438
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 2/5] usb: pxa27x_udc: Use devm_clk_get_enabled() helpers
2024-08-21 12:10 ` [PATCH 2/5] usb: pxa27x_udc: " Lei Liu
2024-08-22 3:55 ` kernel test robot
2024-08-22 4:16 ` kernel test robot
@ 2024-08-22 4:26 ` Greg Kroah-Hartman
2 siblings, 0 replies; 11+ messages in thread
From: Greg Kroah-Hartman @ 2024-08-22 4:26 UTC (permalink / raw)
To: linux-aspeed
On Wed, Aug 21, 2024 at 08:10:40PM +0800, Lei Liu wrote:
> The devm_clk_get_enabled() helpers:
> - call devm_clk_get()
> - call clk_prepare_enable() and register what is needed in order to
> call clk_disable_unprepare() when needed, as a managed resource.
>
> This simplifies the code and avoids calls to clk_disable_unprepare().
>
> Signed-off-by: Lei Liu <liulei.rjpt@vivo.com>
> ---
> drivers/usb/gadget/udc/pxa27x_udc.c | 6 +-----
> 1 file changed, 1 insertion(+), 5 deletions(-)
>
> diff --git a/drivers/usb/gadget/udc/pxa27x_udc.c b/drivers/usb/gadget/udc/pxa27x_udc.c
> index 1a6317e4b2a3..6e99e75f1acb 100644
> --- a/drivers/usb/gadget/udc/pxa27x_udc.c
> +++ b/drivers/usb/gadget/udc/pxa27x_udc.c
> @@ -2398,14 +2398,10 @@ static int pxa_udc_probe(struct platform_device *pdev)
> if (udc->gpiod)
> gpiod_direction_output(udc->gpiod, 0);
>
> - udc->clk = devm_clk_get(&pdev->dev, NULL);
> + udc->clk = clk_prepare_enable(&pdev->dev, NULL);
You didn't test build this code :(
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2024-08-22 4:26 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-21 12:10 [PATCH 0/5] usb drivers use devm_clk_get_enabled() helpers Lei Liu
2024-08-21 12:10 ` [PATCH 1/5] usb: aspeed_udc: Use " Lei Liu
2024-08-22 1:40 ` Andrew Jeffery
2024-08-21 12:10 ` [PATCH 2/5] usb: pxa27x_udc: " Lei Liu
2024-08-22 3:55 ` kernel test robot
2024-08-22 4:16 ` kernel test robot
2024-08-22 4:26 ` Greg Kroah-Hartman
2024-08-21 12:10 ` [PATCH 3/5] usb: r8a66597-udc: " Lei Liu
2024-08-21 12:10 ` [PATCH 4/5] usb: mpfs: " Lei Liu
2024-08-21 12:28 ` Conor Dooley
2024-08-21 12:10 ` [PATCH 5/5] usb: ux500: " Lei Liu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).