Lines Matching defs:timer
3106 /* HW generic timer primitives */
3131 struct ath_gen_timer *timer;
3141 timer = kzalloc(sizeof(struct ath_gen_timer), GFP_KERNEL);
3142 if (timer == NULL)
3145 /* allocate a hardware generic timer slot */
3146 timer_table->timers[timer_index] = timer;
3147 timer->index = timer_index;
3148 timer->trigger = trigger;
3149 timer->overflow = overflow;
3150 timer->arg = arg;
3157 return timer;
3162 struct ath_gen_timer *timer,
3169 timer_table->timer_mask |= BIT(timer->index);
3172 * Program generic timer registers
3174 REG_WRITE(ah, gen_tmr_configuration[timer->index].next_addr,
3176 REG_WRITE(ah, gen_tmr_configuration[timer->index].period_addr,
3178 REG_SET_BIT(ah, gen_tmr_configuration[timer->index].mode_addr,
3179 gen_tmr_configuration[timer->index].mode_mask);
3183 * Starting from AR9462, each generic timer can select which tsf
3187 if ((timer->index < AR_GEN_TIMER_BANK_1_LEN))
3189 (1 << timer->index));
3192 (1 << timer->index));
3195 if (timer->trigger)
3196 mask |= SM(AR_GENTMR_BIT(timer->index),
3198 if (timer->overflow)
3199 mask |= SM(AR_GENTMR_BIT(timer->index),
3211 void ath9k_hw_gen_timer_stop(struct ath_hw *ah, struct ath_gen_timer *timer)
3215 /* Clear generic timer enable bits. */
3216 REG_CLR_BIT(ah, gen_tmr_configuration[timer->index].mode_addr,
3217 gen_tmr_configuration[timer->index].mode_mask);
3223 if ((timer->index >= AR_GEN_TIMER_BANK_1_LEN)) {
3225 (1 << timer->index));
3231 (SM(AR_GENTMR_BIT(timer->index), AR_IMR_S5_GENTIMER_THRESH) |
3232 SM(AR_GENTMR_BIT(timer->index), AR_IMR_S5_GENTIMER_TRIG)));
3234 timer_table->timer_mask &= ~BIT(timer->index);
3243 void ath_gen_timer_free(struct ath_hw *ah, struct ath_gen_timer *timer)
3247 /* free the hardware generic timer slot */
3248 timer_table->timers[timer->index] = NULL;
3249 kfree(timer);
3259 struct ath_gen_timer *timer;
3263 /* get hardware generic timer interrupt status */
3270 timer = timer_table->timers[index];
3271 if (!timer)
3273 if (!timer->overflow)
3277 timer->overflow(timer->arg);
3281 timer = timer_table->timers[index];
3282 if (!timer)
3284 if (!timer->trigger)
3286 timer->trigger(timer->arg);