125 lines
4.0 KiB
C
125 lines
4.0 KiB
C
// -------------------------------------------------- //
|
|
// This file is autogenerated by pioasm; do not edit! //
|
|
// -------------------------------------------------- //
|
|
|
|
#pragma once
|
|
|
|
#if !PICO_NO_HARDWARE
|
|
#include "hardware/pio.h"
|
|
#endif
|
|
|
|
#define CLKDIV 4
|
|
#define SDIO_CLK_PIN_D0_OFFSET 30
|
|
|
|
// ------------ //
|
|
// sdio_cmd_clk //
|
|
// ------------ //
|
|
|
|
#define sdio_cmd_clk_wrap_target 0
|
|
#define sdio_cmd_clk_wrap 17
|
|
|
|
static const uint16_t sdio_cmd_clk_program_instructions[] = {
|
|
// .wrap_target
|
|
0xb1e3, // 0: mov osr, null side 1 [1]
|
|
0xa14d, // 1: mov y, !status side 0 [1]
|
|
0x1161, // 2: jmp !y, 1 side 1 [1]
|
|
0x6160, // 3: out null, 32 side 0 [1]
|
|
0x7128, // 4: out x, 8 side 1 [1]
|
|
0xe101, // 5: set pins, 1 side 0 [1]
|
|
0xf181, // 6: set pindirs, 1 side 1 [1]
|
|
0x6101, // 7: out pins, 1 side 0 [1]
|
|
0x1147, // 8: jmp x--, 7 side 1 [1]
|
|
0xe180, // 9: set pindirs, 0 side 0 [1]
|
|
0x7128, // 10: out x, 8 side 1 [1]
|
|
0xa142, // 11: nop side 0 [1]
|
|
0x1131, // 12: jmp !x, 17 side 1 [1]
|
|
0xa142, // 13: nop side 0 [1]
|
|
0x11cd, // 14: jmp pin, 13 side 1 [1]
|
|
0x4101, // 15: in pins, 1 side 0 [1]
|
|
0x114f, // 16: jmp x--, 15 side 1 [1]
|
|
0x8120, // 17: push block side 0 [1]
|
|
// .wrap
|
|
};
|
|
|
|
#if !PICO_NO_HARDWARE
|
|
static const struct pio_program sdio_cmd_clk_program = {
|
|
.instructions = sdio_cmd_clk_program_instructions,
|
|
.length = 18,
|
|
.origin = -1,
|
|
};
|
|
|
|
static inline pio_sm_config sdio_cmd_clk_program_get_default_config(uint offset) {
|
|
pio_sm_config c = pio_get_default_sm_config();
|
|
sm_config_set_wrap(&c, offset + sdio_cmd_clk_wrap_target, offset + sdio_cmd_clk_wrap);
|
|
sm_config_set_sideset(&c, 1, false, false);
|
|
return c;
|
|
}
|
|
#endif
|
|
|
|
// ------------ //
|
|
// sdio_data_rx //
|
|
// ------------ //
|
|
|
|
#define sdio_data_rx_wrap_target 0
|
|
#define sdio_data_rx_wrap 4
|
|
|
|
static const uint16_t sdio_data_rx_program_instructions[] = {
|
|
// .wrap_target
|
|
0xa022, // 0: mov x, y
|
|
0x2020, // 1: wait 0 pin, 0
|
|
0x23be, // 2: wait 1 pin, 30 [3]
|
|
0x4204, // 3: in pins, 4 [2]
|
|
0x0043, // 4: jmp x--, 3
|
|
// .wrap
|
|
};
|
|
|
|
#if !PICO_NO_HARDWARE
|
|
static const struct pio_program sdio_data_rx_program = {
|
|
.instructions = sdio_data_rx_program_instructions,
|
|
.length = 5,
|
|
.origin = -1,
|
|
};
|
|
|
|
static inline pio_sm_config sdio_data_rx_program_get_default_config(uint offset) {
|
|
pio_sm_config c = pio_get_default_sm_config();
|
|
sm_config_set_wrap(&c, offset + sdio_data_rx_wrap_target, offset + sdio_data_rx_wrap);
|
|
return c;
|
|
}
|
|
#endif
|
|
|
|
// ------------ //
|
|
// sdio_data_tx //
|
|
// ------------ //
|
|
|
|
#define sdio_data_tx_wrap_target 5
|
|
#define sdio_data_tx_wrap 8
|
|
|
|
static const uint16_t sdio_data_tx_program_instructions[] = {
|
|
0x203e, // 0: wait 0 pin, 30
|
|
0x24be, // 1: wait 1 pin, 30 [4]
|
|
0x6104, // 2: out pins, 4 [1]
|
|
0x0142, // 3: jmp x--, 2 [1]
|
|
0xe180, // 4: set pindirs, 0 [1]
|
|
// .wrap_target
|
|
0x4101, // 5: in pins, 1 [1]
|
|
0x0185, // 6: jmp y--, 5 [1]
|
|
0x21a0, // 7: wait 1 pin, 0 [1]
|
|
0x8120, // 8: push block [1]
|
|
// .wrap
|
|
};
|
|
|
|
#if !PICO_NO_HARDWARE
|
|
static const struct pio_program sdio_data_tx_program = {
|
|
.instructions = sdio_data_tx_program_instructions,
|
|
.length = 9,
|
|
.origin = -1,
|
|
};
|
|
|
|
static inline pio_sm_config sdio_data_tx_program_get_default_config(uint offset) {
|
|
pio_sm_config c = pio_get_default_sm_config();
|
|
sm_config_set_wrap(&c, offset + sdio_data_tx_wrap_target, offset + sdio_data_tx_wrap);
|
|
return c;
|
|
}
|
|
#endif
|
|
|