From patchwork Mon Apr 4 18:17:57 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1613126 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=CMb8LlkG; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KXJtt35XPz9s5V for ; Tue, 5 Apr 2022 04:18:46 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 4781483978; Mon, 4 Apr 2022 20:18:33 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="CMb8LlkG"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id CD21581B5C; Mon, 4 Apr 2022 20:18:29 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-am5eur03on0607.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe08::607]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 5D8BB83608 for ; Mon, 4 Apr 2022 20:18:24 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ia3ll1Hr0XJ6Xk7g5DnTS+YSzqUdF3moXAmHW/XO+oXf+DYfaXkVEh41/EmSLGh4nCNQi91j8D9rFhlc0+8wIBolw/PfHV6LJwf6HiYmqeZptuK+fq/CFp5o250aag76uUh09sn3o0hPEHmwZ3mLUYs8xANq+FlSocUKlkFisiFhTzzgy+b1FmKqpWZy1vg87JIosRMD63eR0N97C+khpdm8eFf/jMfQTS4MG4D9D0VTzSQraMtBaEoVWlCCm36ZTE8ZNaWSEpyQEVWnuHTM38tiwB1cZD1Z7igiR5UtzGgNNv/b6oRWcZ5TqavgA7bXJ+LNJmM4+7y089nXnWXIIA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=W7cYvOmtpys8ngdu7nhpY8/CbhJU1rIT1wD0ZvBmaQk=; b=l00hdQvECwzbsDnbFzJAXj6rfFZcmP65gyfqzois6W6IdgfZVj7Vq7996XunXUPovhCIW1+4YwqGG1/1/cREMvmb9OGGgfRx7QT73+r921dfnb8NBjbH4g1lUnCN19TS9YX7kUDEgyPScZAm9ZMypPub/FRVVsua1DthuqkJllluQsRhkfJPLn1MVo0QZuXqwj8iODoO1y/8f+bEFY0c+/Gz3K4wv9aAUyshuq4rjmu1S82YxtOqJUnFsh0uQ5d3LUKrDp89/1I4L8L/ZStB55WKDVewWab3pn+nBKDO4IaUyTYT4jJGoLAHpcZ6Xi+a1IWZA3zg0HlXZG8MH/rtRg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=W7cYvOmtpys8ngdu7nhpY8/CbhJU1rIT1wD0ZvBmaQk=; b=CMb8LlkGMcd4A8XECZDazo6eFGPSUAa/B3hwTnsJQ+bEXxMDFgolTWyRCI8AE9+zZMTJ9X0b4yAF9Ba1cjKc01i14LxmYmq6Lg4oN7yQyiZuxQda3XjboM0AYB074lJm83du+o5+rglO61kAO+kT9hnfDQVv7wjvJ4JDLreY2sOJ5xcg2cLrb02ia6vFiza64v+wr2fLqB+E5eXGme+Amul7bBjmQwCxhKO9hMlj31bsdJLLEeudShmxXIanug6Z4G1HBaeqw1Q1BpFFzhJRsQqA75ogdg54EYw2pZWnpfeznZyef8Kty8Hu6AIFPyZbCVJXN954efHXTxbPwGBUWQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by AS4PR03MB8649.eurprd03.prod.outlook.com (2603:10a6:20b:588::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5123.30; Mon, 4 Apr 2022 18:18:23 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::356c:789f:d20f:92bc]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::356c:789f:d20f:92bc%7]) with mapi id 15.20.5123.030; Mon, 4 Apr 2022 18:18:23 +0000 From: Sean Anderson To: Tom Rini Cc: Simon Glass , Liviu Dudau , u-boot@lists.denx.de, Linus Walleij , Andre Przywara , Sean Anderson Subject: [PATCH 1/4] serial: Fix _serial_puts using \n\r instead of \r\n Date: Mon, 4 Apr 2022 14:17:57 -0400 Message-Id: <20220404181800.2258698-2-sean.anderson@seco.com> X-Mailer: git-send-email 2.35.1.1320.gc452695387.dirty In-Reply-To: <20220404181800.2258698-1-sean.anderson@seco.com> References: <20220404181800.2258698-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR16CA0002.namprd16.prod.outlook.com (2603:10b6:208:134::15) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fbe44662-8e8b-4d4f-e903-08da16678150 X-MS-TrafficTypeDiagnostic: AS4PR03MB8649:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yX2e780zOJnX+XgT4D5hHelPQDV/0xy3R3s5+Z4Dt8GKFmQ1RUadvhj/SJJ/9AjiWCh8LXXxY1z0GYaVDKOOAqy5ShizLyKAMKUw6/LtUqOqiHn7vqOppxUit12DFz+yAOwzdvFrfFITBp1ox4GXkDWZgl00stME0KZROxqchKbGT+M9sYmH8zZtP/mRHK/U21NxhipOGxbQ/4i6FtVakWbmmFHIPfD72Ev5M9gVOgFOnXyAmcup43pvwwcKMcPjEETpJV98WfDjqAMsP6X8KPmbvMt4wQ4AaCPHqu3ZmpwSxBuCETpjFiXkFsOQXoLgxF/glMET9SOPJx7BlTilabi41zYi7RBlRv7iFKSjYP8RuJ1LNGYQDPXJgmyopQLBfGMHgeklTxTX+jX7jZaCZHBiGs3E5F5yPGKPHKagmokweqfME6AmY/G75WLh63XDyaOeTOJ+JhJB1aXFKh4bO65WsZO/axnFYoZbqDiPpGQqIHKHjdwGheoN+21luf27I9XjmgieVLNjxcr2As5S2TxQoiiMyfPb0bJc6PFNeIw+c+0h3FhwEyL75Lt+WqCOdaOx1WeyTcphpmoAOrbAllL21L8LThr8Q9M23dMkreK0V6j9mN9xdwJa/frz1V1am4EpoG9YF3FNiy1pIA7sK4gIXtMdMbTXqpfzkRJIOsKw6HSzgr2K7mrZsUW4x1lbu3vfWDhynJpZ8TUGOVcUlA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(5660300002)(52116002)(38350700002)(38100700002)(2906002)(6512007)(8936002)(508600001)(186003)(6486002)(6506007)(83380400001)(44832011)(36756003)(26005)(6916009)(66946007)(66476007)(66556008)(316002)(2616005)(1076003)(54906003)(6666004)(8676002)(4326008)(86362001)(107886003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: tOY3pXNank1wvkv0gbcR21SumZgZxq4SICtkzIxHh7/fACv+0q6lp3JZwnJzRQsQdzI5tVTHnwOON/PmGZNvy+ItLCJpH/X4koUkH7h/lBL9GUO3M9VBayyDm0qvhT0o2vAKymooklnGS64HtBtzmlfOs1osV86kCRBiMBR3FekYgIOPCdyjDjoB+hax7uBPlT5vEA3L93lleNu2F47n3wuxmMSUw7O/nTveHwo7c5YDxud85A9nPikG6CHGgnbMXWWhJ+IdIXGv3Gd3COFJ62FptW5CTKjuwyEIX38O5m0l2sQQ37NUAsieKsRPKq153Dcjg5ua/QIz6buB8LOnFAf18OPN34WZ97Cd3tJ/5MGh6TFFJZrpd/mdIDWalJ7J3sIXs9qnrDvHs5zw+gQwohGo7Qo/rKbwS0oKbTqADIiw/r0te2dW4q5EWST6fqH8YtoX8jITw9pOWoudvV1Wz3RcBenSaOUed2AeeFFCHWqLHSVfMGtMOA18CS9087KjLJ4nmA3hh/KaJ/q5LFvSSAW2mTEeUBSKeIS47uF2TOXWoHllPhJvbzvegHXSilT6iRef56nk1SSuzLpr10tuG2o93f2uPqjGjd9C1K8kzqnxxqCoxWmyKtPlk2GKvMa+O83ZvcQFBAKyCNCDzMGrbyfljcNyZ1Qx810HVCnD2hn+pZUOvCObU1sG+kdknnHIdxMzNSpQsyVlyiXo5sL+CVOA9OLASLK1QBslX1oU9O8koDbLP8RRhf67KJHHrstQFScMrrCpyhzy1kcinNInD0NrpxWGxS69d3zoEyZYoaSTGpjlTE+O7lvv/lC3iO4EhVJerpOcEQNtDBz2OpDXwSEeyAigozpHhj+VFdeU24rRLJeHTY/gKDjSHbkH+ZRjDCZA1VZaxQKYZWAJH9K2za+GnCHKGFPxrfSVR3V6cy+mnW4jrj36+yOWw36hmDHr2w2kEEblsBHRBO4WJcLSDcZuPhCL4xt+3Bc+p/vCw9wh3hD9uxpC29C9wAOXzwAhBOZ1l3L0imPWZNs3Y/BpXyhwbEOVc53bVXjus5R4si96nuZwYDG5hkXrpQV7h1GP3aKKxYDL5/BDfCza30ARuCZVWYLtl9BJ73HYC2wpVv/4mSTqyY0zlEVYlspGh1kh42i1jyBkBXoh7C0jiD3M8wNrR3kIpPo4Bea+OxyG8WDZmkxqxgm0ecu1AJuz+/rfUzh3ibuuTaSNRhxsTxSv8uXgMc9o7u3p/SKJgEWXXcCO2p4TAPCCmaVRsnha9o7t5aowfWhSZO2RTn/noQOTUvjcby+aM7J3mox+W/Aj7d7Xk8XHBxEMGFkNzkcGVhOTYWtMEx9oszDdnZ8WidVgPeKFlkKR4tELX+G0vB+tTLAcr2+r+SjaNC1wboJG7X5QMZdwgW/dr0nEYo57Swm0krCIKM4KDffVcyyTeB5qKpq4Y6bBaekZV+guKKbeHPq3MZrcMZOXm95DHRd/fCloPOYvNUJzUxYjDP++ccKFkvYhns74yEVzGdS3H74NVt67psAoH5yq1Xuay3pDOq9C1ZPzEcJe5k4YaZHgK2iobwabbgHV1j39d6e0+qJJ0NQ4wXMSJKrYTALPT6wwb632epAGvXYAemQAznLnVfASD6LBHvIOHSJxhH6BJn8NkeYsDXsKBEuE+dfLJdUYDjEZ+aMMXVTCqMU+AM+5+cMSU4AdR6iB4TVaElwdbUAJe9tG8xj/DUFSRyAZIenK9yAO79osAsaJKw3CdbO60HVHeeU= X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: fbe44662-8e8b-4d4f-e903-08da16678150 X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Apr 2022 18:18:23.5071 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ceonLnzJOC3IJBvl/cTFUOndmnZC2ubKBuLopaG2o+XkI6skGChFUPcrrxXp7L6F9GEbXaBD4qJqCgznvYZi/g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR03MB8649 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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" X-Virus-Scanned: clamav-milter 0.103.5 at phobos.denx.de X-Virus-Status: Clean A string like "test\n" would be broken up into the following sequence of prints by _serial_puts: puts("test\n") putc('\r') Although functionally this is the same as \r\n, it is not the standard sequence and caused tests to fail. Fix this by excluding the '\n' from the initial print. The above string will now be broken up like puts("test") puts("\r\n") Since we may now need to call ops->puts twice (with the associated retry logic), break that part of the function off into a helper. Fixes: 7a76347189 ("serial: dm: Add support for puts") Signed-off-by: Sean Anderson --- drivers/serial/serial-uclass.c | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/drivers/serial/serial-uclass.c b/drivers/serial/serial-uclass.c index 10d6b800e2..30650e37b0 100644 --- a/drivers/serial/serial-uclass.c +++ b/drivers/serial/serial-uclass.c @@ -198,6 +198,22 @@ static void _serial_putc(struct udevice *dev, char ch) } while (err == -EAGAIN); } +static int __serial_puts(struct udevice *dev, const char *str, size_t len) +{ + struct dm_serial_ops *ops = serial_get_ops(dev); + + do { + ssize_t written = ops->puts(dev, str, len); + + if (written < 0) + return written; + str += written; + len -= written; + } while (len); + + return 0; +} + static void _serial_puts(struct udevice *dev, const char *str) { struct dm_serial_ops *ops = serial_get_ops(dev); @@ -210,19 +226,15 @@ static void _serial_puts(struct udevice *dev, const char *str) do { const char *newline = strchrnul(str, '\n'); - size_t len = newline - str + !!*newline; + size_t len = newline - str; - do { - ssize_t written = ops->puts(dev, str, len); + if (__serial_puts(dev, str, len)) + return; - if (written < 0) - return; - str += written; - len -= written; - } while (len); + if (*newline && __serial_puts(dev, "\r\n", 2)) + return; - if (*newline) - _serial_putc(dev, '\r'); + str += len + !!*newline; } while (*str); }