diff mbox

[Linaro-uefi,09/26] D03/DSDT: use irq producer/consumer to support mbi-gen

Message ID 1477538129-118465-8-git-send-email-heyi.guo@linaro.org
State Superseded
Headers show

Commit Message

gary guo Oct. 27, 2016, 3:15 a.m. UTC
Use irq producer/consumer to represent the topology of device
and mbi-gen:

We are using _PRS methd to indicate number of irq pins instead
    of num_pins in DT.

    For mbi-gen,
        Device(MBI0) {
              Name(_HID, "HISI0152")
              Name(_UID, Zero)
              Name(_CRS, ResourceTemplate() {
                      Memory32Fixed(ReadWrite, 0xa0080000, 0x10000)
              })

              Name (_PRS, ResourceTemplate() {
                  Interrupt(ResourceProducer,...) {12,14,....}
              })
        }

    For devices,

       Device(COM0) {
              Name(_HID, "ACPIIDxx")
              Name(_UID, Zero)
              Name(_CRS, ResourceTemplate() {
                     Memory32Fixed(ReadWrite, 0xb0030000, 0x10000)
                 Interrupt(ResourceConsumer,..., "\_SB.MBI0") {12}
              })
        }

Update the DSDT as above.

Change-Id: I39140bd47c2e39ec2bbdf5e71faba7bab775d635
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
---
 .../Hi1610/Hi1610AcpiTables/Dsdt/D03Hns.asl        |   6 +-
 .../Hi1610/Hi1610AcpiTables/Dsdt/D03Mbig.asl       | 163 ++++++++++++++++++++-
 .../Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl        |  18 +--
 .../Hi1610/Hi1610AcpiTables/Dsdt/D03Usb.asl        |   2 +-
 4 files changed, 174 insertions(+), 15 deletions(-)

Comments

Leif Lindholm Nov. 5, 2016, 4:49 p.m. UTC | #1
Graeme?

Looks plausible to me, but I don't have the ACPI background.

Regards,

Leif

