Ejemplo n.º 1
0
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);
};
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
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);
}