Environment Setup

Hardware

Connecting AST2600-EVB I2C5 to I2C14.

Kernel

Mctp.cfg

CONFIG_MCTP=y
CONFIG_MCTP_SERIAL=y
CONFIG_MCTP_TRANSPORT_I2C=y

Device Tree

diff --git a/arch/arm/boot/dts/aspeed-ast2600-evb.dts b/arch/arm/boot/dts/aspeed-ast2600-evb.dts
index de83c0eb1d6e..9062ddfcb7c3 100644
--- a/arch/arm/boot/dts/aspeed-ast2600-evb.dts
+++ b/arch/arm/boot/dts/aspeed-ast2600-evb.dts
@@ -5,6 +5,7 @@

 #include "aspeed-g6.dtsi"
 #include <dt-bindings/gpio/aspeed-gpio.h>
+#include <dt-bindings/i2c/i2c.h>

 / {
        model = "AST2600 EVB";
@@ -225,6 +226,11 @@ &i2c3 {

 &i2c4 {
        status = "okay";
+       mctp-controller;
+       mctp@12 {
+               compatible = "mctp-i2c-controller";
+               reg = <(0x12 | I2C_OWN_SLAVE_ADDRESS)>;
+       };
 };

 &i2c5 {
@@ -269,6 +275,12 @@ &i2c12 {

 &i2c13 {
        status = "okay";
+
+       mctp-controller;
+       mctp@10 {
+               compatible = "mctp-i2c-controller";
+               reg = <(0x10 | I2C_OWN_SLAVE_ADDRESS)>;
+       };
 };

Install to image

Add to conf/local.conf

IMAGE_INSTALL:append = " mctp pldm libmctp webui-vue "

Runtime

Initial Setup

# Link up MCTP I2C13
mctp link set mctpi2c13 up

# MCTP I2C13 has an EID=0x0a
mctp address add 0x0a dev mctpi2c13

# EID=0x0b has a physical address 0x70 on bus mctp i2c13
mctp neigh add 0x0b dev mctpi2c13 lladdr 0x70

# Traffic to EID=0x0b will send via mctp i2c13
mctp route add 0x0b via mctpi2c13

Communication

mctp addr add 10 dev mctpi2c13

busctl call xyz.openbmc_project.MCTP /xyz/openbmc_project/mctp au.com.CodeConstruct.MCTP LearnEndpoint say "mctpi2c13" 1 0x70

busctl tree xyz.openbmc_project.MCTP

busctl introspect xyz.openbmc_project.MCTP /xyz/openbmc_project/mctp/1/8

Reference