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