<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.linux.fbdev.devel">
    <title>gmane.linux.fbdev.devel</title>
    <link>http://blog.gmane.org/gmane.linux.fbdev.devel</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.fbdev.devel/14779"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.fbdev.devel/14778"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.fbdev.devel/14777"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.fbdev.devel/14770"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.fbdev.devel/14741"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.fbdev.devel/14736"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.fbdev.devel/14725"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.fbdev.devel/14722"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.fbdev.devel/14721"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.fbdev.devel/14709"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.fbdev.devel/14657"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.fbdev.devel/14656"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.fbdev.devel/14552"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.fbdev.devel/14551"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.fbdev.devel/14545"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.fbdev.devel/14544"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.fbdev.devel/14542"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.fbdev.devel/14541"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.fbdev.devel/14540"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.fbdev.devel/14537"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://comments.gmane.org/gmane.linux.fbdev.devel/14779">
    <title>[PATCH 4/4] fbcon: Replace vc_cursor_type mask0x10 with CUR_USE_SW</title>
    <link>http://comments.gmane.org/gmane.linux.fbdev.devel/14779</link>
    <description>&lt;pre&gt;from: Henry Nestler &amp;lt;henry.nestler&amp;lt; at &amp;gt;gmail.com&amp;gt;

Replace hard coded vc_cursor_type mask 0x10 with macro CUR_USE_SW.

Signed-off-by: Henry Nestler &amp;lt;henry.nestler&amp;lt; at &amp;gt;gmail.com&amp;gt;
---

This patch depends on [patch 3/4], because it used new macro CUR_USE_SW 0x10.

Kernel version 2.6.32-rc8

 drivers/video/console/tileblit.c        |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/video/console/tileblit.c b/drivers/video/console/tileblit.c
