Skip to content

Commit c1e2059

Browse files
committed
Add missing functions/types to host GPIO
Some RP2350 GPIO_FUNC_ enums don't match the values defined in the rp2350 hardware header but the actual values shouldn't matter if only the enums are used (i.e. no magic numbers). Refs #2736
1 parent 34e8de7 commit c1e2059

File tree

4 files changed

+297
-19
lines changed

4 files changed

+297
-19
lines changed

src/host/hardware_gpio/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ cc_library(
88
target_compatible_with = ["//bazel/constraint:host"],
99
deps = [
1010
"//src/common/pico_binary_info:LIB_PICO_BINARY_INFO",
11+
"//src/host/hardware_irq",
1112
"//src/host/pico_platform",
1213
],
1314
)
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
pico_simple_hardware_target(gpio)
1+
pico_simple_hardware_target(gpio)
2+
target_link_libraries(hardware_gpio INTERFACE hardware_irq)

src/host/hardware_gpio/gpio.c

Lines changed: 191 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,41 @@ void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_function)(__unused uint gpio, __unuse
1111

1212
}
1313

14+
PICO_WEAK_FUNCTION_DEF(gpio_set_function_masked)
15+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_function_masked)(__unused uint32_t gpio_mask, __unused gpio_function_t fn) {
16+
17+
}
18+
19+
PICO_WEAK_FUNCTION_DEF(gpio_set_function_masked64)
20+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_function_masked64)(__unused uint64_t gpio_mask, __unused gpio_function_t fn) {
21+
22+
}
23+
24+
PICO_WEAK_FUNCTION_DEF(gpio_get_function)
25+
gpio_function_t PICO_WEAK_FUNCTION_IMPL_NAME(gpio_get_function)(__unused uint gpio) {
26+
return GPIO_FUNC_NULL;
27+
}
28+
1429
PICO_WEAK_FUNCTION_DEF(gpio_pull_up)
1530
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_pull_up)(__unused uint gpio) {
1631

1732
}
1833

34+
PICO_WEAK_FUNCTION_DEF(gpio_is_pulled_up)
35+
bool PICO_WEAK_FUNCTION_IMPL_NAME(gpio_is_pulled_up)(__unused uint gpio) {
36+
return 0;
37+
}
38+
1939
PICO_WEAK_FUNCTION_DEF(gpio_pull_down)
2040
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_pull_down)(__unused uint gpio) {
2141

2242
}
2343

44+
PICO_WEAK_FUNCTION_DEF(gpio_is_pulled_down)
45+
bool PICO_WEAK_FUNCTION_IMPL_NAME(gpio_is_pulled_down)(__unused uint gpio) {
46+
return 0;
47+
}
48+
2449
PICO_WEAK_FUNCTION_DEF(gpio_disable_pulls)
2550
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_disable_pulls)(__unused uint gpio) {
2651

@@ -51,6 +76,11 @@ void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_oeover)(__unused uint gpio, __unused
5176

5277
}
5378

79+
PICO_WEAK_FUNCTION_DEF(gpio_set_input_enabled)
80+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_input_enabled)(__unused uint gpio, __unused bool enabled){
81+
82+
}
83+
5484
PICO_WEAK_FUNCTION_DEF(gpio_set_input_hysteresis_enabled)
5585
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_input_hysteresis_enabled)(__unused uint gpio, __unused bool enabled){
5686

@@ -86,23 +116,103 @@ void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_irq_enabled)(__unused uint gpio, __un
86116

87117
}
88118

119+
PICO_WEAK_FUNCTION_DEF(gpio_set_irq_callback)
120+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_irq_callback)(__unused gpio_irq_callback_t callback) {
121+
122+
}
123+
124+
PICO_WEAK_FUNCTION_DEF(gpio_set_irq_enabled_with_callback)
125+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_irq_enabled_with_callback)(__unused uint gpio, __unused uint32_t event_mask, __unused bool enabled, __unused gpio_irq_callback_t callback) {
126+
127+
}
128+
129+
PICO_WEAK_FUNCTION_DEF(gpio_set_dormant_irq_enabled)
130+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_dormant_irq_enabled)(__unused uint gpio, __unused uint32_t event_mask, __unused bool enabled) {
131+
132+
}
133+
134+
PICO_WEAK_FUNCTION_DEF(gpio_get_irq_event_mask)
135+
uint32_t PICO_WEAK_FUNCTION_IMPL_NAME(gpio_get_irq_event_mask)(__unused uint gpio) {
136+
return 0;
137+
}
138+
89139
PICO_WEAK_FUNCTION_DEF(gpio_acknowledge_irq)
90140
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_acknowledge_irq)(__unused uint gpio, __unused uint32_t events) {
91141

92142
}
93143

