From e2932310a58a3d2b2303024385401218078d5dc5 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Fri, 11 Jan 2019 18:37:08 -0700 Subject: exynos: Convert to use CONFIG_BLK Move all exynos boards over to use CONFIG_BLK. This converts s5p_goni also, but adding dummy functions for pinmux and peripheral ID. This will not function correctly, but gives the maintainer more time to convert the board if desired. Signed-off-by: Simon Glass Reviewed-by: Lukasz Majewski Reviewed-by: Minkyu Kang --- arch/arm/mach-exynos/Kconfig | 7 +++++++ arch/arm/mach-s5pc1xx/Kconfig | 2 ++ arch/arm/mach-s5pc1xx/Makefile | 1 + arch/arm/mach-s5pc1xx/pinmux.c | 20 ++++++++++++++++++++ 4 files changed, 30 insertions(+) create mode 100644 arch/arm/mach-s5pc1xx/pinmux.c (limited to 'arch') diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig index ed04369cfae..38077703621 100644 --- a/arch/arm/mach-exynos/Kconfig +++ b/arch/arm/mach-exynos/Kconfig @@ -8,6 +8,8 @@ config ARCH_EXYNOS4 bool "Exynos4 SoC family" select BOARD_EARLY_INIT_F select CPU_V7A + select BLK + select DM_MMC help Samsung Exynos4 SoC family are based on ARM Cortex-A9 CPU. There are multiple SoCs in this family including Exynos4210, Exynos4412, @@ -24,6 +26,9 @@ config ARCH_EXYNOS5 imply USB_ETHER_ASIX imply USB_ETHER_RTL8152 imply USB_ETHER_SMSC95XX + select BLK + select DM_MMC + help Samsung Exynos5 SoC family are based on ARM Cortex-A15 CPU (and Cortex-A7 CPU in big.LITTLE configuration). There are multiple SoCs @@ -33,6 +38,8 @@ config ARCH_EXYNOS7 bool "Exynos7 SoC family" select ARM64 select BOARD_EARLY_INIT_F + select BLK + select DM_MMC help Samsung Exynos7 SoC family are based on ARM Cortex-A57 CPU or Cortex-A53 CPU (and some in a big.LITTLE configuration). There are diff --git a/arch/arm/mach-s5pc1xx/Kconfig b/arch/arm/mach-s5pc1xx/Kconfig index 04acdaad79c..8cffced5512 100644 --- a/arch/arm/mach-s5pc1xx/Kconfig +++ b/arch/arm/mach-s5pc1xx/Kconfig @@ -7,6 +7,8 @@ choice config TARGET_S5P_GONI bool "S5P Goni board" select OF_CONTROL + select BLK + select DM_MMC config TARGET_SMDKC100 bool "Support smdkc100 board" diff --git a/arch/arm/mach-s5pc1xx/Makefile b/arch/arm/mach-s5pc1xx/Makefile index a4be3fcbdae..ab804604d54 100644 --- a/arch/arm/mach-s5pc1xx/Makefile +++ b/arch/arm/mach-s5pc1xx/Makefile @@ -10,3 +10,4 @@ obj-y = cache.o obj-y += reset.o obj-y += clock.o +obj-y += pinmux.o diff --git a/arch/arm/mach-s5pc1xx/pinmux.c b/arch/arm/mach-s5pc1xx/pinmux.c new file mode 100644 index 00000000000..818d75164de --- /dev/null +++ b/arch/arm/mach-s5pc1xx/pinmux.c @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Dummy functions to keep s5p_goni building (although it won't work) + * + * Copyright 2018 Google LLC + * Written by Simon Glass + */ + +#include +#include + +int exynos_pinmux_config(int peripheral, int flags) +{ + return 0; +} + +int pinmux_decode_periph_id(const void *blob, int node) +{ + return 0; +} -- cgit v1.3.1 From 8d135f5c6f6b52c3a3de4512d8f838a9dbb2f6b5 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Fri, 11 Jan 2019 18:37:10 -0700 Subject: spring: Update sound to use max98088 codec Update the spring settings to use this codec, which is what it actually shipped with. Signed-off-by: Simon Glass Reviewed-by: Lukasz Majewski --- arch/arm/dts/exynos5250-spring.dts | 36 ++++++++++++++++++------------------ configs/spring_defconfig | 1 + 2 files changed, 19 insertions(+), 18 deletions(-) (limited to 'arch') diff --git a/arch/arm/dts/exynos5250-spring.dts b/arch/arm/dts/exynos5250-spring.dts index 191e12af6a1..942f5027753 100644 --- a/arch/arm/dts/exynos5250-spring.dts +++ b/arch/arm/dts/exynos5250-spring.dts @@ -93,6 +93,22 @@ samsung,vbus-gpio = <&gpx2 7 GPIO_ACTIVE_HIGH>; }; + sound { + compatible = "google,spring-audio-max98088"; + + samsung,model = "Spring-I2S-MAX98088"; + samsung,audio-codec = <&max98088>; + codec-enable-gpio = <&gpx1 7 0>; + + cpu { + sound-dai = <&i2s1 0>; + }; + + codec { + sound-dai = <&max98088 0>; + }; + }; + spi@12d30000 { spi-max-frequency = <50000000>; firmware_storage_spi: flash@0 { @@ -638,27 +654,11 @@ }; }; - max98095: soundcodec@10 { + max98088: soundcodec@10 { reg = <0x10>; - compatible = "maxim,max98095"; + compatible = "maxim,max98088"; #sound-dai-cells = <1>; }; - - sound { - compatible = "google,spring-audio-max98095"; - - samsung,model = "Spring-I2S-MAX98095"; - samsung,audio-codec = <&max98095>; - - cpu { - sound-dai = <&i2s0 0>; - }; - - codec { - sound-dai = <&max98095 0>; - }; - }; - }; #include "cros-ec-keyboard.dtsi" diff --git a/configs/spring_defconfig b/configs/spring_defconfig index 5c5569acd23..c0084289d96 100644 --- a/configs/spring_defconfig +++ b/configs/spring_defconfig @@ -62,6 +62,7 @@ CONFIG_DEBUG_UART_S5P=y CONFIG_SOUND=y CONFIG_I2S=y CONFIG_I2S_SAMSUNG=y +CONFIG_SOUND_MAX98088=y CONFIG_SOUND_MAX98095=y CONFIG_SOUND_WM8994=y CONFIG_EXYNOS_SPI=y -- cgit v1.3.1 From f656daea64ed02f5732f633f13e46ae0eb45bb32 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Fri, 11 Jan 2019 18:37:11 -0700 Subject: spring: Update flashmap details Update the flashmap so that this board can be started over USB A-A. It is slightly different from snow. Signed-off-by: Simon Glass Reviewed-by: Lukasz Majewski --- arch/arm/dts/exynos5250-spring.dts | 41 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) (limited to 'arch') diff --git a/arch/arm/dts/exynos5250-spring.dts b/arch/arm/dts/exynos5250-spring.dts index 942f5027753..c7553208ade 100644 --- a/arch/arm/dts/exynos5250-spring.dts +++ b/arch/arm/dts/exynos5250-spring.dts @@ -40,9 +40,46 @@ reg = <0x40000000 0x80000000>; }; + iram { + reg = <0x02020000 0x60000>; + }; + + config { + samsung,bl1-offset = <0x1400>; + samsung,bl2-offset = <0x3400>; + u-boot-memory = "/memory"; + u-boot-offset = <0x3e00000 0x100000>; + }; + flash@0 { - spl { /* spl size override */ - size = <0x8000>; + reg = <0 0x100000>; + #address-cells = <1>; + #size-cells = <1>; + pre-boot { + label = "bl1 pre-boot"; + reg = <0 0x2000>; + read-only; + filename = "e5250.nbl1.bin"; + type = "blob exynos-bl1"; + required; + }; + + spl { + label = "bl2 spl"; + reg = <0x2000 0x8000>; + read-only; + filename = "bl2.bin"; + type = "blob exynos-bl2 boot,dtb"; + payload = "/flash/ro-boot"; + required; + }; + + ro-boot { + label = "u-boot"; + reg = <0xa000 0xb0000>; + read-only; + type = "blob boot,dtb"; + required; }; }; -- cgit v1.3.1 From e898799ce475735bed3ac80cbffac3f55c9f091e Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Fri, 11 Jan 2019 18:37:13 -0700 Subject: samsung: mmc: Drop old MMC init code Now that these boards use driver model we can drop the old code. At present s5p_mmc_init() is still used by goni and smdkv310 so cannot be removed unless we remove those boards. Signed-off-by: Simon Glass Reviewed-by: Lukasz Majewski Reviewed-by: Minkyu Kang --- arch/arm/mach-exynos/include/mach/mmc.h | 2 -- board/samsung/common/board.c | 38 ------------------------- drivers/mmc/s5p_sdhci.c | 50 --------------------------------- 3 files changed, 90 deletions(-) (limited to 'arch') diff --git a/arch/arm/mach-exynos/include/mach/mmc.h b/arch/arm/mach-exynos/include/mach/mmc.h index ca4e7eda342..eece44ea1aa 100644 --- a/arch/arm/mach-exynos/include/mach/mmc.h +++ b/arch/arm/mach-exynos/include/mach/mmc.h @@ -64,6 +64,4 @@ static inline int s5p_mmc_init(int index, int bus_width) return s5p_sdhci_init(base, index, bus_width); } -int exynos_mmc_init(const void *blob); - #endif diff --git a/board/samsung/common/board.c b/board/samsung/common/board.c index 3391228522c..96228a86a11 100644 --- a/board/samsung/common/board.c +++ b/board/samsung/common/board.c @@ -249,44 +249,6 @@ int board_eth_init(bd_t *bis) return 0; } -#ifdef CONFIG_MMC -static int init_mmc(void) -{ -#ifdef CONFIG_MMC_SDHCI - return exynos_mmc_init(gd->fdt_blob); -#else - return 0; -#endif -} - -static int init_dwmmc(void) -{ -#ifdef CONFIG_MMC_DW - return exynos_dwmmc_init(gd->fdt_blob); -#else - return 0; -#endif -} - -int board_mmc_init(bd_t *bis) -{ - int ret; - - if (get_boot_mode() == BOOT_MODE_SD) { - ret = init_mmc(); - ret |= init_dwmmc(); - } else { - ret = init_dwmmc(); - ret |= init_mmc(); - } - - if (ret) - debug("mmc init failed\n"); - - return ret; -} -#endif - #ifdef CONFIG_DISPLAY_BOARDINFO int checkboard(void) { diff --git a/drivers/mmc/s5p_sdhci.c b/drivers/mmc/s5p_sdhci.c index 591a3bce084..9dd0b865eb8 100644 --- a/drivers/mmc/s5p_sdhci.c +++ b/drivers/mmc/s5p_sdhci.c @@ -118,9 +118,6 @@ int s5p_sdhci_init(u32 regbase, int index, int bus_width) return s5p_sdhci_core_init(host); } -#if CONFIG_IS_ENABLED(OF_CONTROL) -struct sdhci_host sdhci_host[SDHCI_MAX_HOSTS]; - static int do_sdhci_init(struct sdhci_host *host) { int dev_id, flag, ret; @@ -191,53 +188,6 @@ static int sdhci_get_config(const void *blob, int node, struct sdhci_host *host) return 0; } -static int process_nodes(const void *blob, int node_list[], int count) -{ - struct sdhci_host *host; - int i, node, ret; - int failed = 0; - - debug("%s: count = %d\n", __func__, count); - - /* build sdhci_host[] for each controller */ - for (i = 0; i < count; i++) { - node = node_list[i]; - if (node <= 0) - continue; - - host = &sdhci_host[i]; - - ret = sdhci_get_config(blob, node, host); - if (ret) { - printf("%s: failed to decode dev %d (%d)\n", __func__, i, ret); - failed++; - continue; - } - - ret = do_sdhci_init(host); - if (ret && ret != -ENODEV) { - printf("%s: failed to initialize dev %d (%d)\n", __func__, i, ret); - failed++; - } - } - - /* we only consider it an error when all nodes fail */ - return (failed == count ? -1 : 0); -} - -int exynos_mmc_init(const void *blob) -{ - int count; - int node_list[SDHCI_MAX_HOSTS]; - - count = fdtdec_find_aliases_for_id(blob, "mmc", - COMPAT_SAMSUNG_EXYNOS_MMC, node_list, - SDHCI_MAX_HOSTS); - - return process_nodes(blob, node_list, count); -} -#endif - #ifdef CONFIG_DM_MMC static int s5p_sdhci_probe(struct udevice *dev) { -- cgit v1.3.1