diff --git a/src/broadcom/simulator/v3d_simulator.c b/src/broadcom/simulator/v3d_simulator.c index 5be3917161b..06ead0a2bdb 100644 --- a/src/broadcom/simulator/v3d_simulator.c +++ b/src/broadcom/simulator/v3d_simulator.c @@ -76,6 +76,7 @@ static struct v3d_simulator_state { struct v3d_hw *v3d; int ver; + int rev; /* Size of the heap. */ uint64_t mem_size; @@ -1175,6 +1176,7 @@ v3d_simulator_init_global() v3d_hw_set_mem(sim_state.v3d, b->ofs, 0xd0, 4096); sim_state.ver = v3d_hw_get_version(sim_state.v3d); + sim_state.rev = v3d_hw_get_revision(sim_state.v3d); simple_mtx_unlock(&sim_state.mutex); diff --git a/src/broadcom/simulator/v3d_simulator_wrapper.cpp b/src/broadcom/simulator/v3d_simulator_wrapper.cpp index 5c5bebd5c5e..3c137611298 100644 --- a/src/broadcom/simulator/v3d_simulator_wrapper.cpp +++ b/src/broadcom/simulator/v3d_simulator_wrapper.cpp @@ -89,6 +89,13 @@ int v3d_hw_get_version(struct v3d_hw *hw) return ident->tech_version * 10 + ident->revision; } +int v3d_hw_get_revision(struct v3d_hw *hw) +{ + const V3D_HUB_IDENT_T *ident = hw->get_hub_ident(); + + return ident->sub_rev; +} + void v3d_hw_set_isr(struct v3d_hw *hw, void (*isr)(uint32_t status)) { diff --git a/src/broadcom/simulator/v3d_simulator_wrapper.h b/src/broadcom/simulator/v3d_simulator_wrapper.h index 7f2be57a3be..5cd879e0a82 100644 --- a/src/broadcom/simulator/v3d_simulator_wrapper.h +++ b/src/broadcom/simulator/v3d_simulator_wrapper.h @@ -40,6 +40,7 @@ uint32_t v3d_hw_read_reg(struct v3d_hw *hw, uint32_t reg); void v3d_hw_write_reg(struct v3d_hw *hw, uint32_t reg, uint32_t val); void v3d_hw_tick(struct v3d_hw *hw); int v3d_hw_get_version(struct v3d_hw *hw); +int v3d_hw_get_revision(struct v3d_hw *hw); void v3d_hw_set_isr(struct v3d_hw *hw, void (*isr)(uint32_t status)); uint32_t v3d_hw_get_hub_core();