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
This commit is contained in:
commit
86b6871641
|
@ -1,6 +1,6 @@
|
||||||
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 = {
|
||||||
* (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 = {
|
||||||
.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)
|
||||||
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 = {
|
||||||
.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 = {
|
||||||
.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,
|
||||||
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,
|
||||||
|
|
Loading…
Reference in New Issue