Skip to content

Commit 3c45001

Browse files
authored
Additional param-validation for PIO (earlephilhower#805)
The RP2040 datasheet says "If INT is 0, FRAC must also be 0."
1 parent 6149b9e commit 3c45001

File tree

1 file changed

+2
-0
lines changed
  • src/rp2_common/hardware_pio/include/hardware

1 file changed

+2
-0
lines changed

src/rp2_common/hardware_pio/include/hardware/pio.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ static inline void sm_config_set_sideset(pio_sm_config *c, uint bit_count, bool
211211
* \sa sm_config_set_clkdiv()
212212
*/
213213
static inline void sm_config_set_clkdiv_int_frac(pio_sm_config *c, uint16_t div_int, uint8_t div_frac) {
214+
invalid_params_if(PIO, div_int == 0 && div_frac != 0);
214215
c->clkdiv =
215216
(((uint)div_frac) << PIO_SM0_CLKDIV_FRAC_LSB) |
216217
(((uint)div_int) << PIO_SM0_CLKDIV_INT_LSB);
@@ -1151,6 +1152,7 @@ void pio_sm_drain_tx_fifo(PIO pio, uint sm);
11511152
static inline void pio_sm_set_clkdiv_int_frac(PIO pio, uint sm, uint16_t div_int, uint8_t div_frac) {
11521153
check_pio_param(pio);
11531154
check_sm_param(sm);
1155+
invalid_params_if(PIO, div_int == 0 && div_frac != 0);
11541156
pio->sm[sm].clkdiv =
11551157
(((uint)div_frac) << PIO_SM0_CLKDIV_FRAC_LSB) |
11561158
(((uint)div_int) << PIO_SM0_CLKDIV_INT_LSB);

0 commit comments

Comments
 (0)