All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kever Yang <kever.yang@rock-chips.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 04/24] rockchip: add common board file for U-Boot proper
Date: Mon, 22 Jul 2019 20:02:01 +0800	[thread overview]
Message-ID: <20190722120221.25468-5-kever.yang@rock-chips.com> (raw)
In-Reply-To: <20190722120221.25468-1-kever.yang@rock-chips.com>

Add common board file for Rockchip SoCs to avoid too much
copy-paste work for different SoCs.
This board file in charge for common board_init() and board_late_init()
in U-Boot proper.

Signed-off-by: Kever Yang <kever.yang@rock-chips.com>
---

 arch/arm/mach-rockchip/Kconfig  |   7 +++
 arch/arm/mach-rockchip/Makefile |   1 +
 arch/arm/mach-rockchip/board.c  | 104 ++++++++++++++++++++++++++++++++
 3 files changed, 112 insertions(+)
 create mode 100644 arch/arm/mach-rockchip/board.c

diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig
index 81dee9e5c7..4d983f8fce 100644
--- a/arch/arm/mach-rockchip/Kconfig
+++ b/arch/arm/mach-rockchip/Kconfig
@@ -229,6 +229,13 @@ config TPL_ROCKCHIP_BACK_TO_BROM
           SPL will return to the boot rom, which will then load the U-Boot
           binary to keep going on.
 
+config ROCKCHIP_COMMON_BOARD
+	bool "Rockchip common board file"
+	help
+	  Rockchip SoCs have similar boot process, Common board file is mainly
+	  in charge of common process of board_init() and board_late_init() for
+	  U-Boot proper.
+
 config SPL_ROCKCHIP_COMMON_BOARD
 	bool "Rockchip SPL common board file"
 	depends on SPL
diff --git a/arch/arm/mach-rockchip/Makefile b/arch/arm/mach-rockchip/Makefile
index 5cb2c6dcc9..7d2a227794 100644
--- a/arch/arm/mach-rockchip/Makefile
+++ b/arch/arm/mach-rockchip/Makefile
@@ -20,6 +20,7 @@ ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TPL_BUILD),)
 # we can have the preprocessor correctly recognise both 0x0 and 0
 # meaning "turn it off".
 obj-y += boot_mode.o
+obj-$(CONFIG_ROCKCHIP_COMMON_BOARD) += board.o
 
 obj-$(CONFIG_ROCKCHIP_RK3188) += rk3188-board.o
 obj-$(CONFIG_ROCKCHIP_RK3128) += rk3128-board.o
