On Mon, 23 Mar 2026 17:18:14 -0700
Deborah Brouwer <[email protected]> wrote:

> DOORBELL_BLOCK_n[0-63] is an array of GPU control register pages.
> Each block is memory-mappable and contains a single DOORBELL register
> used to trigger actions in the GPU.
> 
> Add definitions for the DOORBELL_BLOCK registers using the register! macro
> so they can be used by future Tyr interfaces.
> 
> Signed-off-by: Deborah Brouwer <[email protected]>

Reviewed-by: Boris Brezillon <[email protected]>

> ---
>  drivers/gpu/drm/tyr/regs.rs | 22 ++++++++++++++++++++++
>  1 file changed, 22 insertions(+)
> 
> diff --git a/drivers/gpu/drm/tyr/regs.rs b/drivers/gpu/drm/tyr/regs.rs
> index 
> 7e895b6e7deccc049a0ee3963d511c4b579e5ec7..9c1da1f039ccf9fc118def974d48dd40c17f4305
>  100644
> --- a/drivers/gpu/drm/tyr/regs.rs
> +++ b/drivers/gpu/drm/tyr/regs.rs
> @@ -1474,3 +1474,25 @@ fn from(sh: PtwShareability) -> Self {
>          }
>      }
>  }
> +
> +/// This module corresponds to the DOORBELL_BLOCK_n[0-63] register pages.
> +pub(crate) mod doorbell_block {
> +    use kernel::register;
> +
> +    /// Number of doorbells available.
> +    pub(crate) const NUM_DOORBELLS: usize = 64;
> +
> +    /// Doorbell block stride (64KiB).
> +    ///
> +    /// Each block occupies a full page, allowing it to be mapped
> +    /// separately into a virtual address space.
> +    const STRIDE: usize = 0x10000;
> +
> +    register! {
> +        /// Doorbell request register. Write-only.
> +        pub(crate) DOORBELL(u32)[NUM_DOORBELLS, stride = STRIDE] @ 0x80000 {
> +            /// Doorbell set. Writing 1 triggers the doorbell.
> +            0:0    ring => bool;
> +        }
> +    }
> +}
> 

Reply via email to