* [PATCH 0/2] PCI: introduce TC9564 misc driver @ 2026-08-13 22:29 Alex Elder 2026-08-13 22:29 ` [PATCH 1/2] dt-bindings: misc: introduce pci1179,0220.yaml Alex Elder 2026-08-13 22:29 ` [PATCH 2/2] misc: tc9564: introduce base PCI driver Alex Elder 0 siblings, 2 replies; 15+ messages in thread From: Alex Elder @ 2026-08-13 22:29 UTC (permalink / raw) To: robh, krzk+dt, conor+dt, arnd, gregkh, bhelgaas Cc: daniel, mohdayaa, lbiancon, devicetree, linux-pci, linux-kernel The Toshiba TC9564 is specialized SoC that implements a PCIe switch as well as an Ethernet AVB/TSN bridge. It also implements other functions, including a reset and clock controller, an address translation unit, and a few other devices. PCIe BARs provide access to registers that manage these IP blocks, and the SoC is modeled using a PCI endpoint bus in devicetree. This allows the IP blocks to be bound to platform drivers using MMIO through the PCI BARs. This series introduces the simple PCI driver necessary to implement the PCI endpoint bus. It enables the device, enables master access, and then scans the devicetree subnodes to discover any devices defined within the endpoint buses. -Alex Note: to work correctly, this series depends on this: https://lore.kernel.org/lkml/20260813220717.1394644-1-elder@riscstar.com/ Alex Elder (2): dt-bindings: misc: introduce pci1179,0220.yaml misc: tc9564: introduce base PCI driver .../bindings/misc/pci1179,0220.yaml | 150 ++++++++++++++++++ MAINTAINERS | 7 + drivers/misc/Kconfig | 10 ++ drivers/misc/Makefile | 1 + drivers/misc/tc9564-pci.c | 89 +++++++++++ drivers/pci/quirks.c | 1 + 6 files changed, 258 insertions(+) create mode 100644 Documentation/devicetree/bindings/misc/pci1179,0220.yaml create mode 100644 drivers/misc/tc9564-pci.c base-commit: 5e6de6a2b522f659defacb1551d0465ba6ce13cf -- 2.53.0 ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 1/2] dt-bindings: misc: introduce pci1179,0220.yaml 2026-08-13 22:29 [PATCH 0/2] PCI: introduce TC9564 misc driver Alex Elder @ 2026-08-13 22:29 ` Alex Elder 2026-08-14 7:01 ` Krzysztof Kozlowski ` (2 more replies) 2026-08-13 22:29 ` [PATCH 2/2] misc: tc9564: introduce base PCI driver Alex Elder 1 sibling, 3 replies; 15+ messages in thread From: Alex Elder @ 2026-08-13 22:29 UTC (permalink / raw) To: robh, krzk+dt, conor+dt, arnd, gregkh, bhelgaas Cc: daniel, mohdayaa, lbiancon, devicetree, linux-pci, linux-kernel Define the binding for the Toshiba TC9564 PCI endpoint function device. The third downstream PCIe switch port within this chip has an embedded PCIe controller, and that implements two of these PCIe functions. Signed-off-by: Daniel Thompson <daniel@riscstar.com> Signed-off-by: Alex Elder <elder@riscstar.com> --- .../bindings/misc/pci1179,0220.yaml | 150 ++++++++++++++++++ MAINTAINERS | 6 + 2 files changed, 156 insertions(+) create mode 100644 Documentation/devicetree/bindings/misc/pci1179,0220.yaml diff --git a/Documentation/devicetree/bindings/misc/pci1179,0220.yaml b/Documentation/devicetree/bindings/misc/pci1179,0220.yaml new file mode 100644 index 0000000000000..30a76f377eec8 --- /dev/null +++ b/Documentation/devicetree/bindings/misc/pci1179,0220.yaml @@ -0,0 +1,150 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/misc/pci1179,0220.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Toshiba TC9564 internal PCI endpoint function + +maintainers: + - Alex Elder <elder@kernel.org> + - Daniel Thompson <danielt@kernel.org> + +description: > + The Toshiba TC9564 is specialized SoC that implements a PCIe switch + as well as an Ethernet AVB/TSN bridge. In addition to these, the SoC + implements other functions, including a reset and clock controller, + an address translation unit, and a few other devices. + + The PCI switch has three downstream ports. The first two are exposed + externally, while the third is used by an internal PCIe endpoint. The + internal endpoint implements two PCIe functions, and attached to each + of these is a 10 Gbps capable Synopsys Ethernet controller and an + interrupt controller that converts internal "wired" interrupts into + MSIs delivered to the host. + + PCIe BARs provide access to registers that manage almost all IP blocks. + The SoC is modeled using a PCI endpoint bus. The IP blocks are bound + to platform drivers that access the hardware using MMIO through the + PCI BARs. + + ------------------------------------ + | Host | + -----........---------------...----- + | | | | + | PCIe | |I2C| + | | | | + ----------+........+-------------+...+--------------------------- + | |upstream| | | ---------------- | + | Toshiba | Port 0 | | +-----+ PCIe pwrctrl | | + | TC9564 ----++---- | I2C | ---------------- | + | SoC || |controller| ---------------- | + | || | +-----+ GPIO | | + | || | | | controller | | + | ------++------ ------------ ---------------- | + | | US | | + | | | ------------------------------------- | + | | DS3+====+ downstream port 3 | | + | | | |-----------------------------------| | + | | PCIe | | embedded PCIe endpoint | | + | | | |~~~~~~~~~~~~~~~~~+~~~~~~~~~~~~~~~~~| | + | | Switch | | PCIe function 0 | PCIe function 1 | | + | | | |-----------------+-----------------| | + | | | | BAR | | BAR | | BAR | | + | | | | 0 | | 4 | | 4 | | + | | DS1 DS2 | ----.---- ----.---- ----.---- | + | --++------++-- : ...: :... | + | || || : : : ------- : | | + | || || -------.--- -.- :...|clock| : -.- | + | || || |translate| |M| : ------- : |M| | + | || || ----------- |S| : : |S| | + | || || |I| : ------- : |I| | + | || || |G| :...|reset| : |G| | + | || || |E| : ------- : |E| | + | --------++-- --++-------- |N| : : |N| | + | |downstream| |downstream| ------.---- ------.---- | + | | port 1 | | port 2 | | XGMAC 0 | | XGMAC 1 | | + --+..........+--+..........+-------+.......+---------+.....+----- + | | | | + |USXGMII| |SGMII| + | | | | + ---+.....+--- --+.....+-- + | Ethernet | | Ethernet| + | PHY | | PHY | + ------------- ----------- + +allOf: + - $ref: /schemas/pci/pci-ep-bus.yaml + +properties: + compatible: + const: pci1179,0220 # Toshiba TC96564 (a.k.a. Qualcomm QPS615) + + reg: + maxItems: 1 + description: PCI Bus/Device/Function config space address + +unevaluatedProperties: false + +required: + - compatible + - reg + - '#address-cells' + - '#size-cells' + - ranges + +examples: + - | + pcie@0 { + reg = <0x0 0x0>; + #address-cells = <3>; + #size-cells = <2>; + device_type = "pci"; + ranges = <0x83000000 0x0 0x0 0x0 0x0 0x1fd00000>; + + pci@0,0 { + compatible = "pci1179,0220"; + reg = <0x0 0x0 0x0 0x0 0x0>; + #address-cells = <3>; + #size-cells = <2>; + /* Ranges will be updated dynamically */ + ranges = <0x0 0x0 0x0 0x83000000 0x0 0x0 0x0 0x4000>, + <0x2 0x0 0x0 0x83000000 0x0 0x0 0x0 0x80000>, + <0x4 0x0 0x0 0x83000000 0x0 0x0 0x0 0x200000>; + + pci-ep-bus@0 { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; + /* Map 0x0-0x3fff to BAR 0 */ + ranges = <0x0 0x0 0x0 0x0 0x4000>; + }; + + pci-ep-bus@4 { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; + /* Map 0x0-0x1fffff to BAR 4 */ + ranges = <0x0 0x4 0x0 0x0 0x200000>; + }; + }; + + pci@0,1 { + compatible = "pci1179,0220"; + reg = <0x100 0x0 0x0 0x0 0x0>; + #address-cells = <3>; + #size-cells = <2>; + /* Ranges will be updated dynamically */ + ranges = <0x0 0x0 0x0 0x83000100 0x0 0x0 0x0 0x4000>, + <0x2 0x0 0x0 0x83000100 0x0 0x0 0x0 0x80000>, + <0x4 0x0 0x0 0x83000100 0x0 0x0 0x0 0x200000>; + + pci-ep-bus@4 { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; + /* Map 0x0-0x1fffff to BAR 4 */ + ranges = <0x0 0x4 0x0 0x0 0x200000>; + }; + }; + }; diff --git a/MAINTAINERS b/MAINTAINERS index 15c7dc516f7cf..7b7966ad3dea5 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -27615,6 +27615,12 @@ F: Documentation/devicetree/bindings/media/i2c/toshiba,tc358743.txt F: drivers/media/i2c/tc358743* F: include/media/i2c/tc358743.h +TOSHIBA TC9564 PCI DRIVER +M: Alex Elder <elder@kernel.org> +M: Daniel Thompson <danielt@kernel.org> +S: Maintained +F: Documentation/devicetree/bindings/misc/pci1179,0220.yaml + TOSHIBA WMI HOTKEYS DRIVER M: Azael Avalos <coproscefalo@gmail.com> L: platform-driver-x86@vger.kernel.org -- 2.53.0 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH 1/2] dt-bindings: misc: introduce pci1179,0220.yaml 2026-08-13 22:29 ` [PATCH 1/2] dt-bindings: misc: introduce pci1179,0220.yaml Alex Elder @ 2026-08-14 7:01 ` Krzysztof Kozlowski 2026-08-14 16:55 ` Alex Elder 2026-08-15 20:46 ` Rob Herring (Arm) 2026-08-17 2:43 ` Rob Herring 2 siblings, 1 reply; 15+ messages in thread From: Krzysztof Kozlowski @ 2026-08-14 7:01 UTC (permalink / raw) To: Alex Elder Cc: robh, krzk+dt, conor+dt, arnd, gregkh, bhelgaas, daniel, mohdayaa, lbiancon, devicetree, linux-pci, linux-kernel On Thu, Aug 13, 2026 at 05:29:41PM -0500, Alex Elder wrote: > Define the binding for the Toshiba TC9564 PCI endpoint function device. > The third downstream PCIe switch port within this chip has an embedded > PCIe controller, and that implements two of these PCIe functions. > > Signed-off-by: Daniel Thompson <daniel@riscstar.com> > Signed-off-by: Alex Elder <elder@riscstar.com> > --- > .../bindings/misc/pci1179,0220.yaml | 150 ++++++++++++++++++ > MAINTAINERS | 6 + > 2 files changed, 156 insertions(+) > create mode 100644 Documentation/devicetree/bindings/misc/pci1179,0220.yaml > There are no properties in the binding except standard PCIe ones, so why do you need it in DT in the first place? We do not describe PCI devices in DT by default, so you are doing something unusual. Commit msg should explain that. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 1/2] dt-bindings: misc: introduce pci1179,0220.yaml 2026-08-14 7:01 ` Krzysztof Kozlowski @ 2026-08-14 16:55 ` Alex Elder 2026-08-17 6:18 ` Krzysztof Kozlowski 0 siblings, 1 reply; 15+ messages in thread From: Alex Elder @ 2026-08-14 16:55 UTC (permalink / raw) To: Krzysztof Kozlowski Cc: robh, krzk+dt, conor+dt, arnd, gregkh, bhelgaas, daniel, mohdayaa, lbiancon, devicetree, linux-pci, linux-kernel On 8/14/26 2:01 AM, Krzysztof Kozlowski wrote: > On Thu, Aug 13, 2026 at 05:29:41PM -0500, Alex Elder wrote: >> Define the binding for the Toshiba TC9564 PCI endpoint function device. >> The third downstream PCIe switch port within this chip has an embedded >> PCIe controller, and that implements two of these PCIe functions. >> >> Signed-off-by: Daniel Thompson <daniel@riscstar.com> >> Signed-off-by: Alex Elder <elder@riscstar.com> >> --- >> .../bindings/misc/pci1179,0220.yaml | 150 ++++++++++++++++++ >> MAINTAINERS | 6 + >> 2 files changed, 156 insertions(+) >> create mode 100644 Documentation/devicetree/bindings/misc/pci1179,0220.yaml >> > > There are no properties in the binding except standard PCIe ones, so why > do you need it in DT in the first place? We do not describe PCI devices > in DT by default, so you are doing something unusual. Commit msg should > explain that. Maybe because it's using pci-ep-bus? I'm not sure I can answer your question though. An earlier version used auxiliary devices. This time the PCI device sort of stands by itself as provider of the endpoint buses that are used by other devices within the SoC. There is otherwise no single driver (e.g., for an Ethernet interface) that is implemented as a PCI driver to bind with the hardware. The SoC drivers will all be platform drivers. If you don't think this is needed, I'll gladly accept that. But the PCI endpoint bus is a devicetree construct, and it seemed to me that using it needed to be documented somehow. I'd appreciate guidance on how to think about it so I can document it properly (or not). Thanks. -Alex > Best regards, > Krzysztof > ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 1/2] dt-bindings: misc: introduce pci1179,0220.yaml 2026-08-14 16:55 ` Alex Elder @ 2026-08-17 6:18 ` Krzysztof Kozlowski 0 siblings, 0 replies; 15+ messages in thread From: Krzysztof Kozlowski @ 2026-08-17 6:18 UTC (permalink / raw) To: Alex Elder Cc: robh, krzk+dt, conor+dt, arnd, gregkh, bhelgaas, daniel, mohdayaa, lbiancon, devicetree, linux-pci, linux-kernel On 14/08/2026 18:55, Alex Elder wrote: > On 8/14/26 2:01 AM, Krzysztof Kozlowski wrote: >> On Thu, Aug 13, 2026 at 05:29:41PM -0500, Alex Elder wrote: >>> Define the binding for the Toshiba TC9564 PCI endpoint function device. >>> The third downstream PCIe switch port within this chip has an embedded >>> PCIe controller, and that implements two of these PCIe functions. >>> >>> Signed-off-by: Daniel Thompson <daniel@riscstar.com> >>> Signed-off-by: Alex Elder <elder@riscstar.com> >>> --- >>> .../bindings/misc/pci1179,0220.yaml | 150 ++++++++++++++++++ >>> MAINTAINERS | 6 + >>> 2 files changed, 156 insertions(+) >>> create mode 100644 Documentation/devicetree/bindings/misc/pci1179,0220.yaml >>> >> >> There are no properties in the binding except standard PCIe ones, so why >> do you need it in DT in the first place? We do not describe PCI devices >> in DT by default, so you are doing something unusual. Commit msg should >> explain that. > > Maybe because it's using pci-ep-bus? I'm not sure I can answer your > question though. What is pcie-ep bus? If a device is a PCI device (so not the host bridge), we do not need to define it in DT except a few cases and this does not look like one. > > An earlier version used auxiliary devices. This time the PCI device > sort of stands by itself as provider of the endpoint buses that are > used by other devices within the SoC. There is otherwise no single > driver (e.g., for an Ethernet interface) that is implemented as a > PCI driver to bind with the hardware. The SoC drivers will all be > platform drivers. All this is driver explanation, so does not really answer my questions. Whether something is using platform bus or auxiliary devices it absolutely does not matter for the DT. It cannot even matter for DT. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 1/2] dt-bindings: misc: introduce pci1179,0220.yaml 2026-08-13 22:29 ` [PATCH 1/2] dt-bindings: misc: introduce pci1179,0220.yaml Alex Elder 2026-08-14 7:01 ` Krzysztof Kozlowski @ 2026-08-15 20:46 ` Rob Herring (Arm) 2026-08-17 2:43 ` Rob Herring 2 siblings, 0 replies; 15+ messages in thread From: Rob Herring (Arm) @ 2026-08-15 20:46 UTC (permalink / raw) To: Alex Elder Cc: bhelgaas, conor+dt, linux-pci, mohdayaa, devicetree, linux-kernel, gregkh, daniel, krzk+dt, arnd, lbiancon On Thu, 13 Aug 2026 17:29:41 -0500, Alex Elder wrote: > Define the binding for the Toshiba TC9564 PCI endpoint function device. > The third downstream PCIe switch port within this chip has an embedded > PCIe controller, and that implements two of these PCIe functions. > > Signed-off-by: Daniel Thompson <daniel@riscstar.com> > Signed-off-by: Alex Elder <elder@riscstar.com> > --- > .../bindings/misc/pci1179,0220.yaml | 150 ++++++++++++++++++ > MAINTAINERS | 6 + > 2 files changed, 156 insertions(+) > create mode 100644 Documentation/devicetree/bindings/misc/pci1179,0220.yaml > My bot found errors running 'make dt_binding_check' on your patch: yamllint warnings/errors: dtschema/dtc warnings/errors: Documentation/devicetree/bindings/misc/pci1179,0220.example.dtb: pci@0,0 (pci1179,0220): pci-ep-bus@0:compatible: ['simple-bus'] does not contain items matching the given schema from schema $id: http://devicetree.org/schemas/pci/pci-bus-common.yaml Documentation/devicetree/bindings/misc/pci1179,0220.example.dtb: pci@0,0 (pci1179,0220): pci-ep-bus@0: 'reg' is a required property from schema $id: http://devicetree.org/schemas/pci/pci-bus-common.yaml Documentation/devicetree/bindings/misc/pci1179,0220.example.dtb: pci@0,0 (pci1179,0220): pci-ep-bus@4:compatible: ['simple-bus'] does not contain items matching the given schema from schema $id: http://devicetree.org/schemas/pci/pci-bus-common.yaml Documentation/devicetree/bindings/misc/pci1179,0220.example.dtb: pci@0,0 (pci1179,0220): pci-ep-bus@4: 'reg' is a required property from schema $id: http://devicetree.org/schemas/pci/pci-bus-common.yaml Documentation/devicetree/bindings/misc/pci1179,0220.example.dtb: pci@0,0 (pci1179,0220): ranges: 'oneOf' conditional failed, one must be fixed: [[0, 0, 0, 2197815296, 0, 0, 0, 16384], [2, 0, 0, 2197815296, 0, 0, 0, 524288], [4, 0, 0, 2197815296, 0, 0, 0, 2097152]] is not of type 'boolean' 0 is not one of [16777216, 33554432, 50331648, 1107296256, 1124073472, 2164260864, 2181038080, 2197815296, 3254779904, 3271557120] 2 is not one of [16777216, 33554432, 50331648, 1107296256, 1124073472, 2164260864, 2181038080, 2197815296, 3254779904, 3271557120] 4 is not one of [16777216, 33554432, 50331648, 1107296256, 1124073472, 2164260864, 2181038080, 2197815296, 3254779904, 3271557120] from schema $id: http://devicetree.org/schemas/pci/pci-bus-common.yaml Documentation/devicetree/bindings/misc/pci1179,0220.example.dtb: pci@0,0 (pci1179,0220): 'device_type' is a required property from schema $id: http://devicetree.org/schemas/pci/pci-bus-common.yaml Documentation/devicetree/bindings/misc/pci1179,0220.example.dtb: pci@0,1 (pci1179,0220): pci-ep-bus@4:compatible: ['simple-bus'] does not contain items matching the given schema from schema $id: http://devicetree.org/schemas/pci/pci-bus-common.yaml Documentation/devicetree/bindings/misc/pci1179,0220.example.dtb: pci@0,1 (pci1179,0220): pci-ep-bus@4: 'reg' is a required property from schema $id: http://devicetree.org/schemas/pci/pci-bus-common.yaml Documentation/devicetree/bindings/misc/pci1179,0220.example.dtb: pci@0,1 (pci1179,0220): ranges: 'oneOf' conditional failed, one must be fixed: [[0, 0, 0, 2197815552, 0, 0, 0, 16384], [2, 0, 0, 2197815552, 0, 0, 0, 524288], [4, 0, 0, 2197815552, 0, 0, 0, 2097152]] is not of type 'boolean' 0 is not one of [16777216, 33554432, 50331648, 1107296256, 1124073472, 2164260864, 2181038080, 2197815296, 3254779904, 3271557120] 2 is not one of [16777216, 33554432, 50331648, 1107296256, 1124073472, 2164260864, 2181038080, 2197815296, 3254779904, 3271557120] 4 is not one of [16777216, 33554432, 50331648, 1107296256, 1124073472, 2164260864, 2181038080, 2197815296, 3254779904, 3271557120] from schema $id: http://devicetree.org/schemas/pci/pci-bus-common.yaml Documentation/devicetree/bindings/misc/pci1179,0220.example.dtb: pci@0,1 (pci1179,0220): 'device_type' is a required property from schema $id: http://devicetree.org/schemas/pci/pci-bus-common.yaml doc reference errors (make refcheckdocs): See https://patchwork.kernel.org/project/devicetree/patch/20260813222943.1655453-2-elder@riscstar.com The base for the series is generally the latest rc1. A different dependency should be noted in *this* patch. If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure 'yamllint' is installed and dt-schema is up to date: pip3 install dtschema --upgrade Please check and re-submit after running the above command yourself. Note that DT_SCHEMA_FILES can be set to your schema file to speed up checking your schema. However, it must be unset to test all examples with your schema. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 1/2] dt-bindings: misc: introduce pci1179,0220.yaml 2026-08-13 22:29 ` [PATCH 1/2] dt-bindings: misc: introduce pci1179,0220.yaml Alex Elder 2026-08-14 7:01 ` Krzysztof Kozlowski 2026-08-15 20:46 ` Rob Herring (Arm) @ 2026-08-17 2:43 ` Rob Herring 2 siblings, 0 replies; 15+ messages in thread From: Rob Herring @ 2026-08-17 2:43 UTC (permalink / raw) To: Alex Elder Cc: krzk+dt, conor+dt, arnd, gregkh, bhelgaas, daniel, mohdayaa, lbiancon, devicetree, linux-pci, linux-kernel On Thu, Aug 13, 2026 at 05:29:41PM -0500, Alex Elder wrote: > Define the binding for the Toshiba TC9564 PCI endpoint function device. > The third downstream PCIe switch port within this chip has an embedded > PCIe controller, and that implements two of these PCIe functions. A better subject would be "dt-bindings: misc: Add Toshiba PC9564 endpoint functon device". > > Signed-off-by: Daniel Thompson <daniel@riscstar.com> > Signed-off-by: Alex Elder <elder@riscstar.com> > --- > .../bindings/misc/pci1179,0220.yaml | 150 ++++++++++++++++++ > MAINTAINERS | 6 + > 2 files changed, 156 insertions(+) > create mode 100644 Documentation/devicetree/bindings/misc/pci1179,0220.yaml > > diff --git a/Documentation/devicetree/bindings/misc/pci1179,0220.yaml b/Documentation/devicetree/bindings/misc/pci1179,0220.yaml > new file mode 100644 > index 0000000000000..30a76f377eec8 > --- /dev/null > +++ b/Documentation/devicetree/bindings/misc/pci1179,0220.yaml > @@ -0,0 +1,150 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/misc/pci1179,0220.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Toshiba TC9564 internal PCI endpoint function > + > +maintainers: > + - Alex Elder <elder@kernel.org> > + - Daniel Thompson <danielt@kernel.org> > + > +description: > > + The Toshiba TC9564 is specialized SoC that implements a PCIe switch > + as well as an Ethernet AVB/TSN bridge. In addition to these, the SoC > + implements other functions, including a reset and clock controller, > + an address translation unit, and a few other devices. > + > + The PCI switch has three downstream ports. The first two are exposed > + externally, while the third is used by an internal PCIe endpoint. The > + internal endpoint implements two PCIe functions, and attached to each > + of these is a 10 Gbps capable Synopsys Ethernet controller and an > + interrupt controller that converts internal "wired" interrupts into > + MSIs delivered to the host. > + > + PCIe BARs provide access to registers that manage almost all IP blocks. > + The SoC is modeled using a PCI endpoint bus. The IP blocks are bound > + to platform drivers that access the hardware using MMIO through the > + PCI BARs. > + > + ------------------------------------ > + | Host | > + -----........---------------...----- > + | | | | > + | PCIe | |I2C| > + | | | | > + ----------+........+-------------+...+--------------------------- > + | |upstream| | | ---------------- | > + | Toshiba | Port 0 | | +-----+ PCIe pwrctrl | | > + | TC9564 ----++---- | I2C | ---------------- | > + | SoC || |controller| ---------------- | > + | || | +-----+ GPIO | | > + | || | | | controller | | > + | ------++------ ------------ ---------------- | > + | | US | | > + | | | ------------------------------------- | > + | | DS3+====+ downstream port 3 | | > + | | | |-----------------------------------| | > + | | PCIe | | embedded PCIe endpoint | | > + | | | |~~~~~~~~~~~~~~~~~+~~~~~~~~~~~~~~~~~| | > + | | Switch | | PCIe function 0 | PCIe function 1 | | > + | | | |-----------------+-----------------| | > + | | | | BAR | | BAR | | BAR | | > + | | | | 0 | | 4 | | 4 | | > + | | DS1 DS2 | ----.---- ----.---- ----.---- | > + | --++------++-- : ...: :... | > + | || || : : : ------- : | | > + | || || -------.--- -.- :...|clock| : -.- | > + | || || |translate| |M| : ------- : |M| | > + | || || ----------- |S| : : |S| | > + | || || |I| : ------- : |I| | > + | || || |G| :...|reset| : |G| | > + | || || |E| : ------- : |E| | > + | --------++-- --++-------- |N| : : |N| | > + | |downstream| |downstream| ------.---- ------.---- | > + | | port 1 | | port 2 | | XGMAC 0 | | XGMAC 1 | | > + --+..........+--+..........+-------+.......+---------+.....+----- > + | | | | > + |USXGMII| |SGMII| > + | | | | > + ---+.....+--- --+.....+-- > + | Ethernet | | Ethernet| > + | PHY | | PHY | > + ------------- ----------- > + > +allOf: > + - $ref: /schemas/pci/pci-ep-bus.yaml > + > +properties: > + compatible: > + const: pci1179,0220 # Toshiba TC96564 (a.k.a. Qualcomm QPS615) Perhaps somewhere besides a comment say what the relationship to a Qualcomm device is. Rob ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 2/2] misc: tc9564: introduce base PCI driver 2026-08-13 22:29 [PATCH 0/2] PCI: introduce TC9564 misc driver Alex Elder 2026-08-13 22:29 ` [PATCH 1/2] dt-bindings: misc: introduce pci1179,0220.yaml Alex Elder @ 2026-08-13 22:29 ` Alex Elder 2026-08-14 1:11 ` Greg KH 2026-08-14 7:03 ` Krzysztof Kozlowski 1 sibling, 2 replies; 15+ messages in thread From: Alex Elder @ 2026-08-13 22:29 UTC (permalink / raw) To: robh, krzk+dt, conor+dt, arnd, gregkh, bhelgaas Cc: daniel, mohdayaa, lbiancon, devicetree, linux-pci, linux-kernel The Toshiba TC9564 is small and highly-specialized SoC that implements a PCIe switch as well as an Ethernet AVB/TSN bridge. In addition to these, the SoC implements other functions, including a reset and clock controller, an address translation unit, and a few other devices. PCIe BARs provide access to registers that manage these IP blocks, and the SoC is modeled using a PCI endpoint bus in devicetree. This allows the IP blocks to be bound to platform drivers using MMIO through the PCI BARs. Create a new PCI driver under drivers/misc that binds with the embedded PCI endpoint functions within the TC9564 SoC. Because these functions will use devicetree pci-ep-bus to provide access to other IP blocks within the TC9564 chip, the main purpose of this driver is to do basic PCI initialization, then call of_platform_default_populate() to scan for the any endpoint bus children, and probe all devices defined therein. Because we're using pci-ep-bus, we need to use the PCI quirks mechanism to have of_pci_make_dev_node() be called for each endpoint device in pci_bus_add_device() (via pci_fixup_device(pci_fixup_final, dev)). Signed-off-by: Daniel Thompson <daniel@riscstar.com> Signed-off-by: Alex Elder <elder@riscstar.com> --- MAINTAINERS | 1 + drivers/misc/Kconfig | 10 +++++ drivers/misc/Makefile | 1 + drivers/misc/tc9564-pci.c | 89 +++++++++++++++++++++++++++++++++++++++ drivers/pci/quirks.c | 1 + 5 files changed, 102 insertions(+) create mode 100644 drivers/misc/tc9564-pci.c diff --git a/MAINTAINERS b/MAINTAINERS index 7b7966ad3dea5..125fa60122c4e 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -27620,6 +27620,7 @@ M: Alex Elder <elder@kernel.org> M: Daniel Thompson <danielt@kernel.org> S: Maintained F: Documentation/devicetree/bindings/misc/pci1179,0220.yaml +F: drivers/misc/tc9564-pci.c TOSHIBA WMI HOTKEYS DRIVER M: Azael Avalos <coproscefalo@gmail.com> diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig index 7364931dad3a1..91950d2928f07 100644 --- a/drivers/misc/Kconfig +++ b/drivers/misc/Kconfig @@ -568,6 +568,16 @@ config MCHP_LAN966X_PCI - lan966x-miim (MDIO_MSCC_MIIM) - lan966x-switch (LAN966X_SWITCH) +config TC9564_PCI + tristate "Toshiba TC9564 PCI function support" + depends on PCI + select REGMAP_MMIO + help + This enables support for the two PCI functions implemented by + the embedded PCIe endpoint in the Toshiba TC9564 SoC. This + driver uses a pci-ep-bus node in devicetree to provide MMIO + access to other SoC devices through PCI function BARs. + source "drivers/misc/c2port/Kconfig" source "drivers/misc/eeprom/Kconfig" source "drivers/misc/cb710/Kconfig" diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile index e8d8d5d88c0df..7cc3d615d37a4 100644 --- a/drivers/misc/Makefile +++ b/drivers/misc/Makefile @@ -71,3 +71,4 @@ obj-y += keba/ obj-y += amd-sbi/ obj-$(CONFIG_MISC_RP1) += rp1/ obj-$(CONFIG_INTEL_SSEI) += issei/ +obj-$(CONFIG_TC9564_PCI) += tc9564-pci.o diff --git a/drivers/misc/tc9564-pci.c b/drivers/misc/tc9564-pci.c new file mode 100644 index 0000000000000..d3ffcac1c522f --- /dev/null +++ b/drivers/misc/tc9564-pci.c @@ -0,0 +1,89 @@ +// SPDX-License-Identifier: GPL-2.0 + +/* + * Copyright (C) 2026 by RISCstar Solutions Corporation. All rights reserved. + */ + +/* + * The Toshiba TC9564 implements a PCIe Gen 3 switch that connects an + * upstream x4 port to three downstream PCIe ports. Two of the downstream + * ports are external, and the third is internal, implementing a PCIe + * endpoint with implements two PCIe functions. Each PCIe function drives + * a Synopsys XGMAC Ethernet interface capable of 10 Gbps operation. + * + * The TC9564 implements other functionality, including an embedded MCU, + * a UART, a GPIO controller, a reset controller, a clock controller, and + * interrupt handling. These features are separate from (and in some + * cases used by) both Ethernet XGMACs. Each Ethernet MAC must be + * attached to a working PHY for it to be functional, and for this + * reason either of them (or both!) might not be usable/used. + * + * This PCI driver binds to the Toshiba TC9564 (physical) PCI function + * (VID 0x1179, DID 0x0220). + */ + +#include <linux/device.h> +#include <linux/irqdomain.h> +#include <linux/of.h> +#include <linux/of_platform.h> +#include <linux/pci.h> + +#define DRIVER_NAME "tc9564-pci" + +static int +tc9564_function_probe(struct pci_dev *pdev, const struct pci_device_id *id) +{ + struct device *dev = &pdev->dev; + struct device_node *np; + int ret; + + /* Despite being a PCI device, we require devicetree */ + np = dev_of_node(dev); + if (!np) + return dev_err_probe(dev, -EINVAL, "no devicetree node\n"); + + ret = pcim_enable_device(pdev); + if (ret) + return ret; + + pci_set_master(pdev); + + /* Scan for pci-ep-bus nodes and probe their sub-devices */ + ret = of_platform_default_populate(np, NULL, dev); + if (ret) + goto err_clear_master; + + return 0; + +err_clear_master: + pci_clear_master(pdev); + + return dev_err_probe(dev, ret, "failed to populate platform bus\n"); +} + +static void tc9564_function_remove(struct pci_dev *pdev) +{ + of_platform_depopulate(&pdev->dev); + pci_clear_master(pdev); +} + +static const struct pci_device_id tc9564_function_id_table[] = { + { PCI_DEVICE(PCI_VENDOR_ID_TOSHIBA, 0x0220), }, + { }, +}; +MODULE_DEVICE_TABLE(pci, tc9564_function_id_table); + +static struct pci_driver tc9564_function_driver = { + .name = DRIVER_NAME, + .id_table = tc9564_function_id_table, + .probe = tc9564_function_probe, + .remove = tc9564_function_remove, + .driver = { + .name = DRIVER_NAME, + .owner = THIS_MODULE, + }, +}; +module_pci_driver(tc9564_function_driver); + +MODULE_DESCRIPTION("Toshiba TC9564 PCIe Embedded Function Driver"); +MODULE_LICENSE("GPL"); diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index 6501c949c5b76..b484f1b1d0e71 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -6388,6 +6388,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_XILINX, 0x5020, of_pci_make_dev_node); DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_XILINX, 0x5021, of_pci_make_dev_node); DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_REDHAT, 0x0005, of_pci_make_dev_node); DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_EFAR, 0x9660, of_pci_make_dev_node); +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_TOSHIBA, 0x0220, of_pci_make_dev_node); /* * Devices known to require a longer delay before first config space access -- 2.53.0 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] misc: tc9564: introduce base PCI driver 2026-08-13 22:29 ` [PATCH 2/2] misc: tc9564: introduce base PCI driver Alex Elder @ 2026-08-14 1:11 ` Greg KH 2026-08-14 7:31 ` Arnd Bergmann 2026-08-14 16:55 ` Alex Elder 2026-08-14 7:03 ` Krzysztof Kozlowski 1 sibling, 2 replies; 15+ messages in thread From: Greg KH @ 2026-08-14 1:11 UTC (permalink / raw) To: Alex Elder Cc: robh, krzk+dt, conor+dt, arnd, bhelgaas, daniel, mohdayaa, lbiancon, devicetree, linux-pci, linux-kernel On Thu, Aug 13, 2026 at 05:29:42PM -0500, Alex Elder wrote: > +#define DRIVER_NAME "tc9564-pci" What about just using KBUILD_MODNAME? > +static int > +tc9564_function_probe(struct pci_dev *pdev, const struct pci_device_id *id) But wow, this is a tiny driver, feels odd to have it in misc/ but ok, if you think it should be here... thanks, greg k-h ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] misc: tc9564: introduce base PCI driver 2026-08-14 1:11 ` Greg KH @ 2026-08-14 7:31 ` Arnd Bergmann 2026-08-14 16:55 ` Alex Elder 2026-08-14 16:55 ` Alex Elder 1 sibling, 1 reply; 15+ messages in thread From: Arnd Bergmann @ 2026-08-14 7:31 UTC (permalink / raw) To: Greg Kroah-Hartman, Alex Elder Cc: Rob Herring, krzk+dt, Conor Dooley, bhelgaas, daniel, mohdayaa, lbiancon, devicetree, linux-pci, linux-kernel On Fri, Aug 14, 2026, at 03:11, Greg KH wrote: > On Thu, Aug 13, 2026 at 05:29:42PM -0500, Alex Elder wrote: >> +#define DRIVER_NAME "tc9564-pci" > > What about just using KBUILD_MODNAME? > >> +static int >> +tc9564_function_probe(struct pci_dev *pdev, const struct pci_device_id *id) > > But wow, this is a tiny driver, feels odd to have it in misc/ but ok, if > you think it should be here... We have drivers/misc/rp1/ and drivers/misc/lan966x_pci*.c with similar functionality, so at least there is precedence for putting them here. From the old days, we still have drivers/mfd/sm501.c, drivers/mfd/cs5535-mfd.c, and a few others that open-code the on-chip components as mfd cels instead of using devicetree description. At some point, we should think about grouping them into a separate subdirectory. Arnd ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] misc: tc9564: introduce base PCI driver 2026-08-14 7:31 ` Arnd Bergmann @ 2026-08-14 16:55 ` Alex Elder 0 siblings, 0 replies; 15+ messages in thread From: Alex Elder @ 2026-08-14 16:55 UTC (permalink / raw) To: Arnd Bergmann, Greg Kroah-Hartman Cc: Rob Herring, krzk+dt, Conor Dooley, bhelgaas, daniel, mohdayaa, lbiancon, devicetree, linux-pci, linux-kernel On 8/14/26 2:31 AM, Arnd Bergmann wrote: > On Fri, Aug 14, 2026, at 03:11, Greg KH wrote: >> On Thu, Aug 13, 2026 at 05:29:42PM -0500, Alex Elder wrote: >>> +#define DRIVER_NAME "tc9564-pci" >> >> What about just using KBUILD_MODNAME? >> >>> +static int >>> +tc9564_function_probe(struct pci_dev *pdev, const struct pci_device_id *id) >> >> But wow, this is a tiny driver, feels odd to have it in misc/ but ok, if >> you think it should be here... > > We have drivers/misc/rp1/ and drivers/misc/lan966x_pci*.c with similar > functionality, so at least there is precedence for putting them here. Yes, exactly. > From the old days, we still have drivers/mfd/sm501.c, drivers/mfd/cs5535-mfd.c, > and a few others that open-code the on-chip components as mfd cels > instead of using devicetree description. > > At some point, we should think about grouping them into a separate > subdirectory. You mean for systems modeled with PCI endpoint bus, right? If there is consensus that now is a good time to do that I don't mind doing that work, but won't unless it's clearly requested. -Alex > > Arnd ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] misc: tc9564: introduce base PCI driver 2026-08-14 1:11 ` Greg KH 2026-08-14 7:31 ` Arnd Bergmann @ 2026-08-14 16:55 ` Alex Elder 1 sibling, 0 replies; 15+ messages in thread From: Alex Elder @ 2026-08-14 16:55 UTC (permalink / raw) To: Greg KH Cc: robh, krzk+dt, conor+dt, arnd, bhelgaas, daniel, mohdayaa, lbiancon, devicetree, linux-pci, linux-kernel On 8/13/26 8:11 PM, Greg KH wrote: > On Thu, Aug 13, 2026 at 05:29:42PM -0500, Alex Elder wrote: >> +#define DRIVER_NAME "tc9564-pci" > > What about just using KBUILD_MODNAME? Yes, I'll use that. The underscore versus dash doesn't matter... > >> +static int >> +tc9564_function_probe(struct pci_dev *pdev, const struct pci_device_id *id) > > But wow, this is a tiny driver, feels odd to have it in misc/ but ok, if > you think it should be here... I put it in misc/ because lan966xc_pci.c, which also uses a pci-ep-bus, is located there. That driver also calls of_platform_default_populate(), though it also loads a DT overlay which isn't needed here. It is indeed tiny, and your comment makes me think it could easily become a generic driver (along the lines of "simple-mfd-i2c.c"). That way other similar future SoCs could just add their compatible string. So two questions (for anyone): - Would that be preferred--rename this to target a generic situation? For example, "static-pci-ep-bus.c"? - Where should such a driver be located? For example, drivers/misc/, drivers/pci/controller/, or something else? -Alex > thanks, > > greg k-h ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] misc: tc9564: introduce base PCI driver 2026-08-13 22:29 ` [PATCH 2/2] misc: tc9564: introduce base PCI driver Alex Elder 2026-08-14 1:11 ` Greg KH @ 2026-08-14 7:03 ` Krzysztof Kozlowski 2026-08-14 16:55 ` Alex Elder 1 sibling, 1 reply; 15+ messages in thread From: Krzysztof Kozlowski @ 2026-08-14 7:03 UTC (permalink / raw) To: Alex Elder Cc: robh, krzk+dt, conor+dt, arnd, gregkh, bhelgaas, daniel, mohdayaa, lbiancon, devicetree, linux-pci, linux-kernel On Thu, Aug 13, 2026 at 05:29:42PM -0500, Alex Elder wrote: > +static struct pci_driver tc9564_function_driver = { > + .name = DRIVER_NAME, > + .id_table = tc9564_function_id_table, > + .probe = tc9564_function_probe, > + .remove = tc9564_function_remove, > + .driver = { > + .name = DRIVER_NAME, > + .owner = THIS_MODULE, You just copied some old driver. Why do you need this? > + }, > +}; > +module_pci_driver(tc9564_function_driver); > + > +MODULE_DESCRIPTION("Toshiba TC9564 PCIe Embedded Function Driver"); > +MODULE_LICENSE("GPL"); > diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c > index 6501c949c5b76..b484f1b1d0e71 100644 > --- a/drivers/pci/quirks.c > +++ b/drivers/pci/quirks.c > @@ -6388,6 +6388,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_XILINX, 0x5020, of_pci_make_dev_node); > DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_XILINX, 0x5021, of_pci_make_dev_node); > DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_REDHAT, 0x0005, of_pci_make_dev_node); > DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_EFAR, 0x9660, of_pci_make_dev_node); > +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_TOSHIBA, 0x0220, of_pci_make_dev_node); > > /* > * Devices known to require a longer delay before first config space access > -- > 2.53.0 > ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] misc: tc9564: introduce base PCI driver 2026-08-14 7:03 ` Krzysztof Kozlowski @ 2026-08-14 16:55 ` Alex Elder 2026-08-17 6:15 ` Krzysztof Kozlowski 0 siblings, 1 reply; 15+ messages in thread From: Alex Elder @ 2026-08-14 16:55 UTC (permalink / raw) To: Krzysztof Kozlowski Cc: robh, krzk+dt, conor+dt, arnd, gregkh, bhelgaas, daniel, mohdayaa, lbiancon, devicetree, linux-pci, linux-kernel On 8/14/26 2:03 AM, Krzysztof Kozlowski wrote: > On Thu, Aug 13, 2026 at 05:29:42PM -0500, Alex Elder wrote: >> +static struct pci_driver tc9564_function_driver = { >> + .name = DRIVER_NAME, >> + .id_table = tc9564_function_id_table, >> + .probe = tc9564_function_probe, >> + .remove = tc9564_function_remove, >> + .driver = { >> + .name = DRIVER_NAME, >> + .owner = THIS_MODULE, > > You just copied some old driver. Why do you need this? What do you mean I "just copied some old driver"? I do now see that a PCI driver doesn't need to set it, because pci_register_driver() sets it automatically. I will remove that in the next version. -Alex> >> + }, >> +}; >> +module_pci_driver(tc9564_function_driver); >> + >> +MODULE_DESCRIPTION("Toshiba TC9564 PCIe Embedded Function Driver"); >> +MODULE_LICENSE("GPL"); >> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c >> index 6501c949c5b76..b484f1b1d0e71 100644 >> --- a/drivers/pci/quirks.c >> +++ b/drivers/pci/quirks.c >> @@ -6388,6 +6388,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_XILINX, 0x5020, of_pci_make_dev_node); >> DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_XILINX, 0x5021, of_pci_make_dev_node); >> DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_REDHAT, 0x0005, of_pci_make_dev_node); >> DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_EFAR, 0x9660, of_pci_make_dev_node); >> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_TOSHIBA, 0x0220, of_pci_make_dev_node); >> >> /* >> * Devices known to require a longer delay before first config space access >> -- >> 2.53.0 >> ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] misc: tc9564: introduce base PCI driver 2026-08-14 16:55 ` Alex Elder @ 2026-08-17 6:15 ` Krzysztof Kozlowski 0 siblings, 0 replies; 15+ messages in thread From: Krzysztof Kozlowski @ 2026-08-17 6:15 UTC (permalink / raw) To: Alex Elder Cc: robh, krzk+dt, conor+dt, arnd, gregkh, bhelgaas, daniel, mohdayaa, lbiancon, devicetree, linux-pci, linux-kernel On 14/08/2026 18:55, Alex Elder wrote: > On 8/14/26 2:03 AM, Krzysztof Kozlowski wrote: >> On Thu, Aug 13, 2026 at 05:29:42PM -0500, Alex Elder wrote: >>> +static struct pci_driver tc9564_function_driver = { >>> + .name = DRIVER_NAME, >>> + .id_table = tc9564_function_id_table, >>> + .probe = tc9564_function_probe, >>> + .remove = tc9564_function_remove, >>> + .driver = { >>> + .name = DRIVER_NAME, >>> + .owner = THIS_MODULE, >> >> You just copied some old driver. Why do you need this? > > What do you mean I "just copied some old driver"? > > I do now see that a PCI driver doesn't need to set it, > because pci_register_driver() sets it automatically. > > I will remove that in the next version. Old driver because we removed it 13 years ago from all drivers and only a few left-overs were still hanging around. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2026-08-17 6:18 UTC | newest] Thread overview: 15+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-08-13 22:29 [PATCH 0/2] PCI: introduce TC9564 misc driver Alex Elder 2026-08-13 22:29 ` [PATCH 1/2] dt-bindings: misc: introduce pci1179,0220.yaml Alex Elder 2026-08-14 7:01 ` Krzysztof Kozlowski 2026-08-14 16:55 ` Alex Elder 2026-08-17 6:18 ` Krzysztof Kozlowski 2026-08-15 20:46 ` Rob Herring (Arm) 2026-08-17 2:43 ` Rob Herring 2026-08-13 22:29 ` [PATCH 2/2] misc: tc9564: introduce base PCI driver Alex Elder 2026-08-14 1:11 ` Greg KH 2026-08-14 7:31 ` Arnd Bergmann 2026-08-14 16:55 ` Alex Elder 2026-08-14 16:55 ` Alex Elder 2026-08-14 7:03 ` Krzysztof Kozlowski 2026-08-14 16:55 ` Alex Elder 2026-08-17 6:15 ` Krzysztof Kozlowski
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox