@@ -332,6 +332,11 @@ static int dwc3_lsp_show(struct seq_file *s, void *unused)
332
332
unsigned int current_mode ;
333
333
unsigned long flags ;
334
334
u32 reg ;
335
+ int ret ;
336
+
337
+ ret = pm_runtime_resume_and_get (dwc -> dev );
338
+ if (ret < 0 )
339
+ return ret ;
335
340
336
341
spin_lock_irqsave (& dwc -> lock , flags );
337
342
reg = dwc3_readl (dwc -> regs , DWC3_GSTS );
@@ -350,6 +355,8 @@ static int dwc3_lsp_show(struct seq_file *s, void *unused)
350
355
}
351
356
spin_unlock_irqrestore (& dwc -> lock , flags );
352
357
358
+ pm_runtime_put_sync (dwc -> dev );
359
+
353
360
return 0 ;
354
361
}
355
362
@@ -395,6 +402,11 @@ static int dwc3_mode_show(struct seq_file *s, void *unused)
395
402
struct dwc3 * dwc = s -> private ;
396
403
unsigned long flags ;
397
404
u32 reg ;
405
+ int ret ;
406
+
407
+ ret = pm_runtime_resume_and_get (dwc -> dev );
408
+ if (ret < 0 )
409
+ return ret ;
398
410
399
411
spin_lock_irqsave (& dwc -> lock , flags );
400
412
reg = dwc3_readl (dwc -> regs , DWC3_GCTL );
@@ -414,6 +426,8 @@ static int dwc3_mode_show(struct seq_file *s, void *unused)
414
426
seq_printf (s , "UNKNOWN %08x\n" , DWC3_GCTL_PRTCAP (reg ));
415
427
}
416
428
429
+ pm_runtime_put_sync (dwc -> dev );
430
+
417
431
return 0 ;
418
432
}
419
433
@@ -463,6 +477,11 @@ static int dwc3_testmode_show(struct seq_file *s, void *unused)
463
477
struct dwc3 * dwc = s -> private ;
464
478
unsigned long flags ;
465
479
u32 reg ;
480
+ int ret ;
481
+
482
+ ret = pm_runtime_resume_and_get (dwc -> dev );
483
+ if (ret < 0 )
484
+ return ret ;
466
485
467
486
spin_lock_irqsave (& dwc -> lock , flags );
468
487
reg = dwc3_readl (dwc -> regs , DWC3_DCTL );
@@ -493,6 +512,8 @@ static int dwc3_testmode_show(struct seq_file *s, void *unused)
493
512
seq_printf (s , "UNKNOWN %d\n" , reg );
494
513
}
495
514
515
+ pm_runtime_put_sync (dwc -> dev );
516
+
496
517
return 0 ;
497
518
}
498
519
@@ -509,6 +530,7 @@ static ssize_t dwc3_testmode_write(struct file *file,
509
530
unsigned long flags ;
510
531
u32 testmode = 0 ;
511
532
char buf [32 ];
533
+ int ret ;
512
534
513
535
if (copy_from_user (& buf , ubuf , min_t (size_t , sizeof (buf ) - 1 , count )))
514
536
return - EFAULT ;
@@ -526,10 +548,16 @@ static ssize_t dwc3_testmode_write(struct file *file,
526
548
else
527
549
testmode = 0 ;
528
550
551
+ ret = pm_runtime_resume_and_get (dwc -> dev );
552
+ if (ret < 0 )
553
+ return ret ;
554
+
529
555
spin_lock_irqsave (& dwc -> lock , flags );
530
556
dwc3_gadget_set_test_mode (dwc , testmode );
531
557
spin_unlock_irqrestore (& dwc -> lock , flags );
532
558
559
+ pm_runtime_put_sync (dwc -> dev );
560
+
533
561
return count ;
534
562
}
535
563
@@ -548,12 +576,18 @@ static int dwc3_link_state_show(struct seq_file *s, void *unused)
548
576
enum dwc3_link_state state ;
549
577
u32 reg ;
550
578
u8 speed ;
579
+ int ret ;
580
+
581
+ ret = pm_runtime_resume_and_get (dwc -> dev );
582
+ if (ret < 0 )
583
+ return ret ;
551
584
552
585
spin_lock_irqsave (& dwc -> lock , flags );
553
586
reg = dwc3_readl (dwc -> regs , DWC3_GSTS );
554
587
if (DWC3_GSTS_CURMOD (reg ) != DWC3_GSTS_CURMOD_DEVICE ) {
555
588
seq_puts (s , "Not available\n" );
556
589
spin_unlock_irqrestore (& dwc -> lock , flags );
590
+ pm_runtime_put_sync (dwc -> dev );
557
591
return 0 ;
558
592
}
559
593
@@ -566,6 +600,8 @@ static int dwc3_link_state_show(struct seq_file *s, void *unused)
566
600
dwc3_gadget_hs_link_string (state ));
567
601
spin_unlock_irqrestore (& dwc -> lock , flags );
568
602
603
+ pm_runtime_put_sync (dwc -> dev );
604
+
569
605
return 0 ;
570
606
}
571
607
@@ -584,6 +620,7 @@ static ssize_t dwc3_link_state_write(struct file *file,
584
620
char buf [32 ];
585
621
u32 reg ;
586
622
u8 speed ;
623
+ int ret ;
587
624
588
625
if (copy_from_user (& buf , ubuf , min_t (size_t , sizeof (buf ) - 1 , count )))
589
626
return - EFAULT ;
@@ -603,10 +640,15 @@ static ssize_t dwc3_link_state_write(struct file *file,
603
640
else
604
641
return - EINVAL ;
605
642
643
+ ret = pm_runtime_resume_and_get (dwc -> dev );
644
+ if (ret < 0 )
645
+ return ret ;
646
+
606
647
spin_lock_irqsave (& dwc -> lock , flags );
607
648
reg = dwc3_readl (dwc -> regs , DWC3_GSTS );
608
649
if (DWC3_GSTS_CURMOD (reg ) != DWC3_GSTS_CURMOD_DEVICE ) {
609
650
spin_unlock_irqrestore (& dwc -> lock , flags );
651
+ pm_runtime_put_sync (dwc -> dev );
610
652
return - EINVAL ;
611
653
}
612
654
@@ -616,12 +658,15 @@ static ssize_t dwc3_link_state_write(struct file *file,
616
658
if (speed < DWC3_DSTS_SUPERSPEED &&
617
659
state != DWC3_LINK_STATE_RECOV ) {
618
660
spin_unlock_irqrestore (& dwc -> lock , flags );
661
+ pm_runtime_put_sync (dwc -> dev );
619
662
return - EINVAL ;
620
663
}
621
664
622
665
dwc3_gadget_set_link_state (dwc , state );
623
666
spin_unlock_irqrestore (& dwc -> lock , flags );
624
667
668
+ pm_runtime_put_sync (dwc -> dev );
669
+
625
670
return count ;
626
671
}
627
672
@@ -645,6 +690,11 @@ static int dwc3_tx_fifo_size_show(struct seq_file *s, void *unused)
645
690
unsigned long flags ;
646
691
u32 mdwidth ;
647
692
u32 val ;
693
+ int ret ;
694
+
695
+ ret = pm_runtime_resume_and_get (dwc -> dev );
696
+ if (ret < 0 )
697
+ return ret ;
648
698
649
699
spin_lock_irqsave (& dwc -> lock , flags );
650
700
val = dwc3_core_fifo_space (dep , DWC3_TXFIFO );
@@ -657,6 +707,8 @@ static int dwc3_tx_fifo_size_show(struct seq_file *s, void *unused)
657
707
seq_printf (s , "%u\n" , val );
658
708
spin_unlock_irqrestore (& dwc -> lock , flags );
659
709
710
+ pm_runtime_put_sync (dwc -> dev );
711
+
660
712
return 0 ;
661
713
}
662
714
@@ -667,6 +719,11 @@ static int dwc3_rx_fifo_size_show(struct seq_file *s, void *unused)
667
719
unsigned long flags ;
668
720
u32 mdwidth ;
669
721
u32 val ;
722
+ int ret ;
723
+
724
+ ret = pm_runtime_resume_and_get (dwc -> dev );
725
+ if (ret < 0 )
726
+ return ret ;
670
727
671
728
spin_lock_irqsave (& dwc -> lock , flags );
672
729
val = dwc3_core_fifo_space (dep , DWC3_RXFIFO );
@@ -679,6 +736,8 @@ static int dwc3_rx_fifo_size_show(struct seq_file *s, void *unused)
679
736
seq_printf (s , "%u\n" , val );
680
737
spin_unlock_irqrestore (& dwc -> lock , flags );
681
738
739
+ pm_runtime_put_sync (dwc -> dev );
740
+
682
741
return 0 ;
683
742
}
684
743
@@ -688,12 +747,19 @@ static int dwc3_tx_request_queue_show(struct seq_file *s, void *unused)
688
747
struct dwc3 * dwc = dep -> dwc ;
689
748
unsigned long flags ;
690
749
u32 val ;
750
+ int ret ;
751
+
752
+ ret = pm_runtime_resume_and_get (dwc -> dev );
753
+ if (ret < 0 )
754
+ return ret ;
691
755
692
756
spin_lock_irqsave (& dwc -> lock , flags );
693
757
val = dwc3_core_fifo_space (dep , DWC3_TXREQQ );
694
758
seq_printf (s , "%u\n" , val );
695
759
spin_unlock_irqrestore (& dwc -> lock , flags );
696
760
761
+ pm_runtime_put_sync (dwc -> dev );
762
+
697
763
return 0 ;
698
764
}
699
765
@@ -703,12 +769,19 @@ static int dwc3_rx_request_queue_show(struct seq_file *s, void *unused)
703
769
struct dwc3 * dwc = dep -> dwc ;
704
770
unsigned long flags ;
705
771
u32 val ;
772
+ int ret ;
773
+
774
+ ret = pm_runtime_resume_and_get (dwc -> dev );
775
+ if (ret < 0 )
776
+ return ret ;
706
777
707
778
spin_lock_irqsave (& dwc -> lock , flags );
708
779
val = dwc3_core_fifo_space (dep , DWC3_RXREQQ );
709
780
seq_printf (s , "%u\n" , val );
710
781
spin_unlock_irqrestore (& dwc -> lock , flags );
711
782
783
+ pm_runtime_put_sync (dwc -> dev );
784
+
712
785
return 0 ;
713
786
}
714
787
@@ -718,12 +791,19 @@ static int dwc3_rx_info_queue_show(struct seq_file *s, void *unused)
718
791
struct dwc3 * dwc = dep -> dwc ;
719
792
unsigned long flags ;
720
793
u32 val ;
794
+ int ret ;
795
+
796
+ ret = pm_runtime_resume_and_get (dwc -> dev );
797
+ if (ret < 0 )
798
+ return ret ;
721
799
722
800
spin_lock_irqsave (& dwc -> lock , flags );
723
801
val = dwc3_core_fifo_space (dep , DWC3_RXINFOQ );
724
802
seq_printf (s , "%u\n" , val );
725
803
spin_unlock_irqrestore (& dwc -> lock , flags );
726
804
805
+ pm_runtime_put_sync (dwc -> dev );
806
+
727
807
return 0 ;
728
808
}
729
809
@@ -733,12 +813,19 @@ static int dwc3_descriptor_fetch_queue_show(struct seq_file *s, void *unused)
733
813
struct dwc3 * dwc = dep -> dwc ;
734
814
unsigned long flags ;
735
815
u32 val ;
816
+ int ret ;
817
+
818
+ ret = pm_runtime_resume_and_get (dwc -> dev );
819
+ if (ret < 0 )
820
+ return ret ;
736
821
737
822
spin_lock_irqsave (& dwc -> lock , flags );
738
823
val = dwc3_core_fifo_space (dep , DWC3_DESCFETCHQ );
739
824
seq_printf (s , "%u\n" , val );
740
825
spin_unlock_irqrestore (& dwc -> lock , flags );
741
826
827
+ pm_runtime_put_sync (dwc -> dev );
828
+
742
829
return 0 ;
743
830
}
744
831
@@ -748,12 +835,19 @@ static int dwc3_event_queue_show(struct seq_file *s, void *unused)
748
835
struct dwc3 * dwc = dep -> dwc ;
749
836
unsigned long flags ;
750
837
u32 val ;
838
+ int ret ;
839
+
840
+ ret = pm_runtime_resume_and_get (dwc -> dev );
841
+ if (ret < 0 )
842
+ return ret ;
751
843
752
844
spin_lock_irqsave (& dwc -> lock , flags );
753
845
val = dwc3_core_fifo_space (dep , DWC3_EVENTQ );
754
846
seq_printf (s , "%u\n" , val );
755
847
spin_unlock_irqrestore (& dwc -> lock , flags );
756
848
849
+ pm_runtime_put_sync (dwc -> dev );
850
+
757
851
return 0 ;
758
852
}
759
853
@@ -798,6 +892,11 @@ static int dwc3_trb_ring_show(struct seq_file *s, void *unused)
798
892
struct dwc3 * dwc = dep -> dwc ;
799
893
unsigned long flags ;
800
894
int i ;
895
+ int ret ;
896
+
897
+ ret = pm_runtime_resume_and_get (dwc -> dev );
898
+ if (ret < 0 )
899
+ return ret ;
801
900
802
901
spin_lock_irqsave (& dwc -> lock , flags );
803
902
if (dep -> number <= 1 ) {
@@ -827,6 +926,8 @@ static int dwc3_trb_ring_show(struct seq_file *s, void *unused)
827
926
out :
828
927
spin_unlock_irqrestore (& dwc -> lock , flags );
829
928
929
+ pm_runtime_put_sync (dwc -> dev );
930
+
830
931
return 0 ;
831
932
}
832
933
@@ -839,6 +940,11 @@ static int dwc3_ep_info_register_show(struct seq_file *s, void *unused)
839
940
u32 lower_32_bits ;
840
941
u32 upper_32_bits ;
841
942
u32 reg ;
943
+ int ret ;
944
+
945
+ ret = pm_runtime_resume_and_get (dwc -> dev );
946
+ if (ret < 0 )
947
+ return ret ;
842
948
843
949
spin_lock_irqsave (& dwc -> lock , flags );
844
950
reg = DWC3_GDBGLSPMUX_EPSELECT (dep -> number );
@@ -851,6 +957,8 @@ static int dwc3_ep_info_register_show(struct seq_file *s, void *unused)
851
957
seq_printf (s , "0x%016llx\n" , ep_info );
852
958
spin_unlock_irqrestore (& dwc -> lock , flags );
853
959
960
+ pm_runtime_put_sync (dwc -> dev );
961
+
854
962
return 0 ;
855
963
}
856
964
@@ -910,6 +1018,7 @@ void dwc3_debugfs_init(struct dwc3 *dwc)
910
1018
dwc -> regset -> regs = dwc3_regs ;
911
1019
dwc -> regset -> nregs = ARRAY_SIZE (dwc3_regs );
912
1020
dwc -> regset -> base = dwc -> regs - DWC3_GLOBALS_REGS_START ;
1021
+ dwc -> regset -> dev = dwc -> dev ;
913
1022
914
1023
root = debugfs_create_dir (dev_name (dwc -> dev ), usb_debug_root );
915
1024
dwc -> debug_root = root ;
0 commit comments