From patchwork Thu Sep 27 05:02:05 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Priyanka Jain X-Patchwork-Id: 975541 X-Patchwork-Delegate: yorksun@freescale.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=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="voav28bY"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 42LN535Z6Hz9sCK for ; Thu, 27 Sep 2018 15:04:07 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 772EDC21C50; Thu, 27 Sep 2018 05:04:04 +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 9802BC21C29; Thu, 27 Sep 2018 05:04:00 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 72A10C21C29; Thu, 27 Sep 2018 05:03:59 +0000 (UTC) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00045.outbound.protection.outlook.com [40.107.0.45]) by lists.denx.de (Postfix) with ESMTPS id E3204C21C27 for ; Thu, 27 Sep 2018 05:03:58 +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=uuMJMYeTP4BXQZHsZ3T/ZN/yDgccOUt8/ogxUCdHr0w=; b=voav28bYnVtwqer/XR4akz5Of1MMO7EBax6NMQ1eSUFL1+kZeQMCJJfGfREdgo173SYmkTgGmSG0iUTRxd0sz1LrzQHItCioORp7tfaQSBG0B9RIxs5jiGExOfW/uKERHJMpp2zh6ir6x0cm26QHFbiiIC4s+tfJqgSsuwa4OO0= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=priyanka.jain@nxp.com; Received: from idcbfarm.ap.freescale.net (14.143.30.134) by AM6PR04MB4935.eurprd04.prod.outlook.com (2603:10a6:20b:7::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1164.22; Thu, 27 Sep 2018 05:03:55 +0000 From: Priyanka Jain To: u-boot@lists.denx.de, york.sun@nxp.com Date: Thu, 27 Sep 2018 10:32:05 +0530 Message-Id: <1538024525-15102-1-git-send-email-priyanka.jain@nxp.com> X-Mailer: git-send-email 1.9.1 MIME-Version: 1.0 X-Originating-IP: [14.143.30.134] X-ClientProxiedBy: SG2PR01CA0101.apcprd01.prod.exchangelabs.com (2603:1096:3:15::27) To AM6PR04MB4935.eurprd04.prod.outlook.com (2603:10a6:20b:7::10) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2ef02f9b-17be-44cc-ba60-08d62436a16d X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534165)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:AM6PR04MB4935; X-Microsoft-Exchange-Diagnostics: 1; AM6PR04MB4935; 3:c4EIXjBGDYVP5GAiIaV7kbyi4bOlA//8wxUUZbVBu+UVInKY1JNBWEJfQrsQmMHafDNOPnPh8QoFBfDL0NwUNklMp4Lb4HetnOjjqqhuppaa0QfRMJUjXSKUm6eycaZHFTJAo47qFRDyzBtAf6wg1GqQzwOqqC1YZVXcNmB3Tx0RuCeAo1/og2O1o06FHJzFTChGjZ3/h+vLCnI+jIj1HfDZG3m2Ou9lzuK3ZWluEBl4nSVmoYDHAen7odt92s6H; 25:hfQxcwrJr9XLy6lWZC/0Io0N+GmXVGtgsMXxxBWoyEIBZVnhPXjFQ64Vsbd4b2vqsU83mEM+Kb1NshNgLGq51SUiqVben6piWKmR6XIcGDZDm6VpoHDi++alOhDhq/Umzv1k4G8cPPD6rcRi1pI4cy2vhGcjJZbmy450hOggSJx7mhNyTCZx9QWSimUjt31aCftruX6kTLWZiJdsYF9QEMk9PmyXtLWGBIRw+SchlByJ2M7Ub2iD/XVHZvdNn6WJnb8Zz0z4YNf24e6fnpctxEyP4OmWIRVR+gsyFJkGvCR4CODhX2HJm7hA4+oOvMHLqcLpzWIxTjaTgHRCvIuazg==; 31:EeDI/I7TtCgmxZZQgJ8MFRqxjh8z33wMH7SmtXa/yHH5lZlf/F8pvnJop1PoxtJ+xGmK4o8qw3KHcaxg3hEpSr1MvbXHY6VSeVf1z2J/+a/gJf8K5yVAiUdANBiPgUBbNV/fWed+oU7SRnBM+vgl6iPMhC8F0PyHZetNDJh5V5LjmriI1dRaPSdZc+OOcFscc8bJF8CTGn+NW/QiGHzH7EE0pt7ufR+BLqqESWCrkRk= X-MS-TrafficTypeDiagnostic: AM6PR04MB4935: X-Microsoft-Exchange-Diagnostics: 1; AM6PR04MB4935; 20:v/OhinG6iJ3BQr2Lm4649L+2h3OoA+o/+QtpRO9PN7QRPoQkNh5kNBLW5OfA9MgukIjhQKfN4kYGTChTA6L+tLFlDldm7mWAc8ZYFVJzJULxNJdGH8AwKvdsFZ6i4ogdhtysyRS+59NlwYF2QrtfQ1E2RTRAcP6mlEt62YmwS4eAVTu0QpjQp4m132SBMQrcKsUq75urSxlPeDD1hJkNfsjbS5K8uql2T7sdTWhPxQ4crVhuGIsbLpLQtDb/E61Psq3rFEvSGEfdn0/p+DR28SqZDjhxEfbOJYbbkemmrRuDO5NvX7TjL8MjVYN7C22piK99dGD3r8W6+WlA1E5E77SnKFYdLtluOZsNHum29OdJcF70QCSsFnPy1xj7XTI+WSxRxTbs60mFDBFUzg9c4biq11MR3mPhL+2tUwfBPHkdfx9BgkjZZFDxwfqlAn8BNZjP9KnHz1vkayzzqOapsZ2/1F2UXklGK8xSnYKwJjchMgxL94NV8QRzWrTSSt1P; 4:amKCxU6TOG8xS2cXLoWAJ3sU10LI/qG5INkcjxU1OXZiYxPmAD5yQXhFYf9wpWj+KpSh/GLCtbqYkwDAcH8j6gUSzZshlvvkQuhuH8PWjnkP4NfSMAqoVoZdW34GYd4GudmBP45FQWFcYq/0d1852NUuofIvpH9f1tt3TGCZ/PblTC/G9WsPnRWA5HOdVkjulwa3DI/11NhZqcrd766k1kBtzL1ir+KQK8SgtvLg+G5lvQoGfQ6qEppe9MqVpJbTaMj/M5iYfE6T+mROIGPkw8HLesGstZVgl1V8oUxVs25cWa+/9m6mbiiOQiyCROR7 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)(10201501046)(93006095)(93001095)(3231355)(944501410)(52105095)(6055026)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123558120)(20161123562045)(20161123560045)(201708071742011)(7699051); SRVR:AM6PR04MB4935; BCL:0; PCL:0; RULEID:; SRVR:AM6PR04MB4935; X-Forefront-PRVS: 0808323E97 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(136003)(376002)(346002)(39860400002)(189003)(199004)(50226002)(6666003)(81156014)(2906002)(305945005)(81166006)(106356001)(105586002)(36756003)(8936002)(3846002)(6116002)(68736007)(8676002)(4326008)(6512007)(5660300001)(53936002)(6636002)(7736002)(25786009)(6486002)(66066001)(97736004)(50466002)(48376002)(47776003)(478600001)(16586007)(26005)(16526019)(14444005)(86362001)(486006)(1857600001)(316002)(186003)(34290500001)(44832011)(5009440100003)(51416003)(52116002)(386003)(6506007)(956004)(476003)(2616005)(110426005)(309714004); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR04MB4935; H:idcbfarm.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; AM6PR04MB4935; 23:+7pkU+i7UWkowB0hT1PC5351VvG0hJ2Lx8ioLRqM6?= sutHkV0ZLfWtt9ARgetJ33JOq1tPRRUVMPG6gI3HCPE6FtbKsKN25BlzEBlHRc/d4wPTYyHxnE14/axvkcckqSlBt1Wj/S4v7wkR+c289mal+b22JfAhT87qbXQdHhAHMs38d5J8HMK3eW0vwzrbXH3lc1L7FqgpOtLPuljwHaM7TtUX2uGSzbN2LT7ChiKvU7w87uvcCDC53PI4eIe76echJdcB2u9h0JEUC2Z9gn48ZHcDVl1aPJI9uI6SydfM68XTRn9ozfqAtAnOAEAPcpCOFyW0dBFiJBS2kSTUT+0d/rdJ+yVwNt7mzqR5P5r0kgZ+6GIhkmTfxBA8Miaj/bWwt6HYYIXTSvTx/iL/5Ii9DElNZTtwr4HFXFoWW81qcMcZf0IpImi++O66UZhdkvo4HRnKqGRjuU6A5XeUrJWAN0gS1k7rsMamIoz0pP6Hh0rXMDNg4jkjLO3elF8kSWT8e/Zbvrzuz7xqJsxiLr6/EflbjBVaqxYQA7kzT05FRm8tzJ5DsIV9ZUrx9eXo3DiU/trCaKxuUZZgYdaBzXV1scFRIH7PsTFR/J3ShHPtyM34TGCO1hUNPunWvMhgAZbm09CT3Bqx0B7XNFyPGPxpzXyLlWDsWlbsqKymTZCx8zyJ3mvjqGdOw9ESUn/ZmPOsvfDjuJ4+3tc7J1SvMYjK4NU9SIhj8RJm1eWPoAe7OVbpH9pFJg6nJMuQxzWvb3IjOMEMNu85L5VtOPhAke9wfIvZAbk2RuYPXMKLzbNTZJoWUOrbPzFQ+8wEB+MBxNaFTbZatmo3XYnH+98nWqCSX0yeGSLlyxk8YG3Dp0QIKbPp8U8qEFDm9xBHfC76ioH3TI1eyAsugXugseoBGXgxal85cSRxN+EHSPRp8noTcoxvZy9HHzn2jNFuprMFhWvF7d1A13yFAC/7i9vdz2AN0QF8IVeF8pNTLLEWx8KrP+IfKInIn0sCuFuoDE3o3GGnsFR2bOtr07ciuX9z/3oO4SeXrBYpP22boZj+hnZoB6/sKPJ810UX1tWaooJZgX54foZfDrSqAZ2qC95pF2JlSqXYgJLwBNcHMhjt93fCUUMXSjSuS4GR1bYSx+u03bafhI/f6Nk+yW9UN3vsANOLcXJrs17Qaf7KN/PPNLsZ52HthSrgYfL0wKEuPSdPeAl49o9NevClhKXSvgEEc6vOg2UDECxSkvKZabM1Qng46sPCQEsL9iyEr6QLEiPlbFXF5jPgOFpJFjU4HePE9FFBg== X-Microsoft-Antispam-Message-Info: aqnbHdWtXl3x/0tnMZ6LhQ2bTV+9W9rs0YSXHK/FJ9tjn8j5S7g2fJAECaL45wdGTZw4m4CP7XxBq33Cb47tFoErsplRTlOj7LY/n+LRTr+/0oYfIWQe1CKr5aWLJMBJRsGC3fpl26BgSsVEqV5PumoKAlNiOcUZUETtkAdB5yxCKcooqlvUnb04hiGH4inXXnhSoa3zNmtXjk8S+nxOrAe1wTUodyZwioG+Y7+LsplJ/IthCIItIsPxX8gj7orkp+ti8uMAF7iSo+rf42NPWwVp60dWU+xQr7FKIerRusGL/DcbkQVfqT2LQC44xFTtA5QXJJ4Eh6Wtzj2FIi5ACha4LkDidh0Ka+XP9OALzsM= X-Microsoft-Exchange-Diagnostics: 1; AM6PR04MB4935; 6:aEGaoILmjwyBDse8c0AtLZB1UTIXidhDi1N8x9nZ+oc6RPylSj4uMrsJGa9LnPsWj9RzD7zx61tp/BR0Vc761wYlJFrHG8kuMriN8fsea/DoW3yQ1GmvtT7aEPaPMWPdcoEY56m9YaHIIzubS5cmmXgvau2IcOj+8C+okr+3GLMSpP+rtVHAKakOl/5e0lFoR8H54DvT5sqUiWVo0iHMHTeLMzSOD+/9XTm15DUtGreImZ6ILjamRLfURKo2SZvBpB2hoezcSmEyPlU4MUjLmoLKPKSa9GTZE2PGeNIH9wjC3QFOeYh3Kvad81p+SxupkMqakKx3JjwsNTWihvYYk7Dg14zKrUN32VqV20p9AnrpBzpqcRFROwFcJ/LNbn+NGyg1BtwT6gdZk/Rl8Kj8jT1M33gFQ0UX2XlE0UbSOvdBnZfZ/I4EAHd3ssvww2kp9123F7xOaE+8n4HbnkehWA==; 5:ltW8xaCQ3v+0G6W38L2H+fBTGcGyQSG/sna65T837jqOySn8j8D35l2HxLOsy16BLP1gFjzY5FgCcJJzMnVP9vl3pjNLhXEOxOlRDjvbSK9mnkCxJITJhcAWVje5u/8mgeulHpzqUjp+SrW1kBALzzpZx+M78V6gf4HAhRQZ+Fs=; 7:NGxYHPqc/FhwbMWCLrI0rqlzqcHYEbJSWAARHe/olnykGHT5GiXroI+lB4Hyz5vLZ6mpoei3ni9DtNeIyGPTyTHOSA8FUqqcBHvYLDe0+N/YR58Qh3IqbolRCk9U6DCc64DAKjh2wUnDeYrAy19T2AkEArsYg1zDWwehCxmZme8PYQnW12V0jQ334chNL6RV5sJM6wB503Try4I75akr3iWYJxhgX9b9dvzlBHkeFWJKG1J2ec7hbwV7S0Eyna50 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Sep 2018 05:03:55.4596 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2ef02f9b-17be-44cc-ba60-08d62436a16d X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB4935 Cc: Priyanka Jain Subject: [U-Boot] [PATCH][v2] armv8: lsch3: Add support of serdes3 module 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" Some lsch3 based SoCs like lx2160a contains three serdes modules. Add support for third serdes protocol in lsch3 Signed-off-by: Priyanka Jain --- Changes for v2: Updated copyright Renamed CONFIG_SYS_FSL_SRDS_3 to CONFIG_SYS_NXP_SRDS_3 arch/arm/cpu/armv8/fsl-layerscape/Kconfig | 3 + .../cpu/armv8/fsl-layerscape/fsl_lsch3_serdes.c | 71 ++++++++++++++++++++++ .../include/asm/arch-fsl-layerscape/fsl_serdes.h | 2 + 3 files changed, 76 insertions(+) diff --git a/arch/arm/cpu/armv8/fsl-layerscape/Kconfig b/arch/arm/cpu/armv8/fsl-layerscape/Kconfig index f2111fa..fd31ae1 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/Kconfig +++ b/arch/arm/cpu/armv8/fsl-layerscape/Kconfig @@ -348,6 +348,9 @@ config SYS_FSL_SRDS_1 config SYS_FSL_SRDS_2 bool +config SYS_NXP_SRDS_3 + bool + config SYS_HAS_SERDES bool diff --git a/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch3_serdes.c b/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch3_serdes.c index 2bef841..bfd2868 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch3_serdes.c +++ b/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch3_serdes.c @@ -1,5 +1,6 @@ // SPDX-License-Identifier: GPL-2.0+ /* + * Copyright 2016-2018 NXP * Copyright 2014-2015 Freescale Semiconductor, Inc. */ @@ -16,6 +17,9 @@ static u8 serdes1_prtcl_map[SERDES_PRCTL_COUNT]; #ifdef CONFIG_SYS_FSL_SRDS_2 static u8 serdes2_prtcl_map[SERDES_PRCTL_COUNT]; #endif +#ifdef CONFIG_SYS_NXP_SRDS_3 +static u8 serdes3_prtcl_map[SERDES_PRCTL_COUNT]; +#endif #if defined(CONFIG_FSL_MC_ENET) && !defined(CONFIG_SPL_BUILD) int xfi_dpmac[XFI8 + 1]; @@ -57,6 +61,12 @@ int is_serdes_configured(enum srds_prtcl device) ret |= serdes2_prtcl_map[device]; #endif +#ifdef CONFIG_SYS_NXP_SRDS_3 + if (!serdes3_prtcl_map[NONE]) + fsl_serdes_init(); + + ret |= serdes3_prtcl_map[device]; +#endif return !!ret; } @@ -82,6 +92,13 @@ int serdes_get_first_lane(u32 sd, enum srds_prtcl device) cfg >>= FSL_CHASSIS3_SRDS2_PRTCL_SHIFT; break; #endif +#ifdef CONFIG_SYS_NXP_SRDS_3 + case NXP_SRDS_3: + cfg = gur_in32(&gur->rcwsr[FSL_CHASSIS3_SRDS3_REGSR - 1]); + cfg &= FSL_CHASSIS3_SRDS3_PRTCL_MASK; + cfg >>= FSL_CHASSIS3_SRDS3_PRTCL_SHIFT; + break; +#endif default: printf("invalid SerDes%d\n", sd); break; @@ -201,6 +218,12 @@ struct serdes_prctl_info srds_prctl_info[] = { .shift = FSL_CHASSIS3_SRDS2_PRTCL_SHIFT }, #endif +#ifdef CONFIG_SYS_NXP_SRDS_3 + {.id = 3, + .mask = FSL_CHASSIS3_SRDS3_PRTCL_MASK, + .shift = FSL_CHASSIS3_SRDS3_PRTCL_SHIFT + }, +#endif {} /* NULL ENTRY */ }; @@ -341,6 +364,11 @@ int setup_serdes_volt(u32 svdd) (void *)(CONFIG_SYS_FSL_LSCH3_SERDES_ADDR + 0x10000); u32 cfg_rcwsrds2 = gur_in32(&gur->rcwsr[FSL_CHASSIS3_SRDS2_REGSR - 1]); #endif +#ifdef CONFIG_SYS_NXP_SRDS_3 + struct ccsr_serdes __iomem *serdes3_base = + (void *)(CONFIG_SYS_FSL_LSCH3_SERDES_ADDR + 0x20000); + u32 cfg_rcwsrds3 = gur_in32(&gur->rcwsr[FSL_CHASSIS3_SRDS3_REGSR - 1]); +#endif u32 cfg_tmp; int svdd_cur, svdd_tar; int ret = 1; @@ -370,6 +398,9 @@ int setup_serdes_volt(u32 svdd) #ifdef CONFIG_SYS_FSL_SRDS_2 do_enabled_lanes_reset(2, cfg_rcwsrds2, serdes2_base, false); #endif +#ifdef CONFIG_SYS_NXP_SRDS_3 + do_enabled_lanes_reset(3, cfg_rcwsrds3, serdes3_base, false); +#endif /* Put the all enabled PLL in reset */ #ifdef CONFIG_SYS_FSL_SRDS_1 @@ -383,6 +414,12 @@ int setup_serdes_volt(u32 svdd) do_pll_reset(cfg_tmp, serdes2_base); #endif +#ifdef CONFIG_SYS_NXP_SRDS_3 + cfg_tmp = cfg_rcwsrds3 & 0x30; + cfg_tmp >>= 4; + do_pll_reset(cfg_tmp, serdes3_base); +#endif + /* Put the Rx/Tx calibration into reset */ #ifdef CONFIG_SYS_FSL_SRDS_1 do_rx_tx_cal_reset(serdes1_base); @@ -392,6 +429,10 @@ int setup_serdes_volt(u32 svdd) do_rx_tx_cal_reset(serdes2_base); #endif +#ifdef CONFIG_SYS_NXP_SRDS_3 + do_rx_tx_cal_reset(serdes3_base); +#endif + ret = set_serdes_volt(svdd); if (ret < 0) { printf("could not change SVDD\n"); @@ -408,6 +449,11 @@ int setup_serdes_volt(u32 svdd) cfg_tmp >>= 2; do_serdes_enable(cfg_tmp, serdes2_base); #endif +#ifdef CONFIG_SYS_NXP_SRDS_3 + cfg_tmp = cfg_rcwsrds3 & 0x30; + cfg_tmp >>= 4; + do_serdes_enable(cfg_tmp, serdes3_base); +#endif /* Wait for at at least 625us, ensure the PLLs being reset are locked */ udelay(800); @@ -422,6 +468,13 @@ int setup_serdes_volt(u32 svdd) cfg_tmp >>= 2; do_pll_lock(cfg_tmp, serdes2_base); #endif + +#ifdef CONFIG_SYS_NXP_SRDS_3 + cfg_tmp = cfg_rcwsrds3 & 0x30; + cfg_tmp >>= 4; + do_pll_lock(cfg_tmp, serdes3_base); +#endif + /* Take the all enabled lanes out of reset */ #ifdef CONFIG_SYS_FSL_SRDS_1 do_enabled_lanes_reset(1, cfg_rcwsrds1, serdes1_base, true); @@ -430,6 +483,10 @@ int setup_serdes_volt(u32 svdd) do_enabled_lanes_reset(2, cfg_rcwsrds2, serdes2_base, true); #endif +#ifdef CONFIG_SYS_NXP_SRDS_3 + do_enabled_lanes_reset(3, cfg_rcwsrds3, serdes3_base, true); +#endif + /* For each PLL being reset, and achieved PLL lock set RST_DONE */ #ifdef CONFIG_SYS_FSL_SRDS_1 cfg_tmp = cfg_rcwsrds1 & 0x3; @@ -441,6 +498,12 @@ int setup_serdes_volt(u32 svdd) do_pll_reset_done(cfg_tmp, serdes2_base); #endif +#ifdef CONFIG_SYS_NXP_SRDS_3 + cfg_tmp = cfg_rcwsrds3 & 0x30; + cfg_tmp >>= 4; + do_pll_reset_done(cfg_tmp, serdes3_base); +#endif + return ret; } @@ -472,4 +535,12 @@ void fsl_serdes_init(void) FSL_CHASSIS3_SRDS2_PRTCL_SHIFT, serdes2_prtcl_map); #endif +#ifdef CONFIG_SYS_NXP_SRDS_3 + serdes_init(NXP_SRDS_3, + CONFIG_SYS_FSL_LSCH3_SERDES_ADDR + NXP_SRDS_3 * 0x10000, + FSL_CHASSIS3_SRDS3_REGSR, + FSL_CHASSIS3_SRDS3_PRTCL_MASK, + FSL_CHASSIS3_SRDS3_PRTCL_SHIFT, + serdes3_prtcl_map); +#endif } diff --git a/arch/arm/include/asm/arch-fsl-layerscape/fsl_serdes.h b/arch/arm/include/asm/arch-fsl-layerscape/fsl_serdes.h index 6981076..bec35e8 100644 --- a/arch/arm/include/asm/arch-fsl-layerscape/fsl_serdes.h +++ b/arch/arm/include/asm/arch-fsl-layerscape/fsl_serdes.h @@ -1,5 +1,6 @@ /* SPDX-License-Identifier: GPL-2.0+ */ /* + * Copyright 2018 NXP * Copyright 2015 Freescale Semiconductor, Inc. */ @@ -57,6 +58,7 @@ enum srds_prtcl { enum srds { FSL_SRDS_1 = 0, FSL_SRDS_2 = 1, + NXP_SRDS_3 = 2, }; #elif defined(CONFIG_FSL_LSCH2) enum srds_prtcl {