diff --git a/arch/arm/mach-rockchip/board.c b/arch/arm/mach-rockchip/board.c
new file mode 100644
index 0000000000..b2a88e789d
--- /dev/null
+++ b/arch/arm/mach-rockchip/board.c
@@ -0,0 +1,104 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * (C) Copyright 2019 Rockchip Electronics Co., Ltd.
+ */
+#include <common.h>
+#include <clk.h>
+#include <dm.h>
+#include <ram.h>
+#include <syscon.h>
+#include <asm/io.h>
+#include <asm/arch-rockchip/boot_mode.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/periph.h>
+#include <power/regulator.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+__weak int rk_board_late_init(void)
+{
+	return 0;
+}
+
+int board_late_init(void)
+{
+	setup_boot_mode();
+
+	return rk_board_late_init();
+}
+
+int board_init(void)
+{
+	int ret;
+
+#ifdef CONFIG_DM_REGULATOR
+	ret = regulators_enable_boot_on(false);
+	if (ret)
+		debug("%s: Cannot enable boot on regulator\n", __func__);
+#endif
+
+	return 0;
+}
+
+#if !defined(CONFIG_SYS_DCACHE_OFF) && !defined(CONFIG_ARM64)
+void enable_caches(void)
+{
+	/* Enable D-cache. I-cache is already enabled in start.S */
+	dcache_enable();
+}
+#endif
+
+#if defined(CONFIG_USB_GADGET) && defined(CONFIG_USB_GADGET_DWC2_OTG)
+#include <usb.h>
+#include <usb/dwc2_udc.h>
+
+static struct dwc2_plat_otg_data otg_data = {
+	.rx_fifo_sz	= 512,
+	.np_tx_fifo_sz	= 16,
+	.tx_fifo_sz	= 128,
+};
+
+int board_usb_init(int index, enum usb_init_type init)
+{
+	int node;
+	const char *mode;
+	bool matched = false;
+	const void *blob = gd->fdt_blob;
+
+	/* find the usb_otg node */
+	node = fdt_node_offset_by_compatible(blob, -1, "snps,dwc2");
+
+	while (node > 0) {
+		mode = fdt_getprop(blob, node, "dr_mode", NULL);
+		if (mode && strcmp(mode, "otg") == 0) {
+			matched = true;
+			break;
+		}
+
+		node = fdt_node_offset_by_compatible(blob, node, "snps,dwc2");
+	}
+	if (!matched) {
+		debug("Not found usb_otg device\n");
+		return -ENODEV;
+	}
+	otg_data.regs_otg = fdtdec_get_addr(blob, node, "reg");
+
+	return dwc2_udc_probe(&otg_data);
+}
+
+int board_usb_cleanup(int index, enum usb_init_type init)
+{
+	return 0;
+}
+#endif
+
+#if CONFIG_IS_ENABLED(FASTBOOT)
+int fastboot_set_reboot_flag(void)
+{
+	printf("Setting reboot to fastboot flag ...\n");
+	/* Set boot mode to fastboot */
+	writel(BOOT_FASTBOOT, CONFIG_ROCKCHIP_BOOT_MODE_REG);
+
+	return 0;
+}
+#endif
-- 
2.17.1

  parent reply	other threads:[~2019-07-22 12:02 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-22 12:01 [U-Boot] [PATCH 00/24] rockchip: Migrate to use common board file Kever Yang
2019-07-22 12:01 ` [U-Boot] [PATCH 01/24] rockchip: rk3328: add board_debug_uart_init() Kever Yang
2019-07-22 12:01 ` [U-Boot] [PATCH 02/24] rockchip: convert to use ROCKCHIP_BOOT_MODE_REG for fastboot tag Kever Yang
2019-07-22 12:02 ` [U-Boot] [PATCH 03/24] rockchip: clean up board_usb_init() for all SoCs Kever Yang
2019-07-22 12:02 ` Kever Yang [this message]
2019-07-22 12:02 ` [U-Boot] [PATCH 05/24] rockchip: sdram_common: add common dram_init_banksize Kever Yang
2019-07-22 12:02 ` [U-Boot] [PATCH 06/24] rockchip: rk3036: move dram_init() into soc file Kever Yang
2019-07-22 12:02 ` [U-Boot] [PATCH 07/24] rockchip: rk3036: Migrate to use common board file Kever Yang
2019-07-22 12:02 ` [U-Boot] [PATCH 08/24] rockchip: rk3128: " Kever Yang
2019-07-22 12:02 ` [U-Boot] [PATCH 09/24] rockchip: rk322x: move SoC setting into arch_cpu_init() Kever Yang
2019-07-22 12:02 ` [U-Boot] [PATCH 10/24] rockchip: rk322x: Migrate to use common board file Kever Yang
2019-07-22 12:02 ` [U-Boot] [PATCH 11/24] rockchip: rk3188: Move SoC one time setting into arch_cpu_init() Kever Yang
2019-07-22 12:02 ` [U-Boot] [PATCH 12/24] rockchip: rk3188: Migrate to use common board file Kever Yang
2019-07-22 12:02 ` [U-Boot] [PATCH 13/24] rockchip: rk3288: move SOC setting into arch_cpu_init() Kever Yang
2019-07-22 12:02 ` [U-Boot] [PATCH 14/24] rockchip: rk3288: move board_early_init_f() back to veyron Kever Yang
2019-07-22 12:02 ` [U-Boot] [PATCH 15/24] rockchip: rk3288: Move veyron_init() back to veyron.c Kever Yang
2019-07-22 12:02 ` [U-Boot] [PATCH 16/24] rockchip: rk3288: Move clock CMD to SoC file Kever Yang
2019-07-22 12:02 ` [U-Boot] [PATCH 17/24] rockchip: rk3288: Move rk3288_detect_reset_reason to soc file Kever Yang
2019-07-22 12:02 ` [U-Boot] [PATCH 18/24] rockchip: rk3288: Migrate to use common board file Kever Yang
2019-07-22 12:02 ` [U-Boot] [PATCH 19/24] rockchip: rk3328: " Kever Yang
2019-07-23 19:51   ` Matwey V. Kornilov
2019-07-22 12:02 ` [U-Boot] [PATCH 20/24] " Kever Yang
2019-07-22 12:02 ` [U-Boot] [PATCH 21/24] rockchip: rk3399: init vbus regulator in board_early_init_f() Kever Yang
2019-07-22 12:02 ` [U-Boot] [PATCH 22/24] rockchip: rk3399: Migrate to use common board file Kever Yang
2019-07-22 12:02 ` [U-Boot] [PATCH 23/24] rockchip: elgin-rv1108: use board_early_init_f for per-boar init Kever Yang
2019-07-22 12:02 ` [U-Boot] [PATCH 24/24] rockchip: rv1108: Migrate to use common board file 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=20190722120221.25468-5-kever.yang@rock-chips.com \
    --to=kever.yang@rock-chips.com \
    --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.