xref: /linux/drivers/gpu/nova-core/vgpu/hal.rs (revision 4e69c1856bfd9ffb7e9d335a25842fa211628929)
1*c0ce1580SZhi Wang // SPDX-License-Identifier: GPL-2.0
2*c0ce1580SZhi Wang 
3*c0ce1580SZhi Wang use crate::gpu::{
4*c0ce1580SZhi Wang     Architecture,
5*c0ce1580SZhi Wang     Chipset, //
6*c0ce1580SZhi Wang };
7*c0ce1580SZhi Wang 
8*c0ce1580SZhi Wang mod gb202;
9*c0ce1580SZhi Wang mod tu102;
10*c0ce1580SZhi Wang 
11*c0ce1580SZhi Wang pub(super) trait VgpuHal {
12*c0ce1580SZhi Wang     /// Returns whether this chipset can support vGPU.
13*c0ce1580SZhi Wang     fn supports_vgpu(&self) -> bool;
14*c0ce1580SZhi Wang }
15*c0ce1580SZhi Wang 
16*c0ce1580SZhi Wang pub(super) fn vgpu_hal(chipset: Chipset) -> &'static dyn VgpuHal {
17*c0ce1580SZhi Wang     match chipset.arch() {
18*c0ce1580SZhi Wang         Architecture::BlackwellGB20x => gb202::GB202_HAL,
19*c0ce1580SZhi Wang         Architecture::Turing
20*c0ce1580SZhi Wang         | Architecture::Ampere
21*c0ce1580SZhi Wang         | Architecture::Hopper
22*c0ce1580SZhi Wang         | Architecture::Ada
23*c0ce1580SZhi Wang         | Architecture::BlackwellGB10x => tu102::TU102_HAL,
24*c0ce1580SZhi Wang     }
25*c0ce1580SZhi Wang }
26