| 1 | |
| 2 | |
| 3 |
|
| 4 | use crate::{
|
| 5 | driver::Bar0,
|
| 6 | gpu::{
|
| 7 | Architecture,
|
| 8 | Chipset, |
| 9 | },
|
| 10 | };
|
| 11 |
|
| 12 | mod gb100;
|
| 13 | mod gb202;
|
| 14 | mod gh100;
|
| 15 |
|
| 16 | pub(super) trait FspHal {
|
| 17 | |
| 18 | fn fsp_boot_status(&self, bar: Bar0<'_>) -> u32;
|
| 19 |
|
| 20 | |
| 21 | fn cot_version(&self) -> u16;
|
| 22 |
|
| 23 | |
| 24 | |
| 25 | fn fb_end_reserved_size(&self) -> u64;
|
| 26 | }
|
| 27 |
|
| 28 | |
| 29 | pub(super) fn fsp_hal(chipset: Chipset) -> Option<&'static dyn FspHal> {
|
| 30 | match chipset.arch() {
|
| 31 | Architecture::Turing | Architecture::Ampere | Architecture::Ada => None,
|
| 32 | Architecture::Hopper => Some(gh100::GH100_HAL),
|
| 33 | Architecture::BlackwellGB10x => Some(gb100::GB100_HAL),
|
| 34 | Architecture::BlackwellGB20x => Some(gb202::GB202_HAL),
|
| 35 | }
|
| 36 | }
|