@@ -29,66 +29,29 @@ struct chip_data {
29
29
};
30
30
31
31
#ifdef CONFIG_DEBUG_FS
32
- #define SPI_REGS_BUFSIZE 1024
33
- static ssize_t dw_spi_show_regs (struct file * file , char __user * user_buf ,
34
- size_t count , loff_t * ppos )
35
- {
36
- struct dw_spi * dws = file -> private_data ;
37
- char * buf ;
38
- u32 len = 0 ;
39
- ssize_t ret ;
40
-
41
- buf = kzalloc (SPI_REGS_BUFSIZE , GFP_KERNEL );
42
- if (!buf )
43
- return 0 ;
44
-
45
- len += scnprintf (buf + len , SPI_REGS_BUFSIZE - len ,
46
- "%s registers:\n" , dev_name (& dws -> master -> dev ));
47
- len += scnprintf (buf + len , SPI_REGS_BUFSIZE - len ,
48
- "=================================\n" );
49
- len += scnprintf (buf + len , SPI_REGS_BUFSIZE - len ,
50
- "CTRLR0: \t0x%08x\n" , dw_readl (dws , DW_SPI_CTRLR0 ));
51
- len += scnprintf (buf + len , SPI_REGS_BUFSIZE - len ,
52
- "CTRLR1: \t0x%08x\n" , dw_readl (dws , DW_SPI_CTRLR1 ));
53
- len += scnprintf (buf + len , SPI_REGS_BUFSIZE - len ,
54
- "SSIENR: \t0x%08x\n" , dw_readl (dws , DW_SPI_SSIENR ));
55
- len += scnprintf (buf + len , SPI_REGS_BUFSIZE - len ,
56
- "SER: \t\t0x%08x\n" , dw_readl (dws , DW_SPI_SER ));
57
- len += scnprintf (buf + len , SPI_REGS_BUFSIZE - len ,
58
- "BAUDR: \t\t0x%08x\n" , dw_readl (dws , DW_SPI_BAUDR ));
59
- len += scnprintf (buf + len , SPI_REGS_BUFSIZE - len ,
60
- "TXFTLR: \t0x%08x\n" , dw_readl (dws , DW_SPI_TXFTLR ));
61
- len += scnprintf (buf + len , SPI_REGS_BUFSIZE - len ,
62
- "RXFTLR: \t0x%08x\n" , dw_readl (dws , DW_SPI_RXFTLR ));
63
- len += scnprintf (buf + len , SPI_REGS_BUFSIZE - len ,
64
- "TXFLR: \t\t0x%08x\n" , dw_readl (dws , DW_SPI_TXFLR ));
65
- len += scnprintf (buf + len , SPI_REGS_BUFSIZE - len ,
66
- "RXFLR: \t\t0x%08x\n" , dw_readl (dws , DW_SPI_RXFLR ));
67
- len += scnprintf (buf + len , SPI_REGS_BUFSIZE - len ,
68
- "SR: \t\t0x%08x\n" , dw_readl (dws , DW_SPI_SR ));
69
- len += scnprintf (buf + len , SPI_REGS_BUFSIZE - len ,
70
- "IMR: \t\t0x%08x\n" , dw_readl (dws , DW_SPI_IMR ));
71
- len += scnprintf (buf + len , SPI_REGS_BUFSIZE - len ,
72
- "ISR: \t\t0x%08x\n" , dw_readl (dws , DW_SPI_ISR ));
73
- len += scnprintf (buf + len , SPI_REGS_BUFSIZE - len ,
74
- "DMACR: \t\t0x%08x\n" , dw_readl (dws , DW_SPI_DMACR ));
75
- len += scnprintf (buf + len , SPI_REGS_BUFSIZE - len ,
76
- "DMATDLR: \t0x%08x\n" , dw_readl (dws , DW_SPI_DMATDLR ));
77
- len += scnprintf (buf + len , SPI_REGS_BUFSIZE - len ,
78
- "DMARDLR: \t0x%08x\n" , dw_readl (dws , DW_SPI_DMARDLR ));
79
- len += scnprintf (buf + len , SPI_REGS_BUFSIZE - len ,
80
- "=================================\n" );
81
-
82
- ret = simple_read_from_buffer (user_buf , count , ppos , buf , len );
83
- kfree (buf );
84
- return ret ;
32
+
33
+ #define DW_SPI_DBGFS_REG (_name , _off ) \
34
+ { \
35
+ .name = _name, \
36
+ .offset = _off, \
85
37
}
86
38
87
- static const struct file_operations dw_spi_regs_ops = {
88
- .owner = THIS_MODULE ,
89
- .open = simple_open ,
90
- .read = dw_spi_show_regs ,
91
- .llseek = default_llseek ,
39
+ static const struct debugfs_reg32 dw_spi_dbgfs_regs [] = {
40
+ DW_SPI_DBGFS_REG ("CTRLR0" , DW_SPI_CTRLR0 ),
41
+ DW_SPI_DBGFS_REG ("CTRLR1" , DW_SPI_CTRLR1 ),
42
+ DW_SPI_DBGFS_REG ("SSIENR" , DW_SPI_SSIENR ),
43
+ DW_SPI_DBGFS_REG ("SER" , DW_SPI_SER ),
44
+ DW_SPI_DBGFS_REG ("BAUDR" , DW_SPI_BAUDR ),
45
+ DW_SPI_DBGFS_REG ("TXFTLR" , DW_SPI_TXFTLR ),
46
+ DW_SPI_DBGFS_REG ("RXFTLR" , DW_SPI_RXFTLR ),
47
+ DW_SPI_DBGFS_REG ("TXFLR" , DW_SPI_TXFLR ),
48
+ DW_SPI_DBGFS_REG ("RXFLR" , DW_SPI_RXFLR ),
49
+ DW_SPI_DBGFS_REG ("SR" , DW_SPI_SR ),
50
+ DW_SPI_DBGFS_REG ("IMR" , DW_SPI_IMR ),
51
+ DW_SPI_DBGFS_REG ("ISR" , DW_SPI_ISR ),
52
+ DW_SPI_DBGFS_REG ("DMACR" , DW_SPI_DMACR ),
53
+ DW_SPI_DBGFS_REG ("DMATDLR" , DW_SPI_DMATDLR ),
54
+ DW_SPI_DBGFS_REG ("DMARDLR" , DW_SPI_DMARDLR ),
92
55
};
93
56
94
57
static int dw_spi_debugfs_init (struct dw_spi * dws )
@@ -100,8 +63,11 @@ static int dw_spi_debugfs_init(struct dw_spi *dws)
100
63
if (!dws -> debugfs )
101
64
return - ENOMEM ;
102
65
103
- debugfs_create_file ("registers" , S_IFREG | S_IRUGO ,
104
- dws -> debugfs , (void * )dws , & dw_spi_regs_ops );
66
+ dws -> regset .regs = dw_spi_dbgfs_regs ;
67
+ dws -> regset .nregs = ARRAY_SIZE (dw_spi_dbgfs_regs );
68
+ dws -> regset .base = dws -> regs ;
69
+ debugfs_create_regset32 ("registers" , 0400 , dws -> debugfs , & dws -> regset );
70
+
105
71
return 0 ;
106
72
}
107
73
0 commit comments