[PATCH v2 3/6] drm/v3d: Associate a V3D tech revision to all supported devices
Iago Toral
itoral at igalia.com
Mon Mar 10 07:15:04 UTC 2025
Reviewed-by: Iago Toral Quiroga <itoral at igalia.com>
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 at igalia.com>
> ---
> 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. */
>
More information about the dri-devel
mailing list