diff options
-rw-r--r-- | board/snow/board.c | 12 | ||||
-rw-r--r-- | chip/stm32/clock-stm32f100.c | 5 |
2 files changed, 11 insertions, 6 deletions
diff --git a/board/snow/board.c b/board/snow/board.c index 10eba81c1f..d23b0e60d7 100644 --- a/board/snow/board.c +++ b/board/snow/board.c @@ -124,9 +124,17 @@ void configure_board(void) STM32_GPIO_BSRR_OFF(GPIO_B) |= (1<<11) | (1<<10) | (1<<7) | (1<<6); - /* Select Alternate function for USART1 on pins PA9/PA10 */ + /* + * Set alternate function for USART1. For alt. function input + * the port is configured in either floating or pull-up/down + * input mode (ref. section 7.1.4 in datasheet RM0041): + * PA9: Tx, alt. function output + * PA10: Rx, input with pull-down + * + * note: see crosbug.com/p/12223 for more info + */ val = STM32_GPIO_CRH_OFF(GPIO_A) & ~0x00000ff0; - val |= 0x00000990; + val |= 0x00000890; STM32_GPIO_CRH_OFF(GPIO_A) = val; /* EC_INT is output, open-drain */ diff --git a/chip/stm32/clock-stm32f100.c b/chip/stm32/clock-stm32f100.c index cc5e53908f..6fc2bd29f8 100644 --- a/chip/stm32/clock-stm32f100.c +++ b/chip/stm32/clock-stm32f100.c @@ -160,23 +160,20 @@ static void config_hispeed_clock(void) #ifdef CONFIG_FORCE_CONSOLE_RESUME static void enable_serial_wakeup(int enable) { - static uint32_t save_crh, save_exticr; + static uint32_t save_exticr; if (enable) { /** * allow to wake up from serial port (RX on pin PA10) * by setting it as a GPIO with an external interrupt. */ - save_crh = STM32_GPIO_CRH_OFF(GPIO_A); save_exticr = STM32_AFIO_EXTICR(10 / 4); - STM32_GPIO_CRH_OFF(GPIO_A) = (save_crh & ~0xf00) | 0x400; STM32_AFIO_EXTICR(10 / 4) = (save_exticr & ~(0xf << 8)); } else { /* serial port wake up : don't go back to sleep */ if (STM32_EXTI_PR & (1 << 10)) disable_sleep(SLEEP_MASK_FORCE); /* restore keyboard external IT on PC10 */ - STM32_GPIO_CRH_OFF(GPIO_A) = save_crh; STM32_AFIO_EXTICR(10 / 4) = save_exticr; } } |