@@ -20,7 +20,7 @@ pub mod resource;
2020
2121pub use pci_types:: PciAddress ;
2222
23- use crate :: { AcpiError , AcpiHandler , AcpiTables , AmlTable , sdt:: SdtHeader } ;
23+ use crate :: { AcpiError , AcpiTables , AmlTable , RegionMapper , sdt:: SdtHeader } ;
2424use alloc:: {
2525 boxed:: Box ,
2626 collections:: btree_map:: BTreeMap ,
@@ -86,23 +86,21 @@ where
8686
8787 /// Construct a new `Interpreter` with the given set of ACPI tables. This will automatically
8888 /// load the DSDT and any SSDTs in the supplied [`AcpiTables`].
89- // TODO: maybe merge handler types? Maybe make one a supertrait of the other?
90- pub fn new_from_tables < AH : AcpiHandler > (
91- acpi_handler : AH ,
92- aml_handler : H ,
93- tables : & AcpiTables < AH > ,
89+ pub fn new_from_tables < M : RegionMapper > (
90+ mapper : M ,
91+ handler : H ,
92+ tables : & AcpiTables < M > ,
9493 ) -> Result < Interpreter < H > , AcpiError > {
95- fn load_table < H : Handler , AH : AcpiHandler > (
94+ fn load_table < M : RegionMapper , H : Handler > (
9695 interpreter : & Interpreter < H > ,
97- acpi_handler : & AH ,
96+ mapper : & M ,
9897 table : AmlTable ,
9998 ) -> Result < ( ) , AcpiError > {
100- let mapping = unsafe {
101- acpi_handler. map_physical_region :: < SdtHeader > ( table. phys_address , table. length as usize )
102- } ;
99+ let mapping =
100+ unsafe { mapper. map_physical_region :: < SdtHeader > ( table. phys_address , table. length as usize ) } ;
103101 let stream = unsafe {
104102 slice:: from_raw_parts (
105- mapping. virtual_start ( ) . as_ptr ( ) . byte_add ( mem:: size_of :: < SdtHeader > ( ) ) as * const u8 ,
103+ mapping. virtual_start . as_ptr ( ) . byte_add ( mem:: size_of :: < SdtHeader > ( ) ) as * const u8 ,
106104 table. length as usize - mem:: size_of :: < SdtHeader > ( ) ,
107105 )
108106 } ;
@@ -111,11 +109,11 @@ where
111109 }
112110
113111 let dsdt = tables. dsdt ( ) ?;
114- let interpreter = Interpreter :: new ( aml_handler , dsdt. revision ) ;
115- load_table ( & interpreter, & acpi_handler , dsdt) ?;
112+ let interpreter = Interpreter :: new ( handler , dsdt. revision ) ;
113+ load_table ( & interpreter, & mapper , dsdt) ?;
116114
117115 for ssdt in tables. ssdts ( ) {
118- load_table ( & interpreter, & acpi_handler , ssdt) ?;
116+ load_table ( & interpreter, & mapper , ssdt) ?;
119117 }
120118
121119 Ok ( interpreter)
0 commit comments