From patchwork Tue Mar 27 09:29:22 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kever Yang X-Patchwork-Id: 891475 X-Patchwork-Delegate: philipp.tomsich@theobroma-systems.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=rock-chips.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="RixPWWae"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 409R263WVqz9s1j for ; Tue, 27 Mar 2018 20:45:02 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 077BEC21FA4; Tue, 27 Mar 2018 09:41:26 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=RCVD_IN_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id D64CDC2202A; Tue, 27 Mar 2018 09:33:57 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 5285AC2204A; Tue, 27 Mar 2018 09:31:24 +0000 (UTC) Received: from mail-pg0-f68.google.com (mail-pg0-f68.google.com [74.125.83.68]) by lists.denx.de (Postfix) with ESMTPS id 84FD6C21F88 for ; Tue, 27 Mar 2018 09:31:08 +0000 (UTC) Received: by mail-pg0-f68.google.com with SMTP id y63so5211299pgy.12 for ; Tue, 27 Mar 2018 02:31:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=9LT38wGBfVnesi2dXjywineIkL6hxcDCxBYMeLsRO5E=; b=RixPWWae1KQHrR8pL4POUI8RDfTdRqAsYjvGB7eX8egKc0Cxgl/8QzopfBNfPZ3aAz 6K0mxsizWQ9hwkfIYdhWQvZVbCOUR66pExcnLuBvOR3Ua57ZlDzOeAX/evQsjZQG1QVR zy79HaiHIq9Sgz6wMG01lMU6Pp4U2Cz8+JslbSh7rhzBi/wAwb91x+uv7Qw0J0OUv1lY qfbM2z3dZG3h27vKTLyiIEbHLmM0tK96qZ8QIha+ct2NBtl+JY3d0nL2xl/Jm7vXcyAA 9HtTdMDW4dvg5qhgLSXk1FhZ7q+17EBOHW4KS6+0e/cBs2SJmIHtfGZ7OFCdVekNSVMF yPPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=9LT38wGBfVnesi2dXjywineIkL6hxcDCxBYMeLsRO5E=; b=spcQ47jBuMEvAFh30HoSGxR2eDX+p/FfQcXNSiFEcXnDzmh+wpNXOClttKFjoFVyaU JyU4vkdPHduvuau9F72cIb4Rrhee93eb67JXBgLS5kVFoNvDaeFQjb1rn8MzpM/guglu uymMexmqA3Tdf1ADo73P/R443rj190t0jOFuv89dCByYp4pLc+SL8s6BaRFp2O7hbrFQ aVM75EgI3BMq9vncfEdJvR9myJCgjFz56Mue4idQOxMzCpxDh5N1BsIRuPj/9GK7MoJ8 1atrmxtREOrKyqjOBuugKGvV8H7jSH8wUnZU15WFNFGb9gZ5SQlORxTe+L0rZHCX15Bh bFGw== X-Gm-Message-State: AElRT7EVVYs4+o6JcfxjT99P0Ewi//YnRSeqdIz61l6TpHexTYQFVIRg w1x9xOY9tyIjKOMydgCvwnoFUA== X-Google-Smtp-Source: AG47ELtJeYG+fbUGHLgwyJjgJhOBRe4s4UzhTpCmXYCPdvjTU/zkne/JdAi9yMU30kRRSDvi0BFAvg== X-Received: by 10.99.96.19 with SMTP id u19mr30101343pgb.261.1522143066668; Tue, 27 Mar 2018 02:31:06 -0700 (PDT) Received: from localhost.localdomain ([103.29.142.67]) by smtp.gmail.com with ESMTPSA id j83sm2171561pfj.18.2018.03.27.02.31.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 27 Mar 2018 02:31:05 -0700 (PDT) From: Kever Yang To: u-boot@lists.denx.de Date: Tue, 27 Mar 2018 17:29:22 +0800 Message-Id: <1522142971-20739-29-git-send-email-kever.yang@rock-chips.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1522142971-20739-1-git-send-email-kever.yang@rock-chips.com> References: <1522142971-20739-1-git-send-email-kever.yang@rock-chips.com> Subject: [U-Boot] [PATCH 28/36] rockchip: rk3328: prepare to use common board file X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Use common board file and move SoC spec setting into rk3328.c Signed-off-by: Kever Yang Acked-by: Philipp Tomsich --- arch/arm/mach-rockchip/rk3328/rk3328.c | 59 +++++++++++++++++++++++++----- board/rockchip/evb_rk3328/evb-rk3328.c | 66 ---------------------------------- 2 files changed, 51 insertions(+), 74 deletions(-) diff --git a/arch/arm/mach-rockchip/rk3328/rk3328.c b/arch/arm/mach-rockchip/rk3328/rk3328.c index 6764494..ddf53d5 100644 --- a/arch/arm/mach-rockchip/rk3328/rk3328.c +++ b/arch/arm/mach-rockchip/rk3328/rk3328.c @@ -5,12 +5,22 @@ */ #include +#include #include +#include +#include #include #include DECLARE_GLOBAL_DATA_PTR; +#define CRU_BASE 0xFF440000 +#define GRF_BASE 0xFF100000 +#define UART2_BASE 0xFF130000 + +#define CRU_MISC_CON 0xff440084 +#define FW_DDR_CON_REG 0xff7c0040 + static struct mm_region rk3328_mem_map[] = { { .virt = 0x0UL, @@ -33,20 +43,53 @@ static struct mm_region rk3328_mem_map[] = { struct mm_region *mem_map = rk3328_mem_map; -int dram_init_banksize(void) +const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = { + [BROM_BOOTSOURCE_EMMC] = "/rksdmmc@ff520000", + [BROM_BOOTSOURCE_SD] = "/rksdmmc@ff500000", +}; + +int arch_cpu_init(void) { - size_t max_size = min((unsigned long)gd->ram_size, gd->ram_top); +#ifdef CONFIG_TPL_BUILD + struct rk3328_grf_regs * const grf = (void *)GRF_BASE; + /* We do some SoC one time setting here. */ + + /* Disable the ddr secure region setting to make it non-secure */ + rk_setreg(FW_DDR_CON_REG, 0x200); - /* Reserve 0x200000 for ATF bl31 */ - gd->bd->bi_dram[0].start = 0x200000; - gd->bd->bi_dram[0].size = max_size - gd->bd->bi_dram[0].start; + /* HDMI phy clock source select HDMIPHY clock out */ + rk_clrreg(CRU_MISC_CON, 1 << 13); +#endif return 0; } -int arch_cpu_init(void) +void board_debug_uart_init(void) { - /* We do some SoC one time setting here. */ +#ifdef CONFIG_TPL_BUILD + struct rk3328_grf_regs * const grf = (void *)GRF_BASE; + struct rk_uart * const uart = (void *)UART2_BASE; - return 0; + /* uart_sel_clk default select 24MHz */ + writel((3 << (8 + 16)) | (2 << 8), CRU_BASE + 0x148); + + /* init uart baud rate 1500000 */ + writel(0x83, &uart->lcr); + writel(0x1, &uart->rbr); + writel(0x3, &uart->lcr); + + /* Enable early UART2 */ + rk_clrsetreg(&grf->com_iomux, + IOMUX_SEL_UART2_MASK, + IOMUX_SEL_UART2_M1 << IOMUX_SEL_UART2_SHIFT); + rk_clrsetreg(&grf->gpio2a_iomux, + GPIO2A0_SEL_MASK, + GPIO2A0_UART2_TX_M1 << GPIO2A0_SEL_SHIFT); + rk_clrsetreg(&grf->gpio2a_iomux, + GPIO2A1_SEL_MASK, + GPIO2A1_UART2_RX_M1 << GPIO2A1_SEL_SHIFT); + + /* enable FIFO */ + writel(0x1, &uart->sfe); +#endif } diff --git a/board/rockchip/evb_rk3328/evb-rk3328.c b/board/rockchip/evb_rk3328/evb-rk3328.c index 99a73da..c8e7a3a 100644 --- a/board/rockchip/evb_rk3328/evb-rk3328.c +++ b/board/rockchip/evb_rk3328/evb-rk3328.c @@ -3,69 +3,3 @@ * * SPDX-License-Identifier: GPL-2.0+ */ - -#include -#include -#include -#include -#include - -DECLARE_GLOBAL_DATA_PTR; - -int board_init(void) -{ - int ret; - - ret = regulators_enable_boot_on(false); - if (ret) - debug("%s: Cannot enable boot on regulator\n", __func__); - - return ret; -} - -#if defined(CONFIG_USB_GADGET) && defined(CONFIG_USB_GADGET_DWC2_OTG) -#include -#include - -static struct dwc2_plat_otg_data rk3328_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, - "rockchip,rk3328-usb"); - - 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, - "rockchip,rk3328-usb"); - } - if (!matched) { - debug("Not found usb_otg device\n"); - return -ENODEV; - } - - rk3328_otg_data.regs_otg = fdtdec_get_addr(blob, node, "reg"); - - return dwc2_udc_probe(&rk3328_otg_data); -} - -int board_usb_cleanup(int index, enum usb_init_type init) -{ - return 0; -} -#endif