Software APIs
dt_rv_timer.h File Reference

Device Tables (DT) for IP rv_timer and top englishbreakfast. More...

#include "dt_api.h"
#include <stdint.h>

Go to the source code of this file.

Macros

#define OPENTITAN_RV_TIMER_HAS_RISCV_CSRS_INTEGRATION   1
 List of supported hardware features.
 
#define OPENTITAN_RV_TIMER_HAS_ENABLE   1
 
#define OPENTITAN_RV_TIMER_HAS_DISABLE   1
 
#define OPENTITAN_RV_TIMER_HAS_INTERRUPT   1
 
#define OPENTITAN_RV_TIMER_HAS_CONFIG   1
 
#define OPENTITAN_RV_TIMER_HAS_COUNTER   1
 
#define OPENTITAN_RV_TIMER_HAS_COMPARE   1
 

Typedefs

typedef enum dt_rv_timer dt_rv_timer_t
 List of instances.
 
typedef enum dt_rv_timer_reg_block dt_rv_timer_reg_block_t
 List of register blocks.
 
typedef enum dt_rv_timer_irq dt_rv_timer_irq_t
 List of IRQs.
 
typedef enum dt_rv_timer_clock dt_rv_timer_clock_t
 List of clock ports.
 
typedef enum dt_rv_timer_reset dt_rv_timer_reset_t
 List of reset ports.
 

Enumerations

enum  dt_rv_timer {
  kDtRvTimer = 0 ,
  kDtRvTimerFirst = 0 ,
  kDtRvTimerCount = 1
}
 List of instances. More...
 
enum  dt_rv_timer_reg_block {
  kDtRvTimerRegBlockCore = 0 ,
  kDtRvTimerRegBlockCount = 1
}
 List of register blocks. More...
 
enum  dt_rv_timer_irq {
  kDtRvTimerIrqTimerExpiredHart0Timer0 = 0 ,
  kDtRvTimerIrqCount = 1
}
 List of IRQs. More...
 
enum  dt_rv_timer_clock {
  kDtRvTimerClockClk = 0 ,
  kDtRvTimerClockCount = 1
}
 List of clock ports. More...
 
enum  dt_rv_timer_reset {
  kDtRvTimerResetRst = 0 ,
  kDtRvTimerResetCount = 1
}
 List of reset ports. More...
 

Functions

dt_rv_timer_t dt_rv_timer_from_instance_id (dt_instance_id_t inst_id)
 Get the rv_timer instance from an instance ID.
 
dt_instance_id_t dt_rv_timer_instance_id (dt_rv_timer_t dt)
 Get the instance ID of an instance.
 
uint32_t dt_rv_timer_reg_block (dt_rv_timer_t dt, dt_rv_timer_reg_block_t reg_block)
 Get the register base address of an instance.
 
dt_plic_irq_id_t dt_rv_timer_irq_to_plic_id (dt_rv_timer_t dt, dt_rv_timer_irq_t irq)
 Get the PLIC ID of a rv_timer IRQ for a given instance.
 
dt_rv_timer_irq_t dt_rv_timer_irq_from_plic_id (dt_rv_timer_t dt, dt_plic_irq_id_t irq)
 Convert a global IRQ ID to a local rv_timer IRQ type.
 
dt_clock_t dt_rv_timer_clock (dt_rv_timer_t dt, dt_rv_timer_clock_t clk)
 Get the clock signal connected to a clock port of an instance.
 
dt_reset_t dt_rv_timer_reset (dt_rv_timer_t dt, dt_rv_timer_reset_t rst)
 Get the reset signal connected to a reset port of an instance.
 

Detailed Description

Device Tables (DT) for IP rv_timer and top englishbreakfast.

This file contains the type definitions and global functions of the rv_timer.

Definition in file dt_rv_timer.h.

Macro Definition Documentation

◆ OPENTITAN_RV_TIMER_HAS_COMPARE

#define OPENTITAN_RV_TIMER_HAS_COMPARE   1

Definition at line 81 of file dt_rv_timer.h.

◆ OPENTITAN_RV_TIMER_HAS_CONFIG

#define OPENTITAN_RV_TIMER_HAS_CONFIG   1

Definition at line 79 of file dt_rv_timer.h.

◆ OPENTITAN_RV_TIMER_HAS_COUNTER

#define OPENTITAN_RV_TIMER_HAS_COUNTER   1

Definition at line 80 of file dt_rv_timer.h.

◆ OPENTITAN_RV_TIMER_HAS_DISABLE

#define OPENTITAN_RV_TIMER_HAS_DISABLE   1

Definition at line 77 of file dt_rv_timer.h.

◆ OPENTITAN_RV_TIMER_HAS_ENABLE

#define OPENTITAN_RV_TIMER_HAS_ENABLE   1

Definition at line 76 of file dt_rv_timer.h.

◆ OPENTITAN_RV_TIMER_HAS_INTERRUPT

#define OPENTITAN_RV_TIMER_HAS_INTERRUPT   1

