Loading drivers/usb/dwc2/debugfs.c +127 −0 Original line number Diff line number Diff line Loading @@ -725,6 +725,120 @@ static const struct debugfs_reg32 dwc2_regs[] = { dump_register(HCDMAB(15)), }; #define print_param(_seq, _ptr, _param) \ seq_printf((_seq), "%-30s: %d\n", #_param, (_ptr)->_param) #define print_param_hex(_seq, _ptr, _param) \ seq_printf((_seq), "%-30s: 0x%x\n", #_param, (_ptr)->_param) static int params_show(struct seq_file *seq, void *v) { struct dwc2_hsotg *hsotg = seq->private; struct dwc2_core_params *p = &hsotg->params; int i; print_param(seq, p, otg_cap); print_param(seq, p, dma_desc_enable); print_param(seq, p, dma_desc_fs_enable); print_param(seq, p, speed); print_param(seq, p, enable_dynamic_fifo); print_param(seq, p, en_multiple_tx_fifo); print_param(seq, p, host_rx_fifo_size); print_param(seq, p, host_nperio_tx_fifo_size); print_param(seq, p, host_perio_tx_fifo_size); print_param(seq, p, max_transfer_size); print_param(seq, p, max_packet_count); print_param(seq, p, host_channels); print_param(seq, p, phy_type); print_param(seq, p, phy_utmi_width); print_param(seq, p, phy_ulpi_ddr); print_param(seq, p, phy_ulpi_ext_vbus); print_param(seq, p, i2c_enable); print_param(seq, p, ulpi_fs_ls); print_param(seq, p, host_support_fs_ls_low_power); print_param(seq, p, host_ls_low_power_phy_clk); print_param(seq, p, ts_dline); print_param(seq, p, reload_ctl); print_param_hex(seq, p, ahbcfg); print_param(seq, p, uframe_sched); print_param(seq, p, external_id_pin_ctl); print_param(seq, p, hibernation); print_param(seq, p, host_dma); print_param(seq, p, g_dma); print_param(seq, p, g_dma_desc); print_param(seq, p, g_rx_fifo_size); print_param(seq, p, g_np_tx_fifo_size); for (i = 0; i < MAX_EPS_CHANNELS; i++) { char str[32]; snprintf(str, 32, "g_tx_fifo_size[%d]", i); seq_printf(seq, "%-30s: %d\n", str, p->g_tx_fifo_size[i]); } return 0; } static int params_open(struct inode *inode, struct file *file) { return single_open(file, params_show, inode->i_private); } static const struct file_operations params_fops = { .owner = THIS_MODULE, .open = params_open, .read = seq_read, .llseek = seq_lseek, .release = single_release, }; static int hw_params_show(struct seq_file *seq, void *v) { struct dwc2_hsotg *hsotg = seq->private; struct dwc2_hw_params *hw = &hsotg->hw_params; print_param(seq, hw, op_mode); print_param(seq, hw, arch); print_param(seq, hw, dma_desc_enable); print_param(seq, hw, enable_dynamic_fifo); print_param(seq, hw, en_multiple_tx_fifo); print_param(seq, hw, rx_fifo_size); print_param(seq, hw, host_nperio_tx_fifo_size); print_param(seq, hw, dev_nperio_tx_fifo_size); print_param(seq, hw, host_perio_tx_fifo_size); print_param(seq, hw, nperio_tx_q_depth); print_param(seq, hw, host_perio_tx_q_depth); print_param(seq, hw, dev_token_q_depth); print_param(seq, hw, max_transfer_size); print_param(seq, hw, max_packet_count); print_param(seq, hw, host_channels); print_param(seq, hw, hs_phy_type); print_param(seq, hw, fs_phy_type); print_param(seq, hw, i2c_enable); print_param(seq, hw, num_dev_ep); print_param(seq, hw, num_dev_perio_in_ep); print_param(seq, hw, total_fifo_size); print_param(seq, hw, power_optimized); print_param(seq, hw, utmi_phy_data_width); print_param_hex(seq, hw, snpsid); print_param_hex(seq, hw, dev_ep_dirs); return 0; } static int hw_params_open(struct inode *inode, struct file *file) { return single_open(file, hw_params_show, inode->i_private); } static const struct file_operations hw_params_fops = { .owner = THIS_MODULE, .open = hw_params_open, .read = seq_read, .llseek = seq_lseek, .release = single_release, }; int dwc2_debugfs_init(struct dwc2_hsotg *hsotg) { int ret; Loading @@ -736,6 +850,19 @@ int dwc2_debugfs_init(struct dwc2_hsotg *hsotg) goto err0; } file = debugfs_create_file("params", 0444, hsotg->debug_root, hsotg, ¶ms_fops); if (IS_ERR(file)) dev_err(hsotg->dev, "%s: failed to create params\n", __func__); file = debugfs_create_file("hw_params", 0444, hsotg->debug_root, hsotg, &hw_params_fops); if (IS_ERR(file)) dev_err(hsotg->dev, "%s: failed to create hw_params\n", __func__); /* Add gadget debugfs nodes */ dwc2_hsotg_create_debug(hsotg); Loading Loading
drivers/usb/dwc2/debugfs.c +127 −0 Original line number Diff line number Diff line Loading @@ -725,6 +725,120 @@ static const struct debugfs_reg32 dwc2_regs[] = { dump_register(HCDMAB(15)), }; #define print_param(_seq, _ptr, _param) \ seq_printf((_seq), "%-30s: %d\n", #_param, (_ptr)->_param) #define print_param_hex(_seq, _ptr, _param) \ seq_printf((_seq), "%-30s: 0x%x\n", #_param, (_ptr)->_param) static int params_show(struct seq_file *seq, void *v) { struct dwc2_hsotg *hsotg = seq->private; struct dwc2_core_params *p = &hsotg->params; int i; print_param(seq, p, otg_cap); print_param(seq, p, dma_desc_enable); print_param(seq, p, dma_desc_fs_enable); print_param(seq, p, speed); print_param(seq, p, enable_dynamic_fifo); print_param(seq, p, en_multiple_tx_fifo); print_param(seq, p, host_rx_fifo_size); print_param(seq, p, host_nperio_tx_fifo_size); print_param(seq, p, host_perio_tx_fifo_size); print_param(seq, p, max_transfer_size); print_param(seq, p, max_packet_count); print_param(seq, p, host_channels); print_param(seq, p, phy_type); print_param(seq, p, phy_utmi_width); print_param(seq, p, phy_ulpi_ddr); print_param(seq, p, phy_ulpi_ext_vbus); print_param(seq, p, i2c_enable); print_param(seq, p, ulpi_fs_ls); print_param(seq, p, host_support_fs_ls_low_power); print_param(seq, p, host_ls_low_power_phy_clk); print_param(seq, p, ts_dline); print_param(seq, p, reload_ctl); print_param_hex(seq, p, ahbcfg); print_param(seq, p, uframe_sched); print_param(seq, p, external_id_pin_ctl); print_param(seq, p, hibernation); print_param(seq, p, host_dma); print_param(seq, p, g_dma); print_param(seq, p, g_dma_desc); print_param(seq, p, g_rx_fifo_size); print_param(seq, p, g_np_tx_fifo_size); for (i = 0; i < MAX_EPS_CHANNELS; i++) { char str[32]; snprintf(str, 32, "g_tx_fifo_size[%d]", i); seq_printf(seq, "%-30s: %d\n", str, p->g_tx_fifo_size[i]); } return 0; } static int params_open(struct inode *inode, struct file *file) { return single_open(file, params_show, inode->i_private); } static const struct file_operations params_fops = { .owner = THIS_MODULE, .open = params_open, .read = seq_read, .llseek = seq_lseek, .release = single_release, }; static int hw_params_show(struct seq_file *seq, void *v) { struct dwc2_hsotg *hsotg = seq->private; struct dwc2_hw_params *hw = &hsotg->hw_params; print_param(seq, hw, op_mode); print_param(seq, hw, arch); print_param(seq, hw, dma_desc_enable); print_param(seq, hw, enable_dynamic_fifo); print_param(seq, hw, en_multiple_tx_fifo); print_param(seq, hw, rx_fifo_size); print_param(seq, hw, host_nperio_tx_fifo_size); print_param(seq, hw, dev_nperio_tx_fifo_size); print_param(seq, hw, host_perio_tx_fifo_size); print_param(seq, hw, nperio_tx_q_depth); print_param(seq, hw, host_perio_tx_q_depth); print_param(seq, hw, dev_token_q_depth); print_param(seq, hw, max_transfer_size); print_param(seq, hw, max_packet_count); print_param(seq, hw, host_channels); print_param(seq, hw, hs_phy_type); print_param(seq, hw, fs_phy_type); print_param(seq, hw, i2c_enable); print_param(seq, hw, num_dev_ep); print_param(seq, hw, num_dev_perio_in_ep); print_param(seq, hw, total_fifo_size); print_param(seq, hw, power_optimized); print_param(seq, hw, utmi_phy_data_width); print_param_hex(seq, hw, snpsid); print_param_hex(seq, hw, dev_ep_dirs); return 0; } static int hw_params_open(struct inode *inode, struct file *file) { return single_open(file, hw_params_show, inode->i_private); } static const struct file_operations hw_params_fops = { .owner = THIS_MODULE, .open = hw_params_open, .read = seq_read, .llseek = seq_lseek, .release = single_release, }; int dwc2_debugfs_init(struct dwc2_hsotg *hsotg) { int ret; Loading @@ -736,6 +850,19 @@ int dwc2_debugfs_init(struct dwc2_hsotg *hsotg) goto err0; } file = debugfs_create_file("params", 0444, hsotg->debug_root, hsotg, ¶ms_fops); if (IS_ERR(file)) dev_err(hsotg->dev, "%s: failed to create params\n", __func__); file = debugfs_create_file("hw_params", 0444, hsotg->debug_root, hsotg, &hw_params_fops); if (IS_ERR(file)) dev_err(hsotg->dev, "%s: failed to create hw_params\n", __func__); /* Add gadget debugfs nodes */ dwc2_hsotg_create_debug(hsotg); Loading