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