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; > + } > + } > +} >
