mirror of
https://github.com/torvalds/linux.git
synced 2024-12-26 12:52:30 +00:00
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
|
||||
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
|
||||
select DRM_KMS_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.
|
||||
*/
|
||||
[RCAR_DU_OUTPUT_DPAD0] = {
|
||||
.possible_crtcs = BIT(1),
|
||||
.possible_crtcs = BIT(1) | BIT(0),
|
||||
.encoder_type = DRM_MODE_ENCODER_NONE,
|
||||
.port = 0,
|
||||
},
|
||||
@ -106,15 +106,6 @@ static const struct rcar_du_device_info rcar_du_r8a7791_info = {
|
||||
.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[] = {
|
||||
{ .compatible = "renesas,du-r8a7779", .data = &rcar_du_r8a7779_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);
|
||||
|
||||
rcdu->dev = &pdev->dev;
|
||||
rcdu->info = np ? of_match_device(rcar_du_of_table, rcdu->dev)->data
|
||||
: (void *)platform_get_device_id(pdev)->driver_data;
|
||||
rcdu->info = of_match_device(rcar_du_of_table, rcdu->dev)->data;
|
||||
rcdu->ddev = dev;
|
||||
dev->dev_private = rcdu;
|
||||
|
||||
@ -340,7 +330,6 @@ static struct platform_driver rcar_du_platform_driver = {
|
||||
.pm = &rcar_du_pm_ops,
|
||||
.of_match_table = rcar_du_of_table,
|
||||
},
|
||||
.id_table = rcar_du_id_table,
|
||||
};
|
||||
|
||||
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,
|
||||
};
|
||||
|
||||
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 *
|
||||
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));
|
||||
}
|
||||
|
||||
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,
|
||||
struct drm_plane_state *state,
|
||||
struct drm_property *property,
|
||||
|
Loading…
Reference in New Issue
Block a user