void boot_sense_jtag_probe(void) { /* Hardware default (sticky): * - clock gating: * - QM_CLK_PERIPH_REGISTER and QM_CLK_PERIPH_GPIO_REGISTER enabled * - QM_CLK_PERIPH_CLK disabled * - pin muxing * - gpio's muxed out * - input pads enabled * - pad pullup disabled * - gpio port configured as input */ qm_gpio_state_t state; qm_pmux_pullup_en(WAIT_FOR_JTAG_PAD, true); qm_pmux_select(WAIT_FOR_JTAG_PAD, QM_PMUX_FN_0); qm_pmux_input_en(WAIT_FOR_JTAG_PAD, true); clk_periph_enable(CLK_PERIPH_REGISTER | CLK_PERIPH_CLK | CLK_PERIPH_GPIO_REGISTER); do { /* Busy loop to allow JTAG access */ qm_gpio_read_pin(QM_GPIO_0, WAIT_FOR_JTAG_GPIO, &state); } while (state == QM_GPIO_LOW); /* Restore hardware default settings */ clk_periph_disable(CLK_PERIPH_CLK); qm_pmux_pullup_en(WAIT_FOR_JTAG_PAD, false); };
static int pinmux_dev_pullup(struct device *dev, uint32_t pin, uint8_t func) { ARG_UNUSED(dev); return qm_pmux_pullup_en(pin, func) == QM_RC_OK ? 0 : -EIO; }
static void pin_mux_setup(void) { /* Set GPIO mux mode. */ qm_pmux_pullup_en(QM_PIN_ID_11, true); qm_pmux_select(QM_PIN_ID_11, QM_PIN_11_FN_GPIO_SS_3); qm_pmux_select(QM_PIN_ID_10, QM_PIN_10_FN_GPIO_SS_2); /* Enable input on PIN_INTR. */ qm_pmux_input_en(QM_PIN_ID_11, true); }