xref: /linux/drivers/gpu/nova-core/fb/hal/ga102.rs (revision 5ea5880764cbb164afb17a62e76ca75dc371409d)
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