144+
PICO_WEAK_FUNCTION_DEF(gpio_add_raw_irq_handler_with_order_priority_masked)
145+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_add_raw_irq_handler_with_order_priority_masked)(__unused uint32_t gpio_mask, __unused irq_handler_t handler, __unused uint8_t order_priority) {
146+
147+
}
148+
149+
PICO_WEAK_FUNCTION_DEF(gpio_add_raw_irq_handler_with_order_priority_masked64)
150+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_add_raw_irq_handler_with_order_priority_masked64)(__unused uint64_t gpio_mask, __unused irq_handler_t handler, __unused uint8_t order_priority) {
151+
152+
}
153+
154+
PICO_WEAK_FUNCTION_DEF(gpio_add_raw_irq_handler_with_order_priority)
155+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_add_raw_irq_handler_with_order_priority)(__unused uint gpio, __unused irq_handler_t handler, __unused uint8_t order_priority) {
156+
157+
}
158+
159+
PICO_WEAK_FUNCTION_DEF(gpio_add_raw_irq_handler_masked)
160+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_add_raw_irq_handler_masked)(__unused uint32_t gpio_mask, __unused irq_handler_t handler) {
161+
162+
}
163+
164+
PICO_WEAK_FUNCTION_DEF(gpio_add_raw_irq_handler_masked64)
165+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_add_raw_irq_handler_masked64)(__unused uint64_t gpio_mask, __unused irq_handler_t handler) {
166+
167+
}
168+
169+
PICO_WEAK_FUNCTION_DEF(gpio_add_raw_irq_handler)
170+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_add_raw_irq_handler)(__unused uint gpio, __unused irq_handler_t handler) {
171+
172+
}
173+
174+
PICO_WEAK_FUNCTION_DEF(gpio_remove_raw_irq_handler_masked)
175+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_remove_raw_irq_handler_masked)(__unused uint32_t gpio_mask, __unused irq_handler_t handler) {
176+
177+
}
178+
179+
PICO_WEAK_FUNCTION_DEF(gpio_remove_raw_irq_handler_masked64)
180+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_remove_raw_irq_handler_masked64)(__unused uint64_t gpio_mask, __unused irq_handler_t handler) {
181+
182+
}
183+
184+
PICO_WEAK_FUNCTION_DEF(gpio_remove_raw_irq_handler)
185+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_remove_raw_irq_handler)(__unused uint gpio, __unused irq_handler_t handler) {
186+
187+
}
188+
94189
PICO_WEAK_FUNCTION_DEF(gpio_init)
95190
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_init)(__unused uint gpio) {
96191

97192
}
98193

194+
PICO_WEAK_FUNCTION_DEF(gpio_deinit)
195+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_deinit)(__unused uint gpio) {
196+
197+
}
198+
199+
PICO_WEAK_FUNCTION_DEF(gpio_init_mask)
200+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_init_mask)(__unused uint gpio_mask) {
201+
202+
}
203+
99204
PICO_WEAK_FUNCTION_DEF(gpio_get)
100205
bool PICO_WEAK_FUNCTION_IMPL_NAME(gpio_get)(__unused uint gpio) {
101206
return 0;
102207
}
103208

104209
PICO_WEAK_FUNCTION_DEF(gpio_get_all)
105-
uint32_t PICO_WEAK_FUNCTION_IMPL_NAME(gpio_get_all)() {
210+
uint32_t PICO_WEAK_FUNCTION_IMPL_NAME(gpio_get_all)(void) {
211+
return 0;
212+
}
213+
214+
PICO_WEAK_FUNCTION_DEF(gpio_get_all46)
215+
uint64_t PICO_WEAK_FUNCTION_IMPL_NAME(gpio_get_all64)(void) {
106216
return 0;
107217
}
108218

@@ -111,67 +221,141 @@ void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_mask)(__unused uint32_t mask) {
111221

112222
}
113223

224+
PICO_WEAK_FUNCTION_DEF(gpio_set_mask64)
225+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_mask64)(__unused uint64_t mask) {
226+
227+
}
228+
229+
PICO_WEAK_FUNCTION_DEF(gpio_set_mask_n)
230+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_mask_n)(__unused uint n, __unused uint32_t mask) {
231+
232+
}
233+
234+
114235
PICO_WEAK_FUNCTION_DEF(gpio_clr_mask)
115236
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_clr_mask)(__unused uint32_t mask) {
116237

117238
}
118239

240+
PICO_WEAK_FUNCTION_DEF(gpio_clr_mask64)
241+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_clr_mask64)(__unused uint64_t mask) {
242+
243+
}
244+
245+
PICO_WEAK_FUNCTION_DEF(gpio_clr_mask_n)
246+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_clr_mask_n)(__unused uint n, __unused uint32_t mask) {
247+
248+
}
249+
119250
PICO_WEAK_FUNCTION_DEF(gpio_xor_mask)
120251
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_xor_mask)(__unused uint32_t mask) {
121252

122253
}
123254

