| .. | .. |
|---|
| 2 | 2 | /** |
|---|
| 3 | 3 | * debugfs.c - DesignWare USB3 DRD Controller DebugFS file |
|---|
| 4 | 4 | * |
|---|
| 5 | | - * Copyright (C) 2010-2011 Texas Instruments Incorporated - http://www.ti.com |
|---|
| 5 | + * Copyright (C) 2010-2011 Texas Instruments Incorporated - https://www.ti.com |
|---|
| 6 | 6 | * |
|---|
| 7 | 7 | * Authors: Felipe Balbi <balbi@ti.com>, |
|---|
| 8 | 8 | * Sebastian Andrzej Siewior <bigeasy@linutronix.de> |
|---|
| .. | .. |
|---|
| 327 | 327 | unsigned int current_mode; |
|---|
| 328 | 328 | unsigned long flags; |
|---|
| 329 | 329 | u32 reg; |
|---|
| 330 | + int ret; |
|---|
| 331 | + |
|---|
| 332 | + ret = pm_runtime_resume_and_get(dwc->dev); |
|---|
| 333 | + if (ret < 0) |
|---|
| 334 | + return ret; |
|---|
| 330 | 335 | |
|---|
| 331 | 336 | spin_lock_irqsave(&dwc->lock, flags); |
|---|
| 332 | 337 | reg = dwc3_readl(dwc->regs, DWC3_GSTS); |
|---|
| .. | .. |
|---|
| 344 | 349 | break; |
|---|
| 345 | 350 | } |
|---|
| 346 | 351 | spin_unlock_irqrestore(&dwc->lock, flags); |
|---|
| 352 | + |
|---|
| 353 | + pm_runtime_put_sync(dwc->dev); |
|---|
| 347 | 354 | |
|---|
| 348 | 355 | return 0; |
|---|
| 349 | 356 | } |
|---|
| .. | .. |
|---|
| 390 | 397 | struct dwc3 *dwc = s->private; |
|---|
| 391 | 398 | unsigned long flags; |
|---|
| 392 | 399 | u32 reg; |
|---|
| 400 | + int ret; |
|---|
| 401 | + |
|---|
| 402 | + ret = pm_runtime_resume_and_get(dwc->dev); |
|---|
| 403 | + if (ret < 0) |
|---|
| 404 | + return ret; |
|---|
| 393 | 405 | |
|---|
| 394 | 406 | spin_lock_irqsave(&dwc->lock, flags); |
|---|
| 395 | 407 | reg = dwc3_readl(dwc->regs, DWC3_GCTL); |
|---|
| .. | .. |
|---|
| 397 | 409 | |
|---|
| 398 | 410 | switch (DWC3_GCTL_PRTCAP(reg)) { |
|---|
| 399 | 411 | case DWC3_GCTL_PRTCAP_HOST: |
|---|
| 400 | | - seq_printf(s, "host\n"); |
|---|
| 412 | + seq_puts(s, "host\n"); |
|---|
| 401 | 413 | break; |
|---|
| 402 | 414 | case DWC3_GCTL_PRTCAP_DEVICE: |
|---|
| 403 | | - seq_printf(s, "device\n"); |
|---|
| 415 | + seq_puts(s, "device\n"); |
|---|
| 404 | 416 | break; |
|---|
| 405 | 417 | case DWC3_GCTL_PRTCAP_OTG: |
|---|
| 406 | | - seq_printf(s, "otg\n"); |
|---|
| 418 | + seq_puts(s, "otg\n"); |
|---|
| 407 | 419 | break; |
|---|
| 408 | 420 | default: |
|---|
| 409 | 421 | seq_printf(s, "UNKNOWN %08x\n", DWC3_GCTL_PRTCAP(reg)); |
|---|
| 410 | 422 | } |
|---|
| 423 | + |
|---|
| 424 | + pm_runtime_put_sync(dwc->dev); |
|---|
| 411 | 425 | |
|---|
| 412 | 426 | return 0; |
|---|
| 413 | 427 | } |
|---|
| .. | .. |
|---|
| 428 | 442 | if (copy_from_user(&buf, ubuf, min_t(size_t, sizeof(buf) - 1, count))) |
|---|
| 429 | 443 | return -EFAULT; |
|---|
| 430 | 444 | |
|---|
| 445 | + if (dwc->dr_mode != USB_DR_MODE_OTG) |
|---|
| 446 | + return count; |
|---|
| 447 | + |
|---|
| 431 | 448 | if (!strncmp(buf, "host", 4)) |
|---|
| 432 | 449 | mode = DWC3_GCTL_PRTCAP_HOST; |
|---|
| 433 | 450 | |
|---|
| .. | .. |
|---|
| 436 | 453 | |
|---|
| 437 | 454 | if (!strncmp(buf, "otg", 3)) |
|---|
| 438 | 455 | mode = DWC3_GCTL_PRTCAP_OTG; |
|---|
| 456 | + |
|---|
| 457 | +#if defined(CONFIG_ARCH_ROCKCHIP) && defined(CONFIG_NO_GKI) |
|---|
| 458 | + dwc->desired_role_sw_mode = mode; |
|---|
| 459 | +#endif |
|---|
| 439 | 460 | |
|---|
| 440 | 461 | dwc3_set_mode(dwc, mode); |
|---|
| 441 | 462 | |
|---|
| .. | .. |
|---|
| 455 | 476 | struct dwc3 *dwc = s->private; |
|---|
| 456 | 477 | unsigned long flags; |
|---|
| 457 | 478 | u32 reg; |
|---|
| 479 | + int ret; |
|---|
| 480 | + |
|---|
| 481 | + ret = pm_runtime_resume_and_get(dwc->dev); |
|---|
| 482 | + if (ret < 0) |
|---|
| 483 | + return ret; |
|---|
| 458 | 484 | |
|---|
| 459 | 485 | spin_lock_irqsave(&dwc->lock, flags); |
|---|
| 460 | 486 | reg = dwc3_readl(dwc->regs, DWC3_DCTL); |
|---|
| .. | .. |
|---|
| 464 | 490 | |
|---|
| 465 | 491 | switch (reg) { |
|---|
| 466 | 492 | case 0: |
|---|
| 467 | | - seq_printf(s, "no test\n"); |
|---|
| 493 | + seq_puts(s, "no test\n"); |
|---|
| 468 | 494 | break; |
|---|
| 469 | | - case TEST_J: |
|---|
| 470 | | - seq_printf(s, "test_j\n"); |
|---|
| 495 | + case USB_TEST_J: |
|---|
| 496 | + seq_puts(s, "test_j\n"); |
|---|
| 471 | 497 | break; |
|---|
| 472 | | - case TEST_K: |
|---|
| 473 | | - seq_printf(s, "test_k\n"); |
|---|
| 498 | + case USB_TEST_K: |
|---|
| 499 | + seq_puts(s, "test_k\n"); |
|---|
| 474 | 500 | break; |
|---|
| 475 | | - case TEST_SE0_NAK: |
|---|
| 476 | | - seq_printf(s, "test_se0_nak\n"); |
|---|
| 501 | + case USB_TEST_SE0_NAK: |
|---|
| 502 | + seq_puts(s, "test_se0_nak\n"); |
|---|
| 477 | 503 | break; |
|---|
| 478 | | - case TEST_PACKET: |
|---|
| 479 | | - seq_printf(s, "test_packet\n"); |
|---|
| 504 | + case USB_TEST_PACKET: |
|---|
| 505 | + seq_puts(s, "test_packet\n"); |
|---|
| 480 | 506 | break; |
|---|
| 481 | | - case TEST_FORCE_EN: |
|---|
| 482 | | - seq_printf(s, "test_force_enable\n"); |
|---|
| 507 | + case USB_TEST_FORCE_ENABLE: |
|---|
| 508 | + seq_puts(s, "test_force_enable\n"); |
|---|
| 483 | 509 | break; |
|---|
| 484 | 510 | default: |
|---|
| 485 | 511 | seq_printf(s, "UNKNOWN %d\n", reg); |
|---|
| 486 | 512 | } |
|---|
| 513 | + |
|---|
| 514 | + pm_runtime_put_sync(dwc->dev); |
|---|
| 487 | 515 | |
|---|
| 488 | 516 | return 0; |
|---|
| 489 | 517 | } |
|---|
| .. | .. |
|---|
| 501 | 529 | unsigned long flags; |
|---|
| 502 | 530 | u32 testmode = 0; |
|---|
| 503 | 531 | char buf[32]; |
|---|
| 532 | + int ret; |
|---|
| 504 | 533 | |
|---|
| 505 | 534 | if (copy_from_user(&buf, ubuf, min_t(size_t, sizeof(buf) - 1, count))) |
|---|
| 506 | 535 | return -EFAULT; |
|---|
| 507 | 536 | |
|---|
| 508 | 537 | if (!strncmp(buf, "test_j", 6)) |
|---|
| 509 | | - testmode = TEST_J; |
|---|
| 538 | + testmode = USB_TEST_J; |
|---|
| 510 | 539 | else if (!strncmp(buf, "test_k", 6)) |
|---|
| 511 | | - testmode = TEST_K; |
|---|
| 540 | + testmode = USB_TEST_K; |
|---|
| 512 | 541 | else if (!strncmp(buf, "test_se0_nak", 12)) |
|---|
| 513 | | - testmode = TEST_SE0_NAK; |
|---|
| 542 | + testmode = USB_TEST_SE0_NAK; |
|---|
| 514 | 543 | else if (!strncmp(buf, "test_packet", 11)) |
|---|
| 515 | | - testmode = TEST_PACKET; |
|---|
| 544 | + testmode = USB_TEST_PACKET; |
|---|
| 516 | 545 | else if (!strncmp(buf, "test_force_enable", 17)) |
|---|
| 517 | | - testmode = TEST_FORCE_EN; |
|---|
| 546 | + testmode = USB_TEST_FORCE_ENABLE; |
|---|
| 518 | 547 | else |
|---|
| 519 | 548 | testmode = 0; |
|---|
| 549 | + |
|---|
| 550 | + ret = pm_runtime_resume_and_get(dwc->dev); |
|---|
| 551 | + if (ret < 0) |
|---|
| 552 | + return ret; |
|---|
| 520 | 553 | |
|---|
| 521 | 554 | spin_lock_irqsave(&dwc->lock, flags); |
|---|
| 522 | 555 | dwc3_gadget_set_test_mode(dwc, testmode); |
|---|
| 523 | 556 | spin_unlock_irqrestore(&dwc->lock, flags); |
|---|
| 557 | + |
|---|
| 558 | + pm_runtime_put_sync(dwc->dev); |
|---|
| 524 | 559 | |
|---|
| 525 | 560 | return count; |
|---|
| 526 | 561 | } |
|---|
| .. | .. |
|---|
| 540 | 575 | enum dwc3_link_state state; |
|---|
| 541 | 576 | u32 reg; |
|---|
| 542 | 577 | u8 speed; |
|---|
| 578 | + int ret; |
|---|
| 579 | + |
|---|
| 580 | + ret = pm_runtime_resume_and_get(dwc->dev); |
|---|
| 581 | + if (ret < 0) |
|---|
| 582 | + return ret; |
|---|
| 543 | 583 | |
|---|
| 544 | 584 | spin_lock_irqsave(&dwc->lock, flags); |
|---|
| 545 | 585 | reg = dwc3_readl(dwc->regs, DWC3_GSTS); |
|---|
| 546 | 586 | if (DWC3_GSTS_CURMOD(reg) != DWC3_GSTS_CURMOD_DEVICE) { |
|---|
| 547 | 587 | seq_puts(s, "Not available\n"); |
|---|
| 548 | 588 | spin_unlock_irqrestore(&dwc->lock, flags); |
|---|
| 589 | + pm_runtime_put_sync(dwc->dev); |
|---|
| 549 | 590 | return 0; |
|---|
| 550 | 591 | } |
|---|
| 551 | 592 | |
|---|
| .. | .. |
|---|
| 557 | 598 | dwc3_gadget_link_string(state) : |
|---|
| 558 | 599 | dwc3_gadget_hs_link_string(state)); |
|---|
| 559 | 600 | spin_unlock_irqrestore(&dwc->lock, flags); |
|---|
| 601 | + |
|---|
| 602 | + pm_runtime_put_sync(dwc->dev); |
|---|
| 560 | 603 | |
|---|
| 561 | 604 | return 0; |
|---|
| 562 | 605 | } |
|---|
| .. | .. |
|---|
| 576 | 619 | char buf[32]; |
|---|
| 577 | 620 | u32 reg; |
|---|
| 578 | 621 | u8 speed; |
|---|
| 622 | + int ret; |
|---|
| 579 | 623 | |
|---|
| 580 | 624 | if (copy_from_user(&buf, ubuf, min_t(size_t, sizeof(buf) - 1, count))) |
|---|
| 581 | 625 | return -EFAULT; |
|---|
| .. | .. |
|---|
| 595 | 639 | else |
|---|
| 596 | 640 | return -EINVAL; |
|---|
| 597 | 641 | |
|---|
| 642 | + ret = pm_runtime_resume_and_get(dwc->dev); |
|---|
| 643 | + if (ret < 0) |
|---|
| 644 | + return ret; |
|---|
| 645 | + |
|---|
| 598 | 646 | spin_lock_irqsave(&dwc->lock, flags); |
|---|
| 599 | 647 | reg = dwc3_readl(dwc->regs, DWC3_GSTS); |
|---|
| 600 | 648 | if (DWC3_GSTS_CURMOD(reg) != DWC3_GSTS_CURMOD_DEVICE) { |
|---|
| 601 | 649 | spin_unlock_irqrestore(&dwc->lock, flags); |
|---|
| 650 | + pm_runtime_put_sync(dwc->dev); |
|---|
| 602 | 651 | return -EINVAL; |
|---|
| 603 | 652 | } |
|---|
| 604 | 653 | |
|---|
| .. | .. |
|---|
| 608 | 657 | if (speed < DWC3_DSTS_SUPERSPEED && |
|---|
| 609 | 658 | state != DWC3_LINK_STATE_RECOV) { |
|---|
| 610 | 659 | spin_unlock_irqrestore(&dwc->lock, flags); |
|---|
| 660 | + pm_runtime_put_sync(dwc->dev); |
|---|
| 611 | 661 | return -EINVAL; |
|---|
| 612 | 662 | } |
|---|
| 613 | 663 | |
|---|
| 614 | 664 | dwc3_gadget_set_link_state(dwc, state); |
|---|
| 615 | 665 | spin_unlock_irqrestore(&dwc->lock, flags); |
|---|
| 666 | + |
|---|
| 667 | + pm_runtime_put_sync(dwc->dev); |
|---|
| 616 | 668 | |
|---|
| 617 | 669 | return count; |
|---|
| 618 | 670 | } |
|---|
| .. | .. |
|---|
| 635 | 687 | struct dwc3_ep *dep = s->private; |
|---|
| 636 | 688 | struct dwc3 *dwc = dep->dwc; |
|---|
| 637 | 689 | unsigned long flags; |
|---|
| 690 | + u32 mdwidth; |
|---|
| 638 | 691 | u32 val; |
|---|
| 692 | + int ret; |
|---|
| 693 | + |
|---|
| 694 | + ret = pm_runtime_resume_and_get(dwc->dev); |
|---|
| 695 | + if (ret < 0) |
|---|
| 696 | + return ret; |
|---|
| 639 | 697 | |
|---|
| 640 | 698 | spin_lock_irqsave(&dwc->lock, flags); |
|---|
| 641 | 699 | val = dwc3_core_fifo_space(dep, DWC3_TXFIFO); |
|---|
| 642 | 700 | |
|---|
| 643 | 701 | /* Convert to bytes */ |
|---|
| 644 | | - val *= DWC3_MDWIDTH(dwc->hwparams.hwparams0); |
|---|
| 702 | + mdwidth = dwc3_mdwidth(dwc); |
|---|
| 703 | + |
|---|
| 704 | + val *= mdwidth; |
|---|
| 645 | 705 | val >>= 3; |
|---|
| 646 | 706 | seq_printf(s, "%u\n", val); |
|---|
| 647 | 707 | spin_unlock_irqrestore(&dwc->lock, flags); |
|---|
| 708 | + |
|---|
| 709 | + pm_runtime_put_sync(dwc->dev); |
|---|
| 648 | 710 | |
|---|
| 649 | 711 | return 0; |
|---|
| 650 | 712 | } |
|---|
| .. | .. |
|---|
| 654 | 716 | struct dwc3_ep *dep = s->private; |
|---|
| 655 | 717 | struct dwc3 *dwc = dep->dwc; |
|---|
| 656 | 718 | unsigned long flags; |
|---|
| 719 | + u32 mdwidth; |
|---|
| 657 | 720 | u32 val; |
|---|
| 721 | + int ret; |
|---|
| 722 | + |
|---|
| 723 | + ret = pm_runtime_resume_and_get(dwc->dev); |
|---|
| 724 | + if (ret < 0) |
|---|
| 725 | + return ret; |
|---|
| 658 | 726 | |
|---|
| 659 | 727 | spin_lock_irqsave(&dwc->lock, flags); |
|---|
| 660 | 728 | val = dwc3_core_fifo_space(dep, DWC3_RXFIFO); |
|---|
| 661 | 729 | |
|---|
| 662 | 730 | /* Convert to bytes */ |
|---|
| 663 | | - val *= DWC3_MDWIDTH(dwc->hwparams.hwparams0); |
|---|
| 731 | + mdwidth = dwc3_mdwidth(dwc); |
|---|
| 732 | + |
|---|
| 733 | + val *= mdwidth; |
|---|
| 664 | 734 | val >>= 3; |
|---|
| 665 | 735 | seq_printf(s, "%u\n", val); |
|---|
| 666 | 736 | spin_unlock_irqrestore(&dwc->lock, flags); |
|---|
| 737 | + |
|---|
| 738 | + pm_runtime_put_sync(dwc->dev); |
|---|
| 667 | 739 | |
|---|
| 668 | 740 | return 0; |
|---|
| 669 | 741 | } |
|---|
| .. | .. |
|---|
| 674 | 746 | struct dwc3 *dwc = dep->dwc; |
|---|
| 675 | 747 | unsigned long flags; |
|---|
| 676 | 748 | u32 val; |
|---|
| 749 | + int ret; |
|---|
| 750 | + |
|---|
| 751 | + ret = pm_runtime_resume_and_get(dwc->dev); |
|---|
| 752 | + if (ret < 0) |
|---|
| 753 | + return ret; |
|---|
| 677 | 754 | |
|---|
| 678 | 755 | spin_lock_irqsave(&dwc->lock, flags); |
|---|
| 679 | 756 | val = dwc3_core_fifo_space(dep, DWC3_TXREQQ); |
|---|
| 680 | 757 | seq_printf(s, "%u\n", val); |
|---|
| 681 | 758 | spin_unlock_irqrestore(&dwc->lock, flags); |
|---|
| 759 | + |
|---|
| 760 | + pm_runtime_put_sync(dwc->dev); |
|---|
| 682 | 761 | |
|---|
| 683 | 762 | return 0; |
|---|
| 684 | 763 | } |
|---|
| .. | .. |
|---|
| 689 | 768 | struct dwc3 *dwc = dep->dwc; |
|---|
| 690 | 769 | unsigned long flags; |
|---|
| 691 | 770 | u32 val; |
|---|
| 771 | + int ret; |
|---|
| 772 | + |
|---|
| 773 | + ret = pm_runtime_resume_and_get(dwc->dev); |
|---|
| 774 | + if (ret < 0) |
|---|
| 775 | + return ret; |
|---|
| 692 | 776 | |
|---|
| 693 | 777 | spin_lock_irqsave(&dwc->lock, flags); |
|---|
| 694 | 778 | val = dwc3_core_fifo_space(dep, DWC3_RXREQQ); |
|---|
| 695 | 779 | seq_printf(s, "%u\n", val); |
|---|
| 696 | 780 | spin_unlock_irqrestore(&dwc->lock, flags); |
|---|
| 781 | + |
|---|
| 782 | + pm_runtime_put_sync(dwc->dev); |
|---|
| 697 | 783 | |
|---|
| 698 | 784 | return 0; |
|---|
| 699 | 785 | } |
|---|
| .. | .. |
|---|
| 704 | 790 | struct dwc3 *dwc = dep->dwc; |
|---|
| 705 | 791 | unsigned long flags; |
|---|
| 706 | 792 | u32 val; |
|---|
| 793 | + int ret; |
|---|
| 794 | + |
|---|
| 795 | + ret = pm_runtime_resume_and_get(dwc->dev); |
|---|
| 796 | + if (ret < 0) |
|---|
| 797 | + return ret; |
|---|
| 707 | 798 | |
|---|
| 708 | 799 | spin_lock_irqsave(&dwc->lock, flags); |
|---|
| 709 | 800 | val = dwc3_core_fifo_space(dep, DWC3_RXINFOQ); |
|---|
| 710 | 801 | seq_printf(s, "%u\n", val); |
|---|
| 711 | 802 | spin_unlock_irqrestore(&dwc->lock, flags); |
|---|
| 803 | + |
|---|
| 804 | + pm_runtime_put_sync(dwc->dev); |
|---|
| 712 | 805 | |
|---|
| 713 | 806 | return 0; |
|---|
| 714 | 807 | } |
|---|
| .. | .. |
|---|
| 719 | 812 | struct dwc3 *dwc = dep->dwc; |
|---|
| 720 | 813 | unsigned long flags; |
|---|
| 721 | 814 | u32 val; |
|---|
| 815 | + int ret; |
|---|
| 816 | + |
|---|
| 817 | + ret = pm_runtime_resume_and_get(dwc->dev); |
|---|
| 818 | + if (ret < 0) |
|---|
| 819 | + return ret; |
|---|
| 722 | 820 | |
|---|
| 723 | 821 | spin_lock_irqsave(&dwc->lock, flags); |
|---|
| 724 | 822 | val = dwc3_core_fifo_space(dep, DWC3_DESCFETCHQ); |
|---|
| 725 | 823 | seq_printf(s, "%u\n", val); |
|---|
| 726 | 824 | spin_unlock_irqrestore(&dwc->lock, flags); |
|---|
| 825 | + |
|---|
| 826 | + pm_runtime_put_sync(dwc->dev); |
|---|
| 727 | 827 | |
|---|
| 728 | 828 | return 0; |
|---|
| 729 | 829 | } |
|---|
| .. | .. |
|---|
| 734 | 834 | struct dwc3 *dwc = dep->dwc; |
|---|
| 735 | 835 | unsigned long flags; |
|---|
| 736 | 836 | u32 val; |
|---|
| 837 | + int ret; |
|---|
| 838 | + |
|---|
| 839 | + ret = pm_runtime_resume_and_get(dwc->dev); |
|---|
| 840 | + if (ret < 0) |
|---|
| 841 | + return ret; |
|---|
| 737 | 842 | |
|---|
| 738 | 843 | spin_lock_irqsave(&dwc->lock, flags); |
|---|
| 739 | 844 | val = dwc3_core_fifo_space(dep, DWC3_EVENTQ); |
|---|
| 740 | 845 | seq_printf(s, "%u\n", val); |
|---|
| 741 | 846 | spin_unlock_irqrestore(&dwc->lock, flags); |
|---|
| 847 | + |
|---|
| 848 | + pm_runtime_put_sync(dwc->dev); |
|---|
| 742 | 849 | |
|---|
| 743 | 850 | return 0; |
|---|
| 744 | 851 | } |
|---|
| .. | .. |
|---|
| 750 | 857 | unsigned long flags; |
|---|
| 751 | 858 | |
|---|
| 752 | 859 | spin_lock_irqsave(&dwc->lock, flags); |
|---|
| 753 | | - if (!(dep->flags & DWC3_EP_ENABLED) || |
|---|
| 754 | | - !dep->endpoint.desc) { |
|---|
| 755 | | - seq_printf(s, "--\n"); |
|---|
| 860 | + if (!(dep->flags & DWC3_EP_ENABLED) || !dep->endpoint.desc) { |
|---|
| 861 | + seq_puts(s, "--\n"); |
|---|
| 756 | 862 | goto out; |
|---|
| 757 | 863 | } |
|---|
| 758 | 864 | |
|---|
| 759 | 865 | switch (usb_endpoint_type(dep->endpoint.desc)) { |
|---|
| 760 | 866 | case USB_ENDPOINT_XFER_CONTROL: |
|---|
| 761 | | - seq_printf(s, "control\n"); |
|---|
| 867 | + seq_puts(s, "control\n"); |
|---|
| 762 | 868 | break; |
|---|
| 763 | 869 | case USB_ENDPOINT_XFER_ISOC: |
|---|
| 764 | | - seq_printf(s, "isochronous\n"); |
|---|
| 870 | + seq_puts(s, "isochronous\n"); |
|---|
| 765 | 871 | break; |
|---|
| 766 | 872 | case USB_ENDPOINT_XFER_BULK: |
|---|
| 767 | | - seq_printf(s, "bulk\n"); |
|---|
| 873 | + seq_puts(s, "bulk\n"); |
|---|
| 768 | 874 | break; |
|---|
| 769 | 875 | case USB_ENDPOINT_XFER_INT: |
|---|
| 770 | | - seq_printf(s, "interrupt\n"); |
|---|
| 876 | + seq_puts(s, "interrupt\n"); |
|---|
| 771 | 877 | break; |
|---|
| 772 | 878 | default: |
|---|
| 773 | | - seq_printf(s, "--\n"); |
|---|
| 879 | + seq_puts(s, "--\n"); |
|---|
| 774 | 880 | } |
|---|
| 775 | 881 | |
|---|
| 776 | 882 | out: |
|---|
| .. | .. |
|---|
| 785 | 891 | struct dwc3 *dwc = dep->dwc; |
|---|
| 786 | 892 | unsigned long flags; |
|---|
| 787 | 893 | int i; |
|---|
| 894 | + int ret; |
|---|
| 895 | + |
|---|
| 896 | + ret = pm_runtime_resume_and_get(dwc->dev); |
|---|
| 897 | + if (ret < 0) |
|---|
| 898 | + return ret; |
|---|
| 788 | 899 | |
|---|
| 789 | 900 | spin_lock_irqsave(&dwc->lock, flags); |
|---|
| 790 | 901 | if (dep->number <= 1) { |
|---|
| 791 | | - seq_printf(s, "--\n"); |
|---|
| 902 | + seq_puts(s, "--\n"); |
|---|
| 792 | 903 | goto out; |
|---|
| 793 | 904 | } |
|---|
| 794 | 905 | |
|---|
| 795 | | - seq_printf(s, "buffer_addr,size,type,ioc,isp_imi,csp,chn,lst,hwo\n"); |
|---|
| 906 | + seq_puts(s, "buffer_addr,size,type,ioc,isp_imi,csp,chn,lst,hwo\n"); |
|---|
| 796 | 907 | |
|---|
| 797 | 908 | for (i = 0; i < DWC3_TRB_NUM; i++) { |
|---|
| 798 | 909 | struct dwc3_trb *trb = &dep->trb_pool[i]; |
|---|
| .. | .. |
|---|
| 814 | 925 | out: |
|---|
| 815 | 926 | spin_unlock_irqrestore(&dwc->lock, flags); |
|---|
| 816 | 927 | |
|---|
| 928 | + pm_runtime_put_sync(dwc->dev); |
|---|
| 929 | + |
|---|
| 817 | 930 | return 0; |
|---|
| 818 | 931 | } |
|---|
| 819 | 932 | |
|---|
| .. | .. |
|---|
| 826 | 939 | u32 lower_32_bits; |
|---|
| 827 | 940 | u32 upper_32_bits; |
|---|
| 828 | 941 | u32 reg; |
|---|
| 942 | + int ret; |
|---|
| 943 | + |
|---|
| 944 | + ret = pm_runtime_resume_and_get(dwc->dev); |
|---|
| 945 | + if (ret < 0) |
|---|
| 946 | + return ret; |
|---|
| 829 | 947 | |
|---|
| 830 | 948 | spin_lock_irqsave(&dwc->lock, flags); |
|---|
| 831 | 949 | reg = DWC3_GDBGLSPMUX_EPSELECT(dep->number); |
|---|
| .. | .. |
|---|
| 837 | 955 | ep_info = ((u64)upper_32_bits << 32) | lower_32_bits; |
|---|
| 838 | 956 | seq_printf(s, "0x%016llx\n", ep_info); |
|---|
| 839 | 957 | spin_unlock_irqrestore(&dwc->lock, flags); |
|---|
| 958 | + |
|---|
| 959 | + pm_runtime_put_sync(dwc->dev); |
|---|
| 840 | 960 | |
|---|
| 841 | 961 | return 0; |
|---|
| 842 | 962 | } |
|---|
| .. | .. |
|---|
| 874 | 994 | const struct file_operations *fops = dwc3_ep_file_map[i].fops; |
|---|
| 875 | 995 | const char *name = dwc3_ep_file_map[i].name; |
|---|
| 876 | 996 | |
|---|
| 877 | | - debugfs_create_file(name, S_IRUGO, parent, dep, fops); |
|---|
| 997 | + debugfs_create_file(name, 0444, parent, dep, fops); |
|---|
| 878 | 998 | } |
|---|
| 879 | 999 | } |
|---|
| 880 | 1000 | |
|---|
| .. | .. |
|---|
| 899 | 1019 | dwc->regset->regs = dwc3_regs; |
|---|
| 900 | 1020 | dwc->regset->nregs = ARRAY_SIZE(dwc3_regs); |
|---|
| 901 | 1021 | dwc->regset->base = dwc->regs - DWC3_GLOBALS_REGS_START; |
|---|
| 1022 | + dwc->regset->dev = dwc->dev; |
|---|
| 902 | 1023 | |
|---|
| 903 | | - root = debugfs_create_dir(dev_name(dwc->dev), NULL); |
|---|
| 1024 | + root = debugfs_create_dir(dev_name(dwc->dev), usb_debug_root); |
|---|
| 904 | 1025 | dwc->root = root; |
|---|
| 905 | 1026 | |
|---|
| 906 | | - debugfs_create_regset32("regdump", S_IRUGO, root, dwc->regset); |
|---|
| 1027 | + debugfs_create_regset32("regdump", 0444, root, dwc->regset); |
|---|
| 1028 | + debugfs_create_file("lsp_dump", 0644, root, dwc, &dwc3_lsp_fops); |
|---|
| 907 | 1029 | |
|---|
| 908 | | - debugfs_create_file("lsp_dump", S_IRUGO | S_IWUSR, root, dwc, |
|---|
| 909 | | - &dwc3_lsp_fops); |
|---|
| 910 | | - |
|---|
| 911 | | - if (IS_ENABLED(CONFIG_USB_DWC3_DUAL_ROLE)) { |
|---|
| 912 | | - debugfs_create_file("mode", S_IRUGO | S_IWUSR, root, dwc, |
|---|
| 1030 | + if (IS_ENABLED(CONFIG_USB_DWC3_DUAL_ROLE)) |
|---|
| 1031 | + debugfs_create_file("mode", 0644, root, dwc, |
|---|
| 913 | 1032 | &dwc3_mode_fops); |
|---|
| 914 | | - } |
|---|
| 915 | 1033 | |
|---|
| 916 | 1034 | if (IS_ENABLED(CONFIG_USB_DWC3_DUAL_ROLE) || |
|---|
| 917 | 1035 | IS_ENABLED(CONFIG_USB_DWC3_GADGET)) { |
|---|
| 918 | | - debugfs_create_file("testmode", S_IRUGO | S_IWUSR, root, dwc, |
|---|
| 919 | | - &dwc3_testmode_fops); |
|---|
| 920 | | - debugfs_create_file("link_state", S_IRUGO | S_IWUSR, root, dwc, |
|---|
| 1036 | + debugfs_create_file("testmode", 0644, root, dwc, |
|---|
| 1037 | + &dwc3_testmode_fops); |
|---|
| 1038 | + debugfs_create_file("link_state", 0644, root, dwc, |
|---|
| 921 | 1039 | &dwc3_link_state_fops); |
|---|
| 922 | 1040 | } |
|---|
| 923 | 1041 | } |
|---|