From patchwork Wed Oct 3 10:44:22 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rajesh Bhagat X-Patchwork-Id: 978198 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=fail (p=none dis=none) header.from=nxp.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="yPFfD5fH"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 42QCpQ0F99z9s9m for ; Wed, 3 Oct 2018 21:04:45 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 8BB06C220D8; Wed, 3 Oct 2018 10:50:37 +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=BAD_ENC_HEADER, SPF_HELO_PASS, 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 69EB9C22119; Wed, 3 Oct 2018 10:46:44 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 8E199C22063; Wed, 3 Oct 2018 10:46:22 +0000 (UTC) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00052.outbound.protection.outlook.com [40.107.0.52]) by lists.denx.de (Postfix) with ESMTPS id 301C1C220EC for ; Wed, 3 Oct 2018 10:46:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xeSh36bb0yhKcD2vrP2bSIttIGtra1n05B9/Ek0eGtk=; b=yPFfD5fHCzK7BDjbs3mGBalEMbHVnwzv2l0U1LWzdSJrxcyoCPHu88WdVRvD+D6gBHLqG8X3aRxrwcxX52mC4gd+vmIpRRi6e28tu9H+QqNDb8rptVq2UzdkeZXDGtz+3hMPgWHfev0S7QZphl6ni4o5WA/wiTM7I2oBvu1ZZ6w= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=rajesh.bhagat@nxp.com; Received: from phoenix7.ap.freescale.net (14.143.30.134) by AM0PR04MB4849.eurprd04.prod.outlook.com (2603:10a6:208:c4::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1185.24; Wed, 3 Oct 2018 10:46:09 +0000 From: Rajesh Bhagat To: u-boot@lists.denx.de Date: Wed, 3 Oct 2018 16:14:22 +0530 Message-Id: <20181003104459.5444-17-rajesh.bhagat@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181003104459.5444-1-rajesh.bhagat@nxp.com> References: <20181003104459.5444-1-rajesh.bhagat@nxp.com> MIME-Version: 1.0 X-Originating-IP: [14.143.30.134] X-ClientProxiedBy: TY2PR02CA0011.apcprd02.prod.outlook.com (2603:1096:404:56::23) To AM0PR04MB4849.eurprd04.prod.outlook.com (2603:10a6:208:c4::26) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a2d911ec-d0d4-4a79-0457-08d6291d6f8c X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:AM0PR04MB4849; X-Microsoft-Exchange-Diagnostics: 1; AM0PR04MB4849; 3:EL2RdRta6SDIjqa4WYC2598GeXJFepMFc8AQjbxy6JNFcOsw0Se/swYjwzXb5CT1UQmvc/IaJU07Z40vySAlsFqLQoQo4udnWmqoX8+s/94GbTOJ+GAfv3eoL7U9OmdFqrx4Z4Gip1ZprTF/a6aFbyBwSiJaAi2ZwmNQ98K2AOo8bl4E/sVW+SqhCZgkIukGGbK/2z7J3J/fTBp9xN9NEcQXnNlWxZEPgGjxhkN5GPQe7EI7YjH6Dt8SCBbwOwXz; 25:UaQitbVSFJOAdaw96cN//SSd2vvP3WEKjzKTsecWBLW7pgUQkfUrphXFus+544lCJzT4u3BdHXEmPSeUeje7lOBn7NbdNfils6FqEL8N+crR8Hb8PGcbbExPW/3MCft+ewldayqhAvyLEgx+fj70BiU5WQxEBfBmwO7Ar8vEKPorzy7uOVD4MsYAyh35KPgjI43bPo7Ngz8mhUN5w9W66z6THTtTLMKI7uMGkIwU6eHaBe24DjuCTb2MlkDB+ntuWUDynrH4uAzLvniKVYIwa1DJMRUPXT4w1s8k/Xy2PnEGuu+XqBbRiuc0kc+a2xz9rRcCzytk8rQsXR6orNO2Iw==; 31:umcr1yFUDRfV7KJrMhJRQHtYtOauWzOX9sGqcczXDrKmm9oaWXG/H+NU6rk5xhgqDzFZF/jSkj5+QzYLe1buZ6js0RLT0UZTHc/FJCi+v2j3e7KXDrDXob1cVQ3clt0W/N8n5zhE5oTX5wiQVXvBeOWv+gXtD3MZU6q8hHnUxQplg0FATo4qjdURmMvWG5ZS4KFHRMYnpVbxlze43NcYVsG7A8LsN+jZgVD5F+WWgk4= X-MS-TrafficTypeDiagnostic: AM0PR04MB4849: X-Microsoft-Exchange-Diagnostics: 1; AM0PR04MB4849; 20:IXBgp0xJ3boFY09VzlyhD/sg6VSI2jSE3v5jOQ8WF75Z7KTJEbtv0WxOE1dIZLd47/mQxbFtLFEjm+Qik3MUwyrlnds/sLj75L1RVA+d9IhTS3/yZpjtUPmdpdNFhH/TBn5rlcZrInvRml4GQbol8C0Uxx7sBIT9JCnLHhXQMbF7OyjUmOY5rKFFjG8EW5rBKfxjpeZNFSUfQC4dc8SiFGcKZ+lcImAJycwf0gUL4bvMSU3nsIf6YQMLterq11AdhqhAeJwVBUt28ZOkZfxKAUoH5SX/aI9wnG8axs5vWkz1nSN9BXpMluToEWQQZO75Z718o6iD4HO3GfqKWeF/TtffsWlqCMR6WsGHWhYux4fDvngjrmUJUJ3LULaDOMA8ABQcpBKqjTwDUINq5/coH+oErHvDBJw6TlS0/hSz6QHE0VconWdgZeTyXvVYpW/lDQ5WCjhfFTzGy3nsx7XhQw4o8tdfXsb56b28NPW/hUrRtCnWhWdWRLneVzKY6jEP; 4:X8WFEcpSeNaSl3pR/7Mq+Ik73fV3iLt64cGBfqavKvR1uS8pvse27JCVf3l1isc6Y+fNzgcfend+lNoeQNNvOJ5MbcdJ+zSZsgB5G4LEeEz+fRYt2RVRyJSImkn2v6O4YDu3kFYp9g1GxU+TdRLa05RUBx/gFzNjH4VSBBVUsH35abtjx6kVtk4zCVZl26tdYbE/ezt3aMDAIca8kSMFdftBtIDJVkbHaex0JiE1PL5G0rlqMcLj2NRywY72P74OtrvRPVzQuixE2mmkEV2Ds3limfy7F6tbv9MPU02x7JkQqHF75MShnDREyGbh1C0A X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3002001)(3231355)(944501410)(52105095)(10201501046)(93006095)(93001095)(6055026)(149066)(150057)(6041310)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123564045)(20161123558120)(201708071742011)(7699051); SRVR:AM0PR04MB4849; BCL:0; PCL:0; RULEID:; SRVR:AM0PR04MB4849; X-Forefront-PRVS: 0814A2C7A3 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(376002)(366004)(136003)(39860400002)(396003)(189003)(199004)(66066001)(50226002)(97736004)(7736002)(50466002)(55236004)(6666003)(6506007)(386003)(16526019)(53936002)(26005)(68736007)(6486002)(186003)(47776003)(8936002)(8676002)(81156014)(476003)(81166006)(5009440100003)(4326008)(16586007)(36756003)(5660300001)(86362001)(2906002)(1076002)(2361001)(2351001)(478600001)(446003)(3846002)(6116002)(316002)(2616005)(44832011)(305945005)(76176011)(956004)(486006)(48376002)(105586002)(106356001)(51416003)(52116002)(25786009)(11346002)(6512007)(6916009)(110426005); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR04MB4849; H:phoenix7.ap.freescale.net; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM0PR04MB4849; 23:XyVxQ+zlz/xoViygh6cC5JFDVNNdPUSS4OxHqgVWs?= H7an8sjvq9S/SvBHUpneRfGtAA70AeyaGqHXIaWbKfoRPccNIYBY9Eqj7n+Eha0JQsBckUZ6V2SCqmsfkRNkOFcdh9oPqjtM/a0fCnKIKbZpI5rnVqYYxPfs17ZBO+6tNw5WRID8Rs6uLnpqJXaKz0W0EZZ9pDIMVOZCIlOeKmq0cTt59/UcETK/5Qru1zAUf8HPq3N2YMSsWvZXecUgxxlVSqRQqW85VJNNFlSVg36RhG6TGmPBYxYeO1q97/RXdwpY02zBDecVu0I8nYKHABKX1vbWrHUrNi5r4Sn3EJpuxgDohXv/rci9KOvI9ssC2yapBWIuSBI09zMh3XmENeBY35MX27WZ3xNWKNXwsoBuo/0pv5KiVx6dpVPWt+/EVVp+LnWm7wHvao/tCI1IQfaN1T+DK0+t216Ryg1Ge/LrUvSmPFdddGHd3Fmuvj+NX6E5grVf10r0YM0LnPAZaHnNNp5vv1P/G6A3TXVFLPh6tFnbJIepz8gFZNWmurarDC9YYiOc4Q81lwBGc43JQx7fWJ2WNDbg2mj5Z/GvAJpiKjZCMkN873+3YD1pSmsZDS5MaonmO6RGLH2JDlJVw+JEsLcUP9kafS2NWD5brSpy4qZi3dYe5V8AfVSilI6pQCyxVwQ8IjQfeaOaCcb++XMj+v5PMNiTdhYZq0g2PIkT9YRd5t0ogcwEgdp/QatB1T8bHOjY0QBDP0V1z/g4pfV4PMrQz3FlEu1M7RvmRMrGeXkBjtEqduEBPxEFsvM2yAUUNk/yBk2/j2sLqqfQ6hbC0E1TSNOzYnVolIyewQNlnHh2jO/HX6sttNuVi1yS3knnhHMiTzcVPUC972R5CJKrWTdJVCqfkqKIRBXOsLPtfmnojg4yHb3YaPXRf+J4jv5AGrmgCCcaYyOfQmVM+Ta+xZVsKJCLkZACFmyY9puk66CD2gjU4Wb9pHRuhlngxMrK2aznNI33F+RPxH6bcDLsngvODVXP31HJRFldi12tjrlyBct5ahsCoKIb7ggtfAXLHG9o362ks64rwrvyjKcvfplu32VvIdcdhVshQZ+/Sp40/y9ehI2xdIO89wBK9WjR8pmqE8YL8g5omA3/GcsUw1bem1AqjOEF9MOJVDB1DBg9GEvF3fSBw9FTesMPVmV/GlQ/m+gZtsZLTlA3GS45iGunapiWg5tXJrRBYzv6IMh2ke39jBXxVijys3bkD4Nr0ilEcxnJjRlMWjKTeKD0Dn673PBQprX0ITmAtDWMBCa6CVbm5eJIy+fTad9iIs= X-Microsoft-Antispam-Message-Info: IpIWXIZpePp9pYel9NIhtF8c8OLfp5pp8/2YsJ9igqPTlfIZAPidcD4w0jsTMKRjNmnAwH7+LaPRBTqUx5/3Oanf5jQ7JuwX6UfLVC13SyUEtwuZVfBT9/I+rJSQ3QAysZ3PLJ81v//nZANxiosGS3dF2D3dYZWO50hOxgEpuW3kQFHL3uyiAlsq4OMhRbu7zf5vheq5AZ1rG2m5+0S0vNw8PU55TRkEJfU6nT0TSn6m3WyaTxDHUpxkNhwxiv8S1pDJ4iHhXB2KOAaDEHMDf3h2WlWt7agIt4tl623Pd47plDE7h1Fcosdygc0iq2R8rghEo6QAydvz6KNtLny/k7Mju0MlfHgEbc29qeYszW0= X-Microsoft-Exchange-Diagnostics: 1; AM0PR04MB4849; 6:0VIw/z7yK+vMdio28YeirwDihUWnf+2piGHdeJgLX2ozje57QnnASsnbUtoYP1TaoUMrIuiN6Y009RW1NrAeeg03hNieOA3j9oNIQZhxaZf6RixdcPRlWdUttbv6CGo4r+oBG+Q/XOJOttOPcHBjXT00AAd9QM/dXAiRWfe+lDFcTzIJ0OjsN3e3sHKSNxRrA4jVnxQ6UipXTEOxRxpGef29DV5nViVmRbd8jdnfKcKfnfx1dSpmHPTlGIuutclMsI+nagI88/S97t029DoXYWN/2887XW87V1osNd8wJHtHoI0I/MX/tFOkxs7vDyXcAcXDtassxmmYksN2Bjng4wxovM6AqoLBYQfMkjLZibCCSKY9AgakfxaiQgFpdt0IMmt6+U7RAefHykHN05Tn7Wn4mIzcIq3nZqLGNHQlYkqn0q+wRQVRBPViPEf5/q+p6XzRhlF+2344EBwKPL2HUw==; 5:VGHygQV+2vDomz+rFQbQu59HU9Vso6ryfKWIyOvnGO+M97amkW25JtecbF7Egvoovmf4HCV/PJw1e7AoGl9NblGX6oxcG6hFMFowSnQeEf6FlLL8TxpXJp0sYGcgbyzbM/33MWC86vY5dQ5027Mpbqi5atNDBlBaLYs/UHYqGFo=; 7:ZjhQm7eo+ZK05/t1zpgHOWMNg8PclOqBtCq60igYsvzJw2xXQlGyrvbM4szPyFgsZYoTtWREju9uCjB148MQ+R0nWZepeaJAAR42BpQLIFDK9Yz9M3/c5pks43569vIEb7deuuC5Ka8YfgcTpyjckpgSYGzsIaOx03jJIekDA7uF08l7YObR0HsZWntn7xKpB8EzhATLmthXJ/nVFOeRauYzsrALFmwXyuDu/pdrNGG/rVrUM5QLJV0K0Q/mFh5V SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Oct 2018 10:46:09.5653 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a2d911ec-d0d4-4a79-0457-08d6291d6f8c X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB4849 Cc: Pankit Garg Subject: [U-Boot] [PATCH 16/53] drivers: qe: add TFABOOT support 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: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Adds TFABOOT support and allows to pick QE firmware on basis of boot source. Signed-off-by: Pankit Garg Signed-off-by: Rajesh Bhagat --- drivers/qe/qe.c | 81 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/drivers/qe/qe.c b/drivers/qe/qe.c index 7654df8008..d7e3a1b923 100644 --- a/drivers/qe/qe.c +++ b/drivers/qe/qe.c @@ -17,9 +17,17 @@ #include #endif +#ifdef CONFIG_TFABOOT +#include +/* required to include IFC and QSPI base address */ +#include +#include +#include +#else #ifdef CONFIG_SYS_QE_FMAN_FW_IN_MMC #include #endif +#endif #define MPC85xx_DEVDISR_QE_DISABLE 0x1 @@ -170,6 +178,33 @@ void qe_put_snum(u8 snum) } } +#ifdef CONFIG_TFABOOT +void qe_init(uint qe_base) +{ + enum boot_src src = get_boot_src(); + + /* Init the QE IMMR base */ + qe_immr = (qe_map_t *)qe_base; + + if (src == BOOT_SOURCE_IFC_NOR) { + /* + * Upload microcode to IRAM for those SOCs + * which do not have ROM in QE. + */ + qe_upload_firmware((const void *)(CONFIG_SYS_QE_FW_ADDR + + CONFIG_SYS_FSL_IFC_BASE)); + + /* enable the microcode in IRAM */ + out_be32(&qe_immr->iram.iready, QE_IRAM_READY); + } + + gd->arch.mp_alloc_base = QE_DATAONLY_BASE; + gd->arch.mp_alloc_top = gd->arch.mp_alloc_base + QE_DATAONLY_SIZE; + + qe_sdma_init(); + qe_snums_init(); +} +#else void qe_init(uint qe_base) { /* Init the QE IMMR base */ @@ -192,8 +227,53 @@ void qe_init(uint qe_base) qe_snums_init(); } #endif +#endif #ifdef CONFIG_U_QE +#ifdef CONFIG_TFABOOT +void u_qe_init(void) +{ + enum boot_src src = get_boot_src(); + + qe_immr = (qe_map_t *)(CONFIG_SYS_IMMR + QE_IMMR_OFFSET); + + void *addr = (void *)CONFIG_SYS_QE_FW_ADDR; + + if (src == BOOT_SOURCE_IFC_NOR) { + addr = (void *)(CONFIG_SYS_QE_FW_ADDR + CONFIG_SYS_FSL_IFC_BASE); + } + if (src == BOOT_SOURCE_QSPI_NOR) { + addr = (void *)(CONFIG_SYS_QE_FW_ADDR + CONFIG_SYS_FSL_QSPI_BASE); + } + if (src == BOOT_SOURCE_SD_MMC) { + int dev = CONFIG_SYS_MMC_ENV_DEV; + u32 cnt = CONFIG_SYS_QE_FMAN_FW_LENGTH / 512; + u32 blk = CONFIG_SYS_QE_FW_ADDR / 512; + + if (mmc_initialize(gd->bd)) { + printf("%s: mmc_initialize() failed\n", __func__); + return; + } + addr = malloc(CONFIG_SYS_QE_FMAN_FW_LENGTH); + struct mmc *mmc = find_mmc_device(CONFIG_SYS_MMC_ENV_DEV); + + if (!mmc) { + free(addr); + printf("\nMMC cannot find device for ucode\n"); + } else { + printf("\nMMC read: dev # %u, block # %u,\ + count %u ...\n", dev, blk, cnt); + mmc_init(mmc); + (void)mmc->block_dev.block_read(&mmc->block_dev, blk, + cnt, addr); + } + } + if (!u_qe_upload_firmware(addr)) + out_be32(&qe_immr->iram.iready, QE_IRAM_READY); + if (src == BOOT_SOURCE_SD_MMC) + free(addr); +} +#else void u_qe_init(void) { qe_immr = (qe_map_t *)(CONFIG_SYS_IMMR + QE_IMMR_OFFSET); @@ -229,6 +309,7 @@ void u_qe_init(void) #endif } #endif +#endif #ifdef CONFIG_U_QE void u_qe_resume(void)