From: Andrzej Kacprowski <andrzej.kacprowski@linux.intel.com>
To: Dawid Osuchowski <dawid.osuchowski@linux.intel.com>,
dri-devel@lists.freedesktop.org
Cc: karol.wachowski@linux.intel.com
Subject: Re: [PATCH 2/3] accel/ivpu: Convert hw_ip_gen/btrs_gen to enum types
Date: Thu, 1 Oct 2026 16:33:32 +0200 [thread overview]
Message-ID: <f5ed524b-4b9b-44de-be6e-b097a8ba1511@linux.intel.com> (raw)
In-Reply-To: <20261001110401.2866557-3-dawid.osuchowski@linux.intel.com>
On 01-Oct-26 1:04 PM, Dawid Osuchowski wrote:
> Change the hw_ip_gen and btrs_gen members of struct ivpu_device, and
> their accessors, from u32/int to enum vpu_hw_ip/enum vpu_hw_btrs, and
> drop the default: labels from the switch statements in ivpu_hw_ip.c
> that dispatch on them. Switching on the real enum types lets the
> compiler treat these switches as exhaustive at compile time, so a
> missing case for a new generation now warns instead of silently
> hitting default:.
>
> This compile-time guarantee holds because ivpu_ip_gen_init() now fails
> probe on an unrecognized PCI device ID instead of leaving these fields
> at 0, so the switches never see an unhandled value.
>
> Signed-off-by: Dawid Osuchowski <dawid.osuchowski@linux.intel.com>
> ---
> drivers/accel/ivpu/ivpu_drv.h | 28 ++++++++++++++++------------
> drivers/accel/ivpu/ivpu_hw_ip.c | 14 ++++++++++----
> 2 files changed, 26 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/accel/ivpu/ivpu_drv.h b/drivers/accel/ivpu/ivpu_drv.h
> index 87953d0474fb..ce9cb118c0c4 100644
> --- a/drivers/accel/ivpu/ivpu_drv.h
> +++ b/drivers/accel/ivpu/ivpu_drv.h
> @@ -31,17 +31,9 @@
> #define PCI_DEVICE_ID_WCL 0xfd3e
> #define PCI_DEVICE_ID_NVL 0xd71d
>
> -#define IVPU_HW_IP_37XX 37
> -#define IVPU_HW_IP_40XX 40
> -#define IVPU_HW_IP_50XX 50
> -#define IVPU_HW_IP_60XX 60
> -
> #define IVPU_HW_IP_REV_LNL_B0 4
> #define IVPU_HW_IP_REV_NVL_A0 0
>
> -#define IVPU_HW_BTRS_MTL 1
> -#define IVPU_HW_BTRS_LNL 2
> -
> #define IVPU_GLOBAL_CONTEXT_MMU_SSID 0
> /* SSID 1 is used by the VPU to represent reserved context */
> #define IVPU_RESERVED_CONTEXT_MMU_SSID 1
> @@ -107,6 +99,18 @@
> ivpu_dbg(vdev, MISC, "Using WA: " #wa_name "\n"); \
> } while (0)
>
> +enum vpu_hw_ip {
> + IVPU_HW_IP_37XX = 37,
> + IVPU_HW_IP_40XX = 40,
> + IVPU_HW_IP_50XX = 50,
> + IVPU_HW_IP_60XX = 60,
> +};
> +
> +enum vpu_hw_btrs {
> + IVPU_HW_BTRS_MTL = 1,
> + IVPU_HW_BTRS_LNL = 2,
> +};
> +
> struct ivpu_wa_table {
> bool punit_disabled;
> bool clear_runtime_mem;
> @@ -136,8 +140,8 @@ struct ivpu_device {
> struct drm_device drm;
> void __iomem *regb;
> void __iomem *regv;
> - u32 hw_ip_gen;
> - u32 btrs_gen;
> + enum vpu_hw_ip hw_ip_gen;
> + enum vpu_hw_btrs btrs_gen;
> u32 platform;
> u32 irq;
>
> @@ -259,12 +263,12 @@ static inline u16 ivpu_device_id(struct ivpu_device *vdev)
> return to_pci_dev(vdev->drm.dev)->device;
> }
>
> -static inline int ivpu_hw_ip_gen(struct ivpu_device *vdev)
> +static inline enum vpu_hw_ip ivpu_hw_ip_gen(struct ivpu_device *vdev)
> {
> return vdev->hw_ip_gen;
> }
>
> -static inline int ivpu_hw_btrs_gen(struct ivpu_device *vdev)
> +static inline enum vpu_hw_btrs ivpu_hw_btrs_gen(struct ivpu_device *vdev)
> {
> return vdev->btrs_gen;
> }
> diff --git a/drivers/accel/ivpu/ivpu_hw_ip.c b/drivers/accel/ivpu/ivpu_hw_ip.c
> index c604c1c37e99..bd6bb3fa49ff 100644
> --- a/drivers/accel/ivpu/ivpu_hw_ip.c
> +++ b/drivers/accel/ivpu/ivpu_hw_ip.c
> @@ -688,7 +688,7 @@ static void pwr_island_delay_set(struct ivpu_device *vdev)
> post2 = 0;
> status = high ? 46 : 3;
> break;
> - default:
> + case IVPU_HW_IP_60XX:
> post = high ? 198 : 17;
> post1 = 0;
> post2 = high ? 198 : 17;
> @@ -801,10 +801,15 @@ static void ivpu_hw_ip_tbu_mmu_enable_40xx(struct ivpu_device *vdev)
>
> void ivpu_hw_ip_tbu_mmu_enable(struct ivpu_device *vdev)
> {
> - if (ivpu_hw_ip_gen(vdev) == IVPU_HW_IP_37XX)
> + switch (ivpu_hw_ip_gen(vdev)) {
> + case IVPU_HW_IP_37XX:
> return ivpu_hw_ip_tbu_mmu_enable_37xx(vdev);
> - else
> +
> + case IVPU_HW_IP_40XX:
> + case IVPU_HW_IP_50XX:
> + case IVPU_HW_IP_60XX:
> return ivpu_hw_ip_tbu_mmu_enable_40xx(vdev);
> + }
> }
>
> static inline u64 get_entry_point_addr(struct ivpu_device *vdev)
> @@ -940,8 +945,9 @@ int ivpu_hw_ip_soc_cpu_boot(struct ivpu_device *vdev)
> ret = soc_cpu_boot_40xx(vdev);
> break;
>
> - default:
> + case IVPU_HW_IP_60XX:
> ret = soc_cpu_boot_60xx(vdev);
> + break;
> }
>
> if (ret)
Reviewed-by: Andrzej Kacprowski <andrzej.kacprowski@linux.intel.com>
next prev parent reply other threads:[~2026-10-01 14:33 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-01 11:03 [PATCH 0/3] accel/ivpu: Rework HW IP generation detection and dispatch Dawid Osuchowski
2026-10-01 11:03 ` [PATCH 1/3] accel/ivpu: Improve HW IP gen and buttress version checks Dawid Osuchowski
2026-10-01 13:57 ` Wachowski, Karol
2026-10-02 15:19 ` Jeff Hugo
2026-10-01 11:04 ` [PATCH 2/3] accel/ivpu: Convert hw_ip_gen/btrs_gen to enum types Dawid Osuchowski
2026-10-01 13:58 ` Wachowski, Karol
2026-10-01 14:33 ` Andrzej Kacprowski [this message]
2026-10-02 15:20 ` Jeff Hugo
2026-10-01 11:04 ` [PATCH 3/3] accel/ivpu: Split HW IP generation dispatch into helpers Dawid Osuchowski
2026-10-01 14:34 ` Andrzej Kacprowski
2026-10-02 15:21 ` Jeff Hugo
2026-10-05 7:08 ` [PATCH 0/3] accel/ivpu: Rework HW IP generation detection and dispatch Wachowski, Karol
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=f5ed524b-4b9b-44de-be6e-b097a8ba1511@linux.intel.com \
--to=andrzej.kacprowski@linux.intel.com \
--cc=dawid.osuchowski@linux.intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=karol.wachowski@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.