2024-02-18 16:48:38 +00:00
|
|
|
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
|
|
/*
|
|
|
|
* RZ/G2L Display Unit VSP-Based Compositor
|
|
|
|
*
|
|
|
|
* Copyright (C) 2023 Renesas Electronics Corporation
|
|
|
|
*
|
|
|
|
* Based on rcar_du_vsp.h
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __RZG2L_DU_VSP_H__
|
|
|
|
#define __RZG2L_DU_VSP_H__
|
|
|
|
|
|
|
|
#include <drm/drm_plane.h>
|
|
|
|
#include <linux/container_of.h>
|
|
|
|
#include <linux/scatterlist.h>
|
|
|
|
|
|
|
|
struct device;
|
|
|
|
struct drm_framebuffer;
|
|
|
|
struct rzg2l_du_device;
|
|
|
|
struct rzg2l_du_format_info;
|
|
|
|
struct rzg2l_du_vsp;
|
|
|
|
|
|
|
|
struct rzg2l_du_vsp_plane {
|
|
|
|
struct drm_plane plane;
|
|
|
|
struct rzg2l_du_vsp *vsp;
|
|
|
|
unsigned int index;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct rzg2l_du_vsp {
|
|
|
|
unsigned int index;
|
|
|
|
struct device *vsp;
|
|
|
|
struct rzg2l_du_device *dev;
|
|
|
|
};
|
|
|
|
|
|
|
|
static inline struct rzg2l_du_vsp_plane *to_rzg2l_vsp_plane(struct drm_plane *p)
|
|
|
|
{
|
|
|
|
return container_of(p, struct rzg2l_du_vsp_plane, plane);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* struct rzg2l_du_vsp_plane_state - Driver-specific plane state
|
|
|
|
* @state: base DRM plane state
|
|
|
|
* @format: information about the pixel format used by the plane
|
|
|
|
*/
|
|
|
|
struct rzg2l_du_vsp_plane_state {
|
|
|
|
struct drm_plane_state state;
|
|
|
|
|
|
|
|
const struct rzg2l_du_format_info *format;
|
|
|
|
};
|
|
|
|
|
|
|
|
static inline struct rzg2l_du_vsp_plane_state *
|
|
|
|
to_rzg2l_vsp_plane_state(struct drm_plane_state *state)
|
|
|
|
{
|
|
|
|
return container_of(state, struct rzg2l_du_vsp_plane_state, state);
|
|
|
|
}
|
|
|
|
|
drm: renesas: rz-du: Fix redefinition errors related to rzg2l_du_vsp_*()
CONFIG_DRM_RCAR_VSP is related to R-Car and not related to RZ/G2L
specific. This caused the below build issue. Fix this errors by replacing
CONFIG_DRM_RCAR_VSP->CONFIG_VIDEO_RENESAS_VSP1. While at it, use
IS_ENABLED() macro.
drivers/gpu/drm/renesas/rz-du/rzg2l_du_vsp.c:47:6: error: redefinition of 'rzg2l_du_vsp_enable'
47 | void rzg2l_du_vsp_enable(struct rzg2l_du_crtc *crtc)
| ^~~~~~~~~~~~~~~~~~~
In file included from drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.h:18,
from drivers/gpu/drm/renesas/rz-du/rzg2l_du_vsp.c:30:
drivers/gpu/drm/renesas/rz-du/rzg2l_du_vsp.h:72:20: note: previous definition of 'rzg2l_du_vsp_enable' with type 'void(struct rzg2l_du_crtc *)'
72 | static inline void rzg2l_du_vsp_enable(struct rzg2l_du_crtc *crtc) { };
| ^~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/renesas/rz-du/rzg2l_du_vsp.c:61:6: error: redefinition of 'rzg2l_du_vsp_disable'
61 | void rzg2l_du_vsp_disable(struct rzg2l_du_crtc *crtc)
| ^~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/renesas/rz-du/rzg2l_du_vsp.h:73:20: note: previous definition of 'rzg2l_du_vsp_disable' with type 'void(struct rzg2l_du_crtc *)'
73 | static inline void rzg2l_du_vsp_disable(struct rzg2l_du_crtc *crtc) { };
| ^~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/renesas/rz-du/rzg2l_du_vsp.c:66:6: error: redefinition of 'rzg2l_du_vsp_atomic_flush'
66 | void rzg2l_du_vsp_atomic_flush(struct rzg2l_du_crtc *crtc)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/renesas/rz-du/rzg2l_du_vsp.h:74:20: note: previous definition of 'rzg2l_du_vsp_atomic_flush' with type 'void(struct rzg2l_du_crtc *)'
74 | static inline void rzg2l_du_vsp_atomic_flush(struct rzg2l_du_crtc *crtc) { };
| ^~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/renesas/rz-du/rzg2l_du_vsp.c:76:19: error: redefinition of 'rzg2l_du_vsp_get_drm_plane'
76 | struct drm_plane *rzg2l_du_vsp_get_drm_plane(struct rzg2l_du_crtc *crtc,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/renesas/rz-du/rzg2l_du_vsp.h:75:33: note: previous definition of 'rzg2l_du_vsp_get_drm_plane' with type 'struct drm_plane *(struct rzg2l_du_crtc *, unsigned int)'
75 | static inline struct drm_plane *rzg2l_du_vsp_get_drm_plane(struct rzg2l_du_crtc *crtc,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/renesas/rz-du/rzg2l_du_vsp.c:302:5: error: redefinition of 'rzg2l_du_vsp_init'
302 | int rzg2l_du_vsp_init(struct rzg2l_du_vsp *vsp, struct device_node *np,
| ^~~~~~~~~~~~~~~~~
drivers/gpu/drm/renesas/rz-du/rzg2l_du_vsp.h:66:19: note: previous definition of 'rzg2l_du_vsp_init' with type 'int(struct rzg2l_du_vsp *, struct device_node *, unsigned int)'
66 | static inline int rzg2l_du_vsp_init(struct rzg2l_du_vsp *vsp, struct device_node *np,
| ^~~~~~~~~~~~~~~~~
Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Closes: https://lore.kernel.org/linux-next/20240222124610.383e1ce3@canb.auug.org.au/T/#u
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
Fixes: 768e9e61b3b9 ("drm: renesas: Add RZ/G2L DU Support")
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patchwork.freedesktop.org/patch/msgid/20240222112643.110326-1-biju.das.jz@bp.renesas.com
2024-02-22 11:26:43 +00:00
|
|
|
#if IS_ENABLED(CONFIG_VIDEO_RENESAS_VSP1)
|
2024-02-18 16:48:38 +00:00
|
|
|
int rzg2l_du_vsp_init(struct rzg2l_du_vsp *vsp, struct device_node *np,
|
|
|
|
unsigned int crtcs);
|
|
|
|
void rzg2l_du_vsp_enable(struct rzg2l_du_crtc *crtc);
|
|
|
|
void rzg2l_du_vsp_disable(struct rzg2l_du_crtc *crtc);
|
|
|
|
void rzg2l_du_vsp_atomic_flush(struct rzg2l_du_crtc *crtc);
|
|
|
|
struct drm_plane *rzg2l_du_vsp_get_drm_plane(struct rzg2l_du_crtc *crtc,
|
|
|
|
unsigned int pipe_index);
|
|
|
|
#else
|
|
|
|
static inline int rzg2l_du_vsp_init(struct rzg2l_du_vsp *vsp, struct device_node *np,
|
|
|
|
unsigned int crtcs)
|
|
|
|
{
|
|
|
|
return -ENXIO;
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline void rzg2l_du_vsp_enable(struct rzg2l_du_crtc *crtc) { };
|
|
|
|
static inline void rzg2l_du_vsp_disable(struct rzg2l_du_crtc *crtc) { };
|
|
|
|
static inline void rzg2l_du_vsp_atomic_flush(struct rzg2l_du_crtc *crtc) { };
|
|
|
|
static inline struct drm_plane *rzg2l_du_vsp_get_drm_plane(struct rzg2l_du_crtc *crtc,
|
|
|
|
unsigned int pipe_index)
|
|
|
|
{
|
|
|
|
return ERR_PTR(-ENXIO);
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif /* __RZG2L_DU_VSP_H__ */
|