From: "Wachowski, Karol" <karol.wachowski@linux.intel.com>
To: Dawid Osuchowski <dawid.osuchowski@linux.intel.com>,
dri-devel@lists.freedesktop.org
Cc: oded.gabbay@gmail.com, jeff.hugo@oss.qualcomm.com,
karol.wachowski@linux.intel.com, lizhi.hou@amd.com,
andrzej.kacprowski@linux.intel.com
Subject: Re: [PATCH 2/3] accel/ivpu: Convert hw_ip_gen/btrs_gen to enum types
Date: Thu, 1 Oct 2026 15:58:32 +0200 [thread overview]
Message-ID: <2bdfd36d-fbf0-45e3-8c70-3ffbd065483d@linux.intel.com> (raw)
In-Reply-To: <20261001110401.2866557-3-dawid.osuchowski@linux.intel.com>
On 01-Oct-26 13:04, 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: Karol Wachowski <karol.wachowski@linux.intel.com>
next prev parent reply other threads:[~2026-10-01 13:58 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 [this message]
2026-10-01 14:33 ` Andrzej Kacprowski
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=2bdfd36d-fbf0-45e3-8c70-3ffbd065483d@linux.intel.com \
--to=karol.wachowski@linux.intel.com \
--cc=andrzej.kacprowski@linux.intel.com \
--cc=dawid.osuchowski@linux.intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=jeff.hugo@oss.qualcomm.com \
--cc=lizhi.hou@amd.com \
--cc=oded.gabbay@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox