mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-05-05 04:36:13 +02:00
Merge patch series "Add MT8195 support"
Julien Stephan <jstephan@baylibre.com> says: This series adds basic support for Mediatek soc MT8195: - clock driver - watchdog - add a new macro helper to define gate clock. Other driver can be cleaned later to use the new macro Other driver will be added later. It will also serve as basis for board support such as MT8395_EVK based on MT8195. Link: https://lore.kernel.org/r/20260202-add-mt8195-clock-support-v1-0-5d03495246b9@baylibre.com
This commit is contained in:
commit
fa3f16e450
@ -93,6 +93,15 @@ config TARGET_MT8188
|
||||
USB3.0 dual role, SD and MMC cards, UFS, PWM, I2C, I2S, S/PDIF, and
|
||||
several LPDDR3 and LPDDR4 options.
|
||||
|
||||
config TARGET_MT8195
|
||||
bool "MediaTek MT8195 SoC"
|
||||
select ARM64
|
||||
help
|
||||
The MediaTek MT8195 is a ARM64-based SoC with a quad-core Cortex-A73 and
|
||||
a quad-core Cortex-A53. It is including UART, SPI, USB3.0 dual role,
|
||||
SD and MMC cards, UFS, PWM, I2C, I2S, S/PDIF, and several LPDDR3
|
||||
and LPDDR4 options.
|
||||
|
||||
config TARGET_MT8365
|
||||
bool "MediaTek MT8365 SoC"
|
||||
select ARM64
|
||||
@ -192,7 +201,7 @@ config SYS_CONFIG_NAME
|
||||
config MTK_BROM_HEADER_INFO
|
||||
string
|
||||
default "media=nor" if TARGET_MT8518 || TARGET_MT8512 || TARGET_MT7629
|
||||
default "media=emmc" if TARGET_MT8516 || TARGET_MT8365 || TARGET_MT8183 || TARGET_MT8188
|
||||
default "media=emmc" if TARGET_MT8516 || TARGET_MT8365 || TARGET_MT8183 || TARGET_MT8188 || TARGET_MT8195
|
||||
default "lk=1" if TARGET_MT7623
|
||||
|
||||
config MTK_TZ_MOVABLE
|
||||
|
||||
@ -14,6 +14,7 @@ obj-$(CONFIG_TARGET_MT7987) += mt7987/
|
||||
obj-$(CONFIG_TARGET_MT7988) += mt7988/
|
||||
obj-$(CONFIG_TARGET_MT8183) += mt8183/
|
||||
obj-$(CONFIG_TARGET_MT8188) += mt8188/
|
||||
obj-$(CONFIG_TARGET_MT8195) += mt8195/
|
||||
obj-$(CONFIG_TARGET_MT8365) += mt8365/
|
||||
obj-$(CONFIG_TARGET_MT8512) += mt8512/
|
||||
obj-$(CONFIG_TARGET_MT8516) += mt8516/
|
||||
|
||||
3
arch/arm/mach-mediatek/mt8195/Makefile
Normal file
3
arch/arm/mach-mediatek/mt8195/Makefile
Normal file
@ -0,0 +1,3 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
obj-y += init.o
|
||||
91
arch/arm/mach-mediatek/mt8195/init.c
Normal file
91
arch/arm/mach-mediatek/mt8195/init.c
Normal file
@ -0,0 +1,91 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Copyright (C) 2026 MediaTek Inc.
|
||||
* Copyright (C) 2026 BayLibre, SAS
|
||||
* Author: Julien Stephan <jstephan@baylibre.com>
|
||||
* Chris-QJ Chen <chris-qj.chen@mediatek.com>
|
||||
*/
|
||||
|
||||
#include <asm/armv8/mmu.h>
|
||||
#include <asm/system.h>
|
||||
#include <dm/uclass.h>
|
||||
#include <linux/sizes.h>
|
||||
#include <wdt.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
int dram_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = fdtdec_setup_memory_banksize();
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
fdtdec_setup_mem_size_base();
|
||||
|
||||
/*
|
||||
* Limit gd->ram_top not exceeding SZ_4G. Some periphals like mmc
|
||||
* requires DMA buffer allocated below SZ_4G.
|
||||
*
|
||||
* Note: SZ_1M is for adjusting gd->relocaddr, the reserved memory for
|
||||
* u-boot itself.
|
||||
*/
|
||||
if (gd->ram_base + gd->ram_size >= SZ_4G)
|
||||
gd->mon_len = (gd->ram_base + gd->ram_size + SZ_1M) - SZ_4G;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int dram_init_banksize(void)
|
||||
{
|
||||
gd->bd->bi_dram[0].start = gd->ram_base;
|
||||
gd->bd->bi_dram[0].size = gd->ram_size;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mtk_soc_early_init(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void reset_cpu(void)
|
||||
{
|
||||
struct udevice *wdt;
|
||||
|
||||
if (IS_ENABLED(CONFIG_PSCI_RESET)) {
|
||||
psci_system_reset();
|
||||
} else {
|
||||
uclass_first_device(UCLASS_WDT, &wdt);
|
||||
if (wdt)
|
||||
wdt_expire_now(wdt, 0);
|
||||
}
|
||||
}
|
||||
|
||||
int print_cpuinfo(void)
|
||||
{
|
||||
printf("CPU: MediaTek MT8195\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct mm_region mt8195_mem_map[] = {
|
||||
{
|
||||
/* DDR */
|
||||
.virt = 0x40000000UL,
|
||||
.phys = 0x40000000UL,
|
||||
.size = 0x200000000UL,
|
||||
.attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | PTE_BLOCK_OUTER_SHARE,
|
||||
}, {
|
||||
.virt = 0x00000000UL,
|
||||
.phys = 0x00000000UL,
|
||||
.size = 0x20000000UL,
|
||||
.attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
|
||||
PTE_BLOCK_NON_SHARE |
|
||||
PTE_BLOCK_PXN | PTE_BLOCK_UXN
|
||||
}, {
|
||||
0,
|
||||
}
|
||||
};
|
||||
|
||||
struct mm_region *mem_map = mt8195_mem_map;
|
||||
@ -12,6 +12,7 @@ obj-$(CONFIG_TARGET_MT7988) += clk-mt7988.o
|
||||
obj-$(CONFIG_TARGET_MT7987) += clk-mt7987.o
|
||||
obj-$(CONFIG_TARGET_MT8183) += clk-mt8183.o
|
||||
obj-$(CONFIG_TARGET_MT8188) += clk-mt8188.o
|
||||
obj-$(CONFIG_TARGET_MT8195) += clk-mt8195.o
|
||||
obj-$(CONFIG_TARGET_MT8365) += clk-mt8365.o
|
||||
obj-$(CONFIG_TARGET_MT8512) += clk-mt8512.o
|
||||
obj-$(CONFIG_TARGET_MT8516) += clk-mt8516.o
|
||||
|
||||
1662
drivers/clk/mediatek/clk-mt8195.c
Normal file
1662
drivers/clk/mediatek/clk-mt8195.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -243,6 +243,14 @@ struct mtk_gate {
|
||||
u32 flags;
|
||||
};
|
||||
|
||||
#define GATE_FLAGS(_id, _parent, _regs, _shift, _flags) { \
|
||||
.id = _id, \
|
||||
.parent = _parent, \
|
||||
.regs = _regs, \
|
||||
.shift = _shift, \
|
||||
.flags = _flags, \
|
||||
}
|
||||
|
||||
/* struct mtk_clk_tree - clock tree */
|
||||
struct mtk_clk_tree {
|
||||
unsigned long xtal_rate;
|
||||
|
||||
@ -146,6 +146,7 @@ static const struct udevice_id mtk_wdt_ids[] = {
|
||||
{ .compatible = "mediatek,mt6589-wdt"},
|
||||
{ .compatible = "mediatek,mt7986-wdt" },
|
||||
{ .compatible = "mediatek,mt8188-wdt" },
|
||||
{ .compatible = "mediatek,mt8195-wdt" },
|
||||
{}
|
||||
};
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user