Message ID | 1351675689-26814-6-git-send-email-s.trumtrar@pengutronix.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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@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@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html >
Hi Prakash! On Wed, Oct 31, 2012 at 03:30:03PM +0000, Manjunathappa, Prakash wrote: > 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@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. > You are right. I forgot that :( Regards, Steffen
Hi! On Wed, Oct 31, 2012 at 03:30:03PM +0000, Manjunathappa, Prakash wrote: > Hi Steffen, > > On Wed, Oct 31, 2012 at 14:58:05, Steffen Trumtrar wrote: > > +#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. > The next version is almost finished. Only thing I'm missing is this. And I actually do not know which flag would represent an inverted pixelclock in fb_videomode. Does anybody have any idea what I have to do here? if (vm->pixelclk_pol) fbmode->sync = ??? That's as far as I have come and I don't see a flag that seems right. Is this even a valid property of fb_videomode? Regards, Steffen
Hi Steffen, On Fri, Nov 09, 2012 at 02:55:45, Steffen Trumtrar wrote: > Hi! > > On Wed, Oct 31, 2012 at 03:30:03PM +0000, Manjunathappa, Prakash wrote: > > Hi Steffen, > > > > On Wed, Oct 31, 2012 at 14:58:05, Steffen Trumtrar wrote: > > > +#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. > > > > The next version is almost finished. Only thing I'm missing is this. > And I actually do not know which flag would represent an inverted pixelclock > in fb_videomode. Does anybody have any idea what I have to do here? > > if (vm->pixelclk_pol) > fbmode->sync = ??? > > That's as far as I have come and I don't see a flag that seems right. > Is this even a valid property of fb_videomode? > Thanks for considering it, I see IMX addresses it as proprietary FB_SYNC_ flag. FB_SYNC_CLK_INVERT: arch/arm/plat-mxc/include/mach/mx3fb.h Thanks, Prakash
Hi! On Fri, Nov 09, 2012 at 04:54:16PM +0000, Manjunathappa, Prakash wrote: > Hi Steffen, > > On Fri, Nov 09, 2012 at 02:55:45, Steffen Trumtrar wrote: > > Hi! > > > > On Wed, Oct 31, 2012 at 03:30:03PM +0000, Manjunathappa, Prakash wrote: > > > Hi Steffen, > > > > > > On Wed, Oct 31, 2012 at 14:58:05, Steffen Trumtrar wrote: > > > > +#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. > > > > > > > The next version is almost finished. Only thing I'm missing is this. > > And I actually do not know which flag would represent an inverted pixelclock > > in fb_videomode. Does anybody have any idea what I have to do here? > > > > if (vm->pixelclk_pol) > > fbmode->sync = ??? > > > > That's as far as I have come and I don't see a flag that seems right. > > Is this even a valid property of fb_videomode? > > > > Thanks for considering it, I see IMX addresses it as proprietary FB_SYNC_ flag. > FB_SYNC_CLK_INVERT: arch/arm/plat-mxc/include/mach/mx3fb.h > No problem. So, it seems this flag has to be set in some imx-specific videomode_to_fb_videomode function. It is included in the struct videomode, so that should be no problem. But it will not be part of this series. Regards, Steffen
Hi Steffen, On Friday 09 November 2012 20:31:33 Steffen Trumtrar wrote: > On Fri, Nov 09, 2012 at 04:54:16PM +0000, Manjunathappa, Prakash wrote: > > On Fri, Nov 09, 2012 at 02:55:45, Steffen Trumtrar wrote: > > > On Wed, Oct 31, 2012 at 03:30:03PM +0000, Manjunathappa, Prakash wrote: > > > > On Wed, Oct 31, 2012 at 14:58:05, Steffen Trumtrar wrote: > > > > > +#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. > > > > > > The next version is almost finished. Only thing I'm missing is this. > > > And I actually do not know which flag would represent an inverted > > > pixelclock in fb_videomode. Does anybody have any idea what I have to > > > do here?> > > > > if (vm->pixelclk_pol) > > > > > > fbmode->sync = ??? > > > > > > That's as far as I have come and I don't see a flag that seems right. > > > Is this even a valid property of fb_videomode? > > > > Thanks for considering it, I see IMX addresses it as proprietary FB_SYNC_ > > flag. FB_SYNC_CLK_INVERT: arch/arm/plat-mxc/include/mach/mx3fb.h > > No problem. So, it seems this flag has to be set in some imx-specific > videomode_to_fb_videomode function. It is included in the > struct videomode, so that should be no problem. But it will not be > part of this series. A possible solution would be to standardize the FB_SYNC_CLK_INVERT flag in fbdev, but that's in my opinion out of scope of this patch series. iMX3 developers, feel free to send patches :-)
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; + + 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,
Add a function to convert from the generic videomode to a fb_videomode. Signed-off-by: Steffen Trumtrar <s.trumtrar@pengutronix.de> --- drivers/video/fbmon.c | 36 ++++++++++++++++++++++++++++++++++++ include/linux/fb.h | 2 ++ 2 files changed, 38 insertions(+)