mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-22 08:44:23 +07:00
drm/sun4i: Move layers from sun4i_drv to sun4i_crtc
This patch moves the sun4i_layers_init call from sun4i_drv_bind to sun4i_crtc_init, and the layers pointer from struct sun4i_drv to struct sun4i_crtc. The layers are bound to a specific crtc, and they are not directly used once initiated. They are used through their included drm_plane structures. Moving the layers into the crtc facilitates binding them to the crtc explicitly, by setting the corresponding bit in their .possible_crtcs fields right after the crtc is initialized. This is done in a later patch. Signed-off-by: Chen-Yu Tsai <wens@csie.org> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
This commit is contained in:
parent
2b2c22bf1c
commit
b3f266e428
@ -28,6 +28,7 @@
|
||||
#include "sun4i_backend.h"
|
||||
#include "sun4i_crtc.h"
|
||||
#include "sun4i_drv.h"
|
||||
#include "sun4i_layer.h"
|
||||
#include "sun4i_tcon.h"
|
||||
|
||||
static void sun4i_crtc_atomic_begin(struct drm_crtc *crtc,
|
||||
@ -149,6 +150,13 @@ struct sun4i_crtc *sun4i_crtc_init(struct drm_device *drm)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
scrtc->drv = drv;
|
||||
|
||||
/* Create our layers */
|
||||
scrtc->layers = sun4i_layers_init(drm);
|
||||
if (IS_ERR(scrtc->layers)) {
|
||||
dev_err(drm->dev, "Couldn't create the planes\n");
|
||||
return ERR_CAST(scrtc->layers);
|
||||
}
|
||||
|
||||
ret = drm_crtc_init_with_planes(drm, &scrtc->crtc,
|
||||
drv->primary,
|
||||
NULL,
|
||||
|
@ -18,6 +18,7 @@ struct sun4i_crtc {
|
||||
struct drm_pending_vblank_event *event;
|
||||
|
||||
struct sun4i_drv *drv;
|
||||
struct sun4i_layer **layers;
|
||||
};
|
||||
|
||||
static inline struct sun4i_crtc *drm_crtc_to_sun4i_crtc(struct drm_crtc *crtc)
|
||||
|
@ -23,7 +23,7 @@
|
||||
#include "sun4i_crtc.h"
|
||||
#include "sun4i_drv.h"
|
||||
#include "sun4i_framebuffer.h"
|
||||
#include "sun4i_layer.h"
|
||||
#include "sun4i_tcon.h"
|
||||
|
||||
static const struct file_operations sun4i_drv_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
@ -115,14 +115,6 @@ static int sun4i_drv_bind(struct device *dev)
|
||||
goto cleanup_mode_config;
|
||||
}
|
||||
|
||||
/* Create our layers */
|
||||
drv->layers = sun4i_layers_init(drm);
|
||||
if (IS_ERR(drv->layers)) {
|
||||
dev_err(drm->dev, "Couldn't create the planes\n");
|
||||
ret = PTR_ERR(drv->layers);
|
||||
goto cleanup_mode_config;
|
||||
}
|
||||
|
||||
/* Create our CRTC */
|
||||
drv->crtc = sun4i_crtc_init(drm);
|
||||
if (IS_ERR(drv->crtc)) {
|
||||
|
@ -23,8 +23,6 @@ struct sun4i_drv {
|
||||
|
||||
struct drm_plane *primary;
|
||||
struct drm_fbdev_cma *fbdev;
|
||||
|
||||
struct sun4i_layer **layers;
|
||||
};
|
||||
|
||||
#endif /* _SUN4I_DRV_H_ */
|
||||
|
Loading…
Reference in New Issue
Block a user