All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kever Yang <kever.yang@rock-chips.com>
To: Johan Jonker <jbx6244@gmail.com>
Cc: sjg@chromium.org, philipp.tomsich@vrull.eu, lukma@denx.de,
	seanga2@gmail.com, u-boot@lists.denx.de
Subject: Re: [PATCH v9 12/16] rockchip: rk3066: add core support
Date: Sat, 9 Apr 2022 11:55:02 +0800	[thread overview]
Message-ID: <4fcf51b5-ec79-42d8-f13a-70997d92d5dc@rock-chips.com> (raw)
In-Reply-To: <20220404141926.6085-13-jbx6244@gmail.com>

Hi Johan,

Please squash patch 10~12 into one patch.


Thanks,

- Kever

On 2022/4/4 22:19, Johan Jonker wrote:
> Add the core architecture code for the rk3066.
>
> Signed-off-by: Johan Jonker <jbx6244@gmail.com>
> ---
>   arch/arm/mach-rockchip/Kconfig                | 23 ++++++++
>   arch/arm/mach-rockchip/Makefile               |  1 +
>   arch/arm/mach-rockchip/rk3066/Kconfig         | 30 ++++++++++
>   arch/arm/mach-rockchip/rk3066/Makefile        |  5 ++
>   arch/arm/mach-rockchip/rk3066/clk_rk3066.c    | 33 +++++++++++
>   arch/arm/mach-rockchip/rk3066/rk3066.c        | 49 +++++++++++++++++
>   arch/arm/mach-rockchip/rk3066/syscon_rk3066.c | 55 +++++++++++++++++++
>   7 files changed, 196 insertions(+)
>   create mode 100644 arch/arm/mach-rockchip/rk3066/Kconfig
>   create mode 100644 arch/arm/mach-rockchip/rk3066/Makefile
>   create mode 100644 arch/arm/mach-rockchip/rk3066/clk_rk3066.c
>   create mode 100644 arch/arm/mach-rockchip/rk3066/rk3066.c
>   create mode 100644 arch/arm/mach-rockchip/rk3066/syscon_rk3066.c
>
> diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig
> index 811964973a..18aff5480b 100644
> --- a/arch/arm/mach-rockchip/Kconfig
> +++ b/arch/arm/mach-rockchip/Kconfig
> @@ -35,6 +35,28 @@ config ROCKCHIP_RK3036
>   	  and video codec support. Peripherals include Gigabit Ethernet,
>   	  USB2 host and OTG, SDIO, I2S, UART, SPI, I2C and PWMs.
>   
> +config ROCKCHIP_RK3066
> +	bool "Support Rockchip RK3066"
> +	select CPU_V7A
> +	select SPL_BOARD_INIT if SPL
> +	select SUPPORT_SPL
> +	select SUPPORT_TPL
> +	select SPL
> +	select TPL
> +	select TPL_ROCKCHIP_BACK_TO_BROM
> +	select TPL_ROCKCHIP_EARLYRETURN_TO_BROM
> +	imply ROCKCHIP_COMMON_BOARD
> +	imply SPL_ROCKCHIP_COMMON_BOARD
> +	imply SPL_SERIAL
> +	imply TPL_ROCKCHIP_COMMON_BOARD
> +	imply TPL_SERIAL
> +	help
> +	  The Rockchip RK3066 is a ARM-based SoC with a dual-core Cortex-A9
> +	  including NEON and GPU, 512KB L2 cache, Mali-400 graphics, two
> +	  video interfaces, several memory options and video codec support.
> +	  Peripherals include Fast Ethernet, USB2 host and OTG, SDIO, I2S,
> +	  UART, SPI, I2C and PWMs.
> +
>   config ROCKCHIP_RK3128
>   	bool "Support Rockchip RK3128"
>   	select CPU_V7A
> @@ -405,6 +427,7 @@ config LNX_KRNL_IMG_TEXT_OFFSET_BASE
>   
>   source "arch/arm/mach-rockchip/px30/Kconfig"
>   source "arch/arm/mach-rockchip/rk3036/Kconfig"
> +source "arch/arm/mach-rockchip/rk3066/Kconfig"
>   source "arch/arm/mach-rockchip/rk3128/Kconfig"
>   source "arch/arm/mach-rockchip/rk3188/Kconfig"
>   source "arch/arm/mach-rockchip/rk322x/Kconfig"
> diff --git a/arch/arm/mach-rockchip/Makefile b/arch/arm/mach-rockchip/Makefile
> index 00aef0ecee..6c1c7b8a10 100644
> --- a/arch/arm/mach-rockchip/Makefile
> +++ b/arch/arm/mach-rockchip/Makefile
> @@ -34,6 +34,7 @@ obj-$(CONFIG_$(SPL_TPL_)RAM) += sdram.o
>   
>   obj-$(CONFIG_ROCKCHIP_PX30) += px30/
>   obj-$(CONFIG_ROCKCHIP_RK3036) += rk3036/
> +obj-$(CONFIG_ROCKCHIP_RK3066) += rk3066/
>   obj-$(CONFIG_ROCKCHIP_RK3128) += rk3128/
>   obj-$(CONFIG_ROCKCHIP_RK3188) += rk3188/
>   obj-$(CONFIG_ROCKCHIP_RK322X) += rk322x/
> diff --git a/arch/arm/mach-rockchip/rk3066/Kconfig b/arch/arm/mach-rockchip/rk3066/Kconfig
> new file mode 100644
> index 0000000000..335f49bc55
> --- /dev/null
> +++ b/arch/arm/mach-rockchip/rk3066/Kconfig
> @@ -0,0 +1,30 @@
> +if ROCKCHIP_RK3066
> +
> +config ROCKCHIP_BOOT_MODE_REG
> +	default 0x20004040
> +
> +config SYS_SOC
> +	default "rk3066"
> +
> +config SYS_MALLOC_F_LEN
> +	default 0x0800
> +
> +config SPL_LIBCOMMON_SUPPORT
> +	default y
> +
> +config SPL_LIBGENERIC_SUPPORT
> +	default y
> +
> +config SPL_SERIAL
> +	default y
> +
> +config TPL_LIBCOMMON_SUPPORT
> +	default y
> +
> +config TPL_LIBGENERIC_SUPPORT
> +	default y
> +
> +config TPL_SERIAL
> +	default y
> +
> +endif
> diff --git a/arch/arm/mach-rockchip/rk3066/Makefile b/arch/arm/mach-rockchip/rk3066/Makefile
> new file mode 100644
> index 0000000000..9e2a9d4b0a
> --- /dev/null
> +++ b/arch/arm/mach-rockchip/rk3066/Makefile
> @@ -0,0 +1,5 @@
> +# SPDX-License-Identifier: GPL-2.0+
> +
> +obj-y += clk_rk3066.o
> +obj-y += rk3066.o
> +obj-y += syscon_rk3066.o
> diff --git a/arch/arm/mach-rockchip/rk3066/clk_rk3066.c b/arch/arm/mach-rockchip/rk3066/clk_rk3066.c
> new file mode 100644
> index 0000000000..c47526dca5
> --- /dev/null
> +++ b/arch/arm/mach-rockchip/rk3066/clk_rk3066.c
> @@ -0,0 +1,33 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * Copyright (C) 2015 Google, Inc
> + * Written by Simon Glass <sjg@chromium.org>
> + */
> +
> +#include <common.h>
> +#include <dm.h>
> +#include <syscon.h>
> +#include <asm/arch-rockchip/clock.h>
> +#include <asm/arch-rockchip/cru_rk3066.h>
> +#include <linux/err.h>
> +
> +int rockchip_get_clk(struct udevice **devp)
> +{
> +	return uclass_get_device_by_driver(UCLASS_CLK,
> +			DM_DRIVER_GET(rockchip_rk3066a_cru), devp);
> +}
> +
> +void *rockchip_get_cru(void)
> +{
> +	struct rk3066_clk_priv *priv;
> +	struct udevice *dev;
> +	int ret;
> +
> +	ret = rockchip_get_clk(&dev);
> +	if (ret)
> +		return ERR_PTR(ret);
> +
> +	priv = dev_get_priv(dev);
> +
> +	return priv->cru;
> +}
> diff --git a/arch/arm/mach-rockchip/rk3066/rk3066.c b/arch/arm/mach-rockchip/rk3066/rk3066.c
> new file mode 100644
> index 0000000000..78c7d894f9
> --- /dev/null
> +++ b/arch/arm/mach-rockchip/rk3066/rk3066.c
> @@ -0,0 +1,49 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * (C) Copyright 2016 Rockchip Electronics Co., Ltd
> + */
> +
> +#include <common.h>
> +#include <asm/io.h>
> +#include <asm/arch-rockchip/bootrom.h>
> +#include <asm/arch-rockchip/grf_rk3066.h>
> +
> +#define GRF_BASE	0x20008000
> +
> +const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = {
> +	[BROM_BOOTSOURCE_EMMC] = "/mmc@1021c000",
> +	[BROM_BOOTSOURCE_SD] = "/mmc@10214000",
> +};
> +
> +void board_debug_uart_init(void)
> +{
> +	struct rk3066_grf * const grf = (void *)GRF_BASE;
> +
> +	/* Enable early UART on the RK3066 */
> +	rk_clrsetreg(&grf->gpio1b_iomux,
> +		     GPIO1B1_MASK | GPIO1B0_MASK,
> +		     GPIO1B1_UART2_SOUT << GPIO1B1_SHIFT |
> +		     GPIO1B0_UART2_SIN << GPIO1B0_SHIFT);
> +}
> +
> +void spl_board_init(void)
> +{
> +	if (!IS_ENABLED(CONFIG_SPL_BUILD))
> +		return;
> +
> +	if (IS_ENABLED(CONFIG_SPL_DM_MMC)) {
> +		struct rk3066_grf * const grf = (void *)GRF_BASE;
> +
> +		rk_clrsetreg(&grf->gpio3b_iomux,
> +			     GPIO3B0_MASK | GPIO3B1_MASK | GPIO3B2_MASK |
> +			     GPIO3B3_MASK | GPIO3B4_MASK | GPIO3B5_MASK |
> +			     GPIO3B6_MASK,
> +			     GPIO3B0_SDMMC0_CLKOUT << GPIO3B0_SHIFT |
> +			     GPIO3B1_SDMMC0_CMD    << GPIO3B1_SHIFT |
> +			     GPIO3B2_SDMMC0_DATA0  << GPIO3B2_SHIFT |
> +			     GPIO3B3_SDMMC0_DATA1  << GPIO3B3_SHIFT |
> +			     GPIO3B4_SDMMC0_DATA2  << GPIO3B4_SHIFT |
> +			     GPIO3B5_SDMMC0_DATA3  << GPIO3B5_SHIFT |
> +			     GPIO3B6_SDMMC0_DECTN  << GPIO3B6_SHIFT);
> +	}
> +}
> diff --git a/arch/arm/mach-rockchip/rk3066/syscon_rk3066.c b/arch/arm/mach-rockchip/rk3066/syscon_rk3066.c
> new file mode 100644
> index 0000000000..a598f6400d
> --- /dev/null
> +++ b/arch/arm/mach-rockchip/rk3066/syscon_rk3066.c
> @@ -0,0 +1,55 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * Copyright (C) 2015 Google, Inc
> + * Written by Simon Glass <sjg@chromium.org>
> + */
> +
> +#include <common.h>
> +#include <dm.h>
> +#include <log.h>
> +#include <syscon.h>
> +#include <asm/arch-rockchip/clock.h>
> +
> +static const struct udevice_id rk3066_syscon_ids[] = {
> +	{ .compatible = "rockchip,rk3066-noc", .data = ROCKCHIP_SYSCON_NOC },
> +	{ .compatible = "rockchip,rk3066-grf", .data = ROCKCHIP_SYSCON_GRF },
> +	{ .compatible = "rockchip,rk3066-pmu", .data = ROCKCHIP_SYSCON_PMU },
> +	{ }
> +};
> +
> +U_BOOT_DRIVER(syscon_rk3066) = {
> +	.name = "rk3066_syscon",
> +	.id = UCLASS_SYSCON,
> +	.of_match = rk3066_syscon_ids,
> +};
> +
> +#if CONFIG_IS_ENABLED(OF_PLATDATA)
> +static int rk3066_syscon_bind_of_plat(struct udevice *dev)
> +{
> +	dev->driver_data = dev->driver->of_match->data;
> +	debug("syscon: %s %d\n", dev->name, (uint)dev->driver_data);
> +
> +	return 0;
> +}
> +
> +U_BOOT_DRIVER(rockchip_rk3066_noc) = {
> +	.name = "rockchip_rk3066_noc",
> +	.id = UCLASS_SYSCON,
> +	.of_match = rk3066_syscon_ids,
> +	.bind = rk3066_syscon_bind_of_plat,
> +};
> +
> +U_BOOT_DRIVER(rockchip_rk3066_grf) = {
> +	.name = "rockchip_rk3066_grf",
> +	.id = UCLASS_SYSCON,
> +	.of_match = rk3066_syscon_ids + 1,
> +	.bind = rk3066_syscon_bind_of_plat,
> +};
> +
> +U_BOOT_DRIVER(rockchip_rk3066_pmu) = {
> +	.name = "rockchip_rk3066_pmu",
> +	.id = UCLASS_SYSCON,
> +	.of_match = rk3066_syscon_ids + 2,
> +	.bind = rk3066_syscon_bind_of_plat,
> +};
> +#endif

  reply	other threads:[~2022-04-09  3:55 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-04 14:19 [PATCH v9 00/16] Add Rikomagic MK808 board Johan Jonker
2022-04-04 14:19 ` [PATCH v9 01/16] rockchip: rk3066-power: sync power domain dt-binding header from Linux Johan Jonker
2022-04-06 15:01   ` Kever Yang
2022-04-04 14:19 ` [PATCH v9 02/16] rockchip: rk3066: add grf header file Johan Jonker
2022-04-09  3:49   ` Kever Yang
2022-04-04 14:19 ` [PATCH v9 03/16] rockchip: rk3066: add clock driver for rk3066 soc Johan Jonker
2022-04-09  3:49   ` Kever Yang
2022-04-04 14:19 ` [PATCH v9 04/16] rockchip: rk3066: add rk3066 pinctrl driver Johan Jonker
2022-04-09  3:49   ` Kever Yang
2022-04-04 14:19 ` [PATCH v9 05/16] rockchip: rk3066: add sdram driver Johan Jonker
2022-04-09  3:50   ` Kever Yang
2022-04-04 14:19 ` [PATCH v9 06/16] arm: dts: rockchip: fix rk3xxx-u-boot.dtsi Johan Jonker
2022-04-09  3:50   ` Kever Yang
2022-04-04 14:19 ` [PATCH v9 07/16] arm: dts: rockchip: fix include rk3xxx-u-boot.dtsi Johan Jonker
2022-04-09  3:50   ` Kever Yang
2022-04-04 14:19 ` [PATCH v9 08/16] arm: dts: rockchip: add rk3066a.dtsi Johan Jonker
2022-04-09  3:52   ` Kever Yang
2022-04-04 14:19 ` [PATCH v9 09/16] arm: dts: rockchip: add rk3066a-mk808.dts Johan Jonker
2022-04-09  3:52   ` Kever Yang
2022-04-04 14:19 ` [PATCH v9 10/16] rockchip: rk3066: add include Johan Jonker
2022-04-04 14:19 ` [PATCH v9 11/16] rockchip: rk3066: add rk3066_common.h include Johan Jonker
2022-04-04 14:19 ` [PATCH v9 12/16] rockchip: rk3066: add core support Johan Jonker
2022-04-09  3:55   ` Kever Yang [this message]
2022-04-04 14:19 ` [PATCH v9 13/16] rockchip: rk3066: add Rikomagic MK808 board Johan Jonker
2022-04-09  3:57   ` Kever Yang
2022-04-04 14:19 ` [PATCH v9 14/16] rockchip: rk3066: add mk808_defconfig Johan Jonker
2022-04-09  3:57   ` Kever Yang
2022-04-04 14:19 ` [PATCH v9 15/16] rockchip: tools: add rk3066 support to rkcommon.c Johan Jonker
2022-04-09  3:56   ` Kever Yang
2022-04-04 14:19 ` [PATCH v9 16/16] doc: rockchip: add rk3066 Rikomagic MK808 Johan Jonker
2022-04-09  4:00   ` Kever Yang
2022-04-10  9:08     ` Johan Jonker
2022-04-11 10:06       ` Kever Yang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4fcf51b5-ec79-42d8-f13a-70997d92d5dc@rock-chips.com \
    --to=kever.yang@rock-chips.com \
    --cc=jbx6244@gmail.com \
    --cc=lukma@denx.de \
    --cc=philipp.tomsich@vrull.eu \
    --cc=seanga2@gmail.com \
    --cc=sjg@chromium.org \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.