drm/lima: fix void pointer to enum lima_gpu_id cast warning

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
This commit is contained in:
Erico Nunes 2024-04-02 00:43:29 +02:00 committed by Qiang Yu
parent a6683c690b
commit b27a838f92
2 changed files with 23 additions and 3 deletions

View 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);

View 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)
{