From: "Grégoire Layet" <gregoire.layet@9elements.com>
To: joel@jms.id.au, andrew@codeconstruct.com.au, lkundrak@v3.sk,
devicetree@vger.kernel.org, gregkh@linuxfoundation.org,
jirislaby@kernel.org, robh@kernel.org, krzk+dt@kernel.org,
conor+dt@kernel.org, lee@kernel.org
Cc: andrew@lunn.ch, jacky_chou@aspeedtech.com,
yh_chung@aspeedtech.com, ninad@linux.ibm.com,
anirudhsriniv@gmail.com, tan.siewert@9elements.com,
linux-serial@vger.kernel.org, mfd@lists.linux.dev,
linux-aspeed@lists.ozlabs.org,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org,
"Grégoire Layet" <gregoire.layet@9elements.com>
Subject: [PATCH v5 0/6] soc: aspeed: Add BMC and host driver for PCIe BMC device
Date: Wed, 5 Aug 2026 14:19:47 +0200 [thread overview]
Message-ID: <cover.1785932211.git.gregoire.layet@9elements.com> (raw)
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/cover.1783524645.git.gregoire.layet@9elements.com/
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
next reply other threads:[~2026-08-05 12:20 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-05 12:19 Grégoire Layet [this message]
2026-08-05 12:19 ` [PATCH v5 1/6] dt-bindings: serial: 8250: aspeed: add ast2600 and aspeed,vuart-over-pci Grégoire Layet
2026-08-05 12:19 ` [PATCH v5 2/6] serial: 8250_aspeed_vuart: add aspeed,ast2600-vuart compatible string Grégoire Layet
2026-08-05 12:19 ` [PATCH v5 3/6] serial: 8250_aspeed_vuart: add VUART over PCI Grégoire Layet
2026-08-05 12:19 ` [PATCH v5 4/6] soc: mfd: add ASPEED AST2600 PCIe BMC device driver Grégoire Layet
2026-08-05 12:19 ` [PATCH v5 5/6] ARM: dts: aspeed: g6: Change vuart compatible string for ast2600 Grégoire Layet
2026-08-05 12:19 ` [PATCH v5 6/6] ARM: dts: aspeed: g6: add aspeed,vuart-over-pci prop to vuart3 and 4 Grégoire Layet
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=cover.1785932211.git.gregoire.layet@9elements.com \
--to=gregoire.layet@9elements.com \
--cc=andrew@codeconstruct.com.au \
--cc=andrew@lunn.ch \
--cc=anirudhsriniv@gmail.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=jacky_chou@aspeedtech.com \
--cc=jirislaby@kernel.org \
--cc=joel@jms.id.au \
--cc=krzk+dt@kernel.org \
--cc=lee@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-aspeed@lists.ozlabs.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=lkundrak@v3.sk \
--cc=mfd@lists.linux.dev \
--cc=ninad@linux.ibm.com \
--cc=robh@kernel.org \
--cc=tan.siewert@9elements.com \
--cc=yh_chung@aspeedtech.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