[PATCH v5 0/6] soc: aspeed: Add BMC and host driver for PCIe BMC device
Grégoire Layet <[email protected]> Wed, 5 Aug 2026 14:19:47 +0200
| Newsgroups | org.ozlabs.lists.linux-aspeed,dev.linux.lists.mfd,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel,org.kernel.vger.linux-serial |
|---|---|
| Message-ID | <[email protected]> |
This is the v5 for upstreaming the VUART over PCIe BMC device drivers.
The initial drivers were taken from the ASPEED kernel SDK
(master-v6.18) [1].
There are two drivers: a BMC-side driver and a host-side driver.
Together they enable host<->BMC VUART communication via PCIe.
The virtual UART is an 8250-compatible register set. It is called
'virtual' because it is internally a simple FIFO.
On the AST2600, two VUARTs can be exposed over PCI via the PCI BMC device.
The host cannot access the BMC's memory. Only the exposed features are
accessible. These are the KCS4 channel and 2 VUARTs. There is also some
mailbox register functionality for a communication between
the host and the BMC. More information can be found here [2].
Changes since v4 [3]:
- Squashed '8250' DT binding changes in one patch based on Krzysztof's
review.
- Removed 'aspeed,sirq-polarity-sense' support on new
'aspeed,ast2600-vuart' compatible string as it's a deprecated property.
- Renamed 'syscon' to 'aspeed,scu-syscon' in '8250' DT binding.
- Cleanup in BMC driver:
- Changed bit 14 to RESERVED macro
- Changed macros ordering
- use FIELD_PREP macro
- Cleaned up of the host-side driver:
- Removed unused INTX. Only use MSI interrupt.
- Proper use of dev_err_probe.
- Use of 'module_pci_driver'.
- Used managed functions and simplified exit code.
- Changed the host side driver location:
- Now in driver/mfd/aspeed-pci-core.c
- Changed code to use MFD cells.
VUART are sub driver of the core driver.
This allows for easy expansion for KCS support.
- The core driver now only sets up MSI interrupts and
instantiates the 8250 sub-driver.
The host driver will performs multiple functions. The AST2600 also
supports LPC over PCI, with a specific KCS channel (KCS4). This host core
driver should also be used to enable the IPMI automatically via this KCS
channel.
Tested:
As with v4, VUART data flow and MSI interrupts have been verified
as working on the test hardware.
BMC: Asus IPMI Kommando Card R1.01, AST2600 A3 running OpenBMC
Host: Linux kernel v7.0.0
This series only supports the AST2600; the AST2700 is not supported.
The findings regarding the MSI interrupt numbers are explained in the v4
cover letter [3].
As with v3 and v4, I would like to know whether I should add the
'lpc-io-reg' and 'lpc-interrupt' values to the vuart3 and vuart4 nodes
directly in the 'aspeed-g6.dtsi'. The host driver is not capable of
finding the vuart address on its own, so they are hardcoded to 0x3f8 and
0x2f8. It will not work with other addresses, so perhaps they should be
in the .dtsi to ensure the correct configuration for the two vuart over
PCI.
[1]: https://github.com/AspeedTech-BMC/linux/tree/aspeed-master-v6.18/drivers/soc/aspeed
[2]: https://lore.kernel.org/linux-aspeed/CAFi2wKYOAotiezepDqaR5PZDqDaPKKDfAEnpx5EHC0mL39hy6w@mail.gmail.com/
[3]: https://lore.kernel.org/linux-aspeed/[email protected]/
Grégoire Layet (6):
dt-bindings: serial: 8250: aspeed: add ast2600 and
aspeed,vuart-over-pci
serial: 8250_aspeed_vuart: add aspeed,ast2600-vuart compatible string
serial: 8250_aspeed_vuart: add VUART over PCI
soc: mfd: add ASPEED AST2600 PCIe BMC device driver
ARM: dts: aspeed: g6: Change vuart compatible string for ast2600
ARM: dts: aspeed: g6: add aspeed,vuart-over-pci prop to vuart3 and 4
.../devicetree/bindings/serial/8250.yaml | 42 +++++-
MAINTAINERS | 6 +
arch/arm/boot/dts/aspeed/aspeed-g6.dtsi | 12 +-
drivers/mfd/Kconfig | 12 ++
drivers/mfd/Makefile | 2 +
drivers/mfd/aspeed-pci-core.c | 120 ++++++++++++++++++
drivers/tty/serial/8250/8250_aspeed_vuart.c | 92 ++++++++++++++
7 files changed, 280 insertions(+), 6 deletions(-)
create mode 100644 drivers/mfd/aspeed-pci-core.c
base-commit: 253b1036b9163f23f7b18274a0d4e904ac8821c5
--
2.54.0