mirror of
https://github.com/torvalds/linux.git
synced 2025-12-01 07:26:02 +07:00
Falcon engines have two distinct register bases: `PFALCON` and `PFALCON2`. So far we assumed that `PFALCON2` was located at `PFALCON + 0x1000` because that is the case of most engines, but there are exceptions (NVDEC uses `0x1c00`). Fix this shortcoming by leveraging the redesigned relative registers definitions to assign a distinct `PFalcon2Base` base address to each falcon engine. Reviewed-by: Lyude Paul <lyude@redhat.com> Link: https://lore.kernel.org/r/20250718-nova-regs-v2-16-7b6a762aa1cd@nvidia.com Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
20 lines
463 B
Rust
20 lines
463 B
Rust
// SPDX-License-Identifier: GPL-2.0
|
|
|
|
use crate::falcon::{FalconEngine, PFalcon2Base, PFalconBase};
|
|
use crate::regs::macros::RegisterBase;
|
|
|
|
/// Type specifying the `Sec2` falcon engine. Cannot be instantiated.
|
|
pub(crate) struct Sec2(());
|
|
|
|
impl RegisterBase<PFalconBase> for Sec2 {
|
|
const BASE: usize = 0x00840000;
|
|
}
|
|
|
|
impl RegisterBase<PFalcon2Base> for Sec2 {
|
|
const BASE: usize = 0x00841000;
|
|
}
|
|
|
|
impl FalconEngine for Sec2 {
|
|
const ID: Self = Sec2(());
|
|
}
|