Lines Matching refs:tb

56 static inline void timerblock_update_irq(TimerBlock *tb)  in timerblock_update_irq()  argument
58 qemu_set_irq(tb->irq, tb->status && (tb->control & 4)); in timerblock_update_irq()
91 TimerBlock *tb = (TimerBlock *)opaque; in timerblock_tick() local
95 if ((tb->control & 2) && (tb->control & 0xff00) == 0 && in timerblock_tick()
96 ptimer_get_limit(tb->timer) == 0) { in timerblock_tick()
97 ptimer_stop(tb->timer); in timerblock_tick()
99 tb->status = 1; in timerblock_tick()
100 timerblock_update_irq(tb); in timerblock_tick()
106 TimerBlock *tb = (TimerBlock *)opaque; in timerblock_read() local
109 return ptimer_get_limit(tb->timer); in timerblock_read()
111 return ptimer_get_count(tb->timer); in timerblock_read()
113 return tb->control; in timerblock_read()
115 return tb->status; in timerblock_read()
124 TimerBlock *tb = (TimerBlock *)opaque; in timerblock_write() local
125 uint32_t control = tb->control; in timerblock_write()
128 ptimer_transaction_begin(tb->timer); in timerblock_write()
133 ptimer_stop(tb->timer); in timerblock_write()
135 ptimer_set_limit(tb->timer, value, 1); in timerblock_write()
136 timerblock_run(tb->timer, control, value); in timerblock_write()
137 ptimer_transaction_commit(tb->timer); in timerblock_write()
140 ptimer_transaction_begin(tb->timer); in timerblock_write()
145 (!(control & 2) || ptimer_get_limit(tb->timer) == 0)) { in timerblock_write()
146 ptimer_stop(tb->timer); in timerblock_write()
148 timerblock_set_count(tb->timer, control, &value); in timerblock_write()
149 timerblock_run(tb->timer, control, value); in timerblock_write()
150 ptimer_transaction_commit(tb->timer); in timerblock_write()
153 ptimer_transaction_begin(tb->timer); in timerblock_write()
155 ptimer_stop(tb->timer); in timerblock_write()
158 ptimer_set_period(tb->timer, timerblock_scale(value)); in timerblock_write()
161 uint64_t count = ptimer_get_count(tb->timer); in timerblock_write()
164 timerblock_set_count(tb->timer, value, &count); in timerblock_write()
166 timerblock_run(tb->timer, value, count); in timerblock_write()
168 tb->control = value; in timerblock_write()
169 ptimer_transaction_commit(tb->timer); in timerblock_write()
172 tb->status &= ~value; in timerblock_write()
173 timerblock_update_irq(tb); in timerblock_write()
217 static void timerblock_reset(TimerBlock *tb) in timerblock_reset() argument
219 tb->control = 0; in timerblock_reset()
220 tb->status = 0; in timerblock_reset()
221 if (tb->timer) { in timerblock_reset()
222 ptimer_transaction_begin(tb->timer); in timerblock_reset()
223 ptimer_stop(tb->timer); in timerblock_reset()
224 ptimer_set_limit(tb->timer, 0, 1); in timerblock_reset()
225 ptimer_set_period(tb->timer, timerblock_scale(0)); in timerblock_reset()
226 ptimer_transaction_commit(tb->timer); in timerblock_reset()
271 TimerBlock *tb = &s->timerblock[i]; in arm_mptimer_realize() local
272 tb->timer = ptimer_init(timerblock_tick, tb, PTIMER_POLICY); in arm_mptimer_realize()
273 sysbus_init_irq(sbd, &tb->irq); in arm_mptimer_realize()
274 memory_region_init_io(&tb->iomem, OBJECT(s), &timerblock_ops, tb, in arm_mptimer_realize()
276 sysbus_init_mmio(sbd, &tb->iomem); in arm_mptimer_realize()