diff options
author | John Youn <John.Youn@synopsys.com> | 2017-01-23 17:58:09 -0500 |
---|---|---|
committer | Felipe Balbi <felipe.balbi@linux.intel.com> | 2017-01-24 09:19:07 -0500 |
commit | 4bd1ac641c7c76ab7f74810c28c74d2b993248bc (patch) | |
tree | c3e4cbc6a1f0c7b81b4fce259634405b4f03e89e /drivers/usb/dwc2/debugfs.c | |
parent | 06e75df1b98eda998ec693e7eaa79f61cdf2d4b3 (diff) |
usb: dwc2: Add debugfs file to show params
Show the core params and hardware params.
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Diffstat (limited to 'drivers/usb/dwc2/debugfs.c')
-rw-r--r-- | drivers/usb/dwc2/debugfs.c | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/drivers/usb/dwc2/debugfs.c b/drivers/usb/dwc2/debugfs.c index cad621f02972..57747b0df595 100644 --- a/drivers/usb/dwc2/debugfs.c +++ b/drivers/usb/dwc2/debugfs.c | |||
@@ -725,6 +725,120 @@ static const struct debugfs_reg32 dwc2_regs[] = { | |||
725 | dump_register(HCDMAB(15)), | 725 | dump_register(HCDMAB(15)), |
726 | }; | 726 | }; |
727 | 727 | ||
728 | #define print_param(_seq, _ptr, _param) \ | ||
729 | seq_printf((_seq), "%-30s: %d\n", #_param, (_ptr)->_param) | ||
730 | |||
731 | #define print_param_hex(_seq, _ptr, _param) \ | ||
732 | seq_printf((_seq), "%-30s: 0x%x\n", #_param, (_ptr)->_param) | ||
733 | |||
734 | static int params_show(struct seq_file *seq, void *v) | ||
735 | { | ||
736 | struct dwc2_hsotg *hsotg = seq->private; | ||
737 | struct dwc2_core_params *p = &hsotg->params; | ||
738 | int i; | ||
739 | |||
740 | print_param(seq, p, otg_cap); | ||
741 | print_param(seq, p, dma_desc_enable); | ||
742 | print_param(seq, p, dma_desc_fs_enable); | ||
743 | print_param(seq, p, speed); | ||
744 | print_param(seq, p, enable_dynamic_fifo); | ||
745 | print_param(seq, p, en_multiple_tx_fifo); | ||
746 | print_param(seq, p, host_rx_fifo_size); | ||
747 | print_param(seq, p, host_nperio_tx_fifo_size); | ||
748 | print_param(seq, p, host_perio_tx_fifo_size); | ||
749 | print_param(seq, p, max_transfer_size); | ||
750 | print_param(seq, p, max_packet_count); | ||
751 | print_param(seq, p, host_channels); | ||
752 | print_param(seq, p, phy_type); | ||
753 | print_param(seq, p, phy_utmi_width); | ||
754 | print_param(seq, p, phy_ulpi_ddr); | ||
755 | print_param(seq, p, phy_ulpi_ext_vbus); | ||
756 | print_param(seq, p, i2c_enable); | ||
757 | print_param(seq, p, ulpi_fs_ls); | ||
758 | print_param(seq, p, host_support_fs_ls_low_power); | ||
759 | print_param(seq, p, host_ls_low_power_phy_clk); | ||
760 | print_param(seq, p, ts_dline); | ||
761 | print_param(seq, p, reload_ctl); | ||
762 | print_param_hex(seq, p, ahbcfg); | ||
763 | print_param(seq, p, uframe_sched); | ||
764 | print_param(seq, p, external_id_pin_ctl); | ||
765 | print_param(seq, p, hibernation); | ||
766 | print_param(seq, p, host_dma); | ||
767 | print_param(seq, p, g_dma); | ||
768 | print_param(seq, p, g_dma_desc); | ||
769 | print_param(seq, p, g_rx_fifo_size); | ||
770 | print_param(seq, p, g_np_tx_fifo_size); | ||
771 | |||
772 | for (i = 0; i < MAX_EPS_CHANNELS; i++) { | ||
773 | char str[32]; | ||
774 | |||
775 | snprintf(str, 32, "g_tx_fifo_size[%d]", i); | ||
776 | seq_printf(seq, "%-30s: %d\n", str, p->g_tx_fifo_size[i]); | ||
777 | } | ||
778 | |||
779 | return 0; | ||
780 | } | ||
781 | |||
782 | static int params_open(struct inode *inode, struct file *file) | ||
783 | { | ||
784 | return single_open(file, params_show, inode->i_private); | ||
785 | } | ||
786 | |||
787 | static const struct file_operations params_fops = { | ||
788 | .owner = THIS_MODULE, | ||
789 | .open = params_open, | ||
790 | .read = seq_read, | ||
791 | .llseek = seq_lseek, | ||
792 | .release = single_release, | ||
793 | }; | ||
794 | |||
795 | static int hw_params_show(struct seq_file *seq, void *v) | ||
796 | { | ||
797 | struct dwc2_hsotg *hsotg = seq->private; | ||
798 | struct dwc2_hw_params *hw = &hsotg->hw_params; | ||
799 | |||
800 | print_param(seq, hw, op_mode); | ||
801 | print_param(seq, hw, arch); | ||
802 | print_param(seq, hw, dma_desc_enable); | ||
803 | print_param(seq, hw, enable_dynamic_fifo); | ||
804 | print_param(seq, hw, en_multiple_tx_fifo); | ||
805 | print_param(seq, hw, rx_fifo_size); | ||
806 | print_param(seq, hw, host_nperio_tx_fifo_size); | ||
807 | print_param(seq, hw, dev_nperio_tx_fifo_size); | ||
808 | print_param(seq, hw, host_perio_tx_fifo_size); | ||
809 | print_param(seq, hw, nperio_tx_q_depth); | ||
810 | print_param(seq, hw, host_perio_tx_q_depth); | ||
811 | print_param(seq, hw, dev_token_q_depth); | ||
812 | print_param(seq, hw, max_transfer_size); | ||
813 | print_param(seq, hw, max_packet_count); | ||
814 | print_param(seq, hw, host_channels); | ||
815 | print_param(seq, hw, hs_phy_type); | ||
816 | print_param(seq, hw, fs_phy_type); | ||
817 | print_param(seq, hw, i2c_enable); | ||
818 | print_param(seq, hw, num_dev_ep); | ||
819 | print_param(seq, hw, num_dev_perio_in_ep); | ||
820 | print_param(seq, hw, total_fifo_size); | ||
821 | print_param(seq, hw, power_optimized); | ||
822 | print_param(seq, hw, utmi_phy_data_width); | ||
823 | print_param_hex(seq, hw, snpsid); | ||
824 | print_param_hex(seq, hw, dev_ep_dirs); | ||
825 | |||
826 | return 0; | ||
827 | } | ||
828 | |||
829 | static int hw_params_open(struct inode *inode, struct file *file) | ||
830 | { | ||
831 | return single_open(file, hw_params_show, inode->i_private); | ||
832 | } | ||
833 | |||
834 | static const struct file_operations hw_params_fops = { | ||
835 | .owner = THIS_MODULE, | ||
836 | .open = hw_params_open, | ||
837 | .read = seq_read, | ||
838 | .llseek = seq_lseek, | ||
839 | .release = single_release, | ||
840 | }; | ||
841 | |||
728 | int dwc2_debugfs_init(struct dwc2_hsotg *hsotg) | 842 | int dwc2_debugfs_init(struct dwc2_hsotg *hsotg) |
729 | { | 843 | { |
730 | int ret; | 844 | int ret; |
@@ -736,6 +850,19 @@ int dwc2_debugfs_init(struct dwc2_hsotg *hsotg) | |||
736 | goto err0; | 850 | goto err0; |
737 | } | 851 | } |
738 | 852 | ||
853 | file = debugfs_create_file("params", 0444, | ||
854 | hsotg->debug_root, | ||
855 | hsotg, ¶ms_fops); | ||
856 | if (IS_ERR(file)) | ||
857 | dev_err(hsotg->dev, "%s: failed to create params\n", __func__); | ||
858 | |||
859 | file = debugfs_create_file("hw_params", 0444, | ||
860 | hsotg->debug_root, | ||
861 | hsotg, &hw_params_fops); | ||
862 | if (IS_ERR(file)) | ||
863 | dev_err(hsotg->dev, "%s: failed to create hw_params\n", | ||
864 | __func__); | ||
865 | |||
739 | /* Add gadget debugfs nodes */ | 866 | /* Add gadget debugfs nodes */ |
740 | dwc2_hsotg_create_debug(hsotg); | 867 | dwc2_hsotg_create_debug(hsotg); |
741 | 868 | ||