Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

usb: musb: move clock handling to glue layer

musb core doesn't need to know about platform
specific details. So start moving clock
handling to platform glue layer and make
musb core agnostic about that.

Signed-off-by: Felipe Balbi <balbi@ti.com>

+146 -131
+1 -1
arch/arm/mach-omap2/clock2430_data.c
··· 1983 1983 CLK("omap-aes", "ick", &aes_ick, CK_243X), 1984 1984 CLK(NULL, "pka_ick", &pka_ick, CK_243X), 1985 1985 CLK(NULL, "usb_fck", &usb_fck, CK_243X), 1986 - CLK("musb-hdrc", "ick", &usbhs_ick, CK_243X), 1986 + CLK("musb-omap2430", "ick", &usbhs_ick, CK_243X), 1987 1987 CLK("mmci-omap-hs.0", "ick", &mmchs1_ick, CK_243X), 1988 1988 CLK("mmci-omap-hs.0", "fck", &mmchs1_fck, CK_243X), 1989 1989 CLK("mmci-omap-hs.1", "ick", &mmchs2_ick, CK_243X),
+4 -4
arch/arm/mach-omap2/clock3xxx_data.c
··· 3306 3306 CLK(NULL, "ssi_sst_fck", &ssi_sst_fck_3430es1, CK_3430ES1), 3307 3307 CLK(NULL, "ssi_sst_fck", &ssi_sst_fck_3430es2, CK_3430ES2), 3308 3308 CLK(NULL, "core_l3_ick", &core_l3_ick, CK_3XXX), 3309 - CLK("musb-hdrc", "ick", &hsotgusb_ick_3430es1, CK_3430ES1), 3310 - CLK("musb-hdrc", "ick", &hsotgusb_ick_3430es2, CK_3430ES2), 3309 + CLK("musb-omap2430", "ick", &hsotgusb_ick_3430es1, CK_3430ES1), 3310 + CLK("musb-omap2430", "ick", &hsotgusb_ick_3430es2, CK_3430ES2), 3311 3311 CLK(NULL, "sdrc_ick", &sdrc_ick, CK_3XXX), 3312 3312 CLK(NULL, "gpmc_fck", &gpmc_fck, CK_3XXX), 3313 3313 CLK(NULL, "security_l3_ick", &security_l3_ick, CK_343X), ··· 3442 3442 CLK("davinci_emac", "phy_clk", &emac_fck, CK_AM35XX), 3443 3443 CLK("vpfe-capture", "master", &vpfe_ick, CK_AM35XX), 3444 3444 CLK("vpfe-capture", "slave", &vpfe_fck, CK_AM35XX), 3445 - CLK("musb-hdrc", "ick", &hsotgusb_ick_am35xx, CK_AM35XX), 3446 - CLK("musb-hdrc", "fck", &hsotgusb_fck_am35xx, CK_AM35XX), 3445 + CLK("musb-am35x", "ick", &hsotgusb_ick_am35xx, CK_AM35XX), 3446 + CLK("musb-am35x", "fck", &hsotgusb_fck_am35xx, CK_AM35XX), 3447 3447 CLK(NULL, "hecc_ck", &hecc_ck, CK_AM35XX), 3448 3448 CLK(NULL, "uart4_ick", &uart4_ick_am35xx, CK_AM35XX), 3449 3449 };
+1 -1
arch/arm/mach-omap2/clock44xx_data.c
··· 2953 2953 CLK("ehci-omap.0", "usbhost_ick", &dummy_ck, CK_443X), 2954 2954 CLK(NULL, "otg_60m_gfclk", &otg_60m_gfclk, CK_443X), 2955 2955 CLK(NULL, "usb_otg_hs_xclk", &usb_otg_hs_xclk, CK_443X), 2956 - CLK("musb-hdrc", "ick", &usb_otg_hs_ick, CK_443X), 2956 + CLK("musb-omap2430", "ick", &usb_otg_hs_ick, CK_443X), 2957 2957 CLK(NULL, "usb_phy_cm_clk32k", &usb_phy_cm_clk32k, CK_443X), 2958 2958 CLK(NULL, "usb_tll_hs_usb_ch2_clk", &usb_tll_hs_usb_ch2_clk, CK_443X), 2959 2959 CLK(NULL, "usb_tll_hs_usb_ch0_clk", &usb_tll_hs_usb_ch0_clk, CK_443X),
+57 -34
drivers/usb/musb/am35x.c
··· 85 85 struct am35x_glue { 86 86 struct device *dev; 87 87 struct platform_device *musb; 88 + struct clk *phy_clk; 89 + struct clk *clk; 88 90 }; 89 91 90 92 static inline void phy_on(void) ··· 404 402 { 405 403 void __iomem *reg_base = musb->ctrl_base; 406 404 u32 rev, lvl_intr, sw_reset; 407 - int status; 408 405 409 406 musb->mregs += USB_MENTOR_CORE_OFFSET; 410 407 411 - clk_enable(musb->clock); 412 - DBG(2, "musb->clock=%lud\n", clk_get_rate(musb->clock)); 413 - 414 - musb->phy_clock = clk_get(musb->controller, "fck"); 415 - if (IS_ERR(musb->phy_clock)) { 416 - status = PTR_ERR(musb->phy_clock); 417 - goto exit0; 418 - } 419 - clk_enable(musb->phy_clock); 420 - DBG(2, "musb->phy_clock=%lud\n", clk_get_rate(musb->phy_clock)); 421 - 422 408 /* Returns zero if e.g. not clocked */ 423 409 rev = musb_readl(reg_base, USB_REVISION_REG); 424 - if (!rev) { 425 - status = -ENODEV; 426 - goto exit1; 427 - } 410 + if (!rev) 411 + return -ENODEV; 428 412 429 413 usb_nop_xceiv_register(); 430 414 musb->xceiv = otg_get_transceiver(); 431 - if (!musb->xceiv) { 432 - status = -ENODEV; 433 - goto exit1; 434 - } 415 + if (!musb->xceiv) 416 + return -ENODEV; 435 417 436 418 if (is_host_enabled(musb)) 437 419 setup_timer(&otg_workaround, otg_timer, (unsigned long) musb); ··· 445 459 lvl_intr = omap_ctrl_readl(AM35XX_CONTROL_LVL_INTR_CLEAR); 446 460 lvl_intr |= AM35XX_USBOTGSS_INT_CLR; 447 461 omap_ctrl_writel(lvl_intr, AM35XX_CONTROL_LVL_INTR_CLEAR); 462 + 448 463 return 0; 449 - exit1: 450 - clk_disable(musb->phy_clock); 451 - clk_put(musb->phy_clock); 452 - exit0: 453 - clk_disable(musb->clock); 454 - return status; 455 464 } 456 465 457 466 static int am35x_musb_exit(struct musb *musb) ··· 458 477 459 478 otg_put_transceiver(musb->xceiv); 460 479 usb_nop_xceiv_unregister(); 461 - 462 - clk_disable(musb->clock); 463 - 464 - clk_disable(musb->phy_clock); 465 - clk_put(musb->phy_clock); 466 480 467 481 return 0; 468 482 } ··· 527 551 struct platform_device *musb; 528 552 struct am35x_glue *glue; 529 553 554 + struct clk *phy_clk; 555 + struct clk *clk; 556 + 530 557 int ret = -ENOMEM; 531 558 532 559 glue = kzalloc(sizeof(*glue), GFP_KERNEL); ··· 544 565 goto err1; 545 566 } 546 567 568 + phy_clk = clk_get(&pdev->dev, "fck"); 569 + if (IS_ERR(phy_clk)) { 570 + dev_err(&pdev->dev, "failed to get PHY clock\n"); 571 + ret = PTR_ERR(phy_clk); 572 + goto err2; 573 + } 574 + 575 + clk = clk_get(&pdev->dev, "ick"); 576 + if (IS_ERR(clk)) { 577 + dev_err(&pdev->dev, "failed to get clock\n"); 578 + ret = PTR_ERR(clk); 579 + goto err3; 580 + } 581 + 582 + ret = clk_enable(phy_clk); 583 + if (ret) { 584 + dev_err(&pdev->dev, "failed to enable PHY clock\n"); 585 + goto err4; 586 + } 587 + 588 + ret = clk_enable(clk); 589 + if (ret) { 590 + dev_err(&pdev->dev, "failed to enable clock\n"); 591 + goto err5; 592 + } 593 + 547 594 musb->dev.parent = &pdev->dev; 548 595 musb->dev.dma_mask = &am35x_dmamask; 549 596 musb->dev.coherent_dma_mask = am35x_dmamask; 550 597 551 598 glue->dev = &pdev->dev; 552 599 glue->musb = musb; 600 + glue->phy_clk = phy_clk; 601 + glue->clk = clk; 553 602 554 603 pdata->platform_ops = &am35x_ops; 555 604 ··· 587 580 pdev->num_resources); 588 581 if (ret) { 589 582 dev_err(&pdev->dev, "failed to add resources\n"); 590 - goto err2; 583 + goto err6; 591 584 } 592 585 593 586 ret = platform_device_add_data(musb, pdata, sizeof(*pdata)); 594 587 if (ret) { 595 588 dev_err(&pdev->dev, "failed to add platform_data\n"); 596 - goto err2; 589 + goto err6; 597 590 } 598 591 599 592 ret = platform_device_add(musb); 600 593 if (ret) { 601 594 dev_err(&pdev->dev, "failed to register musb device\n"); 602 - goto err2; 595 + goto err6; 603 596 } 604 597 605 598 return 0; 599 + 600 + err6: 601 + clk_disable(clk); 602 + 603 + err5: 604 + clk_disable(phy_clk); 605 + 606 + err4: 607 + clk_put(clk); 608 + 609 + err3: 610 + clk_put(phy_clk); 606 611 607 612 err2: 608 613 platform_device_put(musb); ··· 632 613 633 614 platform_device_del(glue->musb); 634 615 platform_device_put(glue->musb); 616 + clk_disable(glue->clk); 617 + clk_disable(glue->phy_clk); 618 + clk_put(glue->clk); 619 + clk_put(glue->phy_clk); 635 620 kfree(glue); 636 621 637 622 return 0;
+28 -8
drivers/usb/musb/da8xx.c
··· 83 83 struct da8xx_glue { 84 84 struct device *dev; 85 85 struct platform_device *musb; 86 + struct clk *clk; 86 87 }; 87 88 88 89 /* ··· 424 423 425 424 musb->mregs += DA8XX_MENTOR_CORE_OFFSET; 426 425 427 - clk_enable(musb->clock); 428 - 429 426 /* Returns zero if e.g. not clocked */ 430 427 rev = musb_readl(reg_base, DA8XX_USB_REVISION_REG); 431 428 if (!rev) ··· 455 456 musb->isr = da8xx_musb_interrupt; 456 457 return 0; 457 458 fail: 458 - clk_disable(musb->clock); 459 459 return -ENODEV; 460 460 } 461 461 ··· 467 469 468 470 otg_put_transceiver(musb->xceiv); 469 471 usb_nop_xceiv_unregister(); 470 - 471 - clk_disable(musb->clock); 472 472 473 473 return 0; 474 474 } ··· 492 496 struct platform_device *musb; 493 497 struct da8xx_glue *glue; 494 498 499 + struct clk *clk; 500 + 495 501 int ret = -ENOMEM; 496 502 497 503 glue = kzalloc(sizeof(*glue), GFP_KERNEL); ··· 508 510 goto err1; 509 511 } 510 512 513 + clk = clk_get(&pdev->dev, "usb20"); 514 + if (IS_ERR(clk)) { 515 + dev_err(&pdev->dev, "failed to get clock\n"); 516 + ret = PTR_ERR(clk); 517 + goto err2; 518 + } 519 + 520 + ret = clk_enable(clk); 521 + if (ret) { 522 + dev_err(&pdev->dev, "failed to enable clock\n"); 523 + goto err3; 524 + } 525 + 511 526 musb->dev.parent = &pdev->dev; 512 527 musb->dev.dma_mask = &da8xx_dmamask; 513 528 musb->dev.coherent_dma_mask = da8xx_dmamask; 514 529 515 530 glue->dev = &pdev->dev; 516 531 glue->musb = musb; 532 + glue->clk = clk; 517 533 518 534 pdata->platform_ops = &da8xx_ops; 519 535 ··· 537 525 pdev->num_resources); 538 526 if (ret) { 539 527 dev_err(&pdev->dev, "failed to add resources\n"); 540 - goto err2; 528 + goto err4; 541 529 } 542 530 543 531 ret = platform_device_add_data(musb, pdata, sizeof(*pdata)); 544 532 if (ret) { 545 533 dev_err(&pdev->dev, "failed to add platform_data\n"); 546 - goto err2; 534 + goto err4; 547 535 } 548 536 549 537 ret = platform_device_add(musb); 550 538 if (ret) { 551 539 dev_err(&pdev->dev, "failed to register musb device\n"); 552 - goto err2; 540 + goto err4; 553 541 } 554 542 555 543 return 0; 544 + 545 + err4: 546 + clk_disable(clk); 547 + 548 + err3: 549 + clk_put(clk); 556 550 557 551 err2: 558 552 platform_device_put(musb); ··· 576 558 577 559 platform_device_del(glue->musb); 578 560 platform_device_put(glue->musb); 561 + clk_disable(glue->clk); 562 + clk_put(glue->clk); 579 563 kfree(glue); 580 564 581 565 return 0;
+27 -9
drivers/usb/musb/davinci.c
··· 56 56 struct davinci_glue { 57 57 struct device *dev; 58 58 struct platform_device *musb; 59 + struct clk *clk; 59 60 }; 60 61 61 62 /* REVISIT (PM) we should be able to keep the PHY in low power mode most ··· 396 395 397 396 musb->mregs += DAVINCI_BASE_OFFSET; 398 397 399 - clk_enable(musb->clock); 400 - 401 398 /* returns zero if e.g. not clocked */ 402 399 revision = musb_readl(tibase, DAVINCI_USB_VERSION_REG); 403 400 if (revision == 0) ··· 450 451 return 0; 451 452 452 453 fail: 453 - clk_disable(musb->clock); 454 - 455 454 otg_put_transceiver(musb->xceiv); 456 455 usb_nop_xceiv_unregister(); 457 456 return -ENODEV; ··· 499 502 500 503 phy_off(); 501 504 502 - clk_disable(musb->clock); 503 - 504 505 otg_put_transceiver(musb->xceiv); 505 506 usb_nop_xceiv_unregister(); 506 507 ··· 524 529 struct musb_hdrc_platform_data *pdata = pdev->dev.platform_data; 525 530 struct platform_device *musb; 526 531 struct davinci_glue *glue; 532 + struct clk *clk; 527 533 528 534 int ret = -ENOMEM; 529 535 ··· 540 544 goto err1; 541 545 } 542 546 547 + clk = clk_get(&pdev->dev, "usb"); 548 + if (IS_ERR(clk)) { 549 + dev_err(&pdev->dev, "failed to get clock\n"); 550 + ret = PTR_ERR(clk); 551 + goto err2; 552 + } 553 + 554 + ret = clk_enable(clk); 555 + if (ret) { 556 + dev_err(&pdev->dev, "failed to enable clock\n"); 557 + goto err3; 558 + } 559 + 543 560 musb->dev.parent = &pdev->dev; 544 561 musb->dev.dma_mask = &davinci_dmamask; 545 562 musb->dev.coherent_dma_mask = davinci_dmamask; 546 563 547 564 glue->dev = &pdev->dev; 548 565 glue->musb = musb; 566 + glue->clk = clk; 549 567 550 568 pdata->platform_ops = &davinci_ops; 551 569 ··· 569 559 pdev->num_resources); 570 560 if (ret) { 571 561 dev_err(&pdev->dev, "failed to add resources\n"); 572 - goto err2; 562 + goto err4; 573 563 } 574 564 575 565 ret = platform_device_add_data(musb, pdata, sizeof(*pdata)); 576 566 if (ret) { 577 567 dev_err(&pdev->dev, "failed to add platform_data\n"); 578 - goto err2; 568 + goto err4; 579 569 } 580 570 581 571 ret = platform_device_add(musb); 582 572 if (ret) { 583 573 dev_err(&pdev->dev, "failed to register musb device\n"); 584 - goto err2; 574 + goto err4; 585 575 } 586 576 587 577 return 0; 578 + 579 + err4: 580 + clk_disable(clk); 581 + 582 + err3: 583 + clk_put(clk); 588 584 589 585 err2: 590 586 platform_device_put(musb); ··· 608 592 609 593 platform_device_del(glue->musb); 610 594 platform_device_put(glue->musb); 595 + clk_disable(glue->clk); 596 + clk_put(glue->clk); 611 597 kfree(glue); 612 598 613 599 return 0;
+1 -38
drivers/usb/musb/musb_core.c
··· 1048 1048 spin_lock_irqsave(&musb->lock, flags); 1049 1049 musb_platform_disable(musb); 1050 1050 musb_generic_disable(musb); 1051 - if (musb->clock) 1052 - clk_put(musb->clock); 1053 1051 spin_unlock_irqrestore(&musb->lock, flags); 1054 1052 1055 1053 /* FIXME power down */ ··· 1992 1994 spin_lock_init(&musb->lock); 1993 1995 musb->board_mode = plat->mode; 1994 1996 musb->board_set_power = plat->set_power; 1995 - musb->set_clock = plat->set_clock; 1996 1997 musb->min_power = plat->min_power; 1997 1998 musb->ops = plat->platform_ops; 1998 - 1999 - /* Clock usage is chip-specific ... functional clock (DaVinci, 2000 - * OMAP2430), or PHY ref (some TUSB6010 boards). All this core 2001 - * code does is make sure a clock handle is available; platform 2002 - * code manages it during start/stop and suspend/resume. 2003 - */ 2004 - if (plat->clock) { 2005 - musb->clock = clk_get(dev, plat->clock); 2006 - if (IS_ERR(musb->clock)) { 2007 - status = PTR_ERR(musb->clock); 2008 - musb->clock = NULL; 2009 - goto fail1; 2010 - } 2011 - } 2012 1999 2013 2000 /* The musb_platform_init() call: 2014 2001 * - adjusts musb->mregs and musb->isr if needed, 2015 2002 * - may initialize an integrated tranceiver 2016 2003 * - initializes musb->xceiv, usually by otg_get_transceiver() 2017 - * - activates clocks. 2018 2004 * - stops powering VBUS 2019 2005 * - assigns musb->board_set_vbus if host mode is enabled 2020 2006 * ··· 2010 2028 musb->isr = generic_interrupt; 2011 2029 status = musb_platform_init(musb); 2012 2030 if (status < 0) 2013 - goto fail2; 2031 + goto fail1; 2014 2032 2015 2033 if (!musb->isr) { 2016 2034 status = -ENODEV; ··· 2159 2177 if (musb->irq_wake) 2160 2178 device_init_wakeup(dev, 0); 2161 2179 musb_platform_exit(musb); 2162 - 2163 - fail2: 2164 - if (musb->clock) 2165 - clk_put(musb->clock); 2166 2180 2167 2181 fail1: 2168 2182 dev_err(musb->controller, ··· 2388 2410 unsigned long flags; 2389 2411 struct musb *musb = dev_to_musb(&pdev->dev); 2390 2412 2391 - if (!musb->clock) 2392 - return 0; 2393 - 2394 2413 spin_lock_irqsave(&musb->lock, flags); 2395 2414 2396 2415 if (is_peripheral_active(musb)) { ··· 2402 2427 2403 2428 musb_save_context(musb); 2404 2429 2405 - if (musb->set_clock) 2406 - musb->set_clock(musb->clock, 0); 2407 - else 2408 - clk_disable(musb->clock); 2409 2430 spin_unlock_irqrestore(&musb->lock, flags); 2410 2431 return 0; 2411 2432 } ··· 2410 2439 { 2411 2440 struct platform_device *pdev = to_platform_device(dev); 2412 2441 struct musb *musb = dev_to_musb(&pdev->dev); 2413 - 2414 - if (!musb->clock) 2415 - return 0; 2416 - 2417 - if (musb->set_clock) 2418 - musb->set_clock(musb->clock, 1); 2419 - else 2420 - clk_enable(musb->clock); 2421 2442 2422 2443 musb_restore_context(musb); 2423 2444
-2
drivers/usb/musb/musb_core.h
··· 384 384 struct musb { 385 385 /* device lock */ 386 386 spinlock_t lock; 387 - struct clk *clock; 388 - struct clk *phy_clock; 389 387 390 388 const struct musb_platform_ops *ops; 391 389 struct musb_context_registers context;
+27 -19
drivers/usb/musb/omap2430.c
··· 40 40 struct omap2430_glue { 41 41 struct device *dev; 42 42 struct platform_device *musb; 43 + struct clk *clk; 43 44 }; 44 45 45 46 static struct timer_list musb_idle_timer; ··· 278 277 { 279 278 u32 l; 280 279 281 - if (!musb->clock) 282 - return 0; 283 - 284 280 /* in any role */ 285 281 l = musb_readl(musb->mregs, OTG_FORCESTDBY); 286 282 l |= ENABLEFORCE; /* enable MSTANDBY */ ··· 289 291 290 292 otg_set_suspend(musb->xceiv, 1); 291 293 292 - if (musb->set_clock) 293 - musb->set_clock(musb->clock, 0); 294 - else 295 - clk_disable(musb->clock); 296 - 297 294 return 0; 298 295 } 299 296 ··· 296 303 { 297 304 u32 l; 298 305 299 - if (!musb->clock) 300 - return 0; 301 - 302 306 otg_set_suspend(musb->xceiv, 0); 303 - 304 - if (musb->set_clock) 305 - musb->set_clock(musb->clock, 1); 306 - else 307 - clk_enable(musb->clock); 308 307 309 308 l = musb_readl(musb->mregs, OTG_SYSCONFIG); 310 309 l &= ~ENABLEWAKEUP; /* disable wakeup */ ··· 341 356 struct musb_hdrc_platform_data *pdata = pdev->dev.platform_data; 342 357 struct platform_device *musb; 343 358 struct omap2430_glue *glue; 359 + struct clk *clk; 344 360 345 361 int ret = -ENOMEM; 346 362 ··· 357 371 goto err1; 358 372 } 359 373 374 + clk = clk_get(&pdev->dev, "ick"); 375 + if (IS_ERR(clk)) { 376 + dev_err(&pdev->dev, "failed to get clock\n"); 377 + ret = PTR_ERR(clk); 378 + goto err2; 379 + } 380 + 381 + ret = clk_enable(clk); 382 + if (ret) { 383 + dev_err(&pdev->dev, "failed to enable clock\n"); 384 + goto err3; 385 + } 386 + 360 387 musb->dev.parent = &pdev->dev; 361 388 musb->dev.dma_mask = &omap2430_dmamask; 362 389 musb->dev.coherent_dma_mask = omap2430_dmamask; 363 390 364 391 glue->dev = &pdev->dev; 365 392 glue->musb = musb; 393 + glue->clk = clk; 366 394 367 395 pdata->platform_ops = &omap2430_ops; 368 396 ··· 386 386 pdev->num_resources); 387 387 if (ret) { 388 388 dev_err(&pdev->dev, "failed to add resources\n"); 389 - goto err2; 389 + goto err4; 390 390 } 391 391 392 392 ret = platform_device_add_data(musb, pdata, sizeof(*pdata)); 393 393 if (ret) { 394 394 dev_err(&pdev->dev, "failed to add platform_data\n"); 395 - goto err2; 395 + goto err4; 396 396 } 397 397 398 398 ret = platform_device_add(musb); 399 399 if (ret) { 400 400 dev_err(&pdev->dev, "failed to register musb device\n"); 401 - goto err2; 401 + goto err4; 402 402 } 403 403 404 404 return 0; 405 + 406 + err4: 407 + clk_disable(clk); 408 + 409 + err3: 410 + clk_put(clk); 405 411 406 412 err2: 407 413 platform_device_put(musb); ··· 425 419 426 420 platform_device_del(glue->musb); 427 421 platform_device_put(glue->musb); 422 + clk_disable(glue->clk); 423 + clk_put(glue->clk); 428 424 kfree(glue); 429 425 430 426 return 0;
-15
drivers/usb/musb/tusb6010.c
··· 281 281 void __iomem *tbase = musb->ctrl_base; 282 282 u32 reg; 283 283 284 - /* 285 - * Keep clock active when enabled. Note that this is not tied to 286 - * drawing VBUS, as with OTG mA can be less than musb->min_power. 287 - */ 288 - if (musb->set_clock) { 289 - if (mA) 290 - musb->set_clock(musb->clock, 1); 291 - else 292 - musb->set_clock(musb->clock, 0); 293 - } 294 - 295 284 /* tps65030 seems to consume max 100mA, with maybe 60mA available 296 285 * (measured on one board) for things other than tps and tusb. 297 286 * ··· 526 537 devctl = musb_readb(musb->mregs, MUSB_DEVCTL); 527 538 528 539 if (is_on) { 529 - if (musb->set_clock) 530 - musb->set_clock(musb->clock, 1); 531 540 timer = OTG_TIMER_MS(OTG_TIME_A_WAIT_VRISE); 532 541 musb->xceiv->default_a = 1; 533 542 musb->xceiv->state = OTG_STATE_A_WAIT_VRISE; ··· 564 577 565 578 devctl &= ~MUSB_DEVCTL_SESSION; 566 579 conf &= ~TUSB_DEV_CONF_USB_HOST_MODE; 567 - if (musb->set_clock) 568 - musb->set_clock(musb->clock, 0); 569 580 } 570 581 prcm &= ~(TUSB_PRCM_MNGMT_15_SW_EN | TUSB_PRCM_MNGMT_33_SW_EN); 571 582