hc
2024-08-09 d3d58fa5ee2428cd2dde78fd8eeeeabe916b3835
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_INCLUDE_MFD_IMX25_TSADC_H_
#define _LINUX_INCLUDE_MFD_IMX25_TSADC_H_
 
struct regmap;
struct clk;
 
struct mx25_tsadc {
   struct regmap *regs;
   struct irq_domain *domain;
   struct clk *clk;
};
 
#define MX25_TSC_TGCR            0x00
#define MX25_TSC_TGSR            0x04
#define MX25_TSC_TICR            0x08
 
/* The same register layout for TC and GC queue */
#define MX25_ADCQ_FIFO            0x00
#define MX25_ADCQ_CR            0x04
#define MX25_ADCQ_SR            0x08
#define MX25_ADCQ_MR            0x0c
#define MX25_ADCQ_ITEM_7_0        0x20
#define MX25_ADCQ_ITEM_15_8        0x24
#define MX25_ADCQ_CFG(n)        (0x40 + ((n) * 0x4))
 
#define MX25_ADCQ_MR_MASK        0xffffffff
 
/* TGCR */
#define MX25_TGCR_PDBTIME(x)        ((x) << 25)
#define MX25_TGCR_PDBTIME_MASK        GENMASK(31, 25)
#define MX25_TGCR_PDBEN            BIT(24)
#define MX25_TGCR_PDEN            BIT(23)
#define MX25_TGCR_ADCCLKCFG(x)        ((x) << 16)
#define MX25_TGCR_GET_ADCCLK(x)        (((x) >> 16) & 0x1f)
#define MX25_TGCR_INTREFEN        BIT(10)
#define MX25_TGCR_POWERMODE_MASK    GENMASK(9, 8)
#define MX25_TGCR_POWERMODE_SAVE    (1 << 8)
#define MX25_TGCR_POWERMODE_ON        (2 << 8)
#define MX25_TGCR_STLC            BIT(5)
#define MX25_TGCR_SLPC            BIT(4)
#define MX25_TGCR_FUNC_RST        BIT(2)
#define MX25_TGCR_TSC_RST        BIT(1)
#define MX25_TGCR_CLK_EN        BIT(0)
 
/* TGSR */
#define MX25_TGSR_SLP_INT        BIT(2)
#define MX25_TGSR_GCQ_INT        BIT(1)
#define MX25_TGSR_TCQ_INT        BIT(0)
 
/* ADCQ_ITEM_* */
#define _MX25_ADCQ_ITEM(item, x)    ((x) << ((item) * 4))
#define MX25_ADCQ_ITEM(item, x)        ((item) >= 8 ? \
       _MX25_ADCQ_ITEM((item) - 8, (x)) : _MX25_ADCQ_ITEM((item), (x)))
 
/* ADCQ_FIFO (TCQFIFO and GCQFIFO) */
#define MX25_ADCQ_FIFO_DATA(x)        (((x) >> 4) & 0xfff)
#define MX25_ADCQ_FIFO_ID(x)        ((x) & 0xf)
 
/* ADCQ_CR (TCQR and GCQR) */
#define MX25_ADCQ_CR_PDCFG_LEVEL    BIT(19)
#define MX25_ADCQ_CR_PDMSK        BIT(18)
#define MX25_ADCQ_CR_FRST        BIT(17)
#define MX25_ADCQ_CR_QRST        BIT(16)
#define MX25_ADCQ_CR_RWAIT_MASK        GENMASK(15, 12)
#define MX25_ADCQ_CR_RWAIT(x)        ((x) << 12)
#define MX25_ADCQ_CR_WMRK_MASK        GENMASK(11, 8)
#define MX25_ADCQ_CR_WMRK(x)        ((x) << 8)
#define MX25_ADCQ_CR_LITEMID_MASK    (0xf << 4)
#define MX25_ADCQ_CR_LITEMID(x)        ((x) << 4)
#define MX25_ADCQ_CR_RPT        BIT(3)
#define MX25_ADCQ_CR_FQS        BIT(2)
#define MX25_ADCQ_CR_QSM_MASK        GENMASK(1, 0)
#define MX25_ADCQ_CR_QSM_PD        0x1
#define MX25_ADCQ_CR_QSM_FQS        0x2
#define MX25_ADCQ_CR_QSM_FQS_PD        0x3
 
/* ADCQ_SR (TCQSR and GCQSR) */
#define MX25_ADCQ_SR_FDRY        BIT(15)
#define MX25_ADCQ_SR_FULL        BIT(14)
#define MX25_ADCQ_SR_EMPT        BIT(13)
#define MX25_ADCQ_SR_FDN(x)        (((x) >> 8) & 0x1f)
#define MX25_ADCQ_SR_FRR        BIT(6)
#define MX25_ADCQ_SR_FUR        BIT(5)
#define MX25_ADCQ_SR_FOR        BIT(4)
#define MX25_ADCQ_SR_EOQ        BIT(1)
#define MX25_ADCQ_SR_PD            BIT(0)
 
