Skip to content

Commit 209d8e0

Browse files
IsaacWoodsrw-vanc
andcommitted
Invoke _SEG, _BBN, and _ADR as methods for PCI region accesses
Co-authored-by: Ron Williams <[email protected]>
1 parent 2086588 commit 209d8e0

File tree

1 file changed

+30
-32
lines changed

1 file changed

+30
-32
lines changed

aml/src/lib.rs

+30-32
Original file line numberDiff line numberDiff line change
@@ -438,29 +438,28 @@ impl AmlContext {
438438
* (e.g. systems with a single segment group and a single root, respectively).
439439
*/
440440
let parent_device = parent_device.as_ref().unwrap();
441-
let seg = match self.namespace.search(&AmlName::from_str("_SEG").unwrap(), parent_device) {
442-
Ok((_, handle)) => self
443-
.namespace
444-
.get(handle)?
445-
.as_integer(self)?
446-
.try_into()
447-
.map_err(|_| AmlError::FieldInvalidAddress)?,
441+
let seg = match self.invoke_method(
442+
&AmlName::from_str("_SEG").unwrap().resolve(parent_device).unwrap(),
443+
Args::EMPTY,
444+
) {
445+
Ok(seg) => seg.as_integer(self)?.try_into().map_err(|_| AmlError::FieldInvalidAddress)?,
448446
Err(AmlError::ValueDoesNotExist(_)) => 0,
449447
Err(err) => return Err(err),
450448
};
451-
let bbn = match self.namespace.search(&AmlName::from_str("_BBN").unwrap(), parent_device) {
452-
Ok((_, handle)) => self
453-
.namespace
454-
.get(handle)?
455-
.as_integer(self)?
456-
.try_into()
457-
.map_err(|_| AmlError::FieldInvalidAddress)?,
449+
let bbn = match self.invoke_method(
450+
&AmlName::from_str("_BBN").unwrap().resolve(parent_device).unwrap(),
451+
Args::EMPTY,
452+
) {
453+
Ok(bbn) => bbn.as_integer(self)?.try_into().map_err(|_| AmlError::FieldInvalidAddress)?,
458454
Err(AmlError::ValueDoesNotExist(_)) => 0,
459455
Err(err) => return Err(err),
460456
};
461457
let adr = {
462-
let (_, handle) = self.namespace.search(&AmlName::from_str("_ADR").unwrap(), parent_device)?;
463-
self.namespace.get(handle)?.as_integer(self)?
458+
let adr = self.invoke_method(
459+
&AmlName::from_str("_ADR").unwrap().resolve(parent_device).unwrap(),
460+
Args::EMPTY,
461+
)?;
462+
adr.as_integer(self)?
464463
};
465464

466465
let device = adr.get_bits(16..24) as u8;
@@ -530,29 +529,28 @@ impl AmlContext {
530529
* (e.g. systems with a single segment group and a single root, respectively).
531530
*/
532531
let parent_device = parent_device.as_ref().unwrap();
533-
let seg = match self.namespace.search(&AmlName::from_str("_SEG").unwrap(), parent_device) {
534-
Ok((_, handle)) => self
535-
.namespace
536-
.get(handle)?
537-
.as_integer(self)?
538-
.try_into()
539-
.map_err(|_| AmlError::FieldInvalidAddress)?,
532+
let seg = match self.invoke_method(
533+
&AmlName::from_str("_SEG").unwrap().resolve(parent_device).unwrap(),
534+
Args::EMPTY,
535+
) {
536+
Ok(seg) => seg.as_integer(self)?.try_into().map_err(|_| AmlError::FieldInvalidAddress)?,
540537
Err(AmlError::ValueDoesNotExist(_)) => 0,
541538
Err(err) => return Err(err),
542539
};
543-
let bbn = match self.namespace.search(&AmlName::from_str("_BBN").unwrap(), parent_device) {
544-
Ok((_, handle)) => self
545-
.namespace
546-
.get(handle)?
547-
.as_integer(self)?
548-
.try_into()
549-
.map_err(|_| AmlError::FieldInvalidAddress)?,
540+
let bbn = match self.invoke_method(
541+
&AmlName::from_str("_BBN").unwrap().resolve(parent_device).unwrap(),
542+
Args::EMPTY,
543+
) {
544+
Ok(bbn) => bbn.as_integer(self)?.try_into().map_err(|_| AmlError::FieldInvalidAddress)?,
550545
Err(AmlError::ValueDoesNotExist(_)) => 0,
551546
Err(err) => return Err(err),
552547
};
553548
let adr = {
554-
let (_, handle) = self.namespace.search(&AmlName::from_str("_ADR").unwrap(), parent_device)?;
555-
self.namespace.get(handle)?.as_integer(self)?
549+
let adr = self.invoke_method(
550+
&AmlName::from_str("_ADR").unwrap().resolve(parent_device).unwrap(),
551+
Args::EMPTY,
552+
)?;
553+
adr.as_integer(self)?
556554
};
557555

558556
let device = adr.get_bits(16..24) as u8;

0 commit comments

Comments
 (0)