drm/lima: fix void pointer to enum lima_gpu_id cast warning
authorErico Nunes <nunes.erico@gmail.com>
Mon, 1 Apr 2024 22:43:29 +0000 (00:43 +0200)
committerQiang Yu <yuq825@gmail.com>
Mon, 15 Apr 2024 01:06:27 +0000 (09:06 +0800)
Create a simple data struct to hold compatible data so that we don't
have to do the casts to void pointer to hold data.
Fixes the following warning:
  drivers/gpu/drm/lima/lima_drv.c:387:13: error: cast to smaller integer
  type 'enum lima_gpu_id' from 'const void *'

Signed-off-by: Erico Nunes <nunes.erico@gmail.com>
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240401224329.1228468-3-nunes.erico@gmail.com
drivers/gpu/drm/lima/lima_drv.c
drivers/gpu/drm/lima/lima_drv.h

index 10fd9154cc4653f8a9360099ad1c36219cf4f3bb..739c865b556f865603c5606d587dbf8ab83fbd4c 100644 (file)
@@ -371,6 +371,7 @@ static int lima_pdev_probe(struct platform_device *pdev)
 {
        struct lima_device *ldev;
        struct drm_device *ddev;
+       const struct lima_compatible *comp;
        int err;
 
        err = lima_sched_slab_init();
@@ -384,7 +385,13 @@ static int lima_pdev_probe(struct platform_device *pdev)
        }
 
        ldev->dev = &pdev->dev;
-       ldev->id = (enum lima_gpu_id)of_device_get_match_data(&pdev->dev);
+       comp = of_device_get_match_data(&pdev->dev);
+       if (!comp) {
+               err = -ENODEV;
+               goto err_out0;
+       }
+
+       ldev->id = comp->id;
 
        platform_set_drvdata(pdev, ldev);
 
@@ -459,9 +466,17 @@ static void lima_pdev_remove(struct platform_device *pdev)
        lima_sched_slab_fini();
 }
 
+static const struct lima_compatible lima_mali400_data = {
+       .id = lima_gpu_mali400,
+};
+
+static const struct lima_compatible lima_mali450_data = {
+       .id = lima_gpu_mali450,
+};
+
 static const struct of_device_id dt_match[] = {
-       { .compatible = "arm,mali-400", .data = (void *)lima_gpu_mali400 },
-       { .compatible = "arm,mali-450", .data = (void *)lima_gpu_mali450 },
+       { .compatible = "arm,mali-400", .data = &lima_mali400_data },
+       { .compatible = "arm,mali-450", .data = &lima_mali450_data },
        {}
 };
 MODULE_DEVICE_TABLE(of, dt_match);
index c738d288547b508ec29574be738a72c452c87796..6706c19b166e0843f031a52b8a8599403924467e 100644 (file)
@@ -7,6 +7,7 @@
 #include <drm/drm_file.h>
 
 #include "lima_ctx.h"
+#include "lima_device.h"
 
 extern int lima_sched_timeout_ms;
 extern uint lima_heap_init_nr_pages;
@@ -39,6 +40,10 @@ struct lima_submit {
        struct lima_sched_task *task;
 };
 
+struct lima_compatible {
+       enum lima_gpu_id id;
+};
+
 static inline struct lima_drm_priv *
 to_lima_drm_priv(struct drm_file *file)
 {