Commit 02ade255 authored by Alexandre Courbot's avatar Alexandre Courbot
Browse files

gpu: nova-core: convert PDISP registers to kernel register macro



Convert all PDISP registers to use the kernel's register macro and
update the code accordingly.

Reviewed-by: default avatarEliot Courtney <ecourtney@nvidia.com>
Reviewed-by: default avatarJoel Fernandes <joelagnelf@nvidia.com>
Reviewed-by: default avatarGary Guo <gary@garyguo.net>
Acked-by: default avatarDanilo Krummrich <dakr@kernel.org>
Link: https://patch.msgid.link/20260325-b4-nova-register-v4-7-bdf172f0f6ca@nvidia.com


Signed-off-by: default avatarAlexandre Courbot <acourbot@nvidia.com>
parent 1a8f58c5
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@
use kernel::{
    device,
    fmt,
    io::Io,
    prelude::*,
    ptr::{
        Alignable,
@@ -189,7 +190,10 @@ pub(crate) fn new(chipset: Chipset, bar: &Bar0, gsp_fw: &GspFirmware) -> Result<
                let base = fb.end - NV_PRAMIN_SIZE;

                if hal.supports_display(bar) {
                    match regs::NV_PDISP_VGA_WORKSPACE_BASE::read(bar).vga_workspace_addr() {
                    match bar
                        .read(regs::NV_PDISP_VGA_WORKSPACE_BASE)
                        .vga_workspace_addr()
                    {
                        Some(addr) => {
                            if addr < base {
                                const VBIOS_WORKSPACE_SIZE: u64 = usize_as_u64(SZ_128K);
+8 −4
Original line number Diff line number Diff line
@@ -250,10 +250,14 @@ pub(crate) fn usable_fb_size(self) -> u64 {

// PDISP

register!(NV_PDISP_VGA_WORKSPACE_BASE @ 0x00625f04 {
    3:3     status_valid as bool, "Set if the `addr` field is valid";
    31:8    addr as u32, "VGA workspace base address divided by 0x10000";
});
io::register! {
    pub(crate) NV_PDISP_VGA_WORKSPACE_BASE(u32) @ 0x00625f04 {
        /// VGA workspace base address divided by 0x10000.
        31:8    addr;
        /// Set if the `addr` field is valid.
        3:3     status_valid => bool;
    }
}

impl NV_PDISP_VGA_WORKSPACE_BASE {
    /// Returns the base address of the VGA workspace, or `None` if none exists.