Reviewed-by: Iago Toral Quiroga <itoral@xxxxxxxxxx> El sáb, 08-03-2025 a las 11:33 -0300, Maíra Canal escribió: > The V3D driver currently determines the GPU tech version (33, 41...) > by reading a register. This approach has worked so far since this > information wasn’t needed before powering on the GPU. > > V3D 7.1 introduces new registers that must be written to power on the > GPU, requiring us to know the V3D version beforehand. To address > this, > associate each supported SoC with the corresponding VideoCore GPU > version > as part of the device data. > > To prevent possible mistakes, add an assertion to verify that the > version > specified in the device data matches the one reported by the > hardware. > If there is a mismatch, the kernel will trigger a warning. > > Signed-off-by: Maíra Canal <mcanal@xxxxxxxxxx> > --- > drivers/gpu/drm/v3d/v3d_debugfs.c | 126 +++++++++++++++++++--------- > ---------- > drivers/gpu/drm/v3d/v3d_drv.c | 22 +++++-- > drivers/gpu/drm/v3d/v3d_drv.h | 11 +++- > drivers/gpu/drm/v3d/v3d_gem.c | 10 +-- > drivers/gpu/drm/v3d/v3d_irq.c | 6 +- > drivers/gpu/drm/v3d/v3d_perfmon.c | 4 +- > drivers/gpu/drm/v3d/v3d_sched.c | 6 +- > 7 files changed, 101 insertions(+), 84 deletions(-) > > diff --git a/drivers/gpu/drm/v3d/v3d_debugfs.c > b/drivers/gpu/drm/v3d/v3d_debugfs.c > index > 76816f2551c10026a775e4331ad7eb2f008cfb0a..7e789e181af0ac138044f194a29 > 555c30ab01836 100644 > --- a/drivers/gpu/drm/v3d/v3d_debugfs.c > +++ b/drivers/gpu/drm/v3d/v3d_debugfs.c > @@ -21,74 +21,74 @@ struct v3d_reg_def { > }; > > static const struct v3d_reg_def v3d_hub_reg_defs[] = { > - REGDEF(33, 42, V3D_HUB_AXICFG), > - REGDEF(33, 71, V3D_HUB_UIFCFG), > - REGDEF(33, 71, V3D_HUB_IDENT0), > - REGDEF(33, 71, V3D_HUB_IDENT1), > - REGDEF(33, 71, V3D_HUB_IDENT2), > - REGDEF(33, 71, V3D_HUB_IDENT3), > - REGDEF(33, 71, V3D_HUB_INT_STS), > - REGDEF(33, 71, V3D_HUB_INT_MSK_STS), > - > - REGDEF(33, 71, V3D_MMU_CTL), > - REGDEF(33, 71, V3D_MMU_VIO_ADDR), > - REGDEF(33, 71, V3D_MMU_VIO_ID), > - REGDEF(33, 71, V3D_MMU_DEBUG_INFO), > - > - REGDEF(71, 71, V3D_GMP_STATUS(71)), > - REGDEF(71, 71, V3D_GMP_CFG(71)), > - REGDEF(71, 71, V3D_GMP_VIO_ADDR(71)), > + REGDEF(V3D_GEN_33, V3D_GEN_42, V3D_HUB_AXICFG), > + REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_HUB_UIFCFG), > + REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_HUB_IDENT0), > + REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_HUB_IDENT1), > + REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_HUB_IDENT2), > + REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_HUB_IDENT3), > + REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_HUB_INT_STS), > + REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_HUB_INT_MSK_STS), > + > + REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_MMU_CTL), > + REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_MMU_VIO_ADDR), > + REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_MMU_VIO_ID), > + REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_MMU_DEBUG_INFO), > + > + REGDEF(V3D_GEN_71, V3D_GEN_71, V3D_GMP_STATUS(71)), > + REGDEF(V3D_GEN_71, V3D_GEN_71, V3D_GMP_CFG(71)), > + REGDEF(V3D_GEN_71, V3D_GEN_71, V3D_GMP_VIO_ADDR(71)), > }; > > static const struct v3d_reg_def v3d_gca_reg_defs[] = { > - REGDEF(33, 33, V3D_GCA_SAFE_SHUTDOWN), > - REGDEF(33, 33, V3D_GCA_SAFE_SHUTDOWN_ACK), > + REGDEF(V3D_GEN_33, V3D_GEN_33, V3D_GCA_SAFE_SHUTDOWN), > + REGDEF(V3D_GEN_33, V3D_GEN_33, V3D_GCA_SAFE_SHUTDOWN_ACK), > }; > > static const struct v3d_reg_def v3d_core_reg_defs[] = { > - REGDEF(33, 71, V3D_CTL_IDENT0), > - REGDEF(33, 71, V3D_CTL_IDENT1), > - REGDEF(33, 71, V3D_CTL_IDENT2), > - REGDEF(33, 71, V3D_CTL_MISCCFG), > - REGDEF(33, 71, V3D_CTL_INT_STS), > - REGDEF(33, 71, V3D_CTL_INT_MSK_STS), > - REGDEF(33, 71, V3D_CLE_CT0CS), > - REGDEF(33, 71, V3D_CLE_CT0CA), > - REGDEF(33, 71, V3D_CLE_CT0EA), > - REGDEF(33, 71, V3D_CLE_CT1CS), > - REGDEF(33, 71, V3D_CLE_CT1CA), > - REGDEF(33, 71, V3D_CLE_CT1EA), > - > - REGDEF(33, 71, V3D_PTB_BPCA), > - REGDEF(33, 71, V3D_PTB_BPCS), > - > - REGDEF(33, 42, V3D_GMP_STATUS(33)), > - REGDEF(33, 42, V3D_GMP_CFG(33)), > - REGDEF(33, 42, V3D_GMP_VIO_ADDR(33)), > - > - REGDEF(33, 71, V3D_ERR_FDBGO), > - REGDEF(33, 71, V3D_ERR_FDBGB), > - REGDEF(33, 71, V3D_ERR_FDBGS), > - REGDEF(33, 71, V3D_ERR_STAT), > + REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_CTL_IDENT0), > + REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_CTL_IDENT1), > + REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_CTL_IDENT2), > + REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_CTL_MISCCFG), > + REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_CTL_INT_STS), > + REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_CTL_INT_MSK_STS), > + REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_CLE_CT0CS), > + REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_CLE_CT0CA), > + REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_CLE_CT0EA), > + REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_CLE_CT1CS), > + REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_CLE_CT1CA), > + REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_CLE_CT1EA), > + > + REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_PTB_BPCA), > + REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_PTB_BPCS), > + > + REGDEF(V3D_GEN_33, V3D_GEN_42, V3D_GMP_STATUS(33)), > + REGDEF(V3D_GEN_33, V3D_GEN_42, V3D_GMP_CFG(33)), > + REGDEF(V3D_GEN_33, V3D_GEN_42, V3D_GMP_VIO_ADDR(33)), > + > + REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_ERR_FDBGO), > + REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_ERR_FDBGB), > + REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_ERR_FDBGS), > + REGDEF(V3D_GEN_33, V3D_GEN_71, V3D_ERR_STAT), > }; > > static const struct v3d_reg_def v3d_csd_reg_defs[] = { > - REGDEF(41, 71, V3D_CSD_STATUS), > - REGDEF(41, 42, V3D_CSD_CURRENT_CFG0(41)), > - REGDEF(41, 42, V3D_CSD_CURRENT_CFG1(41)), > - REGDEF(41, 42, V3D_CSD_CURRENT_CFG2(41)), > - REGDEF(41, 42, V3D_CSD_CURRENT_CFG3(41)), > - REGDEF(41, 42, V3D_CSD_CURRENT_CFG4(41)), > - REGDEF(41, 42, V3D_CSD_CURRENT_CFG5(41)), > - REGDEF(41, 42, V3D_CSD_CURRENT_CFG6(41)), > - REGDEF(71, 71, V3D_CSD_CURRENT_CFG0(71)), > - REGDEF(71, 71, V3D_CSD_CURRENT_CFG1(71)), > - REGDEF(71, 71, V3D_CSD_CURRENT_CFG2(71)), > - REGDEF(71, 71, V3D_CSD_CURRENT_CFG3(71)), > - REGDEF(71, 71, V3D_CSD_CURRENT_CFG4(71)), > - REGDEF(71, 71, V3D_CSD_CURRENT_CFG5(71)), > - REGDEF(71, 71, V3D_CSD_CURRENT_CFG6(71)), > - REGDEF(71, 71, V3D_V7_CSD_CURRENT_CFG7), > + REGDEF(V3D_GEN_41, V3D_GEN_71, V3D_CSD_STATUS), > + REGDEF(V3D_GEN_41, V3D_GEN_42, V3D_CSD_CURRENT_CFG0(41)), > + REGDEF(V3D_GEN_41, V3D_GEN_42, V3D_CSD_CURRENT_CFG1(41)), > + REGDEF(V3D_GEN_41, V3D_GEN_42, V3D_CSD_CURRENT_CFG2(41)), > + REGDEF(V3D_GEN_41, V3D_GEN_42, V3D_CSD_CURRENT_CFG3(41)), > + REGDEF(V3D_GEN_41, V3D_GEN_42, V3D_CSD_CURRENT_CFG4(41)), > + REGDEF(V3D_GEN_41, V3D_GEN_42, V3D_CSD_CURRENT_CFG5(41)), > + REGDEF(V3D_GEN_41, V3D_GEN_42, V3D_CSD_CURRENT_CFG6(41)), > + REGDEF(V3D_GEN_71, V3D_GEN_71, V3D_CSD_CURRENT_CFG0(71)), > + REGDEF(V3D_GEN_71, V3D_GEN_71, V3D_CSD_CURRENT_CFG1(71)), > + REGDEF(V3D_GEN_71, V3D_GEN_71, V3D_CSD_CURRENT_CFG2(71)), > + REGDEF(V3D_GEN_71, V3D_GEN_71, V3D_CSD_CURRENT_CFG3(71)), > + REGDEF(V3D_GEN_71, V3D_GEN_71, V3D_CSD_CURRENT_CFG4(71)), > + REGDEF(V3D_GEN_71, V3D_GEN_71, V3D_CSD_CURRENT_CFG5(71)), > + REGDEF(V3D_GEN_71, V3D_GEN_71, V3D_CSD_CURRENT_CFG6(71)), > + REGDEF(V3D_GEN_71, V3D_GEN_71, V3D_V7_CSD_CURRENT_CFG7), > }; > > static int v3d_v3d_debugfs_regs(struct seq_file *m, void *unused) > @@ -164,7 +164,7 @@ static int v3d_v3d_debugfs_ident(struct seq_file > *m, void *unused) > str_yes_no(ident2 & V3D_HUB_IDENT2_WITH_MMU)); > seq_printf(m, "TFU: %s\n", > str_yes_no(ident1 & V3D_HUB_IDENT1_WITH_TFU)); > - if (v3d->ver <= 42) { > + if (v3d->ver <= V3D_GEN_42) { > seq_printf(m, "TSY: %s\n", > str_yes_no(ident1 & > V3D_HUB_IDENT1_WITH_TSY)); > } > @@ -196,11 +196,11 @@ static int v3d_v3d_debugfs_ident(struct > seq_file *m, void *unused) > seq_printf(m, " QPUs: %d\n", nslc * qups); > seq_printf(m, " Semaphores: %d\n", > V3D_GET_FIELD(ident1, V3D_IDENT1_NSEM)); > - if (v3d->ver <= 42) { > + if (v3d->ver <= V3D_GEN_42) { > seq_printf(m, " BCG int: %d\n", > (ident2 & V3D_IDENT2_BCG_INT) != > 0); > } > - if (v3d->ver < 40) { > + if (v3d->ver < V3D_GEN_41) { > seq_printf(m, " Override TMU: %d\n", > (misccfg & V3D_MISCCFG_OVRTMUOUT) > != 0); > } > @@ -234,7 +234,7 @@ static int v3d_measure_clock(struct seq_file *m, > void *unused) > int core = 0; > int measure_ms = 1000; > > - if (v3d->ver >= 40) { > + if (v3d->ver >= V3D_GEN_41) { > int cycle_count_reg = V3D_PCTR_CYCLE_COUNT(v3d- > >ver); > V3D_CORE_WRITE(core, V3D_V4_PCTR_0_SRC_0_3, > V3D_SET_FIELD_VER(cycle_count_reg, > diff --git a/drivers/gpu/drm/v3d/v3d_drv.c > b/drivers/gpu/drm/v3d/v3d_drv.c > index > 852015214e971c60f9939d34d893d8d8cb4e9b01..c63f0ed1bd8a3d5511085e76ed2 > fbd6ee7df6f80 100644 > --- a/drivers/gpu/drm/v3d/v3d_drv.c > +++ b/drivers/gpu/drm/v3d/v3d_drv.c > @@ -17,6 +17,7 @@ > #include <linux/dma-mapping.h> > #include <linux/io.h> > #include <linux/module.h> > +#include <linux/of.h> > #include <linux/of_platform.h> > #include <linux/platform_device.h> > #include <linux/sched/clock.h> > @@ -92,7 +93,7 @@ static int v3d_get_param_ioctl(struct drm_device > *dev, void *data, > args->value = 1; > return 0; > case DRM_V3D_PARAM_SUPPORTS_PERFMON: > - args->value = (v3d->ver >= 40); > + args->value = (v3d->ver >= V3D_GEN_41); > return 0; > case DRM_V3D_PARAM_SUPPORTS_MULTISYNC_EXT: > args->value = 1; > @@ -254,10 +255,10 @@ static const struct drm_driver v3d_drm_driver = > { > }; > > static const struct of_device_id v3d_of_match[] = { > - { .compatible = "brcm,2711-v3d" }, > - { .compatible = "brcm,2712-v3d" }, > - { .compatible = "brcm,7268-v3d" }, > - { .compatible = "brcm,7278-v3d" }, > + { .compatible = "brcm,2711-v3d", .data = (void *)V3D_GEN_42 > }, > + { .compatible = "brcm,2712-v3d", .data = (void *)V3D_GEN_71 > }, > + { .compatible = "brcm,7268-v3d", .data = (void *)V3D_GEN_33 > }, > + { .compatible = "brcm,7278-v3d", .data = (void *)V3D_GEN_41 > }, > {}, > }; > MODULE_DEVICE_TABLE(of, v3d_of_match); > @@ -274,6 +275,7 @@ static int v3d_platform_drm_probe(struct > platform_device *pdev) > struct device *dev = &pdev->dev; > struct drm_device *drm; > struct v3d_dev *v3d; > + enum v3d_gen gen; > int ret; > u32 mmu_debug; > u32 ident1, ident3; > @@ -287,6 +289,9 @@ static int v3d_platform_drm_probe(struct > platform_device *pdev) > > platform_set_drvdata(pdev, drm); > > + gen = (enum v3d_gen)of_device_get_match_data(dev); > + v3d->ver = gen; > + > ret = map_regs(v3d, &v3d->hub_regs, "hub"); > if (ret) > return ret; > @@ -316,6 +321,11 @@ static int v3d_platform_drm_probe(struct > platform_device *pdev) > ident1 = V3D_READ(V3D_HUB_IDENT1); > v3d->ver = (V3D_GET_FIELD(ident1, V3D_HUB_IDENT1_TVER) * 10 > + > V3D_GET_FIELD(ident1, V3D_HUB_IDENT1_REV)); > + /* Make sure that the V3D tech version retrieved from the HW > is equal > + * to the one advertised by the device tree. > + */ > + WARN_ON(v3d->ver != gen); > + > v3d->cores = V3D_GET_FIELD(ident1, V3D_HUB_IDENT1_NCORES); > WARN_ON(v3d->cores > 1); /* multicore not yet implemented */ > > @@ -340,7 +350,7 @@ static int v3d_platform_drm_probe(struct > platform_device *pdev) > } > } > > - if (v3d->ver < 41) { > + if (v3d->ver < V3D_GEN_41) { > ret = map_regs(v3d, &v3d->gca_regs, "gca"); > if (ret) > goto clk_disable; > diff --git a/drivers/gpu/drm/v3d/v3d_drv.h > b/drivers/gpu/drm/v3d/v3d_drv.h > index > 9deaefa0f95b71b842f1c5bef2c6a8a8ffc21fe2..de4a9e18f6a9039edf57f406ab1 > cee9dad4c0a49 100644 > --- a/drivers/gpu/drm/v3d/v3d_drv.h > +++ b/drivers/gpu/drm/v3d/v3d_drv.h > @@ -94,11 +94,18 @@ struct v3d_perfmon { > u64 values[] __counted_by(ncounters); > }; > > +enum v3d_gen { > + V3D_GEN_33 = 33, > + V3D_GEN_41 = 41, > + V3D_GEN_42 = 42, > + V3D_GEN_71 = 71, > +}; > + > struct v3d_dev { > struct drm_device drm; > > /* Short representation (e.g. 33, 41) of the V3D tech > version */ > - int ver; > + enum v3d_gen ver; > > /* Short representation (e.g. 5, 6) of the V3D tech revision > */ > int rev; > @@ -199,7 +206,7 @@ to_v3d_dev(struct drm_device *dev) > static inline bool > v3d_has_csd(struct v3d_dev *v3d) > { > - return v3d->ver >= 41; > + return v3d->ver >= V3D_GEN_41; > } > > #define v3d_to_pdev(v3d) to_platform_device((v3d)->drm.dev) > diff --git a/drivers/gpu/drm/v3d/v3d_gem.c > b/drivers/gpu/drm/v3d/v3d_gem.c > index > b1e681630ded098de8aee691884368a959443812..1ea6d3832c2212d9cbbd9023647 > 8d18491f0ff14 100644 > --- a/drivers/gpu/drm/v3d/v3d_gem.c > +++ b/drivers/gpu/drm/v3d/v3d_gem.c > @@ -25,7 +25,7 @@ v3d_init_core(struct v3d_dev *v3d, int core) > * type. If you want the default behavior, you can still > put > * "2" in the indirect texture state's output_type field. > */ > - if (v3d->ver < 40) > + if (v3d->ver < V3D_GEN_41) > V3D_CORE_WRITE(core, V3D_CTL_MISCCFG, > V3D_MISCCFG_OVRTMUOUT); > > /* Whenever we flush the L2T cache, we always want to flush > @@ -58,7 +58,7 @@ v3d_idle_axi(struct v3d_dev *v3d, int core) > static void > v3d_idle_gca(struct v3d_dev *v3d) > { > - if (v3d->ver >= 41) > + if (v3d->ver >= V3D_GEN_41) > return; > > V3D_GCA_WRITE(V3D_GCA_SAFE_SHUTDOWN, > V3D_GCA_SAFE_SHUTDOWN_EN); > @@ -132,13 +132,13 @@ v3d_reset(struct v3d_dev *v3d) > static void > v3d_flush_l3(struct v3d_dev *v3d) > { > - if (v3d->ver < 41) { > + if (v3d->ver < V3D_GEN_41) { > u32 gca_ctrl = V3D_GCA_READ(V3D_GCA_CACHE_CTRL); > > V3D_GCA_WRITE(V3D_GCA_CACHE_CTRL, > gca_ctrl | V3D_GCA_CACHE_CTRL_FLUSH); > > - if (v3d->ver < 33) { > + if (v3d->ver < V3D_GEN_33) { > V3D_GCA_WRITE(V3D_GCA_CACHE_CTRL, > gca_ctrl & > ~V3D_GCA_CACHE_CTRL_FLUSH); > } > @@ -151,7 +151,7 @@ v3d_flush_l3(struct v3d_dev *v3d) > static void > v3d_invalidate_l2c(struct v3d_dev *v3d, int core) > { > - if (v3d->ver > 32) > + if (v3d->ver >= V3D_GEN_33) > return; > > V3D_CORE_WRITE(core, V3D_CTL_L2CACTL, > diff --git a/drivers/gpu/drm/v3d/v3d_irq.c > b/drivers/gpu/drm/v3d/v3d_irq.c > index > 72b6a119412fa74f8771308e228305678a19ba43..29f63f572d35b7217e346f82b9a > fb0957a42bd39 100644 > --- a/drivers/gpu/drm/v3d/v3d_irq.c > +++ b/drivers/gpu/drm/v3d/v3d_irq.c > @@ -143,7 +143,7 @@ v3d_irq(int irq, void *arg) > /* We shouldn't be triggering these if we have GMP in > * always-allowed mode. > */ > - if (v3d->ver < 71 && (intsts & V3D_INT_GMPV)) > + if (v3d->ver < V3D_GEN_71 && (intsts & V3D_INT_GMPV)) > dev_err(v3d->drm.dev, "GMP violation\n"); > > /* V3D 4.2 wires the hub and core IRQs together, so if we & > @@ -200,7 +200,7 @@ v3d_hub_irq(int irq, void *arg) > > V3D_WRITE(V3D_MMU_CTL, V3D_READ(V3D_MMU_CTL)); > > - if (v3d->ver >= 41) { > + if (v3d->ver >= V3D_GEN_41) { > axi_id = axi_id >> 5; > if (axi_id < ARRAY_SIZE(v3d41_axi_ids)) > client = v3d41_axi_ids[axi_id]; > @@ -217,7 +217,7 @@ v3d_hub_irq(int irq, void *arg) > status = IRQ_HANDLED; > } > > - if (v3d->ver >= 71 && (intsts & V3D_V7_HUB_INT_GMPV)) { > + if (v3d->ver >= V3D_GEN_71 && (intsts & > V3D_V7_HUB_INT_GMPV)) { > dev_err(v3d->drm.dev, "GMP Violation\n"); > status = IRQ_HANDLED; > } > diff --git a/drivers/gpu/drm/v3d/v3d_perfmon.c > b/drivers/gpu/drm/v3d/v3d_perfmon.c > index > 3ebda2fa46fc4775c67d13d8f8131160ff6ca09d..9a3fe52558746e8523d4cf4ee43 > 3a90d94bffdbf 100644 > --- a/drivers/gpu/drm/v3d/v3d_perfmon.c > +++ b/drivers/gpu/drm/v3d/v3d_perfmon.c > @@ -200,10 +200,10 @@ void v3d_perfmon_init(struct v3d_dev *v3d) > const struct v3d_perf_counter_desc *counters = NULL; > unsigned int max = 0; > > - if (v3d->ver >= 71) { > + if (v3d->ver >= V3D_GEN_71) { > counters = v3d_v71_performance_counters; > max = ARRAY_SIZE(v3d_v71_performance_counters); > - } else if (v3d->ver >= 42) { > + } else if (v3d->ver >= V3D_GEN_42) { > counters = v3d_v42_performance_counters; > max = ARRAY_SIZE(v3d_v42_performance_counters); > } > diff --git a/drivers/gpu/drm/v3d/v3d_sched.c > b/drivers/gpu/drm/v3d/v3d_sched.c > index > 34c42d6e12cde656d3b51a18be324976199eceae..b3be08b0ca9188564f9fb6aa326 > 94940a5fadc9d 100644 > --- a/drivers/gpu/drm/v3d/v3d_sched.c > +++ b/drivers/gpu/drm/v3d/v3d_sched.c > @@ -357,11 +357,11 @@ v3d_tfu_job_run(struct drm_sched_job > *sched_job) > V3D_WRITE(V3D_TFU_ICA(v3d->ver), job->args.ica); > V3D_WRITE(V3D_TFU_IUA(v3d->ver), job->args.iua); > V3D_WRITE(V3D_TFU_IOA(v3d->ver), job->args.ioa); > - if (v3d->ver >= 71) > + if (v3d->ver >= V3D_GEN_71) > V3D_WRITE(V3D_V7_TFU_IOC, job->args.v71.ioc); > V3D_WRITE(V3D_TFU_IOS(v3d->ver), job->args.ios); > V3D_WRITE(V3D_TFU_COEF0(v3d->ver), job->args.coef[0]); > - if (v3d->ver >= 71 || (job->args.coef[0] & > V3D_TFU_COEF0_USECOEF)) { > + if (v3d->ver >= V3D_GEN_71 || (job->args.coef[0] & > V3D_TFU_COEF0_USECOEF)) { > V3D_WRITE(V3D_TFU_COEF1(v3d->ver), job- > >args.coef[1]); > V3D_WRITE(V3D_TFU_COEF2(v3d->ver), job- > >args.coef[2]); > V3D_WRITE(V3D_TFU_COEF3(v3d->ver), job- > >args.coef[3]); > @@ -412,7 +412,7 @@ v3d_csd_job_run(struct drm_sched_job *sched_job) > * > * XXX: Set the CFG7 register > */ > - if (v3d->ver >= 71) > + if (v3d->ver >= V3D_GEN_71) > V3D_CORE_WRITE(0, V3D_V7_CSD_QUEUED_CFG7, 0); > > /* CFG0 write kicks off the job. */ >