return 0;
 }
-
-static int state_open(struct inode *inode, struct file *file)
-{
-       return single_open(file, state_show, inode->i_private);
-}
-
-static const struct file_operations state_fops = {
-       .owner          = THIS_MODULE,
-       .open           = state_open,
-       .read           = seq_read,
-       .llseek         = seq_lseek,
-       .release        = single_release,
-};
+DEFINE_SHOW_ATTRIBUTE(state);
 
 /**
  * fifo_show - debugfs: show the fifo information
 
        return 0;
 }
-
-static int fifo_open(struct inode *inode, struct file *file)
-{
-       return single_open(file, fifo_show, inode->i_private);
-}
-
-static const struct file_operations fifo_fops = {
-       .owner          = THIS_MODULE,
-       .open           = fifo_open,
-       .read           = seq_read,
-       .llseek         = seq_lseek,
-       .release        = single_release,
-};
+DEFINE_SHOW_ATTRIBUTE(fifo);
 
 static const char *decode_direction(int is_in)
 {
 
        return 0;
 }
-
-static int ep_open(struct inode *inode, struct file *file)
-{
-       return single_open(file, ep_show, inode->i_private);
-}
-
-static const struct file_operations ep_fops = {
-       .owner          = THIS_MODULE,
-       .open           = ep_open,
-       .read           = seq_read,
-       .llseek         = seq_lseek,
-       .release        = single_release,
-};
+DEFINE_SHOW_ATTRIBUTE(ep);
 
 /**
  * dwc2_hsotg_create_debug - create debugfs directory and files
 
        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,
-};
+DEFINE_SHOW_ATTRIBUTE(params);
 
 static int hw_params_show(struct seq_file *seq, void *v)
 {
 
        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,
-};
+DEFINE_SHOW_ATTRIBUTE(hw_params);
 
 static int dr_mode_show(struct seq_file *seq, void *v)
 {
        seq_printf(seq, "%s\n", dr_mode);
        return 0;
 }
-
-static int dr_mode_open(struct inode *inode, struct file *file)
-{
-       return single_open(file, dr_mode_show, inode->i_private);
-}
-
-static const struct file_operations dr_mode_fops = {
-       .owner          = THIS_MODULE,
-       .open           = dr_mode_open,
-       .read           = seq_read,
-       .llseek         = seq_lseek,
-       .release        = single_release,
-};
+DEFINE_SHOW_ATTRIBUTE(dr_mode);
 
 int dwc2_debugfs_init(struct dwc2_hsotg *hsotg)
 {