Message ID | 1418954426-21909-4-git-send-email-steve_longerbeam@mentor.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Am Donnerstag, den 18.12.2014, 18:00 -0800 schrieb Steve Longerbeam: > Add conversion from drm_display_mode to videomode. > > Signed-off-by: Steve Longerbeam <steve_longerbeam@mentor.com> > --- > drivers/gpu/drm/drm_modes.c | 40 ++++++++++++++++++++++++++++++++++++++++ > include/drm/drm_modes.h | 2 ++ > 2 files changed, 42 insertions(+) > > diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c > index 6d8b941..583a391 100644 > --- a/drivers/gpu/drm/drm_modes.c > +++ b/drivers/gpu/drm/drm_modes.c > @@ -615,6 +615,46 @@ void drm_display_mode_from_videomode(const struct videomode *vm, > } > EXPORT_SYMBOL_GPL(drm_display_mode_from_videomode); > > +/** > + * videomode_from_drm_display_mode - fill in @vm using @dmode, > + * @dmode: drm_display_mode structure to use as source > + * @vm: videomode structure to use as destination > + * > + * Fills out @vm using the display mode specified in @dmode. > + */ > +void videomode_from_drm_display_mode(const struct drm_display_mode *dmode, > + struct videomode *vm) > +{ > + vm->hactive = dmode->hdisplay; > + vm->hfront_porch = dmode->hsync_start - dmode->hdisplay; > + vm->hsync_len = dmode->hsync_end - dmode->hsync_start; > + vm->hback_porch = dmode->htotal - dmode->hsync_end; > + > + vm->vactive = dmode->vdisplay; > + vm->vfront_porch = dmode->vsync_start - dmode->vdisplay; > + vm->vsync_len = dmode->vsync_end - dmode->vsync_start; > + vm->vback_porch = dmode->vtotal - dmode->vsync_end; > + > + vm->pixelclock = dmode->clock * 1000; > + > + vm->flags = 0; > + if (dmode->flags & DRM_MODE_FLAG_PHSYNC) > + vm->flags |= DISPLAY_FLAGS_HSYNC_HIGH; > + else if (dmode->flags & DRM_MODE_FLAG_NHSYNC) > + vm->flags |= DISPLAY_FLAGS_HSYNC_LOW; > + if (dmode->flags & DRM_MODE_FLAG_PVSYNC) > + vm->flags |= DISPLAY_FLAGS_VSYNC_HIGH; > + else if (dmode->flags & DRM_MODE_FLAG_NVSYNC) > + vm->flags |= DISPLAY_FLAGS_VSYNC_LOW; > + if (dmode->flags & DRM_MODE_FLAG_INTERLACE) > + vm->flags |= DISPLAY_FLAGS_INTERLACED; > + if (dmode->flags & DRM_MODE_FLAG_DBLSCAN) > + vm->flags |= DISPLAY_FLAGS_DOUBLESCAN; > + if (dmode->flags & DRM_MODE_FLAG_DBLCLK) > + vm->flags |= DISPLAY_FLAGS_DOUBLECLK; > +} > +EXPORT_SYMBOL_GPL(videomode_from_drm_display_mode); Is it ok for drm_modes to export a function that doesn't start with drm_ ? We could just rename this to drm_display_mode_to_videomode if necessary. I can fix it up as I apply it, but I'd like to know which is preferred. regards Philipp
On 19/12/14 11:03, Philipp Zabel wrote: > Am Donnerstag, den 18.12.2014, 18:00 -0800 schrieb Steve Longerbeam: >> Add conversion from drm_display_mode to videomode. >> >> Signed-off-by: Steve Longerbeam <steve_longerbeam@mentor.com> >> --- >> drivers/gpu/drm/drm_modes.c | 40 ++++++++++++++++++++++++++++++++++++++++ >> include/drm/drm_modes.h | 2 ++ >> 2 files changed, 42 insertions(+) >> >> diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c >> index 6d8b941..583a391 100644 >> --- a/drivers/gpu/drm/drm_modes.c >> +++ b/drivers/gpu/drm/drm_modes.c >> @@ -615,6 +615,46 @@ void drm_display_mode_from_videomode(const struct videomode *vm, >> } >> EXPORT_SYMBOL_GPL(drm_display_mode_from_videomode); >> >> +/** >> + * videomode_from_drm_display_mode - fill in @vm using @dmode, >> + * @dmode: drm_display_mode structure to use as source >> + * @vm: videomode structure to use as destination >> + * >> + * Fills out @vm using the display mode specified in @dmode. >> + */ >> +void videomode_from_drm_display_mode(const struct drm_display_mode *dmode, >> + struct videomode *vm) >> +{ >> + vm->hactive = dmode->hdisplay; >> + vm->hfront_porch = dmode->hsync_start - dmode->hdisplay; >> + vm->hsync_len = dmode->hsync_end - dmode->hsync_start; >> + vm->hback_porch = dmode->htotal - dmode->hsync_end; >> + >> + vm->vactive = dmode->vdisplay; >> + vm->vfront_porch = dmode->vsync_start - dmode->vdisplay; >> + vm->vsync_len = dmode->vsync_end - dmode->vsync_start; >> + vm->vback_porch = dmode->vtotal - dmode->vsync_end; >> + >> + vm->pixelclock = dmode->clock * 1000; >> + >> + vm->flags = 0; >> + if (dmode->flags & DRM_MODE_FLAG_PHSYNC) >> + vm->flags |= DISPLAY_FLAGS_HSYNC_HIGH; >> + else if (dmode->flags & DRM_MODE_FLAG_NHSYNC) >> + vm->flags |= DISPLAY_FLAGS_HSYNC_LOW; >> + if (dmode->flags & DRM_MODE_FLAG_PVSYNC) >> + vm->flags |= DISPLAY_FLAGS_VSYNC_HIGH; >> + else if (dmode->flags & DRM_MODE_FLAG_NVSYNC) >> + vm->flags |= DISPLAY_FLAGS_VSYNC_LOW; >> + if (dmode->flags & DRM_MODE_FLAG_INTERLACE) >> + vm->flags |= DISPLAY_FLAGS_INTERLACED; >> + if (dmode->flags & DRM_MODE_FLAG_DBLSCAN) >> + vm->flags |= DISPLAY_FLAGS_DOUBLESCAN; >> + if (dmode->flags & DRM_MODE_FLAG_DBLCLK) >> + vm->flags |= DISPLAY_FLAGS_DOUBLECLK; >> +} >> +EXPORT_SYMBOL_GPL(videomode_from_drm_display_mode); > > Is it ok for drm_modes to export a function that doesn't start with > drm_ ? We could just rename this to drm_display_mode_to_videomode if > necessary. I can fix it up as I apply it, but I'd like to know which is > preferred. > Non-native English speaker here, and drm_display_mode_to_videomode sounds better. Plus I think that *to* functions are more common than *from* ones. I'm not a drm dev, so just my 2c :) Cheers, Emil
On 12/19/2014 03:03 AM, Philipp Zabel wrote: > > +EXPORT_SYMBOL_GPL(videomode_from_drm_display_mode); > Is it ok for drm_modes to export a function that doesn't start with > drm_ ? We could just rename this to drm_display_mode_to_videomode if > necessary. I can fix it up as I apply it, but I'd like to know which is > preferred. Yeah, drm_display_mode_to_videomode() is probably better, makes it more clear it's part of the DRM kernel interfaces. Steve
diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c index 6d8b941..583a391 100644 --- a/drivers/gpu/drm/drm_modes.c +++ b/drivers/gpu/drm/drm_modes.c @@ -615,6 +615,46 @@ void drm_display_mode_from_videomode(const struct videomode *vm, } EXPORT_SYMBOL_GPL(drm_display_mode_from_videomode); +/** + * videomode_from_drm_display_mode - fill in @vm using @dmode, + * @dmode: drm_display_mode structure to use as source + * @vm: videomode structure to use as destination + * + * Fills out @vm using the display mode specified in @dmode. + */ +void videomode_from_drm_display_mode(const struct drm_display_mode *dmode, + struct videomode *vm) +{ + vm->hactive = dmode->hdisplay; + vm->hfront_porch = dmode->hsync_start - dmode->hdisplay; + vm->hsync_len = dmode->hsync_end - dmode->hsync_start; + vm->hback_porch = dmode->htotal - dmode->hsync_end; + + vm->vactive = dmode->vdisplay; + vm->vfront_porch = dmode->vsync_start - dmode->vdisplay; + vm->vsync_len = dmode->vsync_end - dmode->vsync_start; + vm->vback_porch = dmode->vtotal - dmode->vsync_end; + + vm->pixelclock = dmode->clock * 1000; + + vm->flags = 0; + if (dmode->flags & DRM_MODE_FLAG_PHSYNC) + vm->flags |= DISPLAY_FLAGS_HSYNC_HIGH; + else if (dmode->flags & DRM_MODE_FLAG_NHSYNC) + vm->flags |= DISPLAY_FLAGS_HSYNC_LOW; + if (dmode->flags & DRM_MODE_FLAG_PVSYNC) + vm->flags |= DISPLAY_FLAGS_VSYNC_HIGH; + else if (dmode->flags & DRM_MODE_FLAG_NVSYNC) + vm->flags |= DISPLAY_FLAGS_VSYNC_LOW; + if (dmode->flags & DRM_MODE_FLAG_INTERLACE) + vm->flags |= DISPLAY_FLAGS_INTERLACED; + if (dmode->flags & DRM_MODE_FLAG_DBLSCAN) + vm->flags |= DISPLAY_FLAGS_DOUBLESCAN; + if (dmode->flags & DRM_MODE_FLAG_DBLCLK) + vm->flags |= DISPLAY_FLAGS_DOUBLECLK; +} +EXPORT_SYMBOL_GPL(videomode_from_drm_display_mode); + #ifdef CONFIG_OF /** * of_get_drm_display_mode - get a drm_display_mode from devicetree diff --git a/include/drm/drm_modes.h b/include/drm/drm_modes.h index 91d0582..60c0144 100644 --- a/include/drm/drm_modes.h +++ b/include/drm/drm_modes.h @@ -197,6 +197,8 @@ struct drm_display_mode *drm_gtf_mode_complex(struct drm_device *dev, int GTF_K, int GTF_2J); void drm_display_mode_from_videomode(const struct videomode *vm, struct drm_display_mode *dmode); +void videomode_from_drm_display_mode(const struct drm_display_mode *dmode, + struct videomode *vm); int of_get_drm_display_mode(struct device_node *np, struct drm_display_mode *dmode, int index);
Add conversion from drm_display_mode to videomode. Signed-off-by: Steve Longerbeam <steve_longerbeam@mentor.com> --- drivers/gpu/drm/drm_modes.c | 40 ++++++++++++++++++++++++++++++++++++++++ include/drm/drm_modes.h | 2 ++ 2 files changed, 42 insertions(+)