forked from Minki/linux
drm: Make the CRTC gamma_set operation optional
Drivers for hardware without gamma support should not be forced to implement a no-op gamma set operation. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Cc: Rob Clark <rob.clark@linaro.org> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
e6ecefaadf
commit
ebe0f2442c
@ -3332,6 +3332,11 @@ int drm_mode_gamma_set_ioctl(struct drm_device *dev,
|
|||||||
}
|
}
|
||||||
crtc = obj_to_crtc(obj);
|
crtc = obj_to_crtc(obj);
|
||||||
|
|
||||||
|
if (crtc->funcs->gamma_set == NULL) {
|
||||||
|
ret = -ENOSYS;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
/* memcpy into gamma store */
|
/* memcpy into gamma store */
|
||||||
if (crtc_lut->gamma_size != crtc->gamma_size) {
|
if (crtc_lut->gamma_size != crtc->gamma_size) {
|
||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
|
@ -136,6 +136,9 @@ static void drm_fb_helper_restore_lut_atomic(struct drm_crtc *crtc)
|
|||||||
{
|
{
|
||||||
uint16_t *r_base, *g_base, *b_base;
|
uint16_t *r_base, *g_base, *b_base;
|
||||||
|
|
||||||
|
if (crtc->funcs->gamma_set == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
r_base = crtc->gamma_store;
|
r_base = crtc->gamma_store;
|
||||||
g_base = r_base + crtc->gamma_size;
|
g_base = r_base + crtc->gamma_size;
|
||||||
b_base = g_base + crtc->gamma_size;
|
b_base = g_base + crtc->gamma_size;
|
||||||
|
@ -36,12 +36,6 @@ struct omap_crtc {
|
|||||||
struct drm_framebuffer *old_fb;
|
struct drm_framebuffer *old_fb;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void omap_crtc_gamma_set(struct drm_crtc *crtc,
|
|
||||||
u16 *red, u16 *green, u16 *blue, uint32_t start, uint32_t size)
|
|
||||||
{
|
|
||||||
/* not supported.. at least not yet */
|
|
||||||
}
|
|
||||||
|
|
||||||
static void omap_crtc_destroy(struct drm_crtc *crtc)
|
static void omap_crtc_destroy(struct drm_crtc *crtc)
|
||||||
{
|
{
|
||||||
struct omap_crtc *omap_crtc = to_omap_crtc(crtc);
|
struct omap_crtc *omap_crtc = to_omap_crtc(crtc);
|
||||||
@ -198,7 +192,6 @@ static int omap_crtc_page_flip_locked(struct drm_crtc *crtc,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static const struct drm_crtc_funcs omap_crtc_funcs = {
|
static const struct drm_crtc_funcs omap_crtc_funcs = {
|
||||||
.gamma_set = omap_crtc_gamma_set,
|
|
||||||
.set_config = drm_crtc_helper_set_config,
|
.set_config = drm_crtc_helper_set_config,
|
||||||
.destroy = omap_crtc_destroy,
|
.destroy = omap_crtc_destroy,
|
||||||
.page_flip = omap_crtc_page_flip_locked,
|
.page_flip = omap_crtc_page_flip_locked,
|
||||||
|
Loading…
Reference in New Issue
Block a user