Add U-Boot support for MediaTek SoCs - MT7623n & MT7629
Subsystems (11)
v3 cover Add U-Boot support for MediaTek SoCs - MT7623n & MT7629
Hello,
This is the new round to add U-Boot support for MediaTek SoCs - MT7623n & MT7629, and the most of the drivers are based on mainline Linux, such as clock, timer, mmc, pinctrl, watchdog, power domain and device tree.
Current implementation was validated via the FIT image.
Thanks,
Ryder
Ryder Lee (16):
tools: MediaTek: add MTK boot header generation to mkimage
arm: dts: MediaTek: add device tree for MT7629
arm: dts: MediaTek: add device tree for MT7623
arm: MediaTek: add basic support for MT7629 boards
clk: MediaTek: add clock driver for MT7629 SoC.
clk: MediaTek: add clock driver for MT7623 SoC.
timer: MediaTek: add timer driver for MediaTek SoCs
watchdog: MediaTek: add watchdog driver for MediaTek SoCs
pinctrl: MediaTek: add pinctrl driver for MT7629 SoC
pinctrl: MediaTek: add pinctrl driver for MT7623 SoC power domain: MediaTek: add power domain driver for MT7629 SoC power domain: MediaTek: add power domain driver for MT7623 SoC
serial: 16550: allow the driver to support MediaTek serial
ram: MediaTek: add DDR3 driver for MT7629 SoC
doc: README.mediatek: Add a simple README for MediaTek
MAINTAINERS: add an entry for MediaTek
Weijie Gao (2):
arm: MediaTek: add basic support for MT7623 boards
mmc: mtk-sd: add SD/MMC host controller driver for MT7623 SoC
MAINTAINERS | 20 + Makefile | 20 + arch/arm/Kconfig | 16 + arch/arm/Makefile | 1 + arch/arm/dts/Makefile | 4 + arch/arm/dts/mt7623.dtsi | 255 +++++ arch/arm/dts/mt7623n-bananapi-bpi-r2.dts | 207 ++++ arch/arm/dts/mt7629-rfb-u-boot.dtsi | 24 + arch/arm/dts/mt7629-rfb.dts | 70 ++ arch/arm/dts/mt7629.dtsi | 244 +++++ arch/arm/include/asm/arch-mediatek/gpio.h | 9 + arch/arm/include/asm/arch-mediatek/misc.h | 17 + arch/arm/mach-mediatek/Kconfig | 39 + arch/arm/mach-mediatek/Makefile | 7 + arch/arm/mach-mediatek/cpu.c | 34 + arch/arm/mach-mediatek/init.h | 11 + arch/arm/mach-mediatek/mt7623/Makefile | 4 + arch/arm/mach-mediatek/mt7623/init.c | 54 + arch/arm/mach-mediatek/mt7623/lowlevel_init.S | 22 + arch/arm/mach-mediatek/mt7623/preloader.h | 99 ++ arch/arm/mach-mediatek/mt7629/Makefile | 4 + arch/arm/mach-mediatek/mt7629/init.c | 128 +++ arch/arm/mach-mediatek/mt7629/lowlevel_init.S | 50 + arch/arm/mach-mediatek/spl.c | 43 + board/mediatek/mt7623/Kconfig | 13 + board/mediatek/mt7623/MAINTAINERS | 7 + board/mediatek/mt7623/Makefile | 3 + board/mediatek/mt7623/mt7623_rfb.c | 11 + board/mediatek/mt7629/Kconfig | 17 + board/mediatek/mt7629/MAINTAINERS | 7 + board/mediatek/mt7629/Makefile | 3 + board/mediatek/mt7629/mt7629_rfb.c | 11 + common/image.c | 1 + configs/mt7623n_bpir2_defconfig | 54 + configs/mt7629_rfb_defconfig | 73 ++ doc/README.mediatek | 54 + drivers/clk/Makefile | 1 + drivers/clk/mediatek/Makefile | 7 + drivers/clk/mediatek/clk-mt7623.c | 870 +++++++++++++++ drivers/clk/mediatek/clk-mt7629.c | 709 +++++++++++++ drivers/clk/mediatek/clk-mtk.c | 492 +++++++++ drivers/clk/mediatek/clk-mtk.h | 153 +++ drivers/mmc/Kconfig | 11 + drivers/mmc/Makefile | 1 + drivers/mmc/mtk-sd.c | 1394 +++++++++++++++++++++++++ drivers/pinctrl/Kconfig | 1 + drivers/pinctrl/Makefile | 1 + drivers/pinctrl/mediatek/Kconfig | 15 + drivers/pinctrl/mediatek/Makefile | 7 + drivers/pinctrl/mediatek/pinctrl-mt7623.c | 1284 +++++++++++++++++++++++ drivers/pinctrl/mediatek/pinctrl-mt7629.c | 471 +++++++++ drivers/pinctrl/mediatek/pinctrl-mtk-common.c | 552 ++++++++++ drivers/pinctrl/mediatek/pinctrl-mtk-common.h | 183 ++++ drivers/power/domain/Kconfig | 7 + drivers/power/domain/Makefile | 1 + drivers/power/domain/mtk-power-domain.c | 406 +++++++ drivers/ram/Makefile | 1 + drivers/ram/mediatek/Makefile | 7 + drivers/ram/mediatek/ddr3-mt7629.c | 766 ++++++++++++++ drivers/serial/ns16550.c | 10 + drivers/timer/Kconfig | 7 + drivers/timer/Makefile | 1 + drivers/timer/mtk_timer.c | 85 ++ drivers/watchdog/Kconfig | 8 + drivers/watchdog/Makefile | 1 + drivers/watchdog/mtk_wdt.c | 135 +++ include/configs/mt7623.h | 59 ++ include/configs/mt7629.h | 60 ++ include/dt-bindings/clock/mt7623-clk.h | 413 ++++++++ include/dt-bindings/clock/mt7629-clk.h | 206 ++++ include/dt-bindings/power/mt7623-power.h | 19 + include/dt-bindings/power/mt7629-power.h | 13 + include/image.h | 1 + scripts/Makefile.spl | 11 + tools/Makefile | 1 + tools/mtk_image.c | 749 +++++++++++++ tools/mtk_image.h | 199 ++++ 77 files changed, 10954 insertions(+) create mode 100644 arch/arm/dts/mt7623.dtsi create mode 100644 arch/arm/dts/mt7623n-bananapi-bpi-r2.dts create mode 100644 arch/arm/dts/mt7629-rfb-u-boot.dtsi create mode 100644 arch/arm/dts/mt7629-rfb.dts create mode 100644 arch/arm/dts/mt7629.dtsi create mode 100644 arch/arm/include/asm/arch-mediatek/gpio.h create mode 100644 arch/arm/include/asm/arch-mediatek/misc.h create mode 100644 arch/arm/mach-mediatek/Kconfig create mode 100644 arch/arm/mach-mediatek/Makefile create mode 100644 arch/arm/mach-mediatek/cpu.c create mode 100644 arch/arm/mach-mediatek/init.h create mode 100644 arch/arm/mach-mediatek/mt7623/Makefile create mode 100644 arch/arm/mach-mediatek/mt7623/init.c create mode 100644 arch/arm/mach-mediatek/mt7623/lowlevel_init.S create mode 100644 arch/arm/mach-mediatek/mt7623/preloader.h create mode 100644 arch/arm/mach-mediatek/mt7629/Makefile create mode 100644 arch/arm/mach-mediatek/mt7629/init.c create mode 100644 arch/arm/mach-mediatek/mt7629/lowlevel_init.S create mode 100644 arch/arm/mach-mediatek/spl.c create mode 100644 board/mediatek/mt7623/Kconfig create mode 100644 board/mediatek/mt7623/MAINTAINERS create mode 100644 board/mediatek/mt7623/Makefile create mode 100644 board/mediatek/mt7623/mt7623_rfb.c create mode 100644 board/mediatek/mt7629/Kconfig create mode 100644 board/mediatek/mt7629/MAINTAINERS create mode 100644 board/mediatek/mt7629/Makefile create mode 100644 board/mediatek/mt7629/mt7629_rfb.c create mode 100644 configs/mt7623n_bpir2_defconfig create mode 100644 configs/mt7629_rfb_defconfig create mode 100644 doc/README.mediatek create mode 100644 drivers/clk/mediatek/Makefile create mode 100644 drivers/clk/mediatek/clk-mt7623.c create mode 100644 drivers/clk/mediatek/clk-mt7629.c create mode 100644 drivers/clk/mediatek/clk-mtk.c create mode 100644 drivers/clk/mediatek/clk-mtk.h create mode 100644 drivers/mmc/mtk-sd.c create mode 100644 drivers/pinctrl/mediatek/Kconfig create mode 100644 drivers/pinctrl/mediatek/Makefile create mode 100644 drivers/pinctrl/mediatek/pinctrl-mt7623.c create mode 100644 drivers/pinctrl/mediatek/pinctrl-mt7629.c create mode 100644 drivers/pinctrl/mediatek/pinctrl-mtk-common.c create mode 100644 drivers/pinctrl/mediatek/pinctrl-mtk-common.h create mode 100644 drivers/power/domain/mtk-power-domain.c create mode 100644 drivers/ram/mediatek/Makefile create mode 100644 drivers/ram/mediatek/ddr3-mt7629.c create mode 100644 drivers/timer/mtk_timer.c create mode 100644 drivers/watchdog/mtk_wdt.c create mode 100644 include/configs/mt7623.h create mode 100644 include/configs/mt7629.h create mode 100644 include/dt-bindings/clock/mt7623-clk.h create mode 100644 include/dt-bindings/clock/mt7629-clk.h create mode 100644 include/dt-bindings/power/mt7623-power.h create mode 100644 include/dt-bindings/power/mt7629-power.h create mode 100644 tools/mtk_image.c create mode 100644 tools/mtk_image.h
Signature · 1 line
1.9.1
PATCH v3 1/18 tools: MediaTek: add MTK boot header generation to mkimage
This patch adds support for MTK boot image generation.
--- Makefile | 20 ++ common/image.c | 1 + include/image.h | 1 + scripts/Makefile.spl | 11 + tools/Makefile | 1 + tools/mtk_image.c | 749 +++++++++++++++++++++++++++++++++++++++++++++++++++ tools/mtk_image.h | 199 ++++++++++++++ 7 files changed, 982 insertions(+) create mode 100644 tools/mtk_image.c create mode 100644 tools/mtk_image.h
Makefile +20 -0
@@ -852,6 +852,8 @@ ALL-y += u-boot-tegra.bin u-boot-nodtb-tegra.bin ALL-$(CONFIG_OF_SEPARATE) += u-boot-dtb-tegra.bin endif +ALL-$(CONFIG_ARCH_MEDIATEK) += u-boot-mtk.bin + # Add optional build target if defined in board/cpu/soc headers ifneq ($(CONFIG_BUILD_TARGET),) ALL-y += $(CONFIG_BUILD_TARGET:"%"=%)
@@ -1359,6 +1361,24 @@ u-boot.elf: u-boot.bin $(Q)$(OBJCOPY) -I binary $(PLATFORM_ELFFLAGS) $< u-boot-elf.o $(call if_changed,u-boot-elf) +# MediaTek's ARM-based u-boot needs a header to contains its load address +# which is parsed by the BootROM. +# If the SPL build is enabled, the header will be added to the spl binary, +# and the spl binary and the u-boot.img will be combined into one file. +# Otherwise the header will be added to the u-boot.bin directly. + +ifeq ($(CONFIG_SPL),y) +u-boot-mtk.bin: u-boot.dtb u-boot.img spl/u-boot-spl-mtk.bin FORCE + $(call if_changed,binman) +else +MKIMAGEFLAGS_u-boot-mtk.bin = -T mtk_image \ + -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) \ + -n "$(patsubst "%",%,$(CONFIG_MTK_BROM_HEADER_INFO))" + +u-boot-mtk.bin: u-boot.bin FORCE + $(call if_changed,mkimage) +endif + ARCH_POSTLINK := $(wildcard $(srctree)/arch/$(ARCH)/Makefile.postlink) # Rule to link u-boot
common/image.c +1 -0
@@ -166,6 +166,7 @@ static const table_entry_t uimage_type[] = { { IH_TYPE_FIRMWARE_IVT, "firmware_ivt", "Firmware with HABv4 IVT" }, { IH_TYPE_PMMC, "pmmc", "TI Power Management Micro-Controller Firmware",}, { IH_TYPE_STM32IMAGE, "stm32image", "STMicroelectronics STM32 Image" }, + { IH_TYPE_MTKIMAGE, "mtk_image", "MeidaTek BootROM loadable Image" }, { -1, "", "", }, };
include/image.h +1 -0
@@ -278,6 +278,7 @@ enum {IH_TYPE_PMMC ,/* TI Power Management Micro-Controller Firmware */ IH_TYPE_STM32IMAGE ,/* STMicroelectronics STM32 Image */ IH_TYPE_SOCFPGAIMAGE_V1 ,/* Altera SOCFPGA A10 Preloader */ +IH_TYPE_MTKIMAGE ,/* MeidaTek BootROM loadable Image */ IH_TYPE_COUNT, /* Number of image types */ };
scripts/Makefile.spl +11 -0
@@ -219,6 +219,8 @@ ALL-$(CONFIG_SPL_X86_16BIT_INIT) += $(obj)/u-boot-x86-16bit-spl.bin ALL-$(CONFIG_ARCH_ZYNQ) += $(obj)/boot.bin ALL-$(CONFIG_ARCH_ZYNQMP) += $(obj)/boot.bin +ALL-$(CONFIG_ARCH_MEDIATEK) += $(obj)/u-boot-spl-mtk.bin + all: $(ALL-y) quiet_cmd_cat = CAT $@
@@ -349,6 +351,15 @@ cmd_sunxi_spl_image_builder = $(objtree)/tools/sunxi-spl-image-builder \ $(obj)/sunxi-spl-with-ecc.bin: $(obj)/sunxi-spl.bin $(call if_changed,sunxi_spl_image_builder) + +# MediaTek's specific SPL build +MKIMAGEFLAGS_u-boot-spl-mtk.bin = -T mtk_image \ + -a $(CONFIG_SPL_TEXT_BASE) -e $(CONFIG_SPL_TEXT_BASE) \ + -n "$(patsubst "%",%,$(CONFIG_MTK_BROM_HEADER_INFO))" + +$(obj)/u-boot-spl-mtk.bin: $(obj)/u-boot-spl.bin FORCE + $(call if_changed,mkimage) + # Rule to link u-boot-spl # May be overridden by arch/$(ARCH)/config.mk quiet_cmd_u-boot-spl ?= LD $@
tools/Makefile +1 -0
@@ -116,6 +116,7 @@ dumpimage-mkimage-objs := aisimage.o \ $(LIBFDT_OBJS) \ gpimage.o \ gpimage-common.o \ + mtk_image.o \ $(RSA_OBJS-y) dumpimage-objs := $(dumpimage-mkimage-objs) dumpimage.o
tools/mtk_image.c new file +749 -0
749 lines not on this page · raw message
tools/mtk_image.h new file +199 -0
199 lines not on this page · raw message
Signature · 1 line
1.9.1
PATCH v3 1/18 tools: MediaTek: add MTK boot header generation to mkimage
Quoted 4 lines · Ryder Lee
This patch adds support for MTK boot image generation.
Signed-off-by Weijie Gao <[email protected]>Signed-off-by Ryder Lee <[email protected]>
Quoted 11 lines
--- Makefile | 20 ++ common/image.c | 1 + include/image.h | 1 + scripts/Makefile.spl | 11 + tools/Makefile | 1 + tools/mtk_image.c | 749 +++++++++++++++++++++++++++++++++++++++++++++++++++ tools/mtk_image.h | 199 ++++++++++++++ 7 files changed, 982 insertions(+) create mode 100644 tools/mtk_image.c create mode 100644 tools/mtk_image.h
It would help to use patman so that we get a changelog on each patch.
PATCH v3 1/18 tools: MediaTek: add MTK boot header generation to mkimage
Quoted 17 lines · Simon Glass
Quoted 4 lines · Ryder Lee
This patch adds support for MTK boot image generation.
Signed-off-by Weijie Gao <[email protected]>Signed-off-by Ryder Lee <[email protected]>Quoted 11 lines
--- Makefile | 20 ++ common/image.c | 1 + include/image.h | 1 + scripts/Makefile.spl | 11 + tools/Makefile | 1 + tools/mtk_image.c | 749 +++++++++++++++++++++++++++++++++++++++++++++++++++ tools/mtk_image.h | 199 ++++++++++++++ 7 files changed, 982 insertions(+) create mode 100644 tools/mtk_image.c create mode 100644 tools/mtk_image.h
Quoted 3 lines
It would help to use patman so that we get a changelog on each patch.
Reviewed-by Simon Glass <[email protected]>
I forgot to add changelog on each patch. Sorry for the inconvenience.
Ryder
PATCH v3 2/18 arm: dts: MediaTek: add device tree for MT7629
In reply to Ryder LeeThis patch adds MT7629 device tree and the includes it needs.
--- arch/arm/dts/Makefile | 3 + arch/arm/dts/mt7629-rfb-u-boot.dtsi | 24 +++ arch/arm/dts/mt7629-rfb.dts | 70 +++++++++ arch/arm/dts/mt7629.dtsi | 244 +++++++++++++++++++++++++++++++ include/dt-bindings/clock/mt7629-clk.h | 206 ++++++++++++++++++++++++++ include/dt-bindings/power/mt7629-power.h | 13 ++ 6 files changed, 560 insertions(+) create mode 100644 arch/arm/dts/mt7629-rfb-u-boot.dtsi create mode 100644 arch/arm/dts/mt7629-rfb.dts create mode 100644 arch/arm/dts/mt7629.dtsi create mode 100644 include/dt-bindings/clock/mt7629-clk.h create mode 100644 include/dt-bindings/power/mt7629-power.h
arch/arm/dts/Makefile +3 -0
@@ -558,6 +558,9 @@ dtb-$(CONFIG_TARGET_STM32MP1) += \ dtb-$(CONFIG_SOC_K3_AM6) += k3-am654-base-board.dtb +dtb-$(CONFIG_ARCH_MEDIATEK) += \ + mt7629-rfb.dtb + targets += $(dtb-y) # Add any required device tree compiler flags here
arch/arm/dts/mt7629-rfb-u-boot.dtsi new file +24 -0
@@ -0,0 +1,24 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2018 MediaTek Inc. + * + * Author: Weijie Gao <[email protected]> + */ + +#include <config.h> +/ { + binman { + filename = "u-boot-mtk.bin"; + pad-byte = <0xff>; + +#ifdef CONFIG_SPL + blob { + filename = "spl/u-boot-spl-mtk.bin"; + size = <CONFIG_SPL_PAD_TO>; + }; + + u-boot-img { + }; +#endif + }; +};
arch/arm/dts/mt7629-rfb.dts new file +70 -0
70 lines not on this page · raw message
arch/arm/dts/mt7629.dtsi new file +244 -0
244 lines not on this page · raw message
include/dt-bindings/clock/mt7629-clk.h new file +206 -0
206 lines not on this page · raw message
include/dt-bindings/power/mt7629-power.h new file +13 -0
@@ -0,0 +1,13 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* +* Copyright (C) 2018 MediaTek Inc. +*/ + +#ifndef _DT_BINDINGS_MT7629_POWER_H +#define _DT_BINDINGS_MT7629_POWER_H + +#define MT7629_POWER_DOMAIN_ETHSYS 0 +#define MT7629_POWER_DOMAIN_HIF0 1 +#define MT7629_POWER_DOMAIN_HIF1 2 + +#endif /* _DT_BINDINGS_MT7629_POWER_H */
Signature · 1 line
1.9.1
PATCH v3 3/18 arm: dts: MediaTek: add device tree for MT7623
In reply to Ryder LeeThis adds device tree for MT7623 development board - Bananapi R2 Detailed hardware information for BPI-R2 which could be found on
http://wiki.banana-pi.org/Banana_Pi_BPI-R2.
--- arch/arm/dts/Makefile | 1 + arch/arm/dts/mt7623.dtsi | 255 +++++++++++++++++++ arch/arm/dts/mt7623n-bananapi-bpi-r2.dts | 207 ++++++++++++++++ include/dt-bindings/clock/mt7623-clk.h | 413 +++++++++++++++++++++++++++++++ include/dt-bindings/power/mt7623-power.h | 19 ++ 5 files changed, 895 insertions(+) create mode 100644 arch/arm/dts/mt7623.dtsi create mode 100644 arch/arm/dts/mt7623n-bananapi-bpi-r2.dts create mode 100644 include/dt-bindings/clock/mt7623-clk.h create mode 100644 include/dt-bindings/power/mt7623-power.h
arch/arm/dts/Makefile +1 -0
@@ -559,6 +559,7 @@ dtb-$(CONFIG_TARGET_STM32MP1) += \ dtb-$(CONFIG_SOC_K3_AM6) += k3-am654-base-board.dtb dtb-$(CONFIG_ARCH_MEDIATEK) += \ + mt7623n-bananapi-bpi-r2.dtb \ mt7629-rfb.dtb targets += $(dtb-y)
arch/arm/dts/mt7623.dtsi new file +255 -0
255 lines not on this page · raw message
arch/arm/dts/mt7623n-bananapi-bpi-r2.dts new file +207 -0
207 lines not on this page · raw message
include/dt-bindings/clock/mt7623-clk.h new file +413 -0
413 lines not on this page · raw message
include/dt-bindings/power/mt7623-power.h new file +19 -0
@@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* +* Copyright (C) 2018 MediaTek Inc. +*/ + +#ifndef _DT_BINDINGS_MT7623_POWER_H +#define _DT_BINDINGS_MT7623_POWER_H + +#define MT7623_POWER_DOMAIN_CONN 0 +#define MT7623_POWER_DOMAIN_DISP 1 +#define MT7623_POWER_DOMAIN_MFG 2 +#define MT7623_POWER_DOMAIN_VDEC 3 +#define MT7623_POWER_DOMAIN_ISP 4 +#define MT7623_POWER_DOMAIN_BDP 5 +#define MT7623_POWER_DOMAIN_ETH 6 +#define MT7623_POWER_DOMAIN_HIF 7 +#define MT7623_POWER_DOMAIN_IFR_MSC 8 + +#endif /* _DT_BINDINGS_MT7623_POWER_H */
Signature · 1 line
1.9.1
PATCH v3 4/18 arm: MediaTek: add basic support for MT7629 boards
In reply to Ryder LeeThis adds a general board file based on MT7629 SoCs from MediaTek.
Apart from the generic parts (cpu) we add some low level init codes and initialize the early clocks.
--- arch/arm/Kconfig | 16 ++++ arch/arm/Makefile | 1 + arch/arm/include/asm/arch-mediatek/misc.h | 17 ++++ arch/arm/mach-mediatek/Kconfig | 26 ++++++ arch/arm/mach-mediatek/Makefile | 6 ++ arch/arm/mach-mediatek/cpu.c | 34 +++++++ arch/arm/mach-mediatek/init.h | 11 +++ arch/arm/mach-mediatek/mt7629/Makefile | 4 + arch/arm/mach-mediatek/mt7629/init.c | 128 ++++++++++++++++++++++++++ arch/arm/mach-mediatek/mt7629/lowlevel_init.S | 50 ++++++++++ arch/arm/mach-mediatek/spl.c | 43 +++++++++ board/mediatek/mt7629/Kconfig | 17 ++++ board/mediatek/mt7629/MAINTAINERS | 7 ++ board/mediatek/mt7629/Makefile | 3 + board/mediatek/mt7629/mt7629_rfb.c | 11 +++ configs/mt7629_rfb_defconfig | 73 +++++++++++++++ include/configs/mt7629.h | 60 ++++++++++++ 17 files changed, 507 insertions(+) create mode 100644 arch/arm/include/asm/arch-mediatek/misc.h create mode 100644 arch/arm/mach-mediatek/Kconfig create mode 100644 arch/arm/mach-mediatek/Makefile create mode 100644 arch/arm/mach-mediatek/cpu.c create mode 100644 arch/arm/mach-mediatek/init.h create mode 100644 arch/arm/mach-mediatek/mt7629/Makefile create mode 100644 arch/arm/mach-mediatek/mt7629/init.c create mode 100644 arch/arm/mach-mediatek/mt7629/lowlevel_init.S create mode 100644 arch/arm/mach-mediatek/spl.c create mode 100644 board/mediatek/mt7629/Kconfig create mode 100644 board/mediatek/mt7629/MAINTAINERS create mode 100644 board/mediatek/mt7629/Makefile create mode 100644 board/mediatek/mt7629/mt7629_rfb.c create mode 100644 configs/mt7629_rfb_defconfig create mode 100644 include/configs/mt7629.h
arch/arm/Kconfig +16 -0
@@ -658,6 +658,20 @@ config ARCH_MESON targeted at media players and tablet computers. We currently support the S905 (GXBaby) 64-bit SoC. +config ARCH_MEDIATEK + bool "MediaTek SoCs" + select BINMAN + select DM + select OF_CONTROL + select SPL_DM if SPL + select SPL_LIBCOMMON_SUPPORT if SPL + select SPL_LIBGENERIC_SUPPORT if SPL + select SPL_OF_CONTROL if SPL + select SUPPORT_SPL + help + Support for the MediaTek SoCs family developed by MediaTek Inc. + Please refer to doc/README.mediatek for more information. + config ARCH_LPC32XX bool "NXP LPC32xx platform" select CPU_ARM926EJS
@@ -1442,6 +1456,8 @@ source "arch/arm/mach-rmobile/Kconfig" source "arch/arm/mach-meson/Kconfig" +source "arch/arm/mach-mediatek/Kconfig" + source "arch/arm/mach-qemu/Kconfig" source "arch/arm/mach-rockchip/Kconfig"
arch/arm/Makefile +1 -0
@@ -62,6 +62,7 @@ machine-$(CONFIG_ARCH_K3) += k3 machine-$(CONFIG_ARCH_KEYSTONE) += keystone # TODO: rename CONFIG_KIRKWOOD -> CONFIG_ARCH_KIRKWOOD machine-$(CONFIG_KIRKWOOD) += kirkwood +machine-$(CONFIG_ARCH_MEDIATEK) += mediatek machine-$(CONFIG_ARCH_MESON) += meson machine-$(CONFIG_ARCH_MVEBU) += mvebu # TODO: rename CONFIG_TEGRA -> CONFIG_ARCH_TEGRA
arch/arm/include/asm/arch-mediatek/misc.h new file +17 -0
@@ -0,0 +1,17 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* +* Copyright (C) 2018 MediaTek Inc. +*/ + +#ifndef __MEDIATEK_MISC_H_ +#define __MEDIATEK_MISC_H_ + +#define VER_BASE 0x08000000 +#define VER_SIZE 0x10 + +#define APHW_CODE 0x00 +#define APHW_SUBCODE 0x04 +#define APHW_VER 0x08 +#define APSW_VER 0x0c + +#endif /* __MEDIATEK_MISC_H_ */
arch/arm/mach-mediatek/Kconfig new file +26 -0
@@ -0,0 +1,26 @@ +if ARCH_MEDIATEK + +config SYS_SOC + default "mediatek" + +config SYS_VENDOR + default "mediatek" + +choice + prompt "MediaTek board select" + +config TARGET_MT7629 + bool "MediaTek MT7629 SoC" + select CPU_V7A + select SPL + select ARCH_MISC_INIT + help + The MediaTek MT7629 is a ARM-based SoC with a dual-core Cortex-A7 + including DDR3, crypto engine, 3x3 11n/ac Wi-Fi, Gigabit Ethernet, + switch, USB3.0, PCIe, UART, SPI, I2C and PWM. + +endchoice + +source "board/mediatek/mt7629/Kconfig" + +endif
arch/arm/mach-mediatek/Makefile new file +6 -0
@@ -0,0 +1,6 @@ +# SPDX-License-Identifier: GPL-2.0 + +obj-y += cpu.o +obj-$(CONFIG_SPL_BUILD) += spl.o + +obj-$(CONFIG_TARGET_MT7629) += mt7629/
arch/arm/mach-mediatek/cpu.c new file +34 -0
@@ -0,0 +1,34 @@ +// SPDX-License-Identifier: GPL-2.0 +/* +* Copyright (C) 2018 MediaTek Inc. +*/ + +#include <common.h> +#include <dm.h> +#include <wdt.h> +#include <dm/uclass-internal.h> + +int arch_misc_init (void ) +{ +struct udevice *wdt; +int ret; + + ret =uclass_first_device_err (UCLASS_WDT , &wdt); +if (!ret) +wdt_stop (wdt); + +return 0 ; +} + +int arch_cpu_init (void ) +{ +icache_enable (); + +return 0 ; +} + +void enable_caches (void ) +{ +/* Enable D-cache. I-cache is already enabled in start.S */ +dcache_enable (); +}
arch/arm/mach-mediatek/init.h new file +11 -0
@@ -0,0 +1,11 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* +* Copyright (C) 2018 MediaTek Inc. +*/ + +#ifndef __MEDIATEK_INIT_H_ +#define __MEDIATEK_INIT_H_ + +extern int mtk_soc_early_init (void ); + +#endif /* __MEDIATEK_INIT_H_ */
arch/arm/mach-mediatek/mt7629/Makefile new file +4 -0
@@ -0,0 +1,4 @@ +# SPDX-License-Identifier: GPL-2.0 + +obj-y += init.o +obj-y += lowlevel_init.o
arch/arm/mach-mediatek/mt7629/init.c new file +128 -0
128 lines not on this page · raw message
arch/arm/mach-mediatek/mt7629/lowlevel_init.S new file +50 -0
50 lines not on this page · raw message
arch/arm/mach-mediatek/spl.c new file +43 -0
43 lines not on this page · raw message
board/mediatek/mt7629/Kconfig new file +17 -0
@@ -0,0 +1,17 @@ +if TARGET_MT7629 + +config SYS_BOARD + default "mt7629" + +config SYS_CONFIG_NAME + default "mt7629" + +config MTK_SPL_PAD_SIZE + hex + default 0x10000 + +config MTK_BROM_HEADER_INFO + string + default "media=nor" + +endif
board/mediatek/mt7629/MAINTAINERS new file +7 -0
@@ -0,0 +1,7 @@ +MT7629 +M: Ryder Lee <[email protected]> +M: Weijie Gao <[email protected]> +S: Maintained +F: board/mediatek/mt7629 +F: include/configs/mt7629.h +F: configs/mt7629_rfb_defconfig
board/mediatek/mt7629/Makefile new file +3 -0
@@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-2.0 + +obj-y += mt7629_rfb.o
board/mediatek/mt7629/mt7629_rfb.c new file +11 -0
@@ -0,0 +1,11 @@ +// SPDX-License-Identifier: GPL-2.0 +/* +* Copyright (C) 2018 MediaTek Inc. +*/ + +#include <common.h> + +int board_init (void ) +{ +return 0 ; +}
configs/mt7629_rfb_defconfig new file +73 -0
73 lines not on this page · raw message
include/configs/mt7629.h new file +60 -0
60 lines not on this page · raw message
Signature · 1 line
1.9.1
PATCH v3 4/18 arm: MediaTek: add basic support for MT7629 boards
Quoted 33 lines · Ryder Lee
This adds a general board file based on MT7629 SoCs from MediaTek.
Apart from the generic parts (cpu) we add some low level init codes and initialize the early clocks.
Signed-off-by Ryder Lee <[email protected]>Signed-off-by Weijie Gao <[email protected]>--- arch/arm/Kconfig | 16 ++++ arch/arm/Makefile | 1 + arch/arm/include/asm/arch-mediatek/misc.h | 17 ++++ arch/arm/mach-mediatek/Kconfig | 26 ++++++ arch/arm/mach-mediatek/Makefile | 6 ++ arch/arm/mach-mediatek/cpu.c | 34 +++++++ arch/arm/mach-mediatek/init.h | 11 +++ arch/arm/mach-mediatek/mt7629/Makefile | 4 + arch/arm/mach-mediatek/mt7629/init.c | 128 ++++++++++++++++++++++++++ arch/arm/mach-mediatek/mt7629/lowlevel_init.S | 50 ++++++++++ arch/arm/mach-mediatek/spl.c | 43 +++++++++ board/mediatek/mt7629/Kconfig | 17 ++++ board/mediatek/mt7629/MAINTAINERS | 7 ++ board/mediatek/mt7629/Makefile | 3 + board/mediatek/mt7629/mt7629_rfb.c | 11 +++ configs/mt7629_rfb_defconfig | 73 +++++++++++++++ include/configs/mt7629.h | 60 ++++++++++++ 17 files changed, 507 insertions(+) create mode 100644 arch/arm/include/asm/arch-mediatek/misc.h create mode 100644 arch/arm/mach-mediatek/Kconfig create mode 100644 arch/arm/mach-mediatek/Makefile create mode 100644 arch/arm/mach-mediatek/cpu.c create mode 100644 arch/arm/mach-mediatek/init.h create mode 100644 arch/arm/mach-mediatek/mt7629/Makefile create mode 100644 arch/arm/mach-mediatek/mt7629/init.c
Quoted 9 lines
create mode 100644 arch/arm/mach-mediatek/mt7629/lowlevel_init.S create mode 100644 arch/arm/mach-mediatek/spl.c create mode 100644 board/mediatek/mt7629/Kconfig create mode 100644 board/mediatek/mt7629/MAINTAINERS create mode 100644 board/mediatek/mt7629/Makefile create mode 100644 board/mediatek/mt7629/mt7629_rfb.c create mode 100644 configs/mt7629_rfb_defconfig create mode 100644 include/configs/mt7629.h
PATCH v3 5/18 arm: MediaTek: add basic support for MT7623 boards
In reply to Ryder LeeFrom: Weijie Gao <[email protected]>
This adds a general board file based on MT7623 SoCs from MediaTek.
As this u-boot is loaded by MTK proprietary preloader, there is no low level initializtion codes.
--- arch/arm/mach-mediatek/Kconfig | 13 ++++ arch/arm/mach-mediatek/Makefile | 1 + arch/arm/mach-mediatek/mt7623/Makefile | 4 ++ arch/arm/mach-mediatek/mt7623/init.c | 54 +++++++++++++++ arch/arm/mach-mediatek/mt7623/lowlevel_init.S | 22 ++++++ arch/arm/mach-mediatek/mt7623/preloader.h | 99 +++++++++++++++++++++++++++ board/mediatek/mt7623/Kconfig | 13 ++++ board/mediatek/mt7623/MAINTAINERS | 7 ++ board/mediatek/mt7623/Makefile | 3 + board/mediatek/mt7623/mt7623_rfb.c | 11 +++ configs/mt7623n_bpir2_defconfig | 54 +++++++++++++++ include/configs/mt7623.h | 59 ++++++++++++++++ 12 files changed, 340 insertions(+) create mode 100644 arch/arm/mach-mediatek/mt7623/Makefile create mode 100644 arch/arm/mach-mediatek/mt7623/init.c create mode 100644 arch/arm/mach-mediatek/mt7623/lowlevel_init.S create mode 100644 arch/arm/mach-mediatek/mt7623/preloader.h create mode 100644 board/mediatek/mt7623/Kconfig create mode 100644 board/mediatek/mt7623/MAINTAINERS create mode 100644 board/mediatek/mt7623/Makefile create mode 100644 board/mediatek/mt7623/mt7623_rfb.c create mode 100644 configs/mt7623n_bpir2_defconfig create mode 100644 include/configs/mt7623.h
arch/arm/mach-mediatek/Kconfig +13 -0
@@ -9,6 +9,18 @@ config SYS_VENDOR choice prompt "MediaTek board select" +config TARGET_MT7623 + bool "MediaTek MT7623 SoC" + select CPU_V7A + select ARCH_MISC_INIT + help + The MediaTek MT7623 is a ARM-based SoC with a quad-core Cortex-A7 + including NEON and GPU, Mali-450 graphics, several DDR3 options, + crypto engine, built-in Wi-Fi / Bluetooth combo chip, JPEG decoder, + video interfaces supporting HDMI and MIPI, and video codec support. + Peripherals include Gigabit Ethernet, switch, USB3.0 and OTG, PCIe, + I2S, PCM, S/PDIF, UART, SPI, I2C, IR TX/RX, and PWM. + config TARGET_MT7629 bool "MediaTek MT7629 SoC" select CPU_V7A
@@ -21,6 +33,7 @@ config TARGET_MT7629 endchoice +source "board/mediatek/mt7623/Kconfig" source "board/mediatek/mt7629/Kconfig" endif
arch/arm/mach-mediatek/Makefile +1 -0
@@ -3,4 +3,5 @@ obj-y += cpu.o obj-$(CONFIG_SPL_BUILD) += spl.o +obj-$(CONFIG_TARGET_MT7623) += mt7623/ obj-$(CONFIG_TARGET_MT7629) += mt7629/
arch/arm/mach-mediatek/mt7623/Makefile new file +4 -0
@@ -0,0 +1,4 @@ +# SPDX-License-Identifier: GPL-2.0 + +obj-y += init.o +obj-y += lowlevel_init.o
arch/arm/mach-mediatek/mt7623/init.c new file +54 -0
54 lines not on this page · raw message
arch/arm/mach-mediatek/mt7623/lowlevel_init.S new file +22 -0
@@ -0,0 +1,22 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2018 MediaTek Inc. + */ + +#include <linux/linkage.h> + +.extern preloader_param + +ENTRY(save_boot_params) + ldr r6, =preloader_param + str r4, [r6] + b save_boot_params_ret +ENDPROC(save_boot_params) + +ENTRY(lowlevel_init) + /* enable SMP bit */ + mrc p15, 0, r0, c1, c0, 1 + orr r0, r0, #0x40 + mcr p15, 0, r0, c1, c0, 1 + mov pc, lr +ENDPROC(lowlevel_init)
arch/arm/mach-mediatek/mt7623/preloader.h new file +99 -0
99 lines not on this page · raw message
board/mediatek/mt7623/Kconfig new file +13 -0
@@ -0,0 +1,13 @@ +if TARGET_MT7623 + +config SYS_BOARD + default "mt7623" + +config SYS_CONFIG_NAME + default "mt7623" + +config MTK_BROM_HEADER_INFO + string + default "lk=1" + +endif
board/mediatek/mt7623/MAINTAINERS new file +7 -0
@@ -0,0 +1,7 @@ +MT7623 +M: Ryder Lee <[email protected]> +M: Weijie Gao <[email protected]> +S: Maintained +F: board/mediatek/mt7623 +F: include/configs/mt7623.h +F: configs/mt7623n_bpir2_defconfig
board/mediatek/mt7623/Makefile new file +3 -0
@@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-2.0 + +obj-y += mt7623_rfb.o
board/mediatek/mt7623/mt7623_rfb.c new file +11 -0
@@ -0,0 +1,11 @@ +// SPDX-License-Identifier: GPL-2.0 +/* +* Copyright (C) 2018 MediaTek Inc. +*/ + +#include <common.h> + +int board_init (void ) +{ +return 0 ; +}
configs/mt7623n_bpir2_defconfig new file +54 -0
54 lines not on this page · raw message
include/configs/mt7623.h new file +59 -0
59 lines not on this page · raw message
Signature · 1 line
1.9.1
PATCH v3 6/18 clk: MediaTek: add clock driver for MT7629 SoC.
In reply to Ryder LeeThis patch adds clock modules for MediaTek SoCs:
- Shared part: a common driver which contains the general operations for plls, muxes, dividers and gates so that we can reuse it in future.
- Specific SoC part: the group of structures used to hold the hardware configuration for each SoC.
We take MT7629 as an example to demonstrate how to implement driver if any other MediaTek chips would like to use it.
--- drivers/clk/Makefile | 1 + drivers/clk/mediatek/Makefile | 6 + drivers/clk/mediatek/clk-mt7629.c | 709 ++++++++++++++++++++++++++++++++++++++ drivers/clk/mediatek/clk-mtk.c | 492 ++++++++++++++++++++++++++ drivers/clk/mediatek/clk-mtk.h | 153 ++++++++ 5 files changed, 1361 insertions(+) create mode 100644 drivers/clk/mediatek/Makefile create mode 100644 drivers/clk/mediatek/clk-mt7629.c create mode 100644 drivers/clk/mediatek/clk-mtk.c create mode 100644 drivers/clk/mediatek/clk-mtk.h
drivers/clk/Makefile +1 -0
@@ -10,6 +10,7 @@ obj-y += imx/ obj-y += tegra/ obj-$(CONFIG_ARCH_ASPEED) += aspeed/ obj-$(CONFIG_ARCH_MESON) += clk_meson.o +obj-$(CONFIG_ARCH_MEDIATEK) += mediatek/ obj-$(CONFIG_ARCH_ROCKCHIP) += rockchip/ obj-$(CONFIG_ARCH_SOCFPGA) += altera/ obj-$(CONFIG_CLK_AT91) += at91/
drivers/clk/mediatek/Makefile new file +6 -0
@@ -0,0 +1,6 @@ +# SPDX-License-Identifier: GPL-2.0 +# Core +obj-$(CONFIG_ARCH_MEDIATEK) += clk-mtk.o + +# SoC Drivers +obj-$(CONFIG_TARGET_MT7629) += clk-mt7629.o
drivers/clk/mediatek/clk-mt7629.c new file +709 -0
709 lines not on this page · raw message
drivers/clk/mediatek/clk-mtk.c new file +492 -0
492 lines not on this page · raw message
drivers/clk/mediatek/clk-mtk.h new file +153 -0
153 lines not on this page · raw message
Signature · 1 line
1.9.1
PATCH v3 6/18 clk: MediaTek: add clock driver for MT7629 SoC.
Hi Ryder,
Quoted 11 lines · Ryder Lee
This patch adds clock modules for MediaTek SoCs:
- Shared part: a common driver which contains the general operations for plls, muxes, dividers and gates so that we can reuse it in future.- Specific SoC part: the group of structures used to hold the hardware configuration for each SoC.
We take MT7629 as an example to demonstrate how to implement driver if any other MediaTek chips would like to use it.
Signed-off-by Ryder Lee <[email protected]>
Quoted 11 lines
--- drivers/clk/Makefile | 1 + drivers/clk/mediatek/Makefile | 6 + drivers/clk/mediatek/clk-mt7629.c | 709 ++++++++++++++++++++++++++++++++++++++ drivers/clk/mediatek/clk-mtk.c | 492 ++++++++++++++++++++++++++ drivers/clk/mediatek/clk-mtk.h | 153 ++++++++ 5 files changed, 1361 insertions(+) create mode 100644 drivers/clk/mediatek/Makefile create mode 100644 drivers/clk/mediatek/clk-mt7629.c create mode 100644 drivers/clk/mediatek/clk-mtk.c create mode 100644 drivers/clk/mediatek/clk-mtk.h
Please add coments to the structs and functions in the header file. Also put a _common prefix on the functions that are called from other files.
Otherwise:
Regards,
Simon
PATCH v3 6/18 clk: MediaTek: add clock driver for MT7629 SoC.
Quoted 30 lines · Simon Glass
Hi Ryder,
Quoted 11 lines · Ryder Lee
This patch adds clock modules for MediaTek SoCs:
- Shared part: a common driver which contains the general operations for plls, muxes, dividers and gates so that we can reuse it in future.- Specific SoC part: the group of structures used to hold the hardware configuration for each SoC.
We take MT7629 as an example to demonstrate how to implement driver if any other MediaTek chips would like to use it.
Signed-off-by Ryder Lee <[email protected]>Quoted 11 lines
--- drivers/clk/Makefile | 1 + drivers/clk/mediatek/Makefile | 6 + drivers/clk/mediatek/clk-mt7629.c | 709 ++++++++++++++++++++++++++++++++++++++ drivers/clk/mediatek/clk-mtk.c | 492 ++++++++++++++++++++++++++ drivers/clk/mediatek/clk-mtk.h | 153 ++++++++ 5 files changed, 1361 insertions(+) create mode 100644 drivers/clk/mediatek/Makefile create mode 100644 drivers/clk/mediatek/clk-mt7629.c create mode 100644 drivers/clk/mediatek/clk-mtk.c create mode 100644 drivers/clk/mediatek/clk-mtk.hPlease add coments to the structs and functions in the header file. Also put a
_commonprefix on the functions that are called from other files.
Quoted 6 lines
Otherwise:
Reviewed-by Simon Glass <[email protected]>Regards,
Simon
Got it. I will send a new series soon.
Ryder
PATCH v3 7/18 clk: MediaTek: add clock driver for MT7623 SoC.
In reply to Ryder LeeThis patch adds a driver for MT7623 clock blocks.
--- drivers/clk/mediatek/Makefile | 1 + drivers/clk/mediatek/clk-mt7623.c | 870 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 871 insertions(+) create mode 100644 drivers/clk/mediatek/clk-mt7623.c
drivers/clk/mediatek/Makefile +1 -0
@@ -3,4 +3,5 @@ obj-$(CONFIG_ARCH_MEDIATEK) += clk-mtk.o # SoC Drivers +obj-$(CONFIG_TARGET_MT7623) += clk-mt7623.o obj-$(CONFIG_TARGET_MT7629) += clk-mt7629.o
drivers/clk/mediatek/clk-mt7623.c new file +870 -0
870 lines not on this page · raw message
Signature · 1 line
1.9.1
PATCH v3 8/18 timer: MediaTek: add timer driver for MediaTek SoCs
In reply to Ryder LeeThis patch adds clock source and clock event for the timer found on the Mediatek SoCs.
--- drivers/timer/Kconfig | 7 ++++ drivers/timer/Makefile | 1 + drivers/timer/mtk_timer.c | 85 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 93 insertions(+) create mode 100644 drivers/timer/mtk_timer.c
drivers/timer/Kconfig +7 -0
@@ -160,4 +160,11 @@ config MPC83XX_TIMER Select this to enable support for the timer found on devices based on the MPC83xx family of SoCs. +config MTK_TIMER + bool "MediaTek timer support" + depends on TIMER + help + Select this to enable support for the timer found on + MediaTek devices. + endmenu
drivers/timer/Makefile +1 -0
@@ -18,3 +18,4 @@ obj-$(CONFIG_SANDBOX_TIMER) += sandbox_timer.o obj-$(CONFIG_STI_TIMER) += sti-timer.o obj-$(CONFIG_STM32_TIMER) += stm32_timer.o obj-$(CONFIG_X86_TSC_TIMER) += tsc_timer.o +obj-$(CONFIG_MTK_TIMER) += mtk_timer.o
drivers/timer/mtk_timer.c new file +85 -0
85 lines not on this page · raw message
Signature · 1 line
1.9.1
PATCH v3 9/18 watchdog: MediaTek: add watchdog driver for MediaTek SoCs
In reply to Ryder LeeThis patch adds a common driver for the Mediatek SoC integrated watchdog.
--- drivers/watchdog/Kconfig | 8 +++ drivers/watchdog/Makefile | 1 + drivers/watchdog/mtk_wdt.c | 135 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 144 insertions(+) create mode 100644 drivers/watchdog/mtk_wdt.c
drivers/watchdog/Kconfig +8 -0
@@ -103,6 +103,14 @@ config WDT_CDNS Select this to enable Cadence watchdog timer, which can be found on some Xilinx Microzed Platform. +config WDT_MTK + bool "MediaTek watchdog timer support" + depends on WDT && ARCH_MEDIATEK + help + Select this to enable watchdog timer for MediaTek SoCs. + The watchdog timer is stopped when initialized. + It performs full SoC reset. + config XILINX_TB_WATCHDOG bool "Xilinx Axi watchdog timer support" depends on WDT
drivers/watchdog/Makefile +1 -0
@@ -23,3 +23,4 @@ obj-$(CONFIG_BCM2835_WDT) += bcm2835_wdt.o obj-$(CONFIG_WDT_ORION) += orion_wdt.o obj-$(CONFIG_WDT_CDNS) += cdns_wdt.o obj-$(CONFIG_MPC8xx_WATCHDOG) += mpc8xx_wdt.o +obj-$(CONFIG_WDT_MTK) += mtk_wdt.o
drivers/watchdog/mtk_wdt.c new file +135 -0
135 lines not on this page · raw message
Signature · 1 line
1.9.1
PATCH v3 10/18 pinctrl: MediaTek: add pinctrl driver for MT7629 SoC
In reply to Ryder LeeThis patch adds pinctrl support for MT7629 SoC. The IO core found on the SoC has the registers for pinctrl, pinconf and gpio mixed up in the same register range. Hence the driver also implements the gpio functionality through UCLASS_GPIO.
This also creates a common file as there might be other chips that use the same binding and driver, then being a little more abstract could help in the long run.
--- arch/arm/include/asm/arch-mediatek/gpio.h | 9 + drivers/pinctrl/Kconfig | 1 + drivers/pinctrl/Makefile | 1 + drivers/pinctrl/mediatek/Kconfig | 11 + drivers/pinctrl/mediatek/Makefile | 6 + drivers/pinctrl/mediatek/pinctrl-mt7629.c | 471 ++++++++++++++++++++++ drivers/pinctrl/mediatek/pinctrl-mtk-common.c | 552 ++++++++++++++++++++++++++ drivers/pinctrl/mediatek/pinctrl-mtk-common.h | 182 +++++++++ 8 files changed, 1233 insertions(+) create mode 100644 arch/arm/include/asm/arch-mediatek/gpio.h create mode 100644 drivers/pinctrl/mediatek/Kconfig create mode 100644 drivers/pinctrl/mediatek/Makefile create mode 100644 drivers/pinctrl/mediatek/pinctrl-mt7629.c create mode 100644 drivers/pinctrl/mediatek/pinctrl-mtk-common.c create mode 100644 drivers/pinctrl/mediatek/pinctrl-mtk-common.h
arch/arm/include/asm/arch-mediatek/gpio.h new file +9 -0
@@ -0,0 +1,9 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* +* Copyright (C) 2018 MediaTek Inc. +*/ + +#ifndef __MEDIATEK_GPIO_H +#define __MEDIATEK_GPIO_H + +#endif /* __MEDIATEK_GPIO_H */
drivers/pinctrl/Kconfig +1 -0
@@ -301,6 +301,7 @@ config ASPEED_AST2500_PINCTRL endif source "drivers/pinctrl/meson/Kconfig" +source "drivers/pinctrl/mediatek/Kconfig" source "drivers/pinctrl/nxp/Kconfig" source "drivers/pinctrl/renesas/Kconfig" source "drivers/pinctrl/uniphier/Kconfig"
drivers/pinctrl/Makefile +1 -0
@@ -16,6 +16,7 @@ obj-$(CONFIG_PINCTRL_UNIPHIER) += uniphier/ obj-$(CONFIG_PINCTRL_PIC32) += pinctrl_pic32.o obj-$(CONFIG_PINCTRL_EXYNOS) += exynos/ obj-$(CONFIG_PINCTRL_MESON) += meson/ +obj-$(CONFIG_PINCTRL_MTK) += mediatek/ obj-$(CONFIG_ARCH_MVEBU) += mvebu/ obj-$(CONFIG_PINCTRL_SINGLE) += pinctrl-single.o obj-$(CONFIG_PINCTRL_STI) += pinctrl-sti.o
drivers/pinctrl/mediatek/Kconfig new file +11 -0
@@ -0,0 +1,11 @@ +if ARCH_MEDIATEK + +config PINCTRL_MTK + depends on PINCTRL_GENERIC + bool + +config PINCTRL_MT7629 + bool "MT7629 SoC pinctrl driver" + select PINCTRL_MTK + +endif
drivers/pinctrl/mediatek/Makefile new file +6 -0
@@ -0,0 +1,6 @@ +# SPDX-License-Identifier: GPL-2.0 +# Core +obj-$(CONFIG_PINCTRL_MTK) += pinctrl-mtk-common.o + +# SoC Drivers +obj-$(CONFIG_PINCTRL_MT7629) += pinctrl-mt7629.o
drivers/pinctrl/mediatek/pinctrl-mt7629.c new file +471 -0
471 lines not on this page · raw message
drivers/pinctrl/mediatek/pinctrl-mtk-common.c new file +552 -0
552 lines not on this page · raw message
drivers/pinctrl/mediatek/pinctrl-mtk-common.h new file +182 -0
182 lines not on this page · raw message
Signature · 1 line
1.9.1
PATCH v3 10/18 pinctrl: MediaTek: add pinctrl driver for MT7629 SoC
Quoted 10 lines · Ryder Lee
This patch adds pinctrl support for MT7629 SoC. The IO core found on the SoC has the registers for pinctrl, pinconf and gpio mixed up in the same register range. Hence the driver also implements the gpio functionality through
UCLASS_GPIO.This also creates a common file as there might be other chips that use the same binding and driver, then being a little more abstract could help in the long run.
Signed-off-by Ryder Lee <[email protected]>
Quoted 16 lines
--- arch/arm/include/asm/arch-mediatek/gpio.h | 9 + drivers/pinctrl/Kconfig | 1 + drivers/pinctrl/Makefile | 1 + drivers/pinctrl/mediatek/Kconfig | 11 + drivers/pinctrl/mediatek/Makefile | 6 + drivers/pinctrl/mediatek/pinctrl-mt7629.c | 471 ++++++++++++++++++++++ drivers/pinctrl/mediatek/pinctrl-mtk-common.c | 552 ++++++++++++++++++++++++++ drivers/pinctrl/mediatek/pinctrl-mtk-common.h | 182 +++++++++ 8 files changed, 1233 insertions(+) create mode 100644 arch/arm/include/asm/arch-mediatek/gpio.h create mode 100644 drivers/pinctrl/mediatek/Kconfig create mode 100644 drivers/pinctrl/mediatek/Makefile create mode 100644 drivers/pinctrl/mediatek/pinctrl-mt7629.c create mode 100644 drivers/pinctrl/mediatek/pinctrl-mtk-common.c create mode 100644 drivers/pinctrl/mediatek/pinctrl-mtk-common.h
PATCH v3 11/18 pinctrl: MediaTek: add pinctrl driver for MT7623 SoC
In reply to Ryder LeeThis patch adds pinctrl support for MT7623 SoC. And most of the structures are used to hold the hardware configuration for each pin.
--- drivers/pinctrl/mediatek/Kconfig | 4 + drivers/pinctrl/mediatek/Makefile | 1 + drivers/pinctrl/mediatek/pinctrl-mt7623.c | 1284 +++++++++++++++++++++++++ drivers/pinctrl/mediatek/pinctrl-mtk-common.h | 1 + 4 files changed, 1290 insertions(+) create mode 100644 drivers/pinctrl/mediatek/pinctrl-mt7623.c
drivers/pinctrl/mediatek/Kconfig +4 -0
@@ -4,6 +4,10 @@ config PINCTRL_MTK depends on PINCTRL_GENERIC bool +config PINCTRL_MT7623 + bool "MT7623 SoC pinctrl driver" + select PINCTRL_MTK + config PINCTRL_MT7629 bool "MT7629 SoC pinctrl driver" select PINCTRL_MTK
drivers/pinctrl/mediatek/Makefile +1 -0
@@ -3,4 +3,5 @@ obj-$(CONFIG_PINCTRL_MTK) += pinctrl-mtk-common.o # SoC Drivers +obj-$(CONFIG_PINCTRL_MT7623) += pinctrl-mt7623.o obj-$(CONFIG_PINCTRL_MT7629) += pinctrl-mt7629.o
drivers/pinctrl/mediatek/pinctrl-mt7623.c new file +1284 -0
1,284 lines not on this page · raw message
drivers/pinctrl/mediatek/pinctrl-mtk-common.h +1 -0
@@ -176,6 +176,7 @@ struct mtk_pinctrl_priv {extern const struct pinctrl_ops mtk_pinctrl_ops; +void mtk_rmw (struct udevice *dev,u32 reg,u32 mask,u32 set);int mtk_pinctrl_probe (struct udevice *dev,struct mtk_pinctrl_soc *soc);
Signature · 1 line
1.9.1
PATCH v3 11/18 pinctrl: MediaTek: add pinctrl driver for MT7623 SoC
Quoted 6 lines · Ryder Lee
This patch adds pinctrl support for MT7623 SoC. And most of the structures are used to hold the hardware configuration for each pin.
Signed-off-by Ryder Lee <[email protected]>Tested-by Matthias Brugger <[email protected]>
Quoted 7 lines
--- drivers/pinctrl/mediatek/Kconfig | 4 + drivers/pinctrl/mediatek/Makefile | 1 + drivers/pinctrl/mediatek/pinctrl-mt7623.c | 1284 +++++++++++++++++++++++++ drivers/pinctrl/mediatek/pinctrl-mtk-common.h | 1 + 4 files changed, 1290 insertions(+) create mode 100644 drivers/pinctrl/mediatek/pinctrl-mt7623.c
PATCH v3 12/18 power domain: MediaTek: add power domain driver for MT7629 SoC
In reply to Ryder LeeThis adds a power domain driver for the Mediatek SCPSYS unit.
The System Control Processor System (SCPSYS) has several power management related tasks in the system. The tasks include thermal measurement, dynamic voltage frequency scaling (DVFS), interrupt filter and lowlevel sleep control. The System Power Manager (SPM) inside the SCPSYS is for the MTCMOS power domain control.
For now this driver only adds power domain support.
--- drivers/power/domain/Kconfig | 7 + drivers/power/domain/Makefile | 1 + drivers/power/domain/mtk-power-domain.c | 326 ++++++++++++++++++++++++++++++++ 3 files changed, 334 insertions(+) create mode 100644 drivers/power/domain/mtk-power-domain.c
drivers/power/domain/Kconfig +7 -0
@@ -23,6 +23,13 @@ config IMX8_POWER_DOMAIN Enable support for manipulating NXP i.MX8 on-SoC power domains via IPC requests to the SCU. +config MTK_POWER_DOMAIN + bool "Enable the MediaTek power domain driver" + depends on POWER_DOMAIN && ARCH_MEDIATEK + help + Enable support for manipulating MediaTek power domains via MMIO + mapped registers. + config MESON_GX_VPU_POWER_DOMAIN bool "Enable Amlogic Meson GX VPU power domain driver" depends on ARCH_MESON
drivers/power/domain/Makefile +1 -0
@@ -6,6 +6,7 @@ obj-$(CONFIG_$(SPL_)POWER_DOMAIN) += power-domain-uclass.o obj-$(CONFIG_BCM6328_POWER_DOMAIN) += bcm6328-power-domain.o obj-$(CONFIG_IMX8_POWER_DOMAIN) += imx8-power-domain.o +obj-$(CONFIG_MTK_POWER_DOMAIN) += mtk-power-domain.o obj-$(CONFIG_MESON_GX_VPU_POWER_DOMAIN) += meson-gx-pwrc-vpu.o obj-$(CONFIG_SANDBOX_POWER_DOMAIN) += sandbox-power-domain.o obj-$(CONFIG_SANDBOX_POWER_DOMAIN) += sandbox-power-domain-test.o
drivers/power/domain/mtk-power-domain.c new file +326 -0
326 lines not on this page · raw message
Signature · 1 line
1.9.1
PATCH v3 13/18 power domain: MediaTek: add power domain driver for MT7623 SoC
In reply to Ryder LeeThis adds power domain (scpsys) support for MT7623 SoC.
--- drivers/power/domain/mtk-power-domain.c | 80 +++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+)
drivers/power/domain/mtk-power-domain.c +80 -0
@@ -14,9 +14,19 @@#include <asm/processor.h> #include <linux/iopoll.h> +#include <dt-bindings/power/mt7623-power.h> #include <dt-bindings/power/mt7629-power.h> #define SPM_EN (0xb16 << 16 | 0x1) +#define SPM_VDE_PWR_CON 0x0210 +#define SPM_MFG_PWR_CON 0x0214 +#define SPM_ISP_PWR_CON 0x0238 +#define SPM_DIS_PWR_CON 0x023c +#define SPM_CONN_PWR_CON 0x0280 +#define SPM_BDP_PWR_CON 0x029c +#define SPM_ETH_PWR_CON 0x02a0 +#define SPM_HIF_PWR_CON 0x02a4 +#define SPM_IFR_MSC_PWR_CON 0x02a8#define SPM_ETHSYS_PWR_CON 0x2e0#define SPM_HIF0_PWR_CON 0x2e4#define SPM_HIF1_PWR_CON 0x2e8
@@ -29,6 +39,15 @@#define PWR_ON_2ND_BIT BIT(3)#define PWR_CLK_DIS_BIT BIT(4) +#define PWR_STATUS_CONN BIT(1) +#define PWR_STATUS_DISP BIT(3) +#define PWR_STATUS_MFG BIT(4) +#define PWR_STATUS_ISP BIT(5) +#define PWR_STATUS_VDEC BIT(7) +#define PWR_STATUS_BDP BIT(14) +#define PWR_STATUS_ETH BIT(15) +#define PWR_STATUS_HIF BIT(16) +#define PWR_STATUS_IFR_MSC BIT(17)#define PWR_STATUS_ETHSYS BIT(24)#define PWR_STATUS_HIF0 BIT(25)#define PWR_STATUS_HIF1 BIT(26)
@@ -41,6 +60,7 @@#define DCM_TOP_EN BIT(0)enum scp_domain_type { +SCPSYS_MT7623 ,SCPSYS_MT7629 , };
@@ -62,6 +82,59 @@ struct scp_domain {struct scp_domain_data *data; }; +static struct scp_domain_data scp_domain_mt7623[] = { + [MT7623_POWER_DOMAIN_CONN ] = { + .sta_mask =PWR_STATUS_CONN , + .ctl_offs =SPM_CONN_PWR_CON , + .bus_prot_mask =BIT (8 ) |BIT (2 ), + }, + [MT7623_POWER_DOMAIN_DISP ] = { + .sta_mask =PWR_STATUS_DISP , + .ctl_offs =SPM_DIS_PWR_CON , + .sram_pdn_bits =GENMASK (11 ,8 ), + .bus_prot_mask =BIT (2 ), + }, + [MT7623_POWER_DOMAIN_MFG ] = { + .sta_mask =PWR_STATUS_MFG , + .ctl_offs =SPM_MFG_PWR_CON , + .sram_pdn_bits =GENMASK (11 ,8 ), + .sram_pdn_ack_bits =GENMASK (12 ,12 ), + }, + [MT7623_POWER_DOMAIN_VDEC ] = { + .sta_mask =PWR_STATUS_VDEC , + .ctl_offs =SPM_VDE_PWR_CON , + .sram_pdn_bits =GENMASK (11 ,8 ), + .sram_pdn_ack_bits =GENMASK (12 ,12 ), + }, + [MT7623_POWER_DOMAIN_ISP ] = { + .sta_mask =PWR_STATUS_ISP , + .ctl_offs =SPM_ISP_PWR_CON , + .sram_pdn_bits =GENMASK (11 ,8 ), + .sram_pdn_ack_bits =GENMASK (13 ,12 ), + }, + [MT7623_POWER_DOMAIN_BDP ] = { + .sta_mask =PWR_STATUS_BDP , + .ctl_offs =SPM_BDP_PWR_CON , + .sram_pdn_bits =GENMASK (11 ,8 ), + }, + [MT7623_POWER_DOMAIN_ETH ] = { + .sta_mask =PWR_STATUS_ETH , + .ctl_offs =SPM_ETH_PWR_CON , + .sram_pdn_bits =GENMASK (11 ,8 ), + .sram_pdn_ack_bits =GENMASK (15 ,12 ), + }, + [MT7623_POWER_DOMAIN_HIF ] = { + .sta_mask =PWR_STATUS_HIF , + .ctl_offs =SPM_HIF_PWR_CON , + .sram_pdn_bits =GENMASK (11 ,8 ), + .sram_pdn_ack_bits =GENMASK (15 ,12 ), + }, + [MT7623_POWER_DOMAIN_IFR_MSC ] = { + .sta_mask =PWR_STATUS_IFR_MSC , + .ctl_offs =SPM_IFR_MSC_PWR_CON , + }, +}; +static struct scp_domain_data scp_domain_mt7629[] = { [MT7629_POWER_DOMAIN_ETHSYS ] = { .sta_mask =PWR_STATUS_ETHSYS ,
@@ -252,6 +325,9 @@ static int mtk_power_domain_hook(struct udevice *dev) scpd->type = (enum scp_domain_type )dev_get_driver_data (dev);switch (scpd->type) { +case SCPSYS_MT7623 : + scpd->data = scp_domain_mt7623; +break ;case SCPSYS_MT7629 : scpd->data = scp_domain_mt7629;break ;
@@ -303,6 +379,10 @@ static int mtk_power_domain_probe(struct udevice *dev)static const struct udevice_id mtk_power_domain_ids[] = { { + .compatible ="mediatek,mt7623-scpsys" , + .data =SCPSYS_MT7623 , + }, + { .compatible ="mediatek,mt7629-scpsys" , .data =SCPSYS_MT7629 , },
Signature · 1 line
1.9.1
PATCH v3 14/18 serial: 16550: allow the driver to support MediaTek serial
In reply to Ryder LeeThis patch adds an extra operation in ns16550.c to suuport MediaTek SoCs as we have a highspeed register which influences the calcualtion of the divisor.
Note that we don't support the baudrate greater than 115200 currently.
--- drivers/serial/ns16550.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
drivers/serial/ns16550.c +10 -0
@@ -148,6 +148,13 @@ int ns16550_calc_divisor(NS16550_t port, int clock, int baudrate)static void NS16550_setbrg (NS16550_t com_port,int baud_divisor) { +#ifdef CONFIG_ARCH_MEDIATEK +/* +* MediaTek UARTs has an extra highspeed register. +* We need to clear it if baudrate <= 115200. +*/ +serial_out (0 , &com_port->reg9); +#endif serial_out (UART_LCR_BKSE |UART_LCRVAL , &com_port->lcr);serial_out (baud_divisor &0xff , &com_port->dll);serial_out ((baud_divisor >>8 ) &0xff , &com_port->dlm);
@@ -261,6 +268,9 @@ static inline void _debug_uart_init(void)serial_dout (&com_port->mcr,UART_MCRVAL );serial_dout (&com_port->fcr,UART_FCR_DEFVAL ); +#ifdef CONFIG_ARCH_MEDIATEK +serial_dout (&com_port->reg9,0 ); +#endif serial_dout (&com_port->lcr,UART_LCR_BKSE |UART_LCRVAL );serial_dout (&com_port->dll, baud_divisor &0xff );serial_dout (&com_port->dlm, (baud_divisor >>8 ) &0xff );
Signature · 1 line
1.9.1
PATCH v3 14/18 serial: 16550: allow the driver to support MediaTek serial
Hi Ryder,
Quoted 4 lines · Ryder Lee
This patch adds an extra operation in
ns16550.cto suuport MediaTek SoCs as we have a highspeed register which influences the calcualtion of the divisor.
Quoted 8 lines
Note that we don't support the baudrate greater than 115200 currently.
Signed-off-by Ryder Lee <[email protected]>Tested-by Matthias Brugger <[email protected]>Reviewed-by Simon Glass <[email protected]>--- drivers/serial/ns16550.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
Actually it seems to me that we should have a compatible string for this and deal with this at run-time?
Is that easy to do here?
Regards,
Simon
PATCH v3 14/18 serial: 16550: allow the driver to support MediaTek serial
Quoted 16 lines · Simon Glass
Hi Ryder,
Quoted 4 lines · Ryder Lee
This patch adds an extra operation in
ns16550.cto suuport MediaTek SoCs as we have a highspeed register which influences the calcualtion of the divisor.Quoted 8 lines
Note that we don't support the baudrate greater than 115200 currently.
Signed-off-by Ryder Lee <[email protected]>Tested-by Matthias Brugger <[email protected]>Reviewed-by Simon Glass <[email protected]>--- drivers/serial/ns16550.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
Quoted 5 lines
Actually it seems to me that we should have a compatible string for this and deal with this at run-time?
Is that easy to do here?
How about this:
uart0: serial at 11002000 {
compatible = "ns16550a";
....
mediatek,highspeed = <0>;
....Ryder
PATCH v3 14/18 serial: 16550: allow the driver to support MediaTek serial
Quoted 25 lines · Ryder Lee
Quoted 16 lines · Simon Glass
Hi Ryder,
Quoted 4 lines · Ryder Lee
This patch adds an extra operation in
ns16550.cto suuport MediaTek SoCs as we have a highspeed register which influences the calcualtion of the divisor.Quoted 8 lines
Note that we don't support the baudrate greater than 115200 currently.
Signed-off-by Ryder Lee <[email protected]>Tested-by Matthias Brugger <[email protected]>Reviewed-by Simon Glass <[email protected]>--- drivers/serial/ns16550.c | 10 ++++++++++ 1 file changed, 10 insertions(+)Quoted 5 lines
Actually it seems to me that we should have a compatible string for this and deal with this at run-time?
Is that easy to do here?
How about this:
Quoted 8 lines
uart0: serial at 11002000 { compatible = "ns16550a"; .... mediatek,highspeed = <0>; ....Ryder
Sorry, I didn't get it right. I will add a compatible string in ns16550_serial_ids[] for MTK chips.
Ryder
PATCH v3 14/18 serial: 16550: allow the driver to support MediaTek serial
Quoted 32 lines · Ryder Lee
Quoted 31 lines · Ryder Lee
Quoted 16 lines · Simon Glass
Hi Ryder,
Quoted 4 lines · Ryder Lee
This patch adds an extra operation in
ns16550.cto suuport MediaTek SoCs as we have a highspeed register which influences the calcualtion of the divisor.Quoted 8 lines
Note that we don't support the baudrate greater than 115200 currently.
Signed-off-by Ryder Lee <[email protected]>Tested-by Matthias Brugger <[email protected]>Reviewed-by Simon Glass <[email protected]>--- drivers/serial/ns16550.c | 10 ++++++++++ 1 file changed, 10 insertions(+)Quoted 5 lines
Actually it seems to me that we should have a compatible string for this and deal with this at run-time?
Is that easy to do here?
How about this:
uart0: serial at 11002000 { compatible = "ns16550a"; .... mediatek,highspeed = <0>; ....
Quoted 9 lines
Quoted 2 lines
Ryder
Sorry, I didn't get it right. I will add a compatible string in ns16550_serial_ids[] for MTK chips.
Ryder
Hi Simon,
We have tried the compatible string, but it made the ns16550 driver more complicated.
To use the compatible string we have to add a new field in ns16550_platdata, and change the flow of ns16550_serial_probe. Moreover, it's totally useless for debug uart.
At present using a macro is the easiest way here.
Weijie
PATCH v3 14/18 serial: 16550: allow the driver to support MediaTek serial
Hi Weijie,
Quoted 45 lines · Weijie Gao
Quoted 32 lines · Ryder Lee
Quoted 31 lines · Ryder Lee
Quoted 16 lines · Simon Glass
Hi Ryder,
Quoted 4 lines · Ryder Lee
This patch adds an extra operation in
ns16550.cto suuport MediaTek SoCs as we have a highspeed register which influences the calcualtion of the divisor.Quoted 8 lines
Note that we don't support the baudrate greater than 115200 currently.
Signed-off-by Ryder Lee <[email protected]>Tested-by Matthias Brugger <[email protected]>Reviewed-by Simon Glass <[email protected]>--- drivers/serial/ns16550.c | 10 ++++++++++ 1 file changed, 10 insertions(+)Quoted 5 lines
Actually it seems to me that we should have a compatible string for this and deal with this at run-time?
Is that easy to do here?
How about this:
uart0: serial at 11002000 { compatible = "ns16550a"; .... mediatek,highspeed = <0>; ....Quoted 9 lines
Quoted 2 lines
Ryder
Sorry, I didn't get it right. I will add a compatible string in ns16550_serial_ids[] for MTK chips.
Ryder
Hi Simon,
Quoted 8 lines
We have tried the compatible string, but it made the ns16550 driver more complicated.
To use the compatible string we have to add a new field in
ns16550_platdata, and change the flow ofns16550_serial_probe. Moreover, it's totally useless for debug uart.At present using a macro is the easiest way here.
It might be easier but it is not correct. We should not have platform-specific #ifdefs in a common driver.
Here's what I think you should do:
1. Create your own separate driver which calls into the code of this one
2. Add a 'quirks' flag word to the platform data and refactor the code to deal with your quirk, or add a separate field like you say
3. For the debug uart, put it in your separate driver, if you cannot easily change _debug_uart_init(). I suppose we could have a CONFIG_DEBUG_UART_QUIRKS flag wod?
Regards,
Simon
PATCH v3 15/18 ram: MediaTek: add DDR3 driver for MT7629 SoC
In reply to Ryder LeeThis patch adds a DDR3 driver for MT7629 SoC.
--- drivers/ram/Makefile | 1 + drivers/ram/mediatek/Makefile | 7 + drivers/ram/mediatek/ddr3-mt7629.c | 766 +++++++++++++++++++++++++++++++++++++ 3 files changed, 774 insertions(+) create mode 100644 drivers/ram/mediatek/Makefile create mode 100644 drivers/ram/mediatek/ddr3-mt7629.c
drivers/ram/Makefile +1 -0
@@ -11,3 +11,4 @@ obj-$(CONFIG_STM32_SDRAM) += stm32_sdram.o obj-$(CONFIG_ARCH_BMIPS) += bmips_ram.o obj-$(CONFIG_ARCH_ROCKCHIP) += rockchip/ +obj-$(CONFIG_ARCH_MEDIATEK) += mediatek/
drivers/ram/mediatek/Makefile new file +7 -0
@@ -0,0 +1,7 @@ +# +# Copyright (c) 2018 MediaTek Inc. +# +# SPDX-License-Identifier: GPL-2.0 +# + +obj-$(CONFIG_TARGET_MT7629) = ddr3-mt7629.o
drivers/ram/mediatek/ddr3-mt7629.c new file +766 -0
766 lines not on this page · raw message
Signature · 1 line
1.9.1
PATCH v3 16/18 mmc: mtk-sd: add SD/MMC host controller driver for MT7623 SoC
In reply to Ryder LeeFrom: Weijie Gao <[email protected]>
This patch adds MT7623 host controller driver for accessing SD/MMC.
--- drivers/mmc/Kconfig | 11 + drivers/mmc/Makefile | 1 + drivers/mmc/mtk-sd.c | 1394 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 1406 insertions(+) create mode 100644 drivers/mmc/mtk-sd.c
drivers/mmc/Kconfig +11 -0
@@ -598,6 +598,17 @@ config FTSDC010_SDIO help This can enable ftsdc010 sdio function. +config MMC_MTK + bool "MediaTek SD/MMC Card Interface support" + depends on ARCH_MEDIATEK + depends on BLK && DM_MMC + depends on OF_CONTROL + help + This selects the MediaTek(R) Secure digital and Multimedia card Interface. + If you have a machine with a integrated SD/MMC card reader, say Y or M here. + This is needed if support for any SD/SDIO/MMC devices is required. + If unsure, say N. + endif config TEGRA124_MMC_DISABLE_EXT_LOOPBACK
drivers/mmc/Makefile +1 -0
@@ -65,3 +65,4 @@ obj-$(CONFIG_MMC_SUNXI) += sunxi_mmc.o obj-$(CONFIG_MMC_UNIPHIER) += tmio-common.o uniphier-sd.o obj-$(CONFIG_RENESAS_SDHI) += tmio-common.o renesas-sdhi.o obj-$(CONFIG_MMC_BCM2835) += bcm2835_sdhost.o +obj-$(CONFIG_MMC_MTK) += mtk-sd.o
drivers/mmc/mtk-sd.c new file +1394 -0
1,394 lines not on this page · raw message
Signature · 1 line
1.9.1
PATCH v3 17/18 doc: README.mediatek: Add a simple README for MediaTek
In reply to Ryder LeeAdd a few notes on how to try out the MediaTek support so far.
--- doc/README.mediatek | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 doc/README.mediatek
doc/README.mediatek new file +54 -0
@@ -0,0 +1,54 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# Copyright (C) 2018 MediaTek Inc. +# Ryder Lee <[email protected]> + + +This document describes how to compile the U-Boot and how to change U-Boot +configuration about the MediaTek SoCs. + + +Build Procedure +=============== + -Set the cross compiler: + + # export CROSS_COMPILE=/path/to/toolchain/arm-linux-gnueabi- + + -Clean-up old residuals: + + # make mrproper + + -Configure the U-Boot: + + # make <defconfig_file> + # make + + - For the MT7623n bananapi R2 board use "mt7623n_bpir2_defconfig" + - For the MT7629 reference board use "mt7629_rfb_defconfig" + + +Boot sequence +============= + -Boorom -> MTK preloader -> U-Boot + + - MT7623n + + This version of U-Boot doesn't implement SPL. So, MTK preloader binary + is needed to boot up: + + https://github.com/BPI-SINOVOIP/BPI-R2-bsp/tree/master/mt-pack/mtk/bpi-r2/bin + + + -Boorom -> SPL -> U-Boot + + - MT7629 + + +Configuration update +==================== + To update the U-Boot configuration, please refer to doc/README.kconfig + + +Documentation +============= + http://wiki.banana-pi.org/Banana_Pi_BPI-R2
Signature · 1 line
1.9.1
PATCH v3 17/18 doc: README.mediatek: Add a simple README for MediaTek
Hi Ryder,
Quoted 7 lines · Ryder Lee
Add a few notes on how to try out the MediaTek support so far.
Signed-off-by Ryder Lee <[email protected]>--- doc/README.mediatek | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 doc/README.mediatek
So how do I try this out on a board? Is there an eval board that you could add instructions for? E.g. how to prepare an SD card, or how to write to NAND flash?
Regards,
Simon
PATCH v3 18/18 MAINTAINERS: add an entry for MediaTek
In reply to Ryder LeeThis patch adds an entry for MediaTek.
--- MAINTAINERS | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)
MAINTAINERS +20 -0
@@ -157,6 +157,26 @@ T: git git://git.denx.de/u-boot-pxa.git F: arch/arm/cpu/pxa/ F: arch/arm/include/asm/arch-pxa/ +ARM MEDIATEK +M: Ryder Lee <[email protected]> +M: Weijie Gao <[email protected]> +S: Maintained +F: arch/arm/mach-mediatek/ +F: arch/arm/include/asm/arch-mediatek/ +F: board/mediatek/ +F: doc/README.mediatek +F: drivers/clk/mediatek/ +F: drivers/mmc/mtk-sd.c +F: drivers/pinctrl/mediatek/ +F: drivers/power/domain/mtk-power-domain.c +F: drivers/ram/mediatek/ +F: drivers/spi/mtk_qspi.c +F: drivers/timer/mtk_timer.c +F: drivers/watchdog/mtk_wdt.c +F: tools/mtk_image.c +F: tools/mtk_image.h +N: mediatek + ARM OWL M: Manivannan Sadhasivam <[email protected]> S: Maintained
Signature · 1 line
1.9.1