Re: [PATCH net-next 09/12] gpio: tc956x: add TC956x/QPS615 support
From: Alex Elder
Date: Wed May 06 2026 - 18:42:30 EST
On 5/6/26 4:43 PM, Andrew Lunn wrote:
To be clear, the reason you're asking is that you're suggesting
we might want to model the GPIO controller differently, correct?
Correct.
I.e., model it as *not* associated with the embedded PCIe
functions. Then we need to think about what its parent device
would be (the power control device, which I think somehow
duplicates the switch device?).
Logically, the GPIO controller cannot be part of a downstream
function, if you need to use the GPIO controller to turn the
downstream function on.
Yes you're right, though the PCIe power controller functions
before the PCIe switch is enabled, and uses I2C to communicate
with the host.
Logically, the GPIO controller needs to be above the switch downstream
end points. Where above, i don't know. Which is why i was asking about
where it appears in the address spaces.
You are touching on an issue we have faced since we started on
this earlier in the year. Our objective was to enable the eMACs,
but there was no device representing the "chip" (which holds the
switch and the GPIO controller, etc.). The TC956x is more than
just a PCIe switch, and more than just two Ethernet MACs. The
vendor code handles some of this between PCIe functions with
some reference counting and perhaps other things.
Eventually we settled on the model we have presented, which
creates a device for each function and lets one of them take
care of common "chip" things (including creating the GPIO
auxiliary device). The function device driver creates a
new auxiliary device to represent the MAC for each function.
I also considered modeling the TC956x as a remoteproc, but have
been reluctant to really pursue that.
But i also don't know too much about PCI, i'm used to SoCs with simple
linear MMIO.
I'm no PCI expert either, but I'm learning.
From the little i know, it is more than what address space does the
GPIO appear in. Its also, what enumerable entity does it appear in
within the PCI bus. Because its the enumeration which is going to
trigger a driver load, which can then drive the GPIO controller.
Or, something more radical, you make the PCIe power controller an MFD,
instantiating both the power controller and a GPIO controller over the
I2C bus. GPIO access will not be as fast, but is there anything here
which needs to be fast?
I considered that, but opted not to mess with the PCIe power controller
driver.
It's only asserting resets in the RB3gen2, so I don't the speed is a
major factor.
-Alex
Andrew