@@ -247,148 +247,4 @@ int omap_dm_timers_active(void);
247
247
#define OMAP_TIMER_TICK_INT_MASK_COUNT_REG \
248
248
(_OMAP_TIMER_TICK_INT_MASK_COUNT_OFFSET | (WP_TOWR << WPSHIFT))
249
249
250
- /*
251
- * The below are inlined to optimize code size for system timers. Other code
252
- * should not need these at all.
253
- */
254
- #if defined(CONFIG_ARCH_OMAP1 ) || defined(CONFIG_ARCH_OMAP2PLUS )
255
- static inline u32 __omap_dm_timer_read (struct omap_dm_timer * timer , u32 reg ,
256
- int posted )
257
- {
258
- if (posted )
259
- while (readl_relaxed (timer -> pend ) & (reg >> WPSHIFT ))
260
- cpu_relax ();
261
-
262
- return readl_relaxed (timer -> func_base + (reg & 0xff ));
263
- }
264
-
265
- static inline void __omap_dm_timer_write (struct omap_dm_timer * timer ,
266
- u32 reg , u32 val , int posted )
267
- {
268
- if (posted )
269
- while (readl_relaxed (timer -> pend ) & (reg >> WPSHIFT ))
270
- cpu_relax ();
271
-
272
- writel_relaxed (val , timer -> func_base + (reg & 0xff ));
273
- }
274
-
275
- static inline void __omap_dm_timer_init_regs (struct omap_dm_timer * timer )
276
- {
277
- u32 tidr ;
278
-
279
- /* Assume v1 ip if bits [31:16] are zero */
280
- tidr = readl_relaxed (timer -> io_base );
281
- if (!(tidr >> 16 )) {
282
- timer -> revision = 1 ;
283
- timer -> irq_stat = timer -> io_base + OMAP_TIMER_V1_STAT_OFFSET ;
284
- timer -> irq_ena = timer -> io_base + OMAP_TIMER_V1_INT_EN_OFFSET ;
285
- timer -> irq_dis = timer -> io_base + OMAP_TIMER_V1_INT_EN_OFFSET ;
286
- timer -> pend = timer -> io_base + _OMAP_TIMER_WRITE_PEND_OFFSET ;
287
- timer -> func_base = timer -> io_base ;
288
- } else {
289
- timer -> revision = 2 ;
290
- timer -> irq_stat = timer -> io_base + OMAP_TIMER_V2_IRQSTATUS ;
291
- timer -> irq_ena = timer -> io_base + OMAP_TIMER_V2_IRQENABLE_SET ;
292
- timer -> irq_dis = timer -> io_base + OMAP_TIMER_V2_IRQENABLE_CLR ;
293
- timer -> pend = timer -> io_base +
294
- _OMAP_TIMER_WRITE_PEND_OFFSET +
295
- OMAP_TIMER_V2_FUNC_OFFSET ;
296
- timer -> func_base = timer -> io_base + OMAP_TIMER_V2_FUNC_OFFSET ;
297
- }
298
- }
299
-
300
- /*
301
- * __omap_dm_timer_enable_posted - enables write posted mode
302
- * @timer: pointer to timer instance handle
303
- *
304
- * Enables the write posted mode for the timer. When posted mode is enabled
305
- * writes to certain timer registers are immediately acknowledged by the
306
- * internal bus and hence prevents stalling the CPU waiting for the write to
307
- * complete. Enabling this feature can improve performance for writing to the
308
- * timer registers.
309
- */
310
- static inline void __omap_dm_timer_enable_posted (struct omap_dm_timer * timer )
311
- {
312
- if (timer -> posted )
313
- return ;
314
-
315
- if (timer -> errata & OMAP_TIMER_ERRATA_I103_I767 ) {
316
- timer -> posted = OMAP_TIMER_NONPOSTED ;
317
- __omap_dm_timer_write (timer , OMAP_TIMER_IF_CTRL_REG , 0 , 0 );
318
- return ;
319
- }
320
-
321
- __omap_dm_timer_write (timer , OMAP_TIMER_IF_CTRL_REG ,
322
- OMAP_TIMER_CTRL_POSTED , 0 );
323
- timer -> context .tsicr = OMAP_TIMER_CTRL_POSTED ;
324
- timer -> posted = OMAP_TIMER_POSTED ;
325
- }
326
-
327
- /**
328
- * __omap_dm_timer_override_errata - override errata flags for a timer
329
- * @timer: pointer to timer handle
330
- * @errata: errata flags to be ignored
331
- *
332
- * For a given timer, override a timer errata by clearing the flags
333
- * specified by the errata argument. A specific erratum should only be
334
- * overridden for a timer if the timer is used in such a way the erratum
335
- * has no impact.
336
- */
337
- static inline void __omap_dm_timer_override_errata (struct omap_dm_timer * timer ,
338
- u32 errata )
339
- {
340
- timer -> errata &= ~errata ;
341
- }
342
-
343
- static inline void __omap_dm_timer_stop (struct omap_dm_timer * timer ,
344
- int posted , unsigned long rate )
345
- {
346
- u32 l ;
347
-
348
- l = __omap_dm_timer_read (timer , OMAP_TIMER_CTRL_REG , posted );
349
- if (l & OMAP_TIMER_CTRL_ST ) {
350
- l &= ~0x1 ;
351
- __omap_dm_timer_write (timer , OMAP_TIMER_CTRL_REG , l , posted );
352
- #ifdef CONFIG_ARCH_OMAP2PLUS
353
- /* Readback to make sure write has completed */
354
- __omap_dm_timer_read (timer , OMAP_TIMER_CTRL_REG , posted );
355
- /*
356
- * Wait for functional clock period x 3.5 to make sure that
357
- * timer is stopped
358
- */
359
- udelay (3500000 / rate + 1 );
360
- #endif
361
- }
362
-
363
- /* Ack possibly pending interrupt */
364
- writel_relaxed (OMAP_TIMER_INT_OVERFLOW , timer -> irq_stat );
365
- }
366
-
367
- static inline void __omap_dm_timer_load_start (struct omap_dm_timer * timer ,
368
- u32 ctrl , unsigned int load ,
369
- int posted )
370
- {
371
- __omap_dm_timer_write (timer , OMAP_TIMER_COUNTER_REG , load , posted );
372
- __omap_dm_timer_write (timer , OMAP_TIMER_CTRL_REG , ctrl , posted );
373
- }
374
-
375
- static inline void __omap_dm_timer_int_enable (struct omap_dm_timer * timer ,
376
- unsigned int value )
377
- {
378
- writel_relaxed (value , timer -> irq_ena );
379
- __omap_dm_timer_write (timer , OMAP_TIMER_WAKEUP_EN_REG , value , 0 );
380
- }
381
-
382
- static inline unsigned int
383
- __omap_dm_timer_read_counter (struct omap_dm_timer * timer , int posted )
384
- {
385
- return __omap_dm_timer_read (timer , OMAP_TIMER_COUNTER_REG , posted );
386
- }
387
-
388
- static inline void __omap_dm_timer_write_status (struct omap_dm_timer * timer ,
389
- unsigned int value )
390
- {
391
- writel_relaxed (value , timer -> irq_stat );
392
- }
393
- #endif /* CONFIG_ARCH_OMAP1 || CONFIG_ARCH_OMAP2PLUS */
394
250
#endif /* __CLOCKSOURCE_DMTIMER_H */
0 commit comments