Skip to content

Commit 293b9a1

Browse files
ajf58kartben
authored andcommitted
drivers: counter: rpi_pico_timer: Add support for RP2350
The RP2350 SoC series contain two timer peripherals. Extend the driver to support using the second timer (`TIMER1`). N.b. this requires a fix from the Pico SDK to be patched into hal_rpi_pico. See raspberrypi/pico-sdk#1949 . Signed-off-by: Andrew Featherstone <andrew.featherstone@gmail.com>
1 parent 9043e65 commit 293b9a1

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

drivers/counter/counter_rpi_pico_timer.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,11 @@ static int counter_rpi_pico_timer_set_alarm(const struct device *dev, uint8_t id
9595
chdata->callback = alarm_cfg->callback;
9696
chdata->user_data = alarm_cfg->user_data;
9797

98-
missed = hardware_alarm_set_target(id, alarm_at);
98+
missed = timer_hardware_alarm_set_target(config->timer, id, alarm_at);
9999

100100
if (missed) {
101101
if (alarm_cfg->flags & COUNTER_ALARM_CFG_EXPIRE_WHEN_LATE) {
102-
hardware_alarm_force_irq(id);
102+
timer_hardware_alarm_force_irq(config->timer, id);
103103
}
104104
chdata->callback = NULL;
105105
chdata->user_data = NULL;
@@ -113,10 +113,11 @@ static int counter_rpi_pico_timer_cancel_alarm(const struct device *dev, uint8_t
113113
{
114114
struct counter_rpi_pico_timer_data *data = dev->data;
115115
struct counter_rpi_pico_timer_ch_data *chdata = &data->ch_data[id];
116+
const struct counter_rpi_pico_timer_config *config = dev->config;
116117

117118
chdata->callback = NULL;
118119
chdata->user_data = NULL;
119-
hardware_alarm_cancel(id);
120+
timer_hardware_alarm_cancel(config->timer, id);
120121

121122
return 0;
122123
}
@@ -203,7 +204,8 @@ static DEVICE_API(counter, counter_rpi_pico_driver_api) = {
203204

204205
#define RPI_PICO_TIMER_IRQ_ENABLE(node_id, name, idx) \
205206
do { \
206-
hardware_alarm_set_callback(idx, counter_rpi_pico_irq_handle); \
207+
timer_hardware_alarm_set_callback((timer_hw_t *)DT_REG_ADDR(node_id), idx, \
208+
counter_rpi_pico_irq_handle); \
207209
IRQ_CONNECT((DT_IRQ_BY_IDX(node_id, idx, irq)), \
208210
(DT_IRQ_BY_IDX(node_id, idx, priority)), hardware_alarm_irq_handler, \
209211
(DEVICE_DT_GET(node_id)), 0); \

0 commit comments

Comments
 (0)