diff --git a/arch/arm/src/imxrt/hardware/imxrt_iomuxc.h b/arch/arm/src/imxrt/hardware/imxrt_iomuxc.h index 6f39ab5bc32..2987af1bd2a 100644 --- a/arch/arm/src/imxrt/hardware/imxrt_iomuxc.h +++ b/arch/arm/src/imxrt/hardware/imxrt_iomuxc.h @@ -149,6 +149,8 @@ #define IOMUX_ENET_TX_CLK_DEFAULT (IOMUX_SLEW_FAST | IOMUX_DRIVE_40OHM | IOMUX_SPEED_LOW | \ IOMUX_PULL_DOWN_100K | IOMUX_PULL_KEEP | GPIO_SION_ENABLE ) +#define IOMUX_ENC_DEFAULT (0) + #define IOMUX_CAN_DEFAULT (IOMUX_SLEW_SLOW | \ IOMUX_DRIVE_50OHM | IOMUX_SPEED_LOW ) diff --git a/arch/arm/src/imxrt/imxrt_enc.c b/arch/arm/src/imxrt/imxrt_enc.c index 318e1759155..85168444c90 100644 --- a/arch/arm/src/imxrt/imxrt_enc.c +++ b/arch/arm/src/imxrt/imxrt_enc.c @@ -779,13 +779,22 @@ static int imxrt_enc_test_gen(FAR struct imxrt_enc_lowerhalf_s *priv, return -EINVAL; } + if (value == 0) + { + imxrt_enc_modifyreg16(priv, IMXRT_ENC_TST_OFFSET, + ENC_TST_TCE | ENC_TST_TEN, 0); + return OK; + } + if (value & (1 << 8)) { - imxrt_enc_modifyreg16(priv, IMXRT_ENC_TST_OFFSET, 0, ENC_TST_QDN); + imxrt_enc_modifyreg16(priv, IMXRT_ENC_TST_OFFSET, 0, ENC_TST_QDN + | ENC_TST_TCE | ENC_TST_TEN); } else { - imxrt_enc_modifyreg16(priv, IMXRT_ENC_TST_OFFSET, ENC_TST_QDN, 0); + imxrt_enc_modifyreg16(priv, IMXRT_ENC_TST_OFFSET, ENC_TST_QDN, + ENC_TST_TCE | ENC_TST_TEN); } imxrt_enc_modifyreg16(priv, IMXRT_ENC_TST_OFFSET, 0, @@ -851,8 +860,7 @@ static int imxrt_setup(FAR struct qe_lowerhalf_s *lower) /* Test Registers */ #ifdef CONFIG_DEBUG_SENSORS - regval = ENC_TST_TCE | ENC_TST_TEN; - regval |= config->tst_dir_adv ? ENC_TST_QDN : 0; + regval = config->tst_dir_adv ? ENC_TST_QDN : 0; regval |= (config->tst_period & ENC_TST_PERIOD_MASK) << ENC_TST_PERIOD_SHIFT; imxrt_enc_putreg16(priv, IMXRT_ENC_TST_OFFSET, regval); @@ -872,6 +880,7 @@ static int imxrt_setup(FAR struct qe_lowerhalf_s *lower) imxrt_enc_putreg16(priv, IMXRT_ENC_CTRL2_OFFSET, regval); imxrt_enc_sem_post(priv); + return OK; } diff --git a/arch/arm/src/imxrt/imxrt_xbar.c b/arch/arm/src/imxrt/imxrt_xbar.c index df97ae4299a..be2d26026b7 100644 --- a/arch/arm/src/imxrt/imxrt_xbar.c +++ b/arch/arm/src/imxrt/imxrt_xbar.c @@ -82,6 +82,21 @@ int imxrt_xbar_connect(uint16_t mux_index_out, uint16_t mux_index_input) xbar_index = IMXRT_XBAR(mux_index_out); clearbits = IMXRT_SEL0_MASK; + switch (xbar_index) + { + case 0: + imxrt_clockall_xbar1(); + break; + case 1: + imxrt_clockall_xbar2(); + break; + case 2: + imxrt_clockall_xbar3(); + break; + default: + break; + } + /* Verify: * 1) The Xbar index is valid. * 2) In and out are on the same Xbar. diff --git a/arch/arm/src/imxrt/imxrt_xbar.h b/arch/arm/src/imxrt/imxrt_xbar.h index f974856e34b..46b50c28eaa 100644 --- a/arch/arm/src/imxrt/imxrt_xbar.h +++ b/arch/arm/src/imxrt/imxrt_xbar.h @@ -29,6 +29,7 @@ #include #include "hardware/imxrt_xbar.h" #include "hardware/imxrt_memorymap.h" +#include "imxrt_periphclks.h" /* Collect correct XBAR definitions from chip file */