Definition at line 78 of file dt_rv_timer.h.

◆ OPENTITAN_RV_TIMER_HAS_RISCV_CSRS_INTEGRATION

#define OPENTITAN_RV_TIMER_HAS_RISCV_CSRS_INTEGRATION   1

List of supported hardware features.

Definition at line 75 of file dt_rv_timer.h.

Typedef Documentation

◆ dt_rv_timer_clock_t

List of clock ports.

Clock ports are guaranteed to be numbered consecutively from 0.

◆ dt_rv_timer_irq_t

List of IRQs.

IRQs are guaranteed to be numbered consecutively from 0.

◆ dt_rv_timer_reg_block_t

List of register blocks.

Register blocks are guaranteed to start at 0 and to be consecutively numbered.

◆ dt_rv_timer_reset_t

List of reset ports.

Reset ports are guaranteed to be numbered consecutively from 0.

Enumeration Type Documentation

◆ dt_rv_timer

List of instances.

Enumerator
kDtRvTimer 

rv_timer

Definition at line 23 of file dt_rv_timer.h.

◆ dt_rv_timer_clock

List of clock ports.

Clock ports are guaranteed to be numbered consecutively from 0.

Enumerator
kDtRvTimerClockClk 

Clock port clk_i.

Definition at line 57 of file dt_rv_timer.h.

◆ dt_rv_timer_irq

List of IRQs.

IRQs are guaranteed to be numbered consecutively from 0.

Enumerator
kDtRvTimerIrqTimerExpiredHart0Timer0 

raised if hart0's timer0 expired (mtimecmp >= mtime)

Definition at line 47 of file dt_rv_timer.h.

◆ dt_rv_timer_reg_block

List of register blocks.

Register blocks are guaranteed to start at 0 and to be consecutively numbered.

Definition at line 34 of file dt_rv_timer.h.

◆ dt_rv_timer_reset

List of reset ports.

Reset ports are guaranteed to be numbered consecutively from 0.

Enumerator
kDtRvTimerResetRst 

Reset port rst_ni.

Definition at line 67 of file dt_rv_timer.h.

Function Documentation

◆ dt_rv_timer_clock()

Get the clock signal connected to a clock port of an instance.

Parameters
dtInstance of rv_timer.
clkClock port.
Returns
Clock signal.

Definition at line 127 of file dt_rv_timer.c.

◆ dt_rv_timer_from_instance_id()

dt_rv_timer_t dt_rv_timer_from_instance_id ( dt_instance_id_t inst_id)

Get the rv_timer instance from an instance ID.

For example, dt_uart_from_instance_id(kDtInstanceIdUart3) == kDtUart3.

Parameters
inst_idInstance ID.
Returns
A rv_timer instance.

Note: This function only makes sense if the instance ID has device type rv_timer, otherwise the returned value is unspecified.

Definition at line 65 of file dt_rv_timer.c.

◆ dt_rv_timer_instance_id()

dt_instance_id_t dt_rv_timer_instance_id ( dt_rv_timer_t dt)

Get the instance ID of an instance.

Parameters
dtInstance of rv_timer.
Returns
The instance ID of that instance.

Definition at line 72 of file dt_rv_timer.c.

◆ dt_rv_timer_irq_from_plic_id()

dt_rv_timer_irq_t dt_rv_timer_irq_from_plic_id ( dt_rv_timer_t dt,
dt_plic_irq_id_t irq )

Convert a global IRQ ID to a local rv_timer IRQ type.

Parameters
dtInstance of rv_timer.
irqA PLIC ID that belongs to this instance.
Returns
The rv_timer IRQ, or kDtRvTimerIrqCount.

Note: This function assumes that the PLIC ID belongs to the instance of rv_timer passed in parameter. In other words, it must be the case that dt_rv_timer_instance_id(dt) == dt_plic_id_to_instance_id(irq). Otherwise, this function will return kDtRvTimerIrqCount.

Definition at line 94 of file dt_rv_timer.c.

◆ dt_rv_timer_irq_to_plic_id()

dt_plic_irq_id_t dt_rv_timer_irq_to_plic_id ( dt_rv_timer_t dt,
dt_rv_timer_irq_t irq )

Get the PLIC ID of a rv_timer IRQ for a given instance.

If the instance is not connected to the PLIC, this function will return kDtPlicIrqIdNone.

Parameters
dtInstance of rv_timer.
irqA rv_timer IRQ.
Returns
The PLIC ID of the IRQ of this instance.

Definition at line 84 of file dt_rv_timer.c.

◆ dt_rv_timer_reg_block()

Get the register base address of an instance.

Parameters
dtInstance of rv_timer.
reg_blockThe register block requested.
Returns
The register base address of the requested block.

Definition at line 77 of file dt_rv_timer.c.

◆ dt_rv_timer_reset()

Get the reset signal connected to a reset port of an instance.

Parameters
dtInstance of rv_timer.
rstReset port.
Returns
Reset signal.

Definition at line 134 of file dt_rv_timer.c.