From nobody Tue Dec 2 01:27:26 2025 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B95AB350D47 for ; Fri, 21 Nov 2025 16:09:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763741344; cv=none; b=E7gpYuPluhnwDaiUkDa3oXASp8nNXbbghdAP9W+ZdfANB3L3xEJgzQXUNRVYFBkzwj0NzlB8vwFStOngusjS60+j3DYXmohNW3FuPTd6TFsmTIDKFw7phBlCx6LZfeYRJX5AoqajZccVgF21FUbwoZ3tSIaZ+vtOepV1Ff1cn9w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763741344; c=relaxed/simple; bh=A0Ss2FjsUCOJF7j5tDObMG5r/Eb7H5jpKMO+13IpeQk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AjSags1vwMmIHi5meM0rg7xXwtFQ0kpuN0MQkwA5tcNFCVcj4q1yn+y3hGYURPoShbCIF02aAihr2W7Y5RqdsEeXkeet2GGGxKzPEYt+9iQLQM+L+cHYmE/rewxjJhcKTy0diKgnmD5G54n+sswhQ1zGCFuMrAjRC2pqKMzKdlE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=AYpu23TB; arc=none smtp.client-ip=209.85.128.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="AYpu23TB" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-477ba2c1ca2so21137855e9.2 for ; Fri, 21 Nov 2025 08:09:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763741335; x=1764346135; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=m+pSoQWtQTSE8J9RasiAG9yE97LqZssvT14IYVKYS4U=; b=AYpu23TBKaPJd29lbkS1a9JJuK5I8bnYNrXI2ApB/yny1Xs0V2qVEY8V/SM44oJ587 WC/ckuwblsPR5bKbDZff1Q6c275DDF8BhjQ2+K2VN3vjYgfMLF4fs9+2MG0ZxzwKy05C 6x5AEZTjqd15bGCSWtgTF5BJZ9PsBP0Csy+YW3KpivzZdDzKGBPfrH8uxQ9/bv+et66E av4sRdft1bO35ERXs5AUd8GSxRQr3Si2Gf+N09NfdHwbfDB6brLZE9AicKpN8djJWxwN RaI8Vce5afxrU/tdKjb3XoOkwpYu5beKiDX7cltcmvvzD7X9g4fvyjzUXzPz/2dJCWV7 LbXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763741335; x=1764346135; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=m+pSoQWtQTSE8J9RasiAG9yE97LqZssvT14IYVKYS4U=; b=YROVD+ObECDzbSTJj0LWgUhGbveFEWRcP0BSJThzAFNPc3+TkRoCA07OHUjzarblCM m+pHX3u1h2YLL5eIjqZbPcrXoPykG7ZWchsxvEtKUwOCWa2RJ5Y1stV9TBVhbNynyHzY n3pLPJ9eEWaAFD4YMamjHpTj0EAmXEKCrwRrj4tYq/A2/ji7TRtIfqf6Fe9lExCvDxsZ /eWgrCVe1PkVGwR3aB0b8vvIHf0yVF+KI7Mdgw4Ns5AIXWp07RAXnC4Pc9evqS1fvVRJ VVqoSAjh1y5GM/cPiE51Ph/JgIrbXAfNavkoN7NhTt8k5hyc6ZkXcOUt6IjJtfg6h/r+ 67qQ== X-Forwarded-Encrypted: i=1; AJvYcCVZM4kyXxy6V+wmqaiyXoFtC0q8tVGeZQPqni3uFkOLS6u5Q0cIGX2AlrpdNrLVDmyUdHyZ0sSqJ+0K20I=@vger.kernel.org X-Gm-Message-State: AOJu0YxquNlwoBDw6JqFA4pNhxdsVo14bA2peChuVuYwffuDkcKQj05i Joo/w4yBuyeRCt0WdlSYs0FjNA18J7qgNK+ONOWxq42//76q4LaWksNu X-Gm-Gg: ASbGncsOljeGfFtHmrRPhYGL2BwZSoNGai3mGhopL609KtblayPoUjsH39Bzw/Kna9k 3afMl79B2JTVfFYuQTiaojnSalTCbY4oX5wuqXUaDmjCsZ02rXkwkjZ6F6uG7SZsmX/OWJepYuY gU7kaVIe7LzZhMps4OwFwGyfUF3oX5gIGzjIdO3KkkCnFx02pV+OHVqOSRnL1Fmaj9TbI6d8+8q 0LKGkAvOypDbx5aFUqpdMIIaw4rqNxpROoeFyaSj5Z39ipxl/aWqkpHyqW7gdzoTaPjwGGN+ecc SvUX1yEHUTLAqEz6fySFzLMbdcq3Sfg/ZFqIxRLg/ECX4FQ0PT6G6FitGKBxb9Rz94IhXhKF5Ka 0uO+nKniw8fxalYpwzXAw80SypZD1sGH1Z9w5Yxrq3lwjIyEU5Z6f16KroQVBxZX3jCMo+3wTDl B1AmV5pVxU3GcrZMfTFcobjBycuT7XgnsJ5Tb/hO4K0fOaWvQURl3CrcU12wsu/XSNePwy4+Y= X-Google-Smtp-Source: AGHT+IF2b7f+ZBHK25E9+K489GOtqsYf7pKr0K3jFgK2oZkdroqRS+XqRE/MrqLwRM3wLWl2YED7xA== X-Received: by 2002:a05:600c:4746:b0:477:9eb8:97d2 with SMTP id 5b1f17b1804b1-477c017d7e8mr26152805e9.8.1763741335414; Fri, 21 Nov 2025 08:08:55 -0800 (PST) Received: from biju.lan (host86-162-200-138.range86-162.btcentralplus.com. [86.162.200.138]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477a9dea7fcsm89496195e9.8.2025.11.21.08.08.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Nov 2025 08:08:55 -0800 (PST) From: Biju X-Google-Original-From: Biju To: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Geert Uytterhoeven , Linus Walleij Cc: Biju Das , linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org, Prabhakar Mahadev Lad , Biju Das , linux-renesas-soc@vger.kernel.org, linux-gpio@vger.kernel.org Subject: [DO NOT APPLY PATCH v8 15/15] tools: poeg: Add support for handling GPT output request disable Date: Fri, 21 Nov 2025 16:08:22 +0000 Message-ID: <20251121160842.371922-16-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251121160842.371922-1-biju.das.jz@bp.renesas.com> References: <20251121160842.371922-1-biju.das.jz@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Biju Das Add support for handling GPT output request disable. When GPT detects output disable condition, it request POEG and POEG triggers an interrupt after disabling the output. the clearing of interrupt happens in GPT. Add support for handling this in userspace, when POEG triggers interrupt, it sends an event to user space and user space send clear command to clear the gpt request for output disable. Signed-off-by: Biju Das --- tools/poeg/poeg_app.c | 57 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 47 insertions(+), 10 deletions(-) diff --git a/tools/poeg/poeg_app.c b/tools/poeg/poeg_app.c index 4ff8e5c007dc..71f130d5aad2 100644 --- a/tools/poeg/poeg_app.c +++ b/tools/poeg/poeg_app.c @@ -20,9 +20,11 @@ =20 int main(int argc, char *argv[]) { + struct poeg_event event_data; struct poeg_cmd cmd; unsigned int val; long cmd_val; + int ret, fd; char *p; int i; =20 @@ -36,17 +38,52 @@ int main(int argc, char *argv[]) else printf("[POEG]open\n"); =20 - cmd.val =3D cmd_val; - cmd.channel =3D 4; - if (cmd.val =3D=3D RZG2L_POEG_OUTPUT_DISABLE_USR_ENABLE_CMD) - printf("[POEG] user control pin output disable enabled\n"); - else - printf("[POEG] user control pin output disable disabled\n"); + if (cmd_val =3D=3D RZG2L_POEG_OUTPUT_DISABLE_USR_ENABLE_CMD || + cmd_val =3D=3D RZG2L_POEG_OUTPUT_DISABLE_USR_DISABLE_CMD) { + if (cmd_val =3D=3D RZG2L_POEG_OUTPUT_DISABLE_USR_ENABLE_CMD) + printf("[POEG] user control pin output disable enabled\n"); + else + printf("[POEG] user control pin output disable disabled\n"); + + cmd.val =3D cmd_val; + cmd.channel =3D 4; + ret =3D write(fd, &cmd, sizeof(cmd)); + if (ret =3D=3D -1) { + perror("Failed to write cmd data"); + return 1; + } + } else { + printf("[POEG] GPT control configure IRQ\n"); + cmd.val =3D RZG2L_POEG_GPT_CFG_IRQ_CMD; + cmd.channel =3D 4; + ret =3D write(fd, &cmd, sizeof(cmd)); + if (ret =3D=3D -1) { + perror("Failed to write cmd data"); + return 1; + } + + for (;;) { + ret =3D read(fd, &event_data, sizeof(event_data)); + if (ret =3D=3D -1) { + perror("Failed to read event data"); + return 1; + } =20 - ret =3D write(fd, &cmd, sizeof(cmd)); - if (ret =3D=3D -1) { - perror("Failed to write cmd data"); - return 1; + val =3D event_data.gpt_disable_irq_status; + if (val) { + /* emulate fault clearing condition by adding delay */ + sleep(2); + for (i =3D 0; i < 8; i++) { + if (val & 7) { + printf("gpt ch:%u, irq=3D%x\n", i, val & 7); + cmd.val =3D RZG2L_POEG_GPT_FAULT_CLR_CMD; + cmd.channel =3D 4; + ret =3D write(fd, &cmd, sizeof(cmd)); + } + val >>=3D 3; + } + } + } } =20 if (close(fd) !=3D 0) --=20 2.43.0