[PATCH v6 0/6] soc: aspeed: Add BMC and host driver for PCIe BMC device
Grégoire Layet <[email protected]>
| Newsgroups | gmane.linux.kernel,gmane.linux.drivers.devicetree,gmane.linux.serial,gmane.linux.ports.arm.kernel |
|---|---|
| Message-ID | <[email protected]> |
This is the v6 for upstreaming the VUART over PCIe BMC device drivers. The initial drivers were taken from the ASPEED kernel SDK (master-v6.18) [1], and have been adapted greatly. 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 v5 [3]: - Fix small formatting issue in Patch 4's commit message. - Use static const for MFD cell and uart_port in the mfd 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 v5, VUART data flow and MSI interrupts have been verified as working on the test hardware, in both directions and on both VUARTs. 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 [4]. 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]/ [4]: https://lore.kernel.org/linux-aspeed/[email protected]/ Signed-off-by: Grégoire Layet <[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 mfd: aspeed-pci-core: add 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 Documentation/devicetree/bindings/serial/8250.yaml | 42 +++++++- MAINTAINERS | 6 ++ arch/arm/boot/dts/aspeed/aspeed-g6.dtsi | 14 ++- drivers/mfd/Kconfig | 12 +++ drivers/mfd/Makefile | 2 + drivers/mfd/aspeed-pci-core.c | 115 +++++++++++++++++++++ drivers/tty/serial/8250/8250_aspeed_vuart.c | 92 +++++++++++++++++ 7 files changed, 277 insertions(+), 6 deletions(-) --- base-commit: 6fdec78001b3b94f1b6000bbb2f9ec3498f1c73e change-id: 20260818-aspeed-driver-v6-db9953ca4141 Best regards, -- Grégoire Layet <[email protected]>