xref: /linux/drivers/gpu/nova-core/fb/hal/gh100.rs (revision 8205c61deb6e5c1cabaf02415337070f3ca1ea19)
1 // SPDX-License-Identifier: GPL-2.0
2 // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3 
4 use kernel::{
5     prelude::*,
6     sizes::SizeConstants, //
7 };
8 
9 use crate::{
10     driver::Bar0,
11     fb::hal::FbHal, //
12 };
13 
14 struct Gh100;
15 
16 impl FbHal for Gh100 {
17     fn read_sysmem_flush_page(&self, bar: Bar0<'_>) -> u64 {
18         super::ga100::read_sysmem_flush_page_ga100(bar)
19     }
20 
21     fn write_sysmem_flush_page(&self, bar: Bar0<'_>, addr: u64) -> Result {
22         super::ga100::write_sysmem_flush_page_ga100(bar, addr);
23 
24         Ok(())
25     }
26 
27     fn supports_display(&self, bar: Bar0<'_>) -> bool {
28         super::ga100::display_enabled_ga100(bar)
29     }
30 
31     fn vidmem_size(&self, bar: Bar0<'_>) -> u64 {
32         super::ga102::vidmem_size_ga102(bar)
33     }
34 
35     fn pmu_reserved_size(&self) -> u32 {
36         super::tu102::pmu_reserved_size_tu102()
37     }
38 
39     fn non_wpr_heap_size(&self) -> u32 {
40         // Non-WPR heap for Hopper (see Open RM: kgspCalculateFbLayout_GH100).
41         u32::SZ_2M
42     }
43 
44     fn frts_size(&self) -> u64 {
45         super::tu102::frts_size_tu102()
46     }
47 }
48 
49 const GH100: Gh100 = Gh100;
50 pub(super) const GH100_HAL: &dyn FbHal = &GH100;
51