summaryrefslogtreecommitdiff
path: root/baseboard/kukui
diff options
context:
space:
mode:
authorBossen WU <bossen.wu@stmicro.corp-partner.google.com>2021-05-20 18:36:51 +0800
committerCommit Bot <commit-bot@chromium.org>2021-07-20 03:50:07 +0000
commit4ce3683f04cdca8339d8dda171bd0e3620cc38e5 (patch)
tree26b5b85bf7a10283646b84c7b3f41d06360a99c5 /baseboard/kukui
parent43d48363f12aed7635cc079bb7038985c6156a5a (diff)
downloadchrome-ec-4ce3683f04cdca8339d8dda171bd0e3620cc38e5.tar.gz
munna: munna board with STM32L431 ec
munna board initialization. BRANCH=main BUG=b:188117811 TEST=make BOARD=munna; make buidall Signed-off-by: Bossen WU <bossen.wu@stmicro.corp-partner.google.com> Change-Id: I7de980f61d00f1b050924812265b7068d937a112 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2909958 Reviewed-by: Shou-Chieh Hsu <shouchieh@chromium.org>
Diffstat (limited to 'baseboard/kukui')
-rw-r--r--baseboard/kukui/baseboard.c22
-rw-r--r--baseboard/kukui/baseboard.h10
-rw-r--r--baseboard/kukui/emmc.c9
3 files changed, 38 insertions, 3 deletions
diff --git a/baseboard/kukui/baseboard.c b/baseboard/kukui/baseboard.c
index 9eef6c2ef4..f17b3a4e82 100644
--- a/baseboard/kukui/baseboard.c
+++ b/baseboard/kukui/baseboard.c
@@ -7,6 +7,7 @@
#include "adc_chip.h"
#include "charger.h"
#include "chipset.h"
+#include "dma.h"
#include "gpio.h"
#include "hooks.h"
#include "keyboard_scan.h"
@@ -55,6 +56,25 @@ void board_config_pre_init(void)
*/
STM32_DMA_CSELR(STM32_DMAC_CH4) = (8 << 12) | (8 << 16) |
(3 << 20) | (3 << 24);
+
+#elif defined(VARIANT_KUKUI_EC_STM32L431)
+#ifdef CONFIG_DMA
+ dma_init();
+#endif
+ /*
+ * Remap USART1 and SPI2 DMA:
+ *
+ * DMA2_CH=DMA1_CH+8
+ *
+ * Ch6 (DMA2): USART1_TX / Ch7: USART1_RX (0010)
+ * Ch4 (DMA1): SPI2_RX / Ch5: SPI2_TX (0010)
+ *
+ * (*((volatile unsigned long *)(0x400200A8UL))) = 0x00011000;
+ * (*((volatile unsigned long *)(0x400204A8UL))) = 0x00200000;
+ */
+
+ STM32_DMA_CSELR(STM32_DMAC_CH4) = (1 << 12) | (1 << 16);
+ STM32_DMA_CSELR(STM32_DMAC_CH14) = (2 << 20) | (2 << 24);
#endif
}
@@ -144,7 +164,7 @@ int board_get_version(void)
static void baseboard_spi_init(void)
{
-#ifdef VARIANT_KUKUI_EC_STM32F098
+#if defined(VARIANT_KUKUI_EC_STM32F098) || defined(VARIANT_KUKUI_EC_STM32L431)
/* Set SPI PA15,PB3/4/5/13/14/15 pins to high speed */
STM32_GPIO_OSPEEDR(GPIO_A) |= 0xc0000000;
STM32_GPIO_OSPEEDR(GPIO_B) |= 0xfc000fc0;
diff --git a/baseboard/kukui/baseboard.h b/baseboard/kukui/baseboard.h
index bf4a205393..90a3e3dd05 100644
--- a/baseboard/kukui/baseboard.h
+++ b/baseboard/kukui/baseboard.h
@@ -99,13 +99,14 @@
* IT81202 based boards are variant of jacuzzi and I/O expander isn't required
* on them.
*/
-#ifdef VARIANT_KUKUI_EC_STM32F098
+#if defined(VARIANT_KUKUI_EC_STM32F098) || defined(VARIANT_KUKUI_EC_STM32L431)
#define CONFIG_IO_EXPANDER
#define CONFIG_IO_EXPANDER_IT8801
#define CONFIG_IO_EXPANDER_PORT_COUNT 1
#define CONFIG_KEYBOARD_NOT_RAW
#define CONFIG_KEYBOARD_BOARD_CONFIG
#endif
+
#define CONFIG_KEYBOARD_COL2_INVERTED
#define CONFIG_GMR_TABLET_MODE
@@ -258,14 +259,19 @@
* Variant EC defines. Pick one:
* VARIANT_KUKUI_EC_STM32F098
* VARIANT_KUKUI_EC_IT81202
+ * VARIANT_KUKUI_EC_STM32L431
*/
-#if defined(VARIANT_KUKUI_EC_STM32F098)
+#if defined(VARIANT_KUKUI_EC_STM32F098) || defined(VARIANT_KUKUI_EC_STM32L431)
/* Timer selection */
#define TIM_CLOCK32 2
#define TIM_WATCHDOG 7
/* 48 MHz SYSCLK clock frequency */
+#ifdef VARIANT_KUKUI_EC_STM32L431
+#define CPU_CLOCK 80000000
+#else
#define CPU_CLOCK 48000000
+#endif
#undef CONFIG_HIBERNATE
#define CONFIG_SPI_CONTROLLER
diff --git a/baseboard/kukui/emmc.c b/baseboard/kukui/emmc.c
index 4735f4aea8..68953d8923 100644
--- a/baseboard/kukui/emmc.c
+++ b/baseboard/kukui/emmc.c
@@ -198,12 +198,21 @@ static void emmc_init_spi(void)
/* Enable clocks to SPI module */
STM32_RCC_APB2ENR |= STM32_RCC_PB2_SPI1;
#elif EMMC_SPI_PORT == 2
+#ifdef CHIP_FAMILY_STM32L4
+ /* Reset SPI */
+ STM32_RCC_APB1RSTR1 |= STM32_RCC_PB1_SPI2;
+ STM32_RCC_APB1RSTR1 &= ~STM32_RCC_PB1_SPI2;
+
+ /* Enable clocks to SPI module */
+ STM32_RCC_APB1ENR1 |= STM32_RCC_PB1_SPI2;
+#else
/* Reset SPI */
STM32_RCC_APB1RSTR |= STM32_RCC_PB1_SPI2;
STM32_RCC_APB1RSTR &= ~STM32_RCC_PB1_SPI2;
/* Enable clocks to SPI module */
STM32_RCC_APB1ENR |= STM32_RCC_PB1_SPI2;
+#endif
#else
#error "Please define EMMC_SPI_PORT in board.h."
#endif