[PATCH v2] s3c-fb: Automatically calculate pixel clock when none is given

Subsystems: framebuffer layer, the rest

STALE5938d

5 messages, 3 authors, 2010-07-15 · open the first message on its own page

[PATCH v2] s3c-fb: Automatically calculate pixel clock when none is given

From: Maurus Cuelenaere <hidden>
Date: 2010-07-13 00:05:51

This patch adds a simple algorithm which calculates the pixel clock based on the
video mode parameters. This is only done when no pixel clock is supplied through
the platform data.

Signed-off-by: Maurus Cuelenaere <redacted>
---

Changes since v1:
Re-posted this to the correct fbdev mailing list.

---
 drivers/video/s3c-fb.c |   25 +++++++++++++++++++++++++
 1 files changed, 25 insertions(+), 0 deletions(-)
diff --git a/drivers/video/s3c-fb.c b/drivers/video/s3c-fb.c
index 9682ecc..e4715eb 100644
--- a/drivers/video/s3c-fb.c
+++ b/drivers/video/s3c-fb.c
@@ -654,6 +654,28 @@ static struct fb_ops s3c_fb_ops = {
 };
 
 /**
+ * s3c_fb_missing_pixclock() - calculates pixel clock
+ * @mode: The video mode to change.
+ *
+ * Calculate the pixel clock when none has been given through platform data.
+ */
+static void __devinit s3c_fb_missing_pixclock(struct fb_videomode *mode)
+{
+	u64 pixclk = 1000000000000ULL;
+	u32 div;
+
+	div  = mode->left_margin + mode->hsync_len + mode->right_margin +
+	       mode->xres;
+	div *= mode->upper_margin + mode->vsync_len + mode->lower_margin +
+	       mode->yres;
+	div *= mode->refresh ? : 60;
+
+	do_div(pixclk, div);
+
+	mode->pixclock = pixclk;
+}
+
+/**
  * s3c_fb_alloc_memory() - allocate display memory for framebuffer window
  * @sfb: The base resources for the hardware.
  * @win: The window to initialise memory for.
@@ -925,6 +947,9 @@ static int __devinit s3c_fb_probe(struct platform_device *pdev)
 		if (!pd->win[win])
 			continue;
 
+		if (!pd->win[win]->win_mode.pixclock)
+			s3c_fb_missing_pixclock(&pd->win[win]->win_mode);
+
 		ret = s3c_fb_probe_win(sfb, win, &sfb->windows[win]);
 		if (ret < 0) {
 			dev_err(dev, "failed to create window %d\n", win);
-- 
1.7.0.4

Re: [PATCH v2] s3c-fb: Automatically calculate pixel clock when none is given

From: yiffie9819 <hidden>
Date: 2010-07-13 03:14:51

 I tested this patch by using s5pv210.
It is verified by linux-2.6.32.
The result of test is the same pixel clock as before applying patch.

Tested-by: Donghwa Lee <redacted>


2010/7/13 Maurus Cuelenaere [off-list ref]
quoted hunk
This patch adds a simple algorithm which calculates the pixel clock based on the
video mode parameters. This is only done when no pixel clock is supplied through
the platform data.

Signed-off-by: Maurus Cuelenaere <redacted>
---

Changes since v1:
Re-posted this to the correct fbdev mailing list.

---
 drivers/video/s3c-fb.c |   25 +++++++++++++++++++++++++
 1 files changed, 25 insertions(+), 0 deletions(-)
diff --git a/drivers/video/s3c-fb.c b/drivers/video/s3c-fb.c
index 9682ecc..e4715eb 100644
--- a/drivers/video/s3c-fb.c
+++ b/drivers/video/s3c-fb.c
@@ -654,6 +654,28 @@ static struct fb_ops s3c_fb_ops = {
 };
 
 /**
+ * s3c_fb_missing_pixclock() - calculates pixel clock
+ * @mode: The video mode to change.
+ *
+ * Calculate the pixel clock when none has been given through platform data.
+ */
+static void __devinit s3c_fb_missing_pixclock(struct fb_videomode *mode)
+{
+	u64 pixclk = 1000000000000ULL;
+	u32 div;
+
+	div  = mode->left_margin + mode->hsync_len + mode->right_margin +
+	       mode->xres;
+	div *= mode->upper_margin + mode->vsync_len + mode->lower_margin +
+	       mode->yres;
+	div *= mode->refresh ? : 60;
+
+	do_div(pixclk, div);
+
+	mode->pixclock = pixclk;
+}
+
+/**
  * s3c_fb_alloc_memory() - allocate display memory for framebuffer window
  * @sfb: The base resources for the hardware.
  * @win: The window to initialise memory for.
@@ -925,6 +947,9 @@ static int __devinit s3c_fb_probe(struct platform_device *pdev)
 		if (!pd->win[win])
 			continue;
 
+		if (!pd->win[win]->win_mode.pixclock)
+			s3c_fb_missing_pixclock(&pd->win[win]->win_mode);
+
 		ret = s3c_fb_probe_win(sfb, win, &sfb->windows[win]);
 		if (ret < 0) {
 			dev_err(dev, "failed to create window %d\n", win);

Re: [PATCH v2] s3c-fb: Automatically calculate pixel clock when none is given

From: Andrew Morton <akpm@linux-foundation.org>
Date: 2010-07-15 18:53:39

On Tue, 13 Jul 2010 02:05:45 +0200
Maurus Cuelenaere [off-list ref] wrote:
This patch adds a simple algorithm which calculates the pixel clock based on the
video mode parameters. This is only done when no pixel clock is supplied through
the platform data.
So..  we are to assume that there's a platform which doesn't provide
the pixel clock data?  Adding some information about that in the
changelog would have been useful.

Re: [PATCH v2] s3c-fb: Automatically calculate pixel clock when none is given

From: Maurus Cuelenaere <hidden>
Date: 2010-07-15 19:23:19

 Op 15-07-10 20:52, Andrew Morton schreef:
On Tue, 13 Jul 2010 02:05:45 +0200
Maurus Cuelenaere [off-list ref] wrote:
quoted
This patch adds a simple algorithm which calculates the pixel clock based on the
video mode parameters. This is only done when no pixel clock is supplied through
the platform data.
So..  we are to assume that there's a platform which doesn't provide
the pixel clock data?  Adding some information about that in the
changelog would have been useful.
Not exactly, this allows you to omit the pixel clock data and thus sharing the
"algo" used for calculating it; which is done in another patch (not submitted to
linux-fbdev, see [1]).

[1] - http://www.spinics.net/lists/linux-samsung-soc/msg02086.html

-- 
Maurus Cuelenaere

Re: [PATCH v2] s3c-fb: Automatically calculate pixel clock when none is given

From: Andrew Morton <akpm@linux-foundation.org>
Date: 2010-07-15 19:37:14

On Thu, 15 Jul 2010 21:23:15 +0200
Maurus Cuelenaere [off-list ref] wrote:
 Op 15-07-10 20:52, Andrew Morton schreef:
quoted
On Tue, 13 Jul 2010 02:05:45 +0200
Maurus Cuelenaere [off-list ref] wrote:
quoted
This patch adds a simple algorithm which calculates the pixel clock based on the
video mode parameters. This is only done when no pixel clock is supplied through
the platform data.
So..  we are to assume that there's a platform which doesn't provide
the pixel clock data?  Adding some information about that in the
changelog would have been useful.
Not exactly, this allows you to omit the pixel clock data and thus sharing the
"algo" used for calculating it; which is done in another patch (not submitted to
linux-fbdev, see [1]).

[1] - http://www.spinics.net/lists/linux-samsung-soc/msg02086.html
That means that there's no reason to merge this patch!

So I merged "arm: samsung: remove pixclock from several boards" as well ;)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help