--- a/drivers/video/console/tileblit.c
+++ b/drivers/video/console/tileblit.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -83,7 +83,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void tile_cursor(struct vc_data *vc, struct
fb_info *info, int mode,
 int softback_lines, int fg, int bg)
 {
 struct fb_tilecursor cursor;
-int use_sw = (vc-&amp;gt;vc_cursor_type &amp;amp; 0x10);
+int use_sw = (vc-&amp;gt;vc_cursor_type &amp;amp; CUR_USE_SW);

 cursor.sx = vc-&amp;gt;vc_x;
 cursor.sy = vc-&amp;gt;vc_y;
===

------------------------------------------------------------------------------
Join us December 9, 2009 for the Red Hat Virtual Experience,
a free event focused on virtualization and cloud computing. 
Attend in-depth sessions from your desk. Your couch. Anywhere.
http://p.sf.net/sfu/redhat-sfdev2dev
&lt;/pre&gt;</description>
    <dc:creator>Henry Nestler</dc:creator>
    <dc:date>2009-12-02T02:59:43</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.fbdev.devel/14778">
    <title>[PATCH 3/4] fbcon: Bugfix soft cursor detectionin Tile Blitting</title>
    <link>http://comments.gmane.org/gmane.linux.fbdev.devel/14778</link>
    <description>&lt;pre&gt;from: Henry Nestler &amp;lt;henry.nestler&amp;lt; at &amp;gt;gmail.com&amp;gt;

Use mask 0x10 for "soft cursor" detection on in function tile_cursor.
(Tile Blitting Operation in framebuffer console).

The old mask 0x01 for vc_cursor_type detects CUR_NONE, CUR_LOWER_THIRD
and every second mode value as "software cursor". This hides the cursor
for these modes (cursor.mode = 0). But, only CUR_NONE or "software cursor"
should hide the cursor.

Signed-off-by: Henry Nestler &amp;lt;henry.nestler&amp;lt; at &amp;gt;gmail.com&amp;gt;
---
Kernel version 2.6.32-rc8

 drivers/video/console/tileblit.c        |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/video/console/tileblit.c b/drivers/video/console/tileblit.c
index 0056a41..15e8e1a 100644
--- a/drivers/video/console/tileblit.c
+++ b/drivers/video/console/tileblit.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -83,7 +83,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void tile_cursor(struct vc_data *vc, struct
fb_info *info, int mode,
 int softback_lines, int fg, int bg)
 {
 struct fb_tilecursor cursor;
-int use_sw = (vc-&amp;gt;vc_cursor_type &amp;amp; 0x01);
+int use_sw = (vc-&amp;gt;vc_cursor_type &amp;amp; 0x10);

 cursor.sx = vc-&amp;gt;vc_x;
 cursor.sy = vc-&amp;gt;vc_y;
===

------------------------------------------------------------------------------
Join us December 9, 2009 for the Red Hat Virtual Experience,
a free event focused on virtualization and cloud computing. 
Attend in-depth sessions from your desk. Your couch. Anywhere.
http://p.sf.net/sfu/redhat-sfdev2dev
&lt;/pre&gt;</description>
    <dc:creator>Henry Nestler</dc:creator>
    <dc:date>2009-12-02T02:52:56</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.fbdev.devel/14777">
    <title>[PATCH 2/4] fbcon: Macro CUR_USE_SW forvc_cursor_type mask 0x10</title>
    <link>http://comments.gmane.org/gmane.linux.fbdev.devel/14777</link>
    <description>&lt;pre&gt;from: Henry Nestler &amp;lt;henry.nestler&amp;lt; at &amp;gt;gmail.com&amp;gt;

Replace hard coded 0x10 mask for vc_cursor_type with new macro CUR_USE_SW.

Signed-off-by: Henry Nestler &amp;lt;henry.nestler&amp;lt; at &amp;gt;gmail.com&amp;gt;
---
Kernel version 2.6.32-rc8

 drivers/char/vt.c                       |    2 +-
 drivers/video/console/bitblit.c         |    2 +-
 drivers/video/console/fbcon.c           |    2 +-
 drivers/video/console/fbcon_ccw.c       |    2 +-
 drivers/video/console/fbcon_cw.c        |    2 +-
 drivers/video/console/fbcon_ud.c        |    2 +-
 include/linux/console_struct.h          |    1 +
 7 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/char/vt.c b/drivers/char/vt.c
index 0c80c68..f8b0f58 100644
--- a/drivers/char/vt.c
+++ b/drivers/char/vt.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -566,7 +566,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void add_softcursor(struct vc_data *vc)
 int i = scr_readw((u16 *) vc-&amp;gt;vc_pos);
 u32 type = vc-&amp;gt;vc_cursor_type;

-if (! (type &amp;amp; 0x10)) return;
+if (! (type &amp;amp; CUR_USE_SW)) return;
 if (softcursor_original != -1) return;
 softcursor_original = i;
 i |= ((type &amp;gt;&amp;gt; 8) &amp;amp; 0xff00 );
diff --git a/drivers/usb/misc/sisusbvga/sisusb_con.c
b/drivers/usb/misc/sisusbvga/sisusb_con.c
diff --git a/drivers/video/console/bitblit.c b/drivers/video/console/bitblit.c
index 6b7c8fb..5858863 100644
--- a/drivers/video/console/bitblit.c
+++ b/drivers/video/console/bitblit.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -241,7 +241,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void bit_cursor(struct vc_data *vc, struct
fb_info *info, int mode,
 unsigned short charmask = vc-&amp;gt;vc_hi_font_mask ? 0x1ff : 0xff;
 int w = DIV_ROUND_UP(vc-&amp;gt;vc_font.width, 8), c;
 int y = real_y(ops-&amp;gt;p, vc-&amp;gt;vc_y);
-int attribute, use_sw = (vc-&amp;gt;vc_cursor_type &amp;amp; 0x10);
+int attribute, use_sw = (vc-&amp;gt;vc_cursor_type &amp;amp; CUR_USE_SW);
 int err = 1;
 char *src;

diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c
index 3681c6a..d1074ec 100644
--- a/drivers/video/console/fbcon.c
+++ b/drivers/video/console/fbcon.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1291,7 +1291,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void fbcon_cursor(struct vc_data *vc, int mode)
 if (fbcon_is_inactive(vc, info) || vc-&amp;gt;vc_deccm != 1)
 return;

-if (vc-&amp;gt;vc_cursor_type &amp;amp; 0x10)
+if (vc-&amp;gt;vc_cursor_type &amp;amp; CUR_USE_SW)
 fbcon_del_cursor_timer(info);
 else
 fbcon_add_cursor_timer(info);
diff --git a/drivers/video/console/fbcon_ccw.c
b/drivers/video/console/fbcon_ccw.c
index bdf913e..c6fd4a9 100644
--- a/drivers/video/console/fbcon_ccw.c
+++ b/drivers/video/console/fbcon_ccw.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -226,7 +226,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void ccw_cursor(struct vc_data *vc, struct
fb_info *info, int mode,
 unsigned short charmask = vc-&amp;gt;vc_hi_font_mask ? 0x1ff : 0xff;
 int w = (vc-&amp;gt;vc_font.height + 7) &amp;gt;&amp;gt; 3, c;
 int y = real_y(ops-&amp;gt;p, vc-&amp;gt;vc_y);
-int attribute, use_sw = (vc-&amp;gt;vc_cursor_type &amp;amp; 0x10);
+int attribute, use_sw = (vc-&amp;gt;vc_cursor_type &amp;amp; CUR_USE_SW);
 int err = 1, dx, dy;
 char *src;
 u32 vyres = GETVYRES(ops-&amp;gt;p-&amp;gt;scrollmode, info);
diff --git a/drivers/video/console/fbcon_cw.c b/drivers/video/console/fbcon_cw.c
index a6819b9..00ac747 100644
--- a/drivers/video/console/fbcon_cw.c
+++ b/drivers/video/console/fbcon_cw.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -210,7 +210,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void cw_cursor(struct vc_data *vc, struct
fb_info *info, int mode,
 unsigned short charmask = vc-&amp;gt;vc_hi_font_mask ? 0x1ff : 0xff;
 int w = (vc-&amp;gt;vc_font.height + 7) &amp;gt;&amp;gt; 3, c;
 int y = real_y(ops-&amp;gt;p, vc-&amp;gt;vc_y);
-int attribute, use_sw = (vc-&amp;gt;vc_cursor_type &amp;amp; 0x10);
+int attribute, use_sw = (vc-&amp;gt;vc_cursor_type &amp;amp; CUR_USE_SW);
 int err = 1, dx, dy;
 char *src;
 u32 vxres = GETVXRES(ops-&amp;gt;p-&amp;gt;scrollmode, info);
diff --git a/drivers/video/console/fbcon_ud.c b/drivers/video/console/fbcon_ud.c
index d9b5d6e..ee740e1 100644
--- a/drivers/video/console/fbcon_ud.c
+++ b/drivers/video/console/fbcon_ud.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -256,7 +256,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void ud_cursor(struct vc_data *vc, struct
fb_info *info, int mode,
 unsigned short charmask = vc-&amp;gt;vc_hi_font_mask ? 0x1ff : 0xff;
 int w = (vc-&amp;gt;vc_font.width + 7) &amp;gt;&amp;gt; 3, c;
 int y = real_y(ops-&amp;gt;p, vc-&amp;gt;vc_y);
-int attribute, use_sw = (vc-&amp;gt;vc_cursor_type &amp;amp; 0x10);
+int attribute, use_sw = (vc-&amp;gt;vc_cursor_type &amp;amp; CUR_USE_SW);
 int err = 1, dx, dy;
 char *src;
 u32 vyres = GETVYRES(ops-&amp;gt;p-&amp;gt;scrollmode, info);
diff --git a/include/linux/console_struct.h b/include/linux/console_struct.h
index 38fe59d..c12b3b1 100644
--- a/include/linux/console_struct.h
+++ b/include/linux/console_struct.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -129,6 +129,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; extern void vc_SAK(struct work_struct *work);
 #define CUR_BLOCK6
 #define CUR_HWMASK0x0f
 #define CUR_SWMASK0xfff0
+#define CUR_USE_SW0x10

 #define CUR_DEFAULT CUR_UNDERLINE

===

------------------------------------------------------------------------------
Join us December 9, 2009 for the Red Hat Virtual Experience,
a free event focused on virtualization and cloud computing. 
Attend in-depth sessions from your desk. Your couch. Anywhere.
http://p.sf.net/sfu/redhat-sfdev2dev
&lt;/pre&gt;</description>
    <dc:creator>Henry Nestler</dc:creator>
    <dc:date>2009-12-02T02:50:09</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.fbdev.devel/14770">
    <title>[patch] fix oops with no /proc</title>
    <link>http://comments.gmane.org/gmane.linux.fbdev.devel/14770</link>
    <description>&lt;pre&gt;Fixed a typo:  missing *.  This would lead to a kernel oops if the kernel
was compiled without support for the /proc file system.

Found with a static checker.  Compile tested.

regards,
dan carpenter

Signed-off-by: Dan Carpenter &amp;lt;error27&amp;lt; at &amp;gt;gmail.com&amp;gt;

--- orig/drivers/video/via/viafbdev.c2009-11-21 14:44:33.000000000 +0200
+++ devel/drivers/video/via/viafbdev.c2009-11-21 14:44:43.000000000 +0200
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1797,7 +1797,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static const struct file_operations viaf
 static void viafb_init_proc(struct proc_dir_entry **viafb_entry)
 {
 *viafb_entry = proc_mkdir("viafb", NULL);
-if (viafb_entry) {
+if (*viafb_entry) {
 proc_create("dvp0", 0, *viafb_entry, &amp;amp;viafb_dvp0_proc_fops);
 proc_create("dvp1", 0, *viafb_entry, &amp;amp;viafb_dvp1_proc_fops);
 proc_create("dfph", 0, *viafb_entry, &amp;amp;viafb_dfph_proc_fops);

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
&lt;/pre&gt;</description>
    <dc:creator>Dan Carpenter</dc:creator>
    <dc:date>2009-11-22T14:21:11</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.fbdev.devel/14741">
    <title>drm_fb_helper: Impossible to change video mode</title>
    <link>http://comments.gmane.org/gmane.linux.fbdev.devel/14741</link>
    <description>&lt;pre&gt;Hi,

On drivers using drm_fb_helper's in fb_ops it is not possible to change
video mode, because of different var-&amp;gt;pixclock evaluation:

int drm_fb_helper_check_var(struct fb_var_screeninfo *var,
    struct fb_info *info)
{
[...]
if (var-&amp;gt;pixclock == -1 || !var-&amp;gt;pixclock)
return -EINVAL;
[...]

int drm_fb_helper_set_par(struct fb_info *info)
{
[...]
if (var-&amp;gt;pixclock != -1) {
DRM_ERROR("PIXEL CLCOK SET\n");
return -EINVAL;
}
[...]

One of these evaluations will fail regardless of pixclock value.

P.S. check CLCOK spelling :)

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
&lt;/pre&gt;</description>
    <dc:creator>Paulius Zaleckas</dc:creator>
    <dc:date>2009-11-20T13:16:28</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.fbdev.devel/14736">
    <title>i810fb: fix wrong pixclock for discrete modeselection</title>
    <link>http://comments.gmane.org/gmane.linux.fbdev.devel/14736</link>
    <description>&lt;pre&gt;From: Krzysztof Helt &amp;lt;krzysztof.h1&amp;lt; at &amp;gt;wp.pl&amp;gt;

If the i810fb driver is configured for use only predefined discrete video modes
the wrong pixclock value is used. The par-&amp;gt;regs.pixclock value is a value from
the previous mode when a video mode is switched. It results in unreadable screen
if the old video mode has higher resolution and the new mode with the old (high)
pixclock is outside attached monitor's specs.

Signed-off-by: Krzysztof Helt &amp;lt;krzysztof.h1&amp;lt; at &amp;gt;wp.pl&amp;gt;
---
I have noticed this testing the patch named "i810fb: Fix stack exploding".

This patch requires my patch send to Alan Cox and Andrew Morton 
named "i810fb: Fix stack exploding".

--- drivers/video/i810/i810_dvt.c~2009-11-17 19:38:11.002864450 +0100
+++ drivers/video/i810/i810_dvt.c2009-11-19 18:48:52.518846238 +0100
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -233,7 +233,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int i810fb_find_best_mode(u32 xre
 void i810fb_encode_registers(const struct fb_var_screeninfo *var,
      struct i810fb_par *par, u32 xres, u32 yres)
 {
-u32 i_best = i810fb_find_best_mode(xres, yres, par-&amp;gt;regs.pixclock);
+u32 i_best = i810fb_find_best_mode(xres, yres, var-&amp;gt;pixclock);
 
 par-&amp;gt;regs = std_modes[i_best];
 

----------------------------------------------------------------------
Najlepsze oferty Sylwestrowe!
Sprawdz &amp;gt;&amp;gt;&amp;gt; http://link.interia.pl/f2426


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
&lt;/pre&gt;</description>
    <dc:creator>Krzysztof Helt</dc:creator>
    <dc:date>2009-11-19T17:58:01</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.fbdev.devel/14725">
    <title>[PATCH 4/8] pxa: delete redundant vsync/hsyncrevert flag</title>
    <link>http://comments.gmane.org/gmane.linux.fbdev.devel/14725</link>
    <description>&lt;pre&gt;From: Jun Nie &amp;lt;njun&amp;lt; at &amp;gt;marvell.com&amp;gt;
Date: Tue, 10 Nov 2009 15:11:36 +0800
Subject: [PATCH] pxa: delete redundant vsync/hsync revert flag
var.sync can cover its function

Signed-off-by: Jun Nie &amp;lt;njun&amp;lt; at &amp;gt;marvell.com&amp;gt;
---
 include/video/pxa168fb.h |    2 --
 1 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/include/video/pxa168fb.h b/include/video/pxa168fb.h
index 01c18bc..53919fe 100644
--- a/include/video/pxa168fb.h
+++ b/include/video/pxa168fb.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -143,8 +143,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; struct pxa168fb_mach_info {
 unsignedinvert_composite_blank:1;
 unsignedinvert_pix_val_ena:1;
 unsignedinvert_pixclock:1;
-unsignedinvert_vsync:1;
-unsignedinvert_hsync:1;
 unsignedpanel_rbswap:1;
 unsignedactive:1;
 unsignedenable_lcd:1;
&lt;/pre&gt;</description>
    <dc:creator>Jun Nie</dc:creator>
    <dc:date>2009-11-16T09:34:39</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.fbdev.devel/14722">
    <title>[PATCH 3/8] pxa: fix offset setting atinitialization</title>
    <link>http://comments.gmane.org/gmane.linux.fbdev.devel/14722</link>
    <description>&lt;pre&gt;From: Jun Nie &amp;lt;njun&amp;lt; at &amp;gt;marvell.com&amp;gt;
Date: Tue, 10 Nov 2009 09:33:49 +0800
Subject: [PATCH] pxa: fix offset setting at initialization

Signed-off-by: Jun Nie &amp;lt;njun&amp;lt; at &amp;gt;marvell.com&amp;gt;
---
 drivers/video/pxa168fb.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/drivers/video/pxa168fb.c b/drivers/video/pxa168fb.c
index e728be3..6283c16 100644
--- a/drivers/video/pxa168fb.c
+++ b/drivers/video/pxa168fb.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -765,6 +765,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int __init pxa168fb_probe(struct
platform_device *pdev)
 }

 info-&amp;gt;fix.smem_start = (unsigned long)fbi-&amp;gt;fb_start_dma;
+set_graphics_start(info, 0, 0);

 /*
  * Set video mode according to platform data.
&lt;/pre&gt;</description>
    <dc:creator>Jun Nie</dc:creator>
    <dc:date>2009-11-16T09:34:32</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.fbdev.devel/14721">
    <title>[PATCH 2/8] pxa: support PXA168 LCD platformdependent power on</title>
    <link>http://comments.gmane.org/gmane.linux.fbdev.devel/14721</link>
    <description>&lt;pre&gt;From: Jun Nie &amp;lt;njun&amp;lt; at &amp;gt;marvell.com&amp;gt;
Date: Mon, 16 Nov 2009 17:16:35 +0800
Subject: [PATCH] pxa: support PXA168 LCD platform dependent power on

Signed-off-by: Jun Nie &amp;lt;njun&amp;lt; at &amp;gt;marvell.com&amp;gt;
---
 drivers/video/pxa168fb.c |   17 +++++++++++++++++
 1 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/drivers/video/pxa168fb.c b/drivers/video/pxa168fb.c
index aec95c4..e728be3 100644
--- a/drivers/video/pxa168fb.c
+++ b/drivers/video/pxa168fb.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -845,6 +845,23 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int __init pxa168fb_probe(struct
platform_device *pdev)
 }

 platform_set_drvdata(pdev, fbi);
+if (mi-&amp;gt;pxa168fb_lcd_power) {
+if (gpio_is_valid(mi-&amp;gt;spi_gpio_cs)) {
+ret = gpio_request(mi-&amp;gt;spi_gpio_cs, "LCD_SPI_CS");
+if (ret) {
+dev_err(&amp;amp;pdev-&amp;gt;dev,
+"failed to request GPIO for LCD CS\n");
+return -EIO;
+}
+}
+ret = mi-&amp;gt;pxa168fb_lcd_power(fbi, mi-&amp;gt;spi_gpio_cs,
+mi-&amp;gt;spi_gpio_reset, 1);
+if (ret) {
+dev_err(&amp;amp;pdev-&amp;gt;dev, "Failed to power up pxa168-fb\n");
+goto failed_free_irq;
+}
+}
+dev_info(fbi-&amp;gt;dev, "frame buffer detected\n");
 return 0;

 failed_free_irq:
&lt;/pre&gt;</description>
    <dc:creator>Jun Nie</dc:creator>
    <dc:date>2009-11-16T09:34:27</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.fbdev.devel/14709">
    <title>framebuffer general questions</title>
    <link>http://comments.gmane.org/gmane.linux.fbdev.devel/14709</link>
    <description>&lt;pre&gt;Hi

i am trying to customize framebuffer drivers and i have some questions...

Please can you give me an advice? 

1) If I define my own imageblit function, how do I call it? Or is it called automatically?

2) I have gpu connected via pci to cpu. I did mmap and have framebuffer mapped in for example "uchar * data". I have loop and iterating through some pixel data and do data[i] = pixel[i]. Does this lead to transmitting via PCI in style - transmit byte ... end ... transmit byte ... end ... etc?

3)what is the difference bethween mmap framebuffer and write to mapped pointer and calling write() to descriptor previously obtained by open()?

these are the main questions in my mind. Thank you for your time i would be glad for any informations.

Rene

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
&lt;/pre&gt;</description>
    <dc:creator>René Kolařík</dc:creator>
    <dc:date>2009-11-13T14:11:48</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.fbdev.devel/14657">
    <title>[PATCH] mx3fb: adds LCD backlight driver</title>
    <link>http://comments.gmane.org/gmane.linux.fbdev.devel/14657</link>
    <description>&lt;pre&gt;To activate this driver select CONFIG_BACKLIGHT_LCD_SUPPORT
in the kernel configuration. Backlight control interface
will be available under /sys/class/backlight/mx3fb/.

Signed-off-by: Anatolij Gustschin &amp;lt;agust&amp;lt; at &amp;gt;denx.de&amp;gt;
---
 drivers/video/mx3fb.c |  100 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 99 insertions(+), 1 deletions(-)

diff --git a/drivers/video/mx3fb.c b/drivers/video/mx3fb.c
index 86312dd..f8f9338 100644
--- a/drivers/video/mx3fb.c
+++ b/drivers/video/mx3fb.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -30,6 +30,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include &amp;lt;mach/hardware.h&amp;gt;
 #include &amp;lt;mach/ipu.h&amp;gt;
 #include &amp;lt;mach/mx3fb.h&amp;gt;
+#include &amp;lt;linux/backlight.h&amp;gt;
 
 #include &amp;lt;asm/io.h&amp;gt;
 #include &amp;lt;asm/uaccess.h&amp;gt;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -60,6 +61,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #define SDC_COM_BG_EN0x00000200UL
 #define SDC_COM_SHARP0x00001000UL
 
+#define SDC_PWM_SRC_HSYNC_CLK0x00000000UL
+#define SDC_PWM_SRC_PXL_CLK0x02000000UL
+#define SDC_PWM_SRC_HSP_CLK0x04000000UL
+#define SDC_PWM_CC_EN0x01000000UL
+#define SDC_PWM_PWM_MSK0x00FF0000UL
+
 #define SDC_V_SYNC_WIDTH_L0x00000001UL
 
 /* Display Interface registers */
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -238,6 +245,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static const struct fb_videomode mx3fb_modedb[] = {
 struct mx3fb_data {
 struct fb_info*fbi;
 intbacklight_level;
+intpwm_clk_src;/* clock source for PWM */
 void __iomem*reg_base;
 spinlock_tlock;
 struct device*dev;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -268,6 +276,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; struct mx3fb_info {
 struct scatterlistsg[2];
 
 u32sync;/* preserve var-&amp;gt;sync flags */
+struct backlight_device*backlight;
 };
 
 static void mx3fb_dma_done(void *);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -647,7 +656,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int sdc_set_global_alpha(struct mx3fb_data *mx3fb, bool enable, uint8_t a
 static void sdc_set_brightness(struct mx3fb_data *mx3fb, uint8_t value)
 {
 /* This might be board-specific */
-mx3fb_write_reg(mx3fb, 0x03000000UL | value &amp;lt;&amp;lt; 16, SDC_PWM_CTRL);
+u32 reg = mx3fb-&amp;gt;pwm_clk_src | SDC_PWM_CC_EN | value &amp;lt;&amp;lt; 16;
+
+mx3fb_write_reg(mx3fb, reg, SDC_PWM_CTRL);
 return;
 }
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1207,6 +1218,88 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int mx3fb_resume(struct platform_device *pdev)
 #define mx3fb_resume    NULL
 #endif
 
+#ifdef CONFIG_BACKLIGHT_LCD_SUPPORT
+/*
+ * Backlight device
+ */
+static int mx3fb_bl_update_status(struct backlight_device *bl)
+{
+struct mx3fb_info *fbi = bl_get_data(bl);
+struct mx3fb_data *mx3fb = fbi-&amp;gt;mx3fb;
+int brightness;
+
+if (bl-&amp;gt;props.power != FB_BLANK_UNBLANK ||
+    bl-&amp;gt;props.fb_blank != FB_BLANK_UNBLANK)
+brightness = 0;
+else
+brightness = bl-&amp;gt;props.brightness;
+
+mx3fb-&amp;gt;backlight_level = brightness;
+sdc_set_brightness(mx3fb, mx3fb-&amp;gt;backlight_level);
+return 0;
+}
+
+static int mx3fb_bl_get_brightness(struct backlight_device *bl)
+{
+struct mx3fb_info *fbi = bl_get_data(bl);
+struct mx3fb_data *mx3fb = fbi-&amp;gt;mx3fb;
+uint32_t reg;
+
+reg = mx3fb_read_reg(mx3fb, SDC_PWM_CTRL);
+
+return (reg &amp;amp; SDC_PWM_PWM_MSK) &amp;gt;&amp;gt; 16;
+}
+
+static struct backlight_ops mx3fb_bl_ops = {
+.update_status = mx3fb_bl_update_status,
+.get_brightness = mx3fb_bl_get_brightness,
+};
+
+static void mx3fb_init_backlight(struct mx3fb_info *fbi)
+{
+struct backlight_device*bl;
+struct mx3fb_data *mx3fb = fbi-&amp;gt;mx3fb;
+
+/*
+ * COM57H5M10XRC supports max. 300Hz for PDM, so
+ * we use HSYNC as clock source.
+ */
+if (fb_mode &amp;amp;&amp;amp; !strncmp(fb_mode, "COM57H5M10XRC", 13))
+mx3fb-&amp;gt;pwm_clk_src = SDC_PWM_SRC_HSYNC_CLK;
+
+if (fbi-&amp;gt;backlight)
+return;
+
+bl = backlight_device_register("mx3fb", mx3fb-&amp;gt;dev,
+       fbi, &amp;amp;mx3fb_bl_ops);
+if (IS_ERR(bl)) {
+dev_err(mx3fb-&amp;gt;dev, "register backlight failed: %ld\n",
+PTR_ERR(bl));
+return;
+}
+fbi-&amp;gt;backlight = bl;
+
+bl-&amp;gt;props.power = FB_BLANK_UNBLANK;
+bl-&amp;gt;props.fb_blank = FB_BLANK_UNBLANK;
+bl-&amp;gt;props.max_brightness = 0xff;
+bl-&amp;gt;props.brightness = 0xff;
+}
+
+static void mx3fb_exit_backlight(struct mx3fb_info *fbi)
+{
+if (fbi-&amp;gt;backlight)
+backlight_device_unregister(fbi-&amp;gt;backlight);
+}
+#else
+static inline void mx3fb_init_backlight(struct mx3fb_info *fbi)
+{
+}
+
+static inline void mx3fb_exit_backlight(struct mx3fb_info *fbi)
+{
+}
+#endif
+
 /*
  * Main framebuffer functions
  */
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1390,6 +1483,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int init_fb_chan(struct mx3fb_data *mx3fb, struct idmac_channel *ichan)
 if (ret &amp;lt; 0)
 goto esetpar;
 
+mx3fb_init_backlight(mx3fbi);
+
 __blank(FB_BLANK_UNBLANK, fbi);
 
 dev_info(dev, "registered, using mode %s\n", fb_mode);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1401,6 +1496,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int init_fb_chan(struct mx3fb_data *mx3fb, struct idmac_channel *ichan)
 return 0;
 
 erfb:
+mx3fb_exit_backlight(mx3fbi);
 esetpar:
 emode:
 fb_dealloc_cmap(&amp;amp;fbi-&amp;gt;cmap);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1487,6 +1583,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int mx3fb_probe(struct platform_device *pdev)
 }
 
 mx3fb-&amp;gt;backlight_level = 255;
+mx3fb-&amp;gt;pwm_clk_src = SDC_PWM_SRC_PXL_CLK;
 
 ret = init_fb_chan(mx3fb, to_idmac_chan(chan));
 if (ret &amp;lt; 0)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1513,6 +1610,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int mx3fb_remove(struct platform_device *dev)
 struct dma_chan *chan;
 
 chan = &amp;amp;mx3_fbi-&amp;gt;idmac_channel-&amp;gt;dma_chan;
+mx3fb_exit_backlight(mx3_fbi);
 release_fbi(fbi);
 
 dma_release_channel(chan);
&lt;/pre&gt;</description>
    <dc:creator>Anatolij Gustschin</dc:creator>
    <dc:date>2009-11-09T11:13:16</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.fbdev.devel/14656">
    <title>[PATCH] mx3fb: Fix display brightnessinitialization</title>
    <link>http://comments.gmane.org/gmane.linux.fbdev.devel/14656</link>
    <description>&lt;pre&gt;__blank() uses mx3fb-&amp;gt;backlight_level to set the
display brightness. __blank() is also called from
init_fb_chan() before mx3fb-&amp;gt;backlight_level was
initialized. This causes setting the display brightness
to zero at probe time.

This patch moves the initialization of mx3fb-&amp;gt;backlight_level
before init_fb_chan() call.

Signed-off-by: Anatolij Gustschin &amp;lt;agust&amp;lt; at &amp;gt;denx.de&amp;gt;
---
 drivers/video/mx3fb.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/video/mx3fb.c b/drivers/video/mx3fb.c
index 054ef29..86312dd 100644
--- a/drivers/video/mx3fb.c
+++ b/drivers/video/mx3fb.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1486,12 +1486,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int mx3fb_probe(struct platform_device *pdev)
 goto ersdc0;
 }
 
+mx3fb-&amp;gt;backlight_level = 255;
+
 ret = init_fb_chan(mx3fb, to_idmac_chan(chan));
 if (ret &amp;lt; 0)
 goto eisdc0;
 
-mx3fb-&amp;gt;backlight_level = 255;
-
 return 0;
 
 eisdc0:
&lt;/pre&gt;</description>
    <dc:creator>Anatolij Gustschin</dc:creator>
    <dc:date>2009-11-09T11:10:07</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.fbdev.devel/14552">
    <title>[PATCH] atmel_lcdfb: silence compiler warningin device info printk</title>
    <link>http://comments.gmane.org/gmane.linux.fbdev.devel/14552</link>
    <description>&lt;pre&gt;This patch will tell printk the format for irq_base is a decimal and not an
unsigned long. The irq_base is defined as an int in the struct
atmel_lcdfb_info.

Signed-off-by: Hans-Christian Egtvedt &amp;lt;hans-christian.egtvedt&amp;lt; at &amp;gt;atmel.com&amp;gt;
---
 drivers/video/atmel_lcdfb.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c
index 2830ffd..317afab 100644
--- a/drivers/video/atmel_lcdfb.c
+++ b/drivers/video/atmel_lcdfb.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -959,7 +959,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int __init atmel_lcdfb_probe(struct platform_device *pdev)
 if (sinfo-&amp;gt;atmel_lcdfb_power_control)
 sinfo-&amp;gt;atmel_lcdfb_power_control(1);
 
-dev_info(dev, "fb%d: Atmel LCDC at 0x%08lx (mapped at %p), irq %lu\n",
+dev_info(dev, "fb%d: Atmel LCDC at 0x%08lx (mapped at %p), irq %d\n",
        info-&amp;gt;node, info-&amp;gt;fix.mmio_start, sinfo-&amp;gt;mmio, sinfo-&amp;gt;irq_base);
 
 return 0;
&lt;/pre&gt;</description>
    <dc:creator>Hans-Christian Egtvedt</dc:creator>
    <dc:date>2009-10-29T12:10:34</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.fbdev.devel/14551">
    <title>[RFC] intelfb + DirectFB + laptop issue</title>
    <link>http://comments.gmane.org/gmane.linux.fbdev.devel/14551</link>
    <description>&lt;pre&gt;Hi,

After failing to start DirectFB (tries to get and then set current
resolution) on my asus eeePC I investigated problem and I found out
that it is caused by:

static int intelfb_check_var(struct fb_var_screeninfo *var,
                              struct fb_info *info)
{
...
if (FIXED_MODE(dinfo) &amp;amp;&amp;amp;
    (change_var ||
     var-&amp;gt;yres_virtual &amp;gt; dinfo-&amp;gt;initial_var.yres_virtual ||
     var-&amp;gt;yres_virtual &amp;lt; dinfo-&amp;gt;initial_var.yres ||
     var-&amp;gt;xoffset || var-&amp;gt;nonstd)) {
if (first) {
ERR_MSG("Changing the video mode is not supported.\n");
first = 0;
}
return -EINVAL;
}
...

I my situation FIXED_MODE(dinfo) = true, but change_var = false
It still fails since dinfo-&amp;gt;initial_var.yres_virtual is initialized
only once as 0, so var-&amp;gt;yres_virtual is always bigger value.

Do we need these checks? chnage_var already does size chekings...

fbset -accel [true|false] also fails because of this check.

Please help me to resolve this issue and we should send patch for stable
also.

BR,
Paulius Zaleckas

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
&lt;/pre&gt;</description>
    <dc:creator>Paulius Zaleckas</dc:creator>
    <dc:date>2009-10-29T12:42:41</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.fbdev.devel/14545">
    <title>FBIOPUT_VSCREENINFO: invalid vs. "none" valueof pixclock?</title>
    <link>http://comments.gmane.org/gmane.linux.fbdev.devel/14545</link>
    <description>&lt;pre&gt;Hi,

what should the pixclock field for the FBIOPUT_VSCREENINFO ioctl be set
to when an application doesn't care about the timing?

The fbset tool and Xorg's fbdevhw driver set it to zero when they have
no timing.  Other programs (like links or xine) set it to the value
returned by FBIOGET_VSCREENINFO.

However, this seems to be different from the actual DRM helpers
implementation:

drm_fb_helper_single_fb_probe() initializes pixclock to -1, and this is
the value returned by FBIOGET_VSCREENINFO.  (Many programs treat this
as a valid value, 0xffffffff = 4 ms.)

drm_fb_helper_check_var() explicitly rejects both values, 0 or -1.

drm_fb_helper_set_par() refuses to work with any value except -1.


Best regards,
Clemens

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
&lt;/pre&gt;</description>
    <dc:creator>Clemens Ladisch</dc:creator>
    <dc:date>2009-10-28T09:51:03</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.fbdev.devel/14544">
    <title>[PATCH] offb: add support for framebufferhandoff to offb.</title>
    <link>http://comments.gmane.org/gmane.linux.fbdev.devel/14544</link>
    <description>&lt;pre&gt;From: Dave Airlie &amp;lt;airlied&amp;lt; at &amp;gt;redhat.com&amp;gt;

This allows offb to be used for initial framebuffer,
and a kms driver to take over later in the boot sequence.

Signed-off-by: Dave Airlie &amp;lt;airlied&amp;lt; at &amp;gt;redhat.com&amp;gt;
---
 drivers/video/offb.c |   15 ++++++++++++++-
 1 files changed, 14 insertions(+), 1 deletions(-)

diff --git a/drivers/video/offb.c b/drivers/video/offb.c
index 4d8c54c..b043ac8 100644
--- a/drivers/video/offb.c
+++ b/drivers/video/offb.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -282,8 +282,17 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int offb_set_par(struct fb_info *info)
 return 0;
 }
 
+static void offb_destroy(struct fb_info *info)
+{
+if (info-&amp;gt;screen_base)
+iounmap(info-&amp;gt;screen_base);
+release_mem_region(info-&amp;gt;aperture_base, info-&amp;gt;aperture_size);
+framebuffer_release(info);
+}
+
 static struct fb_ops offb_ops = {
 .owner= THIS_MODULE,
+.fb_destroy= offb_destroy,
 .fb_setcolreg= offb_setcolreg,
 .fb_set_par= offb_set_par,
 .fb_blank= offb_blank,
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -482,10 +491,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void __init offb_init_fb(const char *name, const char *full_name,
 var-&amp;gt;sync = 0;
 var-&amp;gt;vmode = FB_VMODE_NONINTERLACED;
 
+/* set offb aperture size for generic probing */
+info-&amp;gt;aperture_base = address;
+info-&amp;gt;aperture_size = fix-&amp;gt;smem_len;
+
 info-&amp;gt;fbops = &amp;amp;offb_ops;
 info-&amp;gt;screen_base = ioremap(address, fix-&amp;gt;smem_len);
 info-&amp;gt;pseudo_palette = (void *) (info + 1);
-info-&amp;gt;flags = FBINFO_DEFAULT | foreign_endian;
+info-&amp;gt;flags = FBINFO_DEFAULT | FBINFO_MISC_FIRMWARE | foreign_endian;
 
 fb_alloc_cmap(&amp;amp;info-&amp;gt;cmap, 256, 0);
 
&lt;/pre&gt;</description>
    <dc:creator>Dave Airlie</dc:creator>
    <dc:date>2009-10-27T10:35:28</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.fbdev.devel/14542">
    <title>[PATCH] fb: remove fb_save_state() and fb_restore_state operations (bug #11248)</title>
    <link>http://comments.gmane.org/gmane.linux.fbdev.devel/14542</link>
    <description>&lt;pre&gt;From: Krzysztof Helt &amp;lt;krzysztof.h1&amp;lt; at &amp;gt;wp.pl&amp;gt;

Remove fb_save_state() and fb_restore_state operations from frame buffer layer.
They are used only in two drivers:
1. savagefb  - and cause bug #11248
2. uvesafb

Usage of these operations is misunderstood in both drivers so kill these operations,
fix the bug #11248 and avoid confusion in the future.

Tested on Savage 3D/MV card and the patch fixes the bug #11248.

Signed-off-by: Krzysztof Helt &amp;lt;krzysztof.h1&amp;lt; at &amp;gt;wp.pl&amp;gt;
---
The frame buffer layer uses these funtions during switch between graphics and text 
mode of the console, but these drivers saves state before switching of the frame buffer
(in the fb_open) and after releasing it (in the fb_release). This defeats the purpose of
these operations.

diff --git a/drivers/video/atafb.c b/drivers/video/atafb.c
index 8cd279b..b7687c5 100644
--- a/drivers/video/atafb.c
+++ b/drivers/video/atafb.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -329,12 +329,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; extern unsigned char fontdata_8x16[];
  *
  ** perform fb specific mmap *
  *int (*fb_mmap)(struct fb_info *info, struct vm_area_struct *vma);
- *
- ** save current hardware state *
- *void (*fb_save_state)(struct fb_info *info);
- *
- ** restore saved state *
- *void (*fb_restore_state)(struct fb_info *info);
  * } ;
  */
 
diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c
index 5a686ce..3681c6a 100644
--- a/drivers/video/console/fbcon.c
+++ b/drivers/video/console/fbcon.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2311,14 +2311,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int fbcon_blank(struct vc_data *vc, int blank, int mode_switch)
 ops-&amp;gt;graphics = 1;
 
 if (!blank) {
-if (info-&amp;gt;fbops-&amp;gt;fb_save_state)
-info-&amp;gt;fbops-&amp;gt;fb_save_state(info);
 var.activate = FB_ACTIVATE_NOW | FB_ACTIVATE_FORCE;
 fb_set_var(info, &amp;amp;var);
 ops-&amp;gt;graphics = 0;
 ops-&amp;gt;var = info-&amp;gt;var;
-} else if (info-&amp;gt;fbops-&amp;gt;fb_restore_state)
-info-&amp;gt;fbops-&amp;gt;fb_restore_state(info);
+}
 }
 
  if (!fbcon_is_inactive(vc, info)) {
diff --git a/drivers/video/savage/savagefb_driver.c b/drivers/video/savage/savagefb_driver.c
index 37b135d..0857b3b 100644
--- a/drivers/video/savage/savagefb_driver.c
+++ b/drivers/video/savage/savagefb_driver.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1606,22 +1606,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int savagefb_blank(int blank, struct fb_info *info)
 return (blank == FB_BLANK_NORMAL) ? 1 : 0;
 }
 
-static void savagefb_save_state(struct fb_info *info)
-{
-struct savagefb_par *par = info-&amp;gt;par;
-
-savage_get_default_par(par, &amp;amp;par-&amp;gt;save);
-}
-
-static void savagefb_restore_state(struct fb_info *info)
-{
-struct savagefb_par *par = info-&amp;gt;par;
-
-savagefb_blank(FB_BLANK_POWERDOWN, info);
-savage_set_default_par(par, &amp;amp;par-&amp;gt;save);
-savagefb_blank(FB_BLANK_UNBLANK, info);
-}
-
 static int savagefb_open(struct fb_info *info, int user)
 {
 struct savagefb_par *par = info-&amp;gt;par;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1667,8 +1651,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static struct fb_ops savagefb_ops = {
 .fb_setcolreg   = savagefb_setcolreg,
 .fb_pan_display = savagefb_pan_display,
 .fb_blank       = savagefb_blank,
-.fb_save_state  = savagefb_save_state,
-.fb_restore_state = savagefb_restore_state,
 #if defined(CONFIG_FB_SAVAGE_ACCEL)
 .fb_fillrect    = savagefb_fillrect,
 .fb_copyarea    = savagefb_copyarea,
diff --git a/drivers/video/uvesafb.c b/drivers/video/uvesafb.c
index e35232a..54fbb29 100644
--- a/drivers/video/uvesafb.c
+++ b/drivers/video/uvesafb.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1411,23 +1411,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int uvesafb_check_var(struct fb_var_screeninfo *var,
 return 0;
 }
 
-static void uvesafb_save_state(struct fb_info *info)
-{
-struct uvesafb_par *par = info-&amp;gt;par;
-
-if (par-&amp;gt;vbe_state_saved)
-kfree(par-&amp;gt;vbe_state_saved);
-
-par-&amp;gt;vbe_state_saved = uvesafb_vbe_state_save(par);
-}
-
-static void uvesafb_restore_state(struct fb_info *info)
-{
-struct uvesafb_par *par = info-&amp;gt;par;
-
-uvesafb_vbe_state_restore(par, par-&amp;gt;vbe_state_saved);
-}
-
 static struct fb_ops uvesafb_ops = {
 .owner= THIS_MODULE,
 .fb_open= uvesafb_open,
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1441,8 +1424,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static struct fb_ops uvesafb_ops = {
 .fb_imageblit= cfb_imageblit,
 .fb_check_var= uvesafb_check_var,
 .fb_set_par= uvesafb_set_par,
-.fb_save_state= uvesafb_save_state,
-.fb_restore_state = uvesafb_restore_state,
 };
 
 static void __devinit uvesafb_init_info(struct fb_info *info,
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1459,15 +1440,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void __devinit uvesafb_init_info(struct fb_info *info,
 info-&amp;gt;fix.ypanstep = par-&amp;gt;ypan ? 1 : 0;
 info-&amp;gt;fix.ywrapstep = (par-&amp;gt;ypan &amp;gt; 1) ? 1 : 0;
 
-/*
- * If we were unable to get the state buffer size, disable
- * functions for saving and restoring the hardware state.
- */
-if (par-&amp;gt;vbe_state_size == 0) {
-info-&amp;gt;fbops-&amp;gt;fb_save_state = NULL;
-info-&amp;gt;fbops-&amp;gt;fb_restore_state = NULL;
-}
-
 /* Disable blanking if the user requested so. */
 if (!blank)
 info-&amp;gt;fbops-&amp;gt;fb_blank = NULL;
diff --git a/include/linux/fb.h b/include/linux/fb.h
index a34bdf5..de9c722 100644
--- a/include/linux/fb.h
+++ b/include/linux/fb.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -669,12 +669,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; struct fb_ops {
 /* perform fb specific mmap */
 int (*fb_mmap)(struct fb_info *info, struct vm_area_struct *vma);
 
-/* save current hardware state */
-void (*fb_save_state)(struct fb_info *info);
-
-/* restore saved state */
-void (*fb_restore_state)(struct fb_info *info);
-
 /* get capability given var */
 void (*fb_get_caps)(struct fb_info *info, struct fb_blit_caps *caps,
     struct fb_var_screeninfo *var);


----------------------------------------------------------------------
Nie wiesz ktory bank wybrac?
Sprawdz ranking &amp;gt;&amp;gt;&amp;gt; http://link.interia.pl/f23b5


------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
&lt;/pre&gt;</description>
    <dc:creator>Krzysztof Helt</dc:creator>
    <dc:date>2009-10-25T16:00:22</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.fbdev.devel/14541">
    <title>[PATCH] savagefb: fix blanking mode on CRTdisplay</title>
    <link>http://comments.gmane.org/gmane.linux.fbdev.devel/14541</link>
    <description>&lt;pre&gt;From: Krzysztof Helt &amp;lt;krzysztof.h1&amp;lt; at &amp;gt;wp.pl&amp;gt;

Fix wrong bit mask for blanking register.  Due to the error a CRT monitor blanks
off due to wrong frequency (out of range) instead of PM signal (vertical and horizontal
frequencies cut off).

Signed-off-by: Krzysztof Helt &amp;lt;krzysztof.h1&amp;lt; at &amp;gt;wp.pl&amp;gt;
---
Just compare the mask with bits set in the switch(blank) clause below the changed line.

diff --git a/drivers/video/savage/savagefb_driver.c b/drivers/video/savage/savagefb_driver.c
index 37b135d..5ad7c79 100644
--- a/drivers/video/savage/savagefb_driver.c
+++ b/drivers/video/savage/savagefb_driver.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1565,7 +1565,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int savagefb_blank(int blank, struct fb_info *info)
 vga_out8(0x3c5, sr8, par);
 vga_out8(0x3c4, 0x0d, par);
 srd = vga_in8(0x3c5, par);
-srd &amp;amp;= 0x03;
+srd &amp;amp;= 0x50;
 
 switch (blank) {
 case FB_BLANK_UNBLANK:

----------------------------------------------------------------------
Opony do 30% taniej, dostawa gratis!
http://link.interia.pl/f23c9



------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
&lt;/pre&gt;</description>
    <dc:creator>Krzysztof Helt</dc:creator>
    <dc:date>2009-10-25T10:17:04</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.fbdev.devel/14540">
    <title>[PATCH] add palette register check</title>
    <link>http://comments.gmane.org/gmane.linux.fbdev.devel/14540</link>
    <description>&lt;pre&gt;From: Krzysztof Helt &amp;lt;krzysztof.h1&amp;lt; at &amp;gt;wp.pl&amp;gt;

Add check if palette register number is in correct range
for few drivers which miss it. The regno value comes
indirectly from user space.

Two drivers has converted check from BUG_ON() macro
to just return an error (non-zero value).

Signed-off-by: Krzysztof Helt &amp;lt;krzysztof.h1&amp;lt; at &amp;gt;wp.pl&amp;gt;

---

diff --git a/drivers/video/atafb.c b/drivers/video/atafb.c
index 8cd279b..2682938 100644
--- a/drivers/video/atafb.c
+++ b/drivers/video/atafb.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2248,6 +2248,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int ext_setcolreg(unsigned int regno, unsigned int red,
 if (!external_vgaiobase)
 return 1;
 
+if (regno &amp;gt; 255)
+return 1;
+
 switch (external_card_type) {
 case IS_VGA:
 OUTB(0x3c8, regno);
diff --git a/drivers/video/ep93xx-fb.c b/drivers/video/ep93xx-fb.c
index bd9d46f..27aab4a 100644
--- a/drivers/video/ep93xx-fb.c
+++ b/drivers/video/ep93xx-fb.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -358,6 +358,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int ep93xxfb_setcolreg(unsigned int regno, unsigned int red,
 
 switch (info-&amp;gt;fix.visual) {
 case FB_VISUAL_PSEUDOCOLOR:
+if (regno &amp;gt; 255)
+return 1;
 rgb = ((red &amp;amp; 0xff00) &amp;lt;&amp;lt; 8) | (green &amp;amp; 0xff00) |
 ((blue &amp;amp; 0xff00) &amp;gt;&amp;gt; 8);
 
diff --git a/drivers/video/maxinefb.c b/drivers/video/maxinefb.c
index 5e91c2b..7854c7a 100644
--- a/drivers/video/maxinefb.c
+++ b/drivers/video/maxinefb.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -92,6 +92,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int maxinefb_setcolreg(unsigned regno, unsigned red, unsigned green,
 /* value to be written into the palette reg. */
 unsigned long hw_colorvalue = 0;
 
+if (regno &amp;gt; 255)
+return 1;
+
 red   &amp;gt;&amp;gt;= 8;    /* The cmap fields are 16 bits    */
 green &amp;gt;&amp;gt;= 8;    /* wide, but the harware colormap */
 blue  &amp;gt;&amp;gt;= 8;    /* registers are only 8 bits wide */
diff --git a/drivers/video/pmag-ba-fb.c b/drivers/video/pmag-ba-fb.c
index 0573ec6..0f361b6 100644
--- a/drivers/video/pmag-ba-fb.c
+++ b/drivers/video/pmag-ba-fb.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -98,7 +98,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int pmagbafb_setcolreg(unsigned int regno, unsigned int red,
 {
 struct pmagbafb_par *par = info-&amp;gt;par;
 
-BUG_ON(regno &amp;gt;= info-&amp;gt;cmap.len);
+if (regno &amp;gt;= info-&amp;gt;cmap.len)
+return 1;
 
 red   &amp;gt;&amp;gt;= 8;/* The cmap fields are 16 bits    */
 green &amp;gt;&amp;gt;= 8;/* wide, but the hardware colormap */
diff --git a/drivers/video/pmagb-b-fb.c b/drivers/video/pmagb-b-fb.c
index 9874872..2de0806 100644
--- a/drivers/video/pmagb-b-fb.c
+++ b/drivers/video/pmagb-b-fb.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -102,7 +102,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int pmagbbfb_setcolreg(unsigned int regno, unsigned int red,
 {
 struct pmagbbfb_par *par = info-&amp;gt;par;
 
-BUG_ON(regno &amp;gt;= info-&amp;gt;cmap.len);
+if (regno &amp;gt;= info-&amp;gt;cmap.len)
+return 1;
 
 red   &amp;gt;&amp;gt;= 8;/* The cmap fields are 16 bits    */
 green &amp;gt;&amp;gt;= 8;/* wide, but the hardware colormap */

 
----------------------------------------------------------------------
Nie dla nich ciepla praca za biurkiem.
Sprawdz &amp;gt;&amp;gt;&amp;gt; http://link.interia.pl/f2383


------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
&lt;/pre&gt;</description>
    <dc:creator>Krzysztof Helt</dc:creator>
    <dc:date>2009-10-24T15:18:23</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.fbdev.devel/14537">
    <title>vesafb BIOS interface</title>
    <link>http://comments.gmane.org/gmane.linux.fbdev.devel/14537</link>
    <description>&lt;pre&gt;------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference_______________________________________________
Linux-fbdev-devel mailing list
Linux-fbdev-devel&amp;lt; at &amp;gt;lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-fbdev-devel
&lt;/pre&gt;</description>
    <dc:creator>Woon Liang Soh</dc:creator>
    <dc:date>2009-10-23T02:49:51</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.fbdev.devel/14523">
    <title>[PATCH] fbdev: Fix test on unsigned infb_do_show_logo()</title>
    <link>http://comments.gmane.org/gmane.linux.fbdev.devel/14523</link>
    <description>&lt;pre&gt;image-&amp;gt;d[xy] are unsigned so the check was wrong.

Signed-off-by: Roel Kluin &amp;lt;roel.kluin&amp;lt; at &amp;gt;gmail.com&amp;gt;
---
diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
index 99bbd28..9f20641 100644
--- a/drivers/video/fbmem.c
+++ b/drivers/video/fbmem.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -403,7 +403,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void fb_do_show_logo(struct fb_info *info, struct fb_image *image,
 image-&amp;gt;dx += image-&amp;gt;width + 8;
 }
 } else if (rotate == FB_ROTATE_UD) {
-for (x = 0; x &amp;lt; num &amp;amp;&amp;amp; image-&amp;gt;dx &amp;gt;= 0; x++) {
+for (x = 0; x &amp;lt; num &amp;amp;&amp;amp; image-&amp;gt;dx + image-&amp;gt;width + 8 &amp;gt;= 0;
+x++) {
 info-&amp;gt;fbops-&amp;gt;fb_imageblit(info, image);
 image-&amp;gt;dx -= image-&amp;gt;width + 8;
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -415,7 +416,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void fb_do_show_logo(struct fb_info *info, struct fb_image *image,
 image-&amp;gt;dy += image-&amp;gt;height + 8;
 }
 } else if (rotate == FB_ROTATE_CCW) {
-for (x = 0; x &amp;lt; num &amp;amp;&amp;amp; image-&amp;gt;dy &amp;gt;= 0; x++) {
+for (x = 0; x &amp;lt; num &amp;amp;&amp;amp; image-&amp;gt;dy + image-&amp;gt;height + 8 &amp;gt;= 0;
+x++) {
 info-&amp;gt;fbops-&amp;gt;fb_imageblit(info, image);
 image-&amp;gt;dy -= image-&amp;gt;height + 8;
 }

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
&lt;/pre&gt;</description>
    <dc:creator>Roel Kluin</dc:creator>
    <dc:date>2009-10-16T22:45:14</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.linux.fbdev.devel">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.linux.fbdev.devel</link>
  </textinput>
</rdf:RDF>

