From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753219AbdEIHvY (ORCPT ); Tue, 9 May 2017 03:51:24 -0400 Received: from mail-cys01nam02on0041.outbound.protection.outlook.com ([104.47.37.41]:35446 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752864AbdEIHvT (ORCPT ); Tue, 9 May 2017 03:51:19 -0400 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com; From: Dong Aisheng To: CC: , , , , , , , , Dong Aisheng Subject: [PATCH 2/6] tty: serial: lpuart: add little endian 32 bit register support Date: Tue, 9 May 2017 15:50:44 +0800 Message-ID: <1494316248-24052-3-git-send-email-aisheng.dong@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1494316248-24052-1-git-send-email-aisheng.dong@nxp.com> References: <1494316248-24052-1-git-send-email-aisheng.dong@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131387898751881716;(91ab9b29-cfa4-454e-5278-08d120cd25b8);() X-Forefront-Antispam-Report: CIP:192.88.168.50;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(336005)(39850400002)(39380400002)(39400400002)(39450400003)(39840400002)(39860400002)(39410400002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(9170700003)(33646002)(8676002)(5003940100001)(76176999)(50986999)(7416002)(305945005)(189998001)(86362001)(5660300001)(8656002)(106466001)(50466002)(2351001)(53936002)(54906002)(36756003)(4326008)(77096006)(48376002)(356003)(105606002)(110136004)(38730400002)(50226002)(104016004)(2906002)(85426001)(498600001)(47776003)(81166006)(8936002)(6916009)(2950100002)(6666003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM2PR0301MB0910;H:tx30smr01.am.freescale.net;FPR:;SPF:Fail;MLV:ovrnspm;MX:1;A:1;PTR:InfoDomainNonexistent;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11FD017;1:+o7AXOmnuo6ORpjS+cjallnPm21KDJkKoAcmr+qlqREBTAYXgFSlDCasF0EWwYQAigQHDxEbIlUN/XYqOgAb6eyo1gNMpN8J6I2ZRwuvIfGzhHe1EPPeY5t6OBc95nR57wi5iJfKaIfvWT50alpYXUFPyxsDKXyJvkjdoBnDETXNh0XDnWydSx6BeP2FgJoDnn86jL96YY3gv8uOpIrHlzjjG2dpKowXJ353XblvYbxnqnxMqVLtSo95x3HQ6VKSIxlmegOip4g6CbqOC5NgUho7MtjcFCNbbYanWql5I4bqYIjmhmcGT0SA+GgXR6SQgzMALfrcTV8JcZEmb2ro6s8PrUZw0Bbd1LvuJiOZ8RXJWP6UosYLLdjKQcSGO9BCXn2ylRZcNBghJY/x1lOh0pGSZHnH8Af65jVyQ+xXSG1W4CfInVAGu1LcgQ4n0CLFXkpdhGBWcZKdqYimNd5kM18zH3PSm6ZJiMxiklan3+h0Rkr7f+++V1pcZcTlv9m7QNPVxeOefWONCZraExGtTjmCP0p0tC6pqDp2NR0IZvC6vunOMn9fKJPQaJyV2e4gWZCT6XRVUyOfNWdFUa8vZXd5ay/rs9RRIGQ/tLQH0udvE24lcdD7mjRAUxPQu0HJFEnjLK6nfVLmNAjWJq1SND9t1iBaQz+nQ73IgTZhbA4Ic3kum9Ipp7HXEJjXXleOkb+K0erHRBq+W4am86lgSVs/QQAonEOnCj1z2523OXk= MIME-Version: 1.0 Content-Type: text/plain X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 31baefc2-c2b0-4b0a-a58b-08d496b02b45 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131430075)(201703131517081);SRVR:DM2PR0301MB0910; X-Microsoft-Exchange-Diagnostics: 1;DM2PR0301MB0910;3:a+NY5qZV4l0If/Es7YpdDIu326Oh/O0btWdCcEw7gHT6mFUzQSTmUYHm6FpVdWHRKFP72+eyr2HnVDd/SQPvzc/KiE0kRGeeY9xGjRNiyZFDCMjPzYSOlm4CNUpwcYYNFuVNcKUV2cp9kIyASSvI/2a6VoWW8ZDk3fGvEDOyvlZI2+Gwqn5SyJUk8x8xOSkMGZmBm4TsP4mgKefDB6Vqxvr3SiOiDzgPtaDaBwbUrQ9MUsULiYuza1dhdksbL8ZIaUZ+4B6qClYvA7yGf4GpWx5Xdb/txgBBq5zwDOV8HmKRVcwULzKfDWzNml+KNNymBRb8YSCX4xvLH7Co4ShT4XmQqm2A3Y65Y9aldxIHCQpD3ETKdrPD41irxfxj1VGFEevhy2TUvwfjcj9WjuQSMMDnRy4G3Oz+S6xMMpc+pmzw/XnK2u85uyRimXFr4QTN;25:Es9SMhOYjVm3TlEJcTKdAk/8CzShw4ohWuKXHYpQbemWaHI8oGuoVsydQDytMkX3IjdLju5ff7jYR+nkI1UO2KQWuYgJRLqekVAbI9e836fKqadBLnU0M2C6liNAwQy8wOG1RdQcW+irsFkAf+4fZqz3e3G7xbv5T9OZlJBZ4l+YgKi5DSxeZa2Jbq1AGis/HOG7kl1fDIGRKAQPHFKRaYBl2gkkOWdgulIBFc6Q0qR6jQQsC3TkNx4mS+mcyj7e08/3pPYj4lUW+7eLggra7OEGI0Z6CbOAaMuKDsLBzX4tK5sMD7GfZVii+GUBPLSqDyBctZU9H02o7NUK8J8cOtgmdhjAksl9yO001Dp/Ihj0M1hJrxFfCTEjkqp7zUdb2eVtc52yWf+JIC+iLgYOQx26FhY+wM5bsnmQPhmHxlKZbYb5vBQObf3BPZOHzhUm018bE/CglxpEqXwNyb8uvA== X-Microsoft-Exchange-Diagnostics: 1;DM2PR0301MB0910;31:GMSBWeXwmin187z6YRRvsqD73la/HVvNyR11fThKPfG2ySKbNHWbWn7GoprtSBjO/GwY1/uaLSnvHPcfIuvSSRUWBdL3zKvFSGjkhztz/nwGhyuhwyzB90A572bbG/qHKrrL4OsvGmCc6iyV7OZf0OdvKEdPBapPFAaB0ygYddWVs7OlsWWOLTlTVUmk7nQ3+qj6Q3jHXMlvbPIX5y1aBiabE/5pLJGtKvrbH9S8YVRPeVMoZ0U+grEviAGK//0TxAi1ZjlueWmP4Na0NoTVmgQ/mZOIzf3mqOf3k1wwoa0= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6095135)(601004)(2401047)(13017025)(5005006)(13024025)(13015025)(8121501046)(13023025)(13018025)(3002001)(93006095)(93001095)(10201501046)(6055026)(6096035)(20161123563025)(20161123565025)(20161123561025)(20161123559100)(201703131430075)(201703131448075)(201703131433075)(201703161259150)(201703151042153)(20161123556025);SRVR:DM2PR0301MB0910;BCL:0;PCL:0;RULEID:(400006);SRVR:DM2PR0301MB0910; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DM2PR0301MB0910;4:9bNGgQCOfRKmepcmnz6W1xbNd9riGgnb7ZUBE3Ew?= =?us-ascii?Q?QV3gHn1xL2hU5WQzpeg7fcKk0/Madbgs+tDLxdTcKdtTNE9qhW6j2qUXGMEp?= =?us-ascii?Q?ab0QjYwSooBu5nne0In9luSbnHFRf7g93eZdOjt88BIySSEvmuFcjGXuDX+Z?= =?us-ascii?Q?FwQSMovWQF2NwilK1ePH8fMPfz6mpWLFMyVWcsTN5uMRTe42gI2IgDF6tWIF?= =?us-ascii?Q?p2G1DykVGr6OwERkvW6vC70R3NYh7UMfnS5LW0BFPeCu8fHf6ntPJxuT5C9d?= =?us-ascii?Q?oJ4yd1xWqSCy5k82ZK3AAdUU5pMWq51Nuh2p/74cN/ynwwSc+LRUODEGUwWv?= =?us-ascii?Q?ulRiYGR50qeV5IkGZ0Soo1Znu7Oom93guY9OX3ZZw1ksAqEbRRGVYOUHaGhq?= =?us-ascii?Q?dWNoEML/xZYkjOBd6a9Z1MV2z4rR8zXs3ZE+MTKnPHlmM1+rzgXjntnBv50S?= =?us-ascii?Q?vnhxGZWpUUim30RfRlff7yFzJpOXmfeSjkUn7ml85vzimeDEnfmhuiVKd65i?= =?us-ascii?Q?//EeI7DzLmIn2UqPgGGuAjfGUA39YWPaBeJTWy0ITZmX9vyEoFbi1SdyQv3d?= =?us-ascii?Q?OlC1Ziad+EntnrqiV25+1r5I6uNV1RngH71FAZsg9/Km//xm2p8TEX/fpjl0?= =?us-ascii?Q?xVy2gYImI7UlHnzE3cVRbRv+Z6COpLvDNt6BmbcXRK5C+a1CIB8t3tcVBPQB?= =?us-ascii?Q?Uth/tCZe/vOHmKwrvnIxRKszWizPv75fkMSsnqgV+rW70NfDbMkuoTDbvbNh?= =?us-ascii?Q?29d3OPR+TWgWxlWmOAq++zS9leAtD6rZAzuAwzW4flyOJJC6/I88wbuKTsMK?= =?us-ascii?Q?FmI7Bv4JRMKXlemVNXxQEAIgYi1GyxwtDbEC3yPdiLfZXAJ1cj4xfuY5J2ce?= =?us-ascii?Q?e6NRKsi6RbxGficabQQN13jPIhh5qVFBpcZpjAyJdHNV7+veDn0s1TOy1vZb?= =?us-ascii?Q?KhCv3vGfwsiF7o5y7LWxQl8P67+2d1dG+2qDPw8WKA=3D=3D?= X-Forefront-PRVS: 0302D4F392 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DM2PR0301MB0910;23:NWMyWQcXcvSx4sHGV0zu1A3lq4uUl5m4A70mC5o?= =?us-ascii?Q?9PeZVCtVSaQAXjFT+DufcATYh9FM3wB/wN+HZTHrZ2pkfiDrv5C+guoJ83UT?= =?us-ascii?Q?Gdjy7Kas1KQbsGWQ91J6nhLk/myM/NjGC0bdZ2fOr0wBO2FrdYd2hQkJfTg1?= =?us-ascii?Q?jnFKgzhqjVlaAZLfcQPMzWuXv6sEUyTPX/FrnL0mkXRtG8H6IT2pqDszaKx2?= =?us-ascii?Q?GwBkixeFCsLWnGGPPbRkbopzRMw+xgYie0htKtjo9NCaPpQv3kPJzwJ2XVwG?= =?us-ascii?Q?3cb2Q6DVJw1RhqzifbVCygQ8pN+hEcX2QNycChv0rrPp/3D/itIxzHPcHvhj?= =?us-ascii?Q?D9f9Mj9IEVaYlCxn9Ll2l48NUk8rIDL/BGG3LCqzRvks9loxTYQxHP6qgTZr?= =?us-ascii?Q?WqYRWl9RyhhiGDNptUJFI6TxleEEBFro7OHVU5JZG1G4fCJkpQGgDLtPwxpf?= =?us-ascii?Q?yvztp0shAdQuDCbAggakchVtQBUwvnmJovwJB4pIT0OOIc9wg/jDZPYuePAb?= =?us-ascii?Q?/5u8HLVMAqjaenFqSemG7wB7xQNWgtRPkc8yleKKnRHiW+kI7D6JGAzwr0kJ?= =?us-ascii?Q?lQX2nTWCCA2oZI08DOYTKIO1AQrPS5KI94JiNcJ0BHt/ggOM0gnOHBxuueyo?= =?us-ascii?Q?YlW5Y9d0bTWL4j8cOLfot61A/fFeMLZazX4BFrwxU158TSSe1eXLGOMSoCaI?= =?us-ascii?Q?LM6hv7R/TD3BHE8GAhew9qjNbH1mmcRKb8SNoOLwPe+jmiYU9C0DAfJ/6N8I?= =?us-ascii?Q?WDQiMcURw3HY++x9gmQXwaRLBBZvvZ7Y9VRVnIyA/v5UunTTUfsfH6ldF6uU?= =?us-ascii?Q?Nix7tm+q6XnzgDgSbdCst+ZsyazG5r0iw819o58pZ6lrAtXsPIWA6q7A6MYA?= =?us-ascii?Q?X4PSDGGpXF404rz+vnJ7oe9owHR/0fMj7dsoDbL46paz5qYZLEr2yZK1bTp1?= =?us-ascii?Q?V9C+mj0gExcZcsFy/PZe0721NGKrK4GVPHG6FOVKFno/KTFcgpCVtz+RNF3/?= =?us-ascii?Q?PXYXQZnMPSnC4k5m+fiU0ex2UD0Cqd2wvKcZQYoMR0cU4UB0VSVwQtjnqxGl?= =?us-ascii?Q?75XRM9G4nbsUqbejCAAgJV9i1gQ8Blhr9aesCnzpdgOHjmR7ookg2+KaTHR7?= =?us-ascii?Q?cNAiApNNtY2V4yCLqI8FRgM6yWB7sQDfkJSFvR2isFGSzUbCPyAAjQi3ogGh?= =?us-ascii?Q?qaA2o3glTUH4orT2Kk+92rC2aO7iP6bUHzXUvF+Il1SJEwlVkZy1nNF5dobE?= =?us-ascii?Q?gzhWhFe45hYfJ/XFADFE=3D?= X-Microsoft-Exchange-Diagnostics: 1;DM2PR0301MB0910;6:M7i3LF8XoO4whcyoSpbDxWjGsDmFyTkoeIEVG+ZYQbTBMqqHC+5aFlwIbkI0B0vWZ1zX3nEwe7qJI6ULfJfm/BQpLhD9q1ut6Em931VnIl3nXM9va9DJ7JBpShqx6CFEQc+Fu4RR+J8+JkLX6bkh9/6eYmzC4hr4bEY5cTv0yGKXMdvty02jo06cr48lAVgUdsp7ZWKmgtA0U6pn3f0jkcRasoSuy/IuEZkV5OtrEQkYFUmDZjsjcbpNb7wQl138qg5QSc1xOcHHwZ+CepITZPcBbYpJOr76IpAnelGhi55Gd83rfoKI6aWeqPd/a5pCgeMhw9BIJ8FVr8J9DmbivKqiHuBefuqp54Ky4iD6gofamHSlUG2E1ZRcvV/9vkUwPAmEuX5kTRIHI37tvpVCV/f08Y+CgNSA0GtBygPwD7i2h4+okgUTfO6qE7gK+2dPn5bv8vmcrC3z9hSCAFudsOPD6je9shADjdmr8zFOKIeSjwo9uHIsRT00oApx+dL05YG8ZHffXU2ipS1/96L6Lg==;5:Y3WyhetIB4MDfpvUpKChe1tHELRLwZa39kDt3ucJFKIQYelGFqI0Ky7vL0WGJjiUxb15dO7DhkO+pE5EBFBvHTw3pikhhv9Lr9gI3BApXt0dd9FYeZkx/s3z1/4bFIx/3Ugp4bsQfx9OTNu97ZcnqPkjuQa4rdi05J94ESbyEAbhYaHJJYViE+o97mBDrnsn;24:QjMYP2Ucgucj2RHRLwaL0VZZGOZJKxzaKwgC/QN7JYf69dtnxOzKMpHF/u1df1rAM/NIHVlHCgJb903HSzt00atpnQTJ180EXgPYLexmGRI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM2PR0301MB0910;7:hWTGz+kyO9prT1Rs5vnxQ5Z/vJ31PAjPkjytZYi0rInv55EHm2DSxTNK4Cbih31Lv03m/Y6jVS7BldwzG0zPMRYUSHGOiIvXry3Pyuf+owqPRk4hoB8FT3L+nl4hBwvTbsm/GT/z2k22yPt8DjkBQott7mLP4T7ZrgjDTNrMFS2hER9tXmbZ3fZ6CKFXYPo9Uj3OItqToc1dTozDT6OvpAzCrFeY1q1hMHkTLnvjIh0YDnYNYDrXr5w8DgBqqtMpRrn3cHNLvq/kuczwt6mixko9HR1hvYs0RHwCJYoi4JJbsKUayxKtIisPbPCFc1j2UhbyN1u7PsJy4f2DsacZtw== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 May 2017 07:51:11.3037 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e;Ip=[192.88.168.50];Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR0301MB0910 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org It's based on the exist lpuart32 read/write implementation. Cc: Greg Kroah-Hartman Cc: Jiri Slaby (supporter:TTY LAYER) Cc: Fugang Duan Cc: Stefan Agner Cc: Mingkai Hu Cc: Yangbo Lu Signed-off-by: Dong Aisheng --- drivers/tty/serial/fsl_lpuart.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c index cd4e905..bddd041 100644 --- a/drivers/tty/serial/fsl_lpuart.c +++ b/drivers/tty/serial/fsl_lpuart.c @@ -231,6 +231,8 @@ #define DEV_NAME "ttyLP" #define UART_NR 6 +static bool lpuart_is_be; + struct lpuart_port { struct uart_port port; struct clk *clk; @@ -260,6 +262,7 @@ struct lpuart_port { struct lpuart_soc_data { bool is_32; + bool is_be; }; static struct lpuart_soc_data vf_data = { @@ -268,6 +271,7 @@ static struct lpuart_soc_data vf_data = { static struct lpuart_soc_data ls_data = { .is_32 = true, + .is_be = true, }; static const struct of_device_id lpuart_dt_ids[] = { @@ -282,12 +286,15 @@ static void lpuart_dma_tx_complete(void *arg); static u32 lpuart32_read(void __iomem *addr) { - return ioread32be(addr); + return lpuart_is_be ? ioread32be(addr) : readl(addr); } static void lpuart32_write(u32 val, void __iomem *addr) { - iowrite32be(val, addr); + if (lpuart_is_be) + iowrite32be(val, addr); + else + writel(val, addr); } static void lpuart_stop_tx(struct uart_port *port) @@ -2000,6 +2007,7 @@ static int lpuart_probe(struct platform_device *pdev) } sport->port.line = ret; sport->lpuart32 = sdata->is_32; + lpuart_is_be = sdata->is_be; res = platform_get_resource(pdev, IORESOURCE_MEM, 0); sport->port.membase = devm_ioremap_resource(&pdev->dev, res); -- 2.7.4 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dong Aisheng Subject: [PATCH 2/6] tty: serial: lpuart: add little endian 32 bit register support Date: Tue, 9 May 2017 15:50:44 +0800 Message-ID: <1494316248-24052-3-git-send-email-aisheng.dong@nxp.com> References: <1494316248-24052-1-git-send-email-aisheng.dong@nxp.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: In-Reply-To: <1494316248-24052-1-git-send-email-aisheng.dong@nxp.com> Sender: linux-kernel-owner@vger.kernel.org To: linux-serial@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, gregkh@linuxfoundation.org, jslaby@suse.com, fugang.duan@nxp.com, stefan@agner.ch, Mingkai.Hu@nxp.com, yangbo.lu@nxp.com, Dong Aisheng List-Id: linux-serial@vger.kernel.org It's based on the exist lpuart32 read/write implementation. Cc: Greg Kroah-Hartman Cc: Jiri Slaby (supporter:TTY LAYER) Cc: Fugang Duan Cc: Stefan Agner Cc: Mingkai Hu Cc: Yangbo Lu Signed-off-by: Dong Aisheng --- drivers/tty/serial/fsl_lpuart.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c index cd4e905..bddd041 100644 --- a/drivers/tty/serial/fsl_lpuart.c +++ b/drivers/tty/serial/fsl_lpuart.c @@ -231,6 +231,8 @@ #define DEV_NAME "ttyLP" #define UART_NR 6 +static bool lpuart_is_be; + struct lpuart_port { struct uart_port port; struct clk *clk; @@ -260,6 +262,7 @@ struct lpuart_port { struct lpuart_soc_data { bool is_32; + bool is_be; }; static struct lpuart_soc_data vf_data = { @@ -268,6 +271,7 @@ static struct lpuart_soc_data vf_data = { static struct lpuart_soc_data ls_data = { .is_32 = true, + .is_be = true, }; static const struct of_device_id lpuart_dt_ids[] = { @@ -282,12 +286,15 @@ static void lpuart_dma_tx_complete(void *arg); static u32 lpuart32_read(void __iomem *addr) { - return ioread32be(addr); + return lpuart_is_be ? ioread32be(addr) : readl(addr); } static void lpuart32_write(u32 val, void __iomem *addr) { - iowrite32be(val, addr); + if (lpuart_is_be) + iowrite32be(val, addr); + else + writel(val, addr); } static void lpuart_stop_tx(struct uart_port *port) @@ -2000,6 +2007,7 @@ static int lpuart_probe(struct platform_device *pdev) } sport->port.line = ret; sport->lpuart32 = sdata->is_32; + lpuart_is_be = sdata->is_be; res = platform_get_resource(pdev, IORESOURCE_MEM, 0); sport->port.membase = devm_ioremap_resource(&pdev->dev, res); -- 2.7.4 From mboxrd@z Thu Jan 1 00:00:00 1970 From: aisheng.dong@nxp.com (Dong Aisheng) Date: Tue, 9 May 2017 15:50:44 +0800 Subject: [PATCH 2/6] tty: serial: lpuart: add little endian 32 bit register support In-Reply-To: <1494316248-24052-1-git-send-email-aisheng.dong@nxp.com> References: <1494316248-24052-1-git-send-email-aisheng.dong@nxp.com> Message-ID: <1494316248-24052-3-git-send-email-aisheng.dong@nxp.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org It's based on the exist lpuart32 read/write implementation. Cc: Greg Kroah-Hartman Cc: Jiri Slaby (supporter:TTY LAYER) Cc: Fugang Duan Cc: Stefan Agner Cc: Mingkai Hu Cc: Yangbo Lu Signed-off-by: Dong Aisheng --- drivers/tty/serial/fsl_lpuart.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c index cd4e905..bddd041 100644 --- a/drivers/tty/serial/fsl_lpuart.c +++ b/drivers/tty/serial/fsl_lpuart.c @@ -231,6 +231,8 @@ #define DEV_NAME "ttyLP" #define UART_NR 6 +static bool lpuart_is_be; + struct lpuart_port { struct uart_port port; struct clk *clk; @@ -260,6 +262,7 @@ struct lpuart_port { struct lpuart_soc_data { bool is_32; + bool is_be; }; static struct lpuart_soc_data vf_data = { @@ -268,6 +271,7 @@ static struct lpuart_soc_data vf_data = { static struct lpuart_soc_data ls_data = { .is_32 = true, + .is_be = true, }; static const struct of_device_id lpuart_dt_ids[] = { @@ -282,12 +286,15 @@ static void lpuart_dma_tx_complete(void *arg); static u32 lpuart32_read(void __iomem *addr) { - return ioread32be(addr); + return lpuart_is_be ? ioread32be(addr) : readl(addr); } static void lpuart32_write(u32 val, void __iomem *addr) { - iowrite32be(val, addr); + if (lpuart_is_be) + iowrite32be(val, addr); + else + writel(val, addr); } static void lpuart_stop_tx(struct uart_port *port) @@ -2000,6 +2007,7 @@ static int lpuart_probe(struct platform_device *pdev) } sport->port.line = ret; sport->lpuart32 = sdata->is_32; + lpuart_is_be = sdata->is_be; res = platform_get_resource(pdev, IORESOURCE_MEM, 0); sport->port.membase = devm_ioremap_resource(&pdev->dev, res); -- 2.7.4