On Thu, Oct 27, 2016 at 11:15:12AM +0800, Heyi Guo wrote:
> Use irq producer/consumer to represent the topology of device
> and mbi-gen:
> 
> We are using _PRS methd to indicate number of irq pins instead
>     of num_pins in DT.
> 
>     For mbi-gen,
>         Device(MBI0) {
>               Name(_HID, "HISI0152")
>               Name(_UID, Zero)
>               Name(_CRS, ResourceTemplate() {
>                       Memory32Fixed(ReadWrite, 0xa0080000, 0x10000)
>               })
> 
>               Name (_PRS, ResourceTemplate() {
>                   Interrupt(ResourceProducer,...) {12,14,....}
>               })
>         }
> 
>     For devices,
> 
>        Device(COM0) {
>               Name(_HID, "ACPIIDxx")
>               Name(_UID, Zero)
>               Name(_CRS, ResourceTemplate() {
>                      Memory32Fixed(ReadWrite, 0xb0030000, 0x10000)
>                  Interrupt(ResourceConsumer,..., "\_SB.MBI0") {12}
>               })
>         }
> 
> Update the DSDT as above.
> 
> Change-Id: I39140bd47c2e39ec2bbdf5e71faba7bab775d635
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
> ---
>  .../Hi1610/Hi1610AcpiTables/Dsdt/D03Hns.asl        |   6 +-
>  .../Hi1610/Hi1610AcpiTables/Dsdt/D03Mbig.asl       | 163 ++++++++++++++++++++-
>  .../Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl        |  18 +--
>  .../Hi1610/Hi1610AcpiTables/Dsdt/D03Usb.asl        |   2 +-
>  4 files changed, 174 insertions(+), 15 deletions(-)
> 
> diff --git a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Hns.asl b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Hns.asl
> index d8d453a..9a7fdb0 100644
> --- a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Hns.asl
> +++ b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Hns.asl
> @@ -150,12 +150,12 @@ Scope(_SB)
>                  Name (_CRS, ResourceTemplate (){
>                          Memory32Fixed (ReadWrite, 0xc5000000 , 0x890000)
>                          Memory32Fixed (ReadWrite, 0xc7000000 , 0x60000)
> -      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive,,,)
> +      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI3")
>          {
>            576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
>            589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
>          }
> -      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive,,,)
> +      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI3")
>          {
>            960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975,
>            976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991,
> @@ -170,7 +170,7 @@ Scope(_SB)
>            1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135,
>            1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151,
>          }
> -      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive,,,)
> +      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI3")
>          {
>            1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167,
>            1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183,
> diff --git a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Mbig.asl b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Mbig.asl
> index 4eaa073..5456bd8 100644
> --- a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Mbig.asl
> +++ b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Mbig.asl
> @@ -22,6 +22,10 @@ Scope(_SB)
>        Memory32Fixed(ReadWrite, 0xa0080000, 0x10000)
>      })
>  
> +   Name(_PRS, ResourceTemplate() {
> +       Interrupt(ResourceProducer, Edge, ActiveHigh, Exclusive, 0,,) {0x41, 0x42}
> +       })
> +
>     Name(_DSD, Package () {
>          ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
>          Package ()
> @@ -38,6 +42,44 @@ Scope(_SB)
>      Name(_CRS, ResourceTemplate() {
>        Memory32Fixed(ReadWrite, 0xa0080000, 0x10000)
>      })
> +
> +    Name(_PRS, ResourceTemplate() {
> +      Interrupt (ResourceProducer, Level, ActiveHigh, Exclusive, ,, )
> +                  {
> +      64,65,66,67,68,
> +      69,70,71,72,73,
> +      75,76,77,78,79,
> +      80,81,82,83,84,
> +      85,86,87,88,89,
> +      90,91,92,93,94,
> +      95,96,97,98,99,
> +      100,101,102,103,104,
> +      105,106,107,108,109,
> +      110,111,112,113,114,
> +      115,116,117,118,119,
> +      120,121,122,123,124,
> +      125,126,127,128,129,
> +      130,131,132,133,134,
> +      135,136,137,138,139,
> +      140,141,142,143,144,
> +      145,146,147,148,149,
> +      150,151,152,153,154,
> +      155,156,157,158,159,
> +      160,
> +      }
> +
> +      Interrupt (ResourceProducer, Edge, ActiveHigh, Exclusive, ,, )
> +                  {
> +         576,577,578,579,580,
> +      581,582,583,584,585,
> +      586,587,588,589,590,
> +      591,592,593,594,595,
> +      596,597,598,599,600,
> +      601,602,603,604,605,
> +      606,607,
> +      }
> +          })
> +
>     Name(_DSD, Package () {
>          ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
>          Package ()
> @@ -53,6 +95,44 @@ Scope(_SB)
>      Name(_CRS, ResourceTemplate() {
>        Memory32Fixed(ReadWrite, 0xa0080000, 0x10000)
>      })
> +
> +       Name(_PRS, ResourceTemplate() {
> +      Interrupt (ResourceProducer, Level, ActiveHigh, Exclusive, ,, )
> +                  {
> +      192,193,194,195,196,
> +      197,198,199,200,201,
> +      202,203,204,205,206,
> +      207,208,209,210,211,
> +      212,213,214,215,216,
> +      217,218,219,220,221,
> +      222,223,224,225,226,
> +      227,228,229,230,231,
> +      232,233,234,235,236,
> +      237,238,239,240,241,
> +      242,243,244,245,246,
> +      247,248,249,250,251,
> +      252,253,254,255,256,
> +      257,258,259,260,261,
> +      262,263,264,265,266,
> +      267,268,269,270,271,
> +      272,273,274,275,276,
> +      277,278,279,280,281,
> +      282,283,284,285,286,
> +      287,
> +      }
> +
> +                  Interrupt (ResourceProducer, Edge, ActiveHigh, Exclusive, ,, )
> +                  {
> +      608,609,610,611,
> +      612,613,614,615,616,
> +      617,618,619,620,621,
> +      622,623,624,625,626,
> +      627,628,629,630,631,
> +      632,633,634,635,636,
> +      637,638,639,
> +      }
> +          })
> +
>     Name(_DSD, Package () {
>          ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
>          Package ()
> @@ -68,6 +148,45 @@ Scope(_SB)
>      Name(_CRS, ResourceTemplate() {
>        Memory32Fixed(ReadWrite, 0xc0080000, 0x10000)
>      })
> +
> +Name(_PRS, ResourceTemplate() {
> +   Interrupt (ResourceProducer, Edge, ActiveHigh, Exclusive,,,)
> +        {
> +          576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
> +          589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
> +        }
> +      Interrupt (ResourceProducer, Edge, ActiveHigh, Exclusive,,,)
> +        {
> +          960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975,
> +          976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991,
> +          992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007,
> +          1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023,
> +          1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039,
> +          1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055,
> +          1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071,
> +          1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087,
> +          1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103,
> +          1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119,
> +          1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135,
> +          1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151,
> +        }
> +      Interrupt (ResourceProducer, Edge, ActiveHigh, Exclusive,,,)
> +        {
> +          1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167,
> +          1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183,
> +          1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199,
> +          1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215,
> +          1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231,
> +          1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247,
> +          1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263,
> +          1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279,
> +          1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295,
> +          1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311,
> +          1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327,
> +          1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343,
> +        }
> +})
> +
>     Name(_DSD, Package () {
>          ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
>          Package ()
> @@ -76,7 +195,7 @@ Scope(_SB)
>          }
>     })
>    }
> -
> +/*
>    Device(MBI4) {          // Mbi-gen dsa1 dbg0 intc
>      Name(_HID, "HISI0152")
>      Name(_CID, "MBIGen")
> @@ -106,13 +225,53 @@ Scope(_SB)
>          }
>     })
>    }
> -
> +*/
>    Device(MBI6) {          // Mbi-gen dsa sas0 intc
>      Name(_HID, "HISI0152")
>      Name(_CID, "MBIGen")
>      Name(_CRS, ResourceTemplate() {
>        Memory32Fixed(ReadWrite, 0xc0080000, 0x10000)
>      })
> +
> +    Name(_PRS, ResourceTemplate() {
> +     Interrupt (Resourceproducer, Level, ActiveHigh, Exclusive, ,, )
> +     {
> +      64,65,66,67,68,
> +      69,70,71,72,73,
> +      75,76,77,78,79,
> +      80,81,82,83,84,
> +      85,86,87,88,89,
> +      90,91,92,93,94,
> +      95,96,97,98,99,
> +      100,101,102,103,104,
> +      105,106,107,108,109,
> +      110,111,112,113,114,
> +      115,116,117,118,119,
> +      120,121,122,123,124,
> +      125,126,127,128,129,
> +      130,131,132,133,134,
> +      135,136,137,138,139,
> +      140,141,142,143,144,
> +      145,146,147,148,149,
> +      150,151,152,153,154,
> +      155,156,157,158,159,
> +      160,
> +      }
> +
> +      Interrupt (Resourceproducer, Edge, ActiveHigh, Exclusive, ,, )
> +                  {
> +      601,602,603,604,
> +      605,606,607,608,609,
> +      610,611,612,613,614,
> +      615,616,617,618,619,
> +      620,621,622,623,624,
> +      625,626,627,628,629,
> +      630,631,632,
> +      }
> +          })
> +
> +
> +
>     Name(_DSD, Package () {
>          ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
>          Package ()
> diff --git a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl
> index ce8ccd6..de21b2d 100644
> --- a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl
> +++ b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl
> @@ -21,8 +21,8 @@ Scope(_SB)
>      Name(_CCA, 1)
>            Name(_CRS, ResourceTemplate() {
>                    Memory32Fixed(ReadWrite, 0xC3000000, 0x10000)
> -                  Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, )
> -                  {
> +     Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, 0, "\\_SB.MBI6")
> +     {
>        64,65,66,67,68,
>        69,70,71,72,73,
>        75,76,77,78,79,
> @@ -45,7 +45,7 @@ Scope(_SB)
>        160,
>        }
>  
> -                  Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, )
> +      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI6" )
>                    {
>        601,602,603,604,
>        605,606,607,608,609,
> @@ -93,12 +93,12 @@ Scope(_SB)
>  
>      Device(SAS1) {
>            Name(_HID, "HISI0162")
> -    Name(_CCA, 1)
> +        Name(_CCA, 1)
>            Name(_CRS, ResourceTemplate() {
>                    Memory32Fixed(ReadWrite, 0xA2000000, 0x10000)
>  
> -      Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, )
> -                  {
> +      Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, 0, "\\_SB.MBI1")
> +      {
>        64,65,66,67,68,
>        69,70,71,72,73,
>        75,76,77,78,79,
> @@ -121,7 +121,7 @@ Scope(_SB)
>        160,
>        }
>  
> -                  Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, )
> +      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI1")
>                    {
>           576,577,578,579,580,
>        581,582,583,584,585,
> @@ -174,7 +174,7 @@ Scope(_SB)
>            Name(_CRS, ResourceTemplate() {
>                    Memory32Fixed(ReadWrite, 0xA3000000, 0x10000)
>  
> -      Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, )
> +      Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, 0, "\\_SB.MBI2")
>                    {
>        192,193,194,195,196,
>        197,198,199,200,201,
> @@ -198,7 +198,7 @@ Scope(_SB)
>        287,
>        }
>  
> -                  Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, )
> +                  Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI2")
>                    {
>        608,609,610,611,
>        612,613,614,615,616,
> diff --git a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Usb.asl b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Usb.asl
> index 28ba03d..8429a4b 100644
> --- a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Usb.asl
> +++ b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Usb.asl
> @@ -32,7 +32,7 @@ Scope(_SB)
>                          0xa7020000,         // Address Base
>                          0x00010000,         // Address Length
>                          )
> -                    Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, )
> +                    Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, 0, "\\_SB.MBI0")
>                      {
>                          0x00000041,
>                      }
> -- 
> 1.9.1
>
Hanjun Guo Nov. 15, 2016, 5:32 a.m. UTC | #2
Hi Leif,

On 2016/11/6 0:49, Leif Lindholm wrote:
> Graeme?
>
> Looks plausible to me, but I don't have the ACPI background.

This is mirroring the new ECR for ACPI spec, which is:

https://mantis.uefi.org/mantis/view.php?id=1588

"Clarifies how interrupt producers and consumers are handled in ACPI. 
The concept of interrupt producers is easily described and supported in 
device tree based systems, but it seems this is not really covered by 
currently ACPI based systems.
Consider an example use-case with the following components:
-	We have device A, which is an “interrupt combiner” that multiplexes a 
large group of interrupt wires and produces a single summary interrupt 
(in a very similar way to GPIO controllers). This device can be 
considered as an interrupt producer, but outputs virtual interrupts 
rather than physical interrupts.
-	We have device B with its interrupt wire going into the interrupt 
combiner.
-	The device driver for Device B is some standard driver that expects to 
register for an interrupt resource.

To solve this problem, we could make device A as a GPIO controller (i.e. 
device A would produce GPIO interrupts instead of *real* interrupts), 
but that would require a change to the driver for device B, which is not 
a valid option for a lot of standard/common drivers. There does seem to 
be a concept of interrupt producers and consumers in the ACPI 
specification, but it seems to only be used in reference to PCI. Note 
that generally the OSPM seems to ignore the Producer/Consumer flag and 
Resource Source fields when given in the Extended Interrupt Descriptor.
This is handled quite easily in device tree based systems.
-	Device A is implemented as an irqchip
-	Device B interrupt resource references Device A as the source of the 
interrupt.
-	Device A raises handles summary interrupt, determines it needs to 
interrupt device B, raises a virtual interrupt to device B.

It is a desirable capability (on both mobile and server platforms), and 
we would like to have a mechanism to handle this in ACPI.
This ECR attempts to better define the language around the extended 
interrupt descriptor to enable this functionality without significant 
change to the actual ACPI specification."

This ECR was approved, please let me know if you have further questions.

Thanks
Hanjun

>
> Regards,
>
> Leif
>
> On Thu, Oct 27, 2016 at 11:15:12AM +0800, Heyi Guo wrote:
>> Use irq producer/consumer to represent the topology of device
>> and mbi-gen:
>>
>> We are using _PRS methd to indicate number of irq pins instead
>>     of num_pins in DT.
>>
>>     For mbi-gen,
>>         Device(MBI0) {
>>               Name(_HID, "HISI0152")
>>               Name(_UID, Zero)
>>               Name(_CRS, ResourceTemplate() {
>>                       Memory32Fixed(ReadWrite, 0xa0080000, 0x10000)
>>               })
>>
>>               Name (_PRS, ResourceTemplate() {
>>                   Interrupt(ResourceProducer,...) {12,14,....}
>>               })
>>         }
>>
>>     For devices,
>>
>>        Device(COM0) {
>>               Name(_HID, "ACPIIDxx")
>>               Name(_UID, Zero)
>>               Name(_CRS, ResourceTemplate() {
>>                      Memory32Fixed(ReadWrite, 0xb0030000, 0x10000)
>>                  Interrupt(ResourceConsumer,..., "\_SB.MBI0") {12}
>>               })
>>         }
>>
>> Update the DSDT as above.
>>
>> Change-Id: I39140bd47c2e39ec2bbdf5e71faba7bab775d635
>> Contributed-under: TianoCore Contribution Agreement 1.0
>> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
>> ---
>>  .../Hi1610/Hi1610AcpiTables/Dsdt/D03Hns.asl        |   6 +-
>>  .../Hi1610/Hi1610AcpiTables/Dsdt/D03Mbig.asl       | 163 ++++++++++++++++++++-
>>  .../Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl        |  18 +--
>>  .../Hi1610/Hi1610AcpiTables/Dsdt/D03Usb.asl        |   2 +-
>>  4 files changed, 174 insertions(+), 15 deletions(-)
>>
>> diff --git a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Hns.asl b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Hns.asl
>> index d8d453a..9a7fdb0 100644
>> --- a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Hns.asl
>> +++ b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Hns.asl
>> @@ -150,12 +150,12 @@ Scope(_SB)
>>                  Name (_CRS, ResourceTemplate (){
>>                          Memory32Fixed (ReadWrite, 0xc5000000 , 0x890000)
>>                          Memory32Fixed (ReadWrite, 0xc7000000 , 0x60000)
>> -      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive,,,)
>> +      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI3")
>>          {
>>            576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
>>            589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
>>          }
>> -      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive,,,)
>> +      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI3")
>>          {
>>            960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975,
>>            976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991,
>> @@ -170,7 +170,7 @@ Scope(_SB)
>>            1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135,
>>            1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151,
>>          }
>> -      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive,,,)
>> +      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI3")
>>          {
>>            1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167,
>>            1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183,
>> diff --git a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Mbig.asl b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Mbig.asl
>> index 4eaa073..5456bd8 100644
>> --- a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Mbig.asl
>> +++ b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Mbig.asl
>> @@ -22,6 +22,10 @@ Scope(_SB)
>>        Memory32Fixed(ReadWrite, 0xa0080000, 0x10000)
>>      })
>>
>> +   Name(_PRS, ResourceTemplate() {
>> +       Interrupt(ResourceProducer, Edge, ActiveHigh, Exclusive, 0,,) {0x41, 0x42}
>> +       })
>> +
>>     Name(_DSD, Package () {
>>          ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
>>          Package ()
>> @@ -38,6 +42,44 @@ Scope(_SB)
>>      Name(_CRS, ResourceTemplate() {
>>        Memory32Fixed(ReadWrite, 0xa0080000, 0x10000)
>>      })
>> +
>> +    Name(_PRS, ResourceTemplate() {
>> +      Interrupt (ResourceProducer, Level, ActiveHigh, Exclusive, ,, )
>> +                  {
>> +      64,65,66,67,68,
>> +      69,70,71,72,73,
>> +      75,76,77,78,79,
>> +      80,81,82,83,84,
>> +      85,86,87,88,89,
>> +      90,91,92,93,94,
>> +      95,96,97,98,99,
>> +      100,101,102,103,104,
>> +      105,106,107,108,109,
>> +      110,111,112,113,114,
>> +      115,116,117,118,119,
>> +      120,121,122,123,124,
>> +      125,126,127,128,129,
>> +      130,131,132,133,134,
>> +      135,136,137,138,139,
>> +      140,141,142,143,144,
>> +      145,146,147,148,149,
>> +      150,151,152,153,154,
>> +      155,156,157,158,159,
>> +      160,
>> +      }
>> +
>> +      Interrupt (ResourceProducer, Edge, ActiveHigh, Exclusive, ,, )
>> +                  {
>> +         576,577,578,579,580,
>> +      581,582,583,584,585,
>> +      586,587,588,589,590,
>> +      591,592,593,594,595,
>> +      596,597,598,599,600,
>> +      601,602,603,604,605,
>> +      606,607,
>> +      }
>> +          })
>> +
>>     Name(_DSD, Package () {
>>          ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
>>          Package ()
>> @@ -53,6 +95,44 @@ Scope(_SB)
>>      Name(_CRS, ResourceTemplate() {
>>        Memory32Fixed(ReadWrite, 0xa0080000, 0x10000)
>>      })
>> +
>> +       Name(_PRS, ResourceTemplate() {
>> +      Interrupt (ResourceProducer, Level, ActiveHigh, Exclusive, ,, )
>> +                  {
>> +      192,193,194,195,196,
>> +      197,198,199,200,201,
>> +      202,203,204,205,206,
>> +      207,208,209,210,211,
>> +      212,213,214,215,216,
>> +      217,218,219,220,221,
>> +      222,223,224,225,226,
>> +      227,228,229,230,231,
>> +      232,233,234,235,236,
>> +      237,238,239,240,241,
>> +      242,243,244,245,246,
>> +      247,248,249,250,251,
>> +      252,253,254,255,256,
>> +      257,258,259,260,261,
>> +      262,263,264,265,266,
>> +      267,268,269,270,271,
>> +      272,273,274,275,276,
>> +      277,278,279,280,281,
>> +      282,283,284,285,286,
>> +      287,
>> +      }
>> +
>> +                  Interrupt (ResourceProducer, Edge, ActiveHigh, Exclusive, ,, )
>> +                  {
>> +      608,609,610,611,
>> +      612,613,614,615,616,
>> +      617,618,619,620,621,
>> +      622,623,624,625,626,
>> +      627,628,629,630,631,
>> +      632,633,634,635,636,
>> +      637,638,639,
>> +      }
>> +          })
>> +
>>     Name(_DSD, Package () {
>>          ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
>>          Package ()
>> @@ -68,6 +148,45 @@ Scope(_SB)
>>      Name(_CRS, ResourceTemplate() {
>>        Memory32Fixed(ReadWrite, 0xc0080000, 0x10000)
>>      })
>> +
>> +Name(_PRS, ResourceTemplate() {
>> +   Interrupt (ResourceProducer, Edge, ActiveHigh, Exclusive,,,)
>> +        {
>> +          576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
>> +          589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
>> +        }
>> +      Interrupt (ResourceProducer, Edge, ActiveHigh, Exclusive,,,)
>> +        {
>> +          960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975,
>> +          976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991,
>> +          992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007,
>> +          1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023,
>> +          1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039,
>> +          1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055,
>> +          1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071,
>> +          1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087,
>> +          1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103,
>> +          1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119,
>> +          1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135,
>> +          1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151,
>> +        }
>> +      Interrupt (ResourceProducer, Edge, ActiveHigh, Exclusive,,,)
>> +        {
>> +          1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167,
>> +          1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183,
>> +          1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199,
>> +          1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215,
>> +          1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231,
>> +          1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247,
>> +          1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263,
>> +          1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279,
>> +          1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295,
>> +          1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311,
>> +          1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327,
>> +          1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343,
>> +        }
>> +})
>> +
>>     Name(_DSD, Package () {
>>          ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
>>          Package ()
>> @@ -76,7 +195,7 @@ Scope(_SB)
>>          }
>>     })
>>    }
>> -
>> +/*
>>    Device(MBI4) {          // Mbi-gen dsa1 dbg0 intc
>>      Name(_HID, "HISI0152")
>>      Name(_CID, "MBIGen")
>> @@ -106,13 +225,53 @@ Scope(_SB)
>>          }
>>     })
>>    }
>> -
>> +*/
>>    Device(MBI6) {          // Mbi-gen dsa sas0 intc
>>      Name(_HID, "HISI0152")
>>      Name(_CID, "MBIGen")
>>      Name(_CRS, ResourceTemplate() {
>>        Memory32Fixed(ReadWrite, 0xc0080000, 0x10000)
>>      })
>> +
>> +    Name(_PRS, ResourceTemplate() {
>> +     Interrupt (Resourceproducer, Level, ActiveHigh, Exclusive, ,, )
>> +     {
>> +      64,65,66,67,68,
>> +      69,70,71,72,73,
>> +      75,76,77,78,79,
>> +      80,81,82,83,84,
>> +      85,86,87,88,89,
>> +      90,91,92,93,94,
>> +      95,96,97,98,99,
>> +      100,101,102,103,104,
>> +      105,106,107,108,109,
>> +      110,111,112,113,114,
>> +      115,116,117,118,119,
>> +      120,121,122,123,124,
>> +      125,126,127,128,129,
>> +      130,131,132,133,134,
>> +      135,136,137,138,139,
>> +      140,141,142,143,144,
>> +      145,146,147,148,149,
>> +      150,151,152,153,154,
>> +      155,156,157,158,159,
>> +      160,
>> +      }
>> +
>> +      Interrupt (Resourceproducer, Edge, ActiveHigh, Exclusive, ,, )
>> +                  {
>> +      601,602,603,604,
>> +      605,606,607,608,609,
>> +      610,611,612,613,614,
>> +      615,616,617,618,619,
>> +      620,621,622,623,624,
>> +      625,626,627,628,629,
>> +      630,631,632,
>> +      }
>> +          })
>> +
>> +
>> +
>>     Name(_DSD, Package () {
>>          ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
>>          Package ()
>> diff --git a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl
>> index ce8ccd6..de21b2d 100644
>> --- a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl
>> +++ b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl
>> @@ -21,8 +21,8 @@ Scope(_SB)
>>      Name(_CCA, 1)
>>            Name(_CRS, ResourceTemplate() {
>>                    Memory32Fixed(ReadWrite, 0xC3000000, 0x10000)
>> -                  Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, )
>> -                  {
>> +     Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, 0, "\\_SB.MBI6")
>> +     {
>>        64,65,66,67,68,
>>        69,70,71,72,73,
>>        75,76,77,78,79,
>> @@ -45,7 +45,7 @@ Scope(_SB)
>>        160,
>>        }
>>
>> -                  Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, )
>> +      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI6" )
>>                    {
>>        601,602,603,604,
>>        605,606,607,608,609,
>> @@ -93,12 +93,12 @@ Scope(_SB)
>>
>>      Device(SAS1) {
>>            Name(_HID, "HISI0162")
>> -    Name(_CCA, 1)
>> +        Name(_CCA, 1)
>>            Name(_CRS, ResourceTemplate() {
>>                    Memory32Fixed(ReadWrite, 0xA2000000, 0x10000)
>>
>> -      Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, )
>> -                  {
>> +      Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, 0, "\\_SB.MBI1")
>> +      {
>>        64,65,66,67,68,
>>        69,70,71,72,73,
>>        75,76,77,78,79,
>> @@ -121,7 +121,7 @@ Scope(_SB)
>>        160,
>>        }
>>
>> -                  Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, )
>> +      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI1")
>>                    {
>>           576,577,578,579,580,
>>        581,582,583,584,585,
>> @@ -174,7 +174,7 @@ Scope(_SB)
>>            Name(_CRS, ResourceTemplate() {
>>                    Memory32Fixed(ReadWrite, 0xA3000000, 0x10000)
>>
>> -      Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, )
>> +      Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, 0, "\\_SB.MBI2")
>>                    {
>>        192,193,194,195,196,
>>        197,198,199,200,201,
>> @@ -198,7 +198,7 @@ Scope(_SB)
>>        287,
>>        }
>>
>> -                  Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, )
>> +                  Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI2")
>>                    {
>>        608,609,610,611,
>>        612,613,614,615,616,
>> diff --git a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Usb.asl b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Usb.asl
>> index 28ba03d..8429a4b 100644
>> --- a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Usb.asl
>> +++ b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Usb.asl
>> @@ -32,7 +32,7 @@ Scope(_SB)
>>                          0xa7020000,         // Address Base
>>                          0x00010000,         // Address Length
>>                          )
>> -                    Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, )
>> +                    Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, 0, "\\_SB.MBI0")
>>                      {
>>                          0x00000041,
>>                      }
>> --
>> 1.9.1
>>
Leif Lindholm Nov. 16, 2016, 12:40 p.m. UTC | #3
Thanks.

Can I take that as a reviewed-by?

/
    Leif

On Tue, Nov 15, 2016 at 01:32:19PM +0800, Hanjun Guo wrote:
> Hi Leif,
> 
> On 2016/11/6 0:49, Leif Lindholm wrote:
> >Graeme?
> >
> >Looks plausible to me, but I don't have the ACPI background.
> 
> This is mirroring the new ECR for ACPI spec, which is:
> 
> https://mantis.uefi.org/mantis/view.php?id=1588
> 
> "Clarifies how interrupt producers and consumers are handled in ACPI. The
> concept of interrupt producers is easily described and supported in device
> tree based systems, but it seems this is not really covered by currently
> ACPI based systems.
> Consider an example use-case with the following components:
> -	We have device A, which is an “interrupt combiner” that multiplexes a
> large group of interrupt wires and produces a single summary interrupt (in a
> very similar way to GPIO controllers). This device can be considered as an
> interrupt producer, but outputs virtual interrupts rather than physical
> interrupts.
> -	We have device B with its interrupt wire going into the interrupt
> combiner.
> -	The device driver for Device B is some standard driver that expects to
> register for an interrupt resource.
> 
> To solve this problem, we could make device A as a GPIO controller (i.e.
> device A would produce GPIO interrupts instead of *real* interrupts), but
> that would require a change to the driver for device B, which is not a valid
> option for a lot of standard/common drivers. There does seem to be a concept
> of interrupt producers and consumers in the ACPI specification, but it seems
> to only be used in reference to PCI. Note that generally the OSPM seems to
> ignore the Producer/Consumer flag and Resource Source fields when given in
> the Extended Interrupt Descriptor.
> This is handled quite easily in device tree based systems.
> -	Device A is implemented as an irqchip
> -	Device B interrupt resource references Device A as the source of the
> interrupt.
> -	Device A raises handles summary interrupt, determines it needs to
> interrupt device B, raises a virtual interrupt to device B.
> 
> It is a desirable capability (on both mobile and server platforms), and we
> would like to have a mechanism to handle this in ACPI.
> This ECR attempts to better define the language around the extended
> interrupt descriptor to enable this functionality without significant change
> to the actual ACPI specification."
> 
> This ECR was approved, please let me know if you have further questions.
> 
> Thanks
> Hanjun
> 
> >
> >Regards,
> >
> >Leif
> >
> >On Thu, Oct 27, 2016 at 11:15:12AM +0800, Heyi Guo wrote:
> >>Use irq producer/consumer to represent the topology of device
> >>and mbi-gen:
> >>
> >>We are using _PRS methd to indicate number of irq pins instead
> >>    of num_pins in DT.
> >>
> >>    For mbi-gen,
> >>        Device(MBI0) {
> >>              Name(_HID, "HISI0152")
> >>              Name(_UID, Zero)
> >>              Name(_CRS, ResourceTemplate() {
> >>                      Memory32Fixed(ReadWrite, 0xa0080000, 0x10000)
> >>              })
> >>
> >>              Name (_PRS, ResourceTemplate() {
> >>                  Interrupt(ResourceProducer,...) {12,14,....}
> >>              })
> >>        }
> >>
> >>    For devices,
> >>
> >>       Device(COM0) {
> >>              Name(_HID, "ACPIIDxx")
> >>              Name(_UID, Zero)
> >>              Name(_CRS, ResourceTemplate() {
> >>                     Memory32Fixed(ReadWrite, 0xb0030000, 0x10000)
> >>                 Interrupt(ResourceConsumer,..., "\_SB.MBI0") {12}
> >>              })
> >>        }
> >>
> >>Update the DSDT as above.
> >>
> >>Change-Id: I39140bd47c2e39ec2bbdf5e71faba7bab775d635
> >>Contributed-under: TianoCore Contribution Agreement 1.0
> >>Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
> >>---
> >> .../Hi1610/Hi1610AcpiTables/Dsdt/D03Hns.asl        |   6 +-
> >> .../Hi1610/Hi1610AcpiTables/Dsdt/D03Mbig.asl       | 163 ++++++++++++++++++++-
> >> .../Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl        |  18 +--
> >> .../Hi1610/Hi1610AcpiTables/Dsdt/D03Usb.asl        |   2 +-
> >> 4 files changed, 174 insertions(+), 15 deletions(-)
> >>
> >>diff --git a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Hns.asl b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Hns.asl
> >>index d8d453a..9a7fdb0 100644
> >>--- a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Hns.asl
> >>+++ b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Hns.asl
> >>@@ -150,12 +150,12 @@ Scope(_SB)
> >>                 Name (_CRS, ResourceTemplate (){
> >>                         Memory32Fixed (ReadWrite, 0xc5000000 , 0x890000)
> >>                         Memory32Fixed (ReadWrite, 0xc7000000 , 0x60000)
> >>-      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive,,,)
> >>+      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI3")
> >>         {
> >>           576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
> >>           589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
> >>         }
> >>-      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive,,,)
> >>+      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI3")
> >>         {
> >>           960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975,
> >>           976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991,
> >>@@ -170,7 +170,7 @@ Scope(_SB)
> >>           1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135,
> >>           1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151,
> >>         }
> >>-      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive,,,)
> >>+      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI3")
> >>         {
> >>           1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167,
> >>           1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183,
> >>diff --git a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Mbig.asl b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Mbig.asl
> >>index 4eaa073..5456bd8 100644
> >>--- a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Mbig.asl
> >>+++ b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Mbig.asl
> >>@@ -22,6 +22,10 @@ Scope(_SB)
> >>       Memory32Fixed(ReadWrite, 0xa0080000, 0x10000)
> >>     })
> >>
> >>+   Name(_PRS, ResourceTemplate() {
> >>+       Interrupt(ResourceProducer, Edge, ActiveHigh, Exclusive, 0,,) {0x41, 0x42}
> >>+       })
> >>+
> >>    Name(_DSD, Package () {
> >>         ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
> >>         Package ()
> >>@@ -38,6 +42,44 @@ Scope(_SB)
> >>     Name(_CRS, ResourceTemplate() {
> >>       Memory32Fixed(ReadWrite, 0xa0080000, 0x10000)
> >>     })
> >>+
> >>+    Name(_PRS, ResourceTemplate() {
> >>+      Interrupt (ResourceProducer, Level, ActiveHigh, Exclusive, ,, )
> >>+                  {
> >>+      64,65,66,67,68,
> >>+      69,70,71,72,73,
> >>+      75,76,77,78,79,
> >>+      80,81,82,83,84,
> >>+      85,86,87,88,89,
> >>+      90,91,92,93,94,
> >>+      95,96,97,98,99,
> >>+      100,101,102,103,104,
> >>+      105,106,107,108,109,
> >>+      110,111,112,113,114,
> >>+      115,116,117,118,119,
> >>+      120,121,122,123,124,
> >>+      125,126,127,128,129,
> >>+      130,131,132,133,134,
> >>+      135,136,137,138,139,
> >>+      140,141,142,143,144,
> >>+      145,146,147,148,149,
> >>+      150,151,152,153,154,
> >>+      155,156,157,158,159,
> >>+      160,
> >>+      }
> >>+
> >>+      Interrupt (ResourceProducer, Edge, ActiveHigh, Exclusive, ,, )
> >>+                  {
> >>+         576,577,578,579,580,
> >>+      581,582,583,584,585,
> >>+      586,587,588,589,590,
> >>+      591,592,593,594,595,
> >>+      596,597,598,599,600,
> >>+      601,602,603,604,605,
> >>+      606,607,
> >>+      }
> >>+          })
> >>+
> >>    Name(_DSD, Package () {
> >>         ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
> >>         Package ()
> >>@@ -53,6 +95,44 @@ Scope(_SB)
> >>     Name(_CRS, ResourceTemplate() {
> >>       Memory32Fixed(ReadWrite, 0xa0080000, 0x10000)
> >>     })
> >>+
> >>+       Name(_PRS, ResourceTemplate() {
> >>+      Interrupt (ResourceProducer, Level, ActiveHigh, Exclusive, ,, )
> >>+                  {
> >>+      192,193,194,195,196,
> >>+      197,198,199,200,201,
> >>+      202,203,204,205,206,
> >>+      207,208,209,210,211,
> >>+      212,213,214,215,216,
> >>+      217,218,219,220,221,
> >>+      222,223,224,225,226,
> >>+      227,228,229,230,231,
> >>+      232,233,234,235,236,
> >>+      237,238,239,240,241,
> >>+      242,243,244,245,246,
> >>+      247,248,249,250,251,
> >>+      252,253,254,255,256,
> >>+      257,258,259,260,261,
> >>+      262,263,264,265,266,
> >>+      267,268,269,270,271,
> >>+      272,273,274,275,276,
> >>+      277,278,279,280,281,
> >>+      282,283,284,285,286,
> >>+      287,
> >>+      }
> >>+
> >>+                  Interrupt (ResourceProducer, Edge, ActiveHigh, Exclusive, ,, )
> >>+                  {
> >>+      608,609,610,611,
> >>+      612,613,614,615,616,
> >>+      617,618,619,620,621,
> >>+      622,623,624,625,626,
> >>+      627,628,629,630,631,
> >>+      632,633,634,635,636,
> >>+      637,638,639,
> >>+      }
> >>+          })
> >>+
> >>    Name(_DSD, Package () {
> >>         ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
> >>         Package ()
> >>@@ -68,6 +148,45 @@ Scope(_SB)
> >>     Name(_CRS, ResourceTemplate() {
> >>       Memory32Fixed(ReadWrite, 0xc0080000, 0x10000)
> >>     })
> >>+
> >>+Name(_PRS, ResourceTemplate() {
> >>+   Interrupt (ResourceProducer, Edge, ActiveHigh, Exclusive,,,)
> >>+        {
> >>+          576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
> >>+          589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
> >>+        }
> >>+      Interrupt (ResourceProducer, Edge, ActiveHigh, Exclusive,,,)
> >>+        {
> >>+          960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975,
> >>+          976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991,
> >>+          992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007,
> >>+          1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023,
> >>+          1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039,
> >>+          1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055,
> >>+          1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071,
> >>+          1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087,
> >>+          1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103,
> >>+          1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119,
> >>+          1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135,
> >>+          1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151,
> >>+        }
> >>+      Interrupt (ResourceProducer, Edge, ActiveHigh, Exclusive,,,)
> >>+        {
> >>+          1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167,
> >>+          1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183,
> >>+          1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199,
> >>+          1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215,
> >>+          1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231,
> >>+          1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247,
> >>+          1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263,
> >>+          1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279,
> >>+          1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295,
> >>+          1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311,
> >>+          1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327,
> >>+          1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343,
> >>+        }
> >>+})
> >>+
> >>    Name(_DSD, Package () {
> >>         ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
> >>         Package ()
> >>@@ -76,7 +195,7 @@ Scope(_SB)
> >>         }
> >>    })
> >>   }
> >>-
> >>+/*
> >>   Device(MBI4) {          // Mbi-gen dsa1 dbg0 intc
> >>     Name(_HID, "HISI0152")
> >>     Name(_CID, "MBIGen")
> >>@@ -106,13 +225,53 @@ Scope(_SB)
> >>         }
> >>    })
> >>   }
> >>-
> >>+*/
> >>   Device(MBI6) {          // Mbi-gen dsa sas0 intc
> >>     Name(_HID, "HISI0152")
> >>     Name(_CID, "MBIGen")
> >>     Name(_CRS, ResourceTemplate() {
> >>       Memory32Fixed(ReadWrite, 0xc0080000, 0x10000)
> >>     })
> >>+
> >>+    Name(_PRS, ResourceTemplate() {
> >>+     Interrupt (Resourceproducer, Level, ActiveHigh, Exclusive, ,, )
> >>+     {
> >>+      64,65,66,67,68,
> >>+      69,70,71,72,73,
> >>+      75,76,77,78,79,
> >>+      80,81,82,83,84,
> >>+      85,86,87,88,89,
> >>+      90,91,92,93,94,
> >>+      95,96,97,98,99,
> >>+      100,101,102,103,104,
> >>+      105,106,107,108,109,
> >>+      110,111,112,113,114,
> >>+      115,116,117,118,119,
> >>+      120,121,122,123,124,
> >>+      125,126,127,128,129,
> >>+      130,131,132,133,134,
> >>+      135,136,137,138,139,
> >>+      140,141,142,143,144,
> >>+      145,146,147,148,149,
> >>+      150,151,152,153,154,
> >>+      155,156,157,158,159,
> >>+      160,
> >>+      }
> >>+
> >>+      Interrupt (Resourceproducer, Edge, ActiveHigh, Exclusive, ,, )
> >>+                  {
> >>+      601,602,603,604,
> >>+      605,606,607,608,609,
> >>+      610,611,612,613,614,
> >>+      615,616,617,618,619,
> >>+      620,621,622,623,624,
> >>+      625,626,627,628,629,
> >>+      630,631,632,
> >>+      }
> >>+          })
> >>+
> >>+
> >>+
> >>    Name(_DSD, Package () {
> >>         ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
> >>         Package ()
> >>diff --git a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl
> >>index ce8ccd6..de21b2d 100644
> >>--- a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl
> >>+++ b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl
> >>@@ -21,8 +21,8 @@ Scope(_SB)
> >>     Name(_CCA, 1)
> >>           Name(_CRS, ResourceTemplate() {
> >>                   Memory32Fixed(ReadWrite, 0xC3000000, 0x10000)
> >>-                  Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, )
> >>-                  {
> >>+     Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, 0, "\\_SB.MBI6")
> >>+     {
> >>       64,65,66,67,68,
> >>       69,70,71,72,73,
> >>       75,76,77,78,79,
> >>@@ -45,7 +45,7 @@ Scope(_SB)
> >>       160,
> >>       }
> >>
> >>-                  Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, )
> >>+      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI6" )
> >>                   {
> >>       601,602,603,604,
> >>       605,606,607,608,609,
> >>@@ -93,12 +93,12 @@ Scope(_SB)
> >>
> >>     Device(SAS1) {
> >>           Name(_HID, "HISI0162")
> >>-    Name(_CCA, 1)
> >>+        Name(_CCA, 1)
> >>           Name(_CRS, ResourceTemplate() {
> >>                   Memory32Fixed(ReadWrite, 0xA2000000, 0x10000)
> >>
> >>-      Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, )
> >>-                  {
> >>+      Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, 0, "\\_SB.MBI1")
> >>+      {
> >>       64,65,66,67,68,
> >>       69,70,71,72,73,
> >>       75,76,77,78,79,
> >>@@ -121,7 +121,7 @@ Scope(_SB)
> >>       160,
> >>       }
> >>
> >>-                  Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, )
> >>+      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI1")
> >>                   {
> >>          576,577,578,579,580,
> >>       581,582,583,584,585,
> >>@@ -174,7 +174,7 @@ Scope(_SB)
> >>           Name(_CRS, ResourceTemplate() {
> >>                   Memory32Fixed(ReadWrite, 0xA3000000, 0x10000)
> >>
> >>-      Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, )
> >>+      Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, 0, "\\_SB.MBI2")
> >>                   {
> >>       192,193,194,195,196,
> >>       197,198,199,200,201,
> >>@@ -198,7 +198,7 @@ Scope(_SB)
> >>       287,
> >>       }
> >>
> >>-                  Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, )
> >>+                  Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI2")
> >>                   {
> >>       608,609,610,611,
> >>       612,613,614,615,616,
> >>diff --git a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Usb.asl b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Usb.asl
> >>index 28ba03d..8429a4b 100644
> >>--- a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Usb.asl
> >>+++ b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Usb.asl
> >>@@ -32,7 +32,7 @@ Scope(_SB)
> >>                         0xa7020000,         // Address Base
> >>                         0x00010000,         // Address Length
> >>                         )
> >>-                    Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, )
> >>+                    Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, 0, "\\_SB.MBI0")
> >>                     {
> >>                         0x00000041,
> >>                     }
> >>--
> >>1.9.1
> >>
Hanjun Guo Nov. 16, 2016, 1:02 p.m. UTC | #4
On 2016/11/16 20:40, Leif Lindholm wrote:
> Thanks.
>
> Can I take that as a reviewed-by?

Yes, please :)

Thanks
Hanjun

>
> /
>     Leif
>
> On Tue, Nov 15, 2016 at 01:32:19PM +0800, Hanjun Guo wrote:
>> Hi Leif,
>>
>> On 2016/11/6 0:49, Leif Lindholm wrote:
>>> Graeme?
>>>
>>> Looks plausible to me, but I don't have the ACPI background.
>>
>> This is mirroring the new ECR for ACPI spec, which is:
>>
>> https://mantis.uefi.org/mantis/view.php?id=1588
>>
>> "Clarifies how interrupt producers and consumers are handled in ACPI. The
>> concept of interrupt producers is easily described and supported in device
>> tree based systems, but it seems this is not really covered by currently
>> ACPI based systems.
>> Consider an example use-case with the following components:
>> -	We have device A, which is an “interrupt combiner” that multiplexes a
>> large group of interrupt wires and produces a single summary interrupt (in a
>> very similar way to GPIO controllers). This device can be considered as an
>> interrupt producer, but outputs virtual interrupts rather than physical
>> interrupts.
>> -	We have device B with its interrupt wire going into the interrupt
>> combiner.
>> -	The device driver for Device B is some standard driver that expects to
>> register for an interrupt resource.
>>
>> To solve this problem, we could make device A as a GPIO controller (i.e.
>> device A would produce GPIO interrupts instead of *real* interrupts), but
>> that would require a change to the driver for device B, which is not a valid
>> option for a lot of standard/common drivers. There does seem to be a concept
>> of interrupt producers and consumers in the ACPI specification, but it seems
>> to only be used in reference to PCI. Note that generally the OSPM seems to
>> ignore the Producer/Consumer flag and Resource Source fields when given in
>> the Extended Interrupt Descriptor.
>> This is handled quite easily in device tree based systems.
>> -	Device A is implemented as an irqchip
>> -	Device B interrupt resource references Device A as the source of the
>> interrupt.
>> -	Device A raises handles summary interrupt, determines it needs to
>> interrupt device B, raises a virtual interrupt to device B.
>>
>> It is a desirable capability (on both mobile and server platforms), and we
>> would like to have a mechanism to handle this in ACPI.
>> This ECR attempts to better define the language around the extended
>> interrupt descriptor to enable this functionality without significant change
>> to the actual ACPI specification."
>>
>> This ECR was approved, please let me know if you have further questions.
>>
>> Thanks
>> Hanjun
>>
>>>
>>> Regards,
>>>
>>> Leif
>>>
>>> On Thu, Oct 27, 2016 at 11:15:12AM +0800, Heyi Guo wrote:
>>>> Use irq producer/consumer to represent the topology of device
>>>> and mbi-gen:
>>>>
>>>> We are using _PRS methd to indicate number of irq pins instead
>>>>    of num_pins in DT.
>>>>
>>>>    For mbi-gen,
>>>>        Device(MBI0) {
>>>>              Name(_HID, "HISI0152")
>>>>              Name(_UID, Zero)
>>>>              Name(_CRS, ResourceTemplate() {
>>>>                      Memory32Fixed(ReadWrite, 0xa0080000, 0x10000)
>>>>              })
>>>>
>>>>              Name (_PRS, ResourceTemplate() {
>>>>                  Interrupt(ResourceProducer,...) {12,14,....}
>>>>              })
>>>>        }
>>>>
>>>>    For devices,
>>>>
>>>>       Device(COM0) {
>>>>              Name(_HID, "ACPIIDxx")
>>>>              Name(_UID, Zero)
>>>>              Name(_CRS, ResourceTemplate() {
>>>>                     Memory32Fixed(ReadWrite, 0xb0030000, 0x10000)
>>>>                 Interrupt(ResourceConsumer,..., "\_SB.MBI0") {12}
>>>>              })
>>>>        }
>>>>
>>>> Update the DSDT as above.
>>>>
>>>> Change-Id: I39140bd47c2e39ec2bbdf5e71faba7bab775d635
>>>> Contributed-under: TianoCore Contribution Agreement 1.0
>>>> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
>>>> ---
>>>> .../Hi1610/Hi1610AcpiTables/Dsdt/D03Hns.asl        |   6 +-
>>>> .../Hi1610/Hi1610AcpiTables/Dsdt/D03Mbig.asl       | 163 ++++++++++++++++++++-
>>>> .../Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl        |  18 +--
>>>> .../Hi1610/Hi1610AcpiTables/Dsdt/D03Usb.asl        |   2 +-
>>>> 4 files changed, 174 insertions(+), 15 deletions(-)
>>>>
>>>> diff --git a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Hns.asl b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Hns.asl
>>>> index d8d453a..9a7fdb0 100644
>>>> --- a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Hns.asl
>>>> +++ b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Hns.asl
>>>> @@ -150,12 +150,12 @@ Scope(_SB)
>>>>                 Name (_CRS, ResourceTemplate (){
>>>>                         Memory32Fixed (ReadWrite, 0xc5000000 , 0x890000)
>>>>                         Memory32Fixed (ReadWrite, 0xc7000000 , 0x60000)
>>>> -      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive,,,)
>>>> +      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI3")
>>>>         {
>>>>           576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
>>>>           589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
>>>>         }
>>>> -      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive,,,)
>>>> +      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI3")
>>>>         {
>>>>           960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975,
>>>>           976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991,
>>>> @@ -170,7 +170,7 @@ Scope(_SB)
>>>>           1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135,
>>>>           1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151,
>>>>         }
>>>> -      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive,,,)
>>>> +      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI3")
>>>>         {
>>>>           1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167,
>>>>           1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183,
>>>> diff --git a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Mbig.asl b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Mbig.asl
>>>> index 4eaa073..5456bd8 100644
>>>> --- a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Mbig.asl
>>>> +++ b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Mbig.asl
>>>> @@ -22,6 +22,10 @@ Scope(_SB)
>>>>       Memory32Fixed(ReadWrite, 0xa0080000, 0x10000)
>>>>     })
>>>>
>>>> +   Name(_PRS, ResourceTemplate() {
>>>> +       Interrupt(ResourceProducer, Edge, ActiveHigh, Exclusive, 0,,) {0x41, 0x42}
>>>> +       })
>>>> +
>>>>    Name(_DSD, Package () {
>>>>         ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
>>>>         Package ()
>>>> @@ -38,6 +42,44 @@ Scope(_SB)
>>>>     Name(_CRS, ResourceTemplate() {
>>>>       Memory32Fixed(ReadWrite, 0xa0080000, 0x10000)
>>>>     })
>>>> +
>>>> +    Name(_PRS, ResourceTemplate() {
>>>> +      Interrupt (ResourceProducer, Level, ActiveHigh, Exclusive, ,, )
>>>> +                  {
>>>> +      64,65,66,67,68,
>>>> +      69,70,71,72,73,
>>>> +      75,76,77,78,79,
>>>> +      80,81,82,83,84,
>>>> +      85,86,87,88,89,
>>>> +      90,91,92,93,94,
>>>> +      95,96,97,98,99,
>>>> +      100,101,102,103,104,
>>>> +      105,106,107,108,109,
>>>> +      110,111,112,113,114,
>>>> +      115,116,117,118,119,
>>>> +      120,121,122,123,124,
>>>> +      125,126,127,128,129,
>>>> +      130,131,132,133,134,
>>>> +      135,136,137,138,139,
>>>> +      140,141,142,143,144,
>>>> +      145,146,147,148,149,
>>>> +      150,151,152,153,154,
>>>> +      155,156,157,158,159,
>>>> +      160,
>>>> +      }
>>>> +
>>>> +      Interrupt (ResourceProducer, Edge, ActiveHigh, Exclusive, ,, )
>>>> +                  {
>>>> +         576,577,578,579,580,
>>>> +      581,582,583,584,585,
>>>> +      586,587,588,589,590,
>>>> +      591,592,593,594,595,
>>>> +      596,597,598,599,600,
>>>> +      601,602,603,604,605,
>>>> +      606,607,
>>>> +      }
>>>> +          })
>>>> +
>>>>    Name(_DSD, Package () {
>>>>         ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
>>>>         Package ()
>>>> @@ -53,6 +95,44 @@ Scope(_SB)
>>>>     Name(_CRS, ResourceTemplate() {
>>>>       Memory32Fixed(ReadWrite, 0xa0080000, 0x10000)
>>>>     })
>>>> +
>>>> +       Name(_PRS, ResourceTemplate() {
>>>> +      Interrupt (ResourceProducer, Level, ActiveHigh, Exclusive, ,, )
>>>> +                  {
>>>> +      192,193,194,195,196,
>>>> +      197,198,199,200,201,
>>>> +      202,203,204,205,206,
>>>> +      207,208,209,210,211,
>>>> +      212,213,214,215,216,
>>>> +      217,218,219,220,221,
>>>> +      222,223,224,225,226,
>>>> +      227,228,229,230,231,
>>>> +      232,233,234,235,236,
>>>> +      237,238,239,240,241,
>>>> +      242,243,244,245,246,
>>>> +      247,248,249,250,251,
>>>> +      252,253,254,255,256,
>>>> +      257,258,259,260,261,
>>>> +      262,263,264,265,266,
>>>> +      267,268,269,270,271,
>>>> +      272,273,274,275,276,
>>>> +      277,278,279,280,281,
>>>> +      282,283,284,285,286,
>>>> +      287,
>>>> +      }
>>>> +
>>>> +                  Interrupt (ResourceProducer, Edge, ActiveHigh, Exclusive, ,, )
>>>> +                  {
>>>> +      608,609,610,611,
>>>> +      612,613,614,615,616,
>>>> +      617,618,619,620,621,
>>>> +      622,623,624,625,626,
>>>> +      627,628,629,630,631,
>>>> +      632,633,634,635,636,
>>>> +      637,638,639,
>>>> +      }
>>>> +          })
>>>> +
>>>>    Name(_DSD, Package () {
>>>>         ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
>>>>         Package ()
>>>> @@ -68,6 +148,45 @@ Scope(_SB)
>>>>     Name(_CRS, ResourceTemplate() {
>>>>       Memory32Fixed(ReadWrite, 0xc0080000, 0x10000)
>>>>     })
>>>> +
>>>> +Name(_PRS, ResourceTemplate() {
>>>> +   Interrupt (ResourceProducer, Edge, ActiveHigh, Exclusive,,,)
>>>> +        {
>>>> +          576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
>>>> +          589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
>>>> +        }
>>>> +      Interrupt (ResourceProducer, Edge, ActiveHigh, Exclusive,,,)
>>>> +        {
>>>> +          960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975,
>>>> +          976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991,
>>>> +          992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007,
>>>> +          1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023,
>>>> +          1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039,
>>>> +          1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055,
>>>> +          1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071,
>>>> +          1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087,
>>>> +          1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103,
>>>> +          1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119,
>>>> +          1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135,
>>>> +          1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151,
>>>> +        }
>>>> +      Interrupt (ResourceProducer, Edge, ActiveHigh, Exclusive,,,)
>>>> +        {
>>>> +          1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167,
>>>> +          1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183,
>>>> +          1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199,
>>>> +          1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215,
>>>> +          1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231,
>>>> +          1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247,
>>>> +          1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263,
>>>> +          1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279,
>>>> +          1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295,
>>>> +          1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311,
>>>> +          1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327,
>>>> +          1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343,
>>>> +        }
>>>> +})
>>>> +
>>>>    Name(_DSD, Package () {
>>>>         ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
>>>>         Package ()
>>>> @@ -76,7 +195,7 @@ Scope(_SB)
>>>>         }
>>>>    })
>>>>   }
>>>> -
>>>> +/*
>>>>   Device(MBI4) {          // Mbi-gen dsa1 dbg0 intc
>>>>     Name(_HID, "HISI0152")
>>>>     Name(_CID, "MBIGen")
>>>> @@ -106,13 +225,53 @@ Scope(_SB)
>>>>         }
>>>>    })
>>>>   }
>>>> -
>>>> +*/
>>>>   Device(MBI6) {          // Mbi-gen dsa sas0 intc
>>>>     Name(_HID, "HISI0152")
>>>>     Name(_CID, "MBIGen")
>>>>     Name(_CRS, ResourceTemplate() {
>>>>       Memory32Fixed(ReadWrite, 0xc0080000, 0x10000)
>>>>     })
>>>> +
>>>> +    Name(_PRS, ResourceTemplate() {
>>>> +     Interrupt (Resourceproducer, Level, ActiveHigh, Exclusive, ,, )
>>>> +     {
>>>> +      64,65,66,67,68,
>>>> +      69,70,71,72,73,
>>>> +      75,76,77,78,79,
>>>> +      80,81,82,83,84,
>>>> +      85,86,87,88,89,
>>>> +      90,91,92,93,94,
>>>> +      95,96,97,98,99,
>>>> +      100,101,102,103,104,
>>>> +      105,106,107,108,109,
>>>> +      110,111,112,113,114,
>>>> +      115,116,117,118,119,
>>>> +      120,121,122,123,124,
>>>> +      125,126,127,128,129,
>>>> +      130,131,132,133,134,
>>>> +      135,136,137,138,139,
>>>> +      140,141,142,143,144,
>>>> +      145,146,147,148,149,
>>>> +      150,151,152,153,154,
>>>> +      155,156,157,158,159,
>>>> +      160,
>>>> +      }
>>>> +
>>>> +      Interrupt (Resourceproducer, Edge, ActiveHigh, Exclusive, ,, )
>>>> +                  {
>>>> +      601,602,603,604,
>>>> +      605,606,607,608,609,
>>>> +      610,611,612,613,614,
>>>> +      615,616,617,618,619,
>>>> +      620,621,622,623,624,
>>>> +      625,626,627,628,629,
>>>> +      630,631,632,
>>>> +      }
>>>> +          })
>>>> +
>>>> +
>>>> +
>>>>    Name(_DSD, Package () {
>>>>         ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
>>>>         Package ()
>>>> diff --git a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl
>>>> index ce8ccd6..de21b2d 100644
>>>> --- a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl
>>>> +++ b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl
>>>> @@ -21,8 +21,8 @@ Scope(_SB)
>>>>     Name(_CCA, 1)
>>>>           Name(_CRS, ResourceTemplate() {
>>>>                   Memory32Fixed(ReadWrite, 0xC3000000, 0x10000)
>>>> -                  Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, )
>>>> -                  {
>>>> +     Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, 0, "\\_SB.MBI6")
>>>> +     {
>>>>       64,65,66,67,68,
>>>>       69,70,71,72,73,
>>>>       75,76,77,78,79,
>>>> @@ -45,7 +45,7 @@ Scope(_SB)
>>>>       160,
>>>>       }
>>>>
>>>> -                  Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, )
>>>> +      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI6" )
>>>>                   {
>>>>       601,602,603,604,
>>>>       605,606,607,608,609,
>>>> @@ -93,12 +93,12 @@ Scope(_SB)
>>>>
>>>>     Device(SAS1) {
>>>>           Name(_HID, "HISI0162")
>>>> -    Name(_CCA, 1)
>>>> +        Name(_CCA, 1)
>>>>           Name(_CRS, ResourceTemplate() {
>>>>                   Memory32Fixed(ReadWrite, 0xA2000000, 0x10000)
>>>>
>>>> -      Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, )
>>>> -                  {
>>>> +      Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, 0, "\\_SB.MBI1")
>>>> +      {
>>>>       64,65,66,67,68,
>>>>       69,70,71,72,73,
>>>>       75,76,77,78,79,
>>>> @@ -121,7 +121,7 @@ Scope(_SB)
>>>>       160,
>>>>       }
>>>>
>>>> -                  Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, )
>>>> +      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI1")
>>>>                   {
>>>>          576,577,578,579,580,
>>>>       581,582,583,584,585,
>>>> @@ -174,7 +174,7 @@ Scope(_SB)
>>>>           Name(_CRS, ResourceTemplate() {
>>>>                   Memory32Fixed(ReadWrite, 0xA3000000, 0x10000)
>>>>
>>>> -      Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, )
>>>> +      Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, 0, "\\_SB.MBI2")
>>>>                   {
>>>>       192,193,194,195,196,
>>>>       197,198,199,200,201,
>>>> @@ -198,7 +198,7 @@ Scope(_SB)
>>>>       287,
>>>>       }
>>>>
>>>> -                  Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, )
>>>> +                  Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI2")
>>>>                   {
>>>>       608,609,610,611,
>>>>       612,613,614,615,616,
>>>> diff --git a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Usb.asl b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Usb.asl
>>>> index 28ba03d..8429a4b 100644
>>>> --- a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Usb.asl
>>>> +++ b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Usb.asl
>>>> @@ -32,7 +32,7 @@ Scope(_SB)
>>>>                         0xa7020000,         // Address Base
>>>>                         0x00010000,         // Address Length
>>>>                         )
>>>> -                    Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, )
>>>> +                    Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, 0, "\\_SB.MBI0")
>>>>                     {
>>>>                         0x00000041,
>>>>                     }
>>>> --
>>>> 1.9.1
>>>>
diff mbox

Patch

diff --git a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Hns.asl b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Hns.asl
index d8d453a..9a7fdb0 100644
--- a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Hns.asl
+++ b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Hns.asl
@@ -150,12 +150,12 @@  Scope(_SB)
                 Name (_CRS, ResourceTemplate (){
                         Memory32Fixed (ReadWrite, 0xc5000000 , 0x890000)
                         Memory32Fixed (ReadWrite, 0xc7000000 , 0x60000)
-      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive,,,)
+      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI3")
         {
           576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
           589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
         }
-      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive,,,)
+      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI3")
         {
           960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975,
           976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991,
@@ -170,7 +170,7 @@  Scope(_SB)
           1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135,
           1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151,
         }
-      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive,,,)
+      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI3")
         {
           1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167,
           1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183,
diff --git a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Mbig.asl b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Mbig.asl
index 4eaa073..5456bd8 100644
--- a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Mbig.asl
+++ b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Mbig.asl
@@ -22,6 +22,10 @@  Scope(_SB)
       Memory32Fixed(ReadWrite, 0xa0080000, 0x10000)
     })
 
+   Name(_PRS, ResourceTemplate() {
+       Interrupt(ResourceProducer, Edge, ActiveHigh, Exclusive, 0,,) {0x41, 0x42}
+       })
+
    Name(_DSD, Package () {
         ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
         Package ()
@@ -38,6 +42,44 @@  Scope(_SB)
     Name(_CRS, ResourceTemplate() {
       Memory32Fixed(ReadWrite, 0xa0080000, 0x10000)
     })
+
+    Name(_PRS, ResourceTemplate() {
+      Interrupt (ResourceProducer, Level, ActiveHigh, Exclusive, ,, )
+                  {
+      64,65,66,67,68,
+      69,70,71,72,73,
+      75,76,77,78,79,
+      80,81,82,83,84,
+      85,86,87,88,89,
+      90,91,92,93,94,
+      95,96,97,98,99,
+      100,101,102,103,104,
+      105,106,107,108,109,
+      110,111,112,113,114,
+      115,116,117,118,119,
+      120,121,122,123,124,
+      125,126,127,128,129,
+      130,131,132,133,134,
+      135,136,137,138,139,
+      140,141,142,143,144,
+      145,146,147,148,149,
+      150,151,152,153,154,
+      155,156,157,158,159,
+      160,
+      }
+
+      Interrupt (ResourceProducer, Edge, ActiveHigh, Exclusive, ,, )
+                  {
+         576,577,578,579,580,
+      581,582,583,584,585,
+      586,587,588,589,590,
+      591,592,593,594,595,
+      596,597,598,599,600,
+      601,602,603,604,605,
+      606,607,
+      }
+          })
+
    Name(_DSD, Package () {
         ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
         Package ()
@@ -53,6 +95,44 @@  Scope(_SB)
     Name(_CRS, ResourceTemplate() {
       Memory32Fixed(ReadWrite, 0xa0080000, 0x10000)
     })
+
+       Name(_PRS, ResourceTemplate() {
+      Interrupt (ResourceProducer, Level, ActiveHigh, Exclusive, ,, )
+                  {
+      192,193,194,195,196,
+      197,198,199,200,201,
+      202,203,204,205,206,
+      207,208,209,210,211,
+      212,213,214,215,216,
+      217,218,219,220,221,
+      222,223,224,225,226,
+      227,228,229,230,231,
+      232,233,234,235,236,
+      237,238,239,240,241,
+      242,243,244,245,246,
+      247,248,249,250,251,
+      252,253,254,255,256,
+      257,258,259,260,261,
+      262,263,264,265,266,
+      267,268,269,270,271,
+      272,273,274,275,276,
+      277,278,279,280,281,
+      282,283,284,285,286,
+      287,
+      }
+
+                  Interrupt (ResourceProducer, Edge, ActiveHigh, Exclusive, ,, )
+                  {
+      608,609,610,611,
+      612,613,614,615,616,
+      617,618,619,620,621,
+      622,623,624,625,626,
+      627,628,629,630,631,
+      632,633,634,635,636,
+      637,638,639,
+      }
+          })
+
    Name(_DSD, Package () {
         ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
         Package ()
@@ -68,6 +148,45 @@  Scope(_SB)
     Name(_CRS, ResourceTemplate() {
       Memory32Fixed(ReadWrite, 0xc0080000, 0x10000)
     })
+
+Name(_PRS, ResourceTemplate() {
+   Interrupt (ResourceProducer, Edge, ActiveHigh, Exclusive,,,)
+        {
+          576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
+          589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600,
+        }
+      Interrupt (ResourceProducer, Edge, ActiveHigh, Exclusive,,,)
+        {
+          960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975,
+          976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991,
+          992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007,
+          1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023,
+          1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039,
+          1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055,
+          1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071,
+          1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087,
+          1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103,
+          1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119,
+          1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135,
+          1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151,
+        }
+      Interrupt (ResourceProducer, Edge, ActiveHigh, Exclusive,,,)
+        {
+          1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167,
+          1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183,
+          1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199,
+          1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215,
+          1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231,
+          1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247,
+          1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263,
+          1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279,
+          1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295,
+          1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311,
+          1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327,
+          1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343,
+        }
+})
+
    Name(_DSD, Package () {
         ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
         Package ()
@@ -76,7 +195,7 @@  Scope(_SB)
         }
    })
   }
-
+/*
   Device(MBI4) {          // Mbi-gen dsa1 dbg0 intc
     Name(_HID, "HISI0152")
     Name(_CID, "MBIGen")
@@ -106,13 +225,53 @@  Scope(_SB)
         }
    })
   }
-
+*/
   Device(MBI6) {          // Mbi-gen dsa sas0 intc
     Name(_HID, "HISI0152")
     Name(_CID, "MBIGen")
     Name(_CRS, ResourceTemplate() {
       Memory32Fixed(ReadWrite, 0xc0080000, 0x10000)
     })
+
+    Name(_PRS, ResourceTemplate() {
+     Interrupt (Resourceproducer, Level, ActiveHigh, Exclusive, ,, )
+     {
+      64,65,66,67,68,
+      69,70,71,72,73,
+      75,76,77,78,79,
+      80,81,82,83,84,
+      85,86,87,88,89,
+      90,91,92,93,94,
+      95,96,97,98,99,
+      100,101,102,103,104,
+      105,106,107,108,109,
+      110,111,112,113,114,
+      115,116,117,118,119,
+      120,121,122,123,124,
+      125,126,127,128,129,
+      130,131,132,133,134,
+      135,136,137,138,139,
+      140,141,142,143,144,
+      145,146,147,148,149,
+      150,151,152,153,154,
+      155,156,157,158,159,
+      160,
+      }
+
+      Interrupt (Resourceproducer, Edge, ActiveHigh, Exclusive, ,, )
+                  {
+      601,602,603,604,
+      605,606,607,608,609,
+      610,611,612,613,614,
+      615,616,617,618,619,
+      620,621,622,623,624,
+      625,626,627,628,629,
+      630,631,632,
+      }
+          })
+
+
+
    Name(_DSD, Package () {
         ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
         Package ()
diff --git a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl
index ce8ccd6..de21b2d 100644
--- a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl
+++ b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl
@@ -21,8 +21,8 @@  Scope(_SB)
     Name(_CCA, 1)
           Name(_CRS, ResourceTemplate() {
                   Memory32Fixed(ReadWrite, 0xC3000000, 0x10000)
-                  Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, )
-                  {
+     Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, 0, "\\_SB.MBI6")
+     {
       64,65,66,67,68,
       69,70,71,72,73,
       75,76,77,78,79,
@@ -45,7 +45,7 @@  Scope(_SB)
       160,
       }
 
-                  Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, )
+      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI6" )
                   {
       601,602,603,604,
       605,606,607,608,609,
@@ -93,12 +93,12 @@  Scope(_SB)
 
     Device(SAS1) {
           Name(_HID, "HISI0162")
-    Name(_CCA, 1)
+        Name(_CCA, 1)
           Name(_CRS, ResourceTemplate() {
                   Memory32Fixed(ReadWrite, 0xA2000000, 0x10000)
 
-      Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, )
-                  {
+      Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, 0, "\\_SB.MBI1")
+      {
       64,65,66,67,68,
       69,70,71,72,73,
       75,76,77,78,79,
@@ -121,7 +121,7 @@  Scope(_SB)
       160,
       }
 
-                  Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, )
+      Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI1")
                   {
          576,577,578,579,580,
       581,582,583,584,585,
@@ -174,7 +174,7 @@  Scope(_SB)
           Name(_CRS, ResourceTemplate() {
                   Memory32Fixed(ReadWrite, 0xA3000000, 0x10000)
 
-      Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, )
+      Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, 0, "\\_SB.MBI2")
                   {
       192,193,194,195,196,
       197,198,199,200,201,
@@ -198,7 +198,7 @@  Scope(_SB)
       287,
       }
 
-                  Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, )
+                  Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI2")
                   {
       608,609,610,611,
       612,613,614,615,616,
diff --git a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Usb.asl b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Usb.asl
index 28ba03d..8429a4b 100644
--- a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Usb.asl
+++ b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Usb.asl
@@ -32,7 +32,7 @@  Scope(_SB)
                         0xa7020000,         // Address Base
                         0x00010000,         // Address Length
                         )
-                    Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, )
+                    Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, 0, "\\_SB.MBI0")
                     {
                         0x00000041,
                     }