2018-07-26 02:37:32 +00:00
/* SPDX-License-Identifier: GPL-2.0+ */
2015-09-07 17:14:58 +03:00
/*
* rcar_du_vsp . h - - R - Car Display Unit VSP - Based Compositor
*
* Copyright ( C ) 2015 Renesas Electronics Corporation
*
* Contact : Laurent Pinchart ( laurent . pinchart @ ideasonboard . com )
*/
# ifndef __RCAR_DU_VSP_H__
# define __RCAR_DU_VSP_H__
2018-12-27 11:26:56 +02:00
# include <drm/drm_plane.h>
2015-09-07 17:14:58 +03:00
2019-02-21 03:20:42 +02:00
struct drm_framebuffer ;
2015-09-07 17:14:58 +03:00
struct rcar_du_format_info ;
struct rcar_du_vsp ;
2019-02-21 03:20:42 +02:00
struct sg_table ;
2015-09-07 17:14:58 +03:00
struct rcar_du_vsp_plane {
struct drm_plane plane ;
struct rcar_du_vsp * vsp ;
unsigned int index ;
} ;
struct rcar_du_vsp {
unsigned int index ;
struct device * vsp ;
struct rcar_du_device * dev ;
struct rcar_du_vsp_plane * planes ;
unsigned int num_planes ;
} ;
static inline struct rcar_du_vsp_plane * to_rcar_vsp_plane ( struct drm_plane * p )
{
return container_of ( p , struct rcar_du_vsp_plane , plane ) ;
}
/**
* struct rcar_du_vsp_plane_state - Driver - specific plane state
* @ state : base DRM plane state
* @ format : information about the pixel format used by the plane
2017-05-17 02:20:07 +03:00
* @ sg_tables : scatter - gather tables for the frame buffer memory
2015-09-07 17:14:58 +03:00
*/
struct rcar_du_vsp_plane_state {
struct drm_plane_state state ;
const struct rcar_du_format_info * format ;
2017-05-17 02:20:07 +03:00
struct sg_table sg_tables [ 3 ] ;
2015-09-07 17:14:58 +03:00
} ;
static inline struct rcar_du_vsp_plane_state *
to_rcar_vsp_plane_state ( struct drm_plane_state * state )
{
return container_of ( state , struct rcar_du_vsp_plane_state , state ) ;
}
# ifdef CONFIG_DRM_RCAR_VSP
2017-06-26 13:12:01 +03:00
int rcar_du_vsp_init ( struct rcar_du_vsp * vsp , struct device_node * np ,
unsigned int crtcs ) ;
2015-09-07 17:14:58 +03:00
void rcar_du_vsp_enable ( struct rcar_du_crtc * crtc ) ;
void rcar_du_vsp_disable ( struct rcar_du_crtc * crtc ) ;
void rcar_du_vsp_atomic_begin ( struct rcar_du_crtc * crtc ) ;
void rcar_du_vsp_atomic_flush ( struct rcar_du_crtc * crtc ) ;
2019-02-21 03:20:42 +02:00
int rcar_du_vsp_map_fb ( struct rcar_du_vsp * vsp , struct drm_framebuffer * fb ,
struct sg_table sg_tables [ 3 ] ) ;
void rcar_du_vsp_unmap_fb ( struct rcar_du_vsp * vsp , struct drm_framebuffer * fb ,
struct sg_table sg_tables [ 3 ] ) ;
2015-09-07 17:14:58 +03:00
# else
2017-06-26 13:12:01 +03:00
static inline int rcar_du_vsp_init ( struct rcar_du_vsp * vsp ,
struct device_node * np ,
unsigned int crtcs )
{
return - ENXIO ;
}
2015-09-07 17:14:58 +03:00
static inline void rcar_du_vsp_enable ( struct rcar_du_crtc * crtc ) { } ;
static inline void rcar_du_vsp_disable ( struct rcar_du_crtc * crtc ) { } ;
static inline void rcar_du_vsp_atomic_begin ( struct rcar_du_crtc * crtc ) { } ;
static inline void rcar_du_vsp_atomic_flush ( struct rcar_du_crtc * crtc ) { } ;
2019-02-21 03:20:42 +02:00
static inline int rcar_du_vsp_map_fb ( struct rcar_du_vsp * vsp ,
struct drm_framebuffer * fb ,
struct sg_table sg_tables [ 3 ] )
{
return - ENXIO ;
}
static inline void rcar_du_vsp_unmap_fb ( struct rcar_du_vsp * vsp ,
struct drm_framebuffer * fb ,
struct sg_table sg_tables [ 3 ] )
{
}
2015-09-07 17:14:58 +03:00
# endif
# endif /* __RCAR_DU_VSP_H__ */