summaryrefslogtreecommitdiff
path: root/drivers/gpu/nova-core/falcon/sec2.rs
blob: 6648a397d38a7d65386550a97700e8eaa02ab8c1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// SPDX-License-Identifier: GPL-2.0

use kernel::io::{
    io_project,
    register,
    Mmio, //
};

use crate::{
    driver::{
        Bar0,
        NovaRegisters, //
    },
    falcon::FalconEngine, //
};

/// Type specifying the `Sec2` falcon engine. Cannot be instantiated.
pub(crate) struct Sec2(());

register! {
    base: NovaRegisters;

    PFALCON: super::PFalconRegisters @ 0x00840000;
    PFALCON2: super::PFalcon2Registers @ 0x00841000;
}

impl FalconEngine for Sec2 {
    #[inline]
    fn pfalcon(io: Bar0<'_>) -> Mmio<'_, super::PFalconRegisters> {
        io_project!(io, build: PFALCON)
    }

    #[inline]
    fn pfalcon2(io: Bar0<'_>) -> Mmio<'_, super::PFalcon2Registers> {
        io_project!(io, build: PFALCON2)
    }
}