/* ADCQ_MR (TCQMR and GCQMR) */
#define MX25_ADCQ_MR_FDRY_DMA        BIT(31)
#define MX25_ADCQ_MR_FER_DMA        BIT(22)
#define MX25_ADCQ_MR_FUR_DMA        BIT(21)
#define MX25_ADCQ_MR_FOR_DMA        BIT(20)
#define MX25_ADCQ_MR_EOQ_DMA        BIT(17)
#define MX25_ADCQ_MR_PD_DMA        BIT(16)
#define MX25_ADCQ_MR_FDRY_IRQ        BIT(15)
#define MX25_ADCQ_MR_FER_IRQ        BIT(6)
#define MX25_ADCQ_MR_FUR_IRQ        BIT(5)
#define MX25_ADCQ_MR_FOR_IRQ        BIT(4)
#define MX25_ADCQ_MR_EOQ_IRQ        BIT(1)
#define MX25_ADCQ_MR_PD_IRQ        BIT(0)
 
/* ADCQ_CFG (TICR, TCC0-7,GCC0-7) */
#define MX25_ADCQ_CFG_SETTLING_TIME(x)    ((x) << 24)
#define MX25_ADCQ_CFG_IGS        (1 << 20)
#define MX25_ADCQ_CFG_NOS_MASK        GENMASK(19, 16)
#define MX25_ADCQ_CFG_NOS(x)        (((x) - 1) << 16)
#define MX25_ADCQ_CFG_WIPER        (1 << 15)
#define MX25_ADCQ_CFG_YNLR        (1 << 14)
#define MX25_ADCQ_CFG_YPLL_HIGH        (0 << 12)
#define MX25_ADCQ_CFG_YPLL_OFF        (1 << 12)
#define MX25_ADCQ_CFG_YPLL_LOW        (3 << 12)
#define MX25_ADCQ_CFG_XNUR_HIGH        (0 << 10)
#define MX25_ADCQ_CFG_XNUR_OFF        (1 << 10)
#define MX25_ADCQ_CFG_XNUR_LOW        (3 << 10)
#define MX25_ADCQ_CFG_XPUL_HIGH        (0 << 9)
#define MX25_ADCQ_CFG_XPUL_OFF        (1 << 9)
#define MX25_ADCQ_CFG_REFP(sel)        ((sel) << 7)
#define MX25_ADCQ_CFG_REFP_YP        MX25_ADCQ_CFG_REFP(0)
#define MX25_ADCQ_CFG_REFP_XP        MX25_ADCQ_CFG_REFP(1)
#define MX25_ADCQ_CFG_REFP_EXT        MX25_ADCQ_CFG_REFP(2)
#define MX25_ADCQ_CFG_REFP_INT        MX25_ADCQ_CFG_REFP(3)
#define MX25_ADCQ_CFG_REFP_MASK        GENMASK(8, 7)
#define MX25_ADCQ_CFG_IN(sel)        ((sel) << 4)
#define MX25_ADCQ_CFG_IN_XP        MX25_ADCQ_CFG_IN(0)
#define MX25_ADCQ_CFG_IN_YP        MX25_ADCQ_CFG_IN(1)
#define MX25_ADCQ_CFG_IN_XN        MX25_ADCQ_CFG_IN(2)
#define MX25_ADCQ_CFG_IN_YN        MX25_ADCQ_CFG_IN(3)
#define MX25_ADCQ_CFG_IN_WIPER        MX25_ADCQ_CFG_IN(4)
#define MX25_ADCQ_CFG_IN_AUX0        MX25_ADCQ_CFG_IN(5)
#define MX25_ADCQ_CFG_IN_AUX1        MX25_ADCQ_CFG_IN(6)
#define MX25_ADCQ_CFG_IN_AUX2        MX25_ADCQ_CFG_IN(7)
#define MX25_ADCQ_CFG_REFN(sel)        ((sel) << 2)
#define MX25_ADCQ_CFG_REFN_XN        MX25_ADCQ_CFG_REFN(0)
#define MX25_ADCQ_CFG_REFN_YN        MX25_ADCQ_CFG_REFN(1)
#define MX25_ADCQ_CFG_REFN_NGND        MX25_ADCQ_CFG_REFN(2)
#define MX25_ADCQ_CFG_REFN_NGND2    MX25_ADCQ_CFG_REFN(3)
#define MX25_ADCQ_CFG_REFN_MASK        GENMASK(3, 2)
#define MX25_ADCQ_CFG_PENIACK        (1 << 1)
 
#endif  /* _LINUX_INCLUDE_MFD_IMX25_TSADC_H_ */