diff options
Diffstat (limited to 'include/linux/mfd/ti_am335x_tscadc.h')
-rw-r--r-- | include/linux/mfd/ti_am335x_tscadc.h | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/include/linux/mfd/ti_am335x_tscadc.h b/include/linux/mfd/ti_am335x_tscadc.h index 25f2c611ab01..d498d98f0c2c 100644 --- a/include/linux/mfd/ti_am335x_tscadc.h +++ b/include/linux/mfd/ti_am335x_tscadc.h | |||
@@ -46,16 +46,24 @@ | |||
46 | /* Step Enable */ | 46 | /* Step Enable */ |
47 | #define STEPENB_MASK (0x1FFFF << 0) | 47 | #define STEPENB_MASK (0x1FFFF << 0) |
48 | #define STEPENB(val) ((val) << 0) | 48 | #define STEPENB(val) ((val) << 0) |
49 | #define ENB(val) (1 << (val)) | ||
50 | #define STPENB_STEPENB STEPENB(0x1FFFF) | ||
51 | #define STPENB_STEPENB_TC STEPENB(0x1FFF) | ||
49 | 52 | ||
50 | /* IRQ enable */ | 53 | /* IRQ enable */ |
51 | #define IRQENB_HW_PEN BIT(0) | 54 | #define IRQENB_HW_PEN BIT(0) |
52 | #define IRQENB_FIFO0THRES BIT(2) | 55 | #define IRQENB_FIFO0THRES BIT(2) |
56 | #define IRQENB_FIFO0OVRRUN BIT(3) | ||
57 | #define IRQENB_FIFO0UNDRFLW BIT(4) | ||
53 | #define IRQENB_FIFO1THRES BIT(5) | 58 | #define IRQENB_FIFO1THRES BIT(5) |
59 | #define IRQENB_FIFO1OVRRUN BIT(6) | ||
60 | #define IRQENB_FIFO1UNDRFLW BIT(7) | ||
54 | #define IRQENB_PENUP BIT(9) | 61 | #define IRQENB_PENUP BIT(9) |
55 | 62 | ||
56 | /* Step Configuration */ | 63 | /* Step Configuration */ |
57 | #define STEPCONFIG_MODE_MASK (3 << 0) | 64 | #define STEPCONFIG_MODE_MASK (3 << 0) |
58 | #define STEPCONFIG_MODE(val) ((val) << 0) | 65 | #define STEPCONFIG_MODE(val) ((val) << 0) |
66 | #define STEPCONFIG_MODE_SWCNT STEPCONFIG_MODE(1) | ||
59 | #define STEPCONFIG_MODE_HWSYNC STEPCONFIG_MODE(2) | 67 | #define STEPCONFIG_MODE_HWSYNC STEPCONFIG_MODE(2) |
60 | #define STEPCONFIG_AVG_MASK (7 << 2) | 68 | #define STEPCONFIG_AVG_MASK (7 << 2) |
61 | #define STEPCONFIG_AVG(val) ((val) << 2) | 69 | #define STEPCONFIG_AVG(val) ((val) << 2) |
@@ -123,15 +131,21 @@ | |||
123 | #define ADC_CLK 3000000 | 131 | #define ADC_CLK 3000000 |
124 | #define TOTAL_STEPS 16 | 132 | #define TOTAL_STEPS 16 |
125 | #define TOTAL_CHANNELS 8 | 133 | #define TOTAL_CHANNELS 8 |
134 | #define FIFO1_THRESHOLD 19 | ||
126 | 135 | ||
127 | /* | 136 | /* |
128 | * ADC runs at 3MHz, and it takes | 137 | * time in us for processing a single channel, calculated as follows: |
129 | * 15 cycles to latch one data output. | 138 | * |
130 | * Hence the idle time for ADC to | 139 | * num cycles = open delay + (sample delay + conv time) * averaging |
131 | * process one sample data would be | 140 | * |
132 | * around 5 micro seconds. | 141 | * num cycles: 152 + (1 + 13) * 16 = 376 |
133 | */ | 142 | * |
134 | #define IDLE_TIMEOUT 5 /* microsec */ | 143 | * clock frequency: 26MHz / 8 = 3.25MHz |
144 | * clock period: 1 / 3.25MHz = 308ns | ||
145 | * | ||
146 | * processing time: 376 * 308ns = 116us | ||
147 | */ | ||
148 | #define IDLE_TIMEOUT 116 /* microsec */ | ||
135 | 149 | ||
136 | #define TSCADC_CELLS 2 | 150 | #define TSCADC_CELLS 2 |
137 | 151 | ||
@@ -146,6 +160,7 @@ struct ti_tscadc_dev { | |||
146 | struct mfd_cell cells[TSCADC_CELLS]; | 160 | struct mfd_cell cells[TSCADC_CELLS]; |
147 | u32 reg_se_cache; | 161 | u32 reg_se_cache; |
148 | spinlock_t reg_lock; | 162 | spinlock_t reg_lock; |
163 | unsigned int clk_div; | ||
149 | 164 | ||
150 | /* tsc device */ | 165 | /* tsc device */ |
151 | struct titsc *tsc; | 166 | struct titsc *tsc; |