| .. | .. |
|---|
| 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> |
|---|
| .. | .. |
|---|
| 397 | 397 | |
|---|
| 398 | 398 | switch (DWC3_GCTL_PRTCAP(reg)) { |
|---|
| 399 | 399 | case DWC3_GCTL_PRTCAP_HOST: |
|---|
| 400 | | - seq_printf(s, "host\n"); |
|---|
| 400 | + seq_puts(s, "host\n"); |
|---|
| 401 | 401 | break; |
|---|
| 402 | 402 | case DWC3_GCTL_PRTCAP_DEVICE: |
|---|
| 403 | | - seq_printf(s, "device\n"); |
|---|
| 403 | + seq_puts(s, "device\n"); |
|---|
| 404 | 404 | break; |
|---|
| 405 | 405 | case DWC3_GCTL_PRTCAP_OTG: |
|---|
| 406 | | - seq_printf(s, "otg\n"); |
|---|
| 406 | + seq_puts(s, "otg\n"); |
|---|
| 407 | 407 | break; |
|---|
| 408 | 408 | default: |
|---|
| 409 | 409 | seq_printf(s, "UNKNOWN %08x\n", DWC3_GCTL_PRTCAP(reg)); |
|---|
| .. | .. |
|---|
| 428 | 428 | if (copy_from_user(&buf, ubuf, min_t(size_t, sizeof(buf) - 1, count))) |
|---|
| 429 | 429 | return -EFAULT; |
|---|
| 430 | 430 | |
|---|
| 431 | + if (dwc->dr_mode != USB_DR_MODE_OTG) |
|---|
| 432 | + return count; |
|---|
| 433 | + |
|---|
| 431 | 434 | if (!strncmp(buf, "host", 4)) |
|---|
| 432 | 435 | mode = DWC3_GCTL_PRTCAP_HOST; |
|---|
| 433 | 436 | |
|---|
| .. | .. |
|---|
| 436 | 439 | |
|---|
| 437 | 440 | if (!strncmp(buf, "otg", 3)) |
|---|
| 438 | 441 | mode = DWC3_GCTL_PRTCAP_OTG; |
|---|
| 442 | + |
|---|
| 443 | +#if defined(CONFIG_ARCH_ROCKCHIP) && defined(CONFIG_NO_GKI) |
|---|
| 444 | + dwc->desired_role_sw_mode = mode; |
|---|
| 445 | +#endif |
|---|
| 439 | 446 | |
|---|
| 440 | 447 | dwc3_set_mode(dwc, mode); |
|---|
| 441 | 448 | |
|---|
| .. | .. |
|---|
| 464 | 471 | |
|---|
| 465 | 472 | switch (reg) { |
|---|
| 466 | 473 | case 0: |
|---|
| 467 | | - seq_printf(s, "no test\n"); |
|---|
| 474 | + seq_puts(s, "no test\n"); |
|---|
| 468 | 475 | break; |
|---|
| 469 | | - case TEST_J: |
|---|
| 470 | | - seq_printf(s, "test_j\n"); |
|---|
| 476 | + case USB_TEST_J: |
|---|
| 477 | + seq_puts(s, "test_j\n"); |
|---|
| 471 | 478 | break; |
|---|
| 472 | | - case TEST_K: |
|---|
| 473 | | - seq_printf(s, "test_k\n"); |
|---|
| 479 | + case USB_TEST_K: |
|---|
| 480 | + seq_puts(s, "test_k\n"); |
|---|
| 474 | 481 | break; |
|---|
| 475 | | - case TEST_SE0_NAK: |
|---|
| 476 | | - seq_printf(s, "test_se0_nak\n"); |
|---|
| 482 | + case USB_TEST_SE0_NAK: |
|---|
| 483 | + seq_puts(s, "test_se0_nak\n"); |
|---|
| 477 | 484 | break; |
|---|
| 478 | | - case TEST_PACKET: |
|---|
| 479 | | - seq_printf(s, "test_packet\n"); |
|---|
| 485 | + case USB_TEST_PACKET: |
|---|
| 486 | + seq_puts(s, "test_packet\n"); |
|---|
| 480 | 487 | break; |
|---|
| 481 | | - case TEST_FORCE_EN: |
|---|
| 482 | | - seq_printf(s, "test_force_enable\n"); |
|---|
| 488 | + case USB_TEST_FORCE_ENABLE: |
|---|
| 489 | + seq_puts(s, "test_force_enable\n"); |
|---|
| 483 | 490 | break; |
|---|
| 484 | 491 | default: |
|---|
| 485 | 492 | seq_printf(s, "UNKNOWN %d\n", reg); |
|---|
| .. | .. |
|---|
| 506 | 513 | return -EFAULT; |
|---|
| 507 | 514 | |
|---|
| 508 | 515 | if (!strncmp(buf, "test_j", 6)) |
|---|
| 509 | | - testmode = TEST_J; |
|---|
| 516 | + testmode = USB_TEST_J; |
|---|
| 510 | 517 | else if (!strncmp(buf, "test_k", 6)) |
|---|
| 511 | | - testmode = TEST_K; |
|---|
| 518 | + testmode = USB_TEST_K; |
|---|
| 512 | 519 | else if (!strncmp(buf, "test_se0_nak", 12)) |
|---|
| 513 | | - testmode = TEST_SE0_NAK; |
|---|
| 520 | + testmode = USB_TEST_SE0_NAK; |
|---|
| 514 | 521 | else if (!strncmp(buf, "test_packet", 11)) |
|---|
| 515 | | - testmode = TEST_PACKET; |
|---|
| 522 | + testmode = USB_TEST_PACKET; |
|---|
| 516 | 523 | else if (!strncmp(buf, "test_force_enable", 17)) |
|---|
| 517 | | - testmode = TEST_FORCE_EN; |
|---|
| 524 | + testmode = USB_TEST_FORCE_ENABLE; |
|---|
| 518 | 525 | else |
|---|
| 519 | 526 | testmode = 0; |
|---|
| 520 | 527 | |
|---|
| .. | .. |
|---|
| 635 | 642 | struct dwc3_ep *dep = s->private; |
|---|
| 636 | 643 | struct dwc3 *dwc = dep->dwc; |
|---|
| 637 | 644 | unsigned long flags; |
|---|
| 645 | + u32 mdwidth; |
|---|
| 638 | 646 | u32 val; |
|---|
| 639 | 647 | |
|---|
| 640 | 648 | spin_lock_irqsave(&dwc->lock, flags); |
|---|
| 641 | 649 | val = dwc3_core_fifo_space(dep, DWC3_TXFIFO); |
|---|
| 642 | 650 | |
|---|
| 643 | 651 | /* Convert to bytes */ |
|---|
| 644 | | - val *= DWC3_MDWIDTH(dwc->hwparams.hwparams0); |
|---|
| 652 | + mdwidth = dwc3_mdwidth(dwc); |
|---|
| 653 | + |
|---|
| 654 | + val *= mdwidth; |
|---|
| 645 | 655 | val >>= 3; |
|---|
| 646 | 656 | seq_printf(s, "%u\n", val); |
|---|
| 647 | 657 | spin_unlock_irqrestore(&dwc->lock, flags); |
|---|
| .. | .. |
|---|
| 654 | 664 | struct dwc3_ep *dep = s->private; |
|---|
| 655 | 665 | struct dwc3 *dwc = dep->dwc; |
|---|
| 656 | 666 | unsigned long flags; |
|---|
| 667 | + u32 mdwidth; |
|---|
| 657 | 668 | u32 val; |
|---|
| 658 | 669 | |
|---|
| 659 | 670 | spin_lock_irqsave(&dwc->lock, flags); |
|---|
| 660 | 671 | val = dwc3_core_fifo_space(dep, DWC3_RXFIFO); |
|---|
| 661 | 672 | |
|---|
| 662 | 673 | /* Convert to bytes */ |
|---|
| 663 | | - val *= DWC3_MDWIDTH(dwc->hwparams.hwparams0); |
|---|
| 674 | + mdwidth = dwc3_mdwidth(dwc); |
|---|
| 675 | + |
|---|
| 676 | + val *= mdwidth; |
|---|
| 664 | 677 | val >>= 3; |
|---|
| 665 | 678 | seq_printf(s, "%u\n", val); |
|---|
| 666 | 679 | spin_unlock_irqrestore(&dwc->lock, flags); |
|---|
| .. | .. |
|---|
| 750 | 763 | unsigned long flags; |
|---|
| 751 | 764 | |
|---|
| 752 | 765 | spin_lock_irqsave(&dwc->lock, flags); |
|---|
| 753 | | - if (!(dep->flags & DWC3_EP_ENABLED) || |
|---|
| 754 | | - !dep->endpoint.desc) { |
|---|
| 755 | | - seq_printf(s, "--\n"); |
|---|
| 766 | + if (!(dep->flags & DWC3_EP_ENABLED) || !dep->endpoint.desc) { |
|---|
| 767 | + seq_puts(s, "--\n"); |
|---|
| 756 | 768 | goto out; |
|---|
| 757 | 769 | } |
|---|
| 758 | 770 | |
|---|
| 759 | 771 | switch (usb_endpoint_type(dep->endpoint.desc)) { |
|---|
| 760 | 772 | case USB_ENDPOINT_XFER_CONTROL: |
|---|
| 761 | | - seq_printf(s, "control\n"); |
|---|
| 773 | + seq_puts(s, "control\n"); |
|---|
| 762 | 774 | break; |
|---|
| 763 | 775 | case USB_ENDPOINT_XFER_ISOC: |
|---|
| 764 | | - seq_printf(s, "isochronous\n"); |
|---|
| 776 | + seq_puts(s, "isochronous\n"); |
|---|
| 765 | 777 | break; |
|---|
| 766 | 778 | case USB_ENDPOINT_XFER_BULK: |
|---|
| 767 | | - seq_printf(s, "bulk\n"); |
|---|
| 779 | + seq_puts(s, "bulk\n"); |
|---|
| 768 | 780 | break; |
|---|
| 769 | 781 | case USB_ENDPOINT_XFER_INT: |
|---|
| 770 | | - seq_printf(s, "interrupt\n"); |
|---|
| 782 | + seq_puts(s, "interrupt\n"); |
|---|
| 771 | 783 | break; |
|---|
| 772 | 784 | default: |
|---|
| 773 | | - seq_printf(s, "--\n"); |
|---|
| 785 | + seq_puts(s, "--\n"); |
|---|
| 774 | 786 | } |
|---|
| 775 | 787 | |
|---|
| 776 | 788 | out: |
|---|
| .. | .. |
|---|
| 788 | 800 | |
|---|
| 789 | 801 | spin_lock_irqsave(&dwc->lock, flags); |
|---|
| 790 | 802 | if (dep->number <= 1) { |
|---|
| 791 | | - seq_printf(s, "--\n"); |
|---|
| 803 | + seq_puts(s, "--\n"); |
|---|
| 792 | 804 | goto out; |
|---|
| 793 | 805 | } |
|---|
| 794 | 806 | |
|---|
| 795 | | - seq_printf(s, "buffer_addr,size,type,ioc,isp_imi,csp,chn,lst,hwo\n"); |
|---|
| 807 | + seq_puts(s, "buffer_addr,size,type,ioc,isp_imi,csp,chn,lst,hwo\n"); |
|---|
| 796 | 808 | |
|---|
| 797 | 809 | for (i = 0; i < DWC3_TRB_NUM; i++) { |
|---|
| 798 | 810 | struct dwc3_trb *trb = &dep->trb_pool[i]; |
|---|
| .. | .. |
|---|
| 874 | 886 | const struct file_operations *fops = dwc3_ep_file_map[i].fops; |
|---|
| 875 | 887 | const char *name = dwc3_ep_file_map[i].name; |
|---|
| 876 | 888 | |
|---|
| 877 | | - debugfs_create_file(name, S_IRUGO, parent, dep, fops); |
|---|
| 889 | + debugfs_create_file(name, 0444, parent, dep, fops); |
|---|
| 878 | 890 | } |
|---|
| 879 | 891 | } |
|---|
| 880 | 892 | |
|---|
| .. | .. |
|---|
| 900 | 912 | dwc->regset->nregs = ARRAY_SIZE(dwc3_regs); |
|---|
| 901 | 913 | dwc->regset->base = dwc->regs - DWC3_GLOBALS_REGS_START; |
|---|
| 902 | 914 | |
|---|
| 903 | | - root = debugfs_create_dir(dev_name(dwc->dev), NULL); |
|---|
| 915 | + root = debugfs_create_dir(dev_name(dwc->dev), usb_debug_root); |
|---|
| 904 | 916 | dwc->root = root; |
|---|
| 905 | 917 | |
|---|
| 906 | | - debugfs_create_regset32("regdump", S_IRUGO, root, dwc->regset); |
|---|
| 918 | + debugfs_create_regset32("regdump", 0444, root, dwc->regset); |
|---|
| 919 | + debugfs_create_file("lsp_dump", 0644, root, dwc, &dwc3_lsp_fops); |
|---|
| 907 | 920 | |
|---|
| 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, |
|---|
| 921 | + if (IS_ENABLED(CONFIG_USB_DWC3_DUAL_ROLE)) |
|---|
| 922 | + debugfs_create_file("mode", 0644, root, dwc, |
|---|
| 913 | 923 | &dwc3_mode_fops); |
|---|
| 914 | | - } |
|---|
| 915 | 924 | |
|---|
| 916 | 925 | if (IS_ENABLED(CONFIG_USB_DWC3_DUAL_ROLE) || |
|---|
| 917 | 926 | 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, |
|---|
| 927 | + debugfs_create_file("testmode", 0644, root, dwc, |
|---|
| 928 | + &dwc3_testmode_fops); |
|---|
| 929 | + debugfs_create_file("link_state", 0644, root, dwc, |
|---|
| 921 | 930 | &dwc3_link_state_fops); |
|---|
| 922 | 931 | } |
|---|
| 923 | 932 | } |
|---|