@@ -327,6 +327,11 @@ static int dwc3_lsp_show(struct seq_file *s, void *unused)
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 );
@@ -345,6 +350,8 @@ static int dwc3_lsp_show(struct seq_file *s, void *unused)
345
350
}
346
351
spin_unlock_irqrestore (& dwc -> lock , flags );
347
352
353
+ pm_runtime_put_sync (dwc -> dev );
354
+
348
355
return 0 ;
349
356
}
350
357
@@ -390,6 +397,11 @@ static int dwc3_mode_show(struct seq_file *s, void *unused)
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 );
@@ -409,6 +421,8 @@ static int dwc3_mode_show(struct seq_file *s, void *unused)
409
421
seq_printf (s , "UNKNOWN %08x\n" , DWC3_GCTL_PRTCAP (reg ));
410
422
}
411
423
424
+ pm_runtime_put_sync (dwc -> dev );
425
+
412
426
return 0 ;
413
427
}
414
428
@@ -458,6 +472,11 @@ static int dwc3_testmode_show(struct seq_file *s, void *unused)
458
472
struct dwc3 * dwc = s -> private ;
459
473
unsigned long flags ;
460
474
u32 reg ;
475
+ int ret ;
476
+
477
+ ret = pm_runtime_resume_and_get (dwc -> dev );
478
+ if (ret < 0 )
479
+ return ret ;
461
480
462
481
spin_lock_irqsave (& dwc -> lock , flags );
463
482
reg = dwc3_readl (dwc -> regs , DWC3_DCTL );
@@ -488,6 +507,8 @@ static int dwc3_testmode_show(struct seq_file *s, void *unused)
488
507
seq_printf (s , "UNKNOWN %d\n" , reg );
489
508
}
490
509
510
+ pm_runtime_put_sync (dwc -> dev );
511
+
491
512
return 0 ;
492
513
}
493
514
@@ -504,6 +525,7 @@ static ssize_t dwc3_testmode_write(struct file *file,
504
525
unsigned long flags ;
505
526
u32 testmode = 0 ;
506
527
char buf [32 ];
528
+ int ret ;
507
529
508
530
if (copy_from_user (& buf , ubuf , min_t (size_t , sizeof (buf ) - 1 , count )))
509
531
return - EFAULT ;
@@ -521,10 +543,16 @@ static ssize_t dwc3_testmode_write(struct file *file,
521
543
else
522
544
testmode = 0 ;
523
545
546
+ ret = pm_runtime_resume_and_get (dwc -> dev );
547
+ if (ret < 0 )
548
+ return ret ;
549
+
524
550
spin_lock_irqsave (& dwc -> lock , flags );
525
551
dwc3_gadget_set_test_mode (dwc , testmode );
526
552
spin_unlock_irqrestore (& dwc -> lock , flags );
527
553
554
+ pm_runtime_put_sync (dwc -> dev );
555
+
528
556
return count ;
529
557
}
530
558
@@ -543,12 +571,18 @@ static int dwc3_link_state_show(struct seq_file *s, void *unused)
543
571
enum dwc3_link_state state ;
544
572
u32 reg ;
545
573
u8 speed ;
574
+ int ret ;
575
+
576
+ ret = pm_runtime_resume_and_get (dwc -> dev );
577
+ if (ret < 0 )
578
+ return ret ;
546
579
547
580
spin_lock_irqsave (& dwc -> lock , flags );
548
581
reg = dwc3_readl (dwc -> regs , DWC3_GSTS );
549
582
if (DWC3_GSTS_CURMOD (reg ) != DWC3_GSTS_CURMOD_DEVICE ) {
550
583
seq_puts (s , "Not available\n" );
551
584
spin_unlock_irqrestore (& dwc -> lock , flags );
585
+ pm_runtime_put_sync (dwc -> dev );
552
586
return 0 ;
553
587
}
554
588
@@ -561,6 +595,8 @@ static int dwc3_link_state_show(struct seq_file *s, void *unused)
561
595
dwc3_gadget_hs_link_string (state ));
562
596
spin_unlock_irqrestore (& dwc -> lock , flags );
563
597
598
+ pm_runtime_put_sync (dwc -> dev );
599
+
564
600
return 0 ;
565
601
}
566
602
@@ -579,6 +615,7 @@ static ssize_t dwc3_link_state_write(struct file *file,
579
615
char buf [32 ];
580
616
u32 reg ;
581
617
u8 speed ;
618
+ int ret ;
582
619
583
620
if (copy_from_user (& buf , ubuf , min_t (size_t , sizeof (buf ) - 1 , count )))
584
621
return - EFAULT ;
@@ -598,10 +635,15 @@ static ssize_t dwc3_link_state_write(struct file *file,
598
635
else
599
636
return - EINVAL ;
600
637
638
+ ret = pm_runtime_resume_and_get (dwc -> dev );
639
+ if (ret < 0 )
640
+ return ret ;
641
+
601
642
spin_lock_irqsave (& dwc -> lock , flags );
602
643
reg = dwc3_readl (dwc -> regs , DWC3_GSTS );
603
644
if (DWC3_GSTS_CURMOD (reg ) != DWC3_GSTS_CURMOD_DEVICE ) {
604
645
spin_unlock_irqrestore (& dwc -> lock , flags );
646
+ pm_runtime_put_sync (dwc -> dev );
605
647
return - EINVAL ;
606
648
}
607
649
@@ -611,12 +653,15 @@ static ssize_t dwc3_link_state_write(struct file *file,
611
653
if (speed < DWC3_DSTS_SUPERSPEED &&
612
654
state != DWC3_LINK_STATE_RECOV ) {
613
655
spin_unlock_irqrestore (& dwc -> lock , flags );
656
+ pm_runtime_put_sync (dwc -> dev );
614
657
return - EINVAL ;
615
658
}
616
659
617
660
dwc3_gadget_set_link_state (dwc , state );
618
661
spin_unlock_irqrestore (& dwc -> lock , flags );
619
662
663
+ pm_runtime_put_sync (dwc -> dev );
664
+
620
665
return count ;
621
666
}
622
667
@@ -640,6 +685,11 @@ static int dwc3_tx_fifo_size_show(struct seq_file *s, void *unused)
640
685
unsigned long flags ;
641
686
u32 mdwidth ;
642
687
u32 val ;
688
+ int ret ;
689
+
690
+ ret = pm_runtime_resume_and_get (dwc -> dev );
691
+ if (ret < 0 )
692
+ return ret ;
643
693
644
694
spin_lock_irqsave (& dwc -> lock , flags );
645
695
val = dwc3_core_fifo_space (dep , DWC3_TXFIFO );
@@ -652,6 +702,8 @@ static int dwc3_tx_fifo_size_show(struct seq_file *s, void *unused)
652
702
seq_printf (s , "%u\n" , val );
653
703
spin_unlock_irqrestore (& dwc -> lock , flags );
654
704
705
+ pm_runtime_put_sync (dwc -> dev );
706
+
655
707
return 0 ;
656
708
}
657
709
@@ -662,6 +714,11 @@ static int dwc3_rx_fifo_size_show(struct seq_file *s, void *unused)
662
714
unsigned long flags ;
663
715
u32 mdwidth ;
664
716
u32 val ;
717
+ int ret ;
718
+
719
+ ret = pm_runtime_resume_and_get (dwc -> dev );
720
+ if (ret < 0 )
721
+ return ret ;
665
722
666
723
spin_lock_irqsave (& dwc -> lock , flags );
667
724
val = dwc3_core_fifo_space (dep , DWC3_RXFIFO );
@@ -674,6 +731,8 @@ static int dwc3_rx_fifo_size_show(struct seq_file *s, void *unused)
674
731
seq_printf (s , "%u\n" , val );
675
732
spin_unlock_irqrestore (& dwc -> lock , flags );
676
733
734
+ pm_runtime_put_sync (dwc -> dev );
735
+
677
736
return 0 ;
678
737
}
679
738
@@ -683,12 +742,19 @@ static int dwc3_tx_request_queue_show(struct seq_file *s, void *unused)
683
742
struct dwc3 * dwc = dep -> dwc ;
684
743
unsigned long flags ;
685
744
u32 val ;
745
+ int ret ;
746
+
747
+ ret = pm_runtime_resume_and_get (dwc -> dev );
748
+ if (ret < 0 )
749
+ return ret ;
686
750
687
751
spin_lock_irqsave (& dwc -> lock , flags );
688
752
val = dwc3_core_fifo_space (dep , DWC3_TXREQQ );
689
753
seq_printf (s , "%u\n" , val );
690
754
spin_unlock_irqrestore (& dwc -> lock , flags );
691
755
756
+ pm_runtime_put_sync (dwc -> dev );
757
+
692
758
return 0 ;
693
759
}
694
760
@@ -698,12 +764,19 @@ static int dwc3_rx_request_queue_show(struct seq_file *s, void *unused)
698
764
struct dwc3 * dwc = dep -> dwc ;
699
765
unsigned long flags ;
700
766
u32 val ;
767
+ int ret ;
768
+
769
+ ret = pm_runtime_resume_and_get (dwc -> dev );
770
+ if (ret < 0 )
771
+ return ret ;
701
772
702
773
spin_lock_irqsave (& dwc -> lock , flags );
703
774
val = dwc3_core_fifo_space (dep , DWC3_RXREQQ );
704
775
seq_printf (s , "%u\n" , val );
705
776
spin_unlock_irqrestore (& dwc -> lock , flags );
706
777
778
+ pm_runtime_put_sync (dwc -> dev );
779
+
707
780
return 0 ;
708
781
}
709
782
@@ -713,12 +786,19 @@ static int dwc3_rx_info_queue_show(struct seq_file *s, void *unused)
713
786
struct dwc3 * dwc = dep -> dwc ;
714
787
unsigned long flags ;
715
788
u32 val ;
789
+ int ret ;
790
+
791
+ ret = pm_runtime_resume_and_get (dwc -> dev );
792
+ if (ret < 0 )
793
+ return ret ;
716
794
717
795
spin_lock_irqsave (& dwc -> lock , flags );
718
796
val = dwc3_core_fifo_space (dep , DWC3_RXINFOQ );
719
797
seq_printf (s , "%u\n" , val );
720
798
spin_unlock_irqrestore (& dwc -> lock , flags );
721
799
800
+ pm_runtime_put_sync (dwc -> dev );
801
+
722
802
return 0 ;
723
803
}
724
804
@@ -728,12 +808,19 @@ static int dwc3_descriptor_fetch_queue_show(struct seq_file *s, void *unused)
728
808
struct dwc3 * dwc = dep -> dwc ;
729
809
unsigned long flags ;
730
810
u32 val ;
811
+ int ret ;
812
+
813
+ ret = pm_runtime_resume_and_get (dwc -> dev );
814
+ if (ret < 0 )
815
+ return ret ;
731
816
732
817
spin_lock_irqsave (& dwc -> lock , flags );
733
818
val = dwc3_core_fifo_space (dep , DWC3_DESCFETCHQ );
734
819
seq_printf (s , "%u\n" , val );
735
820
spin_unlock_irqrestore (& dwc -> lock , flags );
736
821
822
+ pm_runtime_put_sync (dwc -> dev );
823
+
737
824
return 0 ;
738
825
}
739
826
@@ -743,12 +830,19 @@ static int dwc3_event_queue_show(struct seq_file *s, void *unused)
743
830
struct dwc3 * dwc = dep -> dwc ;
744
831
unsigned long flags ;
745
832
u32 val ;
833
+ int ret ;
834
+
835
+ ret = pm_runtime_resume_and_get (dwc -> dev );
836
+ if (ret < 0 )
837
+ return ret ;
746
838
747
839
spin_lock_irqsave (& dwc -> lock , flags );
748
840
val = dwc3_core_fifo_space (dep , DWC3_EVENTQ );
749
841
seq_printf (s , "%u\n" , val );
750
842
spin_unlock_irqrestore (& dwc -> lock , flags );
751
843
844
+ pm_runtime_put_sync (dwc -> dev );
845
+
752
846
return 0 ;
753
847
}
754
848
@@ -793,6 +887,11 @@ static int dwc3_trb_ring_show(struct seq_file *s, void *unused)
793
887
struct dwc3 * dwc = dep -> dwc ;
794
888
unsigned long flags ;
795
889
int i ;
890
+ int ret ;
891
+
892
+ ret = pm_runtime_resume_and_get (dwc -> dev );
893
+ if (ret < 0 )
894
+ return ret ;
796
895
797
896
spin_lock_irqsave (& dwc -> lock , flags );
798
897
if (dep -> number <= 1 ) {
@@ -822,6 +921,8 @@ static int dwc3_trb_ring_show(struct seq_file *s, void *unused)
822
921
out :
823
922
spin_unlock_irqrestore (& dwc -> lock , flags );
824
923
924
+ pm_runtime_put_sync (dwc -> dev );
925
+
825
926
return 0 ;
826
927
}
827
928
@@ -834,6 +935,11 @@ static int dwc3_ep_info_register_show(struct seq_file *s, void *unused)
834
935
u32 lower_32_bits ;
835
936
u32 upper_32_bits ;
836
937
u32 reg ;
938
+ int ret ;
939
+
940
+ ret = pm_runtime_resume_and_get (dwc -> dev );
941
+ if (ret < 0 )
942
+ return ret ;
837
943
838
944
spin_lock_irqsave (& dwc -> lock , flags );
839
945
reg = DWC3_GDBGLSPMUX_EPSELECT (dep -> number );
@@ -846,6 +952,8 @@ static int dwc3_ep_info_register_show(struct seq_file *s, void *unused)
846
952
seq_printf (s , "0x%016llx\n" , ep_info );
847
953
spin_unlock_irqrestore (& dwc -> lock , flags );
848
954
955
+ pm_runtime_put_sync (dwc -> dev );
956
+
849
957
return 0 ;
850
958
}
851
959
@@ -905,6 +1013,7 @@ void dwc3_debugfs_init(struct dwc3 *dwc)
905
1013
dwc -> regset -> regs = dwc3_regs ;
906
1014
dwc -> regset -> nregs = ARRAY_SIZE (dwc3_regs );
907
1015
dwc -> regset -> base = dwc -> regs - DWC3_GLOBALS_REGS_START ;
1016
+ dwc -> regset -> dev = dwc -> dev ;
908
1017
909
1018
root = debugfs_create_dir (dev_name (dwc -> dev ), usb_debug_root );
910
1019
dwc -> debug_root = root ;
0 commit comments