diff --git a/arch/arm/src/xmc4/xmc4_clockutils.c b/arch/arm/src/xmc4/xmc4_clockutils.c index 4d334eaef53..2a391ca3861 100644 --- a/arch/arm/src/xmc4/xmc4_clockutils.c +++ b/arch/arm/src/xmc4/xmc4_clockutils.c @@ -161,6 +161,7 @@ uint32_t xmc4_get_coreclock(void) uint32_t xmc4_get_periphclock(void) { uint32_t periphclock; + uint32_t regval; /* Get the CPU clock frequency. Unless it is divided down, this also the * peripheral clock frequency. @@ -170,12 +171,12 @@ uint32_t xmc4_get_periphclock(void) /* Get the peripheral clock divider */ - periphclock = getreg32(XMC4_SCU_PBCLKCR); - if ((periphclock & SCU_PBCLKCR_PBDIV) != 0) + regval = getreg32(XMC4_SCU_PBCLKCR); + if ((regval & SCU_PBCLKCR_PBDIV) != 0) { /* The peripheral clock is fCPU/2 */ - periphclock <<= 1; + periphclock >>= 1; } return periphclock; diff --git a/arch/arm/src/xmc4/xmc4_gpio.c b/arch/arm/src/xmc4/xmc4_gpio.c index e26967f06f3..b104def53c3 100644 --- a/arch/arm/src/xmc4/xmc4_gpio.c +++ b/arch/arm/src/xmc4/xmc4_gpio.c @@ -234,7 +234,7 @@ static inline void xmc4_gpio_hwsel(uintptr_t portbase, unsigned int pin, ****************************************************************************/ static inline void xmc4_gpio_pdisc(uintptr_t portbase, unsigned int pin, - bool value) + bool enable) { uint32_t regval; uint32_t mask; @@ -243,16 +243,21 @@ static inline void xmc4_gpio_pdisc(uintptr_t portbase, unsigned int pin, regval = xmc4_gpio_getreg(portbase, XMC4_PORT_PDISC_OFFSET); - /* Set/clear the enable/disable (or analg) value for this field */ + /* Set or clear the pin field in the PDISC register. + * + * Disable = set + * Analog = set + * Enable = clear + */ mask = PORT_PIN(pin); - if (value) + if (enable) { - regval |= mask; + regval &= ~mask; } else { - regval &= ~mask; + regval |= mask; } xmc4_gpio_putreg(portbase, XMC4_PORT_PDISC_OFFSET, regval); diff --git a/arch/arm/src/xmc4/xmc4_usic.c b/arch/arm/src/xmc4/xmc4_usic.c index dd69cf318dd..1b82b9e16d5 100644 --- a/arch/arm/src/xmc4/xmc4_usic.c +++ b/arch/arm/src/xmc4/xmc4_usic.c @@ -121,12 +121,12 @@ int xmc4_enable_usic(enum usic_e usic) putreg32(SCU_CGAT0_USIC0, XMC4_SCU_CGATCLR0); - /* De-assert peripheral reset USIC0 */ + /* Set bit in PRCLR0 to de-assert USIC0 peripheral reset */ putreg32(SCU_PR0_USIC0RS, XMC4_SCU_PRCLR0); } #else - /* De-assert peripheral reset USIC0 */ + /* Set bit in PRCLR0 to de-assert USIC0 peripheral reset */ putreg32(SCU_PR0_USIC0RS, XMC4_SCU_PRCLR0); #endif @@ -143,12 +143,12 @@ int xmc4_enable_usic(enum usic_e usic) putreg32(SCU_CGAT1_USIC1, XMC4_SCU_CGATCLR1); - /* De-assert peripheral reset USIC1 */ + /* Set bit in PRCLR1 to de-assert USIC1 peripheral reset */ putreg32(SCU_PR1_USIC1RS, XMC4_SCU_PRCLR1); } #else - /* De-assert peripheral reset USIC1 */ + /* Set bit in PRCLR1 to de-assert USIC1 peripheral reset */ putreg32(SCU_PR1_USIC1RS, XMC4_SCU_PRCLR1); #endif @@ -165,12 +165,12 @@ int xmc4_enable_usic(enum usic_e usic) putreg32(SCU_CGAT1_USIC2, XMC4_SCU_CGATCLR1); - /* De-assert peripheral reset USIC2 */ + /* Set bit in PRCLR1 to de-assert USIC2 peripheral reset */ putreg32(SCU_PR1_USIC2RS, XMC4_SCU_PRCLR1); } #else - /* De-assert peripheral reset USIC2 */ + /* Set bit in PRCLR1 to de-assert USIC2 peripheral reset */ putreg32(SCU_PR1_USIC2RS, XMC4_SCU_PRCLR1); #endif @@ -203,7 +203,7 @@ int xmc4_disable_usic(enum usic_e usic) switch (usic) { case USIC0: - /* Assert peripheral reset USIC0 */ + /* Set bit in PRSET0 to assert USIC0 peripheral reset */ putreg32(SCU_PR0_USIC0RS, XMC4_SCU_PRSET0); @@ -216,7 +216,7 @@ int xmc4_disable_usic(enum usic_e usic) #if XMC4_NUSIC > 1 case USIC1: - /* Assert peripheral reset USIC0 */ + /* Set bit in PRSET1 to assert USIC1 peripheral reset */ putreg32(SCU_PR1_USIC1RS, XMC4_SCU_PRSET1); @@ -229,7 +229,7 @@ int xmc4_disable_usic(enum usic_e usic) #if XMC4_NUSIC > 2 case USIC2: - /* Assert peripheral reset USIC0 */ + /* Set bit in PRSET1 to assert USIC2 peripheral reset */ putreg32(SCU_PR1_USIC2RS, XMC4_SCU_PRSET1); diff --git a/configs/xmc4500-relax/README.txt b/configs/xmc4500-relax/README.txt index 0ee63341d44..c6d014b6665 100644 --- a/configs/xmc4500-relax/README.txt +++ b/configs/xmc4500-relax/README.txt @@ -14,11 +14,13 @@ Serial Console The RX and TX pins is available: RX - P1.4, Connector X2, pin 17 - TX - P1.5, Connector X2, pin 17 + TX - P1.5, Connector X2, pin 16 GND - Available on pins 1-4 of either connector X1 or X2 VDD3.3 - Available on pins 37-38 of either connector X1 or X2 VDD5 - Available on pins 39-40 of either connector X1 or X2 + A TTL to RS-232 convertor or a USB TTL-to-USB serial adaptor is required. + LEDs ====