drivers/gpu/drm/openchrome/openchrome_crtc.c | 73 ++++++++++++++++++++---- drivers/gpu/drm/openchrome/openchrome_display.c | 10 +++ drivers/gpu/drm/openchrome/openchrome_display.h | 1 drivers/gpu/drm/openchrome/openchrome_drv.h | 6 + 4 files changed, 78 insertions(+), 12 deletions(-)
New commits: commit 5836aaa19bd95e0a2e9b11a37582d80764d31889 Author: Kevin Brace <kevinbr...@gmx.com> Date: Tue Jun 4 19:15:30 2019 -0500 drm/openchrome: Version bumped to 3.1.8 Adopted the use of primary plane for the frame buffer Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/openchrome/openchrome_drv.h b/drivers/gpu/drm/openchrome/openchrome_drv.h index cd7e3c1bc6a0..dd0107ff6bea 100644 --- a/drivers/gpu/drm/openchrome/openchrome_drv.h +++ b/drivers/gpu/drm/openchrome/openchrome_drv.h @@ -51,10 +51,10 @@ #define DRIVER_MAJOR 3 #define DRIVER_MINOR 1 -#define DRIVER_PATCHLEVEL 7 +#define DRIVER_PATCHLEVEL 8 #define DRIVER_NAME "openchrome" #define DRIVER_DESC "OpenChrome DRM for VIA Technologies Chrome IGP" -#define DRIVER_DATE "20190521" +#define DRIVER_DATE "20190604" #define DRIVER_AUTHOR "OpenChrome Project" commit eddad0bb3993a3c2524a5d880683119fc321f58e Author: Kevin Brace <kevinbr...@gmx.com> Date: Tue Jun 4 19:13:33 2019 -0500 drm/openchrome: Adopt the use of primary plane for the frame buffer Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/openchrome/openchrome_crtc.c b/drivers/gpu/drm/openchrome/openchrome_crtc.c index 6dd4d10fd66d..a25081273de5 100644 --- a/drivers/gpu/drm/openchrome/openchrome_crtc.c +++ b/drivers/gpu/drm/openchrome/openchrome_crtc.c @@ -2478,29 +2478,76 @@ drm_crtc_helper_funcs openchrome_iga2_drm_crtc_helper_funcs = { .mode_set_base_atomic = via_iga2_mode_set_base_atomic, }; +static const uint32_t openchrome_drm_plane_format[] = { + DRM_FORMAT_XRGB8888, + DRM_FORMAT_ARGB8888, + DRM_FORMAT_RGB888, + DRM_FORMAT_RGB565, + DRM_FORMAT_RGB332, +}; + +static const struct drm_plane_helper_funcs +openchrome_drm_plane_helper_funcs = { +}; + +int openchrome_plane_init(struct drm_device *dev, int index) +{ + struct openchrome_drm_private *dev_private = + dev->dev_private; + struct drm_plane *primary; + int ret; + + DRM_DEBUG_KMS("Entered %s.\n", __func__); + + primary = &dev_private->primary[index]; + + drm_plane_helper_add(primary, + &openchrome_drm_plane_helper_funcs); + ret = drm_universal_plane_init(dev, primary, 0, + &drm_primary_helper_funcs, + openchrome_drm_plane_format, + ARRAY_SIZE(openchrome_drm_plane_format), + NULL, DRM_PLANE_TYPE_PRIMARY, NULL); + if (ret) { + DRM_ERROR("Failed to initialize a primary " + "plane.\n"); + goto free_primary; + } + + goto exit; +free_primary: + drm_plane_cleanup(primary); +exit: + DRM_DEBUG_KMS("Exiting %s.\n", __func__); + return ret; +} + int via_crtc_init(struct drm_device *dev, int index) { struct openchrome_drm_private *dev_private = dev->dev_private; struct via_crtc *iga = &dev_private->iga[index]; + struct drm_plane *primary; struct drm_crtc *crtc = &iga->base; struct openchrome_bo *bo; int cursor_size = 64 * 64 * 4, i; u16 *gamma; int ret; + primary = &dev_private->primary[index]; + iga->index = index; if (index) { - ret = drm_crtc_init(dev, crtc, - &openchrome_iga2_drm_crtc_funcs); + drm_crtc_helper_add(crtc, + &openchrome_iga2_drm_crtc_helper_funcs); + ret = drm_crtc_init_with_planes(dev, crtc, primary, + NULL, &openchrome_iga2_drm_crtc_funcs, + NULL); if (ret) { DRM_ERROR("Failed to initialize CRTC!\n"); goto exit; } - drm_crtc_helper_add(crtc, - &openchrome_iga2_drm_crtc_helper_funcs); - iga->timings.htotal.count = ARRAY_SIZE(iga2_hor_total); iga->timings.htotal.regs = iga2_hor_total; @@ -2575,16 +2622,16 @@ int via_crtc_init(struct drm_device *dev, int index) iga->offset.count = ARRAY_SIZE(iga2_offset) - 1; iga->offset.regs = iga2_offset; } else { - ret = drm_crtc_init(dev, crtc, - &openchrome_iga1_drm_crtc_funcs); + drm_crtc_helper_add(crtc, + &openchrome_iga1_drm_crtc_helper_funcs); + ret = drm_crtc_init_with_planes(dev, crtc, primary, + NULL, &openchrome_iga1_drm_crtc_funcs, + NULL); if (ret) { DRM_ERROR("Failed to initialize CRTC!\n"); goto exit; } - drm_crtc_helper_add(crtc, - &openchrome_iga1_drm_crtc_helper_funcs); - iga->timings.htotal.count = ARRAY_SIZE(iga1_hor_total); iga->timings.htotal.regs = iga1_hor_total; diff --git a/drivers/gpu/drm/openchrome/openchrome_display.c b/drivers/gpu/drm/openchrome/openchrome_display.c index 7f3993b07149..135dffa73931 100644 --- a/drivers/gpu/drm/openchrome/openchrome_display.c +++ b/drivers/gpu/drm/openchrome/openchrome_display.c @@ -497,6 +497,16 @@ via_modeset_init(struct drm_device *dev) via_i2c_init(dev); via_hwcursor_init(dev_private); + ret = openchrome_plane_init(dev, 0); + if (ret) { + goto exit; + } + + ret = openchrome_plane_init(dev, 1); + if (ret) { + goto exit; + } + ret = via_crtc_init(dev, 0); if (ret) { goto exit; diff --git a/drivers/gpu/drm/openchrome/openchrome_display.h b/drivers/gpu/drm/openchrome/openchrome_display.h index 8e001d4a48b5..b0c205ad8576 100644 --- a/drivers/gpu/drm/openchrome/openchrome_display.h +++ b/drivers/gpu/drm/openchrome/openchrome_display.h @@ -175,6 +175,7 @@ extern void via_fbdev_fini(struct drm_device *dev); /* crtc */ extern void via_load_crtc_pixel_timing(struct drm_crtc *crtc, struct drm_display_mode *mode); +int openchrome_plane_init(struct drm_device *dev, int index); extern int via_crtc_init(struct drm_device *dev, int index); /* encoders */ diff --git a/drivers/gpu/drm/openchrome/openchrome_drv.h b/drivers/gpu/drm/openchrome/openchrome_drv.h index a5e20c1979eb..cd7e3c1bc6a0 100644 --- a/drivers/gpu/drm/openchrome/openchrome_drv.h +++ b/drivers/gpu/drm/openchrome/openchrome_drv.h @@ -152,6 +152,8 @@ struct openchrome_drm_private { enum via_engine engine_type; + struct drm_plane primary[2]; + struct via_crtc iga[2]; bool spread_spectrum; commit 76fd4b36f99b8fffdda06dcee2525286e0ef6c05 Author: Kevin Brace <kevinbr...@gmx.com> Date: Tue Jun 4 17:55:18 2019 -0500 drm/openchrome: Rename drm_crtc callback function structs Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/openchrome/openchrome_crtc.c b/drivers/gpu/drm/openchrome/openchrome_crtc.c index 4cc50c25c0cc..6dd4d10fd66d 100644 --- a/drivers/gpu/drm/openchrome/openchrome_crtc.c +++ b/drivers/gpu/drm/openchrome/openchrome_crtc.c @@ -567,7 +567,7 @@ exit: drm_crtc_cleanup(crtc); } -static const struct drm_crtc_funcs via_iga1_funcs = { +static const struct drm_crtc_funcs openchrome_iga1_drm_crtc_funcs = { .cursor_set = via_crtc_cursor_set, .cursor_move = via_crtc_cursor_move, .gamma_set = via_iga1_gamma_set, @@ -575,7 +575,7 @@ static const struct drm_crtc_funcs via_iga1_funcs = { .destroy = via_crtc_destroy, }; -static const struct drm_crtc_funcs via_iga2_funcs = { +static const struct drm_crtc_funcs openchrome_iga2_drm_crtc_funcs = { .cursor_set = via_crtc_cursor_set, .cursor_move = via_crtc_cursor_move, .gamma_set = via_iga2_gamma_set, @@ -2456,7 +2456,8 @@ via_iga2_mode_set_base_atomic(struct drm_crtc *crtc, return 0; } -static const struct drm_crtc_helper_funcs via_iga1_helper_funcs = { +static const struct +drm_crtc_helper_funcs openchrome_iga1_drm_crtc_helper_funcs = { .dpms = via_iga1_crtc_dpms, .disable = via_iga1_crtc_disable, .prepare = via_iga1_crtc_prepare, @@ -2466,7 +2467,8 @@ static const struct drm_crtc_helper_funcs via_iga1_helper_funcs = { .mode_set_base_atomic = via_iga1_mode_set_base_atomic, }; -static const struct drm_crtc_helper_funcs via_iga2_helper_funcs = { +static const struct +drm_crtc_helper_funcs openchrome_iga2_drm_crtc_helper_funcs = { .dpms = via_iga2_crtc_dpms, .disable = via_iga2_crtc_disable, .prepare = via_iga2_crtc_prepare, @@ -2489,13 +2491,15 @@ int via_crtc_init(struct drm_device *dev, int index) iga->index = index; if (index) { - ret = drm_crtc_init(dev, crtc, &via_iga2_funcs); + ret = drm_crtc_init(dev, crtc, + &openchrome_iga2_drm_crtc_funcs); if (ret) { DRM_ERROR("Failed to initialize CRTC!\n"); goto exit; } - drm_crtc_helper_add(crtc, &via_iga2_helper_funcs); + drm_crtc_helper_add(crtc, + &openchrome_iga2_drm_crtc_helper_funcs); iga->timings.htotal.count = ARRAY_SIZE(iga2_hor_total); iga->timings.htotal.regs = iga2_hor_total; @@ -2571,13 +2575,15 @@ int via_crtc_init(struct drm_device *dev, int index) iga->offset.count = ARRAY_SIZE(iga2_offset) - 1; iga->offset.regs = iga2_offset; } else { - ret = drm_crtc_init(dev, crtc, &via_iga1_funcs); + ret = drm_crtc_init(dev, crtc, + &openchrome_iga1_drm_crtc_funcs); if (ret) { DRM_ERROR("Failed to initialize CRTC!\n"); goto exit; } - drm_crtc_helper_add(crtc, &via_iga1_helper_funcs); + drm_crtc_helper_add(crtc, + &openchrome_iga1_drm_crtc_helper_funcs); iga->timings.htotal.count = ARRAY_SIZE(iga1_hor_total); iga->timings.htotal.regs = iga1_hor_total; _______________________________________________ openchrome-devel mailing list openchrome-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/openchrome-devel