Commit 86b68716 authored by Dave Airlie's avatar Dave Airlie

Merge branch 'drm/next/du' of git://linuxtv.org/pinchartl/fbdev into drm-next

some rcar fixes.

* 'drm/next/du' of git://linuxtv.org/pinchartl/fbdev:
  drm: rcar-du: Fix plane state free in plane reset handler
  drm: rcar-du: Enable DU0 to DPAD connection on R8A7791
  drm: rcar-du: Add dependency on OF
  drm: rcar-du: Remove obsolete rcar-du-r8a779x platform_device_id entries
parents 31875672 a32a3c80
config DRM_RCAR_DU config DRM_RCAR_DU
tristate "DRM Support for R-Car Display Unit" tristate "DRM Support for R-Car Display Unit"
depends on DRM && ARM && HAVE_DMA_ATTRS depends on DRM && ARM && HAVE_DMA_ATTRS && OF
depends on ARCH_SHMOBILE || COMPILE_TEST depends on ARCH_SHMOBILE || COMPILE_TEST
select DRM_KMS_HELPER select DRM_KMS_HELPER
select DRM_KMS_CMA_HELPER select DRM_KMS_CMA_HELPER
......
...@@ -93,7 +93,7 @@ static const struct rcar_du_device_info rcar_du_r8a7791_info = { ...@@ -93,7 +93,7 @@ static const struct rcar_du_device_info rcar_du_r8a7791_info = {
* (currently unsupported) TCON output. * (currently unsupported) TCON output.
*/ */
[RCAR_DU_OUTPUT_DPAD0] = { [RCAR_DU_OUTPUT_DPAD0] = {
.possible_crtcs = BIT(1), .possible_crtcs = BIT(1) | BIT(0),
.encoder_type = DRM_MODE_ENCODER_NONE, .encoder_type = DRM_MODE_ENCODER_NONE,
.port = 0, .port = 0,
}, },
...@@ -106,15 +106,6 @@ static const struct rcar_du_device_info rcar_du_r8a7791_info = { ...@@ -106,15 +106,6 @@ static const struct rcar_du_device_info rcar_du_r8a7791_info = {
.num_lvds = 1, .num_lvds = 1,
}; };
static const struct platform_device_id rcar_du_id_table[] = {
{ "rcar-du-r8a7779", (kernel_ulong_t)&rcar_du_r8a7779_info },
{ "rcar-du-r8a7790", (kernel_ulong_t)&rcar_du_r8a7790_info },
{ "rcar-du-r8a7791", (kernel_ulong_t)&rcar_du_r8a7791_info },
{ }
};
MODULE_DEVICE_TABLE(platform, rcar_du_id_table);
static const struct of_device_id rcar_du_of_table[] = { static const struct of_device_id rcar_du_of_table[] = {
{ .compatible = "renesas,du-r8a7779", .data = &rcar_du_r8a7779_info }, { .compatible = "renesas,du-r8a7779", .data = &rcar_du_r8a7779_info },
{ .compatible = "renesas,du-r8a7790", .data = &rcar_du_r8a7790_info }, { .compatible = "renesas,du-r8a7790", .data = &rcar_du_r8a7790_info },
...@@ -167,8 +158,7 @@ static int rcar_du_load(struct drm_device *dev, unsigned long flags) ...@@ -167,8 +158,7 @@ static int rcar_du_load(struct drm_device *dev, unsigned long flags)
init_waitqueue_head(&rcdu->commit.wait); init_waitqueue_head(&rcdu->commit.wait);
rcdu->dev = &pdev->dev; rcdu->dev = &pdev->dev;
rcdu->info = np ? of_match_device(rcar_du_of_table, rcdu->dev)->data rcdu->info = of_match_device(rcar_du_of_table, rcdu->dev)->data;
: (void *)platform_get_device_id(pdev)->driver_data;
rcdu->ddev = dev; rcdu->ddev = dev;
dev->dev_private = rcdu; dev->dev_private = rcdu;
...@@ -340,7 +330,6 @@ static struct platform_driver rcar_du_platform_driver = { ...@@ -340,7 +330,6 @@ static struct platform_driver rcar_du_platform_driver = {
.pm = &rcar_du_pm_ops, .pm = &rcar_du_pm_ops,
.of_match_table = rcar_du_of_table, .of_match_table = rcar_du_of_table,
}, },
.id_table = rcar_du_id_table,
}; };
module_platform_driver(rcar_du_platform_driver); module_platform_driver(rcar_du_platform_driver);
......
...@@ -273,29 +273,6 @@ static const struct drm_plane_helper_funcs rcar_du_plane_helper_funcs = { ...@@ -273,29 +273,6 @@ static const struct drm_plane_helper_funcs rcar_du_plane_helper_funcs = {
.atomic_update = rcar_du_plane_atomic_update, .atomic_update = rcar_du_plane_atomic_update,
}; };
static void rcar_du_plane_reset(struct drm_plane *plane)
{
struct rcar_du_plane_state *state;
if (plane->state && plane->state->fb)
drm_framebuffer_unreference(plane->state->fb);
kfree(plane->state);
plane->state = NULL;
state = kzalloc(sizeof(*state), GFP_KERNEL);
if (state == NULL)
return;
state->hwindex = -1;
state->alpha = 255;
state->colorkey = RCAR_DU_COLORKEY_NONE;
state->zpos = plane->type == DRM_PLANE_TYPE_PRIMARY ? 0 : 1;
plane->state = &state->state;
plane->state->plane = plane;
}
static struct drm_plane_state * static struct drm_plane_state *
rcar_du_plane_atomic_duplicate_state(struct drm_plane *plane) rcar_du_plane_atomic_duplicate_state(struct drm_plane *plane)
{ {
...@@ -322,6 +299,28 @@ static void rcar_du_plane_atomic_destroy_state(struct drm_plane *plane, ...@@ -322,6 +299,28 @@ static void rcar_du_plane_atomic_destroy_state(struct drm_plane *plane,
kfree(to_rcar_plane_state(state)); kfree(to_rcar_plane_state(state));
} }
static void rcar_du_plane_reset(struct drm_plane *plane)
{
struct rcar_du_plane_state *state;
if (plane->state) {
rcar_du_plane_atomic_destroy_state(plane, plane->state);
plane->state = NULL;
}
state = kzalloc(sizeof(*state), GFP_KERNEL);
if (state == NULL)
return;
state->hwindex = -1;
state->alpha = 255;
state->colorkey = RCAR_DU_COLORKEY_NONE;
state->zpos = plane->type == DRM_PLANE_TYPE_PRIMARY ? 0 : 1;
plane->state = &state->state;
plane->state->plane = plane;
}
static int rcar_du_plane_atomic_set_property(struct drm_plane *plane, static int rcar_du_plane_atomic_set_property(struct drm_plane *plane,
struct drm_plane_state *state, struct drm_plane_state *state,
struct drm_property *property, struct drm_property *property,
......
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