hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/usb/dwc3/debugfs.c
....@@ -327,6 +327,11 @@
327327 unsigned int current_mode;
328328 unsigned long flags;
329329 u32 reg;
330
+ int ret;
331
+
332
+ ret = pm_runtime_resume_and_get(dwc->dev);
333
+ if (ret < 0)
334
+ return ret;
330335
331336 spin_lock_irqsave(&dwc->lock, flags);
332337 reg = dwc3_readl(dwc->regs, DWC3_GSTS);
....@@ -344,6 +349,8 @@
344349 break;
345350 }
346351 spin_unlock_irqrestore(&dwc->lock, flags);
352
+
353
+ pm_runtime_put_sync(dwc->dev);
347354
348355 return 0;
349356 }
....@@ -390,6 +397,11 @@
390397 struct dwc3 *dwc = s->private;
391398 unsigned long flags;
392399 u32 reg;
400
+ int ret;
401
+
402
+ ret = pm_runtime_resume_and_get(dwc->dev);
403
+ if (ret < 0)
404
+ return ret;
393405
394406 spin_lock_irqsave(&dwc->lock, flags);
395407 reg = dwc3_readl(dwc->regs, DWC3_GCTL);
....@@ -408,6 +420,8 @@
408420 default:
409421 seq_printf(s, "UNKNOWN %08x\n", DWC3_GCTL_PRTCAP(reg));
410422 }
423
+
424
+ pm_runtime_put_sync(dwc->dev);
411425
412426 return 0;
413427 }
....@@ -462,6 +476,11 @@
462476 struct dwc3 *dwc = s->private;
463477 unsigned long flags;
464478 u32 reg;
479
+ int ret;
480
+
481
+ ret = pm_runtime_resume_and_get(dwc->dev);
482
+ if (ret < 0)
483
+ return ret;
465484
466485 spin_lock_irqsave(&dwc->lock, flags);
467486 reg = dwc3_readl(dwc->regs, DWC3_DCTL);
....@@ -492,6 +511,8 @@
492511 seq_printf(s, "UNKNOWN %d\n", reg);
493512 }
494513
514
+ pm_runtime_put_sync(dwc->dev);
515
+
495516 return 0;
496517 }
497518
....@@ -508,6 +529,7 @@
508529 unsigned long flags;
509530 u32 testmode = 0;
510531 char buf[32];
532
+ int ret;
511533
512534 if (copy_from_user(&buf, ubuf, min_t(size_t, sizeof(buf) - 1, count)))
513535 return -EFAULT;
....@@ -525,9 +547,15 @@
525547 else
526548 testmode = 0;
527549
550
+ ret = pm_runtime_resume_and_get(dwc->dev);
551
+ if (ret < 0)
552
+ return ret;
553
+
528554 spin_lock_irqsave(&dwc->lock, flags);
529555 dwc3_gadget_set_test_mode(dwc, testmode);
530556 spin_unlock_irqrestore(&dwc->lock, flags);
557
+
558
+ pm_runtime_put_sync(dwc->dev);
531559
532560 return count;
533561 }
....@@ -547,12 +575,18 @@
547575 enum dwc3_link_state state;
548576 u32 reg;
549577 u8 speed;
578
+ int ret;
579
+
580
+ ret = pm_runtime_resume_and_get(dwc->dev);
581
+ if (ret < 0)
582
+ return ret;
550583
551584 spin_lock_irqsave(&dwc->lock, flags);
552585 reg = dwc3_readl(dwc->regs, DWC3_GSTS);
553586 if (DWC3_GSTS_CURMOD(reg) != DWC3_GSTS_CURMOD_DEVICE) {
554587 seq_puts(s, "Not available\n");
555588 spin_unlock_irqrestore(&dwc->lock, flags);
589
+ pm_runtime_put_sync(dwc->dev);
556590 return 0;
557591 }
558592
....@@ -564,6 +598,8 @@
564598 dwc3_gadget_link_string(state) :
565599 dwc3_gadget_hs_link_string(state));
566600 spin_unlock_irqrestore(&dwc->lock, flags);
601
+
602
+ pm_runtime_put_sync(dwc->dev);
567603
568604 return 0;
569605 }
....@@ -583,6 +619,7 @@
583619 char buf[32];
584620 u32 reg;
585621 u8 speed;
622
+ int ret;
586623
587624 if (copy_from_user(&buf, ubuf, min_t(size_t, sizeof(buf) - 1, count)))
588625 return -EFAULT;
....@@ -602,10 +639,15 @@
602639 else
603640 return -EINVAL;
604641
642
+ ret = pm_runtime_resume_and_get(dwc->dev);
643
+ if (ret < 0)
644
+ return ret;
645
+
605646 spin_lock_irqsave(&dwc->lock, flags);
606647 reg = dwc3_readl(dwc->regs, DWC3_GSTS);
607648 if (DWC3_GSTS_CURMOD(reg) != DWC3_GSTS_CURMOD_DEVICE) {
608649 spin_unlock_irqrestore(&dwc->lock, flags);
650
+ pm_runtime_put_sync(dwc->dev);
609651 return -EINVAL;
610652 }
611653
....@@ -615,11 +657,14 @@
615657 if (speed < DWC3_DSTS_SUPERSPEED &&
616658 state != DWC3_LINK_STATE_RECOV) {
617659 spin_unlock_irqrestore(&dwc->lock, flags);
660
+ pm_runtime_put_sync(dwc->dev);
618661 return -EINVAL;
619662 }
620663
621664 dwc3_gadget_set_link_state(dwc, state);
622665 spin_unlock_irqrestore(&dwc->lock, flags);
666
+
667
+ pm_runtime_put_sync(dwc->dev);
623668
624669 return count;
625670 }
....@@ -644,6 +689,11 @@
644689 unsigned long flags;
645690 u32 mdwidth;
646691 u32 val;
692
+ int ret;
693
+
694
+ ret = pm_runtime_resume_and_get(dwc->dev);
695
+ if (ret < 0)
696
+ return ret;
647697
648698 spin_lock_irqsave(&dwc->lock, flags);
649699 val = dwc3_core_fifo_space(dep, DWC3_TXFIFO);
....@@ -656,6 +706,8 @@
656706 seq_printf(s, "%u\n", val);
657707 spin_unlock_irqrestore(&dwc->lock, flags);
658708
709
+ pm_runtime_put_sync(dwc->dev);
710
+
659711 return 0;
660712 }
661713
....@@ -666,6 +718,11 @@
666718 unsigned long flags;
667719 u32 mdwidth;
668720 u32 val;
721
+ int ret;
722
+
723
+ ret = pm_runtime_resume_and_get(dwc->dev);
724
+ if (ret < 0)
725
+ return ret;
669726
670727 spin_lock_irqsave(&dwc->lock, flags);
671728 val = dwc3_core_fifo_space(dep, DWC3_RXFIFO);
....@@ -678,6 +735,8 @@
678735 seq_printf(s, "%u\n", val);
679736 spin_unlock_irqrestore(&dwc->lock, flags);
680737
738
+ pm_runtime_put_sync(dwc->dev);
739
+
681740 return 0;
682741 }
683742
....@@ -687,11 +746,18 @@
687746 struct dwc3 *dwc = dep->dwc;
688747 unsigned long flags;
689748 u32 val;
749
+ int ret;
750
+
751
+ ret = pm_runtime_resume_and_get(dwc->dev);
752
+ if (ret < 0)
753
+ return ret;
690754
691755 spin_lock_irqsave(&dwc->lock, flags);
692756 val = dwc3_core_fifo_space(dep, DWC3_TXREQQ);
693757 seq_printf(s, "%u\n", val);
694758 spin_unlock_irqrestore(&dwc->lock, flags);
759
+
760
+ pm_runtime_put_sync(dwc->dev);
695761
696762 return 0;
697763 }
....@@ -702,11 +768,18 @@
702768 struct dwc3 *dwc = dep->dwc;
703769 unsigned long flags;
704770 u32 val;
771
+ int ret;
772
+
773
+ ret = pm_runtime_resume_and_get(dwc->dev);
774
+ if (ret < 0)
775
+ return ret;
705776
706777 spin_lock_irqsave(&dwc->lock, flags);
707778 val = dwc3_core_fifo_space(dep, DWC3_RXREQQ);
708779 seq_printf(s, "%u\n", val);
709780 spin_unlock_irqrestore(&dwc->lock, flags);
781
+
782
+ pm_runtime_put_sync(dwc->dev);
710783
711784 return 0;
712785 }
....@@ -717,11 +790,18 @@
717790 struct dwc3 *dwc = dep->dwc;
718791 unsigned long flags;
719792 u32 val;
793
+ int ret;
794
+
795
+ ret = pm_runtime_resume_and_get(dwc->dev);
796
+ if (ret < 0)
797
+ return ret;
720798
721799 spin_lock_irqsave(&dwc->lock, flags);
722800 val = dwc3_core_fifo_space(dep, DWC3_RXINFOQ);
723801 seq_printf(s, "%u\n", val);
724802 spin_unlock_irqrestore(&dwc->lock, flags);
803
+
804
+ pm_runtime_put_sync(dwc->dev);
725805
726806 return 0;
727807 }
....@@ -732,11 +812,18 @@
732812 struct dwc3 *dwc = dep->dwc;
733813 unsigned long flags;
734814 u32 val;
815
+ int ret;
816
+
817
+ ret = pm_runtime_resume_and_get(dwc->dev);
818
+ if (ret < 0)
819
+ return ret;
735820
736821 spin_lock_irqsave(&dwc->lock, flags);
737822 val = dwc3_core_fifo_space(dep, DWC3_DESCFETCHQ);
738823 seq_printf(s, "%u\n", val);
739824 spin_unlock_irqrestore(&dwc->lock, flags);
825
+
826
+ pm_runtime_put_sync(dwc->dev);
740827
741828 return 0;
742829 }
....@@ -747,11 +834,18 @@
747834 struct dwc3 *dwc = dep->dwc;
748835 unsigned long flags;
749836 u32 val;
837
+ int ret;
838
+
839
+ ret = pm_runtime_resume_and_get(dwc->dev);
840
+ if (ret < 0)
841
+ return ret;
750842
751843 spin_lock_irqsave(&dwc->lock, flags);
752844 val = dwc3_core_fifo_space(dep, DWC3_EVENTQ);
753845 seq_printf(s, "%u\n", val);
754846 spin_unlock_irqrestore(&dwc->lock, flags);
847
+
848
+ pm_runtime_put_sync(dwc->dev);
755849
756850 return 0;
757851 }
....@@ -797,6 +891,11 @@
797891 struct dwc3 *dwc = dep->dwc;
798892 unsigned long flags;
799893 int i;
894
+ int ret;
895
+
896
+ ret = pm_runtime_resume_and_get(dwc->dev);
897
+ if (ret < 0)
898
+ return ret;
800899
801900 spin_lock_irqsave(&dwc->lock, flags);
802901 if (dep->number <= 1) {
....@@ -826,6 +925,8 @@
826925 out:
827926 spin_unlock_irqrestore(&dwc->lock, flags);
828927
928
+ pm_runtime_put_sync(dwc->dev);
929
+
829930 return 0;
830931 }
831932
....@@ -838,6 +939,11 @@
838939 u32 lower_32_bits;
839940 u32 upper_32_bits;
840941 u32 reg;
942
+ int ret;
943
+
944
+ ret = pm_runtime_resume_and_get(dwc->dev);
945
+ if (ret < 0)
946
+ return ret;
841947
842948 spin_lock_irqsave(&dwc->lock, flags);
843949 reg = DWC3_GDBGLSPMUX_EPSELECT(dep->number);
....@@ -849,6 +955,8 @@
849955 ep_info = ((u64)upper_32_bits << 32) | lower_32_bits;
850956 seq_printf(s, "0x%016llx\n", ep_info);
851957 spin_unlock_irqrestore(&dwc->lock, flags);
958
+
959
+ pm_runtime_put_sync(dwc->dev);
852960
853961 return 0;
854962 }
....@@ -911,6 +1019,7 @@
9111019 dwc->regset->regs = dwc3_regs;
9121020 dwc->regset->nregs = ARRAY_SIZE(dwc3_regs);
9131021 dwc->regset->base = dwc->regs - DWC3_GLOBALS_REGS_START;
1022
+ dwc->regset->dev = dwc->dev;
9141023
9151024 root = debugfs_create_dir(dev_name(dwc->dev), usb_debug_root);
9161025 dwc->root = root;