Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/630322/?format=api
{ "id": 630322, "url": "http://patchwork.ozlabs.org/api/patches/630322/?format=api", "web_url": "http://patchwork.ozlabs.org/project/uboot/patch/1465087380-19469-2-git-send-email-eddy.petrisor@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": "<1465087380-19469-2-git-send-email-eddy.petrisor@nxp.com>", "list_archive_url": null, "date": "2016-06-05T00:42:59", "name": "[U-Boot,v6,1/2] serial: Introduce linflex uart support", "commit_ref": "1f68dbc881d3169f2cd6093564b8e90e000cc034", "pull_url": null, "state": "accepted", "archived": false, "hash": "9c084f28300a3802314da5bf80b6eb33cb59c72c", "submitter": { "id": 68289, "url": "http://patchwork.ozlabs.org/api/people/68289/?format=api", "name": "Eddy Petrisor", "email": "eddy.petrisor@nxp.com" }, "delegate": { "id": 3651, "url": "http://patchwork.ozlabs.org/api/users/3651/?format=api", "username": "trini", "first_name": "Tom", "last_name": "Rini", "email": "trini@ti.com" }, "mbox": "http://patchwork.ozlabs.org/project/uboot/patch/1465087380-19469-2-git-send-email-eddy.petrisor@nxp.com/mbox/", "series": [], "comments": "http://patchwork.ozlabs.org/api/patches/630322/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/630322/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", "Received": [ "from theia.denx.de (theia.denx.de [85.214.87.163])\n\tby ozlabs.org (Postfix) with ESMTP id 3rMfG85M78z9t6k\n\tfor <incoming@patchwork.ozlabs.org>;\n\tSun, 5 Jun 2016 10:43:44 +1000 (AEST)", "from localhost (localhost [127.0.0.1])\n\tby theia.denx.de (Postfix) with ESMTP id BE1564B9F9;\n\tSun, 5 Jun 2016 02:43:39 +0200 (CEST)", "from theia.denx.de ([127.0.0.1])\n\tby localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id eAsDIqp-MC6l; Sun, 5 Jun 2016 02:43:39 +0200 (CEST)", "from theia.denx.de (localhost [127.0.0.1])\n\tby theia.denx.de (Postfix) with ESMTP id 2DE0F4BA0E;\n\tSun, 5 Jun 2016 02:43:37 +0200 (CEST)", "from localhost (localhost [127.0.0.1])\n\tby theia.denx.de (Postfix) with ESMTP id 9C0364B9AD\n\tfor <u-boot@lists.denx.de>; Sun, 5 Jun 2016 02:43:33 +0200 (CEST)", "from theia.denx.de ([127.0.0.1])\n\tby localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id sBTi688xZ61I for <u-boot@lists.denx.de>;\n\tSun, 5 Jun 2016 02:43:33 +0200 (CEST)", "from na01-by2-obe.outbound.protection.outlook.com\n\t(mail-by2on0071.outbound.protection.outlook.com [207.46.100.71])\n\tby theia.denx.de (Postfix) with ESMTPS id 1C5184B811\n\tfor <u-boot@lists.denx.de>; Sun, 5 Jun 2016 02:43:27 +0200 (CEST)", "from CH1PR03CA004.namprd03.prod.outlook.com (10.255.156.149) by\n\tCY1PR0301MB1593.namprd03.prod.outlook.com (10.162.166.19) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id\n\t15.1.511.6; Sun, 5 Jun 2016 00:43:25 +0000", "from BN1AFFO11FD009.protection.gbl (10.255.156.132) by\n\tCH1PR03CA004.outlook.office365.com (10.255.156.149) with Microsoft\n\tSMTP Server (TLS) id 15.1.501.7 via Frontend Transport;\n\tSun, 5 Jun 2016 00:43:25 +0000", "from az84smr01.freescale.net (192.88.158.2) by\n\tBN1AFFO11FD009.mail.protection.outlook.com (10.58.52.69) with\n\tMicrosoft SMTP Server (TLS) id 15.1.497.8 via Frontend Transport;\n\tSun, 5 Jun 2016 00:43:24 +0000", "from fsr-ub1264-014.ea.freescale.net\n\t(fsr-ub1264-014.ea.freescale.net [10.171.81.44])\n\tby az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id\n\tu550hFCF026060; Sat, 4 Jun 2016 17:43:22 -0700" ], "X-policyd-weight": "NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5\n\tNOT_IN_BL_NJABL=-1.5 (only DNSBL check requested)", "Authentication-Results": "spf=fail (sender IP is 192.88.158.2)\n\tsmtp.mailfrom=nxp.com; gmail.com; dkim=none (message not signed)\n\theader.d=none; gmail.com; dmarc=none action=none header.from=nxp.com; ", "Received-SPF": "Fail (protection.outlook.com: domain of nxp.com does not\n\tdesignate 192.88.158.2 as permitted sender)\n\treceiver=protection.outlook.com; \n\tclient-ip=192.88.158.2; helo=az84smr01.freescale.net;", "From": "=?UTF-8?q?Eddy=20Petri=C8=99or?= <eddy.petrisor@nxp.com>", "To": "U-Boot Mailing List <u-boot@lists.denx.de>", "Date": "Sun, 5 Jun 2016 03:42:59 +0300", "Message-ID": "<1465087380-19469-2-git-send-email-eddy.petrisor@nxp.com>", "X-Mailer": "git-send-email 1.9.2.459.g68773ac", "In-Reply-To": "<1465087380-19469-1-git-send-email-eddy.petrisor@nxp.com>", "MIME-Version": "1.0", "References": "<1459642206-20101-1-git-send-email-eddy.petrisor@gmail.com>\n\t<1459642206-20101-1-git-send-email-eddy.petrisor@gmail.com>\n\t<1461794874-6105-2-git-send-email-eddy.petrisor@nxp.com>\n\t<1464429375-6191-2-git-send-email-eddy.petrisor@gmail.com>\n\t<1464432715-10996-2-git-send-email-eddy.petrisor@gmail.com>", "X-EOPAttributedMessage": "0", "X-Matching-Connectors": "131095610052871823;\n\t(91ab9b29-cfa4-454e-5278-08d120cd25b8); ()", "X-Forefront-Antispam-Report": "CIP:192.88.158.2; IPV:NLI; CTRY:US; EFV:NLI;\n\tSFV:NSPM;\n\tSFS:(10009020)(6009001)(2980300002)(1109001)(1110001)(339900001)(199003)(57704003)(189002)(9170700003)(81166006)(8676002)(2870700001)(6806005)(104016004)(5008740100001)(586003)(77096005)(2950100001)(2906002)(4326007)(36756003)(47776003)(93886004)(105606002)(189998001)(50226002)(19580395003)(11100500001)(86362001)(106466001)(92566002)(33646002)(229853001)(23676002)(50986999)(50466002)(76176999)(8936002)(110136002)(19580405001)(85426001)(87936001)(5820100001)(21314002);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0301MB1593;\n\tH:az84smr01.freescale.net; \n\tFPR:; SPF:Fail; MLV:sfv; A:1; MX:1; LANG:en; ", "X-Microsoft-Exchange-Diagnostics": [ "1; BN1AFFO11FD009;\n\t1:ALdGAGo6bVM9hc7xGFdqZKxCipXZq6kaQF69qwsrRs6u24RinVTd7Mx8AJ8FTpKXnLmCQOf+E2vvH/hh43GWohHema69Yi1P/37PdOIgGRwnjRELwhKDqcuMKsmok5G2sOLesRpoPuOi+1z9i7iE12JOjRqVO/cMHR/Hpv9r6n98u19ZHZEuIRtGwSn50jDOXE7rNJTxHj+/y4CYehVj0Q8LeSJxnXLRvfLUC90ruUkgfZsMqXRqh532cfEP6kzhOS5iXGEII56MooeJuSo9WFtbfOSkr1nrNSzfz6N0Go/DCuChADQmoHALDTagcVNr3cbFrVzgnIlP5aCEBpqNhOLixosrJEJlg77NTYvhM35prwN4z0U+u1TREYsJVosxq+hFY5RUEbmC10bdqTdzVDeP0MHMEqulhueZu17CjyJdKGqAURJ4OrVyIs3qAvRt8FSR4cdH8UHaGrOKM1i5Dyee1yQyaEZRKLCjyTiox+1Tcwi0uMJuws8jo/2ob+ind5kVOQkzwhD+BTl1ICpRNLU28wmF/ER41Nbj6i+nipyiJQKoaBDROwy1CwRvF5/Qxwa8/C2cH0OoK/eUD69CnR485DxioMYGlqJKPKe9+dvu9/237Kbgow6x+AHb/qil", "1; CY1PR0301MB1593;\n\t2:/icJNZBES8ALjzJKXSjk1n11LV+AW3V3r3Tn/4PK/SjjQlDuzVlS4JLBzOFQ+8Jb1dxefToi8HXENj339FXI9PxXLu9e8nwyqN6T4dYzkptED+mlHBal/PXTOGQLzDWDlVgbe+mcfXsWIxO1SP6Al+XMWeVj9tjqkxNGAANiAo/kfc+vlCaqRq6lElrn0n0/;\n\t3:bqGXmd4xnCpA6ihftOeTMcocIGUlXN5KYb03bBXtNZ3+RZj+/0/jCYzSes9o2KwXpHTHZi6fFbxJ9lBf+48bRiGpB1ncJXL0yypIvA5acInQj2MbzAsL763f/uGpTR4asQLx/Be7/MQoVHvq+H6lbsuDBPywxFdqiLFOa5cwCIKUgFj3d8o5MmhNxRrxkNyfnG+npyeGQjKOl1jGpYxTO8IripOi1HJwy6k8jXDz+no=;\n\t25:RUyVuY/EDNY0duZCxitjjVGG7oN3WJrmHZtRJgQrC00AfoZMtoKHcmFb/aIMQDbfLKZJ6dSG+JhSHjchzifYW377WZ8DPlud4dhBcZOqEQtfTs6eP5mbzAck7kB2RgmUQycJ/697PGOIe4CxfBnqmARs2yNvFaBkUU1U/hCrAAT7kdqw57xXRQcexz97xcOuPT9/uc4kMgkkllcD7KdwY9PjjPBtCOO07naXYrSM7u5Ai9ckzsN5CaeV8Jji1SsKWMhdYeqC7qF4wuPjvFa7h/mynwlS0e59M3CByfvjqT0D/RZAbvnC0DowwOpLTeF+MmIal0MSDoNKA7X6wU1ZL07UD3cq18Nsdeo+jD3jFOOYMktnBPKdYzlBuuPsY3Irsxjsa1EGmmYiMoC9G9hc1YZ67sSP4HvGm8q2eilntFc=", "1; CY1PR0301MB1593;\n\t4:XlskXjdJe2GHeu87dg2nL56rOF4KPMiYgdkEBZj7FKVKOxp1R6lw1EK6+4/7SQf2D46I9XTMJsTV9D+G9DE0cqVvbsVKTg9xvg9DZTy4uYLyccKBndL6LGV0ipZ9I/x/DQ0C2u7TVsydulV77ZPWO2M20GA5ITEWcxO+CIdQW2MfwC0DkpVSa9zhLn8w/6P0XDTW7WbYG49fCeh1Jzz/bNnHwJtvvpJBNB5hwk6vQLNarSIxbNGIHCbLzFJhjsAOC1AjCFwvpdEGmfsvJfvdcfrg0qzZPbOH8NtH4BlfrhHAJBDOEjz+4TBVmK38C4K0rn++Sp5BBBje4kVb4wHKQw/UB9VjwaHOeXKXEXIp/GxzoqUHbf794gUXeJkQ4GIGfQGUHp8KwZlkr+Di6TcfBlCJBp9MV5LRGp4meg3BlHRwq1y9kXDbEo4z+Wj76f/kPDFD0MyG9+iQDhEC1V+/1hh3OkmYQ8bLEWKPOd1Mud5T18CpgN+yHueH/4/26u4eTitnzAnAR3LXbhMIWTiBtw==", "=?utf-8?B?MTtDWTFQUjAzMDFNQjE1OTM7MjM6QjhJMTZsWXdKaTFzU3BvYU9JZzJhTXox?=\n\t=?utf-8?B?ajU1TjdQOVR3TmhmY09USEZSdGdoMGxmZDU2ak5ISGt3YkZJK0EwVHBaeXRN?=\n\t=?utf-8?B?Y09FM0NHb1E0VDNKZm5OcDBpZWN1aGJ0Z0xSaUl5TVRMLzNTVm1zWCs5NGNJ?=\n\t=?utf-8?B?ZEFQdjUrb2VjMDhjQURvR1VSVm9iSzF4NWZRZUZFaFB6QzN0NTZQS2FXcnYy?=\n\t=?utf-8?B?NXgvN3ZNeWhlaG5TbTBZWi9NbE04ZUQ1ejNBYllHWDNyWXRsYnBKQXNqUmVK?=\n\t=?utf-8?B?TXllMnVIZGhPbDdZaVFVSE8wU1Q3dUJhUWJWWndzL3FLQi8xUHYxZHFNRDlx?=\n\t=?utf-8?B?cVNYYmliVDdsNTdydUl0UTJZUCtNMTB3bk5nZjlxY1BuQWQvQTc3Mk9aSUEz?=\n\t=?utf-8?B?Q0phdW83OSt4cUcyUkNJYVowOE4xWUZHa3VwN2pGL3haRVBWUjYwbHFHaklq?=\n\t=?utf-8?B?Ui9BUHFqMmZxdWl6VUw1c0poNnZ4TG1FS3o1M0krTXcrUDlzTVVveWs0aFY2?=\n\t=?utf-8?B?S1NKY0dBZS92RFVuNkxnSHVlL2M0RTVBSXg2Wm5SY1R1L3BhVmgxb1FmMzVI?=\n\t=?utf-8?B?VEhRbmZSU3o3TmZOYnhmdXpzSWtyUmlTZXNiSGprNDV6OWExVUtyVUpNaFlF?=\n\t=?utf-8?B?Vjd3dDJvYklqMmp5amFhL3ZGN1ZsZkdQdVN3V3ZJYzBzWEh1RXZQUlpFbWY5?=\n\t=?utf-8?B?ZEdHY1hNbjFaeWdzZEhzRkNlVUM1U09PVXowV2NJZzU5bmdxQlNGTFRTczU0?=\n\t=?utf-8?B?a2pKVlVMZHFXK2VNSGg1eGM2ZHUvYUZNcXIvU25FSEFOaG9KQ0tRb0hUNVpK?=\n\t=?utf-8?B?Z3lzQU9VYk5iRWhaSUorZjJpRHlhaWNFcEdiU3BmaHBwTm1NbnpXdW1BR2R1?=\n\t=?utf-8?B?TjdCRkNMWWVwKzd5M1VJRG5xVmk2OHpBcnNmc29JRWE3YklBSGVTazJtbWRQ?=\n\t=?utf-8?B?bWtmeU1wbzNPcWJYMnkyTjQ0aVNQV2traEJCSnkzOFFaQTV6cWJ1UWI3SEFK?=\n\t=?utf-8?B?OVlodDYyUVJvRnVyU0NJMkVQc0kwbEFhUjhqc3FWa1I4QlI1WENUS001NUJL?=\n\t=?utf-8?B?R1VsNlF2UkJ3eVB1a255UDR5QTBqNGcvOHI1aE4zQ2c1MkZFVWF3SnM2SmNh?=\n\t=?utf-8?B?V2ZsZU02MXU5c1A4UUpNcjJZYURUd3VPVkdDZFh2SDh1OXlRUUJyZWlJSlFN?=\n\t=?utf-8?B?MjMzNm1OaWwvamxFdG5SeEhoNUZKelBzVjV2cFc2dXl4YnIxaVUwenRGZHhE?=\n\t=?utf-8?B?aHAxMWJjNEdIZnpubWlqQ2s3SjBiUjJTTFF2dlFFWGtERkpGOVN4SWhCeXlK?=\n\t=?utf-8?B?THFqbFN2OUFYN1JmbldvVm5HN04vc2t0akgxV0I5L0VFeDhkamRxY0lZTHFr?=\n\t=?utf-8?B?TS9xMHN5QnRmdEI5UkpNQlRRZTBGN3ZvWXIwSStWK0FnRXpSQkdmbDJyREdC?=\n\t=?utf-8?B?QktKREZuV1BaeFMvNk1qUjcrQ0VlZ3QwdkllaHM5bDQrTVZtQnpHNFEvWGsy?=\n\t=?utf-8?B?bzl3NDB5ekFNWlg3SFQ4SURCVnNkc3AwV2p4MjYvRmlKVVA2dFNBWjhGRm5S?=\n\t=?utf-8?Q?jEW?=", "1; CY1PR0301MB1593;\n\t5:B8nQnqcqo/H6tJyy9dw4HTStJlMWs2cnZbSjRcWiRvti6kipMFYFg6DMq1nzbqQ9fljwyLImM24g9tZ+VOSt8KKUgqP/E6/ucebHENhG2otd+/s1h1+UnbkTszrfZadl16kpq8oV2IDBhox/cDqwBLuShrIR62Y2pYQVKFN4n2M=;\n\t24:gHijwE30AwNyI42MQQoz/x641ROyrUxg+FDKRSrpH9f6WuJo8zvto1FUGcHCZgWkoyGUCNqzvyEflaP4a0xVwOvPZMp9GqrXn7dEmDxBFJk=;\n\t7:ShRaGkdkB50QojtOFvxCLfzn8iZZld1hq2GkAbDgQosCXkOf67WO3EHpW0SptZcyWxEUdDiU0P8TiEA7uEJYfS5tW90jU+D2RV9XRD7dTWKXO8aPktu49a8afY5R6WD+5bcgzhDsLrc0NMXz6AToRSQ4CM30WxoiF7APufI0SrOcVJ2znnuEtuc2+bXj5kCNynajpi1IJCiYNxUZyGORFw==" ], "X-MS-Office365-Filtering-Correlation-Id": "af92fdd4-3f39-4e7d-252f-08d38cda6745", "X-Microsoft-Antispam": "UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR0301MB1593;", "X-Microsoft-Antispam-PRVS": "<CY1PR0301MB15933EC115C821D45EFD63F3F55B0@CY1PR0301MB1593.namprd03.prod.outlook.com>", "X-Exchange-Antispam-Report-Test": "UriScan:(101931422205132);", "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(601004)(2401047)(5005006)(8121501046)(13015025)(13024025)(13017025)(13023025)(13018025)(10201501046)(3002001)(6055026);\n\tSRVR:CY1PR0301MB1593; BCL:0; PCL:0; RULEID:(400006);\n\tSRVR:CY1PR0301MB1593; ", "X-Forefront-PRVS": "09645BAC66", "SpamDiagnosticOutput": "1:23", "SpamDiagnosticMetadata": "NSPM", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "05 Jun 2016 00:43:24.9283\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.158.2]; \n\tHelo=[az84smr01.freescale.net]", "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "CY1PR0301MB1593", "Cc": "Tom Rini <trini@konsulko.com>,\n\t=?UTF-8?q?Eddy=20Petri=C8=99or?= <eddy.petrisor@gmail.com>,\n\tStoica Cosmin-Stefan <cosminstefan.stoica@freescale.com>,\n\tEddy Petrisor <eddy.petrisor+patches@gmail.com>", "Subject": "[U-Boot] [PATCH v6 1/2] serial: Introduce linflex uart support", "X-BeenThere": "u-boot@lists.denx.de", "X-Mailman-Version": "2.1.15", "Precedence": "list", "List-Id": "U-Boot discussion <u-boot.lists.denx.de>", "List-Unsubscribe": "<http://lists.denx.de/mailman/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": "<http://lists.denx.de/mailman/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": "From: Stoica Cosmin-Stefan <cosminstefan.stoica@freescale.com>\n\nThe Linflex module is integrated on some NXP automotive SoCs part of the former\nFreescale portfolio, like S32V234, an SoC for Advanced Driver Assistance\nSystems.\n\nOriginal-signed-off-by: Stoica Cosmin-Stefan <cosminstefan.stoica@freescale.com>\nOriginal-signed-off-by: Chircu Bogdan <Bogdan.Chircu@freescale.com>\nOriginal-signed-off-by: Depons Eric <eric.depons@freescale.com>\nOriginal-signed-off-by: Eddy Petrișor <eddy.petrisor@gmail.com>\n\nSigned-off-by: Eddy Petrișor <eddy.petrisor@gmail.com>\n---\n\nNotes:\n Changes in v2:\n Added support for device model. Compatibility with non-DM code is kept\n for easier synchronization with the code on the vendor branch where the\n conversion to DM is not done for all boards.\n \n Changes in v3:\n Removed non-DM compatibility, as requested.\n \n Changes in v4:\n Corrected typo: s/_debUG_uart_init/_debug_uart_init/\n \n Changes in v5:\n Enable linflex uart as debug console\n \n Changes in v6:\n Corrected again typo: s/_debUG_uart_init/_debug_uart_init/\n I missed the reintrodution in v5 becuase execution testing was done on\n an unsquashed branch. Sorry for this.\n\n drivers/serial/Makefile | 1 +\n drivers/serial/serial_linflexuart.c | 223 ++++++++++++++++++++++++++++++++++++\n 2 files changed, 224 insertions(+)\n create mode 100644 drivers/serial/serial_linflexuart.c", "diff": "diff --git a/drivers/serial/Makefile b/drivers/serial/Makefile\nindex e1e28de..92cbea5 100644\n--- a/drivers/serial/Makefile\n+++ b/drivers/serial/Makefile\n@@ -35,6 +35,7 @@ obj-$(CONFIG_SCIF_CONSOLE) += serial_sh.o\n obj-$(CONFIG_ZYNQ_SERIAL) += serial_zynq.o\n obj-$(CONFIG_BFIN_SERIAL) += serial_bfin.o\n obj-$(CONFIG_FSL_LPUART) += serial_lpuart.o\n+obj-$(CONFIG_FSL_LINFLEXUART) += serial_linflexuart.o\n obj-$(CONFIG_ARC_SERIAL) += serial_arc.o\n obj-$(CONFIG_UNIPHIER_SERIAL) += serial_uniphier.o\n obj-$(CONFIG_STM32_SERIAL) += serial_stm32.o\ndiff --git a/drivers/serial/serial_linflexuart.c b/drivers/serial/serial_linflexuart.c\nnew file mode 100644\nindex 0000000..fbb3959\n--- /dev/null\n+++ b/drivers/serial/serial_linflexuart.c\n@@ -0,0 +1,223 @@\n+/*\n+ * (C) Copyright 2013-2016 Freescale Semiconductor, Inc.\n+ *\n+ * SPDX-License-Identifier: GPL-2.0+\n+ */\n+\n+#include <common.h>\n+#include <dm.h>\n+#include <errno.h>\n+#include <watchdog.h>\n+#include <asm/io.h>\n+#include <serial.h>\n+#include <linux/compiler.h>\n+#include <asm/arch/imx-regs.h>\n+#include <asm/arch/clock.h>\n+\n+#define US1_TDRE (1 << 7)\n+#define US1_RDRF (1 << 5)\n+#define UC2_TE (1 << 3)\n+#define LINCR1_INIT (1 << 0)\n+#define LINCR1_MME (1 << 4)\n+#define LINCR1_BF (1 << 7)\n+#define LINSR_LINS_INITMODE (0x00001000)\n+#define LINSR_LINS_MASK (0x0000F000)\n+#define UARTCR_UART (1 << 0)\n+#define UARTCR_WL0 (1 << 1)\n+#define UARTCR_PCE (1 << 2)\n+#define UARTCR_PC0 (1 << 3)\n+#define UARTCR_TXEN (1 << 4)\n+#define UARTCR_RXEN (1 << 5)\n+#define UARTCR_PC1 (1 << 6)\n+#define UARTSR_DTF (1 << 1)\n+#define UARTSR_DRF (1 << 2)\n+#define UARTSR_RMB (1 << 9)\n+\n+DECLARE_GLOBAL_DATA_PTR;\n+\n+#ifndef CONFIG_DM_SERIAL\n+#error \"The linflex serial driver does not have non-DM support.\"\n+#endif\n+\n+static void _linflex_serial_setbrg(struct linflex_fsl *base, int baudrate)\n+{\n+\tu32 clk = mxc_get_clock(MXC_UART_CLK);\n+\tu32 ibr, fbr;\n+\n+\tif (!baudrate)\n+\t\tbaudrate = CONFIG_BAUDRATE;\n+\n+\tibr = (u32) (clk / (16 * gd->baudrate));\n+\tfbr = (u32) (clk % (16 * gd->baudrate)) * 16;\n+\n+\t__raw_writel(ibr, &base->linibrr);\n+\t__raw_writel(fbr, &base->linfbrr);\n+}\n+\n+static int _linflex_serial_getc(struct linflex_fsl *base)\n+{\n+\tchar c;\n+\n+\tif (!(__raw_readb(&base->uartsr) & UARTSR_DRF))\n+\t\treturn -EAGAIN;\n+\n+\tif (!(__raw_readl(&base->uartsr) & UARTSR_RMB))\n+\t\treturn -EAGAIN;\n+\n+\tc = __raw_readl(&base->bdrm);\n+\t__raw_writeb((__raw_readb(&base->uartsr) | (UARTSR_DRF | UARTSR_RMB)),\n+\t\t &base->uartsr);\n+\treturn c;\n+}\n+\n+static int _linflex_serial_putc(struct linflex_fsl *base, const char c)\n+{\n+\t__raw_writeb(c, &base->bdrl);\n+\n+\n+\tif (!(__raw_readb(&base->uartsr) & UARTSR_DTF))\n+\t\treturn -EAGAIN;\n+\n+\t__raw_writeb((__raw_readb(&base->uartsr) | UARTSR_DTF), &base->uartsr);\n+\n+\treturn 0;\n+}\n+\n+/*\n+ * Initialise the serial port with the given baudrate. The settings\n+ * are always 8 data bits, no parity, 1 stop bit, no start bits.\n+ */\n+static int _linflex_serial_init(struct linflex_fsl *base)\n+{\n+\tvolatile u32 ctrl;\n+\n+\t/* set the Linflex in master mode amd activate by-pass filter */\n+\tctrl = LINCR1_BF | LINCR1_MME;\n+\t__raw_writel(ctrl, &base->lincr1);\n+\n+\t/* init mode */\n+\tctrl |= LINCR1_INIT;\n+\t__raw_writel(ctrl, &base->lincr1);\n+\n+\t/* waiting for init mode entry - TODO: add a timeout */\n+\twhile ((__raw_readl(&base->linsr) & LINSR_LINS_MASK) !=\n+\t LINSR_LINS_INITMODE);\n+\n+\t/* set UART bit to allow writing other bits */\n+\t__raw_writel(UARTCR_UART, &base->uartcr);\n+\n+\t/* provide data bits, parity, stop bit, etc */\n+\tserial_setbrg();\n+\n+\t/* 8 bit data, no parity, Tx and Rx enabled, UART mode */\n+\t__raw_writel(UARTCR_PC1 | UARTCR_RXEN | UARTCR_TXEN | UARTCR_PC0\n+\t\t | UARTCR_WL0 | UARTCR_UART, &base->uartcr);\n+\n+\tctrl = __raw_readl(&base->lincr1);\n+\tctrl &= ~LINCR1_INIT;\n+\t__raw_writel(ctrl, &base->lincr1);\t/* end init mode */\n+\n+\treturn 0;\n+}\n+\n+struct linflex_serial_platdata {\n+\tstruct linflex_fsl *base_addr;\n+\tu8 port_id; /* do we need this? */\n+};\n+\n+struct linflex_serial_priv {\n+\tstruct linflex_fsl *lfuart;\n+};\n+\n+int linflex_serial_setbrg(struct udevice *dev, int baudrate)\n+{\n+\tstruct linflex_serial_priv *priv = dev_get_priv(dev);\n+\n+\t_linflex_serial_setbrg(priv->lfuart, baudrate);\n+\n+\treturn 0;\n+}\n+\n+static int linflex_serial_getc(struct udevice *dev)\n+{\n+\tstruct linflex_serial_priv *priv = dev_get_priv(dev);\n+\n+\treturn _linflex_serial_getc(priv->lfuart);\n+}\n+\n+static int linflex_serial_putc(struct udevice *dev, const char ch)\n+{\n+\n+\tstruct linflex_serial_priv *priv = dev_get_priv(dev);\n+\n+\treturn _linflex_serial_putc(priv->lfuart, ch);\n+}\n+\n+static int linflex_serial_pending(struct udevice *dev, bool input)\n+{\n+\tstruct linflex_serial_priv *priv = dev_get_priv(dev);\n+\tuint32_t uartsr = __raw_readl(&priv->lfuart->uartsr);\n+\n+\tif (input)\n+\t\treturn ((uartsr & UARTSR_DRF) && (uartsr & UARTSR_RMB)) ? 1 : 0;\n+\telse\n+\t\treturn uartsr & UARTSR_DTF ? 0 : 1;\n+}\n+\n+static void linflex_serial_init_internal(struct linflex_fsl *lfuart)\n+{\n+\t_linflex_serial_init(lfuart);\n+\t_linflex_serial_setbrg(lfuart, CONFIG_BAUDRATE);\n+\treturn;\n+}\n+\n+static int linflex_serial_probe(struct udevice *dev)\n+{\n+\tstruct linflex_serial_platdata *plat = dev->platdata;\n+\tstruct linflex_serial_priv *priv = dev_get_priv(dev);\n+\n+\tpriv->lfuart = (struct linflex_fsl *)plat->base_addr;\n+\tlinflex_serial_init_internal(priv->lfuart);\n+\n+\treturn 0;\n+}\n+\n+static const struct dm_serial_ops linflex_serial_ops = {\n+\t.putc = linflex_serial_putc,\n+\t.pending = linflex_serial_pending,\n+\t.getc = linflex_serial_getc,\n+\t.setbrg = linflex_serial_setbrg,\n+};\n+\n+U_BOOT_DRIVER(serial_linflex) = {\n+\t.name\t= \"serial_linflex\",\n+\t.id\t= UCLASS_SERIAL,\n+\t.probe = linflex_serial_probe,\n+\t.ops\t= &linflex_serial_ops,\n+\t.flags = DM_FLAG_PRE_RELOC,\n+\t.priv_auto_alloc_size\t= sizeof(struct linflex_serial_priv),\n+};\n+\n+#ifdef CONFIG_DEBUG_UART_LINFLEXUART\n+\n+#include <debug_uart.h>\n+\n+\n+static inline void _debug_uart_init(void)\n+{\n+\tstruct linflex_fsl *base = (struct linflex_fsl *)CONFIG_DEBUG_UART_BASE;\n+\n+\tlinflex_serial_init_internal(base);\n+}\n+\n+static inline void _debug_uart_putc(int ch)\n+{\n+\tstruct linflex_fsl *base = (struct linflex_fsl *)CONFIG_DEBUG_UART_BASE;\n+\n+\t/* XXX: Is this OK? Should this use the non-DM version? */\n+\t_linflex_serial_putc(base, ch);\n+}\n+\n+DEBUG_UART_FUNCS\n+\n+#endif /* CONFIG_DEBUG_UART_LINFLEXUART */\n", "prefixes": [ "U-Boot", "v6", "1/2" ] }