From: Prasanth Kumar Padarthi <prasanth.padarthi10@gmail.com>
To: linux-aspeed@lists.ozlabs.org
Cc: linux-gpio@vger.kernel.org, openbmc@lists.ozlabs.org,
linux-kernel@vger.kernel.org, krzk@kernel.org,
tan.siewert@9elements.com, billy_tsai@aspeedtech.com,
Prasanth Kumar Padarthi <prasanth.padarthi10@gmail.com>
Subject: [RFC PATCH v2 0/1] AST2600 global GPIOP passthrough handover experiment
Date: Thu, 22 Oct 2026 08:13:13 +0530 [thread overview]
Message-ID: <20261022024314.48623-1-prasanth.padarthi10@gmail.com> (raw)
In-Reply-To: <20261015035118.9495-1-prasanth.padarthi10@gmail.com>
Hi,
This RFC v2 explores a different implementation from the October 15
GPIO-request callback. It is not presented as a completed generic fix.
The intended software model remains ordinary GPIO power control with
x86-power-control software button forwarding. No board-specific sysfs ABI,
Devicetree binding, or per-operation userspace SCU switching is introduced.
Changes from v1:
- Move shared-enable handling before pinctrl registration.
- Preserve global THRU selections in per-pin SCU4BC controls first.
- Handle the SCU510[28] source using SCU514 rather than rejecting it outright.
- If handover fails, block affected GPIO/mux requests while attempting to
retain unrelated pinctrl functionality. Check all group pins before muxing.
Problem and observations
------------------------
On B650D4U, a baseline with SCU4BC=0, SCU510=0, SCU51C=0x1e80 logs
a 200 ms power pulse but times out waiting for power-good after 8 seconds.
The earlier callback candidate clears SCU51C[9], permitting power-on.
The current implementation transfers the global selection to local mux bits
before registering consumers; observed post-daemon state is:
Before power request After power request
SCU41C 0x000000c0 0x000000c0
SCU4BC 0x30000000 0x30000000
SCU510 0x00000000 0x00000000
SCU51C 0x00001c80 0x00001c80
Current implementation journal excerpts (boot-relative seconds):
182.265233 power-on request event received
182.267277 control-power-n set to 0
182.467530 control-power-n released
182.496345 power OK assert event received
182.496404 Moving to On
The logged pulse lasts 200.253 ms; power-good arrives 231.112 ms after
the request. The operator confirms physical power-on, including after
complete AC removal. The supplied timestamped trace is not separately
identified as the AC-removal run. P4/P5 local THRU selections remain set;
actual forwarding and signal continuity have not been measured.
Runtime SHA256 matches the earlier A/B tests:
eb98e896b67c2742db5ea127a40eecc6d23659a69a635ba9e2c5495bb32bd8bb
/usr/bin/power-control
47d323408e754c692f9f8764f2369e8bdbe76f56c59b804f52428a6229a7b4d3
/usr/share/x86-power-control/power-config-host0.json
The locally patched x86-power-control permits omitted optional GPIO
configuration entries. A comparison patch removes the earlier custom sysfs
passthrough switching and 300 us delay, restoring the original GPIO pulse
helper, including its masked-output handling. The configured power pulse is
200 ms; software button forwarding is enabled. This is not a logging-only
change or an unmodified upstream binary. The same executable/configuration
hashes were captured in the baseline and candidate tests. These source
changes are not intended to introduce different GPIO request flags; the
captured hashes identify the tested executables rather than independently
proving their build provenance.
The image build completed successfully. The kernel base is the local
OpenBMC revision 68da063267662da17b990c3384d5beceab1cdc80, whose
Makefile identifies Linux 6.18.24 (VERSION=6, PATCHLEVEL=18, SUBLEVEL=24).
It is not claimed to be the current pinctrl maintainer base, and equivalence
of its Aspeed pinctrl code to an upstream stable release has not been
verified. Runtime release: 6.18.24-68da063-patch-157ea07.
Open questions and validation limits
-----------------------------------
1. Is local/global THRU equivalence valid during the transfer, including
PWM priority and signal continuity? Only steady-state selections were
checked; no electrical measurements or mixed-pair functional tests exist.
2. Is mandatory normalization at probe acceptable, including platforms that
never request GPIOP? Would an ownership-aware request path be preferable?
3. What shared serialization should protect the complete handover against
other SCU writers, including concurrent driver probes? Would a common
SCU-level locking mechanism be appropriate, and which writers must
participate? A pinctrl-private mutex would not serialize independent
drivers, and regmap_fields alone does not make a multi-register sequence
atomic. Regmap locking currently covers individual accesses only.
4. How should partial handover and subsequent registration/hog failure be
handled? Current restricted mode does not guarantee registration if a
controller hog itself requests a blocked P0-P5 group.
Protected-write/fault paths, PWM coexistence and SCU510[28] behavior have
not been hardware tested. All presented register captures are after daemon
GPIO initialization, not a direct trace of the handover. Exact flashed-image
hashes and standalone raw evidence archive references are not yet attached.
BMC NotReady, missing BootProgress and LPC snoop failures remain separate
port issues; successful power-on is not full platform qualification.
Feedback on this implementation direction and its ownership assumptions
is requested before extending it or treating it as a generic solution.
Previous RFC Message-ID:
20261015035118.9495-1-prasanth.padarthi10@gmail.com
Regards,
Prasanth
Prasanth Kumar Padarthi (1):
pinctrl: aspeed: Hand over global GPIOP passthrough to local mux
controls
drivers/pinctrl/aspeed/pinctrl-aspeed-g6.c | 147 ++++++++++++++++++++++++++++-
1 file changed, 143 insertions(+), 4 deletions(-)
--
2.47.3
next prev parent reply other threads:[~2026-10-22 2:43 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-15 3:51 [RFC PATCH] pinctrl: aspeed: Handle GPIOZ6 pass-through strap on GPIO requests Prasanth Kumar Padarthi
2026-10-22 2:43 ` Prasanth Kumar Padarthi [this message]
2026-10-22 2:43 ` [RFC PATCH v2] pinctrl: aspeed: Hand over global GPIOP passthrough to local mux controls Prasanth Kumar Padarthi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261022024314.48623-1-prasanth.padarthi10@gmail.com \
--to=prasanth.padarthi10@gmail.com \
--cc=billy_tsai@aspeedtech.com \
--cc=krzk@kernel.org \
--cc=linux-aspeed@lists.ozlabs.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=openbmc@lists.ozlabs.org \
--cc=tan.siewert@9elements.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®