uboot-mediatek: replace patches with updated versions
Weijie Gao has submitted an updated version of the patchset adding support for MT7986 and MT7981 to U-Boot. Use that v2 patchset. Changes of v2: - Add cpu driver for print_cpuinfo() - Fix NULL pointer dereference in mtk_image (was already fixed in OpenWrt) - Fix coding style - Minor changes https://patchwork.ozlabs.org/project/uboot/list/?series=316148 Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This commit is contained in:
		| @@ -0,0 +1,494 @@ | |||||||
|  | From b62450cf229c50ad2ce819dd02a09726909cc89a Mon Sep 17 00:00:00 2001 | ||||||
|  | From: =?UTF-8?q?Pali=20Roh=C3=A1r?= <pali@kernel.org> | ||||||
|  | Date: Fri, 27 May 2022 22:15:24 +0200 | ||||||
|  | Subject: [PATCH] serial: Replace CONFIG_DEBUG_UART_BASE by | ||||||
|  |  CONFIG_VAL(DEBUG_UART_BASE) | ||||||
|  | MIME-Version: 1.0 | ||||||
|  | Content-Type: text/plain; charset=UTF-8 | ||||||
|  | Content-Transfer-Encoding: 8bit | ||||||
|  |  | ||||||
|  | CONFIG_VAL(DEBUG_UART_BASE) expands to CONFIG_DEBUG_UART_BASE or | ||||||
|  | CONFIG_SPL_DEBUG_UART_BASE or CONFIG_TPL_DEBUG_UART_BASE and allows boards | ||||||
|  | to set different values for SPL, TPL and U-Boot Proper. | ||||||
|  |  | ||||||
|  | For ns16550 driver this support is there since commit d293759d55cc | ||||||
|  | ("serial: ns16550: Add support for SPL_DEBUG_UART_BASE"). | ||||||
|  |  | ||||||
|  | Signed-off-by: Pali Rohár <pali@kernel.org> | ||||||
|  | --- | ||||||
|  |  arch/arm/mach-uniphier/debug-uart/debug-uart.c | 4 ++-- | ||||||
|  |  arch/x86/cpu/apollolake/cpu_common.c           | 2 +- | ||||||
|  |  board/eets/pdu001/board.c                      | 2 +- | ||||||
|  |  drivers/serial/altera_jtag_uart.c              | 2 +- | ||||||
|  |  drivers/serial/altera_uart.c                   | 4 ++-- | ||||||
|  |  drivers/serial/atmel_usart.c                   | 4 ++-- | ||||||
|  |  drivers/serial/serial_ar933x.c                 | 4 ++-- | ||||||
|  |  drivers/serial/serial_arc.c                    | 4 ++-- | ||||||
|  |  drivers/serial/serial_bcm6345.c                | 4 ++-- | ||||||
|  |  drivers/serial/serial_linflexuart.c            | 4 ++-- | ||||||
|  |  drivers/serial/serial_meson.c                  | 2 +- | ||||||
|  |  drivers/serial/serial_msm_geni.c               | 6 +++--- | ||||||
|  |  drivers/serial/serial_mt7620.c                 | 4 ++-- | ||||||
|  |  drivers/serial/serial_mtk.c                    | 4 ++-- | ||||||
|  |  drivers/serial/serial_mvebu_a3700.c            | 4 ++-- | ||||||
|  |  drivers/serial/serial_mxc.c                    | 4 ++-- | ||||||
|  |  drivers/serial/serial_omap.c                   | 4 ++-- | ||||||
|  |  drivers/serial/serial_pic32.c                  | 4 ++-- | ||||||
|  |  drivers/serial/serial_pl01x.c                  | 4 ++-- | ||||||
|  |  drivers/serial/serial_s5p.c                    | 4 ++-- | ||||||
|  |  drivers/serial/serial_sifive.c                 | 4 ++-- | ||||||
|  |  drivers/serial/serial_stm32.c                  | 4 ++-- | ||||||
|  |  drivers/serial/serial_xuartlite.c              | 4 ++-- | ||||||
|  |  drivers/serial/serial_zynq.c                   | 4 ++-- | ||||||
|  |  24 files changed, 45 insertions(+), 45 deletions(-) | ||||||
|  |  | ||||||
|  | --- a/arch/arm/mach-uniphier/debug-uart/debug-uart.c | ||||||
|  | +++ b/arch/arm/mach-uniphier/debug-uart/debug-uart.c | ||||||
|  | @@ -18,7 +18,7 @@ | ||||||
|  |   | ||||||
|  |  static void _debug_uart_putc(int c) | ||||||
|  |  { | ||||||
|  | -	void __iomem *base = (void __iomem *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	void __iomem *base = (void __iomem *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |   | ||||||
|  |  	while (!(readl(base + UNIPHIER_UART_LSR) & UART_LSR_THRE)) | ||||||
|  |  		; | ||||||
|  | @@ -57,7 +57,7 @@ void sg_set_iectrl(unsigned int pin) | ||||||
|  |  void _debug_uart_init(void) | ||||||
|  |  { | ||||||
|  |  #ifdef CONFIG_SPL_BUILD | ||||||
|  | -	void __iomem *base = (void __iomem *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	void __iomem *base = (void __iomem *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |  	unsigned int divisor; | ||||||
|  |   | ||||||
|  |  	switch (uniphier_get_soc_id()) { | ||||||
|  | --- a/arch/x86/cpu/apollolake/cpu_common.c | ||||||
|  | +++ b/arch/x86/cpu/apollolake/cpu_common.c | ||||||
|  | @@ -72,7 +72,7 @@ static void pch_uart_init(void) | ||||||
|  |  	} | ||||||
|  |   | ||||||
|  |  #ifdef CONFIG_DEBUG_UART | ||||||
|  | -	apl_uart_init(PCH_DEV_UART, CONFIG_DEBUG_UART_BASE); | ||||||
|  | +	apl_uart_init(PCH_DEV_UART, CONFIG_VAL(DEBUG_UART_BASE)); | ||||||
|  |  #endif | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | --- a/board/eets/pdu001/board.c | ||||||
|  | +++ b/board/eets/pdu001/board.c | ||||||
|  | @@ -273,7 +273,7 @@ void board_debug_uart_init(void) | ||||||
|  |  	setup_early_clocks(); | ||||||
|  |   | ||||||
|  |  	/* done by pin controller driver if not debugging */ | ||||||
|  | -	enable_uart_pin_mux(CONFIG_DEBUG_UART_BASE); | ||||||
|  | +	enable_uart_pin_mux(CONFIG_VAL(DEBUG_UART_BASE)); | ||||||
|  |  } | ||||||
|  |  #endif | ||||||
|  |   | ||||||
|  | --- a/drivers/serial/altera_jtag_uart.c | ||||||
|  | +++ b/drivers/serial/altera_jtag_uart.c | ||||||
|  | @@ -134,7 +134,7 @@ static inline void _debug_uart_init(void | ||||||
|  |   | ||||||
|  |  static inline void _debug_uart_putc(int ch) | ||||||
|  |  { | ||||||
|  | -	struct altera_jtaguart_regs *regs = (void *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	struct altera_jtaguart_regs *regs = (void *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |   | ||||||
|  |  	while (1) { | ||||||
|  |  		u32 st = readl(®s->control); | ||||||
|  | --- a/drivers/serial/altera_uart.c | ||||||
|  | +++ b/drivers/serial/altera_uart.c | ||||||
|  | @@ -123,7 +123,7 @@ U_BOOT_DRIVER(altera_uart) = { | ||||||
|  |   | ||||||
|  |  static inline void _debug_uart_init(void) | ||||||
|  |  { | ||||||
|  | -	struct altera_uart_regs *regs = (void *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	struct altera_uart_regs *regs = (void *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |  	u32 div; | ||||||
|  |   | ||||||
|  |  	div = (CONFIG_DEBUG_UART_CLOCK / CONFIG_BAUDRATE) - 1; | ||||||
|  | @@ -132,7 +132,7 @@ static inline void _debug_uart_init(void | ||||||
|  |   | ||||||
|  |  static inline void _debug_uart_putc(int ch) | ||||||
|  |  { | ||||||
|  | -	struct altera_uart_regs *regs = (void *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	struct altera_uart_regs *regs = (void *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |   | ||||||
|  |  	while (1) { | ||||||
|  |  		u32 st = readl(®s->status); | ||||||
|  | --- a/drivers/serial/atmel_usart.c | ||||||
|  | +++ b/drivers/serial/atmel_usart.c | ||||||
|  | @@ -319,14 +319,14 @@ U_BOOT_DRIVER(serial_atmel) = { | ||||||
|  |  #ifdef CONFIG_DEBUG_UART_ATMEL | ||||||
|  |  static inline void _debug_uart_init(void) | ||||||
|  |  { | ||||||
|  | -	atmel_usart3_t *usart = (atmel_usart3_t *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	atmel_usart3_t *usart = (atmel_usart3_t *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |   | ||||||
|  |  	_atmel_serial_init(usart, CONFIG_DEBUG_UART_CLOCK, CONFIG_BAUDRATE); | ||||||
|  |  } | ||||||
|  |   | ||||||
|  |  static inline void _debug_uart_putc(int ch) | ||||||
|  |  { | ||||||
|  | -	atmel_usart3_t *usart = (atmel_usart3_t *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	atmel_usart3_t *usart = (atmel_usart3_t *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |   | ||||||
|  |  	while (!(readl(&usart->csr) & USART3_BIT(TXRDY))) | ||||||
|  |  		; | ||||||
|  | --- a/drivers/serial/serial_ar933x.c | ||||||
|  | +++ b/drivers/serial/serial_ar933x.c | ||||||
|  | @@ -199,7 +199,7 @@ U_BOOT_DRIVER(serial_ar933x) = { | ||||||
|  |   | ||||||
|  |  static inline void _debug_uart_init(void) | ||||||
|  |  { | ||||||
|  | -	void __iomem *regs = (void *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	void __iomem *regs = (void *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |  	u32 val, scale, step; | ||||||
|  |   | ||||||
|  |  	/* | ||||||
|  | @@ -227,7 +227,7 @@ static inline void _debug_uart_init(void | ||||||
|  |   | ||||||
|  |  static inline void _debug_uart_putc(int c) | ||||||
|  |  { | ||||||
|  | -	void __iomem *regs = (void *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	void __iomem *regs = (void *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |  	u32 data; | ||||||
|  |   | ||||||
|  |  	do { | ||||||
|  | --- a/drivers/serial/serial_arc.c | ||||||
|  | +++ b/drivers/serial/serial_arc.c | ||||||
|  | @@ -137,7 +137,7 @@ U_BOOT_DRIVER(serial_arc) = { | ||||||
|  |   | ||||||
|  |  static inline void _debug_uart_init(void) | ||||||
|  |  { | ||||||
|  | -	struct arc_serial_regs *regs = (struct arc_serial_regs *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	struct arc_serial_regs *regs = (struct arc_serial_regs *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |  	int arc_console_baud = CONFIG_DEBUG_UART_CLOCK / (CONFIG_BAUDRATE * 4) - 1; | ||||||
|  |   | ||||||
|  |  	writeb(arc_console_baud & 0xff, ®s->baudl); | ||||||
|  | @@ -146,7 +146,7 @@ static inline void _debug_uart_init(void | ||||||
|  |   | ||||||
|  |  static inline void _debug_uart_putc(int c) | ||||||
|  |  { | ||||||
|  | -	struct arc_serial_regs *regs = (struct arc_serial_regs *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	struct arc_serial_regs *regs = (struct arc_serial_regs *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |   | ||||||
|  |  	while (!(readb(®s->status) & UART_TXEMPTY)) | ||||||
|  |  		; | ||||||
|  | --- a/drivers/serial/serial_bcm6345.c | ||||||
|  | +++ b/drivers/serial/serial_bcm6345.c | ||||||
|  | @@ -269,7 +269,7 @@ U_BOOT_DRIVER(bcm6345_serial) = { | ||||||
|  |  #ifdef CONFIG_DEBUG_UART_BCM6345 | ||||||
|  |  static inline void _debug_uart_init(void) | ||||||
|  |  { | ||||||
|  | -	void __iomem *base = (void __iomem *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	void __iomem *base = (void __iomem *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |   | ||||||
|  |  	bcm6345_serial_init(base, CONFIG_DEBUG_UART_CLOCK, CONFIG_BAUDRATE); | ||||||
|  |  } | ||||||
|  | @@ -285,7 +285,7 @@ static inline void wait_xfered(void __io | ||||||
|  |   | ||||||
|  |  static inline void _debug_uart_putc(int ch) | ||||||
|  |  { | ||||||
|  | -	void __iomem *base = (void __iomem *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	void __iomem *base = (void __iomem *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |   | ||||||
|  |  	wait_xfered(base); | ||||||
|  |  	writel(ch, base + UART_FIFO_REG); | ||||||
|  | --- a/drivers/serial/serial_linflexuart.c | ||||||
|  | +++ b/drivers/serial/serial_linflexuart.c | ||||||
|  | @@ -201,14 +201,14 @@ U_BOOT_DRIVER(serial_linflex) = { | ||||||
|  |   | ||||||
|  |  static inline void _debug_uart_init(void) | ||||||
|  |  { | ||||||
|  | -	struct linflex_fsl *base = (struct linflex_fsl *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	struct linflex_fsl *base = (struct linflex_fsl *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |   | ||||||
|  |  	linflex_serial_init_internal(base); | ||||||
|  |  } | ||||||
|  |   | ||||||
|  |  static inline void _debug_uart_putc(int ch) | ||||||
|  |  { | ||||||
|  | -	struct linflex_fsl *base = (struct linflex_fsl *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	struct linflex_fsl *base = (struct linflex_fsl *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |   | ||||||
|  |  	/* XXX: Is this OK? Should this use the non-DM version? */ | ||||||
|  |  	_linflex_serial_putc(base, ch); | ||||||
|  | --- a/drivers/serial/serial_meson.c | ||||||
|  | +++ b/drivers/serial/serial_meson.c | ||||||
|  | @@ -182,7 +182,7 @@ static inline void _debug_uart_init(void | ||||||
|  |   | ||||||
|  |  static inline void _debug_uart_putc(int ch) | ||||||
|  |  { | ||||||
|  | -	struct meson_uart *regs = (struct meson_uart *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	struct meson_uart *regs = (struct meson_uart *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |   | ||||||
|  |  	while (readl(®s->status) & AML_UART_TX_FULL) | ||||||
|  |  		; | ||||||
|  | --- a/drivers/serial/serial_msm_geni.c | ||||||
|  | +++ b/drivers/serial/serial_msm_geni.c | ||||||
|  | @@ -569,7 +569,7 @@ U_BOOT_DRIVER(serial_msm_geni) = { | ||||||
|  |  #ifdef CONFIG_DEBUG_UART_MSM_GENI | ||||||
|  |   | ||||||
|  |  static struct msm_serial_data init_serial_data = { | ||||||
|  | -	.base = CONFIG_DEBUG_UART_BASE | ||||||
|  | +	.base = CONFIG_VAL(DEBUG_UART_BASE) | ||||||
|  |  }; | ||||||
|  |   | ||||||
|  |  /* Serial dumb device, to reuse driver code */ | ||||||
|  | @@ -587,7 +587,7 @@ static struct udevice init_dev = { | ||||||
|  |   | ||||||
|  |  static inline void _debug_uart_init(void) | ||||||
|  |  { | ||||||
|  | -	phys_addr_t base = CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	phys_addr_t base = CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |   | ||||||
|  |  	geni_serial_init(&init_dev); | ||||||
|  |  	geni_serial_baud(base, CLK_DIV, CONFIG_BAUDRATE); | ||||||
|  | @@ -596,7 +596,7 @@ static inline void _debug_uart_init(void | ||||||
|  |   | ||||||
|  |  static inline void _debug_uart_putc(int ch) | ||||||
|  |  { | ||||||
|  | -	phys_addr_t base = CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	phys_addr_t base = CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |   | ||||||
|  |  	writel(DEF_TX_WM, base + SE_GENI_TX_WATERMARK_REG); | ||||||
|  |  	qcom_geni_serial_setup_tx(base, 1); | ||||||
|  | --- a/drivers/serial/serial_mt7620.c | ||||||
|  | +++ b/drivers/serial/serial_mt7620.c | ||||||
|  | @@ -220,7 +220,7 @@ static inline void _debug_uart_init(void | ||||||
|  |  { | ||||||
|  |  	struct mt7620_serial_plat plat; | ||||||
|  |   | ||||||
|  | -	plat.regs = (void *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	plat.regs = (void *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |  	plat.clock = CONFIG_DEBUG_UART_CLOCK; | ||||||
|  |   | ||||||
|  |  	writel(0, &plat.regs->ier); | ||||||
|  | @@ -233,7 +233,7 @@ static inline void _debug_uart_init(void | ||||||
|  |  static inline void _debug_uart_putc(int ch) | ||||||
|  |  { | ||||||
|  |  	struct mt7620_serial_regs __iomem *regs = | ||||||
|  | -		(void *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +		(void *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |   | ||||||
|  |  	while (!(readl(®s->lsr) & UART_LSR_THRE)) | ||||||
|  |  		; | ||||||
|  | --- a/drivers/serial/serial_mtk.c | ||||||
|  | +++ b/drivers/serial/serial_mtk.c | ||||||
|  | @@ -426,7 +426,7 @@ static inline void _debug_uart_init(void | ||||||
|  |  { | ||||||
|  |  	struct mtk_serial_priv priv; | ||||||
|  |   | ||||||
|  | -	priv.regs = (void *) CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	priv.regs = (void *) CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |  	priv.clock = CONFIG_DEBUG_UART_CLOCK; | ||||||
|  |   | ||||||
|  |  	writel(0, &priv.regs->ier); | ||||||
|  | @@ -439,7 +439,7 @@ static inline void _debug_uart_init(void | ||||||
|  |  static inline void _debug_uart_putc(int ch) | ||||||
|  |  { | ||||||
|  |  	struct mtk_serial_regs __iomem *regs = | ||||||
|  | -		(void *) CONFIG_DEBUG_UART_BASE; | ||||||
|  | +		(void *) CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |   | ||||||
|  |  	while (!(readl(®s->lsr) & UART_LSR_THRE)) | ||||||
|  |  		; | ||||||
|  | --- a/drivers/serial/serial_mvebu_a3700.c | ||||||
|  | +++ b/drivers/serial/serial_mvebu_a3700.c | ||||||
|  | @@ -321,7 +321,7 @@ U_BOOT_DRIVER(serial_mvebu) = { | ||||||
|  |   | ||||||
|  |  static inline void _debug_uart_init(void) | ||||||
|  |  { | ||||||
|  | -	void __iomem *base = (void __iomem *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	void __iomem *base = (void __iomem *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |  	u32 parent_rate, divider; | ||||||
|  |   | ||||||
|  |  	/* reset FIFOs */ | ||||||
|  | @@ -349,7 +349,7 @@ static inline void _debug_uart_init(void | ||||||
|  |   | ||||||
|  |  static inline void _debug_uart_putc(int ch) | ||||||
|  |  { | ||||||
|  | -	void __iomem *base = (void __iomem *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	void __iomem *base = (void __iomem *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |   | ||||||
|  |  	while (readl(base + UART_STATUS_REG) & UART_STATUS_TXFIFO_FULL) | ||||||
|  |  		; | ||||||
|  | --- a/drivers/serial/serial_mxc.c | ||||||
|  | +++ b/drivers/serial/serial_mxc.c | ||||||
|  | @@ -372,7 +372,7 @@ U_BOOT_DRIVER(serial_mxc) = { | ||||||
|  |   | ||||||
|  |  static inline void _debug_uart_init(void) | ||||||
|  |  { | ||||||
|  | -	struct mxc_uart *base = (struct mxc_uart *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	struct mxc_uart *base = (struct mxc_uart *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |   | ||||||
|  |  	_mxc_serial_init(base, false); | ||||||
|  |  	_mxc_serial_setbrg(base, CONFIG_DEBUG_UART_CLOCK, | ||||||
|  | @@ -381,7 +381,7 @@ static inline void _debug_uart_init(void | ||||||
|  |   | ||||||
|  |  static inline void _debug_uart_putc(int ch) | ||||||
|  |  { | ||||||
|  | -	struct mxc_uart *base = (struct mxc_uart *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	struct mxc_uart *base = (struct mxc_uart *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |   | ||||||
|  |  	while (!(readl(&base->ts) & UTS_TXEMPTY)) | ||||||
|  |  		WATCHDOG_RESET(); | ||||||
|  | --- a/drivers/serial/serial_omap.c | ||||||
|  | +++ b/drivers/serial/serial_omap.c | ||||||
|  | @@ -66,7 +66,7 @@ static inline int serial_in_shift(void * | ||||||
|  |   | ||||||
|  |  static inline void _debug_uart_init(void) | ||||||
|  |  { | ||||||
|  | -	struct ns16550 *com_port = (struct ns16550 *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	struct ns16550 *com_port = (struct ns16550 *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |  	int baud_divisor; | ||||||
|  |   | ||||||
|  |  	baud_divisor = ns16550_calc_divisor(com_port, CONFIG_DEBUG_UART_CLOCK, | ||||||
|  | @@ -85,7 +85,7 @@ static inline void _debug_uart_init(void | ||||||
|  |   | ||||||
|  |  static inline void _debug_uart_putc(int ch) | ||||||
|  |  { | ||||||
|  | -	struct ns16550 *com_port = (struct ns16550 *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	struct ns16550 *com_port = (struct ns16550 *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |   | ||||||
|  |  	while (!(serial_din(&com_port->lsr) & UART_LSR_THRE)) | ||||||
|  |  		; | ||||||
|  | --- a/drivers/serial/serial_pic32.c | ||||||
|  | +++ b/drivers/serial/serial_pic32.c | ||||||
|  | @@ -187,14 +187,14 @@ U_BOOT_DRIVER(pic32_serial) = { | ||||||
|  |   | ||||||
|  |  static inline void _debug_uart_init(void) | ||||||
|  |  { | ||||||
|  | -	void __iomem *base = (void __iomem *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	void __iomem *base = (void __iomem *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |   | ||||||
|  |  	pic32_serial_init(base, CONFIG_DEBUG_UART_CLOCK, CONFIG_BAUDRATE); | ||||||
|  |  } | ||||||
|  |   | ||||||
|  |  static inline void _debug_uart_putc(int ch) | ||||||
|  |  { | ||||||
|  | -	writel(ch, CONFIG_DEBUG_UART_BASE + U_TXR); | ||||||
|  | +	writel(ch, CONFIG_VAL(DEBUG_UART_BASE) + U_TXR); | ||||||
|  |  } | ||||||
|  |   | ||||||
|  |  DEBUG_UART_FUNCS | ||||||
|  | --- a/drivers/serial/serial_pl01x.c | ||||||
|  | +++ b/drivers/serial/serial_pl01x.c | ||||||
|  | @@ -403,7 +403,7 @@ U_BOOT_DRIVER(serial_pl01x) = { | ||||||
|  |  static void _debug_uart_init(void) | ||||||
|  |  { | ||||||
|  |  #ifndef CONFIG_DEBUG_UART_SKIP_INIT | ||||||
|  | -	struct pl01x_regs *regs = (struct pl01x_regs *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	struct pl01x_regs *regs = (struct pl01x_regs *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |  	enum pl01x_type type; | ||||||
|  |   | ||||||
|  |  	if (IS_ENABLED(CONFIG_DEBUG_UART_PL011)) | ||||||
|  | @@ -419,7 +419,7 @@ static void _debug_uart_init(void) | ||||||
|  |   | ||||||
|  |  static inline void _debug_uart_putc(int ch) | ||||||
|  |  { | ||||||
|  | -	struct pl01x_regs *regs = (struct pl01x_regs *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	struct pl01x_regs *regs = (struct pl01x_regs *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |   | ||||||
|  |  	while (pl01x_putc(regs, ch) == -EAGAIN) | ||||||
|  |  		; | ||||||
|  | --- a/drivers/serial/serial_s5p.c | ||||||
|  | +++ b/drivers/serial/serial_s5p.c | ||||||
|  | @@ -276,7 +276,7 @@ static inline void _debug_uart_init(void | ||||||
|  |  	if (IS_ENABLED(CONFIG_DEBUG_UART_SKIP_INIT)) | ||||||
|  |  		return; | ||||||
|  |   | ||||||
|  | -	struct s5p_uart *uart = (struct s5p_uart *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	struct s5p_uart *uart = (struct s5p_uart *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |   | ||||||
|  |  	s5p_serial_init(uart); | ||||||
|  |  #if CONFIG_IS_ENABLED(ARCH_APPLE) | ||||||
|  | @@ -288,7 +288,7 @@ static inline void _debug_uart_init(void | ||||||
|  |   | ||||||
|  |  static inline void _debug_uart_putc(int ch) | ||||||
|  |  { | ||||||
|  | -	struct s5p_uart *uart = (struct s5p_uart *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	struct s5p_uart *uart = (struct s5p_uart *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |   | ||||||
|  |  #if CONFIG_IS_ENABLED(ARCH_APPLE) | ||||||
|  |  	while (readl(&uart->ufstat) & S5L_TX_FIFO_FULL); | ||||||
|  | --- a/drivers/serial/serial_sifive.c | ||||||
|  | +++ b/drivers/serial/serial_sifive.c | ||||||
|  | @@ -212,7 +212,7 @@ U_BOOT_DRIVER(serial_sifive) = { | ||||||
|  |  static inline void _debug_uart_init(void) | ||||||
|  |  { | ||||||
|  |  	struct uart_sifive *regs = | ||||||
|  | -			(struct uart_sifive *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +			(struct uart_sifive *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |   | ||||||
|  |  	_sifive_serial_setbrg(regs, CONFIG_DEBUG_UART_CLOCK, | ||||||
|  |  			      CONFIG_BAUDRATE); | ||||||
|  | @@ -222,7 +222,7 @@ static inline void _debug_uart_init(void | ||||||
|  |  static inline void _debug_uart_putc(int ch) | ||||||
|  |  { | ||||||
|  |  	struct uart_sifive *regs = | ||||||
|  | -			(struct uart_sifive *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +			(struct uart_sifive *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |   | ||||||
|  |  	while (_sifive_serial_putc(regs, ch) == -EAGAIN) | ||||||
|  |  		WATCHDOG_RESET(); | ||||||
|  | --- a/drivers/serial/serial_stm32.c | ||||||
|  | +++ b/drivers/serial/serial_stm32.c | ||||||
|  | @@ -270,7 +270,7 @@ static inline struct stm32_uart_info *_d | ||||||
|  |   | ||||||
|  |  static inline void _debug_uart_init(void) | ||||||
|  |  { | ||||||
|  | -	fdt_addr_t base = CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	fdt_addr_t base = CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |  	struct stm32_uart_info *uart_info = _debug_uart_info(); | ||||||
|  |   | ||||||
|  |  	_stm32_serial_init(base, uart_info); | ||||||
|  | @@ -281,7 +281,7 @@ static inline void _debug_uart_init(void | ||||||
|  |   | ||||||
|  |  static inline void _debug_uart_putc(int c) | ||||||
|  |  { | ||||||
|  | -	fdt_addr_t base = CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	fdt_addr_t base = CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |  	struct stm32_uart_info *uart_info = _debug_uart_info(); | ||||||
|  |   | ||||||
|  |  	while (_stm32_serial_putc(base, uart_info, c) == -EAGAIN) | ||||||
|  | --- a/drivers/serial/serial_xuartlite.c | ||||||
|  | +++ b/drivers/serial/serial_xuartlite.c | ||||||
|  | @@ -143,7 +143,7 @@ U_BOOT_DRIVER(serial_uartlite) = { | ||||||
|  |   | ||||||
|  |  static inline void _debug_uart_init(void) | ||||||
|  |  { | ||||||
|  | -	struct uartlite *regs = (struct uartlite *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	struct uartlite *regs = (struct uartlite *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |  	int ret; | ||||||
|  |   | ||||||
|  |  	uart_out32(®s->control, 0); | ||||||
|  | @@ -159,7 +159,7 @@ static inline void _debug_uart_init(void | ||||||
|  |   | ||||||
|  |  static inline void _debug_uart_putc(int ch) | ||||||
|  |  { | ||||||
|  | -	struct uartlite *regs = (struct uartlite *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	struct uartlite *regs = (struct uartlite *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |   | ||||||
|  |  	while (uart_in32(®s->status) & SR_TX_FIFO_FULL) | ||||||
|  |  		; | ||||||
|  | --- a/drivers/serial/serial_zynq.c | ||||||
|  | +++ b/drivers/serial/serial_zynq.c | ||||||
|  | @@ -295,7 +295,7 @@ U_BOOT_DRIVER(serial_zynq) = { | ||||||
|  |  #ifdef CONFIG_DEBUG_UART_ZYNQ | ||||||
|  |  static inline void _debug_uart_init(void) | ||||||
|  |  { | ||||||
|  | -	struct uart_zynq *regs = (struct uart_zynq *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	struct uart_zynq *regs = (struct uart_zynq *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |   | ||||||
|  |  	_uart_zynq_serial_init(regs); | ||||||
|  |  	_uart_zynq_serial_setbrg(regs, CONFIG_DEBUG_UART_CLOCK, | ||||||
|  | @@ -304,7 +304,7 @@ static inline void _debug_uart_init(void | ||||||
|  |   | ||||||
|  |  static inline void _debug_uart_putc(int ch) | ||||||
|  |  { | ||||||
|  | -	struct uart_zynq *regs = (struct uart_zynq *)CONFIG_DEBUG_UART_BASE; | ||||||
|  | +	struct uart_zynq *regs = (struct uart_zynq *)CONFIG_VAL(DEBUG_UART_BASE); | ||||||
|  |   | ||||||
|  |  	while (_uart_zynq_serial_putc(regs, ch) == -EAGAIN) | ||||||
|  |  		WATCHDOG_RESET(); | ||||||
| @@ -1,7 +1,7 @@ | |||||||
| From a299de45833df13d4ec28092201ea5fec0ba24fe Mon Sep 17 00:00:00 2001 | From 13d81db4723241e33316d7d134e4d279116e3158 Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Fri, 29 Jul 2022 15:17:58 +0800 | Date: Wed, 31 Aug 2022 19:00:17 +0800 | ||||||
| Subject: [PATCH 01/31] arm: mediatek: add support for MediaTek MT7986 SoC | Subject: [PATCH 01/32] arm: mediatek: add support for MediaTek MT7986 SoC | ||||||
|  |  | ||||||
| This patch adds basic support for MediaTek MT7986 SoC. | This patch adds basic support for MediaTek MT7986 SoC. | ||||||
| This include the file that will initialize the SoC after boot and its | This include the file that will initialize the SoC after boot and its | ||||||
| @@ -10,11 +10,11 @@ device tree. | |||||||
| Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| --- | --- | ||||||
|  arch/arm/dts/mt7986-u-boot.dtsi               |  33 ++ |  arch/arm/dts/mt7986-u-boot.dtsi               |  33 ++ | ||||||
|  arch/arm/dts/mt7986.dtsi                      | 341 ++++++++++++++++++ |  arch/arm/dts/mt7986.dtsi                      | 346 ++++++++++++++++++ | ||||||
|  arch/arm/mach-mediatek/Kconfig                |  11 + |  arch/arm/mach-mediatek/Kconfig                |  12 + | ||||||
|  arch/arm/mach-mediatek/Makefile               |   1 + |  arch/arm/mach-mediatek/Makefile               |   1 + | ||||||
|  arch/arm/mach-mediatek/mt7986/Makefile        |   4 + |  arch/arm/mach-mediatek/mt7986/Makefile        |   4 + | ||||||
|  arch/arm/mach-mediatek/mt7986/init.c          |  51 +++ |  arch/arm/mach-mediatek/mt7986/init.c          |  45 +++ | ||||||
|  arch/arm/mach-mediatek/mt7986/lowlevel_init.S |  32 ++ |  arch/arm/mach-mediatek/mt7986/lowlevel_init.S |  32 ++ | ||||||
|  7 files changed, 473 insertions(+) |  7 files changed, 473 insertions(+) | ||||||
|  create mode 100644 arch/arm/dts/mt7986-u-boot.dtsi |  create mode 100644 arch/arm/dts/mt7986-u-boot.dtsi | ||||||
| @@ -61,7 +61,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
| +}; | +}; | ||||||
| --- /dev/null | --- /dev/null | ||||||
| +++ b/arch/arm/dts/mt7986.dtsi | +++ b/arch/arm/dts/mt7986.dtsi | ||||||
| @@ -0,0 +1,341 @@ | @@ -0,0 +1,346 @@ | ||||||
| +// SPDX-License-Identifier: GPL-2.0 | +// SPDX-License-Identifier: GPL-2.0 | ||||||
| +/* | +/* | ||||||
| + * Copyright (c) 2022 MediaTek Inc. | + * Copyright (c) 2022 MediaTek Inc. | ||||||
| @@ -118,6 +118,11 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
| +		u-boot,dm-pre-reloc; | +		u-boot,dm-pre-reloc; | ||||||
| +	}; | +	}; | ||||||
| + | + | ||||||
|  | +	hwver: hwver { | ||||||
|  | +		compatible = "mediatek,hwver"; | ||||||
|  | +		reg = <0x8000000 0x1000>; | ||||||
|  | +	}; | ||||||
|  | + | ||||||
| +	timer { | +	timer { | ||||||
| +		compatible = "arm,armv8-timer"; | +		compatible = "arm,armv8-timer"; | ||||||
| +		interrupt-parent = <&gic>; | +		interrupt-parent = <&gic>; | ||||||
| @@ -405,13 +410,14 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
| +}; | +}; | ||||||
| --- a/arch/arm/mach-mediatek/Kconfig | --- a/arch/arm/mach-mediatek/Kconfig | ||||||
| +++ b/arch/arm/mach-mediatek/Kconfig | +++ b/arch/arm/mach-mediatek/Kconfig | ||||||
| @@ -40,6 +40,14 @@ config TARGET_MT7629 | @@ -40,6 +40,15 @@ config TARGET_MT7629 | ||||||
|  	  including DDR3, crypto engine, 3x3 11n/ac Wi-Fi, Gigabit Ethernet, |  	  including DDR3, crypto engine, 3x3 11n/ac Wi-Fi, Gigabit Ethernet, | ||||||
|  	  switch, USB3.0, PCIe, UART, SPI, I2C and PWM. |  	  switch, USB3.0, PCIe, UART, SPI, I2C and PWM. | ||||||
|   |   | ||||||
| +config TARGET_MT7986 | +config TARGET_MT7986 | ||||||
| +	bool "MediaTek MT7986 SoC" | +	bool "MediaTek MT7986 SoC" | ||||||
| +	select ARM64 | +	select ARM64 | ||||||
|  | +	select CPU | ||||||
| +	help | +	help | ||||||
| +	  The MediaTek MT7986 is a ARM64-based SoC with a quad-core Cortex-A53. | +	  The MediaTek MT7986 is a ARM64-based SoC with a quad-core Cortex-A53. | ||||||
| +	  including UART, SPI, SPI flash, USB3.0, MMC, NAND, SNFI, PWM, PCIe, | +	  including UART, SPI, SPI flash, USB3.0, MMC, NAND, SNFI, PWM, PCIe, | ||||||
| @@ -420,7 +426,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
|  config TARGET_MT8183 |  config TARGET_MT8183 | ||||||
|  	bool "MediaTek MT8183 SoC" |  	bool "MediaTek MT8183 SoC" | ||||||
|  	select ARM64 |  	select ARM64 | ||||||
| @@ -84,6 +92,7 @@ config SYS_BOARD | @@ -84,6 +93,7 @@ config SYS_BOARD | ||||||
|  	default "mt7622" if TARGET_MT7622 |  	default "mt7622" if TARGET_MT7622 | ||||||
|  	default "mt7623" if TARGET_MT7623 |  	default "mt7623" if TARGET_MT7623 | ||||||
|  	default "mt7629" if TARGET_MT7629 |  	default "mt7629" if TARGET_MT7629 | ||||||
| @@ -428,7 +434,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
|  	default "mt8183" if TARGET_MT8183 |  	default "mt8183" if TARGET_MT8183 | ||||||
|  	default "mt8512" if TARGET_MT8512 |  	default "mt8512" if TARGET_MT8512 | ||||||
|  	default "mt8516" if TARGET_MT8516 |  	default "mt8516" if TARGET_MT8516 | ||||||
| @@ -99,6 +108,7 @@ config SYS_CONFIG_NAME | @@ -99,6 +109,7 @@ config SYS_CONFIG_NAME | ||||||
|  	default "mt7622" if TARGET_MT7622 |  	default "mt7622" if TARGET_MT7622 | ||||||
|  	default "mt7623" if TARGET_MT7623 |  	default "mt7623" if TARGET_MT7623 | ||||||
|  	default "mt7629" if TARGET_MT7629 |  	default "mt7629" if TARGET_MT7629 | ||||||
| @@ -436,7 +442,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
|  	default "mt8183" if TARGET_MT8183 |  	default "mt8183" if TARGET_MT8183 | ||||||
|  	default "mt8512" if TARGET_MT8512 |  	default "mt8512" if TARGET_MT8512 | ||||||
|  	default "mt8516" if TARGET_MT8516 |  	default "mt8516" if TARGET_MT8516 | ||||||
| @@ -113,6 +123,7 @@ config MTK_BROM_HEADER_INFO | @@ -113,6 +124,7 @@ config MTK_BROM_HEADER_INFO | ||||||
|  	string |  	string | ||||||
|  	default "media=nor" if TARGET_MT8518 || TARGET_MT8512 || TARGET_MT7629 || TARGET_MT7622 |  	default "media=nor" if TARGET_MT8518 || TARGET_MT8512 || TARGET_MT7629 || TARGET_MT7622 | ||||||
|  	default "media=emmc" if TARGET_MT8516 || TARGET_MT8365 || TARGET_MT8183 |  	default "media=emmc" if TARGET_MT8516 || TARGET_MT8365 || TARGET_MT8183 | ||||||
| @@ -463,7 +469,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
| +obj-y += lowlevel_init.o | +obj-y += lowlevel_init.o | ||||||
| --- /dev/null | --- /dev/null | ||||||
| +++ b/arch/arm/mach-mediatek/mt7986/init.c | +++ b/arch/arm/mach-mediatek/mt7986/init.c | ||||||
| @@ -0,0 +1,51 @@ | @@ -0,0 +1,45 @@ | ||||||
| +// SPDX-License-Identifier: GPL-2.0 | +// SPDX-License-Identifier: GPL-2.0 | ||||||
| +/* | +/* | ||||||
| + * Copyright (C) 2022 MediaTek Inc. | + * Copyright (C) 2022 MediaTek Inc. | ||||||
| @@ -477,12 +483,6 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
| + | + | ||||||
| +DECLARE_GLOBAL_DATA_PTR; | +DECLARE_GLOBAL_DATA_PTR; | ||||||
| + | + | ||||||
| +int print_cpuinfo(void) |  | ||||||
| +{ |  | ||||||
| +	printf("CPU:   MediaTek MT7986\n"); |  | ||||||
| +	return 0; |  | ||||||
| +} |  | ||||||
| + |  | ||||||
| +int dram_init(void) | +int dram_init(void) | ||||||
| +{ | +{ | ||||||
| +	gd->ram_size = get_ram_size((void *)CONFIG_SYS_SDRAM_BASE, SZ_2G); | +	gd->ram_size = get_ram_size((void *)CONFIG_SYS_SDRAM_BASE, SZ_2G); | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| From 38faebb811868f9e6734dea7894d0fa5a61f3a22 Mon Sep 17 00:00:00 2001 | From 5512a2e8257b0a733cf90ec247f34094ff31f750 Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Fri, 29 Jul 2022 15:58:11 +0800 | Date: Wed, 31 Aug 2022 19:00:20 +0800 | ||||||
| Subject: [PATCH 02/31] arm: mediatek: add support for MediaTek MT7981 SoC | Subject: [PATCH 02/32] arm: mediatek: add support for MediaTek MT7981 SoC | ||||||
|  |  | ||||||
| This patch adds basic support for MediaTek MT7981 SoC. | This patch adds basic support for MediaTek MT7981 SoC. | ||||||
| This include the file that will initialize the SoC after boot and its | This include the file that will initialize the SoC after boot and its | ||||||
| @@ -9,11 +9,11 @@ device tree. | |||||||
|  |  | ||||||
| Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| --- | --- | ||||||
|  arch/arm/dts/mt7981.dtsi                      | 288 ++++++++++++++++++ |  arch/arm/dts/mt7981.dtsi                      | 293 ++++++++++++++++++ | ||||||
|  arch/arm/mach-mediatek/Kconfig                |  12 +- |  arch/arm/mach-mediatek/Kconfig                |  13 +- | ||||||
|  arch/arm/mach-mediatek/Makefile               |   1 + |  arch/arm/mach-mediatek/Makefile               |   1 + | ||||||
|  arch/arm/mach-mediatek/mt7981/Makefile        |   4 + |  arch/arm/mach-mediatek/mt7981/Makefile        |   4 + | ||||||
|  arch/arm/mach-mediatek/mt7981/init.c          |  51 ++++ |  arch/arm/mach-mediatek/mt7981/init.c          |  45 +++ | ||||||
|  arch/arm/mach-mediatek/mt7981/lowlevel_init.S |  32 ++ |  arch/arm/mach-mediatek/mt7981/lowlevel_init.S |  32 ++ | ||||||
|  6 files changed, 387 insertions(+), 1 deletion(-) |  6 files changed, 387 insertions(+), 1 deletion(-) | ||||||
|  create mode 100644 arch/arm/dts/mt7981.dtsi |  create mode 100644 arch/arm/dts/mt7981.dtsi | ||||||
| @@ -23,7 +23,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
|  |  | ||||||
| --- /dev/null | --- /dev/null | ||||||
| +++ b/arch/arm/dts/mt7981.dtsi | +++ b/arch/arm/dts/mt7981.dtsi | ||||||
| @@ -0,0 +1,288 @@ | @@ -0,0 +1,293 @@ | ||||||
| +// SPDX-License-Identifier: GPL-2.0 | +// SPDX-License-Identifier: GPL-2.0 | ||||||
| +/* | +/* | ||||||
| + * Copyright (c) 2022 MediaTek Inc. | + * Copyright (c) 2022 MediaTek Inc. | ||||||
| @@ -63,6 +63,11 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
| +		u-boot,dm-pre-reloc; | +		u-boot,dm-pre-reloc; | ||||||
| +	}; | +	}; | ||||||
| + | + | ||||||
|  | +	hwver: hwver { | ||||||
|  | +		compatible = "mediatek,hwver"; | ||||||
|  | +		reg = <0x8000000 0x1000>; | ||||||
|  | +	}; | ||||||
|  | + | ||||||
| +	timer { | +	timer { | ||||||
| +		compatible = "arm,armv8-timer"; | +		compatible = "arm,armv8-timer"; | ||||||
| +		interrupt-parent = <&gic>; | +		interrupt-parent = <&gic>; | ||||||
| @@ -314,13 +319,14 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
| +}; | +}; | ||||||
| --- a/arch/arm/mach-mediatek/Kconfig | --- a/arch/arm/mach-mediatek/Kconfig | ||||||
| +++ b/arch/arm/mach-mediatek/Kconfig | +++ b/arch/arm/mach-mediatek/Kconfig | ||||||
| @@ -40,6 +40,14 @@ config TARGET_MT7629 | @@ -40,6 +40,15 @@ config TARGET_MT7629 | ||||||
|  	  including DDR3, crypto engine, 3x3 11n/ac Wi-Fi, Gigabit Ethernet, |  	  including DDR3, crypto engine, 3x3 11n/ac Wi-Fi, Gigabit Ethernet, | ||||||
|  	  switch, USB3.0, PCIe, UART, SPI, I2C and PWM. |  	  switch, USB3.0, PCIe, UART, SPI, I2C and PWM. | ||||||
|   |   | ||||||
| +config TARGET_MT7981 | +config TARGET_MT7981 | ||||||
| +	bool "MediaTek MT7981 SoC" | +	bool "MediaTek MT7981 SoC" | ||||||
| +	select ARM64 | +	select ARM64 | ||||||
|  | +	select CPU | ||||||
| +	help | +	help | ||||||
| +	  The MediaTek MT7981 is a ARM64-based SoC with a dual-core Cortex-A53. | +	  The MediaTek MT7981 is a ARM64-based SoC with a dual-core Cortex-A53. | ||||||
| +	  including UART, SPI, USB, NAND, SNFI, PWM, Gigabit Ethernet, I2C, | +	  including UART, SPI, USB, NAND, SNFI, PWM, Gigabit Ethernet, I2C, | ||||||
| @@ -329,7 +335,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
|  config TARGET_MT7986 |  config TARGET_MT7986 | ||||||
|  	bool "MediaTek MT7986 SoC" |  	bool "MediaTek MT7986 SoC" | ||||||
|  	select ARM64 |  	select ARM64 | ||||||
| @@ -92,6 +100,7 @@ config SYS_BOARD | @@ -93,6 +102,7 @@ config SYS_BOARD | ||||||
|  	default "mt7622" if TARGET_MT7622 |  	default "mt7622" if TARGET_MT7622 | ||||||
|  	default "mt7623" if TARGET_MT7623 |  	default "mt7623" if TARGET_MT7623 | ||||||
|  	default "mt7629" if TARGET_MT7629 |  	default "mt7629" if TARGET_MT7629 | ||||||
| @@ -337,7 +343,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
|  	default "mt7986" if TARGET_MT7986 |  	default "mt7986" if TARGET_MT7986 | ||||||
|  	default "mt8183" if TARGET_MT8183 |  	default "mt8183" if TARGET_MT8183 | ||||||
|  	default "mt8512" if TARGET_MT8512 |  	default "mt8512" if TARGET_MT8512 | ||||||
| @@ -108,6 +117,7 @@ config SYS_CONFIG_NAME | @@ -109,6 +119,7 @@ config SYS_CONFIG_NAME | ||||||
|  	default "mt7622" if TARGET_MT7622 |  	default "mt7622" if TARGET_MT7622 | ||||||
|  	default "mt7623" if TARGET_MT7623 |  	default "mt7623" if TARGET_MT7623 | ||||||
|  	default "mt7629" if TARGET_MT7629 |  	default "mt7629" if TARGET_MT7629 | ||||||
| @@ -345,7 +351,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
|  	default "mt7986" if TARGET_MT7986 |  	default "mt7986" if TARGET_MT7986 | ||||||
|  	default "mt8183" if TARGET_MT8183 |  	default "mt8183" if TARGET_MT8183 | ||||||
|  	default "mt8512" if TARGET_MT8512 |  	default "mt8512" if TARGET_MT8512 | ||||||
| @@ -123,7 +133,7 @@ config MTK_BROM_HEADER_INFO | @@ -124,7 +135,7 @@ config MTK_BROM_HEADER_INFO | ||||||
|  	string |  	string | ||||||
|  	default "media=nor" if TARGET_MT8518 || TARGET_MT8512 || TARGET_MT7629 || TARGET_MT7622 |  	default "media=nor" if TARGET_MT8518 || TARGET_MT8512 || TARGET_MT7629 || TARGET_MT7622 | ||||||
|  	default "media=emmc" if TARGET_MT8516 || TARGET_MT8365 || TARGET_MT8183 |  	default "media=emmc" if TARGET_MT8516 || TARGET_MT8365 || TARGET_MT8183 | ||||||
| @@ -373,7 +379,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
| +obj-y += lowlevel_init.o | +obj-y += lowlevel_init.o | ||||||
| --- /dev/null | --- /dev/null | ||||||
| +++ b/arch/arm/mach-mediatek/mt7981/init.c | +++ b/arch/arm/mach-mediatek/mt7981/init.c | ||||||
| @@ -0,0 +1,51 @@ | @@ -0,0 +1,45 @@ | ||||||
| +// SPDX-License-Identifier: GPL-2.0 | +// SPDX-License-Identifier: GPL-2.0 | ||||||
| +/* | +/* | ||||||
| + * Copyright (C) 2022 MediaTek Inc. | + * Copyright (C) 2022 MediaTek Inc. | ||||||
| @@ -387,12 +393,6 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
| + | + | ||||||
| +DECLARE_GLOBAL_DATA_PTR; | +DECLARE_GLOBAL_DATA_PTR; | ||||||
| + | + | ||||||
| +int print_cpuinfo(void) |  | ||||||
| +{ |  | ||||||
| +	printf("CPU:   MediaTek MT7981\n"); |  | ||||||
| +	return 0; |  | ||||||
| +} |  | ||||||
| + |  | ||||||
| +int dram_init(void) | +int dram_init(void) | ||||||
| +{ | +{ | ||||||
| +	gd->ram_size = get_ram_size((void *)CONFIG_SYS_SDRAM_BASE, SZ_2G); | +	gd->ram_size = get_ram_size((void *)CONFIG_SYS_SDRAM_BASE, SZ_2G); | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| From ab3f81920b4e47bd2894388540363700d5b1e59c Mon Sep 17 00:00:00 2001 | From bad27c737d27f8afc4d597b6de1bdbc26a152ad9 Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Fri, 29 Jul 2022 15:26:31 +0800 | Date: Wed, 31 Aug 2022 19:00:22 +0800 | ||||||
| Subject: [PATCH 03/31] board: mediatek: add MT7986 reference boards | Subject: [PATCH 03/32] board: mediatek: add MT7986 reference boards | ||||||
|  |  | ||||||
| Add general board files based on MT7986 SoCs. | Add general board files based on MT7986 SoCs. | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| From 89a31bfa05c384a2b4e56ddb9814633325b7feab Mon Sep 17 00:00:00 2001 | From 37bcf4d1acb5f7ce93fa0bd59dc313a79004ae34 Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Fri, 29 Jul 2022 16:02:37 +0800 | Date: Wed, 31 Aug 2022 19:00:25 +0800 | ||||||
| Subject: [PATCH 04/31] board: mediatek: add MT7981 reference boards | Subject: [PATCH 04/32] board: mediatek: add MT7981 reference boards | ||||||
|  |  | ||||||
| This patch adds general board files based on MT7981 SoCs. | This patch adds general board files based on MT7981 SoCs. | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| From 3831266fedf14ef415791a93dd03a9e637eb8b5e Mon Sep 17 00:00:00 2001 | From 9a10182f21cc4007f46284d5c64c49dc892336be Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Tue, 26 Jul 2022 09:24:13 +0800 | Date: Wed, 31 Aug 2022 19:04:12 +0800 | ||||||
| Subject: [PATCH 05/31] mmc: mediatek: add support for MediaTek MT7891/MT7986 | Subject: [PATCH 05/32] mmc: mediatek: add support for MediaTek MT7891/MT7986 | ||||||
|  SoCs |  SoCs | ||||||
|  |  | ||||||
| Add eMMC and SDXC support for MediaTek MT7981/MT7986 SoCs | Add eMMC and SDXC support for MediaTek MT7981/MT7986 SoCs | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| From 5c5af768c4cceaa9d7497c3e5bfbc9d1ea8b279c Mon Sep 17 00:00:00 2001 | From ba6af13fd58c0ec418720d959152e0db47e91b02 Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Tue, 26 Jul 2022 10:44:57 +0800 | Date: Wed, 31 Aug 2022 19:04:19 +0800 | ||||||
| Subject: [PATCH 06/31] net: mediatek: use a struct to cover variations of all | Subject: [PATCH 06/32] net: mediatek: use a struct to cover variations of all | ||||||
|  SoCs |  SoCs | ||||||
|  |  | ||||||
| Using a single soc id to control different initialization and TX/RX flow | Using a single soc id to control different initialization and TX/RX flow | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| From b978c067075fddbac341bf551ebef29e78767b75 Mon Sep 17 00:00:00 2001 | From 5f6f3600a334398e27802de33a6a8726aacbe88c Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Wed, 27 Jul 2022 09:32:29 +0800 | Date: Wed, 31 Aug 2022 19:04:23 +0800 | ||||||
| Subject: [PATCH 07/31] net: mediatek: stop using bitfileds for DMA descriptors | Subject: [PATCH 07/32] net: mediatek: stop using bitfileds for DMA descriptors | ||||||
|  |  | ||||||
| This patch is a preparation for adding a new version of PDMA of which the | This patch is a preparation for adding a new version of PDMA of which the | ||||||
| DMA descriptor fields has changed. Using bitfields will result in a complex | DMA descriptor fields has changed. Using bitfields will result in a complex | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| From 2f53795aac940d960bc5f3b08a730c4d480fc5f6 Mon Sep 17 00:00:00 2001 | From 72241607b955639a51b79297776991de7dd59915 Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Wed, 27 Jul 2022 09:56:30 +0800 | Date: Wed, 31 Aug 2022 19:04:27 +0800 | ||||||
| Subject: [PATCH 08/31] net: mediatek: add support for PDMA v2 | Subject: [PATCH 08/32] net: mediatek: add support for PDMA v2 | ||||||
|  |  | ||||||
| This patch adds support for PDMA v2 hardware. The PDMA v2 has extended the | This patch adds support for PDMA v2 hardware. The PDMA v2 has extended the | ||||||
| DMA descriptor to 8-words, and some of its fields have changed comparing | DMA descriptor to 8-words, and some of its fields have changed comparing | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| From 5e06e9a78bbc81f64fdb4c8502a8e7175d8b6216 Mon Sep 17 00:00:00 2001 | From 4bbe44513bf9dc7041b2ce4aac6e841a0e10d2e6 Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Wed, 27 Jul 2022 10:03:17 +0800 | Date: Wed, 31 Aug 2022 19:04:29 +0800 | ||||||
| Subject: [PATCH 09/31] net: mediatek: add support for MediaTek MT7981/MT7986 | Subject: [PATCH 09/32] net: mediatek: add support for MediaTek MT7981/MT7986 | ||||||
|  |  | ||||||
| This patch adds support for MediaTek MT7981 and MT7986. Both chips uses | This patch adds support for MediaTek MT7981 and MT7986. Both chips uses | ||||||
| PDMA v2. | PDMA v2. | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| From 55ed87efb110d13fce6d1a7ee6cb04fac1a2c08a Mon Sep 17 00:00:00 2001 | From d19ad7515a7ef4ee58b5c6606ee9f74c94f28932 Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Wed, 27 Jul 2022 10:28:05 +0800 | Date: Wed, 31 Aug 2022 19:04:32 +0800 | ||||||
| Subject: [PATCH 10/31] serial: mtk: add support for using dynamic baud clock | Subject: [PATCH 10/32] serial: mtk: add support for using dynamic baud clock | ||||||
|  souce |  souce | ||||||
|  |  | ||||||
| The baud clock on some platform may change due to assigned-clock-parent | The baud clock on some platform may change due to assigned-clock-parent | ||||||
| @@ -187,7 +187,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
| @@ -427,13 +441,13 @@ static inline void _debug_uart_init(void | @@ -427,13 +441,13 @@ static inline void _debug_uart_init(void | ||||||
|  	struct mtk_serial_priv priv; |  	struct mtk_serial_priv priv; | ||||||
|   |   | ||||||
|  	priv.regs = (void *) CONFIG_DEBUG_UART_BASE; |  	priv.regs = (void *) CONFIG_VAL(DEBUG_UART_BASE); | ||||||
| -	priv.clock = CONFIG_DEBUG_UART_CLOCK; | -	priv.clock = CONFIG_DEBUG_UART_CLOCK; | ||||||
| +	priv.fixed_clk_rate = CONFIG_DEBUG_UART_CLOCK; | +	priv.fixed_clk_rate = CONFIG_DEBUG_UART_CLOCK; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| From 893368e64049fd770e55fffcc8758d2619dc337d Mon Sep 17 00:00:00 2001 | From 79786aa175010dde78f95970939e8efadd7a3295 Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Mon, 25 Jul 2022 16:33:13 +0800 | Date: Wed, 31 Aug 2022 19:04:34 +0800 | ||||||
| Subject: [PATCH 11/31] arm: dts: mt7622: force high-speed mode for uart | Subject: [PATCH 11/32] arm: dts: mt7622: force high-speed mode for uart | ||||||
|  |  | ||||||
| The input clock for uart is too slow (25MHz) which introduces frequent data | The input clock for uart is too slow (25MHz) which introduces frequent data | ||||||
| error on both receiving and transmitting even if the baudrate is 115200. | error on both receiving and transmitting even if the baudrate is 115200. | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| From 63acbf4ffe328809ca479e5c7d344882810d412c Mon Sep 17 00:00:00 2001 | From d7dae84aad997f4f9b5d039f7ab180bd1f54fa37 Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Wed, 27 Jul 2022 11:00:15 +0800 | Date: Wed, 31 Aug 2022 19:04:35 +0800 | ||||||
| Subject: [PATCH 12/31] pwm: mtk: add support for MediaTek MT7986 SoC | Subject: [PATCH 12/32] pwm: mtk: add support for MediaTek MT7986 SoC | ||||||
|  |  | ||||||
| This patch adds PWM support for MediaTek MT7986 SoC. | This patch adds PWM support for MediaTek MT7986 SoC. | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| From 4569ef02981f20b236a8cdc3a57b4d27fbdbc22e Mon Sep 17 00:00:00 2001 | From 230003c14f7beedf4042bf2258b04e2cd5aac270 Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Wed, 27 Jul 2022 11:01:34 +0800 | Date: Wed, 31 Aug 2022 19:04:38 +0800 | ||||||
| Subject: [PATCH 13/31] pwm: mtk: add support for MediaTek MT7981 SoC | Subject: [PATCH 13/32] pwm: mtk: add support for MediaTek MT7981 SoC | ||||||
|  |  | ||||||
| This patch adds PWM support for MediaTek MT7981 SoC. | This patch adds PWM support for MediaTek MT7981 SoC. | ||||||
| MT7981 uses a different register offset so we have to add a version field | MT7981 uses a different register offset so we have to add a version field | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| From 7860bc58c43dfa939d2664be518c28aea591aeef Mon Sep 17 00:00:00 2001 | From a77b8f6d9aa90f80090e505d823a6dcf6b877136 Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Wed, 27 Jul 2022 11:38:33 +0800 | Date: Wed, 31 Aug 2022 19:04:40 +0800 | ||||||
| Subject: [PATCH 14/31] timer: mtk: add support for MediaTek MT7981/MT7986 SoCs | Subject: [PATCH 14/32] timer: mtk: add support for MediaTek MT7981/MT7986 SoCs | ||||||
|  |  | ||||||
| This patch add general-purpose timer support for MediaTek MT7981/MT7986. | This patch add general-purpose timer support for MediaTek MT7981/MT7986. | ||||||
| These two SoCs uses a newer version of timer with its register definition | These two SoCs uses a newer version of timer with its register definition | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| From ec7e5d3e4d6e9239f3d7ac861f07ca4a52bec9fa Mon Sep 17 00:00:00 2001 | From 18f761770d7aa53abf187fa64bbd92f0682d154c Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Wed, 27 Jul 2022 11:47:50 +0800 | Date: Wed, 31 Aug 2022 19:04:42 +0800 | ||||||
| Subject: [PATCH 15/31] watchdog: mediatek: add support for MediaTek MT7986 SoC | Subject: [PATCH 15/32] watchdog: mediatek: add support for MediaTek MT7986 SoC | ||||||
|  |  | ||||||
| Add watchdog support for MediaTek MT7986 SoC | Add watchdog support for MediaTek MT7986 SoC | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| From f85493e3c2d1e4fd411061540b4f4943c09114df Mon Sep 17 00:00:00 2001 | From e6b225ff8990635dc2d6d8dbd72e78dec1f36c62 Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Wed, 27 Jul 2022 16:58:38 +0800 | Date: Wed, 31 Aug 2022 19:04:45 +0800 | ||||||
| Subject: [PATCH 16/31] spi: add support for MediaTek spi-mem controller | Subject: [PATCH 16/32] spi: add support for MediaTek spi-mem controller | ||||||
|  |  | ||||||
| This patch adds support for spi-mem controller found on newer MediaTek SoCs | This patch adds support for spi-mem controller found on newer MediaTek SoCs | ||||||
| This controller supports Single/Dual/Quad SPI mode. | This controller supports Single/Dual/Quad SPI mode. | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| From de6f2293ab087f405dbcf7b8df45d1f9b03fc091 Mon Sep 17 00:00:00 2001 | From 987dc8d079cd399e753e10fce12d526b42f90ed0 Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Wed, 27 Jul 2022 17:16:38 +0800 | Date: Wed, 31 Aug 2022 19:04:47 +0800 | ||||||
| Subject: [PATCH 17/31] i2c: add support for MediaTek I2C interface | Subject: [PATCH 17/32] i2c: add support for MediaTek I2C interface | ||||||
|  |  | ||||||
| This patch adds support for MediaTek I2C interface | This patch adds support for MediaTek I2C interface | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| From 9ae337317d5634569bda83dfc5e0658fce34b1e2 Mon Sep 17 00:00:00 2001 | From ceb4b900586299b12e2c8edffecef1d09b57eb30 Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Mon, 25 Jul 2022 16:30:30 +0800 | Date: Wed, 31 Aug 2022 19:04:49 +0800 | ||||||
| Subject: [PATCH 18/31] arm: dts: mt7622: add i2c support | Subject: [PATCH 18/32] arm: dts: mt7622: add i2c support | ||||||
|  |  | ||||||
| Add both hardware and software i2c support for mt7622. | Add both hardware and software i2c support for mt7622. | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| From 920ba7b9ba1787fd03dad7a5bdc894073936c197 Mon Sep 17 00:00:00 2001 | From e1c55c0ad21daafcb3551b4f5286c1e11c51acc3 Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Thu, 28 Jul 2022 09:37:26 +0800 | Date: Wed, 31 Aug 2022 19:04:51 +0800 | ||||||
| Subject: [PATCH 19/31] dt-bindings: pinctrl: mediatek: add a header for common | Subject: [PATCH 19/32] dt-bindings: pinctrl: mediatek: add a header for common | ||||||
|  pinconf parameters |  pinconf parameters | ||||||
|  |  | ||||||
| This patch adds a pinctrl header for common pinconf parameters such as | This patch adds a pinctrl header for common pinconf parameters such as | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| From 49e7b1e01cf80437c7e22f8b6579d4a81e7f8a3a Mon Sep 17 00:00:00 2001 | From 95df7f4bfacf810be4f94112ab2a4215f6de288d Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Thu, 28 Jul 2022 09:57:58 +0800 | Date: Wed, 31 Aug 2022 19:04:55 +0800 | ||||||
| Subject: [PATCH 20/31] pinctrl: mediatek: add pinctrl driver for MT7981 SoC | Subject: [PATCH 20/32] pinctrl: mediatek: add pinctrl driver for MT7981 SoC | ||||||
|  |  | ||||||
| This patch adds pinctrl and gpio support for MT7981 SoC | This patch adds pinctrl and gpio support for MT7981 SoC | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| From a018800db986d63cf95b0779ebb33b5e246072a7 Mon Sep 17 00:00:00 2001 | From 201880cacf1498dd4c6749780163157148d0445d Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Thu, 28 Jul 2022 10:01:00 +0800 | Date: Wed, 31 Aug 2022 19:04:57 +0800 | ||||||
| Subject: [PATCH 21/31] pinctrl: mediatek: add pinctrl driver for MT7986 SoC | Subject: [PATCH 21/32] pinctrl: mediatek: add pinctrl driver for MT7986 SoC | ||||||
|  |  | ||||||
| This patch adds pinctrl and gpio support for MT7986 SoC | This patch adds pinctrl and gpio support for MT7986 SoC | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| From 7f6c8bdfe020c45c398c01b417460e3319476606 Mon Sep 17 00:00:00 2001 | From 907d65c5020fefc9944ec57a9e0bd66dc648823e Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Fri, 29 Jul 2022 10:43:39 +0800 | Date: Wed, 31 Aug 2022 19:04:59 +0800 | ||||||
| Subject: [PATCH 22/31] clk: mediatek: add CLK_BYPASS_XTAL flag to allow | Subject: [PATCH 22/32] clk: mediatek: add CLK_BYPASS_XTAL flag to allow | ||||||
|  bypassing searching clock parent of xtal clock |  bypassing searching clock parent of xtal clock | ||||||
|  |  | ||||||
| The mtk clock framework in u-boot uses array index for searching clock | The mtk clock framework in u-boot uses array index for searching clock | ||||||
| @@ -22,26 +22,20 @@ with ID=0 to call mtk_topckgen_get_mux_rate. | |||||||
| Reviewed-by: Simon Glass <sjg@chromium.org> | Reviewed-by: Simon Glass <sjg@chromium.org> | ||||||
| Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| --- | --- | ||||||
|  drivers/clk/mediatek/clk-mtk.c | 5 ++++- |  drivers/clk/mediatek/clk-mtk.c | 4 +++- | ||||||
|  drivers/clk/mediatek/clk-mtk.h | 6 ++++++ |  drivers/clk/mediatek/clk-mtk.h | 6 ++++++ | ||||||
|  2 files changed, 10 insertions(+), 1 deletion(-) |  2 files changed, 9 insertions(+), 1 deletion(-) | ||||||
|  |  | ||||||
| --- a/drivers/clk/mediatek/clk-mtk.c | --- a/drivers/clk/mediatek/clk-mtk.c | ||||||
| +++ b/drivers/clk/mediatek/clk-mtk.c | +++ b/drivers/clk/mediatek/clk-mtk.c | ||||||
| @@ -314,12 +314,15 @@ static ulong mtk_topckgen_get_mux_rate(s | @@ -319,7 +319,9 @@ static ulong mtk_topckgen_get_mux_rate(s | ||||||
|  	struct mtk_clk_priv *priv = dev_get_priv(clk->dev); |  | ||||||
|  	const struct mtk_composite *mux = &priv->tree->muxes[off]; |  | ||||||
|  	u32 index; |  | ||||||
| +	u32 flag = 0; |  | ||||||
|   |  | ||||||
|  	index = readl(priv->base + mux->mux_reg); |  | ||||||
|  	index &= mux->mux_mask << mux->mux_shift; |  	index &= mux->mux_mask << mux->mux_shift; | ||||||
|  	index = index >> mux->mux_shift; |  	index = index >> mux->mux_shift; | ||||||
|   |   | ||||||
| -	if (mux->parent[index]) | -	if (mux->parent[index]) | ||||||
| +	if (mux->parent[index] == CLK_XTAL && priv->tree->flags & CLK_BYPASS_XTAL) | +	if (mux->parent[index] > 0 || | ||||||
| +		flag = 1; | +	    (mux->parent[index] == CLK_XTAL && | ||||||
| +	if (mux->parent[index] > 0 || flag == 1) | +	     priv->tree->flags & CLK_BYPASS_XTAL)) | ||||||
|  		return mtk_clk_find_parent_rate(clk, mux->parent[index], |  		return mtk_clk_find_parent_rate(clk, mux->parent[index], | ||||||
|  						NULL); |  						NULL); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| From cd4d6be5ed0488de2e0df9c388d89ad93d781caa Mon Sep 17 00:00:00 2001 | From 50859bea6a3334834b8250e7e5406507f0d0918a Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Fri, 29 Jul 2022 10:57:05 +0800 | Date: Wed, 31 Aug 2022 19:05:06 +0800 | ||||||
| Subject: [PATCH 23/31] clk: mediatek: add support to configure clock driver | Subject: [PATCH 23/32] clk: mediatek: add support to configure clock driver | ||||||
|  parent |  parent | ||||||
|  |  | ||||||
| This patch adds support for a clock node to configure its parent clock | This patch adds support for a clock node to configure its parent clock | ||||||
| @@ -50,14 +50,14 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
|  		break; |  		break; | ||||||
|  	case CLK_PARENT_TOPCKGEN: |  	case CLK_PARENT_TOPCKGEN: | ||||||
|  		rate = mtk_clk_find_parent_rate(clk, fdiv->parent, NULL); |  		rate = mtk_clk_find_parent_rate(clk, fdiv->parent, NULL); | ||||||
| @@ -322,9 +316,18 @@ static ulong mtk_topckgen_get_mux_rate(s | @@ -321,9 +315,18 @@ static ulong mtk_topckgen_get_mux_rate(s | ||||||
|   |   | ||||||
|  	if (mux->parent[index] == CLK_XTAL && priv->tree->flags & CLK_BYPASS_XTAL) |  	if (mux->parent[index] > 0 || | ||||||
|  		flag = 1; |  	    (mux->parent[index] == CLK_XTAL && | ||||||
| -	if (mux->parent[index] > 0 || flag == 1) | -	     priv->tree->flags & CLK_BYPASS_XTAL)) | ||||||
| -		return mtk_clk_find_parent_rate(clk, mux->parent[index], | -		return mtk_clk_find_parent_rate(clk, mux->parent[index], | ||||||
| -						NULL); | -						NULL); | ||||||
| +	if (mux->parent[index] > 0 || flag == 1) { | +	     priv->tree->flags & CLK_BYPASS_XTAL)) { | ||||||
| +		switch (mux->flags & CLK_PARENT_MASK) { | +		switch (mux->flags & CLK_PARENT_MASK) { | ||||||
| +		case CLK_PARENT_APMIXED: | +		case CLK_PARENT_APMIXED: | ||||||
| +			return mtk_clk_find_parent_rate(clk, mux->parent[index], | +			return mtk_clk_find_parent_rate(clk, mux->parent[index], | ||||||
| @@ -72,7 +72,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
|   |   | ||||||
|  	return priv->tree->xtal_rate; |  	return priv->tree->xtal_rate; | ||||||
|  } |  } | ||||||
| @@ -343,7 +346,7 @@ static ulong mtk_topckgen_get_rate(struc | @@ -342,7 +345,7 @@ static ulong mtk_topckgen_get_rate(struc | ||||||
|  						 priv->tree->muxes_offs); |  						 priv->tree->muxes_offs); | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -81,7 +81,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
|  { |  { | ||||||
|  	struct mtk_clk_priv *priv = dev_get_priv(clk->dev); |  	struct mtk_clk_priv *priv = dev_get_priv(clk->dev); | ||||||
|  	const struct mtk_composite *mux; |  	const struct mtk_composite *mux; | ||||||
| @@ -376,7 +379,7 @@ static int mtk_topckgen_enable(struct cl | @@ -375,7 +378,7 @@ static int mtk_topckgen_enable(struct cl | ||||||
|  	return 0; |  	return 0; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -90,7 +90,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
|  { |  { | ||||||
|  	struct mtk_clk_priv *priv = dev_get_priv(clk->dev); |  	struct mtk_clk_priv *priv = dev_get_priv(clk->dev); | ||||||
|  	const struct mtk_composite *mux; |  	const struct mtk_composite *mux; | ||||||
| @@ -402,7 +405,7 @@ static int mtk_topckgen_disable(struct c | @@ -401,7 +404,7 @@ static int mtk_topckgen_disable(struct c | ||||||
|  	return 0; |  	return 0; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -99,7 +99,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
|  { |  { | ||||||
|  	struct mtk_clk_priv *priv = dev_get_priv(clk->dev); |  	struct mtk_clk_priv *priv = dev_get_priv(clk->dev); | ||||||
|   |   | ||||||
| @@ -474,19 +477,7 @@ static ulong mtk_clk_gate_get_rate(struc | @@ -473,19 +476,7 @@ static ulong mtk_clk_gate_get_rate(struc | ||||||
|  	struct mtk_cg_priv *priv = dev_get_priv(clk->dev); |  	struct mtk_cg_priv *priv = dev_get_priv(clk->dev); | ||||||
|  	const struct mtk_gate *gate = &priv->gates[clk->id]; |  	const struct mtk_gate *gate = &priv->gates[clk->id]; | ||||||
|   |   | ||||||
| @@ -120,7 +120,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
|  } |  } | ||||||
|   |   | ||||||
|  const struct clk_ops mtk_clk_apmixedsys_ops = { |  const struct clk_ops mtk_clk_apmixedsys_ops = { | ||||||
| @@ -497,10 +488,10 @@ const struct clk_ops mtk_clk_apmixedsys_ | @@ -496,10 +487,10 @@ const struct clk_ops mtk_clk_apmixedsys_ | ||||||
|  }; |  }; | ||||||
|   |   | ||||||
|  const struct clk_ops mtk_clk_topckgen_ops = { |  const struct clk_ops mtk_clk_topckgen_ops = { | ||||||
| @@ -134,7 +134,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
|  }; |  }; | ||||||
|   |   | ||||||
|  const struct clk_ops mtk_clk_gate_ops = { |  const struct clk_ops mtk_clk_gate_ops = { | ||||||
| @@ -513,11 +504,22 @@ int mtk_common_clk_init(struct udevice * | @@ -512,11 +503,22 @@ int mtk_common_clk_init(struct udevice * | ||||||
|  			const struct mtk_clk_tree *tree) |  			const struct mtk_clk_tree *tree) | ||||||
|  { |  { | ||||||
|  	struct mtk_clk_priv *priv = dev_get_priv(dev); |  	struct mtk_clk_priv *priv = dev_get_priv(dev); | ||||||
| @@ -157,7 +157,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
|  	priv->tree = tree; |  	priv->tree = tree; | ||||||
|   |   | ||||||
|  	return 0; |  	return 0; | ||||||
| @@ -528,11 +530,22 @@ int mtk_common_clk_gate_init(struct udev | @@ -527,11 +529,22 @@ int mtk_common_clk_gate_init(struct udev | ||||||
|  			     const struct mtk_gate *gates) |  			     const struct mtk_gate *gates) | ||||||
|  { |  { | ||||||
|  	struct mtk_cg_priv *priv = dev_get_priv(dev); |  	struct mtk_cg_priv *priv = dev_get_priv(dev); | ||||||
|   | |||||||
| @@ -1,16 +1,16 @@ | |||||||
| From e9c0c2ebd346aa578007c2aa88fc0974af6afb40 Mon Sep 17 00:00:00 2001 | From c53d249df9a75f77f5d0abb986a8913bc13070d0 Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Fri, 29 Jul 2022 11:14:33 +0800 | Date: Wed, 31 Aug 2022 19:05:09 +0800 | ||||||
| Subject: [PATCH 24/31] clk: mediatek: add infrasys clock mux support | Subject: [PATCH 24/32] clk: mediatek: add infrasys clock mux support | ||||||
|  |  | ||||||
| This patch adds infrasys clock mux support for mediatek clock drivers. | This patch adds infrasys clock mux support for mediatek clock drivers. | ||||||
|  |  | ||||||
| Reviewed-by: Simon Glass <sjg@chromium.org> | Reviewed-by: Simon Glass <sjg@chromium.org> | ||||||
| Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| --- | --- | ||||||
|  drivers/clk/mediatek/clk-mtk.c | 72 ++++++++++++++++++++++++++++++++++ |  drivers/clk/mediatek/clk-mtk.c | 71 ++++++++++++++++++++++++++++++++++ | ||||||
|  drivers/clk/mediatek/clk-mtk.h |  4 +- |  drivers/clk/mediatek/clk-mtk.h |  4 +- | ||||||
|  2 files changed, 75 insertions(+), 1 deletion(-) |  2 files changed, 74 insertions(+), 1 deletion(-) | ||||||
|  |  | ||||||
| --- a/drivers/clk/mediatek/clk-mtk.c | --- a/drivers/clk/mediatek/clk-mtk.c | ||||||
| +++ b/drivers/clk/mediatek/clk-mtk.c | +++ b/drivers/clk/mediatek/clk-mtk.c | ||||||
| @@ -39,7 +39,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
|  static ulong mtk_topckgen_get_mux_rate(struct clk *clk, u32 off) |  static ulong mtk_topckgen_get_mux_rate(struct clk *clk, u32 off) | ||||||
|  { |  { | ||||||
|  	struct mtk_clk_priv *priv = dev_get_priv(clk->dev); |  	struct mtk_clk_priv *priv = dev_get_priv(clk->dev); | ||||||
| @@ -332,6 +350,34 @@ static ulong mtk_topckgen_get_mux_rate(s | @@ -331,6 +349,33 @@ static ulong mtk_topckgen_get_mux_rate(s | ||||||
|  	return priv->tree->xtal_rate; |  	return priv->tree->xtal_rate; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -48,15 +48,14 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
| +	struct mtk_clk_priv *priv = dev_get_priv(clk->dev); | +	struct mtk_clk_priv *priv = dev_get_priv(clk->dev); | ||||||
| +	const struct mtk_composite *mux = &priv->tree->muxes[off]; | +	const struct mtk_composite *mux = &priv->tree->muxes[off]; | ||||||
| +	u32 index; | +	u32 index; | ||||||
| +	u32 flag; |  | ||||||
| + | + | ||||||
| +	index = readl(priv->base + mux->mux_reg); | +	index = readl(priv->base + mux->mux_reg); | ||||||
| +	index &= mux->mux_mask << mux->mux_shift; | +	index &= mux->mux_mask << mux->mux_shift; | ||||||
| +	index = index >> mux->mux_shift; | +	index = index >> mux->mux_shift; | ||||||
| + | + | ||||||
| +	if (mux->parent[index] == CLK_XTAL && priv->tree->flags & CLK_BYPASS_XTAL) | +	if (mux->parent[index] > 0 || | ||||||
| +		flag = 1; | +	    (mux->parent[index] == CLK_XTAL && | ||||||
| +	if (mux->parent[index] > 0 || flag == 1) { | +	     priv->tree->flags & CLK_BYPASS_XTAL)) { | ||||||
| +		switch (mux->flags & CLK_PARENT_MASK) { | +		switch (mux->flags & CLK_PARENT_MASK) { | ||||||
| +		case CLK_PARENT_TOPCKGEN: | +		case CLK_PARENT_TOPCKGEN: | ||||||
| +			return mtk_clk_find_parent_rate(clk, mux->parent[index], | +			return mtk_clk_find_parent_rate(clk, mux->parent[index], | ||||||
| @@ -74,7 +73,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
|  static ulong mtk_topckgen_get_rate(struct clk *clk) |  static ulong mtk_topckgen_get_rate(struct clk *clk) | ||||||
|  { |  { | ||||||
|  	struct mtk_clk_priv *priv = dev_get_priv(clk->dev); |  	struct mtk_clk_priv *priv = dev_get_priv(clk->dev); | ||||||
| @@ -346,6 +392,25 @@ static ulong mtk_topckgen_get_rate(struc | @@ -345,6 +390,25 @@ static ulong mtk_topckgen_get_rate(struc | ||||||
|  						 priv->tree->muxes_offs); |  						 priv->tree->muxes_offs); | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -100,7 +99,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
|  static int mtk_clk_mux_enable(struct clk *clk) |  static int mtk_clk_mux_enable(struct clk *clk) | ||||||
|  { |  { | ||||||
|  	struct mtk_clk_priv *priv = dev_get_priv(clk->dev); |  	struct mtk_clk_priv *priv = dev_get_priv(clk->dev); | ||||||
| @@ -494,6 +559,13 @@ const struct clk_ops mtk_clk_topckgen_op | @@ -493,6 +557,13 @@ const struct clk_ops mtk_clk_topckgen_op | ||||||
|  	.set_parent = mtk_common_clk_set_parent, |  	.set_parent = mtk_common_clk_set_parent, | ||||||
|  }; |  }; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -1,10 +1,10 @@ | |||||||
| From cf70b726c9844bb5d1ba4bc3c202c5ab3ba4d421 Mon Sep 17 00:00:00 2001 | From 0a2cd71e3b16eaa8797b5eec78356970186e552e Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Fri, 29 Jul 2022 11:15:35 +0800 | Date: Wed, 31 Aug 2022 19:05:11 +0800 | ||||||
| Subject: [PATCH 25/31] clk: mediatek: add CLK_XTAL support for clock driver | Subject: [PATCH 25/32] clk: mediatek: add CLK_XTAL support for clock driver | ||||||
|  |  | ||||||
| This add CLK_XTAL macro and flag to mediatek clock driver common part, | This adds the CLK_XTAL macro/flag to allow modeling clocks which are | ||||||
| to make thi SoC that has clock directlly connect to XTAL working. | directly connected to the xtal clock. | ||||||
|  |  | ||||||
| Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| --- | --- | ||||||
|   | |||||||
| @@ -1,11 +1,12 @@ | |||||||
| From ba4acf55044a8a11fc7e11a558a8a93e3c126391 Mon Sep 17 00:00:00 2001 | From 54b66dd24310dba4798caa6e4c02b8571f522602 Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Fri, 29 Jul 2022 11:21:59 +0800 | Date: Wed, 31 Aug 2022 19:05:13 +0800 | ||||||
| Subject: [PATCH 26/31] clk: mediatek: add clock driver support for MediaTek | Subject: [PATCH 26/32] clk: mediatek: add clock driver support for MediaTek | ||||||
|  MT7986 SoC |  MT7986 SoC | ||||||
|  |  | ||||||
| This patch adds clock driver support for MediaTek MT7986 SoC | This patch adds clock driver support for MediaTek MT7986 SoC | ||||||
|  |  | ||||||
|  | Reviewed-by: Sean Anderson <seanga2@gmail.com> | ||||||
| Reviewed-by: Simon Glass <sjg@chromium.org> | Reviewed-by: Simon Glass <sjg@chromium.org> | ||||||
| Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| --- | --- | ||||||
|   | |||||||
| @@ -1,11 +1,12 @@ | |||||||
| From 79bca945dbfafcd08d71437b11e8ee57d64b4305 Mon Sep 17 00:00:00 2001 | From d525836896235c4678f6144cc4608d5b15e02660 Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Fri, 29 Jul 2022 11:22:51 +0800 | Date: Wed, 31 Aug 2022 19:05:16 +0800 | ||||||
| Subject: [PATCH 27/31] clk: mediatek: add clock driver support for MediaTek | Subject: [PATCH 27/32] clk: mediatek: add clock driver support for MediaTek | ||||||
|  MT7981 SoC |  MT7981 SoC | ||||||
|  |  | ||||||
| This patch adds clock driver support for MediaTek MT7981 SoC | This patch adds clock driver support for MediaTek MT7981 SoC | ||||||
|  |  | ||||||
|  | Reviewed-by: Sean Anderson <seanga2@gmail.com> | ||||||
| Reviewed-by: Simon Glass <sjg@chromium.org> | Reviewed-by: Simon Glass <sjg@chromium.org> | ||||||
| Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| --- | --- | ||||||
|   | |||||||
| @@ -0,0 +1,133 @@ | |||||||
|  | From e3c707d23a3a5bc1ba9b8c03731a32c3714ae56a Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
|  | Date: Wed, 31 Aug 2022 19:05:20 +0800 | ||||||
|  | Subject: [PATCH 28/32] cpu: add basic cpu driver for MediaTek ARM chips | ||||||
|  |  | ||||||
|  | Add basic CPU driver used to retrieve CPU model information. | ||||||
|  |  | ||||||
|  | Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | ||||||
|  | --- | ||||||
|  |  drivers/cpu/Makefile  |   1 + | ||||||
|  |  drivers/cpu/mtk_cpu.c | 106 ++++++++++++++++++++++++++++++++++++++++++ | ||||||
|  |  2 files changed, 107 insertions(+) | ||||||
|  |  create mode 100644 drivers/cpu/mtk_cpu.c | ||||||
|  |  | ||||||
|  | --- a/drivers/cpu/Makefile | ||||||
|  | +++ b/drivers/cpu/Makefile | ||||||
|  | @@ -9,6 +9,7 @@ obj-$(CONFIG_CPU) += cpu-uclass.o | ||||||
|  |  obj-$(CONFIG_ARCH_BMIPS) += bmips_cpu.o | ||||||
|  |  obj-$(CONFIG_ARCH_IMX8) += imx8_cpu.o | ||||||
|  |  obj-$(CONFIG_ARCH_AT91) += at91_cpu.o | ||||||
|  | +obj-$(CONFIG_ARCH_MEDIATEK) += mtk_cpu.o | ||||||
|  |  obj-$(CONFIG_CPU_MPC83XX) += mpc83xx_cpu.o | ||||||
|  |  obj-$(CONFIG_CPU_RISCV) += riscv_cpu.o | ||||||
|  |  obj-$(CONFIG_SANDBOX) += cpu_sandbox.o | ||||||
|  | --- /dev/null | ||||||
|  | +++ b/drivers/cpu/mtk_cpu.c | ||||||
|  | @@ -0,0 +1,106 @@ | ||||||
|  | +// SPDX-License-Identifier: GPL-2.0 | ||||||
|  | +/* | ||||||
|  | + * Copyright (C) 2022 MediaTek Inc. All rights reserved. | ||||||
|  | + * | ||||||
|  | + * Author: Weijie Gao <weijie.gao@mediatek.com> | ||||||
|  | + */ | ||||||
|  | + | ||||||
|  | +#include <linux/types.h> | ||||||
|  | +#include <cpu.h> | ||||||
|  | +#include <dm.h> | ||||||
|  | +#include <fdt_support.h> | ||||||
|  | +#include <mapmem.h> | ||||||
|  | +#include <asm/global_data.h> | ||||||
|  | +#include <linux/io.h> | ||||||
|  | + | ||||||
|  | +DECLARE_GLOBAL_DATA_PTR; | ||||||
|  | + | ||||||
|  | +struct mtk_cpu_plat { | ||||||
|  | +	void __iomem *hwver_base; | ||||||
|  | +}; | ||||||
|  | + | ||||||
|  | +static int mtk_cpu_get_desc(const struct udevice *dev, char *buf, int size) | ||||||
|  | +{ | ||||||
|  | +	struct mtk_cpu_plat *plat = dev_get_plat(dev); | ||||||
|  | + | ||||||
|  | +	snprintf(buf, size, "MediaTek MT%04X", readl(plat->hwver_base)); | ||||||
|  | + | ||||||
|  | +	return 0; | ||||||
|  | +} | ||||||
|  | + | ||||||
|  | +static int mtk_cpu_get_count(const struct udevice *dev) | ||||||
|  | +{ | ||||||
|  | +	return 1; | ||||||
|  | +} | ||||||
|  | + | ||||||
|  | +static int mtk_cpu_get_vendor(const struct udevice *dev, char *buf, int size) | ||||||
|  | +{ | ||||||
|  | +	snprintf(buf, size, "MediaTek"); | ||||||
|  | + | ||||||
|  | +	return 0; | ||||||
|  | +} | ||||||
|  | + | ||||||
|  | +static int mtk_cpu_probe(struct udevice *dev) | ||||||
|  | +{ | ||||||
|  | +	struct mtk_cpu_plat *plat = dev_get_plat(dev); | ||||||
|  | +	const void *fdt = gd->fdt_blob, *reg; | ||||||
|  | +	int offset, parent, len, na, ns; | ||||||
|  | +	u64 addr; | ||||||
|  | + | ||||||
|  | +	if (!fdt) | ||||||
|  | +		return -ENODEV; | ||||||
|  | + | ||||||
|  | +	offset = fdt_path_offset(fdt, "/hwver"); | ||||||
|  | +	if (offset < 0) | ||||||
|  | +		return -ENODEV; | ||||||
|  | + | ||||||
|  | +	parent = fdt_parent_offset(fdt, offset); | ||||||
|  | +	if (parent < 0) | ||||||
|  | +		return -ENODEV; | ||||||
|  | + | ||||||
|  | +	na = fdt_address_cells(fdt, parent); | ||||||
|  | +	if (na < 1) | ||||||
|  | +		return -ENODEV; | ||||||
|  | + | ||||||
|  | +	ns = fdt_size_cells(gd->fdt_blob, parent); | ||||||
|  | +	if (ns < 0) | ||||||
|  | +		return -ENODEV; | ||||||
|  | + | ||||||
|  | +	reg = fdt_getprop(gd->fdt_blob, offset, "reg", &len); | ||||||
|  | +	if (!reg) | ||||||
|  | +		return -ENODEV; | ||||||
|  | + | ||||||
|  | +	if (ns) | ||||||
|  | +		addr = fdt_translate_address(fdt, offset, reg); | ||||||
|  | +	else | ||||||
|  | +		addr = fdt_read_number(reg, na); | ||||||
|  | + | ||||||
|  | +	plat->hwver_base = map_sysmem(addr, 0); | ||||||
|  | +	if (!plat->hwver_base) | ||||||
|  | +		return -EINVAL; | ||||||
|  | + | ||||||
|  | +	return 0; | ||||||
|  | +} | ||||||
|  | + | ||||||
|  | +static const struct cpu_ops mtk_cpu_ops = { | ||||||
|  | +	.get_desc	= mtk_cpu_get_desc, | ||||||
|  | +	.get_count	= mtk_cpu_get_count, | ||||||
|  | +	.get_vendor	= mtk_cpu_get_vendor, | ||||||
|  | +}; | ||||||
|  | + | ||||||
|  | +static const struct udevice_id mtk_cpu_ids[] = { | ||||||
|  | +	{ .compatible = "arm,cortex-a7" }, | ||||||
|  | +	{ .compatible = "arm,cortex-a53" }, | ||||||
|  | +	{ .compatible = "arm,cortex-a73" }, | ||||||
|  | +	{ /* sentinel */ } | ||||||
|  | +}; | ||||||
|  | + | ||||||
|  | +U_BOOT_DRIVER(cpu_mtk) = { | ||||||
|  | +	.name		= "mtk-cpu", | ||||||
|  | +	.id		= UCLASS_CPU, | ||||||
|  | +	.of_match	= mtk_cpu_ids, | ||||||
|  | +	.ops		= &mtk_cpu_ops, | ||||||
|  | +	.probe		= mtk_cpu_probe, | ||||||
|  | +	.plat_auto	= sizeof(struct mtk_cpu_plat), | ||||||
|  | +	.flags		= DM_FLAG_PRE_RELOC, | ||||||
|  | +}; | ||||||
| @@ -1,7 +1,7 @@ | |||||||
| From b6bb61fd3818f4a3025fedbe4d15dbeeaef6ee82 Mon Sep 17 00:00:00 2001 | From 1c9174cbf57ddc75bb5a25b2563333d974fd1a55 Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Tue, 2 Aug 2022 17:21:34 +0800 | Date: Wed, 31 Aug 2022 19:05:22 +0800 | ||||||
| Subject: [PATCH 28/31] tools: mtk_image: split gfh header verification into a | Subject: [PATCH 29/32] tools: mtk_image: split gfh header verification into a | ||||||
|  new function |  new function | ||||||
| 
 | 
 | ||||||
| The verification code of gfh header for NAND and non-NAND are identical. | The verification code of gfh header for NAND and non-NAND are identical. | ||||||
| @@ -1,7 +1,7 @@ | |||||||
| From 20ebf03eab571b25e9f62b2764ab84932111dcd6 Mon Sep 17 00:00:00 2001 | From 8867a5e66369d4a7da667e0f505597e1ac91209e Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Tue, 2 Aug 2022 17:23:57 +0800 | Date: Wed, 31 Aug 2022 19:05:24 +0800 | ||||||
| Subject: [PATCH 29/31] tools: mtk_image: split the code of generating NAND | Subject: [PATCH 30/32] tools: mtk_image: split the code of generating NAND | ||||||
|  header into a new file |  header into a new file | ||||||
| 
 | 
 | ||||||
| The predefined NAND headers take too much spaces in the mtk_image.c. | The predefined NAND headers take too much spaces in the mtk_image.c. | ||||||
| @@ -1,7 +1,7 @@ | |||||||
| From fbf296f9ed5daab70020686e9ba072efe663bbab Mon Sep 17 00:00:00 2001 | From d459092aca25e081401606e18b7097f33b575188 Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Wed, 3 Aug 2022 11:14:36 +0800 | Date: Wed, 31 Aug 2022 19:05:26 +0800 | ||||||
| Subject: [PATCH 30/31] tools: mtk_image: add support for nand headers used by | Subject: [PATCH 31/32] tools: mtk_image: add support for nand headers used by | ||||||
|  newer chips |  newer chips | ||||||
| 
 | 
 | ||||||
| This patch adds more nand headers in two new types: | This patch adds more nand headers in two new types: | ||||||
| @@ -1,7 +1,7 @@ | |||||||
| From ca90c165157c19af9bf46a69dcf719b8aab636b1 Mon Sep 17 00:00:00 2001 | From 180f8ce7cac9277406ee702ea9390a6f78981bda Mon Sep 17 00:00:00 2001 | ||||||
| From: Weijie Gao <weijie.gao@mediatek.com> | From: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| Date: Thu, 4 Aug 2022 09:50:40 +0800 | Date: Wed, 31 Aug 2022 19:05:28 +0800 | ||||||
| Subject: [PATCH 31/31] MAINTAINERS: update maintainer for MediaTek ARM | Subject: [PATCH 32/32] MAINTAINERS: update maintainer for MediaTek ARM | ||||||
|  platform |  platform | ||||||
| 
 | 
 | ||||||
| Add new files for MediaTek ARM platform | Add new files for MediaTek ARM platform | ||||||
| @@ -9,15 +9,16 @@ Add new files for MediaTek ARM platform | |||||||
| Reviewed-by: Simon Glass <sjg@chromium.org> | Reviewed-by: Simon Glass <sjg@chromium.org> | ||||||
| Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | ||||||
| ---
 | ---
 | ||||||
|  MAINTAINERS | 5 +++++ |  MAINTAINERS | 6 ++++++ | ||||||
|  1 file changed, 5 insertions(+) |  1 file changed, 6 insertions(+) | ||||||
| 
 | 
 | ||||||
| --- a/MAINTAINERS
 | --- a/MAINTAINERS
 | ||||||
| +++ b/MAINTAINERS
 | +++ b/MAINTAINERS
 | ||||||
| @@ -340,20 +340,25 @@ F:	doc/device-tree-bindings/phy/phy-mtk-
 | @@ -340,20 +340,26 @@ F:	doc/device-tree-bindings/phy/phy-mtk-
 | ||||||
|  F:	doc/device-tree-bindings/usb/mediatek,* |  F:	doc/device-tree-bindings/usb/mediatek,* | ||||||
|  F:	doc/README.mediatek |  F:	doc/README.mediatek | ||||||
|  F:	drivers/clk/mediatek/ |  F:	drivers/clk/mediatek/ | ||||||
|  | +F:	drivers/cpu/mtk_cpu.c
 | ||||||
| +F:	drivers/i2c/mtk_i2c.c
 | +F:	drivers/i2c/mtk_i2c.c
 | ||||||
|  F:	drivers/mmc/mtk-sd.c |  F:	drivers/mmc/mtk-sd.c | ||||||
|  F:	drivers/phy/phy-mtk-* |  F:	drivers/phy/phy-mtk-* | ||||||
| @@ -89,7 +89,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com> | |||||||
|  		reg = <0x11014000 0x1000>; |  		reg = <0x11014000 0x1000>; | ||||||
| --- a/arch/arm/mach-mediatek/Kconfig | --- a/arch/arm/mach-mediatek/Kconfig | ||||||
| +++ b/arch/arm/mach-mediatek/Kconfig | +++ b/arch/arm/mach-mediatek/Kconfig | ||||||
| @@ -131,9 +131,11 @@ config SYS_CONFIG_NAME | @@ -133,9 +133,11 @@ config SYS_CONFIG_NAME | ||||||
|   |   | ||||||
|  config MTK_BROM_HEADER_INFO |  config MTK_BROM_HEADER_INFO | ||||||
|  	string |  	string | ||||||
|   | |||||||
| @@ -40,7 +40,7 @@ | |||||||
|  } |  } | ||||||
| --- a/arch/arm/mach-mediatek/Kconfig | --- a/arch/arm/mach-mediatek/Kconfig | ||||||
| +++ b/arch/arm/mach-mediatek/Kconfig | +++ b/arch/arm/mach-mediatek/Kconfig | ||||||
| @@ -138,4 +138,8 @@ config MTK_BROM_HEADER_INFO | @@ -140,4 +140,8 @@ config MTK_BROM_HEADER_INFO | ||||||
|   |   | ||||||
|  source "board/mediatek/mt7629/Kconfig" |  source "board/mediatek/mt7629/Kconfig" | ||||||
|   |   | ||||||
|   | |||||||
| @@ -51,6 +51,7 @@ | |||||||
| +CONFIG_CMD_BUTTON=y | +CONFIG_CMD_BUTTON=y | ||||||
| +CONFIG_CMD_CACHE=y | +CONFIG_CMD_CACHE=y | ||||||
| +CONFIG_CMD_CDP=y | +CONFIG_CMD_CDP=y | ||||||
|  | +CONFIG_CMD_CPU=y | ||||||
| +CONFIG_CMD_DHCP=y | +CONFIG_CMD_DHCP=y | ||||||
| +CONFIG_CMD_DM=y | +CONFIG_CMD_DM=y | ||||||
| +CONFIG_CMD_DNS=y | +CONFIG_CMD_DNS=y | ||||||
| @@ -246,6 +247,7 @@ | |||||||
| +CONFIG_CMD_BUTTON=y | +CONFIG_CMD_BUTTON=y | ||||||
| +CONFIG_CMD_CACHE=y | +CONFIG_CMD_CACHE=y | ||||||
| +CONFIG_CMD_CDP=y | +CONFIG_CMD_CDP=y | ||||||
|  | +CONFIG_CMD_CPU=y | ||||||
| +CONFIG_CMD_DHCP=y | +CONFIG_CMD_DHCP=y | ||||||
| +CONFIG_CMD_DM=y | +CONFIG_CMD_DM=y | ||||||
| +CONFIG_CMD_DNS=y | +CONFIG_CMD_DNS=y | ||||||
| @@ -442,6 +444,7 @@ | |||||||
| +CONFIG_CMD_BUTTON=y | +CONFIG_CMD_BUTTON=y | ||||||
| +CONFIG_CMD_CACHE=y | +CONFIG_CMD_CACHE=y | ||||||
| +CONFIG_CMD_CDP=y | +CONFIG_CMD_CDP=y | ||||||
|  | +CONFIG_CMD_CPU=y | ||||||
| +CONFIG_CMD_DHCP=y | +CONFIG_CMD_DHCP=y | ||||||
| +CONFIG_CMD_DM=y | +CONFIG_CMD_DM=y | ||||||
| +CONFIG_CMD_DNS=y | +CONFIG_CMD_DNS=y | ||||||
| @@ -637,6 +640,7 @@ | |||||||
| +CONFIG_CMD_BUTTON=y | +CONFIG_CMD_BUTTON=y | ||||||
| +CONFIG_CMD_CACHE=y | +CONFIG_CMD_CACHE=y | ||||||
| +CONFIG_CMD_CDP=y | +CONFIG_CMD_CDP=y | ||||||
|  | +CONFIG_CMD_CPU=y | ||||||
| +CONFIG_CMD_DHCP=y | +CONFIG_CMD_DHCP=y | ||||||
| +CONFIG_CMD_DM=y | +CONFIG_CMD_DM=y | ||||||
| +CONFIG_CMD_DNS=y | +CONFIG_CMD_DNS=y | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Daniel Golle
					Daniel Golle