From patchwork Wed Jul 1 04:23:56 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bhupesh Sharma X-Patchwork-Id: 489858 X-Patchwork-Delegate: yorksun@freescale.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id D05B914030A for ; Wed, 1 Jul 2015 14:25:21 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 27D914B622; Wed, 1 Jul 2015 06:25:20 +0200 (CEST) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id OgUy3bP9HNpm; Wed, 1 Jul 2015 06:25:20 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id B99D54A039; Wed, 1 Jul 2015 06:25:19 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 9DD3B4A039 for ; Wed, 1 Jul 2015 06:25:16 +0200 (CEST) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id NxjNjDLG7j8s for ; Wed, 1 Jul 2015 06:25:16 +0200 (CEST) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1bon0131.outbound.protection.outlook.com [157.56.111.131]) by theia.denx.de (Postfix) with ESMTPS id 09CE14A01C for ; Wed, 1 Jul 2015 06:25:12 +0200 (CEST) Received: from BN3PR0301CA0079.namprd03.prod.outlook.com (10.160.152.175) by BN3PR0301MB1300.namprd03.prod.outlook.com (10.161.210.155) with Microsoft SMTP Server (TLS) id 15.1.201.16; Wed, 1 Jul 2015 04:25:10 +0000 Received: from BN1AFFO11FD034.protection.gbl (2a01:111:f400:7c10::145) by BN3PR0301CA0079.outlook.office365.com (2a01:111:e400:401e::47) with Microsoft SMTP Server (TLS) id 15.1.201.16 via Frontend Transport; Wed, 1 Jul 2015 04:25:11 +0000 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=freescale.com; freescale.mail.onmicrosoft.com; dkim=none (message not signed) header.d=none; Received-SPF: Fail (protection.outlook.com: domain of freescale.com does not designate 192.88.158.2 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.158.2; helo=az84smr01.freescale.net; Received: from az84smr01.freescale.net (192.88.158.2) by BN1AFFO11FD034.mail.protection.outlook.com (10.58.52.158) with Microsoft SMTP Server (TLS) id 15.1.201.10 via Frontend Transport; Wed, 1 Jul 2015 04:25:08 +0000 Received: from b45370.ap.freescale.net ([10.214.249.244]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id t614ORhQ002091; Tue, 30 Jun 2015 21:24:59 -0700 From: Bhupesh Sharma To: , , Date: Wed, 1 Jul 2015 09:53:56 +0530 Message-ID: <1435724636-12254-1-git-send-email-bhupesh.sharma@freescale.com> X-Mailer: git-send-email 1.7.9.5 X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD034; 1:8Ax18krIykYLbxx+pDYXcB56G74OEKKNWtnQcLQnDdTu50Ifx0tm+GJHc5xNqniL5axX8KQBz31YE+5EXoaCcWGj4W4TwyirYKkNz7Eva/GLhIrzLr7N1vbtrUQ4VCdbId8KxMYVIVCz9Tll58ULsutU0k5SBil+UpElFZq4WXntjVDitvthn5cr3x2Ea+sA/4gMEq/Cdl989tt+JUQ4AWIY4PCZFXSyNVW4YTJvdcGIjunQQEiHJfnnCzDC2by8Aqt34FpKOYkvhgGUSu8u+iRv0PNJGBsYq3lBpC3ulrp674eqLFJYBGe+3fgfMGorgNevNKrfVv5wRTjk8OEINw== X-Forefront-Antispam-Report: CIP:192.88.158.2; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(2980300002)(339900001)(199003)(189002)(48376002)(189998001)(46102003)(33646002)(50226001)(229853001)(77096005)(50986999)(36756003)(85426001)(6806004)(106466001)(77156002)(50466002)(62966003)(86362001)(92566002)(5001770100001)(105606002)(5001960100002)(104016003)(47776003)(19580395003)(19580405001)(2201001)(107886002)(87936001)(4001430100001); DIR:OUT; SFP:1102; SCL:1; SRVR:BN3PR0301MB1300; H:az84smr01.freescale.net; FPR:; SPF:Fail; MLV:sfv; A:1; MX:1; LANG:en; MIME-Version: 1.0 X-Microsoft-Exchange-Diagnostics: 1; BN3PR0301MB1300; 2:xdP/wYrEQ4f7S+xgm7c6iatxFwhRFtazNuB0BI1WcinGxgBoK+hmtrlchbI9Vtlb; 3:MXKQQ+wBvwvXG+0ZAXhDpEegESXJMkyhsW0N3tTv6oS1J/fZBc/fLPsTv4EXf5EQcxidrx5ZsvMEw81st8uaDWNR9LU3fwO3cm12QhCOqlFEVl6lwFzRX6KVF9II6lJBrcLarOZm6q9ZlkkZ0DxVjw5AOg/ogi5s8X0O4+4bTrUku3GmJQ/b0kftL/TXONKPXf7ht+L/KTsQZ4DLOGSQFcRbAkRa5T7KIHjL5mDHHBQ=; 25:0C+lC1jPRFlzZRMmg/ebMuojkyFHfXZbLHeWzdFlJWOMlLPA/KOxTtF9HtjPqIGkihOKPjvHE6jupNtfsRHiZGieze0Dpibc+RrsidW5TduC8iR/jiXa1gEHteDVcoCGmQo8nNZEbmbZxPxcwZJOaguzfp9egK0RPoOqv/uiVC1lOFBHAvgPumXbo0hSoIGbM+3jsz/OIXdYVc7XkR8aiwxW1Wq/g5WYr/WFBBFqBI5BNVKjsKArt7iuG8jW8EO0oxv6DGAjVo2SNwKXaz4pmA==; 20:3zJjHNfi4ssIiZ2QHcCw0MeXXoRmK/3zprI3cG1VIBo49kzU3BjEAwglCyuo0obD/GrNYFhwFVMv2TGWL1w/qo24Gdt+SQLAx9t/PvDk+0TvMs3paO/so+V9iPO88mcyUyKlkuZCzvUyAEb/fVQGfyQ8L38xSZsQ/acuTCONPUc5OQesQWYPZ0cmNfvieTjTBhxTuPUElMINvjPmYe8+AA0EAtvtgt9GrnwOoTHOjjFCUCDBbtY/aneGopkKKNiajjFisFhvvKLGW0O/PsotFpK7WU6L+AQfvCM+o16ACu4aKWzb16+MAjHUJxIW514vnfhltYuWyvLKpT6uqyaMwuWDDB39XUwL2/YlTQMqLtE= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN3PR0301MB1300; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:BN3PR0301MB1300; BCL:0; PCL:0; RULEID:; SRVR:BN3PR0301MB1300; X-Microsoft-Exchange-Diagnostics: 1; BN3PR0301MB1300; 4:RaypgBylLgk9U76R/iTLtw1mZuJWD8mP8cTPBD2O96T1YabIb1P6f+xI2/OWGVv1UqxkgPDfFi4fMeagS65UxcDMCR2t22kKPwigWa4hMnpzWB6T3CSa17QAUPd5hyzEZxFafAnZG3Z4ytIrZuIw4Zxih26x7tMFDk0JQdpy/n38c2nQaSbBeRJ/Vqh9IPd3qMNht9CdprrT5Vnu8ShL+IAGY/AbQoNY04RFSCgYRbtCg24Jb/OBYUR4xQGKn0U2+uSE5VxtpyW0Kth7OKvjGILA3qlgznAEYZCqq9GbqmA= X-Forefront-PRVS: 0624A2429E X-Microsoft-Exchange-Diagnostics: 1; BN3PR0301MB1300; 23:Xwa9lmZ8Bree7Y+13zAC0R1zasMFMoo3/b/oMA2pgFCx8U39+g9DQ6Vav20BSWGe+/ItW19AYNyRkxPdo9SbXfb4BslIdScGIwaokpyqgQ0/n251VpmWRbbQKfipsiv6WLrsv34K6Pf7O+4AmY31purrw8nAEGkG5OhuU/10dqIeGyoutQoHCUIWKPfGeqPJTTHqTRRqVK5tSvd3akN3TcC29cZy1MMe77o2PXYDZiKhK0DdtSrjwkK7eAIC6+sPhs9uLt9//ihK+7S/q326k8WVMUz6JbDdPKG3EB6lWrDr24LP3t77+tgrpRSnd04niY1GQDeQ7Y8KoImGSLELglGZesBNPNJNM3CYNzie6t47i5GZh2obxm4Rs7LOTQ3CyOoX172A3oSv5TLvoJOLKScqaEh3H6lJdzaYNAifWMfo5MiudDFPtIlD6tbcyVLVakRDylc4e6mrtt+ycwtkT5uAhlouPFODWThlCnhgOFZlKgb4Xfh0w8ULGdkwbHw70X4loUYy/CMpJLMMKo6ToRQGDLt3qqy7qjHs9qqG/FI92bybIUOHA5bN9PUde3doonwUDU+3CGtBJmPC98mj8keGohy7qN+Qc9X1q/YfbZY74VkxNUoNjcaXWAKkBciF06YV/n4tkHHdf+bPl7vEp4l1ZjFcuC5HimOVBBA9DciToAKdP8bC+NAKs7vaGnDeTb+XErwL0/hgUtvW+70Y05uUuSMqw4DlWIisRYh/reKYfnG+rFQWivZkJoc1hA2nVscK71XaifbAPyv7Wr0l5Jp/h+G9g0KZksgg2UergJPc1fez0vLWeRqpFahbDrVeiqKaGVETDPpbdBJw2eoMjrWkjLDKNhPTfq9olPHEk1HmSOWClMHj+KAsF7Fg5Wy1 X-Microsoft-Exchange-Diagnostics: 1; BN3PR0301MB1300; 5:GiTncXKHYXO4AL1iDOCqyAH1fEbUX0TRFIbpS4355ALzHde+fzDPl64rXlU9/WGOIjQVkwSaICsH2XKivrgdTSWibjo4lFLUxGoyvHtSU3JOA+jb9UYvEHxJK+OP7aiczAYw+GGGeYdCpH767HRBbQ==; 24:fIfo7GZ9v1r0zUi03JWkBe/SUe+pvmJnl7CYKvOH3WNFFn26jbaNUZLznz2P4HczEn0EOk7dbujzzCogk+pIL9YihENXIHAiFUMhHXiyY/o=; 20:niCG39rbsliTYZPfixSdW1kCNf945dzap9ua2kZnJt6Ed0Wvbk5Ry6F4ZpTayFroL4Blqgrv0zZPd7gmCdf7JQ== X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jul 2015 04:25:08.2911 (UTC) X-MS-Exchange-CrossTenant-Id: 710a03f5-10f6-4d38-9ff4-a80b81da590d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=710a03f5-10f6-4d38-9ff4-a80b81da590d; Ip=[192.88.158.2]; Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR0301MB1300 Cc: yorksun@freescale.com Subject: [U-Boot] [PATCH 1/1] armv8: Add framework for CCN-504 interconnect configuration X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.15 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" This patch adds a minimal framework for Dickens CCN-504 interconnect configuration - mainly related to adding Clusters/cores to snoop/DVM domain and setting QoS of the RN-I ports. LS2085A platform makes use of these configurations to support better network data performance and to boot a SMP Linux. Signed-off-by: Bhupesh Sharma --- arch/arm/cpu/armv8/fsl-lsch3/lowlevel.S | 72 +++++++++++++++++++++++--- arch/arm/include/asm/arch-fsl-lsch3/config.h | 11 ++++ arch/arm/lib/Makefile | 1 + arch/arm/lib/ccn504.S | 61 ++++++++++++++++++++++ 4 files changed, 138 insertions(+), 7 deletions(-) create mode 100644 arch/arm/lib/ccn504.S diff --git a/arch/arm/cpu/armv8/fsl-lsch3/lowlevel.S b/arch/arm/cpu/armv8/fsl-lsch3/lowlevel.S index 018c617..6b19d36 100644 --- a/arch/arm/cpu/armv8/fsl-lsch3/lowlevel.S +++ b/arch/arm/cpu/armv8/fsl-lsch3/lowlevel.S @@ -16,13 +16,71 @@ ENTRY(lowlevel_init) mov x29, lr /* Save LR */ /* Add fully-coherent masters to DVM domain */ - ldr x1, =CCI_MN_BASE - ldr x2, [x1, #CCI_MN_RNF_NODEID_LIST] - str x2, [x1, #CCI_MN_DVM_DOMAIN_CTL_SET] -1: ldr x3, [x1, #CCI_MN_DVM_DOMAIN_CTL_SET] - mvn x0, x3 - tst x0, x3 /* Wait for domain addition to complete */ - b.ne 1b + ldr x0, =CCI_MN_BASE + ldr x1, =CCI_MN_RNF_NODEID_LIST + ldr x2, =CCI_MN_DVM_DOMAIN_CTL_SET + bl ccn504_add_masters_to_dvm + + /* Set all RN-I ports to QoS of 15 */ + ldr x0, =CCI_S0_QOS_CONTROL_BASE(0) + ldr x1, =0x00FF000C + bl ccn504_set_qos + ldr x0, =CCI_S1_QOS_CONTROL_BASE(0) + ldr x1, =0x00FF000C + bl ccn504_set_qos + ldr x0, =CCI_S2_QOS_CONTROL_BASE(0) + ldr x1, =0x00FF000C + bl ccn504_set_qos + + ldr x0, =CCI_S0_QOS_CONTROL_BASE(2) + ldr x1, =0x00FF000C + bl ccn504_set_qos + ldr x0, =CCI_S1_QOS_CONTROL_BASE(2) + ldr x1, =0x00FF000C + bl ccn504_set_qos + ldr x0, =CCI_S2_QOS_CONTROL_BASE(2) + ldr x1, =0x00FF000C + bl ccn504_set_qos + + ldr x0, =CCI_S0_QOS_CONTROL_BASE(6) + ldr x1, =0x00FF000C + bl ccn504_set_qos + ldr x0, =CCI_S1_QOS_CONTROL_BASE(6) + ldr x1, =0x00FF000C + bl ccn504_set_qos + ldr x0, =CCI_S2_QOS_CONTROL_BASE(6) + ldr x1, =0x00FF000C + bl ccn504_set_qos + + ldr x0, =CCI_S0_QOS_CONTROL_BASE(12) + ldr x1, =0x00FF000C + bl ccn504_set_qos + ldr x0, =CCI_S1_QOS_CONTROL_BASE(12) + ldr x1, =0x00FF000C + bl ccn504_set_qos + ldr x0, =CCI_S2_QOS_CONTROL_BASE(12) + ldr x1, =0x00FF000C + bl ccn504_set_qos + + ldr x0, =CCI_S0_QOS_CONTROL_BASE(16) + ldr x1, =0x00FF000C + bl ccn504_set_qos + ldr x0, =CCI_S1_QOS_CONTROL_BASE(16) + ldr x1, =0x00FF000C + bl ccn504_set_qos + ldr x0, =CCI_S2_QOS_CONTROL_BASE(16) + ldr x1, =0x00FF000C + bl ccn504_set_qos + + ldr x0, =CCI_S0_QOS_CONTROL_BASE(20) + ldr x1, =0x00FF000C + bl ccn504_set_qos + ldr x0, =CCI_S1_QOS_CONTROL_BASE(20) + ldr x1, =0x00FF000C + bl ccn504_set_qos + ldr x0, =CCI_S2_QOS_CONTROL_BASE(20) + ldr x1, =0x00FF000C + bl ccn504_set_qos /* Set the SMMU page size in the sACR register */ ldr x1, =SMMU_BASE diff --git a/arch/arm/include/asm/arch-fsl-lsch3/config.h b/arch/arm/include/asm/arch-fsl-lsch3/config.h index ca8d38c..c47950c 100644 --- a/arch/arm/include/asm/arch-fsl-lsch3/config.h +++ b/arch/arm/include/asm/arch-fsl-lsch3/config.h @@ -132,6 +132,17 @@ #define CCI_MN_DVM_DOMAIN_CTL 0x200 #define CCI_MN_DVM_DOMAIN_CTL_SET 0x210 +#define CCI_RN_I_0_BASE (CCI_MN_BASE + 0x800000) +#define CCI_RN_I_2_BASE (CCI_MN_BASE + 0x820000) +#define CCI_RN_I_6_BASE (CCI_MN_BASE + 0x860000) +#define CCI_RN_I_12_BASE (CCI_MN_BASE + 0x8C0000) +#define CCI_RN_I_16_BASE (CCI_MN_BASE + 0x900000) +#define CCI_RN_I_20_BASE (CCI_MN_BASE + 0x940000) + +#define CCI_S0_QOS_CONTROL_BASE(x) ((CCI_RN_I_0_BASE + (x * 0x10000)) + 0x10) +#define CCI_S1_QOS_CONTROL_BASE(x) ((CCI_RN_I_0_BASE + (x * 0x10000)) + 0x110) +#define CCI_S2_QOS_CONTROL_BASE(x) ((CCI_RN_I_0_BASE + (x * 0x10000)) + 0x210) + /* Device Configuration */ #define DCFG_BASE 0x01e00000 #define DCFG_PORSR1 0x000 diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile index 31a5c8d..51497cc 100644 --- a/arch/arm/lib/Makefile +++ b/arch/arm/lib/Makefile @@ -42,6 +42,7 @@ obj-y += stack.o ifdef CONFIG_CPU_V7M obj-y += interrupts_m.o else ifdef CONFIG_ARM64 +obj-y += ccn504.o obj-y += gic_64.o obj-y += interrupts_64.o else diff --git a/arch/arm/lib/ccn504.S b/arch/arm/lib/ccn504.S new file mode 100644 index 0000000..ce55fb1 --- /dev/null +++ b/arch/arm/lib/ccn504.S @@ -0,0 +1,61 @@ +/* + * (C) Copyright 2015 Freescale Semiconductor + * + * SPDX-License-Identifier: GPL-2.0+ + * + * Extracted from gic_64.S + */ + +#include +#include +#include + +/************************************************************************* + * + * void ccn504_add_masters_to_dvm(CCI_MN_BASE, CCI_MN_RNF_NODEID_LIST, + * CCI_MN_DVM_DOMAIN_CTL_SET); + * + * Add fully-coherent masters to DVM domain + * + *************************************************************************/ +ENTRY(ccn504_add_masters_to_dvm) + /* + * x0: CCI_MN_BASE + * x1: CCI_MN_RNF_NODEID_LIST + * x2: CCI_MN_DVM_DOMAIN_CTL_SET + */ + + /* Add fully-coherent masters to DVM domain */ + ldr x9, [x0, x1] + str x9, [x0, x2] +1: ldr x10, [x0, x2] + mvn x11, x10 + tst x11, x10 /* Wait for domain addition to complete */ + b.ne 1b + + ret +ENDPROC(ccn504_add_masters_to_dvm) + +/************************************************************************* + * + * void ccn504_set_qos(CCI_Sx_QOS_CONTROL_BASE, QoS Value); + * + * Initialize QoS settings for AR/AW override. + * Right now, this function sets the same QoS value for all RN-I ports + * + *************************************************************************/ +ENTRY(ccn504_set_qos) + /* + * x0: CCI_Sx_QOS_CONTROL_BASE + * x1: QoS Value + */ + + /* Set all RN-I ports to QoS of 15 */ + ldr x9, [x0] + mov x10, x1 + orr x9, x9, x10 + str x9, [x0] + + ret +ENDPROC(ccn504_set_qos) +