1 // SPDX-License-Identifier: GPL-2.0 2 3 use kernel::prelude::*; 4 5 use crate::driver::Bar0; 6 use crate::fb::hal::FbHal; 7 use crate::regs; 8 9 fn vidmem_size_ga102(bar: &Bar0) -> u64 { 10 regs::NV_USABLE_FB_SIZE_IN_MB::read(bar).usable_fb_size() 11 } 12 13 struct Ga102; 14 15 impl FbHal for Ga102 { 16 fn read_sysmem_flush_page(&self, bar: &Bar0) -> u64 { 17 super::ga100::read_sysmem_flush_page_ga100(bar) 18 } 19 20 fn write_sysmem_flush_page(&self, bar: &Bar0, addr: u64) -> Result { 21 super::ga100::write_sysmem_flush_page_ga100(bar, addr); 22 23 Ok(()) 24 } 25 26 fn supports_display(&self, bar: &Bar0) -> bool { 27 super::ga100::display_enabled_ga100(bar) 28 } 29 30 fn vidmem_size(&self, bar: &Bar0) -> u64 { 31 vidmem_size_ga102(bar) 32 } 33 } 34 35 const GA102: Ga102 = Ga102; 36 pub(super) const GA102_HAL: &dyn FbHal = &GA102; 37