Hi Steffen,

On Wed, Oct 31, 2012 at 14:58:05, Steffen Trumtrar wrote:
> Add a function to convert from the generic videomode to a fb_videomode.
> 
> Signed-off-by: Steffen Trumtrar <s.trumtrar at pengutronix.de>
> ---
>  drivers/video/fbmon.c |   36 ++++++++++++++++++++++++++++++++++++
>  include/linux/fb.h    |    2 ++
>  2 files changed, 38 insertions(+)
> 
> diff --git a/drivers/video/fbmon.c b/drivers/video/fbmon.c
> index cef6557..b9e6ab3 100644
> --- a/drivers/video/fbmon.c
> +++ b/drivers/video/fbmon.c
> @@ -1373,6 +1373,42 @@ int fb_get_mode(int flags, u32 val, struct 
> fb_var_screeninfo *var, struct fb_inf
>       kfree(timings);
>       return err;
>  }
> +
> +#if IS_ENABLED(CONFIG_VIDEOMODE)
> +int videomode_to_fb_videomode(struct videomode *vm, struct fb_videomode 
> *fbmode)
> +{
> +     fbmode->xres = vm->hactive;
> +     fbmode->left_margin = vm->hback_porch;
> +     fbmode->right_margin = vm->hfront_porch;
> +     fbmode->hsync_len = vm->hsync_len;
> +
> +     fbmode->yres = vm->vactive;
> +     fbmode->upper_margin = vm->vback_porch;
> +     fbmode->lower_margin = vm->vfront_porch;
> +     fbmode->vsync_len = vm->vsync_len;
> +
> +     fbmode->pixclock = KHZ2PICOS(vm->pixelclock / 1000);
> +
> +     fbmode->sync = 0;
> +     fbmode->vmode = 0;
> +     if (vm->hah)
> +             fbmode->sync |= FB_SYNC_HOR_HIGH_ACT;
> +     if (vm->vah)
> +             fbmode->sync |= FB_SYNC_VERT_HIGH_ACT;
> +     if (vm->interlaced)
> +             fbmode->vmode |= FB_VMODE_INTERLACED;
> +     if (vm->doublescan)
> +             fbmode->vmode |= FB_VMODE_DOUBLE;
> +

"pixelclk-inverted" property of the panel is not percolated fb_videomode.
Please let me know if I am missing something.

Thanks,
Prakash

> +     fbmode->refresh = 60;
> +     fbmode->flag = 0;
> +
> +     return 0;
> +}
> +EXPORT_SYMBOL_GPL(videomode_to_fb_videomode);
> +#endif
> +
> +
>  #else
>  int fb_parse_edid(unsigned char *edid, struct fb_var_screeninfo *var)
>  {
> diff --git a/include/linux/fb.h b/include/linux/fb.h
> index c7a9571..46c665b 100644
> --- a/include/linux/fb.h
> +++ b/include/linux/fb.h
> @@ -714,6 +714,8 @@ extern void fb_destroy_modedb(struct fb_videomode 
> *modedb);
>  extern int fb_find_mode_cvt(struct fb_videomode *mode, int margins, int rb);
>  extern unsigned char *fb_ddc_read(struct i2c_adapter *adapter);
>  
> +extern int videomode_to_fb_videomode(struct videomode *vm, struct 
> fb_videomode *fbmode);
> +
>  /* drivers/video/modedb.c */
>  #define VESA_MODEDB_SIZE 34
>  extern void fb_var_to_videomode(struct fb_videomode *mode,
> -- 
> 1.7.10.4
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

Reply via email to