255+
PICO_WEAK_FUNCTION_DEF(gpio_xor_mask64)
256+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_xor_mask64)(__unused uint64_t mask) {
257+
258+
}
259+
260+
PICO_WEAK_FUNCTION_DEF(gpio_xor_mask_n)
261+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_xor_mask_n)(__unused uint n, __unused uint32_t mask) {
262+
263+
}
264+
124265
PICO_WEAK_FUNCTION_DEF(gpio_put_masked)
125266
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_put_masked)(__unused uint32_t mask, __unused uint32_t value) {
126267

127268
}
128269

270+
PICO_WEAK_FUNCTION_DEF(gpio_put_masked64)
271+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_put_masked64)(__unused uint64_t mask, __unused uint64_t value) {
272+
273+
}
274+
275+
PICO_WEAK_FUNCTION_DEF(gpio_put_mask_n)
276+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_put_mask_n)(__unused uint n, __unused uint32_t mask) {
277+
278+
}
279+
129280
PICO_WEAK_FUNCTION_DEF(gpio_put_all)
130281
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_put_all)(__unused uint32_t value) {
131282

132283
}
133284

285+
PICO_WEAK_FUNCTION_DEF(gpio_put_all64)
286+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_put_all64)(__unused uint64_t value) {
287+
288+
}
134289
PICO_WEAK_FUNCTION_DEF(gpio_put)
135290
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_put)(__unused uint gpio, __unused int value) {
136291

137292
}
138293

294+
PICO_WEAK_FUNCTION_DEF(gpio_set_dir_out_masked)
295+
bool PICO_WEAK_FUNCTION_IMPL_NAME(gpio_get_out_level)(__unused uint gpio) {
296+
return 0;
297+
}
298+
139299
PICO_WEAK_FUNCTION_DEF(gpio_set_dir_out_masked)
140300
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_dir_out_masked)(__unused uint32_t mask) {
141301

142302
}
143303

304+
PICO_WEAK_FUNCTION_DEF(gpio_set_dir_out_masked64)
305+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_dir_out_masked64)(__unused uint64_t mask) {
306+
307+
}
308+
144309
PICO_WEAK_FUNCTION_DEF(gpio_set_dir_in_masked)
145310
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_dir_in_masked)(__unused uint32_t mask) {
146311

147312
}
148313

314+
PICO_WEAK_FUNCTION_DEF(gpio_set_dir_in_masked64)
315+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_dir_in_masked64)(__unused uint64_t mask) {
316+
317+
}
149318
PICO_WEAK_FUNCTION_DEF(gpio_set_dir_masked)
150319
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_dir_masked)(__unused uint32_t mask, __unused uint32_t value) {
151320

152321
}
153322

323+
PICO_WEAK_FUNCTION_DEF(gpio_set_dir_masked64)
324+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_dir_masked64)(__unused uint64_t mask, __unused uint64_t value) {
325+
326+
}
327+
154328
PICO_WEAK_FUNCTION_DEF(gpio_set_dir_all_bits)
155329
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_dir_all_bits)(__unused uint32_t value) {
156330

157331
}
158332

333+
PICO_WEAK_FUNCTION_DEF(gpio_set_dir_all_bits64)
334+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_dir_all_bits64)(__unused uint64_t value) {
335+
336+
}
337+
159338
PICO_WEAK_FUNCTION_DEF(gpio_set_dir)
160339
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_dir)(__unused uint gpio, __unused bool out) {
161340

162341
}
163342

164-
PICO_WEAK_FUNCTION_DEF(gpio_debug_pins_init)
165-
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_debug_pins_init)() {
343+
PICO_WEAK_FUNCTION_DEF(gpio_is_dir_out)
344+
bool PICO_WEAK_FUNCTION_IMPL_NAME(gpio_is_dir_out)(__unused uint gpio) {
345+
return 0;
346+
}
166347

348+
PICO_WEAK_FUNCTION_DEF(gpio_get_dir)
349+
uint PICO_WEAK_FUNCTION_IMPL_NAME(gpio_get_dir)(uint gpio) {
350+
return gpio_is_dir_out(gpio); // note GPIO_OUT is 1/true and GPIO_IN is 0/false anyway
167351
}
168352

169-
PICO_WEAK_FUNCTION_DEF(gpio_set_input_enabled)
170-
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_input_enabled)(__unused uint gpio, __unused bool enable) {
353+
PICO_WEAK_FUNCTION_DEF(gpio_assign_to_ns)
354+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_assign_to_ns)(__unused uint gpio, __unused bool ns) {
171355

172356
}
173357

174-
PICO_WEAK_FUNCTION_DEF(gpio_init_mask)
175-
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_init_mask)(__unused uint gpio_mask) {
358+
PICO_WEAK_FUNCTION_DEF(gpio_debug_pins_init)
359+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_debug_pins_init)() {
176360

177361
}

0 commit comments

Comments
 (0)