Lines Matching refs:sm
12 check_hw_layout(pio_hw_t, sm[0].clkdiv, PIO_SM0_CLKDIV_OFFSET);
13 check_hw_layout(pio_hw_t, sm[1].clkdiv, PIO_SM1_CLKDIV_OFFSET);
24 void pio_sm_claim(PIO pio, uint sm) { in pio_sm_claim() argument
25 check_sm_param(sm); in pio_sm_claim()
33 hw_claim_or_assert(&claimed[0], which * NUM_PIO_STATE_MACHINES + sm, msg); in pio_sm_claim()
42 void pio_sm_unclaim(PIO pio, uint sm) { in pio_sm_unclaim() argument
43 check_sm_param(sm); in pio_sm_unclaim()
45 hw_claim_clear(&claimed[0], which * NUM_PIO_STATE_MACHINES + sm); in pio_sm_unclaim()
57 bool pio_sm_is_claimed(PIO pio, uint sm) { in pio_sm_is_claimed() argument
58 check_sm_param(sm); in pio_sm_is_claimed()
60 return hw_is_claimed(&claimed[0], which * NUM_PIO_STATE_MACHINES + sm); in pio_sm_is_claimed()
221 void pio_sm_set_pins_internal(PIO pio, uint sm, uint32_t pins) { in pio_sm_set_pins_internal() argument
223 check_sm_param(sm); in pio_sm_set_pins_internal()
224 uint32_t pinctrl_saved = pio->sm[sm].pinctrl; in pio_sm_set_pins_internal()
225 uint32_t execctrl_saved = pio->sm[sm].execctrl; in pio_sm_set_pins_internal()
226 hw_clear_bits(&pio->sm[sm].execctrl, 1u << PIO_SM0_EXECCTRL_OUT_STICKY_LSB); in pio_sm_set_pins_internal()
231 pio->sm[sm].pinctrl = in pio_sm_set_pins_internal()
234 pio_sm_exec(pio, sm, pio_encode_set(pio_pins, pins & 0x1fu)); in pio_sm_set_pins_internal()
239 pio->sm[sm].pinctrl = pinctrl_saved; in pio_sm_set_pins_internal()
240 pio->sm[sm].execctrl = execctrl_saved; in pio_sm_set_pins_internal()
244 void pio_sm_set_pins(PIO pio, uint sm, uint32_t pins) { in pio_sm_set_pins() argument
248 pio_sm_set_pins_internal(pio, sm, pins); in pio_sm_set_pins()
252 void pio_sm_set_pins64(PIO pio, uint sm, uint64_t pins) { in pio_sm_set_pins64() argument
253 check_pio_pin_mask64(pio, sm, pins); in pio_sm_set_pins64()
257 pio_sm_set_pins_internal(pio, sm, (uint32_t)pins); in pio_sm_set_pins64()
261 void pio_sm_set_pins_with_mask_internal(PIO pio, uint sm, uint32_t pin_values, uint32_t pin_mask) { in pio_sm_set_pins_with_mask_internal() argument
263 check_sm_param(sm); in pio_sm_set_pins_with_mask_internal()
264 uint32_t pinctrl_saved = pio->sm[sm].pinctrl; in pio_sm_set_pins_with_mask_internal()
265 uint32_t execctrl_saved = pio->sm[sm].execctrl; in pio_sm_set_pins_with_mask_internal()
266 hw_clear_bits(&pio->sm[sm].execctrl, 1u << PIO_SM0_EXECCTRL_OUT_STICKY_LSB); in pio_sm_set_pins_with_mask_internal()
269 pio->sm[sm].pinctrl = in pio_sm_set_pins_with_mask_internal()
272 pio_sm_exec(pio, sm, pio_encode_set(pio_pins, (pin_values >> base) & 0x1u)); in pio_sm_set_pins_with_mask_internal()
275 pio->sm[sm].pinctrl = pinctrl_saved; in pio_sm_set_pins_with_mask_internal()
276 pio->sm[sm].execctrl = execctrl_saved; in pio_sm_set_pins_with_mask_internal()
280 void pio_sm_set_pins_with_mask(PIO pio, uint sm, uint32_t pin_values, uint32_t pin_mask) { in pio_sm_set_pins_with_mask() argument
285 pio_sm_set_pins_with_mask_internal(pio, sm, pin_values, pin_mask); in pio_sm_set_pins_with_mask()
289 void pio_sm_set_pins_with_mask64(PIO pio, uint sm, uint64_t pin_values, uint64_t pin_mask) { in pio_sm_set_pins_with_mask64() argument
290 check_pio_pin_mask64(pio, sm, pin_mask); in pio_sm_set_pins_with_mask64()
295 pio_sm_set_pins_with_mask_internal(pio, sm, (uint32_t)pin_values, (uint32_t)pin_mask); in pio_sm_set_pins_with_mask64()
298 void pio_sm_set_pindirs_with_mask_internal(PIO pio, uint sm, uint32_t pindirs, uint32_t pin_mask) { in pio_sm_set_pindirs_with_mask_internal() argument
300 check_sm_param(sm); in pio_sm_set_pindirs_with_mask_internal()
301 uint32_t pinctrl_saved = pio->sm[sm].pinctrl; in pio_sm_set_pindirs_with_mask_internal()
302 uint32_t execctrl_saved = pio->sm[sm].execctrl; in pio_sm_set_pindirs_with_mask_internal()
303 hw_clear_bits(&pio->sm[sm].execctrl, 1u << PIO_SM0_EXECCTRL_OUT_STICKY_LSB); in pio_sm_set_pindirs_with_mask_internal()
306 pio->sm[sm].pinctrl = in pio_sm_set_pindirs_with_mask_internal()
309 pio_sm_exec(pio, sm, pio_encode_set(pio_pindirs, (pindirs >> base) & 0x1u)); in pio_sm_set_pindirs_with_mask_internal()
312 pio->sm[sm].pinctrl = pinctrl_saved; in pio_sm_set_pindirs_with_mask_internal()
313 pio->sm[sm].execctrl = execctrl_saved; in pio_sm_set_pindirs_with_mask_internal()
317 void pio_sm_set_pindirs_with_mask(PIO pio, uint sm, uint32_t pindirs, uint32_t pin_mask) { in pio_sm_set_pindirs_with_mask() argument
322 pio_sm_set_pindirs_with_mask_internal(pio, sm, pindirs, pin_mask); in pio_sm_set_pindirs_with_mask()
326 void pio_sm_set_pindirs_with_mask64(PIO pio, uint sm, uint64_t pindirs, uint64_t pin_mask) { in pio_sm_set_pindirs_with_mask64() argument
331 pio_sm_set_pindirs_with_mask_internal(pio, sm, (uint32_t)pindirs, (uint32_t)pin_mask); in pio_sm_set_pindirs_with_mask64()
334 int pio_sm_set_consecutive_pindirs(PIO pio, uint sm, uint pin, uint count, bool is_out) { in pio_sm_set_consecutive_pindirs() argument
336 check_sm_param(sm); in pio_sm_set_consecutive_pindirs()
339 uint32_t pinctrl_saved = pio->sm[sm].pinctrl; in pio_sm_set_consecutive_pindirs()
340 uint32_t execctrl_saved = pio->sm[sm].execctrl; in pio_sm_set_consecutive_pindirs()
341 hw_clear_bits(&pio->sm[sm].execctrl, 1u << PIO_SM0_EXECCTRL_OUT_STICKY_LSB); in pio_sm_set_consecutive_pindirs()
344 …pio->sm[sm].pinctrl = (5u << PIO_SM0_PINCTRL_SET_COUNT_LSB) | (pin << PIO_SM0_PINCTRL_SET_BASE_LSB… in pio_sm_set_consecutive_pindirs()
345 pio_sm_exec(pio, sm, pio_encode_set(pio_pindirs, pindir_val)); in pio_sm_set_consecutive_pindirs()
349 …pio->sm[sm].pinctrl = (count << PIO_SM0_PINCTRL_SET_COUNT_LSB) | (pin << PIO_SM0_PINCTRL_SET_BASE_… in pio_sm_set_consecutive_pindirs()
350 pio_sm_exec(pio, sm, pio_encode_set(pio_pindirs, pindir_val)); in pio_sm_set_consecutive_pindirs()
351 pio->sm[sm].pinctrl = pinctrl_saved; in pio_sm_set_consecutive_pindirs()
352 pio->sm[sm].execctrl = execctrl_saved; in pio_sm_set_consecutive_pindirs()
356 int pio_sm_init(PIO pio, uint sm, uint initial_pc, const pio_sm_config *config) { in pio_sm_init() argument
359 pio_sm_set_enabled(pio, sm, false); in pio_sm_init()
363 rc = pio_sm_set_config(pio, sm, config); in pio_sm_init()
366 rc = pio_sm_set_config(pio, sm, &c); in pio_sm_init()
370 pio_sm_clear_fifos(pio, sm); in pio_sm_init()
378 pio->fdebug = fdebug_sm_mask << sm; in pio_sm_init()
381 pio_sm_restart(pio, sm); in pio_sm_init()
382 pio_sm_clkdiv_restart(pio, sm); in pio_sm_init()
383 pio_sm_exec(pio, sm, pio_encode_jmp(initial_pc)); in pio_sm_init()
387 void pio_sm_drain_tx_fifo(PIO pio, uint sm) { in pio_sm_drain_tx_fifo() argument
388 …uint instr = (pio->sm[sm].shiftctrl & PIO_SM0_SHIFTCTRL_AUTOPULL_BITS) ? pio_encode_out(pio_null, … in pio_sm_drain_tx_fifo()
390 while (!pio_sm_is_tx_fifo_empty(pio, sm)) { in pio_sm_drain_tx_fifo()
391 pio_sm_exec(pio, sm, instr); in pio_sm_drain_tx_fifo()
395 bool pio_claim_free_sm_and_add_program(const pio_program_t *program, PIO *pio, uint *sm, uint *offs… in pio_claim_free_sm_and_add_program() argument
396 return pio_claim_free_sm_and_add_program_for_gpio_range(program, pio, sm, offset, 0, 0, false); in pio_claim_free_sm_and_add_program()
399 …d_add_program_for_gpio_range(const pio_program_t *program, PIO *pio, uint *sm, uint *offset, uint … in pio_claim_free_sm_and_add_program_for_gpio_range() argument
436 *sm = (uint) sm_index[0]; in pio_claim_free_sm_and_add_program_for_gpio_range()
455 void pio_remove_program_and_unclaim_sm(const pio_program_t *program, PIO pio, uint sm, uint offset)… in pio_remove_program_and_unclaim_sm() argument
457 check_sm_param(sm); in pio_remove_program_and_unclaim_sm()
459 pio_sm_unclaim(pio, sm); in pio_remove_program_and_unclaim_sm()