Commit c8c21231 authored by Dave Airlie's avatar Dave Airlie

Merge branch 'drm-rockchip-next-fixes-2016-07-19' of...

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
parents 0cf09031 dc0b408f
...@@ -15,7 +15,6 @@ ...@@ -15,7 +15,6 @@
#include <drm/drmP.h> #include <drm/drmP.h>
#include <drm/drm_crtc_helper.h> #include <drm/drm_crtc_helper.h>
#include <drm/drm_edid.h> #include <drm/drm_edid.h>
#include <drm/drm_encoder_slave.h>
#include <drm/bridge/dw_hdmi.h> #include <drm/bridge/dw_hdmi.h>
#include "rockchip_drm_drv.h" #include "rockchip_drm_drv.h"
......
...@@ -79,7 +79,7 @@ int rockchip_register_crtc_funcs(struct drm_crtc *crtc, ...@@ -79,7 +79,7 @@ int rockchip_register_crtc_funcs(struct drm_crtc *crtc,
int pipe = drm_crtc_index(crtc); int pipe = drm_crtc_index(crtc);
struct rockchip_drm_private *priv = crtc->dev->dev_private; struct rockchip_drm_private *priv = crtc->dev->dev_private;
if (pipe > ROCKCHIP_MAX_CRTC) if (pipe >= ROCKCHIP_MAX_CRTC)
return -EINVAL; return -EINVAL;
priv->crtc_funcs[pipe] = crtc_funcs; priv->crtc_funcs[pipe] = crtc_funcs;
...@@ -92,7 +92,7 @@ void rockchip_unregister_crtc_funcs(struct drm_crtc *crtc) ...@@ -92,7 +92,7 @@ void rockchip_unregister_crtc_funcs(struct drm_crtc *crtc)
int pipe = drm_crtc_index(crtc); int pipe = drm_crtc_index(crtc);
struct rockchip_drm_private *priv = crtc->dev->dev_private; struct rockchip_drm_private *priv = crtc->dev->dev_private;
if (pipe > ROCKCHIP_MAX_CRTC) if (pipe >= ROCKCHIP_MAX_CRTC)
return; return;
priv->crtc_funcs[pipe] = NULL; priv->crtc_funcs[pipe] = NULL;
...@@ -257,7 +257,7 @@ static void rockchip_drm_unbind(struct device *dev) ...@@ -257,7 +257,7 @@ static void rockchip_drm_unbind(struct device *dev)
dev_set_drvdata(dev, NULL); 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; struct rockchip_drm_private *priv = dev->dev_private;
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include <drm/drm_crtc_helper.h> #include <drm/drm_crtc_helper.h>
#include "rockchip_drm_drv.h" #include "rockchip_drm_drv.h"
#include "rockchip_drm_fb.h"
#include "rockchip_drm_gem.h" #include "rockchip_drm_gem.h"
#define to_rockchip_fb(x) container_of(x, struct rockchip_drm_fb, fb) #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, ...@@ -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) static void rockchip_drm_fb_destroy(struct drm_framebuffer *fb)
{ {
struct rockchip_drm_fb *rockchip_fb = to_rockchip_fb(fb); struct rockchip_drm_fb *rockchip_fb = to_rockchip_fb(fb);
struct drm_gem_object *obj;
int i; int i;
for (i = 0; i < ROCKCHIP_MAX_FB_BUFFER; i++) { for (i = 0; i < ROCKCHIP_MAX_FB_BUFFER; i++)
obj = rockchip_fb->obj[i]; drm_gem_object_unreference_unlocked(rockchip_fb->obj[i]);
if (obj)
drm_gem_object_unreference_unlocked(obj);
}
drm_framebuffer_cleanup(fb); drm_framebuffer_cleanup(fb);
kfree(rockchip_fb); kfree(rockchip_fb);
...@@ -245,7 +242,7 @@ rockchip_atomic_commit_tail(struct drm_atomic_state *state) ...@@ -245,7 +242,7 @@ rockchip_atomic_commit_tail(struct drm_atomic_state *state)
drm_atomic_helper_cleanup_planes(dev, 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, .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, ...@@ -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)); scl_cal_scale2(src_h, dst_h));
if (is_yuv) { if (is_yuv) {
VOP_SCL_SET(vop, win, scale_cbcr_x, 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, VOP_SCL_SET(vop, win, scale_cbcr_y,
scl_cal_scale2(src_h, dst_h)); scl_cal_scale2(cbcr_src_h, dst_h));
} }
return; return;
} }
...@@ -798,7 +798,7 @@ static const struct drm_plane_helper_funcs plane_helper_funcs = { ...@@ -798,7 +798,7 @@ static const struct drm_plane_helper_funcs plane_helper_funcs = {
.atomic_disable = vop_plane_atomic_disable, .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 = struct vop_plane_state *vop_plane_state =
to_vop_plane_state(plane->state); to_vop_plane_state(plane->state);
...@@ -815,7 +815,7 @@ void vop_atomic_plane_reset(struct drm_plane *plane) ...@@ -815,7 +815,7 @@ void vop_atomic_plane_reset(struct drm_plane *plane)
plane->state->plane = plane; plane->state->plane = plane;
} }
struct drm_plane_state * static struct drm_plane_state *
vop_atomic_plane_duplicate_state(struct drm_plane *plane) vop_atomic_plane_duplicate_state(struct drm_plane *plane)
{ {
struct vop_plane_state *old_vop_plane_state; struct vop_plane_state *old_vop_plane_state;
...@@ -1052,6 +1052,17 @@ static void vop_crtc_destroy(struct drm_crtc *crtc) ...@@ -1052,6 +1052,17 @@ static void vop_crtc_destroy(struct drm_crtc *crtc)
drm_crtc_cleanup(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) static struct drm_crtc_state *vop_crtc_duplicate_state(struct drm_crtc *crtc)
{ {
struct rockchip_crtc_state *rockchip_state; struct rockchip_crtc_state *rockchip_state;
...@@ -1077,7 +1088,7 @@ static const struct drm_crtc_funcs vop_crtc_funcs = { ...@@ -1077,7 +1088,7 @@ static const struct drm_crtc_funcs vop_crtc_funcs = {
.set_config = drm_atomic_helper_set_config, .set_config = drm_atomic_helper_set_config,
.page_flip = drm_atomic_helper_page_flip, .page_flip = drm_atomic_helper_page_flip,
.destroy = vop_crtc_destroy, .destroy = vop_crtc_destroy,
.reset = drm_atomic_helper_crtc_reset, .reset = vop_crtc_reset,
.atomic_duplicate_state = vop_crtc_duplicate_state, .atomic_duplicate_state = vop_crtc_duplicate_state,
.atomic_destroy_state = vop_crtc_destroy_state, .atomic_destroy_state = vop_crtc_destroy_state,
}; };
......
...@@ -190,7 +190,7 @@ static const struct vop_data rk3288_vop = { ...@@ -190,7 +190,7 @@ static const struct vop_data rk3288_vop = {
.win_size = ARRAY_SIZE(rk3288_vop_win_data), .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_x = VOP_REG(RK3036_WIN0_SCL_FACTOR_YRGB, 0xffff, 0x0),
.scale_yrgb_y = VOP_REG(RK3036_WIN0_SCL_FACTOR_YRGB, 0xffff, 16), .scale_yrgb_y = VOP_REG(RK3036_WIN0_SCL_FACTOR_YRGB, 0xffff, 16),
.scale_cbcr_x = VOP_REG(RK3036_WIN0_SCL_FACTOR_CBR, 0xffff, 0x0), .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 = { ...@@ -198,7 +198,7 @@ static const struct vop_scl_regs rk3066_win_scl = {
}; };
static const struct vop_win_phy rk3036_win0_data = { static const struct vop_win_phy rk3036_win0_data = {
.scl = &rk3066_win_scl, .scl = &rk3036_win_scl,
.data_formats = formats_win_full, .data_formats = formats_win_full,
.nformats = ARRAY_SIZE(formats_win_full), .nformats = ARRAY_SIZE(formats_win_full),
.enable = VOP_REG(RK3036_SYS_CTRL, 0x1, 0), .enable = VOP_REG(RK3036_SYS_CTRL, 0x1, 0),
...@@ -210,6 +210,7 @@ static const struct vop_win_phy rk3036_win0_data = { ...@@ -210,6 +210,7 @@ static const struct vop_win_phy rk3036_win0_data = {
.yrgb_mst = VOP_REG(RK3036_WIN0_YRGB_MST, 0xffffffff, 0), .yrgb_mst = VOP_REG(RK3036_WIN0_YRGB_MST, 0xffffffff, 0),
.uv_mst = VOP_REG(RK3036_WIN0_CBR_MST, 0xffffffff, 0), .uv_mst = VOP_REG(RK3036_WIN0_CBR_MST, 0xffffffff, 0),
.yrgb_vir = VOP_REG(RK3036_WIN0_VIR, 0xffff, 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 = { static const struct vop_win_phy rk3036_win1_data = {
...@@ -299,7 +300,7 @@ static int vop_remove(struct platform_device *pdev) ...@@ -299,7 +300,7 @@ static int vop_remove(struct platform_device *pdev)
return 0; return 0;
} }
struct platform_driver vop_platform_driver = { static struct platform_driver vop_platform_driver = {
.probe = vop_probe, .probe = vop_probe,
.remove = vop_remove, .remove = vop_remove,
.driver = { .driver = {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment