Lines Matching refs:timer
60 struct bcm2835_timer *timer = container_of(evt_dev, in bcm2835_time_set_next_event() local
63 timer->compare); in bcm2835_time_set_next_event()
69 struct bcm2835_timer *timer = dev_id; in bcm2835_time_interrupt() local
71 if (readl_relaxed(timer->control) & timer->match_mask) { in bcm2835_time_interrupt()
72 writel_relaxed(timer->match_mask, timer->control); in bcm2835_time_interrupt()
74 event_handler = READ_ONCE(timer->evt.event_handler); in bcm2835_time_interrupt()
76 event_handler(&timer->evt); in bcm2835_time_interrupt()
88 struct bcm2835_timer *timer; in bcm2835_timer_init() local
115 timer = kzalloc(sizeof(*timer), GFP_KERNEL); in bcm2835_timer_init()
116 if (!timer) { in bcm2835_timer_init()
121 timer->control = base + REG_CONTROL; in bcm2835_timer_init()
122 timer->compare = base + REG_COMPARE(DEFAULT_TIMER); in bcm2835_timer_init()
123 timer->match_mask = BIT(DEFAULT_TIMER); in bcm2835_timer_init()
124 timer->evt.name = node->name; in bcm2835_timer_init()
125 timer->evt.rating = 300; in bcm2835_timer_init()
126 timer->evt.features = CLOCK_EVT_FEAT_ONESHOT; in bcm2835_timer_init()
127 timer->evt.set_next_event = bcm2835_time_set_next_event; in bcm2835_timer_init()
128 timer->evt.cpumask = cpumask_of(0); in bcm2835_timer_init()
129 timer->act.name = node->name; in bcm2835_timer_init()
130 timer->act.flags = IRQF_TIMER | IRQF_SHARED; in bcm2835_timer_init()
131 timer->act.dev_id = timer; in bcm2835_timer_init()
132 timer->act.handler = bcm2835_time_interrupt; in bcm2835_timer_init()
134 ret = setup_irq(irq, &timer->act); in bcm2835_timer_init()
140 clockevents_config_and_register(&timer->evt, freq, 0xf, 0xffffffff); in bcm2835_timer_init()