Lines Matching +full:alarms +full:- +full:count

4  * SPDX-License-Identifier: Apache-2.0
39 /* 1st timer used as main timer in auto-reload, count-down. generate mode */
42 /* 2nd timer (if available) used as alarm timer in count-down, generate mode */
61 const struct xlnx_axi_timer_config *config = dev->config; in xlnx_axi_timer_read32()
63 return sys_read32(config->base + offset); in xlnx_axi_timer_read32()
70 const struct xlnx_axi_timer_config *config = dev->config; in xlnx_axi_timer_write32()
72 sys_write32(value, config->base + offset); in xlnx_axi_timer_write32()
77 const struct xlnx_axi_timer_data *data = dev->data; in xlnx_axi_timer_start()
82 if (data->alarm_callback) { in xlnx_axi_timer_start()
94 const struct xlnx_axi_timer_config *config = dev->config; in xlnx_axi_timer_stop()
102 if (config->info.channels > 0) { in xlnx_axi_timer_stop()
123 struct xlnx_axi_timer_data *data = dev->data; in xlnx_axi_timer_set_alarm()
129 if (cfg->callback == NULL) { in xlnx_axi_timer_set_alarm()
130 return -EINVAL; in xlnx_axi_timer_set_alarm()
133 if (data->alarm_callback != NULL) { in xlnx_axi_timer_set_alarm()
134 return -EBUSY; in xlnx_axi_timer_set_alarm()
137 if (cfg->ticks > xlnx_axi_timer_read32(dev, TLR0_OFFSET)) { in xlnx_axi_timer_set_alarm()
138 return -EINVAL; in xlnx_axi_timer_set_alarm()
141 if (cfg->flags & COUNTER_ALARM_CFG_ABSOLUTE) { in xlnx_axi_timer_set_alarm()
145 * absolute alarms in a reliable way. in xlnx_axi_timer_set_alarm()
147 return -ENOTSUP; in xlnx_axi_timer_set_alarm()
150 LOG_DBG("triggering alarm in 0x%08x ticks", cfg->ticks); in xlnx_axi_timer_set_alarm()
153 xlnx_axi_timer_write32(dev, cfg->ticks, TLR1_OFFSET); in xlnx_axi_timer_set_alarm()
158 data->alarm_callback = cfg->callback; in xlnx_axi_timer_set_alarm()
159 data->alarm_user_data = cfg->user_data; in xlnx_axi_timer_set_alarm()
174 struct xlnx_axi_timer_data *data = dev->data; in xlnx_axi_timer_cancel_alarm()
181 data->alarm_callback = NULL; in xlnx_axi_timer_cancel_alarm()
182 data->alarm_user_data = NULL; in xlnx_axi_timer_cancel_alarm()
190 struct xlnx_axi_timer_data *data = dev->data; in xlnx_axi_timer_set_top_value()
195 if (cfg->ticks == 0) { in xlnx_axi_timer_set_top_value()
196 return -EINVAL; in xlnx_axi_timer_set_top_value()
199 if (data->alarm_callback) { in xlnx_axi_timer_set_top_value()
200 return -EBUSY; in xlnx_axi_timer_set_top_value()
203 LOG_DBG("setting top value to 0x%08x", cfg->ticks); in xlnx_axi_timer_set_top_value()
205 data->top_callback = cfg->callback; in xlnx_axi_timer_set_top_value()
206 data->top_user_data = cfg->user_data; in xlnx_axi_timer_set_top_value()
208 if (cfg->flags & COUNTER_TOP_CFG_DONT_RESET) { in xlnx_axi_timer_set_top_value()
211 if (cfg->flags & COUNTER_TOP_CFG_RESET_WHEN_LATE) { in xlnx_axi_timer_set_top_value()
213 reload = cfg->ticks < now; in xlnx_axi_timer_set_top_value()
223 xlnx_axi_timer_write32(dev, cfg->ticks, TLR0_OFFSET); in xlnx_axi_timer_set_top_value()
235 const struct xlnx_axi_timer_config *config = dev->config; in xlnx_axi_timer_get_pending_int()
244 if (config->info.channels > 0) { in xlnx_axi_timer_get_pending_int()
263 struct xlnx_axi_timer_data *data = dev->data; in xlnx_axi_timer_isr()
273 if (data->alarm_callback) { in xlnx_axi_timer_isr()
275 alarm_cb = data->alarm_callback; in xlnx_axi_timer_isr()
276 data->alarm_callback = NULL; in xlnx_axi_timer_isr()
278 alarm_cb(dev, 0, now, data->alarm_user_data); in xlnx_axi_timer_isr()
286 if (data->top_callback) { in xlnx_axi_timer_isr()
287 data->top_callback(dev, data->top_user_data); in xlnx_axi_timer_isr()
294 const struct xlnx_axi_timer_config *config = dev->config; in xlnx_axi_timer_init()
296 LOG_DBG("max top value = 0x%08x", config->info.max_top_value); in xlnx_axi_timer_init()
297 LOG_DBG("frequency = %d", config->info.freq); in xlnx_axi_timer_init()
298 LOG_DBG("channels = %d", config->info.channels); in xlnx_axi_timer_init()
300 xlnx_axi_timer_write32(dev, config->info.max_top_value, TLR0_OFFSET); in xlnx_axi_timer_init()
303 if (config->info.channels > 0) { in xlnx_axi_timer_init()
307 config->irq_config_func(dev); in xlnx_axi_timer_init()
329 GENMASK(DT_INST_PROP(n, xlnx_count_width) - 1, 0), \