diff --git a/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-congo.dts b/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-congo.dts index 122479c9859cf8..5ed8fcf414800e 100644 --- a/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-congo.dts +++ b/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-congo.dts @@ -875,6 +875,26 @@ i2c-scl-hz = <1000000>; mctp-controller; + sbtsi_p0_iod0: sbtsi@0,22400000118 { + reg = <0x0 0x224 0x00000118>; + assigned-address = <0x4c>; + }; + + sbrmi_p0_iod0: sbrmi@0,22400001118 { + reg = <0x0 0x224 0x00001118>; + assigned-address = <0x3c>; + }; + + sbtsi_p0_iod0_AB: sbtsi@0,22400000119 { + reg = <0x0 0x224 0x00000119>; + assigned-address = <0x4c>; + }; + + sbrmi_p0_iod0_AB: sbrmi@0,22400001119 { + reg = <0x0 0x224 0x00001119>; + assigned-address = <0x3c>; + }; + scoob_p0: scoob@0,22400002118 { reg = <0x0 0x224 0x00002118>; mrl = <69>; diff --git a/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-eagle.dts b/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-eagle.dts index a0d689b9385c8c..c00b0788387139 100644 --- a/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-eagle.dts +++ b/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-eagle.dts @@ -872,6 +872,16 @@ i3c-scl-hz = <12500000>; i2c-scl-hz = <1000000>; mctp-controller; + + sbtsi_p0_sp8: sbtsi@0,2240000011A { + reg = <0x0 0x224 0x0000011A>; + assigned-address = <0x4c>; + }; + + sbrmi_p0_sp8: sbrmi@0,2240000111A { + reg = <0x0 0x224 0x0000111A>; + assigned-address = <0x3c>; + }; }; #ifdef I3C_HUB diff --git a/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-falcon.dts b/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-falcon.dts index 19dcc6a11be6f8..2eb29b5a480920 100644 --- a/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-falcon.dts +++ b/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-falcon.dts @@ -431,6 +431,16 @@ i3c-scl-hz = <12500000>; i2c-scl-hz = <1000000>; mctp-controller; + + sbtsi_p0_sp8: sbtsi@0,2240000011A { + reg = <0x0 0x224 0x0000011A>; + assigned-address = <0x4c>; + }; + + sbrmi_p0_sp8: sbrmi@0,2240000111A { + reg = <0x0 0x224 0x0000111A>; + assigned-address = <0x3c>; + }; }; #ifdef I3C_HUB diff --git a/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-hornbill.dts b/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-hornbill.dts index d74a8fe64153bd..799bccec70d2dd 100644 --- a/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-hornbill.dts +++ b/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-hornbill.dts @@ -829,6 +829,11 @@ i2c-scl-hz = <1000000>; mctp-controller; + sbtsi_p0_sp8: sbtsi@0,2240000011A { + reg = <0x0 0x224 0x0000011A>; + assigned-address = <0x4c>; + }; + sbrmi_p0_sp8: sbrmi@0,2240000111A { reg = <0x0 0x224 0x0000111A>; assigned-address = <0x3c>; @@ -844,12 +849,30 @@ i2c-scl-hz = <1000000>; mctp-controller; + /* TSI SP8 2P */ + sbtsi_p1_sp8: sbtsi@0,2240100011A { + reg = <0x0 0x224 0x0100011A>; + assigned-address = <0x48>; + }; sbrmi_p1_sp8: sbrmi@0,2240100111A { reg = <0x0 0x224 0x0100111A>; assigned-address = <0x38>; dimm-ids = <0x80 0x90 0x81 0x91 0x82 0x92 0x83 0x93 0x84 0x94 0x85 0x95 0x86 0x96 0x87 0x97>; }; + + /* TSI SP8 2x1P */ + sbtsi_2x1p_p1_sp8: sbtsi@0,2240000011A { + reg = <0x0 0x224 0x0000011A>; + assigned-address = <0x48>; + }; + + /* RMI SP8 2x1P */ + sbrmi_2x1p_p1_sp8: sbrmi@0,2240000111A { + reg = <0x0 0x224 0x0000111A>; + assigned-address = <0x38>; + dimm-ids = <0x80 0x90 0x81 0x91 0x82 0x92 0x83 0x93 0x84 0x94 0x85 0x95 0x86 0x96 0x87 0x97>; + }; }; #ifdef I3C_HUB diff --git a/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-kenya.dts b/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-kenya.dts index 75c101fd635a86..782c0a6e6367ab 100755 --- a/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-kenya.dts +++ b/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-kenya.dts @@ -565,6 +565,26 @@ i2c-scl-hz = <1000000>; mctp-controller; + sbtsi_p0_iod0: sbtsi@0,22400000118 { + reg = <0x0 0x224 0x00000118>; + assigned-address = <0x4c>; + }; + + sbrmi_p0_iod0: sbrmi@0,22400001118 { + reg = <0x0 0x224 0x00001118>; + assigned-address = <0x3c>; + }; + + sbtsi_p0_iod0_AB: sbtsi@0,22400000119 { + reg = <0x0 0x224 0x00000119>; + assigned-address = <0x4c>; + }; + + sbrmi_p0_iod0_AB: sbrmi@0,22400001119 { + reg = <0x0 0x224 0x00001119>; + assigned-address = <0x3c>; + }; + scoob_p0: scoob@0,22400002118 { reg = <0x0 0x224 0x00002118>; mrl = <69>; diff --git a/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-morocco.dts b/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-morocco.dts index c1814ff77b9e71..e117ffcca9dcf3 100644 --- a/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-morocco.dts +++ b/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-morocco.dts @@ -943,6 +943,26 @@ i2c-scl-hz = <1000000>; mctp-controller; + sbtsi_p0_iod0: sbtsi@0,22400000118 { + reg = <0x0 0x224 0x00000118>; + assigned-address = <0x4c>; + }; + + sbrmi_p0_iod0: sbrmi@0,22400001118 { + reg = <0x0 0x224 0x00001118>; + assigned-address = <0x3c>; + }; + + sbtsi_p0_iod0_AB: sbtsi@0,22400000119 { + reg = <0x0 0x224 0x00000119>; + assigned-address = <0x4c>; + }; + + sbrmi_p0_iod0_AB: sbrmi@0,22400001119 { + reg = <0x0 0x224 0x00001119>; + assigned-address = <0x3c>; + }; + scoob_p0: scoob@0,22400002118 { reg = <0x0 0x224 0x00002118>; mrl = <69>; @@ -964,6 +984,54 @@ i2c-scl-hz = <1000000>; mctp-controller; + /* TSI Venice A0 2P */ + sbtsi_p1_iod0: sbtsi@0,22401000118 { + reg = <0x0 0x224 0x01000118>; + assigned-address = <0x48>; + }; + + /* RMI Venice A0 2P */ + sbrmi_p1_iod0: sbrmi@0,22401001118 { + reg = <0x0 0x224 0x01001118>; + assigned-address = <0x38>; + }; + + /* TSI Venice A0 2X1P */ + sbtsi_2x1p_p1_iod0: sbtsi@0,22400000118 { + reg = <0x0 0x224 0x00000118>; + assigned-address = <0x48>; + }; + + /* RMI Venice A0 2X1P */ + sbrmi_2x1p_p1_iod0: sbrmi@0,22400001118 { + reg = <0x0 0x224 0x00001118>; + assigned-address = <0x38>; + }; + + /* TSI Venice AB/B0 2P */ + sbtsi_p1_iod0_AB: sbtsi@0,22401000119 { + reg = <0x0 0x224 0x01000119>; + assigned-address = <0x48>; + }; + + /* RMI Venice AB/B0 2P */ + sbrmi_p1_iod0_AB: sbrmi@0,22401001119 { + reg = <0x0 0x224 0x01001119>; + assigned-address = <0x38>; + }; + + /* TSI Venice AB/B0 2x1P */ + sbtsi_2x1p_p1_AB_iod0: sbtsi@0,22400000119 { + reg = <0x0 0x224 0x00000119>; + assigned-address = <0x48>; + }; + + /* RMI Venice AB/B0 2x1P */ + sbrmi_2x1p_p1_AB_iod0: sbrmi@0,22400001119 { + reg = <0x0 0x224 0x00001119>; + assigned-address = <0x38>; + }; + scoob_2x1p_p1: scoob@0,22400002118 { reg = <0x0 0x224 0x00002118>; mrl = <69>; diff --git a/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-nigeria.dts b/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-nigeria.dts index b80c1334bc3e02..c6292f243ead4a 100755 --- a/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-nigeria.dts +++ b/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-nigeria.dts @@ -714,6 +714,26 @@ i2c-scl-hz = <1000000>; mctp-controller; + sbtsi_p0_iod0: sbtsi@0,22400000118 { + reg = <0x0 0x224 0x00000118>; + assigned-address = <0x4c>; + }; + + sbrmi_p0_iod0: sbrmi@0,22400001118 { + reg = <0x0 0x224 0x00001118>; + assigned-address = <0x3c>; + }; + + sbtsi_p0_iod0_AB: sbtsi@0,22400000119 { + reg = <0x0 0x224 0x00000119>; + assigned-address = <0x4c>; + }; + + sbrmi_p0_iod0_AB: sbrmi@0,22400001119 { + reg = <0x0 0x224 0x00001119>; + assigned-address = <0x3c>; + }; + scoob_p0: scoob@0,22400002118 { reg = <0x0 0x224 0x00002118>; mrl = <69>; @@ -735,6 +755,54 @@ i2c-scl-hz = <1000000>; mctp-controller; + /* TSI Venice A0 2P */ + sbtsi_p1_iod0: sbtsi@0,22401000118 { + reg = <0x0 0x224 0x01000118>; + assigned-address = <0x48>; + }; + + /* RMI Venice A0 2P */ + sbrmi_p1_iod0: sbrmi@0,22401001118 { + reg = <0x0 0x224 0x01001118>; + assigned-address = <0x38>; + }; + + /* TSI Venice A0 2X1P */ + sbtsi_2x1p_p1_iod0: sbtsi@0,22400000118 { + reg = <0x0 0x224 0x00000118>; + assigned-address = <0x48>; + }; + + /* RMI Venice A0 2X1P */ + sbrmi_2x1p_p1_iod0: sbrmi@0,22400001118 { + reg = <0x0 0x224 0x00001118>; + assigned-address = <0x38>; + }; + + /* TSI Venice AB/B0 2P */ + sbtsi_p1_iod0_AB: sbtsi@0,22401000119 { + reg = <0x0 0x224 0x01000119>; + assigned-address = <0x48>; + }; + + /* RMI Venice AB/B0 2P */ + sbrmi_p1_iod0_AB: sbrmi@0,22401001119 { + reg = <0x0 0x224 0x01001119>; + assigned-address = <0x38>; + }; + + /* TSI Venice AB/B0 2x1P */ + sbtsi_2x1p_p1_AB_iod0: sbtsi@0,22400000119 { + reg = <0x0 0x224 0x00000119>; + assigned-address = <0x48>; + }; + + /* RMI Venice AB/B0 2x1P */ + sbrmi_2x1p_p1_AB_iod0: sbrmi@0,22400001119 { + reg = <0x0 0x224 0x00001119>; + assigned-address = <0x38>; + }; + scoob_2x1p_p1: scoob@0,22400002118 { reg = <0x0 0x224 0x00002118>; mrl = <69>; diff --git a/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-seagull.dts b/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-seagull.dts index 26fde2c8d4f766..82940764bc70e8 100644 --- a/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-seagull.dts +++ b/arch/arm64/boot/dts/aspeed/aspeed-bmc-amd-seagull.dts @@ -554,6 +554,16 @@ i3c-scl-hz = <12500000>; i2c-scl-hz = <1000000>; mctp-controller; + + sbtsi_p0_sp8: sbtsi@0,2240000011A { + reg = <0x0 0x224 0x0000011A>; + assigned-address = <0x4c>; + }; + + sbrmi_p0_sp8: sbrmi@0,2240000111A { + reg = <0x0 0x224 0x0000111A>; + assigned-address = <0x3c>; + }; }; &i3c5 { @@ -563,6 +573,30 @@ i3c-scl-hz = <12500000>; i2c-scl-hz = <1000000>; mctp-controller; + + /* TSI SP8 2P */ + sbtsi_p1_sp8: sbtsi@0,2240100011A { + reg = <0x0 0x224 0x0100011A>; + assigned-address = <0x48>; + }; + + /* RMI SP8 2P */ + sbrmi_p1_sp8: sbrmi@0,2240100111A { + reg = <0x0 0x224 0x0100111A>; + assigned-address = <0x38>; + }; + + /* TSI SP8 2x1P */ + sbtsi_2x1p_p1_sp8: sbtsi@0,2240000011A { + reg = <0x0 0x224 0x0000011A>; + assigned-address = <0x48>; + }; + + /* RMI SP8 2x1P */ + sbrmi_2x1p_p1_sp8: sbrmi@0,2240000111A { + reg = <0x0 0x224 0x0000111A>; + assigned-address = <0x38>; + }; }; #ifdef I3C_HUB diff --git a/drivers/misc/amd-apml/apml_sbtsi.c b/drivers/misc/amd-apml/apml_sbtsi.c index d4900ed4bd84fd..0baa9514947a4a 100644 --- a/drivers/misc/amd-apml/apml_sbtsi.c +++ b/drivers/misc/amd-apml/apml_sbtsi.c @@ -422,33 +422,6 @@ static const char *sbtsi_addr_to_label(u8 addr) } } -static void map_sbtsi_pid_to_static_addr(struct i3c_device *i3cdev, - struct apml_sbtsi_device *tsi_dev) -{ - if ((i3cdev->bus->id == 4) && - ((i3cdev->desc->info.pid == 0x118) || - (i3cdev->desc->info.pid == 0x22400000119) || - (i3cdev->desc->info.pid == 0x2240000011A))) - { - tsi_dev->dev_static_addr = 0x4C; - } - else if ((i3cdev->bus->id == 5) && - ((i3cdev->desc->info.pid == 0x118) || - (i3cdev->desc->info.pid == 0x01000118) || - (i3cdev->desc->info.pid == 0x22400000119) || - (i3cdev->desc->info.pid == 0x22401000119) || - (i3cdev->desc->info.pid == 0x2240000011A) || - (i3cdev->desc->info.pid == 0x2240100011A))) - { - tsi_dev->dev_static_addr = 0x48; - } - else - { - dev_err(&i3cdev->dev, "unknown pid. pid = 0x%llx\n", - i3cdev->desc->info.pid); - } -} - static int create_misc_tsi_device(struct apml_sbtsi_device *tsi_dev, struct device *dev) { @@ -510,14 +483,7 @@ static int sbtsi_i3c_probe(struct i3c_device *i3cdev) mutex_init(&tsi_dev->lock); /* Need to verify for the static address for i3cdev */ - tsi_dev->dev_static_addr = i3cdev->desc->info.static_addr; - map_sbtsi_pid_to_static_addr(i3cdev, tsi_dev); - if (tsi_dev->dev_static_addr == 0) - { - dev_info(dev, "SBTSI: PID = 0x%llx, static address zero, skip the device\n", - i3cdev->desc->info.pid); - return -ENXIO; - } + tsi_dev->dev_static_addr = i3cdev->desc->info.dyn_addr; hwmon_dev_name = devm_kasprintf(dev, GFP_KERNEL, "sbtsi_%s", sbtsi_addr_to_label(tsi_dev->dev_static_addr)); @@ -639,23 +605,15 @@ static void sbtsi_i2c_remove(struct i2c_client *client) static const struct i3c_device_id sbtsi_i3c_id[] = { /* (MID, PARTID, EXTIN, DRVDATA) */ I3C_DEVICE_EXTRA_INFO(0, 0x0000, 0x118, NULL), /* P0 - IOD0 - SBTSI */ - I3C_DEVICE_EXTRA_INFO(0, 0x0001, 0x118, NULL), /* P0 - IOD1 - SBTST */ I3C_DEVICE_EXTRA_INFO(0, 0x0100, 0x118, NULL), /* P1 - IOD0 - SBTSI */ - I3C_DEVICE_EXTRA_INFO(0, 0x0101, 0x118, NULL), /* P1 - IOD1 - SBTSI */ I3C_DEVICE_EXTRA_INFO(0x112, 0, 0x1, NULL), I3C_DEVICE_EXTRA_INFO(0, 0x0, 0x0, NULL), I3C_DEVICE_EXTRA_INFO(0x112, 0x0, 0x118, NULL), /* Socket:0, IOD:0 */ - I3C_DEVICE_EXTRA_INFO(0x112, 0x1, 0x118, NULL), /* Socket:0, IOD:1 */ I3C_DEVICE_EXTRA_INFO(0x112, 0x100, 0x118, NULL), /* Socket:1 IOD:0 */ - I3C_DEVICE_EXTRA_INFO(0x112, 0x101, 0x118, NULL), /* Socket:1 IOD:1 */ - I3C_DEVICE_EXTRA_INFO(0x112, 0x0, 0x119, NULL), /* Socket:0, IOD:0 */ - I3C_DEVICE_EXTRA_INFO(0x112, 0x1, 0x119, NULL), /* Socket:0, IOD:1 */ - I3C_DEVICE_EXTRA_INFO(0x112, 0x100, 0x119, NULL), /* Socket:1 IOD:0 */ - I3C_DEVICE_EXTRA_INFO(0x112, 0x101, 0x119, NULL), /* Socket:1 IOD:1 */ + I3C_DEVICE_EXTRA_INFO(0x112, 0x0, 0x119, NULL), /* Venice Socket:0, IOD:0 AB/B0 */ + I3C_DEVICE_EXTRA_INFO(0x112, 0x100, 0x119, NULL), /* Venice Socket:1 IOD:0 AB/B0 */ I3C_DEVICE_EXTRA_INFO(0x112, 0x0, 0x11A, NULL), /* SP8 Socket:0, IOD:0 */ - I3C_DEVICE_EXTRA_INFO(0x112, 0x1, 0x11A, NULL), /* SP8 Socket:0, IOD:1 */ I3C_DEVICE_EXTRA_INFO(0x112, 0x100, 0x11A, NULL), /* SP8 Socket:1 IOD:0 */ - I3C_DEVICE_EXTRA_INFO(0x112, 0x101, 0x11A, NULL), /* SP8 Socket:1 IOD:1 */ {} }; MODULE_DEVICE_TABLE(i3c, sbtsi_i3c_id); diff --git a/drivers/misc/amd-apml/sbrmi.c b/drivers/misc/amd-apml/sbrmi.c index 66da7df3b94a98..f26e7feef1e882 100644 --- a/drivers/misc/amd-apml/sbrmi.c +++ b/drivers/misc/amd-apml/sbrmi.c @@ -382,33 +382,6 @@ static const struct file_operations sbrmi_fops = { .compat_ioctl = sbrmi_ioctl, }; -static void map_sbrmi_pid_to_static_addr(struct i3c_device *i3cdev, - struct apml_sbrmi_device *rmi_dev) -{ - if ((i3cdev->bus->id == 4) && - ((i3cdev->desc->info.pid == 0x1118) || - (i3cdev->desc->info.pid == 0x22400001119) || - (i3cdev->desc->info.pid == 0x2240000111A))) - { - rmi_dev->dev_static_addr = 0x3C; - } - else if ((i3cdev->bus->id == 5) && - ((i3cdev->desc->info.pid == 0x1118) || - (i3cdev->desc->info.pid == 0x01001118) || - (i3cdev->desc->info.pid == 0x22400001119) || - (i3cdev->desc->info.pid == 0x22401001119) || - (i3cdev->desc->info.pid == 0x2240000111A) || - (i3cdev->desc->info.pid == 0x2240100111A))) - { - rmi_dev->dev_static_addr = 0x38; - } - else - { - dev_err(&i3cdev->dev, "unknown pid. pid = 0x%llx\n", - i3cdev->desc->info.pid); - } -} - static int create_misc_rmi_device(struct apml_sbrmi_device *rmi_dev, struct device *dev) { @@ -711,13 +684,7 @@ static int sbrmi_i3c_probe(struct i3c_device *i3cdev) dev_set_drvdata(dev, (void *)rmi_dev); /* Need to verify for the static address for i3cdev */ - rmi_dev->dev_static_addr = i3cdev->desc->info.static_addr; - map_sbrmi_pid_to_static_addr(i3cdev, rmi_dev); - if (rmi_dev->dev_static_addr == 0) - { - dev_info(dev, "SBRMI: PID = 0x%llx, static address zero, skip the device\n", - i3cdev->desc->info.pid); - } + rmi_dev->dev_static_addr = i3cdev->desc->info.dyn_addr; // Read DIMM ID ret = of_property_read_u32_array(dev->of_node, "dimm-ids", dimm_id, MAX_DIMM_COUNT); @@ -862,11 +829,11 @@ static const struct i3c_device_id sbrmi_i3c_id[] = { I3C_DEVICE_EXTRA_INFO(0x112, 0x0, 0x2, NULL), I3C_DEVICE_EXTRA_INFO(0x112, 0x0, 0x118, NULL), /* Socket:0, IOD:0 */ I3C_DEVICE_EXTRA_INFO(0x112, 0x100, 0x118, NULL), /* Socket:1 IOD:0 */ - I3C_DEVICE_EXTRA_INFO(0x112, 0x0, 0x119, NULL), /* Socket:0, IOD:0 */ - I3C_DEVICE_EXTRA_INFO(0x112, 0x100, 0x119, NULL), /* Socket:1 IOD:0 */ - I3C_DEVICE_EXTRA_INFO(0x112, 0x0, 0x11A, NULL), /* SP8 Socket:0, IOD:0 */ - I3C_DEVICE_EXTRA_INFO(0x112, 0x100, 0x11A, NULL), /* Socket:1 IOD:0 */ I3C_DEVICE_EXTRA_INFO(0, 0x0, 0x0, NULL), + I3C_DEVICE_EXTRA_INFO(0x112, 0x0, 0x119, NULL), /* SP7 Socket:0, IOD:0 AB/B0*/ + I3C_DEVICE_EXTRA_INFO(0x112, 0x100, 0x119, NULL), /* SP7 Socket:1 IOD:0 AB/B0*/ + I3C_DEVICE_EXTRA_INFO(0x112, 0x0, 0x11A, NULL), /* SP8 Socket:0, IOD:0 */ + I3C_DEVICE_EXTRA_INFO(0x112, 0x100, 0x11A, NULL), /* SP8 Socket:1 IOD:0 */ {} }; MODULE_DEVICE_TABLE(i3c, sbrmi_i3c_id);