Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/803042/?format=api
{ "id": 803042, "url": "http://patchwork.ozlabs.org/api/patches/803042/?format=api", "web_url": "http://patchwork.ozlabs.org/project/uboot/patch/1503035091-28883-1-git-send-email-Ashish.Kumar@nxp.com/", "project": { "id": 18, "url": "http://patchwork.ozlabs.org/api/projects/18/?format=api", "name": "U-Boot", "link_name": "uboot", "list_id": "u-boot.lists.denx.de", "list_email": "u-boot@lists.denx.de", "web_url": null, "scm_url": null, "webscm_url": null, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<1503035091-28883-1-git-send-email-Ashish.Kumar@nxp.com>", "list_archive_url": null, "date": "2017-08-18T05:44:49", "name": "[U-Boot,v4,1/3] armv8: ls1088a: Add NXP LS1088A SoC support", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "05162e718e6d0c2d61311d93b26687234cc40a39", "submitter": { "id": 68053, "url": "http://patchwork.ozlabs.org/api/people/68053/?format=api", "name": "Ashish Kumar", "email": "Ashish.kumar@nxp.com" }, "delegate": { "id": 2666, "url": "http://patchwork.ozlabs.org/api/users/2666/?format=api", "username": "yorksun", "first_name": "York", "last_name": "Sun", "email": "yorksun@freescale.com" }, "mbox": "http://patchwork.ozlabs.org/project/uboot/patch/1503035091-28883-1-git-send-email-Ashish.Kumar@nxp.com/mbox/", "series": [], "comments": "http://patchwork.ozlabs.org/api/patches/803042/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/803042/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<u-boot-bounces@lists.denx.de>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming@bilbo.ozlabs.org", "Authentication-Results": [ "ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.denx.de\n\t(client-ip=81.169.180.215; helo=lists.denx.de;\n\tenvelope-from=u-boot-bounces@lists.denx.de;\n\treceiver=<UNKNOWN>)", "spf=fail (sender IP is 192.88.168.50)\n\tsmtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed)\n\theader.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com;" ], "Received": [ "from lists.denx.de (dione.denx.de [81.169.180.215])\n\tby ozlabs.org (Postfix) with ESMTP id 3xYX9D483xz9t2x\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri, 18 Aug 2017 15:45:04 +1000 (AEST)", "by lists.denx.de (Postfix, from userid 105)\n\tid 460DFC21E93; Fri, 18 Aug 2017 05:45:03 +0000 (UTC)", "from lists.denx.de (localhost [IPv6:::1])\n\tby lists.denx.de (Postfix) with ESMTP id 5756FC21DA9;\n\tFri, 18 Aug 2017 05:44:54 +0000 (UTC)", "by lists.denx.de (Postfix, from userid 105)\n\tid 0883BC21DA9; Fri, 18 Aug 2017 05:44:52 +0000 (UTC)", "from NAM02-BL2-obe.outbound.protection.outlook.com\n\t(mail-bl2nam02on0087.outbound.protection.outlook.com [104.47.38.87])\n\tby lists.denx.de (Postfix) with ESMTPS id 01284C21C54\n\tfor <u-boot@lists.denx.de>; Fri, 18 Aug 2017 05:44:52 +0000 (UTC)", "from CY4PR03CA0014.namprd03.prod.outlook.com (10.168.162.24) by\n\tCY4PR03MB3317.namprd03.prod.outlook.com (10.171.246.150) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id\n\t15.1.1341.21; Fri, 18 Aug 2017 05:44:49 +0000", "from BN1AFFO11FD009.protection.gbl (2a01:111:f400:7c10::151) by\n\tCY4PR03CA0014.outlook.office365.com (2603:10b6:903:33::24) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.1.1362.18\n\tvia Frontend Transport; Fri, 18 Aug 2017 05:44:49 +0000", "from tx30smr01.am.freescale.net (192.88.168.50) by\n\tBN1AFFO11FD009.mail.protection.outlook.com (10.58.52.69) with\n\tMicrosoft SMTP Server (version=TLS1_0,\n\tcipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1341.15\n\tvia Frontend Transport; Fri, 18 Aug 2017 05:44:49 +0000", "from ubuntu1604.ap.freescale.net (ubuntu1604.ap.freescale.net\n\t[10.232.133.7])\n\tby tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id\n\tv7I5ijOc005054; Thu, 17 Aug 2017 22:44:45 -0700" ], "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,\n\tRCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,\n\tSPF_HELO_PASS\n\tautolearn=unavailable autolearn_force=no version=3.4.0", "Received-SPF": "Fail (protection.outlook.com: domain of nxp.com does not\n\tdesignate 192.88.168.50 as permitted sender)\n\treceiver=protection.outlook.com; \n\tclient-ip=192.88.168.50; helo=tx30smr01.am.freescale.net;", "From": "Ashish Kumar <Ashish.Kumar@nxp.com>", "To": "<u-boot@lists.denx.de>", "Date": "Fri, 18 Aug 2017 11:14:49 +0530", "Message-ID": "<1503035091-28883-1-git-send-email-Ashish.Kumar@nxp.com>", "X-Mailer": "git-send-email 2.7.4", "X-EOPAttributedMessage": "0", "X-Matching-Connectors": "131475086894368985;\n\t(91ab9b29-cfa4-454e-5278-08d120cd25b8); ()", "X-Forefront-Antispam-Report": "CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI;\n\tSFV:NSPM;\n\tSFS:(10009020)(6009001)(336005)(39860400002)(39380400002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(8676002)(189998001)(8936002)(86362001)(2906002)(575784001)(81156014)(6916009)(81166006)(50986999)(5660300001)(36756003)(8656003)(53936002)(68736007)(47776003)(5003940100001)(6306002)(110136004)(54906002)(48376002)(50466002)(72206003)(85426001)(966005)(50226002)(104016004)(4326008)(2351001)(105606002)(626005)(77096006)(305945005)(356003)(106466001)(498600001)(97736004);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR03MB3317;\n\tH:tx30smr01.am.freescale.net; \n\tFPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; ", "X-Microsoft-Exchange-Diagnostics": [ "1; BN1AFFO11FD009;\n\t1:bFGcEqb7uwjsPruCzpDjBffkLsMx5C0kCZ/zN/yxAv2r38a6cE4yCivTiy5ttj4Y0JYR2LdNm1qC0FAfEcfZ6ssLLv2xp+g8R+wq+XbGlz0CR1f8ojO5twa+ytcq3Ajb", "1; CY4PR03MB3317;\n\t3:mcSyYAIsrLNPJIot9A4cuL4p0pHcTXqRwl11ahGtGfDpRqbf/aEHHBOsK1mxdeC4h2bIdZBwcp0lHvNFq9CUF6L1/d9O4PFVp8yYMQaojuispMau9tSzEclY20mC/MaPHqFxTieLfS4s8ZAm2DF4vOWgj8nXj8gi4tjbVEIZyIxeAOC3HBc9BKb6Nq8d8yDrPlK1H91gJLg2Xp4fx0JmklCIUg9NKV9fBT+9sXd2t52qeYGBatd+GTH26GhVUxJKzCX8LiIJtOIMvLwlgWMksSI2wiO5TEF9GkT03GdyPVdEJZOepnll3GaxFk1ht4G8Vdx+kOjyRsnmdyOrcG273VlHnFSOgB0MQ+lvSZtiSDw=;\n\t25:s/RfIqTD+pn9dLosykIvyJW43Z2+betcuX64C+1biJ6t6KtBQ72cg0GrfSjktCBC9TvZFx7VLng5cWhANGs15075BBwKhZIAPTgzoF+98VMQB2HDqbHijzAfvUajza70A4ZELK42wPhHtLZZ0+WaDs0FgW0QFA/vmOfniIw7Qe1uz5RJjzEeFDoiP1nF1bspPshEf+H8rIjKjuQw2+gZbEZy5bI2hcB+ip6uXRnwIWtpadp1EHoUyqoSIC/YZ3UncHDeNL7iFcSc7g8clD841o/RXThWC008hvgiUM487CkTnEsQ75uVg+siGNPajD9ieJ9E4RtFwkVYpAsvpNVWYA==", "1; CY4PR03MB3317;\n\t31:yht7sk2Cf+1NbOdZ8td78q8AXfEzzBLb1h9r/6ESQ5rkFyt9pFny+gzDq0AXz1OgE2s+YeBs6sXcMLZSJRnvw9uMpmyXtNRBwJmzJk8okdTvn7KetFmd0OjPJwNDgV2aDVpShVnflGxtjtD5KcAqd4usVCQTmVHJQb3w9eUXd1SUFfolrDJEXgOwLokgEqBOYdNY3rNN4Wt/2Fx7gaAuib5Lb8yVL3U8NMSj/b33j84=;\n\t4:jcvCtke3OqzCRNwKDExZzeuOB9wYsI8Csdlsvv9ETiSqlIKBVvSk1IONhEDjHtnXXv//M4UZOj0iEnfqekxhZEkHrQmgqIiflBWybpVMSUcoQS62Z65GWnqkgj7OJt057H4nDDZP8YTICKjSHqiSSk6dKLv2k31waApB83ptc5cJZ+xbIGnZeD27HF59t0GV9ycI8l2ow/ufQnePE14akuF1nVnsBYKjI33CdMTgS424s5Q/5jLlT2hI8kOOMT85HhDk76Pg9e8TsueBF+T2eCNbxPA3chms5uWtASjxMK5aWEkTlT80qyE/CzP7NlzhaT0wEUMymxzHgGuILJ8AjM+ddZabFbKDZw9vsOCqrvNGn66+tbNm5aDu7FAxdLN+", "=?us-ascii?Q?1; CY4PR03MB3317;\n\t23:qbKQU8WXNuoD6gXmplUQYH1SnhYCwiKHwppRH8ka7?=\n\t=?us-ascii?Q?6CEhux6/DyGwny7rgegTcXHHcM0/jzaca514gabuuq+mju7GQlE66RR35a5R?=\n\t=?us-ascii?Q?bkbi3wMKcly/UfVo1hfsQkeeJzhCgGvYsu2XHecJ+Z/PGAUmTT01hXQJVPJF?=\n\t=?us-ascii?Q?ky+ynIC56Ql+bDaN29bufIEXZpWA7OlXHxi6i2sYQ/8cB6I3F2ug3RGit8bQ?=\n\t=?us-ascii?Q?Uu/L9oxnzDDdmzuMelP8nrqUzPXxhWuOMN0rvMASqWlcOfE3gqeBcp6zOXpx?=\n\t=?us-ascii?Q?Tb89WrtNz1MaDF8H7EV46e9xTEEEY5dfnTDoO3TGLti1mLyhy5aQY7XvMap+?=\n\t=?us-ascii?Q?2MYsE7j5ycm5s+FRlf4Y5a/Ly8q/cXj9f5YXa0fP927E0H60KC8Zl93TqhHo?=\n\t=?us-ascii?Q?JTHXJ5eVIXQa0fl7g1absfB+EafPrEdUhEK8grBLnzXHMQXuaNKsVYrjAD4r?=\n\t=?us-ascii?Q?+NjBXt5RaOQEpO/2qiWHMDyj7oAfWkKVu54yO2PDkjzTjyX3JK76GGQ7GPL9?=\n\t=?us-ascii?Q?3qCJ6ktG8FT5waFLt+pMzUhBEuhHtOrLgz/YzonRkhnRrdL/8wFsXagHO7zw?=\n\t=?us-ascii?Q?Bh+R29vKqDdQGvzJDfpZK9yQy5qZ9oc9Csq5iCDhC9owvBn0eVDEJl8esa4z?=\n\t=?us-ascii?Q?PLGQhpXot/OVL0yadF1XWVoz/4PinC2wQ9vg35johRwv5yjfC9Ie1CWtzNaP?=\n\t=?us-ascii?Q?FJmLR2Fq8Ryp7APGm7gdDYb4He9w8ZxIpqrblMq4uLdH/cmZf9SSUwn4c78O?=\n\t=?us-ascii?Q?By2hRoOkrZChx3TH2krquYRC+s4AXaLY635+Q/YigKBaDbT+evgcsm4w0mih?=\n\t=?us-ascii?Q?Hw89npbH99n4949R+aLjh2YnwKN9IK3b19xBAvFQwYQ2rVQMKpv0MJUUSCn4?=\n\t=?us-ascii?Q?MYgP+kclkVNFjWauKbZrf24EZ7CxgJ7QRp+Cuv2hNXGj2wcvsY8QHWJdmOkl?=\n\t=?us-ascii?Q?ToruSrtOKuLPmvTXYvvR1OHGgy6lYgAg6SabCUdDmVAm0lkYWU6UXm2nF78p?=\n\t=?us-ascii?Q?boDC8/921bUtH2V5UBArDAhWUL6WKdzMGRpYHbD9rTmG2Wn4Z/sOBqTkjPS8?=\n\t=?us-ascii?Q?e6FDCsYfCxXJyraDncC/m5umZoZidb6w1vEvNHHCqpbUzeh9AL1bMiAsJYpn?=\n\t=?us-ascii?Q?3R09SBq8cY=3D?=", "1; CY4PR03MB3317;\n\t6:jkZteF1Ci/nXfPsYkzJHB2UB99wuLzVZcJK1/sWLp5tOhQhvj9CT6u75JlkNw2h7irszpVwXs1hGQeSQyN08Fg/78c88o7M0lJeITb/c/PhznYmYA+lP0+uiBJgYLgUC+tupksSokr7Q2UUEi8B3K5CQ6eMvCaHxHDq0neCghruzNAWYQHGslLB5Hk6WalZvZXnI8f8wYf5z2Iywm9njgADmzl9huUW2Bpw+deCkoy3sk1lhIUwx3ifQjT3C62bS/EGNFxAO91WSgqUobJMUhBZ3PUJ+RhRoGkAlvLDxc7JS3CG3TB2kwNdryxFNGHmaPGyYJvfgCkt08oE89DM2aA==;\n\t5:94JneeJVIHufkFdizXPwdXxUL7eLlMFLA2GLsDaRznOeFnmo3yjersMowmpTCojqD1tXmmlvnmk6pur/gilogqupfYO8jqYNiHUrFMZoqb7nHGLypABJOZZXTNT6bdCgyGPjPpGrcnzoj3Rq9tKLOA==;\n\t24:Lo0daydRK5FLU+19sc8222VI3XFx1fviO5xcW56O+GmF8Wa5nHvS/5pLhcxWmmKNb9afb1Av/LMgUpFaKJaaW5LpBUF8wDEijfMy4fuCtVA=;\n\t7:yAZEo0KreQRtDgBuu96e7b5UuFT3JDtk0/PuvPeDe1AvPs2NkZFInxpIp4Jpw8LU/Sg0G9YEOOvnVf0qxxDK9TwM49Xffn2ImoVk+g5oA4FiPzWQ82U/11U5ELuffqCKT8P3iVZXL6wwMkI+PkTpdrhtV1QFjjRg+h99wbowXqK2k8VcTwe4wbK3HWbNnqbSNTxr7yk2pPRn/O214IR2JpFPhQOzVuTFa/6jVp45XaE=" ], "MIME-Version": "1.0", "X-MS-PublicTrafficType": "Email", "X-MS-Office365-Filtering-Correlation-Id": "1a4b2225-a255-427a-4619-08d4e5fc3d99", "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0;\n\tRULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(2017052603031)(201703131430075)(201703131517081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);\n\tSRVR:CY4PR03MB3317; ", "X-MS-TrafficTypeDiagnostic": "CY4PR03MB3317:", "X-Exchange-Antispam-Report-Test": "UriScan:(192374486261705)(185117386973197)(275809806118684); ", "X-Microsoft-Antispam-PRVS": "<CY4PR03MB3317E8872A60EBD0155DAFAD95800@CY4PR03MB3317.namprd03.prod.outlook.com>", "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(601004)(2401047)(5005006)(13016025)(8121501046)(13018025)(3002001)(10201501046)(93006095)(93001095)(100000703101)(100105400095)(6055026)(6096035)(20161123561025)(20161123563025)(201703131430075)(201703131433075)(201703131441075)(201703131448075)(201703161259150)(20161123559100)(20161123556025)(20161123565025)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:CY4PR03MB3317; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:CY4PR03MB3317; ", "X-Forefront-PRVS": "040359335D", "SpamDiagnosticOutput": "1:99", "SpamDiagnosticMetadata": "NSPM", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "18 Aug 2017 05:44:49.2340\n\t(UTC)", "X-MS-Exchange-CrossTenant-Id": "5afe0b00-7697-4969-b663-5eab37d5f47e", "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e;\n\tIp=[192.88.168.50]; \n\tHelo=[tx30smr01.am.freescale.net]", "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "CY4PR03MB3317", "Cc": "Shaohui Xie <Shaohui.Xie@nxp.com>, Alison Wang <alison.wang@nxp.com>,\n\tRaghav Dogra <raghav.dogra@nxp.com>", "Subject": "[U-Boot] [PATCH v4 1/3] armv8: ls1088a: Add NXP LS1088A SoC support", "X-BeenThere": "u-boot@lists.denx.de", "X-Mailman-Version": "2.1.18", "Precedence": "list", "List-Id": "U-Boot discussion <u-boot.lists.denx.de>", "List-Unsubscribe": "<https://lists.denx.de/options/u-boot>,\n\t<mailto:u-boot-request@lists.denx.de?subject=unsubscribe>", "List-Archive": "<http://lists.denx.de/pipermail/u-boot/>", "List-Post": "<mailto:u-boot@lists.denx.de>", "List-Help": "<mailto:u-boot-request@lists.denx.de?subject=help>", "List-Subscribe": "<https://lists.denx.de/listinfo/u-boot>,\n\t<mailto:u-boot-request@lists.denx.de?subject=subscribe>", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "base64", "Errors-To": "u-boot-bounces@lists.denx.de", "Sender": "\"U-Boot\" <u-boot-bounces@lists.denx.de>" }, "content": "The QorIQ LS1088A processor is built on the Layerscape\narchitecture combining eight ARM A53 processor cores\nwith advanced, high-performance datapath acceleration\nand networks, peripheral interfaces required for\nnetworking, wireless infrastructure, and general-purpose\nembedded applications.\n\nLS1088A is compliant with the Layerscape Chassis Generation 3.\n\nFeatures summary:\n - Eight 32-bit / 64-bit ARM v8 Cortex-A53 CPUs\n - Cores are in 2 cluster of 4-cores each\n - Cache coherent interconnect (CCI-400)\n - One 64-bit DDR4 SDRAM memory controller with ECC\n - Data path acceleration architecture 2.0 (DPAA2)\n - Ethernet interfaces: SGMIIs, RGMIIs, QSGMIIs, XFIs\n - QSPI, IFC, 3 PCIe, 1 SATA, 2 USB, 1 SDXC, 2 DUARTs etc\n\nSigned-off-by: Alison Wang <alison.wang@nxp.com>\nSigned-off-by: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com>\nSigned-off-by: Ashish Kumar <Ashish.Kumar@nxp.com>\nSigned-off-by: Raghav Dogra <raghav.dogra@nxp.com>\nSigned-off-by: Shaohui Xie <Shaohui.Xie@nxp.com>\n---\nDepends upon:\nspi: fsl_qspi: Add controller busy check before new spi operation\n\nfor clean git am http://patchwork.ozlabs.org/patch/800408,803038,803037\nto applied first\n\nv2:\n Fix indentaion in commit msg\n Separate RDB and Si specific file\n Move Macros to Kconfig\n\nv3:\n1.Re-based on top of\n commit d529124fdcf941c34074fd1ce600f4b1b4a7dd07\n Merge: f0ca30f 6a5691e\n Author: Tom Rini <trini@konsulko.com>\n Date: Tue Aug 8 17:06:19 2017 -0400\n\n Merge git://git.denx.de/u-boot-x86\n\n2.Incorporate review comments on v2\n Clean up done\n\n3.Migrate changes from ls1088ardb_stream_id.h to stream_id_lsch3.h\n\nv4:\n1.Spliting CCN504 and SATA configs to different patch\n2.README.soc updated\n3.Other comments addressed\n\n arch/arm/cpu/armv8/fsl-layerscape/Kconfig | 35 +++++-\n arch/arm/cpu/armv8/fsl-layerscape/Makefile | 4 +\n arch/arm/cpu/armv8/fsl-layerscape/doc/README.soc | 43 ++++++-\n .../cpu/armv8/fsl-layerscape/fsl_lsch3_serdes.c | 19 ++++\n arch/arm/cpu/armv8/fsl-layerscape/ls1088a_serdes.c | 126 +++++++++++++++++++++\n arch/arm/cpu/armv8/fsl-layerscape/soc.c | 1 +\n arch/arm/dts/fsl-ls1088a.dtsi | 78 +++++++++++++\n arch/arm/include/asm/arch-fsl-layerscape/config.h | 62 +++++++++-\n arch/arm/include/asm/arch-fsl-layerscape/cpu.h | 4 +\n .../include/asm/arch-fsl-layerscape/fsl_serdes.h | 3 +-\n .../include/asm/arch-fsl-layerscape/immap_lsch3.h | 11 ++\n arch/arm/include/asm/arch-fsl-layerscape/soc.h | 4 +\n .../asm/arch-fsl-layerscape/stream_id_lsch3.h | 14 +++\n drivers/ddr/fsl/util.c | 2 +-\n drivers/net/ldpaa_eth/Makefile | 1 +\n drivers/net/ldpaa_eth/ls1088a.c | 87 ++++++++++++++\n 16 files changed, 482 insertions(+), 12 deletions(-)\n create mode 100644 arch/arm/cpu/armv8/fsl-layerscape/ls1088a_serdes.c\n create mode 100644 arch/arm/dts/fsl-ls1088a.dtsi\n create mode 100644 drivers/net/ldpaa_eth/ls1088a.c", "diff": "diff --git a/arch/arm/cpu/armv8/fsl-layerscape/Kconfig b/arch/arm/cpu/armv8/fsl-layerscape/Kconfig\nindex bb69ca6..dfcc081 100644\n--- a/arch/arm/cpu/armv8/fsl-layerscape/Kconfig\n+++ b/arch/arm/cpu/armv8/fsl-layerscape/Kconfig\n@@ -49,6 +49,29 @@ config ARCH_LS1046A\n \tselect BOARD_EARLY_INIT_F\n \timply SCSI\n \n+config ARCH_LS1088A\n+\tbool\n+\tselect ARMV8_SET_SMPEN\n+\tselect FSL_LSCH3\n+\tselect SYS_FSL_DDR\n+\tselect SYS_FSL_DDR_LE\n+\tselect SYS_FSL_DDR_VER_50\n+\tselect SYS_FSL_ERRATUM_A009803\n+\tselect SYS_FSL_ERRATUM_A009942\n+\tselect SYS_FSL_ERRATUM_A010165\n+\tselect SYS_FSL_ERRATUM_A008511\n+\tselect SYS_FSL_ERRATUM_A008850\n+\tselect SYS_FSL_HAS_CCI400\n+\tselect SYS_FSL_HAS_DDR4\n+\tselect SYS_FSL_HAS_SEC\n+\tselect SYS_FSL_SEC_COMPAT_5\n+\tselect SYS_FSL_SEC_LE\n+\tselect SYS_FSL_SRDS_1\n+\tselect SYS_FSL_SRDS_2\n+\tselect FSL_TZASC_1\n+\tselect ARCH_EARLY_INIT_R\n+\tselect BOARD_EARLY_INIT_F\n+\n config ARCH_LS2080A\n \tbool\n \tselect ARMV8_SET_SMPEN\n@@ -99,7 +122,7 @@ config FSL_LSCH3\n \n config FSL_MC_ENET\n \tbool \"Management Complex network\"\n-\tdepends on ARCH_LS2080A\n+\tdepends on ARCH_LS2080A || ARCH_LS1088A\n \tdefault y\n \tselect RESV_RAM\n \thelp\n@@ -115,6 +138,7 @@ config FSL_PCIE_COMPAT\n \tdefault \"fsl,ls1043a-pcie\" if ARCH_LS1043A\n \tdefault \"fsl,ls1046a-pcie\" if ARCH_LS1046A\n \tdefault \"fsl,ls2080a-pcie\" if ARCH_LS2080A\n+\tdefault \"fsl,ls1088a-pcie\" if ARCH_LS1088A\n \thelp\n \t This compatible is used to find pci controller node in Kernel DT\n \t to complete fixup.\n@@ -229,6 +253,7 @@ config MAX_CPUS\n \tdefault 4 if ARCH_LS1043A\n \tdefault 4 if ARCH_LS1046A\n \tdefault 16 if ARCH_LS2080A\n+\tdefault 8 if ARCH_LS1088A\n \tdefault 1\n \thelp\n \t Set this number to the maximum number of possible CPUs in the SoC.\n@@ -260,10 +285,10 @@ config SYS_CCI400_OFFSET\n \n config SYS_FSL_IFC_BANK_COUNT\n \tint \"Maximum banks of Integrated flash controller\"\n-\tdepends on ARCH_LS1043A || ARCH_LS1046A || ARCH_LS2080A\n+\tdepends on ARCH_LS1043A || ARCH_LS1046A || ARCH_LS2080A || ARCH_LS1088A\n \tdefault 4 if ARCH_LS1043A\n \tdefault 4 if ARCH_LS1046A\n-\tdefault 8 if ARCH_LS2080A\n+\tdefault 8 if ARCH_LS2080A || ARCH_LS1088A\n \n config SYS_FSL_HAS_CCI400\n \tbool\n@@ -312,6 +337,7 @@ config SYS_FSL_PCLK_DIV\n \tint \"Platform clock divider\"\n \tdefault 1 if ARCH_LS1043A\n \tdefault 1 if ARCH_LS1046A\n+\tdefault 1 if ARCH_LS1088A\n \tdefault 2\n \thelp\n \t This is the divider that is used to derive Platform clock from\n@@ -405,7 +431,8 @@ config SYS_FSL_ERRATUM_A009929\n config SYS_MC_RSV_MEM_ALIGN\n \thex \"Management Complex reserved memory alignment\"\n \tdepends on RESV_RAM\n-\tdefault 0x20000000\n+\tdefault 0x20000000 if ARCH_LS2080A\n+\tdefault 0x70000000 if ARCH_LS1088A\n \thelp\n \t Reserved memory needs to be aligned for MC to use. Default value\n \t is 512MB.\ndiff --git a/arch/arm/cpu/armv8/fsl-layerscape/Makefile b/arch/arm/cpu/armv8/fsl-layerscape/Makefile\nindex e3ce018..115c3fc 100644\n--- a/arch/arm/cpu/armv8/fsl-layerscape/Makefile\n+++ b/arch/arm/cpu/armv8/fsl-layerscape/Makefile\n@@ -38,3 +38,7 @@ endif\n ifneq ($(CONFIG_ARCH_LS1046A),)\n obj-$(CONFIG_SYS_HAS_SERDES) += ls1046a_serdes.o\n endif\n+\n+ifneq ($(CONFIG_ARCH_LS1088A),)\n+obj-$(CONFIG_SYS_HAS_SERDES) += ls1088a_serdes.o\n+endif\ndiff --git a/arch/arm/cpu/armv8/fsl-layerscape/doc/README.soc b/arch/arm/cpu/armv8/fsl-layerscape/doc/README.soc\nindex 3ae16ae..276ab90 100644\n--- a/arch/arm/cpu/armv8/fsl-layerscape/doc/README.soc\n+++ b/arch/arm/cpu/armv8/fsl-layerscape/doc/README.soc\n@@ -1,11 +1,12 @@\n SoC overview\n \n \t1. LS1043A\n-\t2. LS2080A\n-\t3. LS1012A\n-\t4. LS1046A\n-\t5. LS2088A\n-\t6. LS2081A\n+\t2. LS1088A\n+\t3. LS2080A\n+\t4. LS1012A\n+\t5. LS1046A\n+\t6. LS2088A\n+\t7. LS2081A\n \n LS1043A\n ---------\n@@ -45,6 +46,38 @@ The LS1043A SoC includes the following function and features:\n - Integrated flash controller supporting NAND and NOR flash\n - QorIQ platform's trust architecture 2.1\n \n+LS1088A\n+--------\n+The QorIQ LS1088A processor is built on the Layerscape\n+architecture combining eight ARM A53 processor cores\n+with advanced, high-performance datapath acceleration\n+and networks, peripheral interfaces required for\n+networking, wireless infrastructure, and general-purpose\n+embedded applications.\n+\n+LS1088A is compliant with the Layerscape Chassis Generation 3.\n+\n+Features summary:\n+ - 8 32-bit / 64-bit ARM v8 Cortex-A53 CPUs\n+ - Cores are in 2 cluster of 4-cores each\n+ - 1MB L2 - Cache per cluster\n+ - Cache coherent interconnect (CCI-400)\n+ - 1 64-bit DDR4 SDRAM memory controller with ECC\n+ - Data path acceleration architecture 2.0 (DPAA2)\n+ - 4-Lane 10GHz SerDes comprising of WRIOP\n+ - 4-Lane 10GHz SerDes comprising of PCI, SATA, uQE(TDM/HLDC/UART)\n+ - Ethernet interfaces: SGMIIs, RGMIIs, QSGMIIs, XFIs\n+ - QSPI, SPI, IFC2.0 supporting NAND, NOR flash\n+ - 3 PCIe3.0 , 1 SATA3.0, 2 USB3.0, 1 SDXC, 2 DUARTs etc\n+ - 2 DUARTs\n+ - 4 I2C, GPIO\n+ - Thermal monitor unit(TMU)\n+ - 4 Flextimers and 1 generic timer\n+ - Support for hardware virtualization and partitioning enforcement\n+ - QorIQ platform's trust architecture 3.0\n+ - Service processor (SP) provides pre-boot initialization and secure-boot\n+ capabilities\n+\n LS2080A\n --------\n The LS2080A integrated multicore processor combines eight ARM Cortex-A57\ndiff --git a/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch3_serdes.c b/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch3_serdes.c\nindex ef97556..179cac6 100644\n--- a/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch3_serdes.c\n+++ b/arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch3_serdes.c\n@@ -28,6 +28,20 @@ __weak void wriop_init_dpmac_qsgmii(int sd, int lane_prtcl)\n \treturn;\n }\n \n+/*\n+ *The return value of this func is the serdes protocol used.\n+ *Typically this function is called number of times depending\n+ *upon the number of serdes blocks in the Silicon.\n+ *Zero is used to denote that no serdes was enabled,\n+ *this is the case when golden RCW was used where DPAA2 bring was\n+ *intentionally removed to achieve boot to prompt\n+*/\n+\n+__weak int serdes_get_number(int serdes, int cfg)\n+{\n+\treturn cfg;\n+}\n+\n int is_serdes_configured(enum srds_prtcl device)\n {\n \tint ret = 0;\n@@ -73,6 +87,9 @@ int serdes_get_first_lane(u32 sd, enum srds_prtcl device)\n \t\tprintf(\"invalid SerDes%d\\n\", sd);\n \t\tbreak;\n \t}\n+\n+\tcfg = serdes_get_number(sd, cfg);\n+\n \t/* Is serdes enabled at all? */\n \tif (cfg == 0)\n \t\treturn -ENODEV;\n@@ -99,6 +116,8 @@ void serdes_init(u32 sd, u32 sd_addr, u32 rcwsr, u32 sd_prctl_mask,\n \n \tcfg = gur_in32(&gur->rcwsr[rcwsr - 1]) & sd_prctl_mask;\n \tcfg >>= sd_prctl_shift;\n+\n+\tcfg = serdes_get_number(sd, cfg);\n \tprintf(\"Using SERDES%d Protocol: %d (0x%x)\\n\", sd + 1, cfg, cfg);\n \n \tif (!is_serdes_prtcl_valid(sd, cfg))\ndiff --git a/arch/arm/cpu/armv8/fsl-layerscape/ls1088a_serdes.c b/arch/arm/cpu/armv8/fsl-layerscape/ls1088a_serdes.c\nnew file mode 100644\nindex 0000000..9f5cdd5\n--- /dev/null\n+++ b/arch/arm/cpu/armv8/fsl-layerscape/ls1088a_serdes.c\n@@ -0,0 +1,126 @@\n+/*\n+ * Copyright 2017 NXP\n+ *\n+ * SPDX-License-Identifier:\tGPL-2.0+\n+ */\n+\n+#include <common.h>\n+#include <asm/arch/fsl_serdes.h>\n+\n+struct serdes_config {\n+\tu8 ip_protocol;\n+\tu8 lanes[SRDS_MAX_LANES];\n+\tu8 rcw_lanes[SRDS_MAX_LANES];\n+};\n+\n+static struct serdes_config serdes1_cfg_tbl[] = {\n+\t/* SerDes 1 */\n+\t{0x12, {SGMII3, SGMII7, SGMII1, SGMII2 }, {3, 3, 3, 3 } },\n+\t{0x15, {SGMII3, SGMII7, XFI1, XFI2 }, {3, 3, 1, 1 } },\n+\t{0x16, {SGMII3, SGMII7, SGMII1, XFI2 }, {3, 3, 3, 1 } },\n+\t{0x17, {SGMII3, SGMII7, SGMII1, SGMII2 }, {3, 3, 3, 2 } },\n+\t{0x18, {SGMII3, SGMII7, SGMII1, SGMII2 }, {3, 3, 2, 2 } },\n+\t{0x19, {SGMII3, QSGMII_B, XFI1, XFI2}, {3, 4, 1, 1 } },\n+\t{0x1A, {SGMII3, QSGMII_B, SGMII1, XFI2 }, {3, 4, 3, 1 } },\n+\t{0x1B, {SGMII3, QSGMII_B, SGMII1, SGMII2 }, {3, 4, 3, 2 } },\n+\t{0x1C, {SGMII3, QSGMII_B, SGMII1, SGMII2 }, {3, 4, 2, 2 } },\n+\t{0x1D, {QSGMII_A, QSGMII_B, XFI1, XFI2 }, {4, 4, 1, 1 } },\n+\t{0x1E, {QSGMII_A, QSGMII_B, SGMII1, XFI2 }, {4, 4, 3, 1 } },\n+\t{0x1F, {QSGMII_A, QSGMII_B, SGMII1, SGMII2 }, {4, 4, 3, 2 } },\n+\t{0x20, {QSGMII_A, QSGMII_B, SGMII1, SGMII2 }, {4, 4, 2, 2 } },\n+\t{0x35, {SGMII3, QSGMII_B, SGMII1, SGMII2 }, {3, 4, 3, 3 } },\n+\t{0x36, {QSGMII_A, QSGMII_B, SGMII1, SGMII2 }, {4, 4, 3, 3 } },\n+\t{0x3A, {SGMII3, PCIE1, SGMII1, SGMII2 }, {3, 5, 3, 3 } },\n+\t\t{}\n+};\n+static struct serdes_config serdes2_cfg_tbl[] = {\n+\t/* SerDes 2 */\n+\t{0x0C, {PCIE1, PCIE1, PCIE1, PCIE1 }, {8, 8, 8, 8 } },\n+\t{0x0D, {PCIE1, PCIE2, PCIE3, SATA1 }, {5, 5, 5, 9 } },\n+\t{0x0E, {PCIE1, PCIE1, PCIE2, SATA1 }, {7, 7, 6, 9 } },\n+\t{0x13, {PCIE1, PCIE1, PCIE3, PCIE3 }, {7, 7, 7, 7 } },\n+\t{0x14, {PCIE1, PCIE2, PCIE3, PCIE3 }, {5, 5, 7, 7 } },\n+\t{0x3C, {NONE, PCIE2, NONE, PCIE3 }, {0, 5, 0, 6 } },\n+\t{}\n+};\n+\n+static struct serdes_config *serdes_cfg_tbl[] = {\n+\tserdes1_cfg_tbl,\n+\tserdes2_cfg_tbl,\n+};\n+\n+int serdes_get_number(int serdes, int cfg)\n+{\n+\tstruct serdes_config *ptr;\n+\tint i, j, index, lnk;\n+\tint is_found, max_lane = SRDS_MAX_LANES;\n+\n+\tif (serdes >= ARRAY_SIZE(serdes_cfg_tbl))\n+\t\treturn 0;\n+\n+\tptr = serdes_cfg_tbl[serdes];\n+\n+\twhile (ptr->ip_protocol) {\n+\t\tis_found = 1;\n+\t\tfor (i = 0, j = max_lane - 1; i < max_lane; i++, j--) {\n+\t\t\tlnk = cfg & (0xf << 4 * i);\n+\t\t\tlnk = lnk >> (4 * i);\n+\n+\t\t\tindex = (serdes == FSL_SRDS_1) ? j : i;\n+\n+\t\t\tif (ptr->rcw_lanes[index] == lnk && is_found)\n+\t\t\t\tis_found = 1;\n+\t\t\telse\n+\t\t\t\tis_found = 0;\n+\t\t}\n+\n+\t\tif (is_found)\n+\t\t\treturn ptr->ip_protocol;\n+\t\tptr++;\n+\t}\n+\n+\treturn 0;\n+}\n+\n+enum srds_prtcl serdes_get_prtcl(int serdes, int cfg, int lane)\n+{\n+\tstruct serdes_config *ptr;\n+\n+\tif (serdes >= ARRAY_SIZE(serdes_cfg_tbl))\n+\t\treturn 0;\n+\n+\tptr = serdes_cfg_tbl[serdes];\n+\twhile (ptr->ip_protocol) {\n+\t\tif (ptr->ip_protocol == cfg)\n+\t\t\treturn ptr->lanes[lane];\n+\t\tptr++;\n+\t}\n+\n+\treturn 0;\n+}\n+\n+int is_serdes_prtcl_valid(int serdes, u32 prtcl)\n+{\n+\tint i;\n+\tstruct serdes_config *ptr;\n+\n+\tif (serdes >= ARRAY_SIZE(serdes_cfg_tbl))\n+\t\treturn 0;\n+\n+\tptr = serdes_cfg_tbl[serdes];\n+\twhile (ptr->ip_protocol) {\n+\t\tif (ptr->ip_protocol == prtcl)\n+\t\t\tbreak;\n+\t\tptr++;\n+\t}\n+\n+\tif (!ptr->ip_protocol)\n+\t\treturn 0;\n+\n+\tfor (i = 0; i < SRDS_MAX_LANES; i++) {\n+\t\tif (ptr->lanes[i] != NONE)\n+\t\t\treturn 1;\n+\t}\n+\n+\treturn 0;\n+}\ndiff --git a/arch/arm/cpu/armv8/fsl-layerscape/soc.c b/arch/arm/cpu/armv8/fsl-layerscape/soc.c\nindex a704103..18820f6 100644\n--- a/arch/arm/cpu/armv8/fsl-layerscape/soc.c\n+++ b/arch/arm/cpu/armv8/fsl-layerscape/soc.c\n@@ -24,6 +24,7 @@\n #ifdef CONFIG_CHAIN_OF_TRUST\n #include <fsl_validate.h>\n #endif\n+#include <fsl_immap.h>\n \n DECLARE_GLOBAL_DATA_PTR;\n \ndiff --git a/arch/arm/dts/fsl-ls1088a.dtsi b/arch/arm/dts/fsl-ls1088a.dtsi\nnew file mode 100644\nindex 0000000..421d2de\n--- /dev/null\n+++ b/arch/arm/dts/fsl-ls1088a.dtsi\n@@ -0,0 +1,78 @@\n+/*\n+ * NXP ls1088a SOC common device tree source\n+ *\n+ * Copyright 2017 NXP\n+ *\n+ * SPDX-License-Identifier:\tGPL-2.0+\n+ */\n+\n+/ {\n+\tcompatible = \"fsl,ls1088a\";\n+\tinterrupt-parent = <&gic>;\n+\t#address-cells = <2>;\n+\t#size-cells = <2>;\n+\n+\tmemory@80000000 {\n+\t\tdevice_type = \"memory\";\n+\t\treg = <0x00000000 0x80000000 0 0x80000000>;\n+\t\t /* DRAM space - 1, size : 2 GB DRAM */\n+\t};\n+\n+\tgic: interrupt-controller@6000000 {\n+\t\tcompatible = \"arm,gic-v3\";\n+\t\treg = <0x0 0x06000000 0 0x10000>, /* GIC Dist */\n+\t\t <0x0 0x06100000 0 0x100000>; /* GICR (RD_base + SGI_base) */\n+\t\t#interrupt-cells = <3>;\n+\t\tinterrupt-controller;\n+\t\tinterrupts = <1 9 0x4>;\n+\t};\n+\n+\ttimer {\n+\t\tcompatible = \"arm,armv8-timer\";\n+\t\tinterrupts = <1 13 0x8>, /* Physical Secure PPI, active-low */\n+\t\t\t <1 14 0x8>, /* Physical Non-Secure PPI, active-low */\n+\t\t\t <1 11 0x8>, /* Virtual PPI, active-low */\n+\t\t\t <1 10 0x8>; /* Hypervisor PPI, active-low */\n+\t};\n+\n+\tserial0: serial@21c0500 {\n+\t\tdevice_type = \"serial\";\n+\t\tcompatible = \"fsl,ns16550\", \"ns16550a\";\n+\t\treg = <0x0 0x21c0500 0x0 0x100>;\n+\t\tclock-frequency = <0>;\t/* Updated by bootloader */\n+\t\tinterrupts = <0 32 0x1>; /* edge triggered */\n+\t};\n+\n+\tserial1: serial@21c0600 {\n+\t\tdevice_type = \"serial\";\n+\t\tcompatible = \"fsl,ns16550\", \"ns16550a\";\n+\t\treg = <0x0 0x21c0600 0x0 0x100>;\n+\t\tclock-frequency = <0>; \t/* Updated by bootloader */\n+\t\tinterrupts = <0 32 0x1>; /* edge triggered */\n+\t};\n+\n+\tfsl_mc: fsl-mc@80c000000 {\n+\t\tcompatible = \"fsl,qoriq-mc\";\n+\t\treg = <0x00000008 0x0c000000 0 0x40>,\t /* MC portal base */\n+\t\t <0x00000000 0x08340000 0 0x40000>; /* MC control reg */\n+\t};\n+\n+\tdspi: dspi@2100000 {\n+\t\tcompatible = \"fsl,vf610-dspi\";\n+\t\t#address-cells = <1>;\n+\t\t#size-cells = <0>;\n+\t\treg = <0x0 0x2100000 0x0 0x10000>;\n+\t\tinterrupts = <0 26 0x4>; /* Level high type */\n+\t\tnum-cs = <6>;\n+\t};\n+\n+\tqspi: quadspi@1550000 {\n+\t\tcompatible = \"fsl,vf610-qspi\";\n+\t\t#address-cells = <1>;\n+\t\t#size-cells = <0>;\n+\t\treg = <0x0 0x20c0000 0x0 0x10000>,\n+\t\t\t<0x0 0x20000000 0x0 0x10000000>;\n+\t\treg-names = \"QuadSPI\", \"QuadSPI-memory\";\n+\t\tnum-cs = <4>;\n+\t};\n+};\ndiff --git a/arch/arm/include/asm/arch-fsl-layerscape/config.h b/arch/arm/include/asm/arch-fsl-layerscape/config.h\nindex 79e94f9..a7098be 100644\n--- a/arch/arm/include/asm/arch-fsl-layerscape/config.h\n+++ b/arch/arm/include/asm/arch-fsl-layerscape/config.h\n@@ -116,6 +116,67 @@\n #define CONFIG_SYS_FSL_ERRATUM_A008751\n \n #define CONFIG_SYS_FSL_MAX_NUM_OF_SEC\t\t1\n+\n+#elif defined(CONFIG_ARCH_LS1088A)\n+#define CONFIG_SYS_FSL_NUM_CC_PLLS\t\t3\n+#define CONFIG_SYS_FSL_CLUSTER_CLOCKS\t\t{ 1, 1 }\n+#define CONFIG_GICV3\n+#define CONFIG_FSL_TZPC_BP147\n+#define CONFIG_FSL_TZASC_400\n+#define CONFIG_SYS_PAGE_SIZE\t\t0x10000\n+\n+#define\tSRDS_MAX_LANES\t4\n+\n+/* TZ Protection Controller Definitions */\n+#define TZPC_BASE\t\t\t\t0x02200000\n+#define TZPCR0SIZE_BASE\t\t\t\t(TZPC_BASE)\n+#define TZPCDECPROT_0_STAT_BASE\t\t\t(TZPC_BASE + 0x800)\n+#define TZPCDECPROT_0_SET_BASE\t\t\t(TZPC_BASE + 0x804)\n+#define TZPCDECPROT_0_CLR_BASE\t\t\t(TZPC_BASE + 0x808)\n+#define TZPCDECPROT_1_STAT_BASE\t\t\t(TZPC_BASE + 0x80C)\n+#define TZPCDECPROT_1_SET_BASE\t\t\t(TZPC_BASE + 0x810)\n+#define TZPCDECPROT_1_CLR_BASE\t\t\t(TZPC_BASE + 0x814)\n+#define TZPCDECPROT_2_STAT_BASE\t\t\t(TZPC_BASE + 0x818)\n+#define TZPCDECPROT_2_SET_BASE\t\t\t(TZPC_BASE + 0x81C)\n+#define TZPCDECPROT_2_CLR_BASE\t\t\t(TZPC_BASE + 0x820)\n+\n+/* Generic Interrupt Controller Definitions */\n+#define GICD_BASE\t\t\t0x06000000\n+#define GICR_BASE\t\t\t0x06100000\n+\n+/* SMMU Defintions */\n+#define SMMU_BASE\t\t\t0x05000000 /* GR0 Base */\n+\n+/* DDR */\n+#define CONFIG_SYS_DDR_BLOCK1_SIZE\t((phys_size_t)2 << 30)\n+#define CONFIG_MAX_MEM_MAPPED\t\tCONFIG_SYS_DDR_BLOCK1_SIZE\n+\n+#define CONFIG_SYS_FSL_CCSR_GUR_LE\n+#define CONFIG_SYS_FSL_CCSR_SCFG_LE\n+#define CONFIG_SYS_FSL_ESDHC_LE\n+#define CONFIG_SYS_FSL_IFC_LE\n+#define CONFIG_SYS_FSL_PEX_LUT_LE\n+\n+#define CONFIG_SYS_MEMAC_LITTLE_ENDIAN\n+\n+/* SFP */\n+#define CONFIG_SYS_FSL_SFP_VER_3_4\n+#define CONFIG_SYS_FSL_SFP_LE\n+#define CONFIG_SYS_FSL_SRK_LE\n+\n+/* Security Monitor */\n+#define CONFIG_SYS_FSL_SEC_MON_LE\n+\n+/* Secure Boot */\n+#define CONFIG_ESBC_HDR_LS\n+\n+/* DCFG - GUR */\n+#define CONFIG_SYS_FSL_CCSR_GUR_LE\n+#define CONFIG_SYS_FSL_MAX_NUM_OF_SEC\t1\n+#define CONFIG_SYS_FSL_OCRAM_BASE\t0x18000000 /* initial RAM */\n+#define SYS_FSL_OCRAM_SPACE_SIZE\t0x00200000 /* 2M space */\n+#define CONFIG_SYS_FSL_OCRAM_SIZE\t0x00020000 /* Real size 128K */\n+\n #elif defined(CONFIG_FSL_LSCH2)\n #define CONFIG_SYS_FSL_OCRAM_BASE\t\t0x10000000 /* initial RAM */\n #define SYS_FSL_OCRAM_SPACE_SIZE\t\t0x00200000 /* 2M space */\n@@ -218,7 +279,6 @@\n #define GICC_BASE\t\t0x01420000\n \n #define CONFIG_SYS_FSL_MAX_NUM_OF_SEC\t\t1\n-\n #else\n #error SoC not defined\n #endif\ndiff --git a/arch/arm/include/asm/arch-fsl-layerscape/cpu.h b/arch/arm/include/asm/arch-fsl-layerscape/cpu.h\nindex c4e5ecc..0126783 100644\n--- a/arch/arm/include/asm/arch-fsl-layerscape/cpu.h\n+++ b/arch/arm/include/asm/arch-fsl-layerscape/cpu.h\n@@ -24,6 +24,10 @@ static struct cpu_type cpu_type_list[] = {\n \tCPU_TYPE_ENTRY(LS1026A, LS1026A, 2),\n \tCPU_TYPE_ENTRY(LS2040A, LS2040A, 4),\n \tCPU_TYPE_ENTRY(LS1012A, LS1012A, 1),\n+\tCPU_TYPE_ENTRY(LS1088A, LS1088A, 8),\n+\tCPU_TYPE_ENTRY(LS1084A, LS1084A, 8),\n+\tCPU_TYPE_ENTRY(LS1048A, LS1048A, 4),\n+\tCPU_TYPE_ENTRY(LS1044A, LS1044A, 4),\n };\n \n #ifndef CONFIG_SYS_DCACHE_OFF\ndiff --git a/arch/arm/include/asm/arch-fsl-layerscape/fsl_serdes.h b/arch/arm/include/asm/arch-fsl-layerscape/fsl_serdes.h\nindex a8f9a50..a2c7578 100644\n--- a/arch/arm/include/asm/arch-fsl-layerscape/fsl_serdes.h\n+++ b/arch/arm/include/asm/arch-fsl-layerscape/fsl_serdes.h\n@@ -9,7 +9,7 @@\n \n #include <config.h>\n \n-#ifdef CONFIG_ARCH_LS2080A\n+#ifdef CONFIG_FSL_LSCH3\n enum srds_prtcl {\n \t/*\n \t * Nobody will check whether the device 'NONE' has been configured,\n@@ -158,6 +158,7 @@ void fsl_serdes_init(void);\n int serdes_get_first_lane(u32 sd, enum srds_prtcl device);\n enum srds_prtcl serdes_get_prtcl(int serdes, int cfg, int lane);\n int is_serdes_prtcl_valid(int serdes, u32 prtcl);\n+int serdes_get_number(int serdes, int cfg);\n \n #ifdef CONFIG_FSL_LSCH2\n const char *serdes_clock_to_string(u32 clock);\ndiff --git a/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h b/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h\nindex 59410aa..99a7413 100644\n--- a/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h\n+++ b/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h\n@@ -246,6 +246,17 @@ struct ccsr_gur {\n #define FSL_CHASSIS3_SRDS2_PRTCL_SHIFT\tFSL_CHASSIS3_RCWSR28_SRDS2_PRTCL_SHIFT\n #define FSL_CHASSIS3_SRDS1_REGSR\t29\n #define FSL_CHASSIS3_SRDS2_REGSR\t29\n+#elif defined(CONFIG_ARCH_LS1088A)\n+#define\tFSL_CHASSIS3_RCWSR29_SRDS1_PRTCL_MASK\t0xFFFF0000\n+#define\tFSL_CHASSIS3_RCWSR29_SRDS1_PRTCL_SHIFT\t16\n+#define\tFSL_CHASSIS3_RCWSR30_SRDS2_PRTCL_MASK\t0x0000FFFF\n+#define\tFSL_CHASSIS3_RCWSR30_SRDS2_PRTCL_SHIFT\t0\n+#define FSL_CHASSIS3_SRDS1_PRTCL_MASK\tFSL_CHASSIS3_RCWSR29_SRDS1_PRTCL_MASK\n+#define FSL_CHASSIS3_SRDS1_PRTCL_SHIFT\tFSL_CHASSIS3_RCWSR29_SRDS1_PRTCL_SHIFT\n+#define FSL_CHASSIS3_SRDS2_PRTCL_MASK\tFSL_CHASSIS3_RCWSR30_SRDS2_PRTCL_MASK\n+#define FSL_CHASSIS3_SRDS2_PRTCL_SHIFT\tFSL_CHASSIS3_RCWSR30_SRDS2_PRTCL_SHIFT\n+#define FSL_CHASSIS3_SRDS1_REGSR\t29\n+#define FSL_CHASSIS3_SRDS2_REGSR\t30\n #endif\n #define RCW_SB_EN_REG_INDEX\t9\n #define RCW_SB_EN_MASK\t\t0x00000400\ndiff --git a/arch/arm/include/asm/arch-fsl-layerscape/soc.h b/arch/arm/include/asm/arch-fsl-layerscape/soc.h\nindex aeb1273..ea8aced 100644\n--- a/arch/arm/include/asm/arch-fsl-layerscape/soc.h\n+++ b/arch/arm/include/asm/arch-fsl-layerscape/soc.h\n@@ -57,6 +57,10 @@ struct cpu_type {\n #define SVR_LS1023A\t\t0x879208\n #define SVR_LS1046A\t\t0x870700\n #define SVR_LS1026A\t\t0x870708\n+#define SVR_LS1048A\t\t0x870320\n+#define SVR_LS1084A\t\t0x870302\n+#define SVR_LS1088A\t\t0x870300\n+#define SVR_LS1044A\t\t0x870322\n #define SVR_LS2045A\t\t0x870120\n #define SVR_LS2080A\t\t0x870110\n #define SVR_LS2085A\t\t0x870100\ndiff --git a/arch/arm/include/asm/arch-fsl-layerscape/stream_id_lsch3.h b/arch/arm/include/asm/arch-fsl-layerscape/stream_id_lsch3.h\nindex d7d527d..d1891c4 100644\n--- a/arch/arm/include/asm/arch-fsl-layerscape/stream_id_lsch3.h\n+++ b/arch/arm/include/asm/arch-fsl-layerscape/stream_id_lsch3.h\n@@ -66,12 +66,26 @@\n #define FSL_USB2_STREAM_ID\t\t2\n #define FSL_SDMMC_STREAM_ID\t\t3\n #define FSL_SATA1_STREAM_ID\t\t4\n+\n+#if defined(CONFIG_ARCH_LS2080A)\n #define FSL_SATA2_STREAM_ID\t\t5\n+#endif\n+\n+#if defined(CONFIG_ARCH_LS2080A)\n #define FSL_DMA_STREAM_ID\t\t6\n+#elif defined(CONFIG_ARCH_LS1088A)\n+#define FSL_DMA_STREAM_ID\t\t5\n+#endif\n \n /* PCI - programmed in PEXn_LUT */\n #define FSL_PEX_STREAM_ID_START\t\t7\n+\n+#if defined(CONFIG_ARCH_LS2080A)\n #define FSL_PEX_STREAM_ID_END\t\t22\n+#elif defined(CONFIG_ARCH_LS1088A)\n+#define FSL_PEX_STREAM_ID_END\t\t18\n+#endif\n+\n \n /* DPAA2 - set in MC DPC and alloced by MC */\n #define FSL_DPAA2_STREAM_ID_START\t23\ndiff --git a/drivers/ddr/fsl/util.c b/drivers/ddr/fsl/util.c\nindex 0a305b3..d6e6e78 100644\n--- a/drivers/ddr/fsl/util.c\n+++ b/drivers/ddr/fsl/util.c\n@@ -390,7 +390,7 @@ void fsl_ddr_sync_memctl_refresh(unsigned int first_ctrl,\n \n void remove_unused_controllers(fsl_ddr_info_t *info)\n {\n-#ifdef CONFIG_FSL_LSCH3\n+#ifdef CONFIG_SYS_FSL_HAS_CCN504\n \tint i;\n \tu64 nodeid;\n \tvoid *hnf_sam_ctrl = (void *)(CCI_HN_F_0_BASE + CCN_HN_F_SAM_CTL);\ndiff --git a/drivers/net/ldpaa_eth/Makefile b/drivers/net/ldpaa_eth/Makefile\nindex 08675ec..13ecd38 100644\n--- a/drivers/net/ldpaa_eth/Makefile\n+++ b/drivers/net/ldpaa_eth/Makefile\n@@ -7,3 +7,4 @@\n obj-y += ldpaa_wriop.o\n obj-y += ldpaa_eth.o\n obj-$(CONFIG_ARCH_LS2080A) += ls2080a.o\n+obj-$(CONFIG_ARCH_LS1088A) += ls1088a.o\ndiff --git a/drivers/net/ldpaa_eth/ls1088a.c b/drivers/net/ldpaa_eth/ls1088a.c\nnew file mode 100644\nindex 0000000..703945c\n--- /dev/null\n+++ b/drivers/net/ldpaa_eth/ls1088a.c\n@@ -0,0 +1,87 @@\n+/*\n+ * Copyright 2017 NXP\n+ *\n+ * SPDX-License-Identifier:\tGPL-2.0+\n+ */\n+#include <common.h>\n+#include <phy.h>\n+#include <fsl-mc/ldpaa_wriop.h>\n+#include <asm/io.h>\n+#include <asm/arch/fsl_serdes.h>\n+\n+u32 dpmac_to_devdisr[] = {\n+\t[WRIOP1_DPMAC1] = FSL_CHASSIS3_DEVDISR2_DPMAC1,\n+\t[WRIOP1_DPMAC2] = FSL_CHASSIS3_DEVDISR2_DPMAC2,\n+\t[WRIOP1_DPMAC3] = FSL_CHASSIS3_DEVDISR2_DPMAC3,\n+\t[WRIOP1_DPMAC4] = FSL_CHASSIS3_DEVDISR2_DPMAC4,\n+\t[WRIOP1_DPMAC5] = FSL_CHASSIS3_DEVDISR2_DPMAC5,\n+\t[WRIOP1_DPMAC6] = FSL_CHASSIS3_DEVDISR2_DPMAC6,\n+\t[WRIOP1_DPMAC7] = FSL_CHASSIS3_DEVDISR2_DPMAC7,\n+\t[WRIOP1_DPMAC8] = FSL_CHASSIS3_DEVDISR2_DPMAC8,\n+\t[WRIOP1_DPMAC9] = FSL_CHASSIS3_DEVDISR2_DPMAC9,\n+\t[WRIOP1_DPMAC10] = FSL_CHASSIS3_DEVDISR2_DPMAC10,\n+};\n+\n+static int is_device_disabled(int dpmac_id)\n+{\n+\tstruct ccsr_gur __iomem *gur = (void *)CONFIG_SYS_FSL_GUTS_ADDR;\n+\tu32 devdisr2 = in_le32(&gur->devdisr2);\n+\n+\treturn dpmac_to_devdisr[dpmac_id] & devdisr2;\n+}\n+\n+void wriop_dpmac_disable(int dpmac_id)\n+{\n+\tstruct ccsr_gur __iomem *gur = (void *)CONFIG_SYS_FSL_GUTS_ADDR;\n+\n+\tsetbits_le32(&gur->devdisr2, dpmac_to_devdisr[dpmac_id]);\n+}\n+\n+void wriop_dpmac_enable(int dpmac_id)\n+{\n+\tstruct ccsr_gur __iomem *gur = (void *)CONFIG_SYS_FSL_GUTS_ADDR;\n+\n+\tclrbits_le32(&gur->devdisr2, dpmac_to_devdisr[dpmac_id]);\n+}\n+\n+phy_interface_t wriop_dpmac_enet_if(int dpmac_id, int lane_prtcl)\n+{\n+\tenum srds_prtcl;\n+\n+\tif (is_device_disabled(dpmac_id + 1))\n+\t\treturn PHY_INTERFACE_MODE_NONE;\n+\n+\tswitch (lane_prtcl) {\n+\tcase SGMII1:\n+\tcase SGMII2:\n+\tcase SGMII3:\n+\tcase SGMII7:\n+\t\treturn PHY_INTERFACE_MODE_SGMII;\n+\t}\n+\n+\tif (lane_prtcl >= XFI1 && lane_prtcl <= XFI2)\n+\t\treturn PHY_INTERFACE_MODE_XGMII;\n+\n+\tif (lane_prtcl >= QSGMII_A && lane_prtcl <= QSGMII_B)\n+\t\treturn PHY_INTERFACE_MODE_QSGMII;\n+\n+\treturn PHY_INTERFACE_MODE_NONE;\n+}\n+\n+void wriop_init_dpmac_qsgmii(int sd, int lane_prtcl)\n+{\n+\tswitch (lane_prtcl) {\n+\tcase QSGMII_A:\n+\t\twriop_init_dpmac(sd, 3, (int)lane_prtcl);\n+\t\twriop_init_dpmac(sd, 4, (int)lane_prtcl);\n+\t\twriop_init_dpmac(sd, 5, (int)lane_prtcl);\n+\t\twriop_init_dpmac(sd, 6, (int)lane_prtcl);\n+\t\tbreak;\n+\tcase QSGMII_B:\n+\t\twriop_init_dpmac(sd, 7, (int)lane_prtcl);\n+\t\twriop_init_dpmac(sd, 8, (int)lane_prtcl);\n+\t\twriop_init_dpmac(sd, 9, (int)lane_prtcl);\n+\t\twriop_init_dpmac(sd, 10, (int)lane_prtcl);\n+\t\tbreak;\n+\t}\n+}\n", "prefixes": [ "U-Boot", "v4", "1/3" ] }