Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Blackfin: gptimers: use bfin read/write helpers

Use proper helper macros for reading/writing the MMRs rather than
volatile markings on the struct.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>

+25 -20
+25 -20
arch/blackfin/kernel/gptimers.c
··· 124 124 void set_gptimer_pwidth(unsigned int timer_id, uint32_t value) 125 125 { 126 126 tassert(timer_id < MAX_BLACKFIN_GPTIMERS); 127 - timer_regs[timer_id]->width = value; 127 + bfin_write(&timer_regs[timer_id]->width, value); 128 128 SSYNC(); 129 129 } 130 130 EXPORT_SYMBOL(set_gptimer_pwidth); ··· 132 132 uint32_t get_gptimer_pwidth(unsigned int timer_id) 133 133 { 134 134 tassert(timer_id < MAX_BLACKFIN_GPTIMERS); 135 - return timer_regs[timer_id]->width; 135 + return bfin_read(&timer_regs[timer_id]->width); 136 136 } 137 137 EXPORT_SYMBOL(get_gptimer_pwidth); 138 138 139 139 void set_gptimer_period(unsigned int timer_id, uint32_t period) 140 140 { 141 141 tassert(timer_id < MAX_BLACKFIN_GPTIMERS); 142 - timer_regs[timer_id]->period = period; 142 + bfin_write(&timer_regs[timer_id]->period, period); 143 143 SSYNC(); 144 144 } 145 145 EXPORT_SYMBOL(set_gptimer_period); ··· 147 147 uint32_t get_gptimer_period(unsigned int timer_id) 148 148 { 149 149 tassert(timer_id < MAX_BLACKFIN_GPTIMERS); 150 - return timer_regs[timer_id]->period; 150 + return bfin_read(&timer_regs[timer_id]->period); 151 151 } 152 152 EXPORT_SYMBOL(get_gptimer_period); 153 153 154 154 uint32_t get_gptimer_count(unsigned int timer_id) 155 155 { 156 156 tassert(timer_id < MAX_BLACKFIN_GPTIMERS); 157 - return timer_regs[timer_id]->counter; 157 + return bfin_read(&timer_regs[timer_id]->counter); 158 158 } 159 159 EXPORT_SYMBOL(get_gptimer_count); 160 160 161 161 uint32_t get_gptimer_status(unsigned int group) 162 162 { 163 163 tassert(group < BFIN_TIMER_NUM_GROUP); 164 - return group_regs[group]->status; 164 + return bfin_read(&group_regs[group]->status); 165 165 } 166 166 EXPORT_SYMBOL(get_gptimer_status); 167 167 168 168 void set_gptimer_status(unsigned int group, uint32_t value) 169 169 { 170 170 tassert(group < BFIN_TIMER_NUM_GROUP); 171 - group_regs[group]->status = value; 171 + bfin_write(&group_regs[group]->status, value); 172 172 SSYNC(); 173 173 } 174 174 EXPORT_SYMBOL(set_gptimer_status); 175 175 176 + static uint32_t read_gptimer_status(unsigned int timer_id) 177 + { 178 + return bfin_read(&group_regs[BFIN_TIMER_OCTET(timer_id)]->status); 179 + } 180 + 176 181 int get_gptimer_intr(unsigned int timer_id) 177 182 { 178 183 tassert(timer_id < MAX_BLACKFIN_GPTIMERS); 179 - return !!(group_regs[BFIN_TIMER_OCTET(timer_id)]->status & timil_mask[timer_id]); 184 + return !!(read_gptimer_status(timer_id) & timil_mask[timer_id]); 180 185 } 181 186 EXPORT_SYMBOL(get_gptimer_intr); 182 187 183 188 void clear_gptimer_intr(unsigned int timer_id) 184 189 { 185 190 tassert(timer_id < MAX_BLACKFIN_GPTIMERS); 186 - group_regs[BFIN_TIMER_OCTET(timer_id)]->status = timil_mask[timer_id]; 191 + bfin_write(&group_regs[BFIN_TIMER_OCTET(timer_id)]->status, timil_mask[timer_id]); 187 192 } 188 193 EXPORT_SYMBOL(clear_gptimer_intr); 189 194 190 195 int get_gptimer_over(unsigned int timer_id) 191 196 { 192 197 tassert(timer_id < MAX_BLACKFIN_GPTIMERS); 193 - return !!(group_regs[BFIN_TIMER_OCTET(timer_id)]->status & tovf_mask[timer_id]); 198 + return !!(read_gptimer_status(timer_id) & tovf_mask[timer_id]); 194 199 } 195 200 EXPORT_SYMBOL(get_gptimer_over); 196 201 197 202 void clear_gptimer_over(unsigned int timer_id) 198 203 { 199 204 tassert(timer_id < MAX_BLACKFIN_GPTIMERS); 200 - group_regs[BFIN_TIMER_OCTET(timer_id)]->status = tovf_mask[timer_id]; 205 + bfin_write(&group_regs[BFIN_TIMER_OCTET(timer_id)]->status, tovf_mask[timer_id]); 201 206 } 202 207 EXPORT_SYMBOL(clear_gptimer_over); 203 208 204 209 int get_gptimer_run(unsigned int timer_id) 205 210 { 206 211 tassert(timer_id < MAX_BLACKFIN_GPTIMERS); 207 - return !!(group_regs[BFIN_TIMER_OCTET(timer_id)]->status & trun_mask[timer_id]); 212 + return !!(read_gptimer_status(timer_id) & trun_mask[timer_id]); 208 213 } 209 214 EXPORT_SYMBOL(get_gptimer_run); 210 215 211 216 void set_gptimer_config(unsigned int timer_id, uint16_t config) 212 217 { 213 218 tassert(timer_id < MAX_BLACKFIN_GPTIMERS); 214 - timer_regs[timer_id]->config = config; 219 + bfin_write(&timer_regs[timer_id]->config, config); 215 220 SSYNC(); 216 221 } 217 222 EXPORT_SYMBOL(set_gptimer_config); ··· 224 219 uint16_t get_gptimer_config(unsigned int timer_id) 225 220 { 226 221 tassert(timer_id < MAX_BLACKFIN_GPTIMERS); 227 - return timer_regs[timer_id]->config; 222 + return bfin_read(&timer_regs[timer_id]->config); 228 223 } 229 224 EXPORT_SYMBOL(get_gptimer_config); 230 225 ··· 233 228 int i; 234 229 tassert((mask & ~BLACKFIN_GPTIMER_IDMASK) == 0); 235 230 for (i = 0; i < BFIN_TIMER_NUM_GROUP; ++i) { 236 - group_regs[i]->enable = mask & 0xFF; 231 + bfin_write(&group_regs[i]->enable, mask & 0xFF); 237 232 mask >>= 8; 238 233 } 239 234 SSYNC(); ··· 246 241 uint16_t m = mask; 247 242 tassert((mask & ~BLACKFIN_GPTIMER_IDMASK) == 0); 248 243 for (i = 0; i < BFIN_TIMER_NUM_GROUP; ++i) { 249 - group_regs[i]->disable = m & 0xFF; 244 + bfin_write(&group_regs[i]->disable, m & 0xFF); 250 245 m >>= 8; 251 246 } 252 247 } ··· 257 252 _disable_gptimers(mask); 258 253 for (i = 0; i < MAX_BLACKFIN_GPTIMERS; ++i) 259 254 if (mask & (1 << i)) 260 - group_regs[BFIN_TIMER_OCTET(i)]->status = trun_mask[i]; 255 + bfin_write(&group_regs[BFIN_TIMER_OCTET(i)]->status, trun_mask[i]); 261 256 SSYNC(); 262 257 } 263 258 EXPORT_SYMBOL(disable_gptimers); ··· 272 267 void set_gptimer_pulse_hi(unsigned int timer_id) 273 268 { 274 269 tassert(timer_id < MAX_BLACKFIN_GPTIMERS); 275 - timer_regs[timer_id]->config |= TIMER_PULSE_HI; 270 + bfin_write_or(&timer_regs[timer_id]->config, TIMER_PULSE_HI); 276 271 SSYNC(); 277 272 } 278 273 EXPORT_SYMBOL(set_gptimer_pulse_hi); ··· 280 275 void clear_gptimer_pulse_hi(unsigned int timer_id) 281 276 { 282 277 tassert(timer_id < MAX_BLACKFIN_GPTIMERS); 283 - timer_regs[timer_id]->config &= ~TIMER_PULSE_HI; 278 + bfin_write_and(&timer_regs[timer_id]->config, ~TIMER_PULSE_HI); 284 279 SSYNC(); 285 280 } 286 281 EXPORT_SYMBOL(clear_gptimer_pulse_hi); ··· 290 285 int i; 291 286 uint16_t result = 0; 292 287 for (i = 0; i < BFIN_TIMER_NUM_GROUP; ++i) 293 - result |= (group_regs[i]->enable << (i << 3)); 288 + result |= (bfin_read(&group_regs[i]->enable) << (i << 3)); 294 289 return result; 295 290 } 296 291 EXPORT_SYMBOL(get_enabled_gptimers);