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); } From patchwork Mon Apr 4 18:17:58 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1613130 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=Kl3ngsa1; 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 4KXJvW041rz9s5V for ; Tue, 5 Apr 2022 04:19:18 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 257E383997; Mon, 4 Apr 2022 20:18:51 +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="Kl3ngsa1"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 4151683923; Mon, 4 Apr 2022 20:18:38 +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-am5eur03on0605.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe08::605]) (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 C9AE682A31 for ; Mon, 4 Apr 2022 20:18:25 +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=RvWthZlylqcZf1P7Y34G0iYNXTAMGxww8qUook+jZFdz5jiVZJi4lTGF85kWSf2zoFXN90k5Ar5lZhxnIwUjtJzzOjAbUwiHkF4t86mWJI/cWioxm4sefcAXQQ74eG0DQc2Tv+UxAyASOrXRve6cVwbPbZYMCUzoJKbAVplCosQ/DtnZWKo4knjE1tT1/KSJVKBAMjxu1O1ZsuqcaVLW+s0SX/ZiZiIGVmVF+G8SBsFk5w0Figrfr9YYu79aZd+uSI4ZwILTJzZLkRUAx8EoZekMBQKi1mPlDYqKILfhu0NKwpjyp6H1s23slUzgMBjTl1Y1COAYcmPY1eblxV3aWA== 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=1VPWBQHeoPvd1n8H3XX3uaXge6Vrtu1mbgh0W78q+LA=; b=J+33g9qf+yqNxeuZttYXnafFPU0ALz31zmRL/0WpH7NTKAV0okmxxgG9L0vz5V54A8LO8oSoyX0mEDJjqKgkxUbxSk4eJyE588l7U/fyh4F50137ng8zI4WwSwrKdZKtchlRHTLivpY6ko99djctEUWTD38VzgkIKLLAPniFRyLkK6eB+sTlY2dGn0umPXP845pXnmSFbaOaO3RUnuhyZJCZndN8Db2PPrkppTZFKJMjQuqfmsjt2CI6jBuga2pjo9BsjyxdOIZgrxk1FUA4geq2QsYuu0+0ixpFetPeIhoU3z7jSttkIx9Ka8mQcMiHURaMBVFvs9hLZs1Wxd2Mlw== 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=1VPWBQHeoPvd1n8H3XX3uaXge6Vrtu1mbgh0W78q+LA=; b=Kl3ngsa1HFmVO+O/fS1QW5yXKO6ZNkCHJ4ZR97vFaKEF2vZtCqbbNmus5utENLQr1KaQYHWWRdBOWVYyxSfX60J+PDXKRT30Ht0pbLFIgWwcrlsBe2nsAOgYwerhEBi4JmAuHPs7MmavvV9Li6OClADXKDZjm8oBkYUdpyiV1BbR65l9k4lOxpEO335a1TtMcLQtCM5Qv84iZisjkAt1b60cc3gyZZZr1NjLE6JKHTbQViLSukmTKLvSvPJ2ZRvwu64kmL3ROAFBpIZkPbbn1gxuh2ADFzUIrpAETRn2UJLM1j02Z3KVQJ5xAsS3NbMJ0y8mUZWDCpIFQRJAGtjfyA== 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:24 +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:24 +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 2/4] serial: sandbox: Implement puts Date: Mon, 4 Apr 2022 14:17:58 -0400 Message-Id: <20220404181800.2258698-3-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: 022248dd-18e2-4eed-8d2d-08da1667821b 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: VFqD5XiLesLDF1QJD8iwvjrLuFjbf2Da73Wi3oQxvOWFOYI11v9Ow8XIcbpKvnGV/MIGlItV6GyMCjCZRvWqxZCauTWjPnzH5nxsdNPLfmCvGHT6vjdCXM47QnQRQUb745myW49czyjRTWhx7Ugid6UNjbdn+H0bNNf9U3ZNmuKFuEnJckZJEPq0alema2eUhpoAcoBQ4iHTO9cioh2r1prWeCpMR0dGbsgm8W9hdvq0SC+JlnKo388atmw029Yx5x6NdJeLSzxMommYjUueYl+ilp6FF0mbLoCgLNTPSkgucNbDDeJZFCQ1T4m3MQeJiYJFmy2SbZmVl/z+40vqd2fZCwoVMy0yX6I1HUUa3+Bb3ZGR7e+PUD0lTSVwc0bHBJfRSvr+ucut9PVwPi9gLOuDtGnowWHPS+oMfV2Qjuq2yMEvigGtZMTwoRNk7NOsQxILYQ7p6KWsXYEbStIvQzMmldEHUjgN0Zc0iKtuE/VoB6ELQiEOrhL0oJ1tMgS1h3W4AJWS8UWxfpTROI2//sguTRriBtQR2DZSwpfiys0EIRBvPc1+n09DDpSk9TMJxZe+67oGq7hHsAvQXhf1Ww5E1CPjFVl0bSP/M84LI5DiUbgCiIrziZ1iYoHnAbJCLmG0WKPzKbVK6+WsB5KUVloFHiCZoiq8x5gjcLt7qGKaPk/EOyL3WbzsWaKm+BcEKy3qlgfxO4DvystLbjux7A== 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: u3hTuJKMd3ygtBnwqo+miz0tYW/RYUywPwWf5S3WoFJ0dD4kOs8/hE/Bk4Q3G/ZTqjeSPQTnFGXVHqwJtj6b30N+fGotDH/x8JrV9DeTqiGwLgqWutA/suTiMfJGfYNDbCE8xoJ0wweNzBr9Vn5W9lg9XC2DMD0iSegjFoNZgOyq6hOIofGlv2oZ0L/k4goC3kBl0o3rY2+rAJ28VTGSfVzZ4Z7b8+tZrjf0HD2zkZ+3tIzssCdkiB2klYNWPLy0V8wt3zIZK6qjNDQyT2eATm1d/9flL8wqyeBTJ/AyjlE0yoVYvZ2uKznHxEJnq/JjTGFVOI76wgYOSPQIluF5foqI72shyEcP1/F3lCS0aygdpdGl3QkjXfBYk7ofnLOnL+0S/vPLw7Q7D9k+o5AQR/RBnbYCRrHyB4lKivr4+Ok6xmrB+zeFVI3usLq+vc+9dD5bN6bXTl1riKWR4oMPAesxQYapL9DfMwt0Bjg5jHcLL31hyR3DVt6N30z187UQkai/5S1vVkbaGtbgXDoeZgFv9e9SYqMukZjWXezoLePcO7zqjsvDiXasUha5wk2VNI4OizQZSHgAo5ABCr4XwGUCuH8iUIe/Jh1E301H8Rfs621fdldNDbay5nT6DANHk5N1V/u9W20u5BXNWoRpvaBWiaSkcEqAPpW+Z0miCLDJW/NyH5oju6hKTAyxFW7/hlO+BVfSOo/gxmmW+dZVV5JBnkM/UEMjxq/Z54xdm9kPkNUelDsN+6D6ufhDbkIHAaYHBsj1f9vd1dkRnHK3hQJU3NGWqHiI6ZQXx8Q/enPBNM3hCaEPCNiRFGtbNpc5cou7MU9PfKlWFlBSBXB7EwTZV3HFruvEo3UhyPb4xyFSAb01X1wSxOlUP55Ab0HC8TuRnJ6cEiIoYnOvm8mvpixjWSaN9Qy/VGzZKlbddu/DFfve9ZZOnatvhgrC+fSPsZjnsfpvc6ZG/G+JJL3TVxyzBS1H4NgyXE9EH6PD2KLOsCzFtaa/piDyFbrV3/0cxILefQnJlMgqebKQzUCyZKRc7e2ADUP7vkVAZ9KdZyFRcLXB4LbrBq/MltKxyU09fIGIeUzHySyipMpn509eY1O9JVVTHD/cR/U7qF3WN4UEodbpeEtz/6nf5plg1fpLY0oC9nU5DgipWpFE9IV7yBm+S0nNupzjdOvifUZKFgb5aBdZwOEAO00Z3SpZ9MMDHJoSvY07UXO1qJ6lfNb/TbairtcB69Cs+UP7we0vSCgcX7cjiXgMXqm3WjG4eGj/DN/8MWFYNVgT1aNTEJ839kGgP2GfgZCDsWhq7U+fG6aJpoGZR6xr8myjSEv9XtGt8p4H4Lu2KYXrKlh33g/TMAXLRncpjvJKToDI4x47Odx/soXqvstGiPVPan2u/oH/86+S9iVgrCi3i2Jc+PEnDnTlfJHCValANpUedDE2a0rKFXHppC+n+ulJ+F1k6YNFbuIk6sGWTJRzZWcqz4SdUztTVtqQIYHjGw2Ku7IbBFVHjMJrCpipbvdeV9q/sikfvsTDu80NDOrczbwD+3WaI2eVgbwNmz5ozHqDvkswh7TOlrBMD+reu/66Rly8pOgD9WcTGiZP1fuvVCbIX8LDthZNghm+RHg1SriULk4qImgXwovqDgjJ5za/WM5WutzoEzII0adpki+3e1Y701bsmdaa7px96OG0jUjsKN5sKLjXQWdT7R0poPMNw/OJAUQi10Pq6/K7Gs6l5S/hoPKoDVrZOVoRHrMhxUNU5ZOxTeg= X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 022248dd-18e2-4eed-8d2d-08da1667821b 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:24.7726 (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: H/f6eVaFIs8Jn3N5wojrJd5UwAF74bf6rqWYU4UehrAxPaweu174iN1wxZrbn6NO3i/IbwSv6JZgATjl07knTw== 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 This implements puts for sandbox. It is fairly straightforward, except that we break out the shared color printing functionality into its own function. Signed-off-by: Sean Anderson Reviewed-by: Simon Glass --- drivers/serial/Kconfig | 1 + drivers/serial/sandbox.c | 21 ++++++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index 76171e7146..fae82598cb 100644 --- a/drivers/serial/Kconfig +++ b/drivers/serial/Kconfig @@ -779,6 +779,7 @@ config S5P_SERIAL config SANDBOX_SERIAL bool "Sandbox UART support" depends on SANDBOX + imply SERIAL_PUTS help Select this to enable a seral UART for sandbox. This is required to operate correctly, otherwise you will see no serial output from diff --git a/drivers/serial/sandbox.c b/drivers/serial/sandbox.c index 0b1756f5c0..50cf2c74a7 100644 --- a/drivers/serial/sandbox.c +++ b/drivers/serial/sandbox.c @@ -67,7 +67,7 @@ static int sandbox_serial_remove(struct udevice *dev) return 0; } -static int sandbox_serial_putc(struct udevice *dev, const char ch) +static void sandbox_print_color(struct udevice *dev) { struct sandbox_serial_priv *priv = dev_get_priv(dev); struct sandbox_serial_plat *plat = dev_get_plat(dev); @@ -78,7 +78,13 @@ static int sandbox_serial_putc(struct udevice *dev, const char ch) priv->start_of_line = false; output_ansi_colour(plat->colour); } +} +static int sandbox_serial_putc(struct udevice *dev, const char ch) +{ + struct sandbox_serial_priv *priv = dev_get_priv(dev); + + sandbox_print_color(dev); os_write(1, &ch, 1); if (ch == '\n') priv->start_of_line = true; @@ -86,6 +92,18 @@ static int sandbox_serial_putc(struct udevice *dev, const char ch) return 0; } +static ssize_t sandbox_serial_puts(struct udevice *dev, const char *s, + size_t len) +{ + struct sandbox_serial_priv *priv = dev_get_priv(dev); + + sandbox_print_color(dev); + if (s[len - 1] == '\n') + priv->start_of_line = true; + + return os_write(1, s, len); +} + static int sandbox_serial_pending(struct udevice *dev, bool input) { struct sandbox_serial_priv *priv = dev_get_priv(dev); @@ -212,6 +230,7 @@ static int sandbox_serial_of_to_plat(struct udevice *dev) static const struct dm_serial_ops sandbox_serial_ops = { .putc = sandbox_serial_putc, + .puts = sandbox_serial_puts, .pending = sandbox_serial_pending, .getc = sandbox_serial_getc, .getconfig = sandbox_serial_getconfig, From patchwork Mon Apr 4 18:17:59 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1613131 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=nNm6VyU8; 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 4KXJvn2hPnz9s5V for ; Tue, 5 Apr 2022 04:19:33 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 71DC5839B9; Mon, 4 Apr 2022 20:19:03 +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="nNm6VyU8"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id C168B82A31; Mon, 4 Apr 2022 20:18:39 +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-am5eur03on0605.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe08::605]) (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 E986181B5C for ; Mon, 4 Apr 2022 20:18:30 +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=MdGN1UzPKLLgAFxAielBFEUpVvgrPWH+cTcj9rctEnYz4QAmOUaC7HqqRrjEuzykAsApQs/hd+64d3hUcG08wuFIju3mwmbF7d8oCevWTqPp4UQQlQ9Fr7VqTkJhO78YwAHNg7kXoPWQx8DiM09OyagUSgTovdIimiL5xdf4TISAcNKuTHPLR7YJcScPaHvspS6p7tjMIJByvgJaNh9EsLuVVpXvgMHnMNU4iKGFI92IJTnoobI8u99pLU2/rHThRUeE/iTSRaw+gn5JLhhGxNpg4oZ2yckdmfGvh4KjTy3cBROz5qppwL15ZCWKnFbucFdh81XbqLoPmC1FKWxA6w== 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=gjzSeMWYl5hPqSBhIh57nESuzKtCOL3b1ah+pyuMx8o=; b=Vswrb1x7MBAvArJkqTkhMgjbkRvChFJ2jYAyWIy7nwsmb05z0OxDR2YuoeoKZCV6tD1zLKeXGP0GsvlBab3q7asstUznTT/FBD65O0jMlXS3S+k0G/s3nQC/SGgX70tcnB6CLlGlh00raYZc81FtIZ3ErGqPw+eYz8dk1wGtTt1/3fcObwJ0uBw/suQrXdIqf/a3ShjdP8VswMw8wtqcaeEUi0qfTedqCTSlfAu9tBiwlwPwbgf0PWClwEcMT02er/0HdmIzBaF0WXTj5mOl9PBUHEyJtgaf7u6TqMaaA9/Kv/YtWene2FLCIg4q9FrlknMGxBLI/h29zWPZtZoUMA== 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=gjzSeMWYl5hPqSBhIh57nESuzKtCOL3b1ah+pyuMx8o=; b=nNm6VyU8s1/4S4Nz5RjkyqCf8puGfcTfyryLyurOs+uvDD4Wx4g7dXoxtiD3ousI4rwZYyXoinRygSPGamS/Vf71y98A0I8E3P1kBCdN/SX2L7KvmJJ5kSbI5qbFjApZY3cRVBYetgkud9WrAScUa7SSvunCHCNFIxKzpLjr2CHPwhgxbcwp21crepmFibSsyoFmyn7OVbs5Q1fAcu9aKG5OdAAIW6DubSZECFtDdIKkjVskqUy4t6Yap0vtmGS/9xF2AvFCnVWV4KZ+WYRTFnPTAg9yjodouJbHDvrM/oteIob+LZiNnXsfZMhdRgJvYe5HdeH0ObH8RltYxV4lZg== 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:26 +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:26 +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 3/4] test: serial: Add test for putc/puts Date: Mon, 4 Apr 2022 14:17:59 -0400 Message-Id: <20220404181800.2258698-4-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: 12f8066a-2c08-40ef-3151-08da166782e6 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: /b84syAXkToHdA7IkyTTDXXb8RceJJ0fXdG8a4r0Ui7y8yeS5Ja1DaxBSbMxCoko5jmKbqPFnt0JKCbKWuyt7lDzWhuu8ZAtZwj8G5fr3CJFT/uuogd3V2MHp6Cw+jleYz4RaLITkVMHFm5qVp/EClrjPStL8ZbHSdcLFvueeGd+x5pwJNIcVHfBU3A8zBkq4OhbhT9hdtpJYaMKI1Tt3M0qrSDmJfR8eEla3Mh774PE103N5Qt7KvMMY2JCLwkP8/uHUmJvRwB6bR84RMz5h/K+lBAhSiXn2POoipal86jccpp4PVJmtGZYKNTCinPJEFVNvB+f1lUyN2M9YzQNacVPSUTqfCJf/V/w38b4UbLZ8LssT1FRyUG4PJNm74/lzTYoWRg+R99O4hbe+AdjpQ4lSkMW8apzL42mWIQavRhYKyTn3k2tpOg5qE5JHX8ut2l7wApOlIdWX63DtNGGePP7az3TEFw9tmz2Bf0U5cHw8lvzxj+rJkui1dYTvB07aGNpWA4pialXg0gsQyYfCQ6LmBmWPBO/WLBytAXYj7HOMArNjeIDVnFTIoYuY5wlgT4dciP2QsL5mgI+tN0+E30inQHFNnhsREGv3b6OoDSyVquFSMTkQ2VUUeKbr4gBK33R4MB23mwpQvgpINuEwxDCBkBl+lhQCyod2hAJ/tp/P/tObFS7poJbvp9e218urbaQU+t9Z2Jh8G2ZLYLTtQ== 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: Mkb7Hw9WvSQokL6xB6tlns3/5g8frbt8dKNBWJb74wVGOVut0VBoSysAewHl5SHeNAlAcOe02QvaizKLnIkebSApzJ9yWNjaa0Kp6KwbisOdL+ecZycWQYSxByJ3tL45EbYF68c+K3MU3ar45jZnprWKT/a8jylyqs+r1DH2pVlF6O0mKR1Exd5GqNyOzvP78bYy9mckIIb3zjvkzq1o7oWCsimML4kTJkJoIMMaqjKR2T8EYM1sHSR0tMYS9s1L/RQz6jyeuQn+X/+UwjUTVAQ94G8xSq5U2wJIjxeqrUpFmfuj7aSFtoyH6BliqJYcpDZ0sm8AI5lfcVHGeHYVN9n/yMQe1DBve7Q3aZX7w4D9p4GnEhWFwfyea9MBZz63dBIh65lueESuPcATsx/B1q46Pk0D9aqq3zfX/3bhd7ztCembwNmELn9AdL3avAx6R7piUDlzV2UCSW1bJEChXRHz07F+hkt9QvQ3aSva9ZK7KbbaSrhs0GJMZoX4KHYl6SQ5M8vdQsYAvbV+FCy3Tu1pXQzDddO3qwlzyNGqNxmTesbCb266ZC56I9Y2z/FjwZgBOIa9rNMRBoKUSMBXUSWwM0SW5W7ghgCdaguyjIBn5HLduUQqdqAm4PLx4MzW3wFJQYV+uOYbmDDRNvEn9C9jccKFTtHITrqLbymdWSnjHCpvl9wMWPWnhIHxP+jjuQaBRewleo0vuUG6CDNNXow1/ZR4wj+TJVaJw3r7Syi9kP+RL++2FmzGzTGQW9HraMFjvRRM3pjvHkSiW3UBLOVU9hoPKClQH6Ik5KCmP0VjX5vND2AYqDS6ZlBMZaWFBhLV7HN30EpruEK1AT7VvBkkle2ZZZ0rxx0npi8bizsBpQdzodqS4Rnj/r9Iab30hK9i7amC7uKrcmPBuy9ty8b5gDy3XjCul+lTJYv0KSp7oat7sGmql8JZkt8T3ylFGpb1DgJOzgKQ8NM8jITT/31UoDVhnmVBNS5+PR+oIbGlfXc11Ahc1GZ4Vcw34tH8Awtdvoh+1D0/EHx7PkAz+yf0xGs8y1HDutPD+1q0msgrL8LZoCnQROyGm8FerrFqetJLkzWnYjf7mE8dNPrTYYznoYCNsU54y4cxM5Y4BKlUIzH860SAMOAUp2+h4+uBZ4L/ezICzQmQ0HUxGaMrd3iPM+jOUbgO8IDRGMMT/2umg4fEDpuhq+U4vYX5YWnoZU3Ch/zD3UL8qeL/mOVfoQ1h+aSxXqpcDHXDoqz4KJ4pTyCuzNP0bKVk9mPt7QFClyde77/Wrhw/33T+n0YhjAp9pG1GPDMNMVmIUsr5Qzu3oTqXXJnd5/NC/swaJPtG0IWqZIIJ7ZXGe9sHZy2Y10HJDUlyw/1xmVMUB5ZDUXarBOtD7WTd/oJVCXhFzhlJOM2ctog0HYyX7u8osVBIWpJxZmFbiBaXne36Lgr9MTQn640TlEGKujkVrnk17dKa92PTyoZik7GFCUuAmQDE4Gu80Z7mfefzhkNabEi30ufWi9xP/2iiGj84+GjGs/cXb845wDxSV5I/h/H68O0+TkDFjn+hDnlwD9wnD8FEP3VeZmWN8Ii7Lh0xXJ9V/CVB8s8ceFvmasy3AHiuloVoqShIUM1IwE+RA0I3/UNx0sbfpPWhLdUBzLZ1d4Tmz4BZD31s+sEu/MdqYgALo9hhXtqTB9SlqFcQCsurdMhmwAHbQ4evingU2M/Q5rKSBTCwEXOrkxX7ihb9P2zO8zHQVU00r3nbJqajRk1NH0OF/1o= X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 12f8066a-2c08-40ef-3151-08da166782e6 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:26.1631 (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: ODfqbH7pBV19fs9f6e9/imVC7xdhmQ9jkV/FD9oA2txGApF6y70cVUHGqKnh9SW8Y2qZ/eWYQK37jWfe6DMMSw== 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 This adds a test to ensure that puts is equivalent to putc called in a loop. We don't verify the contents of the message to avoid having to record console output a second time (though that could be added in the future). The globals are initialized to non-zero values to avoid a warning; in particular, the character count is off-by-one (but we always make relative measurements). Signed-off-by: Sean Anderson Reviewed-by: Simon Glass --- Changes since v3 of the original series: - Use helper functions to en/disable the serial device and access the number of characters written. arch/sandbox/include/asm/serial.h | 22 +++++++++++++++++++++ drivers/serial/sandbox.c | 33 +++++++++++++++++++++++++++---- test/dm/serial.c | 19 ++++++++++++++++++ 3 files changed, 70 insertions(+), 4 deletions(-) diff --git a/arch/sandbox/include/asm/serial.h b/arch/sandbox/include/asm/serial.h index bc82aebd0e..16589a1b21 100644 --- a/arch/sandbox/include/asm/serial.h +++ b/arch/sandbox/include/asm/serial.h @@ -16,6 +16,28 @@ struct sandbox_serial_plat { int colour; /* Text colour to use for output, -1 for none */ }; +/** + * sandbox_serial_written() - Get the total number of characters written + * + * This returns the number of characters written by the sandbox serial + * device. It is intended for performing tests of the serial subsystem + * where a console buffer cannot be used. The absolute number should not be + * relied upon; call this function twice and compare the difference. + * + * Return: The number of characters written + */ +size_t sandbox_serial_written(void); + +/** + * sandbox_serial_endisable() - Enable or disable serial output + * @enabled: Whether serial output should be enabled or not + * + * This allows tests to enable or disable the sandbox serial output. All + * processes relating to writing output (except the actual writing) will be + * performed. + */ +void sandbox_serial_endisable(bool enabled); + /** * struct sandbox_serial_priv - Private data for this driver * diff --git a/drivers/serial/sandbox.c b/drivers/serial/sandbox.c index 50cf2c74a7..e726e19c46 100644 --- a/drivers/serial/sandbox.c +++ b/drivers/serial/sandbox.c @@ -23,6 +23,19 @@ DECLARE_GLOBAL_DATA_PTR; +static size_t _sandbox_serial_written = 1; +static bool sandbox_serial_enabled = true; + +size_t sandbox_serial_written(void) +{ + return _sandbox_serial_written; +} + +void sandbox_serial_endisable(bool enabled) +{ + sandbox_serial_enabled = enabled; +} + /** * output_ansi_colour() - Output an ANSI colour code * @@ -84,11 +97,14 @@ static int sandbox_serial_putc(struct udevice *dev, const char ch) { struct sandbox_serial_priv *priv = dev_get_priv(dev); - sandbox_print_color(dev); - os_write(1, &ch, 1); if (ch == '\n') priv->start_of_line = true; + if (sandbox_serial_enabled) { + sandbox_print_color(dev); + os_write(1, &ch, 1); + } + _sandbox_serial_written += 1; return 0; } @@ -96,12 +112,21 @@ static ssize_t sandbox_serial_puts(struct udevice *dev, const char *s, size_t len) { struct sandbox_serial_priv *priv = dev_get_priv(dev); + ssize_t ret; - sandbox_print_color(dev); if (s[len - 1] == '\n') priv->start_of_line = true; - return os_write(1, s, len); + if (sandbox_serial_enabled) { + sandbox_print_color(dev); + ret = os_write(1, s, len); + if (ret < 0) + return ret; + } else { + ret = len; + } + _sandbox_serial_written += ret; + return ret; } static int sandbox_serial_pending(struct udevice *dev, bool input) diff --git a/test/dm/serial.c b/test/dm/serial.c index 0662b5f09b..37d17a65f1 100644 --- a/test/dm/serial.c +++ b/test/dm/serial.c @@ -7,14 +7,22 @@ #include #include #include +#include #include #include #include +static const char test_message[] = + "This is a test message\n" + "consisting of multiple lines\n"; + static int dm_test_serial(struct unit_test_state *uts) { + int i; struct serial_device_info info_serial = {0}; struct udevice *dev_serial; + size_t start, putc_written; + uint value_serial; ut_assertok(uclass_get_device_by_name(UCLASS_SERIAL, "serial", @@ -66,6 +74,17 @@ static int dm_test_serial(struct unit_test_state *uts) SERIAL_8_BITS, SERIAL_TWO_STOP))); + /* Verify that putc and puts print the same number of characters */ + sandbox_serial_endisable(false); + start = sandbox_serial_written(); + for (i = 0; i < sizeof(test_message) - 1; i++) + serial_putc(test_message[i]); + putc_written = sandbox_serial_written(); + serial_puts(test_message); + sandbox_serial_endisable(true); + ut_asserteq(putc_written - start, + sandbox_serial_written() - putc_written); + return 0; } From patchwork Mon Apr 4 18:18:00 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1613132 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=Ln7r/xAs; 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 4KXJw43Mmkz9s5V for ; Tue, 5 Apr 2022 04:19:48 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 8715B83A65; Mon, 4 Apr 2022 20:19:13 +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="Ln7r/xAs"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 5D07A804F9; Mon, 4 Apr 2022 20:18:43 +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=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO,SPF_HELO_PASS, T_SCC_BODY_TEXT_LINE,T_SPF_TEMPERROR autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-am5eur03on0605.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe08::605]) (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 1EBCA83928 for ; Mon, 4 Apr 2022 20:18:31 +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=VlFRl7QISKiALptjB34Fo/pKqpWYNyVJl0r9Dg4xTNR6Ol0aFfR89GPILylow6ezCFHxheWbPsdqSQOBFx+/1OTRu9/Pn3pp9IpL/mU/Wg6xXoiahiLgBxnU3di0MhFxXYjUISDvI35Jw9FTutEDPRmvTKBLDMagH0pWk1jYdKwBNo/ta3nb51QeO6XxgB0WuR1pSn9byBY33Kk/iYTHpOFLdunzS4YWc6CXYHqoKF4ir4hkq0HdEiUD+6zcy106c9FCrieFVeGztbz0r+JyfpneBpYuRsdTOmG+/POqdtr07UZLRqjCmlNBrZ5vbNr0RaCtLXmHZJOMesy4/zkh4g== 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=DJ6XLHAHuTxjjSDpyni1GRZuH2xCNrYllOOX8icGch8=; b=dExXxkPJI2723wNP9e4ywLhiaUSJQ90bH2FCx+gG2PDvxWWMwg3wOIsfC+qsSKaNzGdoEmyGgUQ3H0yNXeWozL2SF02Y5aNouf5rGtqiIUVN+zjwzofbd4o+Qr5HiJitmrPoWsMxv4ZJvpg+BPQM2RhLQJLC7xpSTXv6WMmlpY/tiak4RMrqieJWXC79oftC8vW9+tPbn+0r6dEx6Dg9mS/6h3kgUccOMx/+jfmM+ezTZErQ9YYA1i2RbakJh4Avbza1W06w+STaGuBvn9lciqCxSzceRQ74QkYNg2i0DcFA7/Iqhst3TujsmrU1P+eA9V0bMHsFiOGsLukUiKyUIg== 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=DJ6XLHAHuTxjjSDpyni1GRZuH2xCNrYllOOX8icGch8=; b=Ln7r/xAspEpkcNhzxbJxDkFSvVNtY9OWQj1NPpURD9OHoqO416cUhKnRoTAnPsuuOycAAC2hr/HwepRNhy2M2Kgr4XeXZsJddwCKKjmrdCI36KMuswGC/NOp+Lka23a/Q0WqPCjLA/xtPjRKfjiofZTOO61PwaNd57DcepCpdLwgd3Ms5w6bEwuJOOYLBbdjBbGVF9jTGilALWnuA3mxzTYFPGvLi7eZWNS/IB9vRUT0aKgroh8C/4vPKUnxCy0muS/d5fdu11yPpz62/lZdB+z9C0CA2hhLMU/z75iyBeHVYKIABEfy4cgeLplEu0xKSYMh6UJCOR9g2Cx+wGNVJw== 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:27 +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:27 +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 4/4] serial: smh: Implement puts for DM Date: Mon, 4 Apr 2022 14:18:00 -0400 Message-Id: <20220404181800.2258698-5-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: 84d0501f-3913-42ed-d57a-08da166783b0 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: lo9qY+YS3VHChaBcUwwJvRj5E/oVqrwQDjjR7O6uVuWKPinUUHD1IC2nYpfY2J2EizgFnT0m+wRfaW7tcbjDzuBQvoYrqpBdYALwhRE11uKo7OOijmLiu3Ofbc+h/wZ9jZCuSvSv+efEN86qOu7TDMasuBnsglbFKKL6vo6T34YT/Vmm9DB0HF7Aw7S6o3Ia9O5nmTj59bAdG5O5OkVNJWK3tYK/gUwwVjeeOZEJifRi5pWFie2WmCqIjm4fBB2Ev1gaoyE93w9syEW8YZFYFZ/xhPdLebKZMo/heUd4hXFI5sNZBbd0zaLm8Ge81ze4FTiCteNx9qFnMbx6jDwQ6q8iNHz5u5qnu39bp3eYAPf0sqbjgVReX8P5QvfxU/CgcAx/wAjPXKea3lvA7n5MXM5nJKHERW12p16HgcSQKSK6tVBjjE82W++jxRm97zOey/ZvYRd2pgSASlitsg5HqMJsz98vQNEGZtQocRisrVnRvBjfER9YZwnv/LQEYBx5ZBzKmdVSmqcOuq2Gvp2cKIgV8nD55UsO8Vvzc9nsy3NfYzD5Sz6yf4YliMN7JPzcWcwXhtJW3+ZVuukoso9hhPDIYrxS+Xs2xmZtgK87SAzyidNaH+sOW2UNtUWRrr66KSP+Kz5dCgyvsTIZhdPlm0gPNgvyAdk98dC6tQ34nUptq/OkELVqAqh1pwdTARRQhlD9k7BLTuwljm9fVkZb1A== 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: bWMDW+TbMj/vVzWeB9LcpptZYK8cWjqc3bQO4mClXXSA9rYTbcdbNcyZnNrv+xlDPMG+TLEQpfEFEeceTMvq+GAECAwf7KXSdNKxqM+BgllFhyItJ+kVXhAmD5rL/8PP5HSxhvPXuI1uQoeTqRGE330b2qwkkZpYzyeNp2jUoZUYUtNfkZCNStcr7xxZeDNk6NFP+Vm+X6YCzeyOnVXZp4PAU7DiH8wl5n0wl3P99Jfj/MpCzzjWSlBoCKju9TFO75Gt0E7quHq1tZS8buOdxk9cx12WnEuxd06ckuiJgm9FhrTLDjBnVjR3G7tMHvQLPAFBJ7Fn1cePTIOEtZ4lnvdG72d4vskYfRZ0rNb3FD/uN3ou9kHBt5583IaaBvpB2ZHlrz/QImM5SKPPevS7U/qLB48/HAJnyvnxXowjQxPL94N7OVAZYNf5pNMYM/pDiIdItY81RlS1pHlFB0yqQDCHPbNtVyvE2rAwfQaeBUH5qD4eVx8Dg9mqTdqvCe7LsJVmrLsFWlfVWGR3hwszJgI0whm3eKlSabPAwhUSIEtQc/AEJBfaVqOc/LeRCYrq7A+zyZ9ZpM5K4x1ftbl9Ng8Bv1JF90wb4i5WavxBxzXGxJw3KzgiWX+sODN7fjk7yvz8jb5/j/FC1O1jPNMtEkAc7N3Orl/bovGGBOm19io77FoH5ENUGpQIXzhTyTKVokv7kKqhB3JPptDsfuANe+ZvJUu0C8BYuBQAvvrwHZR5r1xuRnr3oyj2b5YqYnzOArVPN3M4Dd7Kv9PbrmLzZnC8rWYjb68sKOdDnLB2bmD3D0l0IZbodClu24O1Ls5fkC4djV7WrS9zGHOguHnEWzeKjUdV2wmnNeUcp5ys4EsfOAlARUE4ET5RaOpMzwtxxNM0iH/TAJjtDwG19gcvb/aAX689J4a7gpqK4Dx8PRTHtt8zh6Xj/+n6XsHnYLW5qugm9IzAHdTpuXgLD8lEED/RF4ikm7/Z6CM1geinhh41PTTLlDL20NgmGJJeB1wIesKlEMqaOnO2TGV/VrMXrAphHMI8KiZ8Xvw9nOkD6J8ExD/lE1rSQziaMPHhbkxDVnVzQqaHq4ZLGjFujLXxqiyF5V73mSUv1G2vfu6fmmVYOvzoGuWQNCQkwJZNTbtduF7VB895+gwbsP1PHn3XgW8poX/g3JqPcF/WdcYNRqeeOvsuN88kic039Z2Pef2Qk2IIQ9CFVD46QiKUUyR6dmbN8hkTz278T5FezgbN4iT+kmu6VWKQHqqxJWW1pnEBN9CrMahussFwhj8gpDwFyovXo8e1u6xfCUblw8f1fwTcnom6ic0nI42mCaEkMDzTnkZF5+2nJW77zHIl3kNkiSg2M7C+lFz7aEaYd2YkvmVC+7lVg9rxRHq+BMRfJcLkHKDxz+0MwR31vNt+7CfLYiCWWw0hjiBiKAIXTxscVq8tjzhfeVmQIAkwu1SmPIVhlg8VYpmWHlOYvcFPKRoTfzBhOAd1ACOhdxf9nI5i2hmARoOXageSi1TaLnGciBf3QlnmehhPnp6BULvLLhnSDu+fOm86i8Kht/Qfhe0bnmu1PBodL2QvyzEXPPBn5DybYu45P1eqBHrUpHMVx41j2GRN+WiwkShbxkYRUhP8O8LbcdRBrFYNra96cIHsN6+ABVrVo6FqkRUdDigaZpActRceg2VcNwTwveecjBfwhsXzxoujZ5tGwc1acfzNt7IUWWwWIr2FWaFJdTFzIaivkNmIlCE2x0A3sr+ghZBbBUA= X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 84d0501f-3913-42ed-d57a-08da166783b0 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:27.4911 (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: 7VJN/pzneb22mHjDzZ8rLnUk0Fu/hkZKQZFqy09gcvgVrzpCmXs2QWVNrKKZ8zepyE9WYomWcNADJ/ceaeDhzg== 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 This adds an implementation of puts for DM. The implementation is not as clean as for the non-DM puts because we have to handle non-nul-terminated string. We also handle short writes (though these are probably very unusual). Signed-off-by: Sean Anderson --- drivers/serial/Kconfig | 1 + drivers/serial/serial_semihosting.c | 31 +++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index fae82598cb..4ced6c0a5d 100644 --- a/drivers/serial/Kconfig +++ b/drivers/serial/Kconfig @@ -808,6 +808,7 @@ config SCIF_CONSOLE config SEMIHOSTING_SERIAL bool "Semihosting UART support" depends on SEMIHOSTING && !SERIAL_RX_BUFFER + imply SERIAL_PUTS help Select this to enable a serial UART using semihosting. Special halt instructions will be issued which an external debugger (such as a diff --git a/drivers/serial/serial_semihosting.c b/drivers/serial/serial_semihosting.c index 62b1b2241b..4328b3dac5 100644 --- a/drivers/serial/serial_semihosting.c +++ b/drivers/serial/serial_semihosting.c @@ -5,12 +5,14 @@ #include #include +#include #include #include /** * struct smh_serial_priv - Semihosting serial private data * @infd: stdin file descriptor (or error) + * @outfd: stdout file descriptor (or error) */ struct smh_serial_priv { int infd; @@ -36,8 +38,36 @@ static int smh_serial_putc(struct udevice *dev, const char ch) return 0; } +static ssize_t smh_serial_puts(struct udevice *dev, const char *s, size_t len) +{ + int ret; + struct smh_serial_priv *priv = dev_get_priv(dev); + unsigned long written; + + if (priv->outfd < 0) { + char *buf; + + /* Try and avoid a copy if we can */ + if (!s[len + 1]) { + smh_puts(s); + return len; + } + + buf = strndup(s, len); + smh_puts(buf); + free(buf); + return len; + } + + ret = smh_write(priv->outfd, s, len, &written); + if (written) + return written; + return ret; +} + static const struct dm_serial_ops smh_serial_ops = { .putc = smh_serial_putc, + .puts = smh_serial_puts, .getc = smh_serial_getc, }; @@ -53,6 +83,7 @@ static int smh_serial_probe(struct udevice *dev) struct smh_serial_priv *priv = dev_get_priv(dev); priv->infd = smh_open(":tt", MODE_READ); + priv->outfd = smh_open(":tt", MODE_WRITE); return 0; }