From patchwork Fri Apr 28 12:38:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Herbrechtsmeier X-Patchwork-Id: 1774947 X-Patchwork-Delegate: jagannadh.teki@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=weidmueller.onmicrosoft.com header.i=@weidmueller.onmicrosoft.com header.a=rsa-sha256 header.s=selector1-weidmueller-onmicrosoft-com header.b=ou8D3xnZ; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Q7Byl11Ylz23td for ; Fri, 28 Apr 2023 22:40:15 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id F04B1863C3; Fri, 28 Apr 2023 14:39:35 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=weidmueller.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=weidmueller.onmicrosoft.com header.i=@weidmueller.onmicrosoft.com header.b="ou8D3xnZ"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id A025E85F74; Fri, 28 Apr 2023 14:39:27 +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=-0.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FORGED_SPF_HELO,SPF_HELO_PASS,T_SCC_BODY_TEXT_LINE, T_SPF_PERMERROR autolearn=no autolearn_force=no version=3.4.2 Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on0612.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0c::612]) (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 94BB3863B8 for ; Fri, 28 Apr 2023 14:39:23 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=weidmueller.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=stefan.herbrechtsmeier-oss@weidmueller.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XtL2feJ1RIxst2+M5XFTOp6gG71cj347zhel7tW7roIBZA7VKWH5EJ9z/haC3NgJhFRVMN4Af7kgsGIPIlM2i24A6BBuWA7T8Un6lf4mx1j2EwDGDrZY25/LvdBYL0JdqxVCJJV3DA+X6M3s6d4cFHaJb36q2QFJ1WfINDAVK4alJ9Y3lfNn/f47nepi3p7sjpwbfbFn9+VRD42uCxVbUvo/3sxAaRK/5V1h0bYXajlkI0Q28QTDEzJ9LICz5FwIjcLctQ/ZDGBZu293VSLG0VWLvFdv8n9ZMxgCQwaasDtixXu4NcHTqwQ1GieO5u95ko5iXF6GkDBE8lpTdhV/vA== 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=UhHK8AQoItHb1bQkqu44OdU+5dPhpDBckTyeAkjmmW8=; b=K/seiC+uequA5AbQ0K8dlj+WjYTxdqexKlkrYqynqupRPsTtHuIjM8hebUVm16FM90BQSiPRzxm3HfIfcHpkZcm9P9GzwghKDCnP28Q56J1xPpBLfcd2g/9mWqFijxwf44gaO229cZ1m7IH1nFrNq1/ppzuYQoqamGkE5eQCz1Ygi/tLoZ6cjDvol/TxISBkCSZ2CMiuEZ4qYChLlYU42io6aT+sDb6aW10d9USBQyt7y9EsCuv37ATAT0J5tayNuDqjJpdhN8Ue+q4LZsjv4J6cjpliD0RIcfB9QxZcA3pL1ZIUJOIGP835QXx9CTDvDC3oxnM3Og/rcrq1S/bJWQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=weidmueller.com; dmarc=pass action=none header.from=weidmueller.com; dkim=pass header.d=weidmueller.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=weidmueller.onmicrosoft.com; s=selector1-weidmueller-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UhHK8AQoItHb1bQkqu44OdU+5dPhpDBckTyeAkjmmW8=; b=ou8D3xnZWgenM2JwM/NDHLAakxzhzdeCDMrNdMEDkSWWCqOkpkNIN1aN4McvzZ4GlNq3zRTcwMmHtch0np9ySrgxSt2UBki8XZhJLmO7l3x+igfM4ffkRVLh6CIJBfPQZvyYWksRy+aVPEDZFR/M2VISeDgAf+/mEykx3a3RqjA= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=weidmueller.com; Received: from PAXPR08MB6969.eurprd08.prod.outlook.com (2603:10a6:102:1d8::23) by PAVPR08MB9554.eurprd08.prod.outlook.com (2603:10a6:102:313::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6340.24; Fri, 28 Apr 2023 12:39:21 +0000 Received: from PAXPR08MB6969.eurprd08.prod.outlook.com ([fe80::5979:132b:6e3:cfb2]) by PAXPR08MB6969.eurprd08.prod.outlook.com ([fe80::5979:132b:6e3:cfb2%7]) with mapi id 15.20.6340.021; Fri, 28 Apr 2023 12:39:21 +0000 From: Stefan Herbrechtsmeier To: u-boot@lists.denx.de Cc: Lukas Funke , Stefan Herbrechtsmeier , Jagan Teki Subject: [PATCH 4/4] spi: pl022: Add chip-select gpio support Date: Fri, 28 Apr 2023 14:38:50 +0200 Message-Id: <20230428123850.6444-4-stefan.herbrechtsmeier-oss@weidmueller.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230428123850.6444-1-stefan.herbrechtsmeier-oss@weidmueller.com> References: <20230428123850.6444-1-stefan.herbrechtsmeier-oss@weidmueller.com> X-ClientProxiedBy: FR3P281CA0004.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1d::23) To PAXPR08MB6969.eurprd08.prod.outlook.com (2603:10a6:102:1d8::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR08MB6969:EE_|PAVPR08MB9554:EE_ X-MS-Office365-Filtering-Correlation-Id: d9a30c69-9bc5-4683-f30f-08db47e59779 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: gVLi1n3ZOwkieCGzOUfCtMjo06viU0EISi1h0OTJuH7Io0hhX3BEYZX6MBF/peMC3Koi4QBLRU+pbRfoi0pIL+Gmv6sO3cZNgC/r7oRT17F8dJ595sypkR4fRL1yq6hWzA8FEdLlGTNZR6xsw4A7tWlkoBGB+Gd17pJzLZLj231+EbuYMRcwvIXL/YCAnmUQlIz/CSSD4lVMaRXWgOXt6V0frX53fD6iegJZHW06JxjWoY9g9cCz6JGuPPacEnP9VsTw8kp2cl89FCi+ptW8rkk0VnqgjyxWGICRbpWbmc2PHOUXrI4P/o6X/1ygiTOgFkDBBMfwGEZzmCIZObgPFO4ESfFXQZDGDWcTX/FIn18Zwl89EpZCVauclrqdpiGkzTWeOv/jYj9XoMQCF1c0VMnVidwvWWYFsmq5FH7VYrPjmXpIURjK44o4dJAmW4nLGpPkpWA+9sVLPQM1bJNKY8P33hRk98GQV15rT0cBufeD7jP/kgvSr4lZL2RRH7BW2T0TymlQL6Oeu6WVUKHzIXBM6YMWOtaTbBEqzoIT3cNwcFXY2XrQ8jYziuyHIOFc/D7T3gFUlDDoGcCC+BH2+vetbDG0P760rzY9mQKAfzvWPDvkaKGN5QrLCQ2JYreE X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR08MB6969.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(136003)(396003)(39860400002)(376002)(366004)(346002)(451199021)(8676002)(8936002)(83380400001)(41300700001)(1076003)(6506007)(26005)(6512007)(54906003)(316002)(2906002)(5660300002)(66946007)(66556008)(66476007)(6916009)(4326008)(86362001)(2616005)(38100700002)(186003)(38350700002)(478600001)(36756003)(6486002)(52116002)(6666004); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: S8aBQasRo7cz43rKnFII6FQebWjZDoUYrCaxYOcQ3IJ2HuMQ811UwIwjiaJmZqp4rujpbdf0K0oTUFdl4bP3ZvFvVyvuWAxe9ECVlyuS3xZRd/VbL1m4GnxEgNuF06P+nROzAJddeM3kLo07VXh4ElPaDETTQ3YPQ2otz3TTTOTGH8ZT2z7mr7B8+uO5VaHK6x+Y89WTczFMrbtHRlW3TqRp4mEKXbYjYKP/i5yFQHmGJ0NBJ3JVvbYhnrrMPlFMs8ouKqVO4QdsrOr+JNMFiiFTf51LyLXPvdM+deaQO0a9QrW0o7rzTWlbn8HSaIjiMKaz4OX001VPt05oGFGZHcwPn/CAX96dZxatKlMXMDgTXFQwyzTGVQdIdEuePYIomdIMi0wodzbpI7YLXALnVtELmNydYl3vaaLA3nbbcFYSuVOnn9Lim9CQ2waTIKv+QI3nLwjAkcktKCO/g56xJR8xUsjlIXP8MxTumwSuk676tPL8TYqZcl+DMMs9r7u7ub0yy87aOkXLSsBdbWFyTrO4fIolS2RV0po3HHrQNfePjvZ+8xilmNxAfHpO30R93pBi6hx2UMBWSArFZYSq4T+Z+oqrZhHgJsQ6DOTds6lD/0t2sFhKOwMs7R2EY7O4slDMXYe4HuvK6ByG06k1C6ceIgbmLVGT/PR6n7nVtkPK7Snbb/aHAhxpt8ZI+69+xe8n980z5mC9kKoXecCpr8HKeWFXJ1AubGP6fIMFlMTc9uoz4KVzqzv9ODmtHfJkQsS3ZDQHC7wh4FTcCy5JgcNEORBxXqMONsSJ3Z/o2HlU12QWpR1omigDQLNcsvMkflKVAYu+FgN+u+TAsEzCyicdkHN46liXGysdv+EEAhGI6YY/G/qRiodujiSoNHaJZ5eCfDwf7DZE4D6F/XHl7G3iuedWvV8uYyfPGuBuARVe5kVLjpu1WLGRqFy/paZD+OSTDWSCpifBZ5tHMXUpGOUXQ394mYKy1raCYp/bFvxji8uKmrlKM03WCKFRJ/+C6CfzOesMNSHZoQvnpfZCbx98cqD9z5amQtxUdUzG5oZh/G52FKNuQhRDRJEumShZoAsjvHdn5JXZ9+YdiF7xbZc5H72Ojtzei5kKuZnhEAreJmp1v1OvyyEBMM/wmr576kEz5QPgnUVGL5djIQMsTn8mJGfjoMtKuREvEMzI5HmtTnRIMEM4tJt8vFr8W4m5gYnNF2Opg6uG+FPZloJ4p9jxWTNPSmrLVEW802GhmoYUpI2h90aNNQdglJ58tUcEJwrYoWzoE4hAGGX4AHnhNPSU9KusQtd2LzCzUGDcVcDwt5s5jrDs23Ub/edDs9wWXaZOe6wl52nHnPXCTVAdc1MiKFb2Xlx4bWBWS97jkmMG7jJSH+lSDDkqc8+8XqlZyOjWWmSO2Qf+7WVHruAJBNJFHgp/RFyPSvnsRWQqMQHQ5n89bQMUq99kQssrIYLAwDW5mI2gmbJ5FEgaAqA0Oa7ypRE45x8GorYtSwlAu9hVI52dm5fsExTJ1ur0FGBrU2EljEoH3tgRyYIcdt17n7BNQ4cvgD9QuPXqfIChgEwjmhOM6AEmA3WaweqISQE3U8WRX7f39MzRfoCXpsvkZg== X-OriginatorOrg: weidmueller.com X-MS-Exchange-CrossTenant-Network-Message-Id: d9a30c69-9bc5-4683-f30f-08db47e59779 X-MS-Exchange-CrossTenant-AuthSource: PAXPR08MB6969.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2023 12:39:21.8739 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e4289438-1c5f-4c95-a51a-ee553b8b18ec X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: BLC9SxOjAZWCuAD8Dpe3mQIkY7L4uaCDU7d1sJawdc6PGi24MBroBnnndwaSapscFKqDQc14VaYsgXCc1cvQjw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR08MB9554 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.8 at phobos.denx.de X-Virus-Status: Clean From: Lukas Funke Add support for an optional external chip-select gpio. Signed-off-by: Lukas Funke Signed-off-by: Stefan Herbrechtsmeier Reviewed-by: Jagan Teki --- drivers/spi/pl022_spi.c | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/drivers/spi/pl022_spi.c b/drivers/spi/pl022_spi.c index 9e4caac16f..fc7388b379 100644 --- a/drivers/spi/pl022_spi.c +++ b/drivers/spi/pl022_spi.c @@ -12,9 +12,11 @@ #include #include #include +#include #include #include #include +#include #include #define SSP_CR0 0x000 @@ -70,6 +72,9 @@ struct pl022_spi_pdata { fdt_addr_t addr; fdt_size_t size; unsigned int freq; +#if CONFIG_IS_ENABLED(DM_GPIO) + struct gpio_desc cs_gpio; +#endif }; struct pl022_spi_slave { @@ -153,6 +158,17 @@ static int pl022_spi_release_bus(struct udevice *dev) return 0; } +static void pl022_spi_set_cs(struct udevice *dev, bool on) +{ +#if CONFIG_IS_ENABLED(DM_GPIO) + struct udevice *bus = dev->parent; + struct pl022_spi_pdata *plat = dev_get_plat(bus); + + if (dm_gpio_is_valid(&plat->cs_gpio)) + dm_gpio_set_value(&plat->cs_gpio, on ? 1 : 0); +#endif +} + static int pl022_spi_xfer(struct udevice *dev, unsigned int bitlen, const void *dout, void *din, unsigned long flags) { @@ -165,7 +181,7 @@ static int pl022_spi_xfer(struct udevice *dev, unsigned int bitlen, if (bitlen == 0) /* Finish any previously submitted transfers */ - return 0; + goto done; /* * TODO: The controller can do non-multiple-of-8 bit @@ -178,9 +194,13 @@ static int pl022_spi_xfer(struct udevice *dev, unsigned int bitlen, if (bitlen % 8) { /* Errors always terminate an ongoing transfer */ flags |= SPI_XFER_END; - return -1; + ret = -1; + goto done; } + if (flags & SPI_XFER_BEGIN) + pl022_spi_set_cs(dev, true); + len = bitlen / 8; while (len_tx < len) { @@ -207,6 +227,10 @@ static int pl022_spi_xfer(struct udevice *dev, unsigned int bitlen, } } +done: + if (flags & SPI_XFER_END) + pl022_spi_set_cs(dev, false); + return ret; } @@ -309,6 +333,13 @@ static int pl022_spi_of_to_plat(struct udevice *bus) plat->freq = clk_get_rate(&clkdev); +#if CONFIG_IS_ENABLED(DM_GPIO) + ret = gpio_request_by_name(bus, "cs-gpios", 0, &plat->cs_gpio, + GPIOD_IS_OUT | GPIOD_IS_OUT_ACTIVE); + if (ret < 0 && ret != -ENOENT) + return ret; +#endif + return 0; }