From patchwork Tue Oct 16 10:58:46 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hatim Ali X-Patchwork-Id: 12272 Return-Path: X-Original-To: patchwork@peony.canonical.com Delivered-To: patchwork@peony.canonical.com Received: from fiordland.canonical.com (fiordland.canonical.com [91.189.94.145]) by peony.canonical.com (Postfix) with ESMTP id 7B1B2214A95 for ; Tue, 16 Oct 2012 11:06:28 +0000 (UTC) Received: from mail-ia0-f180.google.com (mail-ia0-f180.google.com [209.85.210.180]) by fiordland.canonical.com (Postfix) with ESMTP id 12881A18944 for ; Tue, 16 Oct 2012 11:06:27 +0000 (UTC) Received: by mail-ia0-f180.google.com with SMTP id f6so4351544iag.11 for ; Tue, 16 Oct 2012 04:06:27 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-forwarded-to:x-forwarded-for:delivered-to:received-spf:x-auditid :from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references :dlp-filter:x-mtr:x-brightmail-tracker:x-brightmail-tracker :x-cfilter-loop:x-gm-message-state; bh=sOVDftrAPKu3cfdpKqUbXCi4uKCS7JxTHDKnws81WUs=; b=lrhM1Gz0qMK8et6OhI2XgsNUpdRANO7DBGAQ3HCrkoZOLlPT9JP12v4ZDyMorT1Mm0 2Ps0jWh/UVSp0cemavnW4QEKIT2cUdpkxNRGEd4anO6Q+pt1or4ZrdeNpIC1cdsu3o71 AyC8FcZPvIp50VNc2wfDSY07vttGD/N6W2nkdcR+3CDuZwdaVpH2yHQ0C0z3trac4zdV rx0TgpckiwgKvbi4Zxm7c26S+hjT2kLFypygYKVrPXsSSEjso9MgADaOh/qsssfrGvW6 TWybV+DOCdmJ7QUAIHJnPsCCE7tqufVGAYxYn90gPAy+mJ2YWuF2T2pBUKoE7Q7KpGCs aBWA== Received: by 10.50.161.169 with SMTP id xt9mr9885302igb.62.1350385587509; Tue, 16 Oct 2012 04:06:27 -0700 (PDT) X-Forwarded-To: linaro-patchwork@canonical.com X-Forwarded-For: patch@linaro.org linaro-patchwork@canonical.com Delivered-To: patches@linaro.org Received: by 10.50.67.148 with SMTP id n20csp709303igt; Tue, 16 Oct 2012 04:06:27 -0700 (PDT) Received: by 10.66.83.9 with SMTP id m9mr40741395pay.22.1350385586739; Tue, 16 Oct 2012 04:06:26 -0700 (PDT) Received: from mailout3.samsung.com (mailout3.samsung.com. [203.254.224.33]) by mx.google.com with ESMTP id bo5si25893851pab.102.2012.10.16.04.06.26; Tue, 16 Oct 2012 04:06:26 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of hatim.rv@samsung.com designates 203.254.224.33 as permitted sender) client-ip=203.254.224.33; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of hatim.rv@samsung.com designates 203.254.224.33 as permitted sender) smtp.mail=hatim.rv@samsung.com Received: from epcpsbgm2.samsung.com (epcpsbgm2 [203.254.230.27]) by mailout3.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MBZ00124G65SFY0@mailout3.samsung.com> for patches@linaro.org; Tue, 16 Oct 2012 20:06:25 +0900 (KST) Received: from epcpsbgm2.samsung.com ( [172.20.52.124]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id 82.16.18144.EAF3D705; Tue, 16 Oct 2012 20:06:22 +0900 (KST) X-AuditID: cbfee61b-b7fd46d0000046e0-a3-507d3fae8e5c Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id A1.16.18144.DAF3D705; Tue, 16 Oct 2012 20:06:22 +0900 (KST) Received: from hatim-linux.sisodomain.com ([107.108.73.95]) by mmp1.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0MBZ0099QFZTVV60@mmp1.samsung.com> for patches@linaro.org; Tue, 16 Oct 2012 20:06:21 +0900 (KST) From: Hatim Ali To: u-boot@lists.denx.de Cc: promsoft@gmail.com, patches@linaro.org, sjg@chromium.org Subject: [PATCH 6/6 V5] EXYNOS5: Enable SPI booting. Date: Tue, 16 Oct 2012 16:28:46 +0530 Message-id: <1350385126-19312-7-git-send-email-hatim.rv@samsung.com> X-Mailer: git-send-email 1.7.2.3 In-reply-to: <1350385126-19312-1-git-send-email-hatim.rv@samsung.com> References: <1350385126-19312-1-git-send-email-hatim.rv@samsung.com> DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrNLMWRmVeSWpSXmKPExsWyRsSkRnedfW2AwfNGAYsph7+wODB63Lm2 hy2AMYrLJiU1J7MstUjfLoEro+VOP1NBn0HFgn3vGRsY56t3MXJySAiYSBxafocFwhaTuHBv PVsXIxeHkMBSRolDd1qBEhxgRY9WCUDEFzFKvJmzlQnKYZLYeWQGWDebgJrE+tedbCC2iICE xK/+q4wgNrOAjcTny5PBbGGgQS/e9DOD2CwCqhKvm9ezgyzgFXCRePglFeIIBYlXN9ayg9ic Aq4Sj9Z1gLUKAZWcujiJEaJVQOLb5ENQt8lKbDrADHKOhMBlNonfVzdBPSMpcXDFDZYJjMIL GBlWMYqmFiQXFCel5xrpFSfmFpfmpesl5+duYgSG4Ol/z6R3MK5qsDjEKMDBqMTDm+FcEyDE mlhWXJl7iFGCg1lJhFfVtjZAiDclsbIqtSg/vqg0J7X4EKMP0CUTmaVEk/OB8ZFXEm9obGJu amxqaWRkZmqKQ1hJnLfZIyVASCA9sSQ1OzW1ILUIZhwTB6dUA6PpYsbNq6qt9y/bcWNWvrXS wmVZNXuW36/cY9gsM/mxKOv1VzMYOXb3KV01mviwQYPFKbzYVO15kO+W2fcPRnOVvZw8M3Jn lb5cafSMx8tYVdrrE3ZMmRMjbyNUaBYX0LrJcG6X5ZWnTTJKhxInTe2qLTV+3hogILz1jucp +V3HOuOvJk4/aaPEUpyRaKjFXFScCAAnD16qbgIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupkkeLIzCtJLcpLzFFi42I5/e+xgO46+9oAgw0VFlMOf2FxYPS4c20P WwBjVAOjTUZqYkpqkUJqXnJ+SmZeuq2Sd3C8c7ypmYGhrqGlhbmSQl5ibqqtkotPgK5bZg7Q VCWFssScUqBQQGJxsZK+HaYJoSFuuhYwjRG6viFBcD1GBmggYQ1jRsudfqaCPoOKBfveMzYw zlfvYuTgkBAwkXi0SqCLkRPIFJO4cG89WxcjF4eQwCJGiTdztjJBOUwSO4/MYAGpYhNQk1j/ upMNxBYRkJD41X+VEcRmFrCR+Hx5MpgtDDT0xZt+ZhCbRUBV4nXzenaQZbwCLhIPv6RCLFOQ eHVjLTuIzSngKvFoXQdYqxBQyamLkxgnMPIuYGRYxSiaWpBcUJyUnmukV5yYW1yal66XnJ+7 iREc3s+kdzCuarA4xCjAwajEw5vhXBMgxJpYVlyZe4hRgoNZSYRX1bY2QIg3JbGyKrUoP76o NCe1+BCjD9BRE5mlRJPzgbGXVxJvaGxibmpsamliYWJmiUNYSZy32SMlQEggPbEkNTs1tSC1 CGYcEwenVANjipL0y+2B7X/eLjdWfsVtoPWRef0a46wHyz/GizulMv4SrXh/yWHxw65LAY+N Dt95WDCF/1HxxrU3E+wS1HJS6if6CEfdalowO1l3Ct9fwQ/TT3Xe0dIsd9mZraPw4fF83dln 9r9faq/LXfD4+WS/i7VHRe80ylqwCfA7WctP9eZ5/HnqwfCVSizFGYmGWsxFxYkAiF0ZbpwC AAA= X-CFilter-Loop: Reflected X-Gm-Message-State: ALoCoQmWwswi9DP8/FKcNk2lqJ0uG3k7BsX9R/6Z0FMmFtpjuJhXx3qibM9IDnzWeY4L8G9obwm/ From: Rajeshwari Shinde This patch enables SPI Booting for EXYNOS5 Signed-off-by: Rajeshwari Shinde --- Changes since v4: No Change board/samsung/smdk5250/Makefile | 2 +- board/samsung/smdk5250/mmc_boot.c | 58 ------------------------- board/samsung/smdk5250/spl_boot.c | 85 +++++++++++++++++++++++++++++++++++++ include/configs/smdk5250.h | 5 ++ 4 files changed, 91 insertions(+), 59 deletions(-) delete mode 100644 board/samsung/smdk5250/mmc_boot.c create mode 100644 board/samsung/smdk5250/spl_boot.c diff --git a/board/samsung/smdk5250/Makefile b/board/samsung/smdk5250/Makefile index 1474fa8..47c6a5a 100644 --- a/board/samsung/smdk5250/Makefile +++ b/board/samsung/smdk5250/Makefile @@ -36,7 +36,7 @@ COBJS += smdk5250.o endif ifdef CONFIG_SPL_BUILD -COBJS += mmc_boot.o +COBJS += spl_boot.o endif SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) diff --git a/board/samsung/smdk5250/mmc_boot.c b/board/samsung/smdk5250/mmc_boot.c deleted file mode 100644 index 449a919..0000000 --- a/board/samsung/smdk5250/mmc_boot.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (C) 2012 Samsung Electronics - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ - -#include -#include - -/* -* Copy U-boot from mmc to RAM: -* COPY_BL2_FNPTR_ADDR: Address in iRAM, which Contains -* Pointer to API (Data transfer from mmc to ram) -*/ -void copy_uboot_to_ram(void) -{ - u32 (*copy_bl2)(u32, u32, u32) = (void *) *(u32 *)COPY_BL2_FNPTR_ADDR; - - copy_bl2(BL2_START_OFFSET, BL2_SIZE_BLOC_COUNT, CONFIG_SYS_TEXT_BASE); -} - -void board_init_f(unsigned long bootflag) -{ - __attribute__((noreturn)) void (*uboot)(void); - copy_uboot_to_ram(); - - /* Jump to U-Boot image */ - uboot = (void *)CONFIG_SYS_TEXT_BASE; - (*uboot)(); - /* Never returns Here */ -} - -/* Place Holders */ -void board_init_r(gd_t *id, ulong dest_addr) -{ - /* Function attribute is no-return */ - /* This Function never executes */ - while (1) - ; -} - -void save_boot_params(u32 r0, u32 r1, u32 r2, u32 r3) {} diff --git a/board/samsung/smdk5250/spl_boot.c b/board/samsung/smdk5250/spl_boot.c new file mode 100644 index 0000000..d8f3c1e --- /dev/null +++ b/board/samsung/smdk5250/spl_boot.c @@ -0,0 +1,85 @@ +/* + * Copyright (C) 2012 Samsung Electronics + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include +#include + +enum boot_mode { + BOOT_MODE_MMC = 4, + BOOT_MODE_SERIAL = 20, + /* Boot based on Operating Mode pin settings */ + BOOT_MODE_OM = 32, + BOOT_MODE_USB, /* Boot using USB download */ +}; + + typedef u32 (*spi_copy_func_t)(u32 offset, u32 nblock, u32 dst); + +/* +* Copy U-boot from mmc to RAM: +* COPY_BL2_FNPTR_ADDR: Address in iRAM, which Contains +* Pointer to API (Data transfer from mmc to ram) +*/ +void copy_uboot_to_ram(void) +{ + spi_copy_func_t spi_copy; + enum boot_mode bootmode; + u32 (*copy_bl2)(u32, u32, u32); + + bootmode = readl(EXYNOS5_POWER_BASE) & OM_STAT; + + switch (bootmode) { + case BOOT_MODE_SERIAL: + spi_copy = *(spi_copy_func_t *)EXYNOS_COPY_SPI_FNPTR_ADDR; + spi_copy(SPI_FLASH_UBOOT_POS, CONFIG_BL2_SIZE, + CONFIG_SYS_TEXT_BASE); + break; + case BOOT_MODE_MMC: + copy_bl2 = (void *) *(u32 *)COPY_BL2_FNPTR_ADDR; + copy_bl2(BL2_START_OFFSET, BL2_SIZE_BLOC_COUNT, + CONFIG_SYS_TEXT_BASE); + break; + default: + break; + } +} + +void board_init_f(unsigned long bootflag) +{ + __attribute__((noreturn)) void (*uboot)(void); + copy_uboot_to_ram(); + + /* Jump to U-Boot image */ + uboot = (void *)CONFIG_SYS_TEXT_BASE; + (*uboot)(); + /* Never returns Here */ +} + +/* Place Holders */ +void board_init_r(gd_t *id, ulong dest_addr) +{ + /* Function attribute is no-return */ + /* This Function never executes */ + while (1) + ; +} + +void save_boot_params(u32 r0, u32 r1, u32 r2, u32 r3) {} diff --git a/include/configs/smdk5250.h b/include/configs/smdk5250.h index a9334cf..1b9bf44 100644 --- a/include/configs/smdk5250.h +++ b/include/configs/smdk5250.h @@ -189,6 +189,11 @@ /* U-boot copy size from boot Media to DRAM.*/ #define BL2_START_OFFSET (CONFIG_BL2_OFFSET/512) #define BL2_SIZE_BLOC_COUNT (CONFIG_BL2_SIZE/512) + +#define OM_STAT (0x1f << 1) +#define EXYNOS_COPY_SPI_FNPTR_ADDR 0x02020058 +#define SPI_FLASH_UBOOT_POS (CONFIG_SEC_FW_SIZE + CONFIG_BL1_SIZE) + #define CONFIG_DOS_PARTITION #define CONFIG_IRAM_STACK 0x02050000