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