rust: pci: display symbolic PCI vendor names

The Display implementation for Vendor was forwarding directly to Debug
printing, resulting in raw hex values instead of PCI Vendor strings.

Improve things by doing a stringify!() call for each PCI Vendor item.
This now prints symbolic names such as "NVIDIA", instead of
"Vendor(0x10de)". It still falls back to Debug formatting for unknown
class values.

Suggested-by: Danilo Krummrich <dakr@kernel.org>
Signed-off-by: John Hubbard <jhubbard@nvidia.com>
Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>
[ Remove #[inline] for Vendor::fmt(). - Danilo ]
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
pull/1354/merge
John Hubbard 2025-09-24 18:33:59 -07:00 committed by Danilo Krummrich
parent d53ea977ad
commit 6d97171ac6
1 changed files with 11 additions and 7 deletions

View File

@ -135,6 +135,17 @@ macro_rules! define_all_pci_vendors {
pub const $variant: Self = Self($binding as u16);
)+
}
impl fmt::Display for Vendor {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
$(
&Self::$variant => write!(f, stringify!($variant)),
)+
_ => <Self as fmt::Debug>::fmt(self, f),
}
}
}
};
}
@ -160,13 +171,6 @@ impl fmt::Debug for Vendor {
}
}
impl fmt::Display for Vendor {
#[inline]
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
<Self as fmt::Debug>::fmt(self, f)
}
}
define_all_pci_classes! {
NOT_DEFINED = bindings::PCI_CLASS_NOT_DEFINED, // 0x000000
NOT_DEFINED_VGA = bindings::PCI_CLASS_NOT_DEFINED_VGA, // 0x000100