Merge branch 'drm-rockchip-next-fixes-2016-07-19' of https://github.com/markyzq/kernel-drm-rockchip into drm-next
Here are some little fixes for rockchip drm, looks good for me, and there is no doubt on them, So I'd like you can land them. * 'drm-rockchip-next-fixes-2016-07-19' of https://github.com/markyzq/kernel-drm-rockchip: drm/rockchip: allocate correct crtc state structure on reset drm/rockchip: Delete an unnecessary check before drm_gem_object_unreference_unlocked() drm/rockchip: fix a couple off by one bugs drm/rockchip: vop: correct rk3036 register define drm/rockchip: vop: correct the source size of uv scale factor setting drm/rockchip: vop: add uv_vir register field for RK3036 VOP drm/rockchip: fix "should it be static?" warnings drm/rockchip: fb: add missing header drm/rockchip: dw_hdmi: remove unused #include
This commit is contained in:
commit
c8c21231f0
@ -15,7 +15,6 @@
|
||||
#include <drm/drmP.h>
|
||||
#include <drm/drm_crtc_helper.h>
|
||||
#include <drm/drm_edid.h>
|
||||
#include <drm/drm_encoder_slave.h>
|
||||
#include <drm/bridge/dw_hdmi.h>
|
||||
|
||||
#include "rockchip_drm_drv.h"
|
||||
|
@ -79,7 +79,7 @@ int rockchip_register_crtc_funcs(struct drm_crtc *crtc,
|
||||
int pipe = drm_crtc_index(crtc);
|
||||
struct rockchip_drm_private *priv = crtc->dev->dev_private;
|
||||
|
||||
if (pipe > ROCKCHIP_MAX_CRTC)
|
||||
if (pipe >= ROCKCHIP_MAX_CRTC)
|
||||
return -EINVAL;
|
||||
|
||||
priv->crtc_funcs[pipe] = crtc_funcs;
|
||||
@ -92,7 +92,7 @@ void rockchip_unregister_crtc_funcs(struct drm_crtc *crtc)
|
||||
int pipe = drm_crtc_index(crtc);
|
||||
struct rockchip_drm_private *priv = crtc->dev->dev_private;
|
||||
|
||||
if (pipe > ROCKCHIP_MAX_CRTC)
|
||||
if (pipe >= ROCKCHIP_MAX_CRTC)
|
||||
return;
|
||||
|
||||
priv->crtc_funcs[pipe] = NULL;
|
||||
@ -257,7 +257,7 @@ static void rockchip_drm_unbind(struct device *dev)
|
||||
dev_set_drvdata(dev, NULL);
|
||||
}
|
||||
|
||||
void rockchip_drm_lastclose(struct drm_device *dev)
|
||||
static void rockchip_drm_lastclose(struct drm_device *dev)
|
||||
{
|
||||
struct rockchip_drm_private *priv = dev->dev_private;
|
||||
|
||||
|
@ -20,6 +20,7 @@
|
||||
#include <drm/drm_crtc_helper.h>
|
||||
|
||||
#include "rockchip_drm_drv.h"
|
||||
#include "rockchip_drm_fb.h"
|
||||
#include "rockchip_drm_gem.h"
|
||||
|
||||
#define to_rockchip_fb(x) container_of(x, struct rockchip_drm_fb, fb)
|
||||
@ -43,14 +44,10 @@ struct drm_gem_object *rockchip_fb_get_gem_obj(struct drm_framebuffer *fb,
|
||||
static void rockchip_drm_fb_destroy(struct drm_framebuffer *fb)
|
||||
{
|
||||
struct rockchip_drm_fb *rockchip_fb = to_rockchip_fb(fb);
|
||||
struct drm_gem_object *obj;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < ROCKCHIP_MAX_FB_BUFFER; i++) {
|
||||
obj = rockchip_fb->obj[i];
|
||||
if (obj)
|
||||
drm_gem_object_unreference_unlocked(obj);
|
||||
}
|
||||
for (i = 0; i < ROCKCHIP_MAX_FB_BUFFER; i++)
|
||||
drm_gem_object_unreference_unlocked(rockchip_fb->obj[i]);
|
||||
|
||||
drm_framebuffer_cleanup(fb);
|
||||
kfree(rockchip_fb);
|
||||
@ -245,7 +242,7 @@ rockchip_atomic_commit_tail(struct drm_atomic_state *state)
|
||||
drm_atomic_helper_cleanup_planes(dev, state);
|
||||
}
|
||||
|
||||
struct drm_mode_config_helper_funcs rockchip_mode_config_helpers = {
|
||||
static struct drm_mode_config_helper_funcs rockchip_mode_config_helpers = {
|
||||
.atomic_commit_tail = rockchip_atomic_commit_tail,
|
||||
};
|
||||
|
||||
|
@ -328,9 +328,9 @@ static void scl_vop_cal_scl_fac(struct vop *vop, const struct vop_win_data *win,
|
||||
scl_cal_scale2(src_h, dst_h));
|
||||
if (is_yuv) {
|
||||
VOP_SCL_SET(vop, win, scale_cbcr_x,
|
||||
scl_cal_scale2(src_w, dst_w));
|
||||
scl_cal_scale2(cbcr_src_w, dst_w));
|
||||
VOP_SCL_SET(vop, win, scale_cbcr_y,
|
||||
scl_cal_scale2(src_h, dst_h));
|
||||
scl_cal_scale2(cbcr_src_h, dst_h));
|
||||
}
|
||||
return;
|
||||
}
|
||||
@ -798,7 +798,7 @@ static const struct drm_plane_helper_funcs plane_helper_funcs = {
|
||||
.atomic_disable = vop_plane_atomic_disable,
|
||||
};
|
||||
|
||||
void vop_atomic_plane_reset(struct drm_plane *plane)
|
||||
static void vop_atomic_plane_reset(struct drm_plane *plane)
|
||||
{
|
||||
struct vop_plane_state *vop_plane_state =
|
||||
to_vop_plane_state(plane->state);
|
||||
@ -815,7 +815,7 @@ void vop_atomic_plane_reset(struct drm_plane *plane)
|
||||
plane->state->plane = plane;
|
||||
}
|
||||
|
||||
struct drm_plane_state *
|
||||
static struct drm_plane_state *
|
||||
vop_atomic_plane_duplicate_state(struct drm_plane *plane)
|
||||
{
|
||||
struct vop_plane_state *old_vop_plane_state;
|
||||
@ -1052,6 +1052,17 @@ static void vop_crtc_destroy(struct drm_crtc *crtc)
|
||||
drm_crtc_cleanup(crtc);
|
||||
}
|
||||
|
||||
static void vop_crtc_reset(struct drm_crtc *crtc)
|
||||
{
|
||||
if (crtc->state)
|
||||
__drm_atomic_helper_crtc_destroy_state(crtc->state);
|
||||
kfree(crtc->state);
|
||||
|
||||
crtc->state = kzalloc(sizeof(struct rockchip_crtc_state), GFP_KERNEL);
|
||||
if (crtc->state)
|
||||
crtc->state->crtc = crtc;
|
||||
}
|
||||
|
||||
static struct drm_crtc_state *vop_crtc_duplicate_state(struct drm_crtc *crtc)
|
||||
{
|
||||
struct rockchip_crtc_state *rockchip_state;
|
||||
@ -1077,7 +1088,7 @@ static const struct drm_crtc_funcs vop_crtc_funcs = {
|
||||
.set_config = drm_atomic_helper_set_config,
|
||||
.page_flip = drm_atomic_helper_page_flip,
|
||||
.destroy = vop_crtc_destroy,
|
||||
.reset = drm_atomic_helper_crtc_reset,
|
||||
.reset = vop_crtc_reset,
|
||||
.atomic_duplicate_state = vop_crtc_duplicate_state,
|
||||
.atomic_destroy_state = vop_crtc_destroy_state,
|
||||
};
|
||||
|
@ -190,7 +190,7 @@ static const struct vop_data rk3288_vop = {
|
||||
.win_size = ARRAY_SIZE(rk3288_vop_win_data),
|
||||
};
|
||||
|
||||
static const struct vop_scl_regs rk3066_win_scl = {
|
||||
static const struct vop_scl_regs rk3036_win_scl = {
|
||||
.scale_yrgb_x = VOP_REG(RK3036_WIN0_SCL_FACTOR_YRGB, 0xffff, 0x0),
|
||||
.scale_yrgb_y = VOP_REG(RK3036_WIN0_SCL_FACTOR_YRGB, 0xffff, 16),
|
||||
.scale_cbcr_x = VOP_REG(RK3036_WIN0_SCL_FACTOR_CBR, 0xffff, 0x0),
|
||||
@ -198,7 +198,7 @@ static const struct vop_scl_regs rk3066_win_scl = {
|
||||
};
|
||||
|
||||
static const struct vop_win_phy rk3036_win0_data = {
|
||||
.scl = &rk3066_win_scl,
|
||||
.scl = &rk3036_win_scl,
|
||||
.data_formats = formats_win_full,
|
||||
.nformats = ARRAY_SIZE(formats_win_full),
|
||||
.enable = VOP_REG(RK3036_SYS_CTRL, 0x1, 0),
|
||||
@ -210,6 +210,7 @@ static const struct vop_win_phy rk3036_win0_data = {
|
||||
.yrgb_mst = VOP_REG(RK3036_WIN0_YRGB_MST, 0xffffffff, 0),
|
||||
.uv_mst = VOP_REG(RK3036_WIN0_CBR_MST, 0xffffffff, 0),
|
||||
.yrgb_vir = VOP_REG(RK3036_WIN0_VIR, 0xffff, 0),
|
||||
.uv_vir = VOP_REG(RK3036_WIN0_VIR, 0x1fff, 16),
|
||||
};
|
||||
|
||||
static const struct vop_win_phy rk3036_win1_data = {
|
||||
@ -299,7 +300,7 @@ static int vop_remove(struct platform_device *pdev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct platform_driver vop_platform_driver = {
|
||||
static struct platform_driver vop_platform_driver = {
|
||||
.probe = vop_probe,
|
||||
.remove = vop_remove,
|
||||
.driver = {
|
||||
|
Loading…
Reference in New Issue
Block a user