From patchwork Fri Oct 20 12:33:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?QsO2cmdlIFN0csO8bXBmZWw=?= X-Patchwork-Id: 1852510 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=googlegroups.com header.i=@googlegroups.com header.a=rsa-sha256 header.s=20230601 header.b=Fe9P8BFK; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=nlNPzLiL; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=googlegroups.com (client-ip=2a00:1450:4864:20::53a; helo=mail-ed1-x53a.google.com; envelope-from=swupdate+bncbdxz3sol6amrbh7hzguqmgqedjmi6pq@googlegroups.com; receiver=patchwork.ozlabs.org) Received: from mail-ed1-x53a.google.com (mail-ed1-x53a.google.com [IPv6:2a00:1450:4864:20::53a]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4SBkXR1Qrcz23jM for ; Fri, 20 Oct 2023 23:33:41 +1100 (AEDT) Received: by mail-ed1-x53a.google.com with SMTP id 4fb4d7f45d1cf-53dfe3af1b9sf500071a12.1 for ; Fri, 20 Oct 2023 05:33:41 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1697805216; cv=pass; d=google.com; s=arc-20160816; b=llvKY8d+mDP4hjxIIzQwAbmmdm4Q3fIC3+qW3tAbv5ddFMB01TwEM30GyfnDIoyhpJ mSIGFq97y7vEmOAgP9+stMkQ+663/ZHLI8OCqpDBbF2/5nrmDjoKNyGN2l/QoyY5F7Or pOHZ1DuTT1hAZu/nHPmVrNU/jC/FtcNGQoLo+gXmmxPW94YojrTwqjpkJxVykeNPDAU0 ua7d0E2cBnHD7NjeolwGUKKDc0OrQSNYfskkWYdR58y3zJNnnudkpAezBGBdUSChHOMW ADJc02CLLj1CY2zzFwYlan6T2qpzuynhz3sxnbgZ/vNKkPq+Quu4kzZH0MVPvCT4kVUd pprw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:dkim-signature :dkim-signature; bh=k2rlwFCcZ+iGgWI3Iv2PK3wKyav3mIGZKbaJrx37WPk=; fh=ZW2kvPqyWkPRSWvoMc2R6zaAWiAWPTkyocNi+jZr5nQ=; b=0VoO02r7L5k0EgvTSYAyqlVnpR05/FKsPdd/CPyYsiFJuHI1ToB7qWQEsn/ZTl84GE dOxI4OknbROxz9E+Zvpvb+P3Ozqy7tirzDugFqzDVXgOyvwx2QR6Kt26BCpSQ9cMbzLr QH2HgmLbQmvKeMy+lcSbrspM5ZijumZPrDBE7Yi2MumU4iql6viiH8TL/O/JvLW0X0pr a4sxEBtWpt7Qrn1HpiT58zownYb1BKEsmlQNVy/K7jNS3elaYL+Y1eh7m3/0FVhXFcKJ Fx6cTLIShyXSobFvvEzdF0DrC2xvkYNe6lpt2ugULVm8xR5sLW6ZQItmafLZA31SlipU X1HQ== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=V4u+Db2j; spf=pass (google.com: domain of boerge.struempfel@gmail.com designates 2a00:1450:4864:20::634 as permitted sender) smtp.mailfrom=boerge.struempfel@gmail.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20230601; t=1697805216; x=1698410016; darn=patchwork.ozlabs.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:sender:from:to:cc:subject:date:message-id :reply-to; bh=k2rlwFCcZ+iGgWI3Iv2PK3wKyav3mIGZKbaJrx37WPk=; b=Fe9P8BFKNZjlLwb/RNI2arJSAUL/zEwPcrpQenl2xAxv9jDNQR9Hc7+z32R8RjV+Mu TAGudVlFxSlSFp5yOOOji16HgmYg7b/QzjaRJ3GAEX4IbuP/+EnkoEQb+1NSTCqa9N0a OU9W2GTkBvlQsFYxcVyopZsZvhWQXTEdTcCEHIlmY0D3jFPY3AZGe+z0nj7RNpVrjWy7 rTyFmEh7FOzD8NoVAHlZS2EIATpAnh6FDJZHJ57LgP+nFV2xRSob4gUkE25QDmAm7oPh 4khgD4Ii7c5Mqg3mt/mPXr+Q8CYwaBYxhe33zJrtBYgmAfJ1PT9w0OPVtE2Mwa8GbbiO 4q5g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697805216; x=1698410016; darn=patchwork.ozlabs.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=k2rlwFCcZ+iGgWI3Iv2PK3wKyav3mIGZKbaJrx37WPk=; b=nlNPzLiLLfe6Lgy9BHpeAcEzeLl9iIkCvG6WaObRNtPjt3L0HmMJX7llHEjqwN0nZ6 8PNLTlikjz76p0fuL3GHOxJ0Sr6mRgmRqYt5vFT61TvWL5+Q4iyw/xE9ngr7XSEF3M7V oxq3Uemu5Te3F8H3mib9RC/ae8vYE7BEjnWlVaTM9ncSTQwEmQDfX2nn+c1szdYtJjSk coRayHbqo+J6JI8fdzZAeASCLOZc5R388H0fJkd1zW7qj9OXOA290iaB4VpckxYt1HQO Z21T02zyyfLh/lWbujOT+3Kv6qd5oZhurjBBpxzTIpoRb+MuL7G3xVzXBI08d8Nl77/F IH2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697805216; x=1698410016; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :x-beenthere:x-gm-message-state:sender:from:to:cc:subject:date :message-id:reply-to; bh=k2rlwFCcZ+iGgWI3Iv2PK3wKyav3mIGZKbaJrx37WPk=; b=oPmuR0Sq5hkr6amnzpaKWbzqbdgULWYe813d17NzD9Hbxm49JWUIxEMlQ0E8sZ9I9D X2bXskosRfH6YXbE3nSaTfAuUOaPoik/jNfHXoFClfkyTJu6AGohEQTy98DlGKEfmu1i oIr7i1UMm0Z5qspUHLH93YVeQ5CkHm6o5mKdsKd8LpcUjKFHHKFa/+1nBOJXfwjdxuCU WD8lsm/4K59z6B18jdaMIEoqTKjU5X9b5mCp4QumZXUs5lrh2uA26TJrpXIqjMF75hxO p3d6FnejM5vwOU9ubllhbYlJ9ugmSuWw4JfwSgIE1UY8P6h87jZT0oO9R5p+Q2SeYlMv wrnQ== Sender: swupdate@googlegroups.com X-Gm-Message-State: AOJu0YwrwFn4NGaNZhSsrmENbLkHJX3o7BrymtDlDNs8JzKCHfGMEPxs vt0armTZU0n5oI/32qES7T4= X-Google-Smtp-Source: AGHT+IEq3tZr8cUlBAc1hg/BsIi8lLPK+L/yzC3b/a0QkyMDonLJ1UXG1JwY0AqGj9folTdWvmh5vQ== X-Received: by 2002:a05:6402:26d4:b0:53d:e1d9:a11 with SMTP id x20-20020a05640226d400b0053de1d90a11mr1580377edd.35.1697805215898; Fri, 20 Oct 2023 05:33:35 -0700 (PDT) X-BeenThere: swupdate@googlegroups.com Received: by 2002:a05:6402:3217:b0:53d:e990:e69c with SMTP id g23-20020a056402321700b0053de990e69cls535895eda.0.-pod-prod-01-eu; Fri, 20 Oct 2023 05:33:33 -0700 (PDT) X-Received: by 2002:a50:f603:0:b0:53f:d099:59de with SMTP id c3-20020a50f603000000b0053fd09959demr1180703edn.26.1697805213581; Fri, 20 Oct 2023 05:33:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697805213; cv=none; d=google.com; s=arc-20160816; b=zytoUq39+AyNQNkCUvXuAhPiuvzaBfHJLdWGEDZ5N2+Y0Em+wyxf7nMBIiGa4b5bw0 b3QZXvDq/RGeU2x1obleHVd3ZKNyofGZ8JQOEFiYxE+9XGQkiAaqXGAP8Wna+0APfw06 bUtVaStefCLRND0E7AUrHf0UBbMAn1o8wlOr4dOAFNXB2mAgCIhI+RzyDaz6QSasK+9R irphGpp7ry4p0+ApvOZZIPGJmqk5rr4vGlC3GBrHbvGQpK+upkR7a8xm/Wm4/tI3SEJB FgZN7LVPmZDLujf+uMRuzFX0JXEul9Lapwgg6QCPWnZ1N4VggF2Rb/6oDhNRjO6J3Kur dk2A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=jUwQ159c3z3LqQCQEVFA5HjeFXdMBaHXC/+h/N6OjTk=; fh=ZW2kvPqyWkPRSWvoMc2R6zaAWiAWPTkyocNi+jZr5nQ=; b=JJqR5+kIpooBNysfmeEz6jpBuO3YqVi3fSQXpCH9YunnSz3zWChR2YDaxufWHrwZqU VuPE9f5NFA5VvDLscl4IMhpF/X5u938adEROU9TikBaic457rZnlS1Sy9iYnW0REkmZd PEfBEQNJdRGnvkpaFIEPgSkU1MtgwwTgnZlDScnxM9FnJHDkpHGpOw5ebrCASTS9qzQ5 6XXAUK5xdYQtGkLnwNMzXZ/nIy/isjY4YLD4InUVm9qAt1YzbfcyShnY3E9yOoyBc76w TwOdcE7KeyMucw1eZvmv4w1+wTvn7R8E6cXA55HdWtMlirJzueE3o7rhHRbukXXVy+dQ iv1A== ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=V4u+Db2j; spf=pass (google.com: domain of boerge.struempfel@gmail.com designates 2a00:1450:4864:20::634 as permitted sender) smtp.mailfrom=boerge.struempfel@gmail.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from mail-ej1-x634.google.com (mail-ej1-x634.google.com. [2a00:1450:4864:20::634]) by gmr-mx.google.com with ESMTPS id z92-20020a509e65000000b0053e90546ff6si111981ede.1.2023.10.20.05.33.33 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 20 Oct 2023 05:33:33 -0700 (PDT) Received-SPF: pass (google.com: domain of boerge.struempfel@gmail.com designates 2a00:1450:4864:20::634 as permitted sender) client-ip=2a00:1450:4864:20::634; Received: by mail-ej1-x634.google.com with SMTP id a640c23a62f3a-99357737980so125479566b.2 for ; Fri, 20 Oct 2023 05:33:33 -0700 (PDT) X-Received: by 2002:a17:907:e8d:b0:9c0:1d65:68d9 with SMTP id ho13-20020a1709070e8d00b009c01d6568d9mr1529410ejc.7.1697805213019; Fri, 20 Oct 2023 05:33:33 -0700 (PDT) Received: from wslxew193.fritz.box (p200300c78721530013481e3cc3df2555.dip0.t-ipconnect.de. [2003:c7:8721:5300:1348:1e3c:c3df:2555]) by smtp.gmail.com with ESMTPSA id w21-20020a170907271500b009ad81554c1bsm1392916ejk.55.2023.10.20.05.33.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Oct 2023 05:33:31 -0700 (PDT) From: Boerge Struempfel To: Cc: boerge.struempfel@gmail.com, bstruempfel@ultratronik.de, anaumann@ultratronik.de, jkleintje@ultratronik.de, swupdate@googlegroups.com Subject: [swupdate] [PATCH 1/4] ucfw: Refactored switch_mode signature Date: Fri, 20 Oct 2023 14:33:12 +0200 Message-ID: <20231020123320.82500-2-boerge.struempfel@gmail.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231020123320.82500-1-boerge.struempfel@gmail.com> References: <20231020123320.82500-1-boerge.struempfel@gmail.com> MIME-Version: 1.0 X-Original-Sender: boerge.struempfel@gmail.com X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=V4u+Db2j; spf=pass (google.com: domain of boerge.struempfel@gmail.com designates 2a00:1450:4864:20::634 as permitted sender) smtp.mailfrom=boerge.struempfel@gmail.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Precedence: list Mailing-list: list swupdate@googlegroups.com; contact swupdate+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: swupdate@googlegroups.com X-Google-Group-Id: 605343134186 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , This commit aims to reduce the number of parameters, which have to be given to the switch_mode function. This makes it much easier to add a different variation of this function depending on the installed libgpiod version. Signed-off-by: Boerge Struempfel Acked-by: Stefano Babic --- handlers/ucfw_handler.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/handlers/ucfw_handler.c b/handlers/ucfw_handler.c index 8d10a54..5bf23c0 100644 --- a/handlers/ucfw_handler.c +++ b/handlers/ucfw_handler.c @@ -109,16 +109,17 @@ struct handler_priv { unsigned int nbytes; }; -static int switch_mode(char *devreset, int resoffset, char *devprog, int progoffset, int mode) + +static int switch_mode(struct handler_priv *priv, int mode) { struct gpiod_chip *chipreset, *chipprog; struct gpiod_line *linereset, *lineprog; int ret = 0; int status; - chipreset = gpiod_chip_open(devreset); - if (strcmp(devreset, devprog)) - chipprog = gpiod_chip_open(devprog); + chipreset = gpiod_chip_open(priv->reset.gpiodev); + if (strcmp(priv->reset.gpiodev, priv->prog.gpiodev)) + chipprog = gpiod_chip_open(priv->prog.gpiodev); else chipprog = chipreset; @@ -128,13 +129,13 @@ static int switch_mode(char *devreset, int resoffset, char *devprog, int progoff goto freegpios; } - linereset = gpiod_chip_get_line(chipreset, resoffset); - lineprog = gpiod_chip_get_line(chipprog, progoffset); + linereset = gpiod_chip_get_line(chipreset, priv->reset.offset); + lineprog = gpiod_chip_get_line(chipprog, priv->prog.offset); if (!linereset || !lineprog) { ERROR("Cannot get requested GPIOs: %d on %s and %d on %s", - resoffset, devreset, - progoffset, devprog); + priv->reset.offset, priv->reset.gpiodev, + priv->prog.offset, priv->prog.gpiodev); ret =-ENODEV; goto freegpios; } @@ -378,8 +379,7 @@ static int prepare_update(struct handler_priv *priv, char msg[128]; int len; - ret = switch_mode(priv->reset.gpiodev, priv->reset.offset, - priv->prog.gpiodev, priv->prog.offset, MODE_PROG); + ret = switch_mode(priv, MODE_PROG); if (ret < 0) { return -ENODEV; } From patchwork Fri Oct 20 12:33:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?QsO2cmdlIFN0csO8bXBmZWw=?= X-Patchwork-Id: 1852512 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=googlegroups.com header.i=@googlegroups.com header.a=rsa-sha256 header.s=20230601 header.b=Y+GWm84I; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=M98+pRzj; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=googlegroups.com (client-ip=2a00:1450:4864:20::13f; helo=mail-lf1-x13f.google.com; envelope-from=swupdate+bncbdxz3sol6amrbiphzguqmgqe2havtvq@googlegroups.com; receiver=patchwork.ozlabs.org) Received: from mail-lf1-x13f.google.com (mail-lf1-x13f.google.com [IPv6:2a00:1450:4864:20::13f]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4SBkXR56btz23jq for ; Fri, 20 Oct 2023 23:33:43 +1100 (AEDT) Received: by mail-lf1-x13f.google.com with SMTP id 2adb3069b0e04-507c5327cabsf1114626e87.1 for ; Fri, 20 Oct 2023 05:33:43 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1697805219; cv=pass; d=google.com; s=arc-20160816; b=FPNygtZ+iwCOU0X+SfyYkKcQyufgA8iMSFZK462hSHRzMFZQfIjHsjapJ04v2bq8Th NDfbartTKuySi/TkIC0qi6az3mVfoNmPY2DFdrW6m6Be9b+YHizDuIDc+VSb7viuWDAf L27KdGakvBBeaDX6MpltNXmF4YFUaQMdODzKeeJNE8MNKo5v27q1BeMjHmsHfo38BzLf ivDNI0YjkHu6Rr5h1dKpiDg8Rg86xR0WbTi688+mb9EQXIQqZCbClwZ0jin4b5av3Wg/ Hxhg2rtSIAVq3mTh27pVjWWQc4tnLt71TEXhVB9uyMtoqaNnSEjoE1VXmH0seS03YVF1 PPuw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:dkim-signature :dkim-signature; bh=8Sz/2EtDKk7QhPP0rxLcIEnRQLP0ZSS0eDJ5MJuIw6o=; fh=ZW2kvPqyWkPRSWvoMc2R6zaAWiAWPTkyocNi+jZr5nQ=; b=xCq7wchFHtSE42oZeNAvV7XN+SUdxjkAkspz2bLOeMt3USFf9gxK0ovhdGfbfO57lP gqHCEPwya//eyn7ypiUob9266G+oJaDhoSLiauXG0ezZV5FVfBZekErM6zCOmS4RqX/t XWQ9ueYjwMkF5qD1U5ewbKc0o3+Ie7ODDUBM3Y9LotJbSCYVzpWxggCzc4h2B1NEn0gs z6VDE+EI8tDdsrwPIKBrIeqx8zZFOja8IAKQs4JLsp0TjwziGujr4gxGHkNP/Iy60nq/ SDv01R2WAlYk8YrqJqXfJOonTyL8Z32VCGj/+68N58u6Vr9uYlmTMa+cieIvcy3N2ce3 qTbg== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=X0JABHZw; spf=pass (google.com: domain of boerge.struempfel@gmail.com designates 2a00:1450:4864:20::631 as permitted sender) smtp.mailfrom=boerge.struempfel@gmail.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20230601; t=1697805219; x=1698410019; darn=patchwork.ozlabs.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:sender:from:to:cc:subject:date:message-id :reply-to; bh=8Sz/2EtDKk7QhPP0rxLcIEnRQLP0ZSS0eDJ5MJuIw6o=; b=Y+GWm84IPuaBvzMJ9pIwbcEI8x3Uv+hx2UP9Ipnfy0P8RPCRY2ueJXnCQt7Y1LDv/u L0wbNT8W7/IEBEiVjI8rfmYF8Uq/H2o44AY9EgVZuLaeIcth/RhCWNwD4ihN6EtIeFaU 6fLQLsv1nFWqiai5LksgSaU3cR5mjIWJZeZlda4hRnHulq/Yn+QeE/4Yx188zyFVeEnR 7ND9IRQHh+eWiKqRseI45PBdnx90PGO8IL0xbIQnvK6qechjzkQjBxyjQkt+NSB6PTnK 8oir4OqttWUksgKF9Sxn0aRJMpEQkQGGJl0zwBWxP4yr+lXCSL0epV2ttXgNpWyoQYZy e3Kg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697805219; x=1698410019; darn=patchwork.ozlabs.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=8Sz/2EtDKk7QhPP0rxLcIEnRQLP0ZSS0eDJ5MJuIw6o=; b=M98+pRzj2vp1/Sybdt9TX+g1Yy9Z1XpvfhJRMtaKjjVZQy82Al6IoIHz2gvtiuAioK R+XTJSc1DZNgPrJ30SmPol+YufvnOfRkBc3rsySXW0xZEYiWUFGsGiuhOs/ikWTOMwSH DuQpiN7Zegs2krOngZDISZvv4pSYC+WBHCj06YcpkOutVAbDY4yEqHitmnCC1QxNEJOK o6vuXemjLdSq8bphhwjzStjYfe92x5PDNy9iD+Nf+6/nMHLvQXXnNw5ziGVS06NuVCx2 4/2gmLD9PD9rJIcg0Js7seF31+JAfrXkbRj0zE0D8SciS9Em6c1fsBssV6uW+LhYaopw sW1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697805219; x=1698410019; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :x-beenthere:x-gm-message-state:sender:from:to:cc:subject:date :message-id:reply-to; bh=8Sz/2EtDKk7QhPP0rxLcIEnRQLP0ZSS0eDJ5MJuIw6o=; b=oCb0BqrporxN+aUzSdCRV5QCilObjC7go3wAq8l2kcPCZI+9Ylj2r2lQZo0DQsQlkH 58n1EcZcDD1AT5L7Ku6AEycQvoddVtW8DjrZ86grMt+Spu3M0cBdhi8ryhFmqPdqRIBK ItI4eFc91PXw5zbf7JOmBwk41G3sNGuQsHMqG+lPaf7P1NOLn2mFVernzZqZSp5Xz5x4 i5nMWTeYRxTqur6GRcxIJOeqpp8d/DReXqLSG/27PS8ZzLofKBdgtCM5QpW12zUwYRJu ldvhdLn/+oiONJWR3/I/YhkugZrhW2p9fIPCjFx0ZfA7mXluzQ5LR3Ej3FTaJNP1+D0G rNeg== Sender: swupdate@googlegroups.com X-Gm-Message-State: AOJu0YweQlVvSU+EjYNIfM0r20SetpEUVXFrcfAQpqMOs0NHb2mAp5he d1Mpi3kejcYI6iCmmlRpNYA= X-Google-Smtp-Source: AGHT+IFELcBcbwYfRRz72JM8FJC6a96RXhdODyJrIsILMXyqckLUbgHvvG4+68NvPBV50uWxqpDZiQ== X-Received: by 2002:a19:9105:0:b0:500:a93d:fc78 with SMTP id t5-20020a199105000000b00500a93dfc78mr604410lfd.31.1697805218234; Fri, 20 Oct 2023 05:33:38 -0700 (PDT) X-BeenThere: swupdate@googlegroups.com Received: by 2002:a05:6512:6c3:b0:507:98a4:993b with SMTP id u3-20020a05651206c300b0050798a4993bls289003lff.1.-pod-prod-00-eu; Fri, 20 Oct 2023 05:33:36 -0700 (PDT) X-Received: by 2002:a05:6512:2826:b0:501:ba04:f352 with SMTP id cf38-20020a056512282600b00501ba04f352mr1552025lfb.1.1697805215948; Fri, 20 Oct 2023 05:33:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697805215; cv=none; d=google.com; s=arc-20160816; b=cvr970ZSpBcouV37mfHhwKCcQmBYy0x8O2T+nUtWPNCgLaYQNzTqi2WASMFFSwbSCL EcIcqBFn5vWCYABMsrDBnM9igcabR52hhHE9Wb2AkgpRWWwbIEZv44GIraveO8oHsVhV 4wD4jy4z9t4slKdnGT5b7XeAHmyPzoFYDY61mAS4J9SumASxuS3Y3dW4KNISWr2ZsCbT sii8WBOMdTnm/OLMLUkzhmsucgNrMgompyxH2mYPp8dRHH7TICymQ2BzQ1u2cddhX5/i WT8jCHWCDONrow/MJ5LszfJbCbvg0OMvbnpYZRnxa/w0fp3XCncNIfSe/13jspFnFbDM 1oUA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=e8diNPo94P8ll5t24BPDx0kAAo7SvV9s44OMG8OoiJw=; fh=ZW2kvPqyWkPRSWvoMc2R6zaAWiAWPTkyocNi+jZr5nQ=; b=hb4jir79/IwTwzb/Md5AyfeLhbQ3aSoSrpIbQJLAB5b1HCqHgvOeIv5YWdiYDsnog5 /q5yUFP+YG7eFEZXlMU+2JpgwNlgqd+X9fgywguQiriWigYgzAOP6l97wl1ntN7NM5BC eaZMeSnPRKfDpLn9300Omx/wgo/118vdrNY4mVg5AlhvVKUYIejBHboe7dF8Aw/Svcq7 5+ig+zToSiTvtfZ5ESeTMTopGiEIxZ/aCOxgCVyqqgOZbAAlt5QxDy+AY+wRxvo7yujx n8M4Mz9xoC0ukNzZ18GTxHRBNzaKFBi8ipYgJR2+SDZ0IKhUAhB6dAN4eby94AO+HpyX e0eQ== ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=X0JABHZw; spf=pass (google.com: domain of boerge.struempfel@gmail.com designates 2a00:1450:4864:20::631 as permitted sender) smtp.mailfrom=boerge.struempfel@gmail.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from mail-ej1-x631.google.com (mail-ej1-x631.google.com. [2a00:1450:4864:20::631]) by gmr-mx.google.com with ESMTPS id o19-20020a056512231300b004ffa23b6e2asi60957lfu.5.2023.10.20.05.33.35 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 20 Oct 2023 05:33:35 -0700 (PDT) Received-SPF: pass (google.com: domain of boerge.struempfel@gmail.com designates 2a00:1450:4864:20::631 as permitted sender) client-ip=2a00:1450:4864:20::631; Received: by mail-ej1-x631.google.com with SMTP id a640c23a62f3a-9adb9fa7200so170795166b.0 for ; Fri, 20 Oct 2023 05:33:35 -0700 (PDT) X-Received: by 2002:a17:907:d1b:b0:9a1:aaae:8207 with SMTP id gn27-20020a1709070d1b00b009a1aaae8207mr4685592ejc.20.1697805215140; Fri, 20 Oct 2023 05:33:35 -0700 (PDT) Received: from wslxew193.fritz.box (p200300c78721530013481e3cc3df2555.dip0.t-ipconnect.de. [2003:c7:8721:5300:1348:1e3c:c3df:2555]) by smtp.gmail.com with ESMTPSA id w21-20020a170907271500b009ad81554c1bsm1392916ejk.55.2023.10.20.05.33.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Oct 2023 05:33:34 -0700 (PDT) From: Boerge Struempfel To: Cc: boerge.struempfel@gmail.com, bstruempfel@ultratronik.de, anaumann@ultratronik.de, jkleintje@ultratronik.de, swupdate@googlegroups.com Subject: [swupdate] [PATCH 2/4] ucfw: Save the gpio chip and lines in gpio structure Date: Fri, 20 Oct 2023 14:33:13 +0200 Message-ID: <20231020123320.82500-3-boerge.struempfel@gmail.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231020123320.82500-1-boerge.struempfel@gmail.com> References: <20231020123320.82500-1-boerge.struempfel@gmail.com> MIME-Version: 1.0 X-Original-Sender: boerge.struempfel@gmail.com X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=X0JABHZw; spf=pass (google.com: domain of boerge.struempfel@gmail.com designates 2a00:1450:4864:20::631 as permitted sender) smtp.mailfrom=boerge.struempfel@gmail.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Precedence: list Mailing-list: list swupdate@googlegroups.com; contact swupdate+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: swupdate@googlegroups.com X-Google-Group-Id: 605343134186 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , This is a prerequisite for splitting the switch_mode function into a the initialization phase, the actual mode-setting phase and then a cleanup phase. Signed-off-by: Boerge Struempfel --- handlers/ucfw_handler.c | 43 ++++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/handlers/ucfw_handler.c b/handlers/ucfw_handler.c index 5bf23c0..6b986f5 100644 --- a/handlers/ucfw_handler.c +++ b/handlers/ucfw_handler.c @@ -91,6 +91,8 @@ struct mode_setup { char gpiodev[SWUPDATE_GENERAL_STRING_SIZE]; unsigned int offset; bool active_low; + struct gpiod_chip *chip; + struct gpiod_line *line; }; enum { @@ -109,30 +111,27 @@ struct handler_priv { unsigned int nbytes; }; - static int switch_mode(struct handler_priv *priv, int mode) { - struct gpiod_chip *chipreset, *chipprog; - struct gpiod_line *linereset, *lineprog; int ret = 0; int status; - chipreset = gpiod_chip_open(priv->reset.gpiodev); + priv->reset.chip = gpiod_chip_open(priv->reset.gpiodev); if (strcmp(priv->reset.gpiodev, priv->prog.gpiodev)) - chipprog = gpiod_chip_open(priv->prog.gpiodev); + priv->prog.chip = gpiod_chip_open(priv->prog.gpiodev); else - chipprog = chipreset; + priv->prog.chip = priv->reset.chip; - if (!chipreset || !chipprog) { + if (!priv->reset.chip || !priv->prog.chip) { ERROR("Cannot open gpio driver"); ret =-ENODEV; goto freegpios; } - linereset = gpiod_chip_get_line(chipreset, priv->reset.offset); - lineprog = gpiod_chip_get_line(chipprog, priv->prog.offset); + priv->reset.line = gpiod_chip_get_line(priv->reset.chip, priv->reset.offset); + priv->prog.line = gpiod_chip_get_line(priv->prog.chip, priv->prog.offset); - if (!linereset || !lineprog) { + if (!priv->reset.line || !priv->prog.line) { ERROR("Cannot get requested GPIOs: %d on %s and %d on %s", priv->reset.offset, priv->reset.gpiodev, priv->prog.offset, priv->prog.gpiodev); @@ -140,13 +139,13 @@ static int switch_mode(struct handler_priv *priv, int mode) goto freegpios; } - status = gpiod_line_request_output(linereset, RESET_CONSUMER, 0); + status = gpiod_line_request_output(priv->reset.line, RESET_CONSUMER, 0); if (status) { ret =-ENODEV; ERROR("Cannot request reset line"); goto freegpios; } - status = gpiod_line_request_output(lineprog, PROG_CONSUMER, mode); + status = gpiod_line_request_output(priv->prog.line, PROG_CONSUMER, mode); if (status) { ret =-ENODEV; ERROR("Cannot request prog line"); @@ -156,22 +155,27 @@ static int switch_mode(struct handler_priv *priv, int mode) /* * A reset is always done */ - gpiod_line_set_value(linereset, 0); + gpiod_line_set_value(priv->reset.line, 0); /* Set programming mode */ - gpiod_line_set_value(lineprog, mode); + gpiod_line_set_value(priv->prog.line, mode); usleep(20000); /* Remove reset */ - gpiod_line_set_value(linereset, 1); + gpiod_line_set_value(priv->reset.line, 1); usleep(20000); freegpios: - if (chipreset) gpiod_chip_close(chipreset); - if (chipprog && (chipprog != chipreset)) gpiod_chip_close(chipprog); - + if (priv->prog.chip && (priv->prog.chip != priv->reset.chip)){ + gpiod_chip_close(priv->prog.chip); + priv->reset.chip = NULL; + } + if (priv->reset.chip) { + gpiod_chip_close(priv->reset.chip); + priv->reset.chip = NULL; + } return ret; } @@ -449,8 +453,7 @@ static int finish_update(struct handler_priv *priv) int ret; close(priv->fduart); - ret = switch_mode(priv->reset.gpiodev, priv->reset.offset, - priv->prog.gpiodev, priv->prog.offset, MODE_NORMAL); + ret = switch_mode(priv, MODE_NORMAL); if (ret < 0) { return -ENODEV; } From patchwork Fri Oct 20 12:33:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?QsO2cmdlIFN0csO8bXBmZWw=?= X-Patchwork-Id: 1852513 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=googlegroups.com header.i=@googlegroups.com header.a=rsa-sha256 header.s=20230601 header.b=wBb0uNqV; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=CebQaPWe; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=googlegroups.com (client-ip=2a00:1450:4864:20::239; helo=mail-lj1-x239.google.com; envelope-from=swupdate+bncbdxz3sol6amrbi7hzguqmgqemvxemri@googlegroups.com; receiver=patchwork.ozlabs.org) Received: from mail-lj1-x239.google.com (mail-lj1-x239.google.com [IPv6:2a00:1450:4864:20::239]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4SBkXT38ysz20cX for ; Fri, 20 Oct 2023 23:33:45 +1100 (AEDT) Received: by mail-lj1-x239.google.com with SMTP id 38308e7fff4ca-2c5032ab59esf6905671fa.3 for ; Fri, 20 Oct 2023 05:33:45 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1697805221; cv=pass; d=google.com; s=arc-20160816; b=Qc/qgrcN3cVre5RS6hTsmUKtw1gF6OhI5F/L5SH7Hj0xNvFKwM7xwMzb9N1JTogPYW ROUOAzRyoA/dk1MKWoQuec84GcIOf1OzUkx28/6HxUrUlu6NLDR8pdHcOkICK0nWY4mq eGQHgWvipzI4IUlJQoyC65OdFZmh3Mf5VFaUanzwc2MQuxvYgKWOg9+NPzvR4fFsfuzu AliUl2eMgTmCdT+jvFwWoSwM8Tz2/ekO1HHUX/f5ef3nvkTCWspuinv/dKFR1PZXIaKM Mq/EqItqwMkB5LD8aq5XTgh+AnTEL1XVm2+piShSK9f/csg+dkEk0Uyh7qOUWFQcraum TkFA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:dkim-signature :dkim-signature; bh=kieSJC38AbyiBqxnloKewGw6n8M7NnZI2wHSwK3N76Q=; fh=ZW2kvPqyWkPRSWvoMc2R6zaAWiAWPTkyocNi+jZr5nQ=; b=A0AWVZvKgln3TFD3fXqB+jp3ohfRL8QeAKdPvlyoGwWomR8XOtAXzUAdELmF/9D9Zq D6AL0nmvnWYz62aaWF66F/gFet2X+UE4af5cKzTkjEQvIk1CtWnQQVJ0HFoC4xXtVW3G V6LSAYzHdFXNwD7ppE38YQQ9qo+QGjP9NEuHFZ4jWQP+Mvcx44dD1XdT+4Kyw4AZ4OGX Or/ctqrRkFQGsJhOdcpnoJNPuq2EWlizAL9Uu6DMiNAGm1TyYyb01Ih982KKUtZY4WNx +lFd1dGJk96c/xx5hjHmalzc5mo4tGKqyUMprunfbIf4gIikdkHHWWtDz9wjVEa4umIv fASw== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=cyTNISsJ; spf=pass (google.com: domain of boerge.struempfel@gmail.com designates 2a00:1450:4864:20::630 as permitted sender) smtp.mailfrom=boerge.struempfel@gmail.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20230601; t=1697805221; x=1698410021; darn=patchwork.ozlabs.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:sender:from:to:cc:subject:date:message-id :reply-to; bh=kieSJC38AbyiBqxnloKewGw6n8M7NnZI2wHSwK3N76Q=; b=wBb0uNqVlbnwjztB4cCMizHMrER0qeZTaPfOdtuXzLdA9if8eiwnjmIJInUgPPX/5s VmQQElf13WCiX1ARH7oIHpI5LNr/ZqHJFUUlqNCGa5GllbGSZx/zCgORXHm13lODsKNA 6FzGjcNNQT0zPKQNcZv4mavD0k1WoxqDc2w8ZEsuGRo8HYNT+C6XnwqO57NkH1SM5iLa 9Gi6SFTMDKiCNsvtW8ZsGfd6861mL4BYyv7COc5BxbidYVXIKKiHx5hja6XGLB8Iv+R4 g0jsAm5iDhLNttwYtrMcrCikf1v8sZcbJyuHtnBTJgC4Lx4s/EeHMHDdYTacVFkzu/7F BYgw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697805221; x=1698410021; darn=patchwork.ozlabs.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=kieSJC38AbyiBqxnloKewGw6n8M7NnZI2wHSwK3N76Q=; b=CebQaPWeqs3LO7QpOC+fmwWptaSssUN+iE8fiaa4zjjjDfcJPCjSRk4VpKdUz5cqXt 1WxkvabNvDEzj9JKGccC4rzrllm1mVD1zXyWCnhrjMWSsLQhU5bHsd8+Ef61EI4QcMGT JTx8nx25Gq/GwX6WyvhF/NCm5W0BoM+zHHSUCY78HluIghaVUrwgeej3R6nQF8/Botsb n8QyYG+99zktoASXC13ZUry6NHS1jtA1r4WUn7BPVhoyBc2Gfbszgku1amgGxzkm5mOY 8miSVyr1h624xAAE1g1k+NcPJ++Ksm7kg3HHDZ+AAvdMFaIA0mylFDR7QEg8nEEvl/YF 1A6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697805221; x=1698410021; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :x-beenthere:x-gm-message-state:sender:from:to:cc:subject:date :message-id:reply-to; bh=kieSJC38AbyiBqxnloKewGw6n8M7NnZI2wHSwK3N76Q=; b=i+DcW1tzX8eK5Dlx1RnMzQb9LCKnqFmWVqSKVdVFR3DJebXCTf2cZlTrlXb2rNt+Tq yi4nuYE7/bq5E7QYcLNf8rtneFuziZGJ8M3nHdCIjWp9bjjaVA7OyLePf7AFsXxESnGz hLfpqiFTST4btRTeIf8406ihwPF/v4muWtyIGTdBcUJidGvD8dcM2UyRSBwW8Vy4D2kd 7EMT7cmFnG4fkwr3J/WnKg6p+1yv0ZNyL7V9GNN+xBoytbgko1SI5AmJ7PL16ASHvMiG 8NrZxTiJQ8S9GSMCHSoL+qkEm9je48Yc8KGpA88YYpzRzq4w07IFDP2kJvGkxseSGy0w 6duQ== Sender: swupdate@googlegroups.com X-Gm-Message-State: AOJu0YzRlmfr+L/rodGS7xAdK92T56IfqFB/AmEu7RIb4bSV8/3OFrjd 9mEiiMHsAhGNH2B7NvCM/hY= X-Google-Smtp-Source: AGHT+IEXqIO52hXNju1DVgLfJ3Kb8RZ3RhOL22RXqRAauosayL8NyGhfTPlZ1wXFk6KhvCut31heSQ== X-Received: by 2002:a2e:b896:0:b0:2c5:488c:aedf with SMTP id r22-20020a2eb896000000b002c5488caedfmr1462678ljp.37.1697805220469; Fri, 20 Oct 2023 05:33:40 -0700 (PDT) X-BeenThere: swupdate@googlegroups.com Received: by 2002:a2e:a4c9:0:b0:2bf:f477:1991 with SMTP id p9-20020a2ea4c9000000b002bff4771991ls517710ljm.2.-pod-prod-01-eu; Fri, 20 Oct 2023 05:33:38 -0700 (PDT) X-Received: by 2002:a2e:99c2:0:b0:2c5:1bbd:37c3 with SMTP id l2-20020a2e99c2000000b002c51bbd37c3mr1255392ljj.13.1697805218186; Fri, 20 Oct 2023 05:33:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697805218; cv=none; d=google.com; s=arc-20160816; b=loWAoz7C0n5LvqLLRnOmxFDN+r7Q+5Q0HZUNWslzGStIPRIvJb5SNPzQsX3rpXS00y qKMrrr067xRLVwXL2kmW2fZTLTGJQaX0HtEuay6s2cchrLjAZ9AxPcFYrszbTI0vA1Ju MDWOZ0wOK3roijzPRgikquWc/CLWy4ZqNJPsEqiOJfZ8upY5EIRMmps+u4b0IGFkotdq ovWvAn5xP94ArSHjP8ky5fGBhdrQxk+eDwEF+8pPshpNQMvE8JzBxI5jBWOu09McjVgJ uio+c240prmsfC06dnc1hsvjIAZpuyK3Wzd98+SXDSMIUYy3IyIYNjAY1sgKWFkpAZOm Tccg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=Z6ty6Hat0TOiOD9MAagD0CWLWLMHInis067cAI1XoAw=; fh=ZW2kvPqyWkPRSWvoMc2R6zaAWiAWPTkyocNi+jZr5nQ=; b=jzE9bVrcE9eNEMcseflglBBUQmOo75D8LmpuNAt49zzlj0HkCbXL5cm1pN78b3AcjG LrlvbV+Kjc+p6PVzkMf+6dam76cpdIj+XsunlLs0H6zsJyoLqkmb9/ecBaAkML5xgtEo fYFn/8ZyCpqH8q+rSBP6cWW8/cvhEHj6OsdA3Wta7Ruh+IkhbcSdXXZajh4EgD9q/oft kXEWCGBPPNv3LksbT9NbGuaVSNfZeTtdWxIdA+2zk6jHmnj+ojXVM+1b53LpHoGt5QyJ gVtP5XTawHMhG3D15YsSgUdwh+NH5PE0sXDBe5UM4zMM38eAAJUTyByXqgGkoVMz9+uF paRQ== ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=cyTNISsJ; spf=pass (google.com: domain of boerge.struempfel@gmail.com designates 2a00:1450:4864:20::630 as permitted sender) smtp.mailfrom=boerge.struempfel@gmail.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from mail-ej1-x630.google.com (mail-ej1-x630.google.com. [2a00:1450:4864:20::630]) by gmr-mx.google.com with ESMTPS id hn6-20020a05600ca38600b00401df7502b6si163247wmb.1.2023.10.20.05.33.38 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 20 Oct 2023 05:33:38 -0700 (PDT) Received-SPF: pass (google.com: domain of boerge.struempfel@gmail.com designates 2a00:1450:4864:20::630 as permitted sender) client-ip=2a00:1450:4864:20::630; Received: by mail-ej1-x630.google.com with SMTP id a640c23a62f3a-9a6190af24aso128319766b.0 for ; Fri, 20 Oct 2023 05:33:38 -0700 (PDT) X-Received: by 2002:a17:907:1c0b:b0:9be:45b3:1c3c with SMTP id nc11-20020a1709071c0b00b009be45b31c3cmr1359322ejc.64.1697805217453; Fri, 20 Oct 2023 05:33:37 -0700 (PDT) Received: from wslxew193.fritz.box (p200300c78721530013481e3cc3df2555.dip0.t-ipconnect.de. [2003:c7:8721:5300:1348:1e3c:c3df:2555]) by smtp.gmail.com with ESMTPSA id w21-20020a170907271500b009ad81554c1bsm1392916ejk.55.2023.10.20.05.33.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Oct 2023 05:33:36 -0700 (PDT) From: Boerge Struempfel To: Cc: boerge.struempfel@gmail.com, bstruempfel@ultratronik.de, anaumann@ultratronik.de, jkleintje@ultratronik.de, swupdate@googlegroups.com Subject: [swupdate] [PATCH 3/4] ucfw: Refactored gpio handling Date: Fri, 20 Oct 2023 14:33:14 +0200 Message-ID: <20231020123320.82500-4-boerge.struempfel@gmail.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231020123320.82500-1-boerge.struempfel@gmail.com> References: <20231020123320.82500-1-boerge.struempfel@gmail.com> MIME-Version: 1.0 X-Original-Sender: boerge.struempfel@gmail.com X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=cyTNISsJ; spf=pass (google.com: domain of boerge.struempfel@gmail.com designates 2a00:1450:4864:20::630 as permitted sender) smtp.mailfrom=boerge.struempfel@gmail.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Precedence: list Mailing-list: list swupdate@googlegroups.com; contact swupdate+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: swupdate@googlegroups.com X-Google-Group-Id: 605343134186 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , This commit splits the switch_mode function into the gpio-initialization, the actual mode switch and the cleanup phases. This is mainly done in order to prepare for adding gpiolib v2 api capability but has the added advantage, that the gpios are no longer released during the update, which for one prevents the gpios from floating, and for another, stops other processes from taking over the pins during an update phase. Signed-off-by: Boerge Struempfel --- handlers/ucfw_handler.c | 60 ++++++++++++++++++++++++++++++----------- 1 file changed, 45 insertions(+), 15 deletions(-) diff --git a/handlers/ucfw_handler.c b/handlers/ucfw_handler.c index 6b986f5..0296f17 100644 --- a/handlers/ucfw_handler.c +++ b/handlers/ucfw_handler.c @@ -111,8 +111,18 @@ struct handler_priv { unsigned int nbytes; }; -static int switch_mode(struct handler_priv *priv, int mode) -{ +static void free_gpios(struct handler_priv *priv) { + if (priv->prog.chip && (priv->prog.chip != priv->reset.chip)){ + gpiod_chip_close(priv->prog.chip); + priv->reset.chip = NULL; + } + if (priv->reset.chip) { + gpiod_chip_close(priv->reset.chip); + priv->reset.chip = NULL; + } +} + +static int register_gpios(struct handler_priv *priv){ int ret = 0; int status; @@ -145,37 +155,51 @@ static int switch_mode(struct handler_priv *priv, int mode) ERROR("Cannot request reset line"); goto freegpios; } - status = gpiod_line_request_output(priv->prog.line, PROG_CONSUMER, mode); + status = gpiod_line_request_output(priv->prog.line, PROG_CONSUMER, 0); if (status) { ret =-ENODEV; ERROR("Cannot request prog line"); goto freegpios; } + return ret; +freegpios: + free_gpios(priv); + return ret; +} + +static int switch_mode(struct handler_priv *priv, int mode) +{ + int ret = 0; + if (!priv->reset.line || !priv->prog.line) return -ENODEV; + /* * A reset is always done */ - gpiod_line_set_value(priv->reset.line, 0); + ret = gpiod_line_set_value(priv->reset.line, 0); + if (ret){ + ERROR("unable to set reset to 0"); + return ret; + } /* Set programming mode */ - gpiod_line_set_value(priv->prog.line, mode); + ret = gpiod_line_set_value(priv->prog.line, mode); + if (ret){ + ERROR("unable to set prog to %i",mode); + return ret; + } usleep(20000); /* Remove reset */ - gpiod_line_set_value(priv->reset.line, 1); + ret = gpiod_line_set_value(priv->reset.line, 1); + if (ret){ + ERROR("unable to set reset to 1"); + return ret; + } usleep(20000); -freegpios: - if (priv->prog.chip && (priv->prog.chip != priv->reset.chip)){ - gpiod_chip_close(priv->prog.chip); - priv->reset.chip = NULL; - } - if (priv->reset.chip) { - gpiod_chip_close(priv->reset.chip); - priv->reset.chip = NULL; - } return ret; } @@ -383,6 +407,11 @@ static int prepare_update(struct handler_priv *priv, char msg[128]; int len; + ret = register_gpios(priv); + if (ret < 0) { + return -ENODEV; + } + ret = switch_mode(priv, MODE_PROG); if (ret < 0) { return -ENODEV; @@ -454,6 +483,7 @@ static int finish_update(struct handler_priv *priv) close(priv->fduart); ret = switch_mode(priv, MODE_NORMAL); + free_gpios(priv); if (ret < 0) { return -ENODEV; } From patchwork Fri Oct 20 12:33:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?QsO2cmdlIFN0csO8bXBmZWw=?= X-Patchwork-Id: 1852514 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=googlegroups.com header.i=@googlegroups.com header.a=rsa-sha256 header.s=20230601 header.b=tfbhIkv6; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=YnEPAIzl; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=googlegroups.com (client-ip=2a00:1450:4864:20::23b; helo=mail-lj1-x23b.google.com; envelope-from=swupdate+bncbdxz3sol6amrbjxhzguqmgqeg3rrzii@googlegroups.com; receiver=patchwork.ozlabs.org) Received: from mail-lj1-x23b.google.com (mail-lj1-x23b.google.com [IPv6:2a00:1450:4864:20::23b]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4SBkXW1bLfz20cX for ; Fri, 20 Oct 2023 23:33:47 +1100 (AEDT) Received: by mail-lj1-x23b.google.com with SMTP id 38308e7fff4ca-2c50234741esf5814431fa.1 for ; Fri, 20 Oct 2023 05:33:46 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1697805223; cv=pass; d=google.com; s=arc-20160816; b=v8wf2Ay8uRl7K6lGLsLlztEDlU+5WxQBDVFpaGdT6Yofs1lG4N0zHI0kmBOEr3QkKI X3xWYxgBlYf/WlA/wtncYv/eiw+qvGLY8z8hn3SFvLcF5eV0lC+qsyfzEx2RcPWMRg4/ 8aPQWf+6U8tBqoZaz93awmBixh+WMIMKH8p5qeADUFlOJoU6EnUn+JM13BWqBImgkqAS YtM1ZgQ1LvVA8UHFzoFAfAngm/Q+UbL/eEIXRmWGRHt4xVnyAaCvS77pKJ3j9Iom36OH 55hgzCgBjtkd/HdlACkWri9JXlnlhyVFJo3AKiUOh2yZGtXaboM7JIDXfWDn/sgPV7bI fDwg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:dkim-signature :dkim-signature; bh=4qcoQoI0jdnx1yh+yKmISTFFRgYpB0j1Ha1IgAKSMG4=; fh=ZW2kvPqyWkPRSWvoMc2R6zaAWiAWPTkyocNi+jZr5nQ=; b=N2ucnNKgUpwkzBmRJe/+vxcxRri+FyT7TTNES7jL4fldcehTQyGVhOZk3VhwUsHrXA zCQ1AQITTJ++K1y3ns7MCeXeWPP1PfdN2tnnzAkUeEz8CZ9/M44dktZeLGocuJE6E/fJ x1cSxo2KEUttk+Eu8hys/SbMYwyNqHsyrLYomGyOEz1wZJrmuxBcnJaAdmMBR0u9s7mA FOvNdP/JtqzVIlQyM3Z2L4qkwR3dtiJ3+ReevheXSe74haj9nwW50cfu/54wfmOHzHBM 3emKyJIgAqi9viD/+GAS6kKlEQsZLSNk7yHOdRnoFDKWIKL8QEO5czSOYSdl+EF9z9qA bVMA== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=ltkvl72f; spf=pass (google.com: domain of boerge.struempfel@gmail.com designates 2a00:1450:4864:20::62b as permitted sender) smtp.mailfrom=boerge.struempfel@gmail.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20230601; t=1697805223; x=1698410023; darn=patchwork.ozlabs.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:sender:from:to:cc:subject:date:message-id :reply-to; bh=4qcoQoI0jdnx1yh+yKmISTFFRgYpB0j1Ha1IgAKSMG4=; b=tfbhIkv60UBVvW60agvlY5gDJSCszrRLitB4gp4HjLDe/YWMoqKOjvTkwrT6fwvisv yk79ozp3Lsd7zOteQmBd6Cq0xlVk4QD46Xowr58LAUbs4MSE7eWpg2uLdOMqLcivx1+Y lsgpVjY92Ht75UuM7qH5/mRbfsoGsjcpYpv8sRw4aNBc0LY97pO5VNEyVVUqCPMsO7U0 CA6lxfAy9xgdBJL9aOZKz+c9DR0EroPQ1YuCl9WiQgZ1VJ0EOtC0Im2NkhUTTfoTNsRy jTJ2KXPAXpAZZxqR5E7nj3Eujzp5jvCfQ8eQID1Wy5U1+s+GrXwXrOomfbO3hVhwGHvn Rwgg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697805223; x=1698410023; darn=patchwork.ozlabs.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=4qcoQoI0jdnx1yh+yKmISTFFRgYpB0j1Ha1IgAKSMG4=; b=YnEPAIzl0t8FxITM617jOTE42SJmUdXWMlz4II1Gr4X0Kcidqtl8lWed3p25ofB+To pKleXQiIYh8NdGw0SEo1U0QVBoHpK7NTVQ2VGnw9kHR+0SWRx1s9qOANR4S8aattbUo/ 6gN8EYvxoWR8SYht68JhhXb/Qy64hzBkuy+oDWSn44I8Hvbe1D/tesgD9XEL2wyBoqqX DUmvCtVKn5pgKWCWPo5fFfqwe83mDEzlhMXM28TSugU4o3L9loxB30QCvWKgxucO3Umz L7vUxG+7Zq1VFojSwathdfTONUZaB3BbTrLX5JguZbkzUpN2ou1G3H1+leUcniiaP37y XYoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697805223; x=1698410023; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :x-beenthere:x-gm-message-state:sender:from:to:cc:subject:date :message-id:reply-to; bh=4qcoQoI0jdnx1yh+yKmISTFFRgYpB0j1Ha1IgAKSMG4=; b=qkHZDXvsP6S/j1N7V3NNuIP3NOmxK4rzJQsIvUGEVINM8RatNip89lu4Gpn7tIKOkc TfQYMydwWgtHBn+Ffh2ZHSibYSEL0SOybw288KFy0vDLekqDVqc4rrPdoOW6nuNbjCZt +58mkOdLdNWNFgjDRcQelJOkERskwahgLYc5Dn5ZOhCcPkAqOJInuV/qJkPB1hfsAN9n Ipr1691qMW6bXBvym6kHEnJ7Y3nxMYjp0vfhOpoByDWMMp3RwbuDxunF+YY7gep0bUJN ewwEMhUQLvF7oDka9LSZ9CBfk0MkLumvxK9KQZ/ot/Q6WbJyHWNeVigV39XE6tbFeiH2 MXtg== Sender: swupdate@googlegroups.com X-Gm-Message-State: AOJu0YyHExU0OmEWT0Yu+fHtHpiGBvPJMDE9RIRI82wTYvxtcYV/7Lo5 nN97XIaeTWNNeN0lwozqS7I= X-Google-Smtp-Source: AGHT+IHfrGY/3x4OLgkFqfwHH92GyuYc3sn4Cnkryu4KCHogYEQSlyBXcf2uMtIQTVKOKl2t5FMYHA== X-Received: by 2002:a2e:b911:0:b0:2c5:2132:24f5 with SMTP id b17-20020a2eb911000000b002c5213224f5mr1143599ljb.53.1697805222729; Fri, 20 Oct 2023 05:33:42 -0700 (PDT) X-BeenThere: swupdate@googlegroups.com Received: by 2002:a2e:a0d2:0:b0:2c5:572:cbd6 with SMTP id f18-20020a2ea0d2000000b002c50572cbd6ls436337ljm.0.-pod-prod-09-eu; Fri, 20 Oct 2023 05:33:40 -0700 (PDT) X-Received: by 2002:a2e:8610:0:b0:2c5:6d8:8dfc with SMTP id a16-20020a2e8610000000b002c506d88dfcmr1227091lji.13.1697805220189; Fri, 20 Oct 2023 05:33:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697805220; cv=none; d=google.com; s=arc-20160816; b=HV2tuuRouLFjU25Yr5CftwuxNWRqCRMWScQ/iF8Xy8k3OpTwE6LYWyq+RGMZLGRcH3 69pQZ5wIOYCt6d5kyZT/o09ToE4BKF4gF+P6E1iv1vyUAiTQElbN1ii8orYLY4Ty6ciK 9iQrz15hoxzg3lTxFudE1lCu/a+cC3Wd7B042R7V42ZnRjNsE1UWA8ItjhBGYuPz0qen Shk9Lq/n6n5XczV8ryYJJVRhRgD5ix8T19RBGU1RbGwLPAUIYK/WhkW3J5Am5lolH7y9 SZrG/9HjbwG1AX8D5HebO9OaFb7l495XcWv7uY9vZ/PenGwFkhePGaNJ8Yw6aB5yd4h4 EyEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=8qjEtggWH5RO7seyqXLXsJHjfw4+mr0OxfiWZN/Y2Qk=; fh=ZW2kvPqyWkPRSWvoMc2R6zaAWiAWPTkyocNi+jZr5nQ=; b=d3nW+ibEirA6k38FZPXjqaYeFT5XGURuElQg+dJUXYdNUQvZTW52oJGg195L9+QV/Q UjX6KwkfgvfC9bBT7OQgYwMH+5o5HKIfNAi23jzblr89ZPUGk3TuAZayPYz58JyS7RDu 5tYAgpYw4cTTfnb+rAGO5Qq5CAJm2E6wpf84J3UyeRz3qr+drVqtcgzDIH1vy760yz7y hFBMY7Lrmf1XGQcYwbt4kvBiW5xcx/ctYDhrNT/GrtJqQl1ifg8tjHdkSEsXPsbKAnVw RARDwfh5dUZNaO2Y6HCPM3GXaxA9AySNXhHXoF8AOPhfNz4D62dC/LzgIV3/dCi/2FDL 9yLw== ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=ltkvl72f; spf=pass (google.com: domain of boerge.struempfel@gmail.com designates 2a00:1450:4864:20::62b as permitted sender) smtp.mailfrom=boerge.struempfel@gmail.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from mail-ej1-x62b.google.com (mail-ej1-x62b.google.com. [2a00:1450:4864:20::62b]) by gmr-mx.google.com with ESMTPS id p20-20020a2ea4d4000000b002c29b97d5f2si64655ljm.1.2023.10.20.05.33.40 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 20 Oct 2023 05:33:40 -0700 (PDT) Received-SPF: pass (google.com: domain of boerge.struempfel@gmail.com designates 2a00:1450:4864:20::62b as permitted sender) client-ip=2a00:1450:4864:20::62b; Received: by mail-ej1-x62b.google.com with SMTP id a640c23a62f3a-99bdeae1d0aso121145466b.1 for ; Fri, 20 Oct 2023 05:33:40 -0700 (PDT) X-Received: by 2002:a17:906:da82:b0:9ba:7f5:8cca with SMTP id xh2-20020a170906da8200b009ba07f58ccamr1410278ejb.20.1697805219532; Fri, 20 Oct 2023 05:33:39 -0700 (PDT) Received: from wslxew193.fritz.box (p200300c78721530013481e3cc3df2555.dip0.t-ipconnect.de. [2003:c7:8721:5300:1348:1e3c:c3df:2555]) by smtp.gmail.com with ESMTPSA id w21-20020a170907271500b009ad81554c1bsm1392916ejk.55.2023.10.20.05.33.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Oct 2023 05:33:38 -0700 (PDT) From: Boerge Struempfel To: Cc: boerge.struempfel@gmail.com, bstruempfel@ultratronik.de, anaumann@ultratronik.de, jkleintje@ultratronik.de, swupdate@googlegroups.com Subject: [swupdate] [PATCH 4/4] ucfw: Add compatibility with libgpiod v2 api Date: Fri, 20 Oct 2023 14:33:15 +0200 Message-ID: <20231020123320.82500-5-boerge.struempfel@gmail.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231020123320.82500-1-boerge.struempfel@gmail.com> References: <20231020123320.82500-1-boerge.struempfel@gmail.com> MIME-Version: 1.0 X-Original-Sender: boerge.struempfel@gmail.com X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=ltkvl72f; spf=pass (google.com: domain of boerge.struempfel@gmail.com designates 2a00:1450:4864:20::62b as permitted sender) smtp.mailfrom=boerge.struempfel@gmail.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Precedence: list Mailing-list: list swupdate@googlegroups.com; contact swupdate+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: swupdate@googlegroups.com X-Google-Group-Id: 605343134186 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , In order to detect the libgpiod api version, we use GPIOD_LINE_BULK_MAX_LINES, since this is only defined in v1 and not in v2. Signed-off-by: Boerge Struempfel --- handlers/ucfw_handler.c | 157 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) diff --git a/handlers/ucfw_handler.c b/handlers/ucfw_handler.c index 0296f17..ad33f05 100644 --- a/handlers/ucfw_handler.c +++ b/handlers/ucfw_handler.c @@ -80,6 +80,14 @@ #define PROG_CONSUMER RESET_CONSUMER #define DEFAULT_TIMEOUT 2 +/* + * Use GPIOD_LINE_BULK_MAX_LINES in order to determine, + * whether this is compiled using libgpio v1 or v2. + */ +#ifdef GPIOD_LINE_BULK_MAX_LINES +#define USE_GPIOD_API_V1 +#endif + void ucfw_handler(void); /* @@ -91,8 +99,12 @@ struct mode_setup { char gpiodev[SWUPDATE_GENERAL_STRING_SIZE]; unsigned int offset; bool active_low; +#ifdef USE_GPIOD_API_V1 struct gpiod_chip *chip; struct gpiod_line *line; +#else + struct gpiod_line_request *request; +#endif }; enum { @@ -111,6 +123,7 @@ struct handler_priv { unsigned int nbytes; }; +#ifdef USE_GPIOD_API_V1 static void free_gpios(struct handler_priv *priv) { if (priv->prog.chip && (priv->prog.chip != priv->reset.chip)){ gpiod_chip_close(priv->prog.chip); @@ -203,6 +216,150 @@ static int switch_mode(struct handler_priv *priv, int mode) return ret; } +#else +/* Implementation for LIBGPIOD V2 api*/ + +static void free_gpios(struct handler_priv *priv) { + if(priv->reset.request){ + gpiod_line_request_release(priv->reset.request); + priv->reset.request = NULL; + } + if(priv->prog.request){ + gpiod_line_request_release(priv->prog.request); + priv->prog.request = NULL; + } +} + +static int register_gpios(struct handler_priv *priv) { + struct gpiod_line_settings *settings; + struct gpiod_request_config *req_cfg; + struct gpiod_line_config *reset_cfg, *prog_cfg; + struct gpiod_chip *chip; + int ret = 0; + + settings = gpiod_line_settings_new(); + if (!settings) { + ERROR("Unable to allocate line settings"); + return -ENODEV; + } + gpiod_line_settings_set_direction(settings, GPIOD_LINE_DIRECTION_OUTPUT); + + req_cfg = gpiod_request_config_new(); + if (!req_cfg) { + ERROR("Unable to allocate the request config structure"); + ret =-ENODEV; + goto freesettings; + } + gpiod_request_config_set_consumer(req_cfg, RESET_CONSUMER); + + reset_cfg = gpiod_line_config_new(); + if (!reset_cfg) { + ERROR("Unable to allocate the reset line config structure"); + ret =-ENODEV; + goto freerequestconfig; + } + ret = gpiod_line_config_add_line_settings(reset_cfg, &priv->reset.offset, 1, settings); + if (ret) { + ERROR("Unable to add reset line settings"); + goto freeresetconfig; + } + + prog_cfg = gpiod_line_config_new(); + if (!prog_cfg) { + ERROR("Unable to allocate the prog line config structure"); + ret =-ENODEV; + goto freeresetconfig; + } + + ret = gpiod_line_config_add_line_settings(prog_cfg, &priv->prog.offset, 1, settings); + if (ret) { + ERROR("Unable to add reset line settings"); + goto freeprogconfig; + } + + TRACE("Request lines for reset"); + chip = gpiod_chip_open(priv->reset.gpiodev); + if (!chip) { + ERROR("Unable to open chip '%s'",priv->reset.gpiodev); + ret =-ENODEV; + goto freeprogconfig; + } + + priv->reset.request = gpiod_chip_request_lines(chip, req_cfg, reset_cfg); + gpiod_chip_close(chip); + if (!priv->reset.request) { + ERROR("Unable to request lines on chip '%s'", priv->reset.gpiodev); + goto freeprogconfig; + } + + TRACE("Request lines for prog"); + chip = gpiod_chip_open(priv->prog.gpiodev); + if (!chip) { + ERROR("Unable to open chip '%s'", priv->prog.gpiodev); + ret =-ENODEV; + goto freelinerequest; + } + + priv->prog.request = gpiod_chip_request_lines(chip, req_cfg, prog_cfg); + gpiod_chip_close(chip); + if (!priv->prog.request) { + ERROR("unable to request lines on chip '%s'", priv->prog.gpiodev); + ret =-ENODEV; + } + + goto freeprogconfig; // clean up everything except for the gpiod_line_requests + +freelinerequest: + gpiod_line_request_release(priv->reset.request); + priv->reset.request = NULL; +freeprogconfig: + gpiod_line_config_free(prog_cfg); +freeresetconfig: + gpiod_line_config_free(reset_cfg); +freerequestconfig: + gpiod_request_config_free(req_cfg); +freesettings: + gpiod_line_settings_free(settings); + return ret; +} + + +static int switch_mode(struct handler_priv *priv, int mode) +{ + + int ret = 0; + + /* + * A reset is always done + */ + ret = gpiod_line_request_set_value(priv->reset.request, priv->reset.offset, 0); + if (ret){ + ERROR("Unable to set reset to 0"); + return ret; + } + + /* Set programming mode */ + ret = gpiod_line_request_set_value(priv->prog.request, priv->prog.offset, mode); + if (ret){ + ERROR("Unable to set prog to %i", mode); + return ret; + } + + usleep(20000); + + /* Remove reset */ + ret = gpiod_line_request_set_value(priv->reset.request, priv->reset.offset, 1); + if (ret){ + ERROR("Unable to set reset to 1"); + return ret; + } + + usleep(20000); + + return ret; +} +#endif + static bool verify_chksum(char *buf, unsigned int *size) { int i;