From: "Javier Muñoz" <jmunhoz@igalia.com>
To: Greg KH <gregkh@suse.de>
Cc: linux-kernel@vger.kernel.org, devel@driverdev.osuosl.org
Subject: Re: [PATCH] staging: sm7xx: Use kernel framebuffer mode setting
Date: Sat, 07 May 2011 03:16:46 +0200 [thread overview]
Message-ID: <4DC49D7E.6060905@igalia.com> (raw)
In-Reply-To: <20110506235544.GC22803@suse.de>
[-- Attachment #1: Type: text/plain, Size: 1024 bytes --]
On 05/07/2011 01:55 AM, Greg KH wrote:
> On Sat, May 07, 2011 at 12:26:49AM +0200, Javier Muñoz wrote:
>> On 05/06/2011 11:22 PM, Greg KH wrote:
>>> On Fri, May 06, 2011 at 07:24:56PM +0200, Javier M. Mellid wrote:
>>>> This patch implements dynamic framebuffer mode setting.
[...]
>>>
>>> This applies with fuzz, this leads me to believe that you didn't test
>>> this on the latest linux-next tree, right?
>>>
>>> What did you make this patch against?
>>
>> Sorry, I didn't know. I made this patch against
>> linux-2.6 (bfd412db9e7b0d8f7b9c09d12d07aa2ac785f1d0) as I did with
>> previous patches.
>>
>> Testing was about creating, applying, compiling and running patch
>> with kernel built from linux-2.6
>>
>> Do you need a new patch against linux-next's master? I can redo this patch.
>
> Yes, please always make patches against linux-next as it includes any
> other pending patches that are in my tree.
OK, just resending a new patch made against linux-next. Please, let me
know if it applies seamless.
Thanks!
javi
[-- Attachment #2: 0001-staging-sm7xx-Use-kernel-framebuffer-mode-setting.patch --]
[-- Type: text/x-diff, Size: 5921 bytes --]
>From 544f73e7e6f5e4e42f4384f82ee9b4bffe889efb Mon Sep 17 00:00:00 2001
From: Javier M. Mellid <jmunhoz@igalia.com>
Date: Sat, 7 May 2011 01:57:43 +0200
Subject: [PATCH] staging: sm7xx: Use kernel framebuffer mode setting
This patch implements dynamic framebuffer mode setting.
Previous code works with mode setting in a hard code way. Previous hard
code configuration is used as default configuration if dynamic mode
setting or boot mode setting (via sm712vga_setup) is not used.
Tested with SM712 supporting 1024x600x16 as default hardware resolution.
Changes:
- Implement fb_check_var and fb_set_par callbacks
- Remove __maybe_unused decorator in function being used (sm712vga_setup)
- Minor cleanup on initialization structs related with mode settings
- Updated author copyright
- Updated TODO file
Signed-off-by: Javier M. Mellid <jmunhoz@igalia.com>
---
drivers/staging/sm7xx/TODO | 1 -
drivers/staging/sm7xx/smtcfb.c | 112 +++++++++++++++++++++++++---------------
2 files changed, 71 insertions(+), 42 deletions(-)
diff --git a/drivers/staging/sm7xx/TODO b/drivers/staging/sm7xx/TODO
index b0f5318..7304021 100644
--- a/drivers/staging/sm7xx/TODO
+++ b/drivers/staging/sm7xx/TODO
@@ -3,7 +3,6 @@ TODO:
- 2D acceleration support
- use kernel coding style
- refine the code and remove unused code
-- use kernel framebuffer mode setting instead of hard code
- move it to drivers/video/sm7xx/ or make it be drivers/video/sm7xxfb.c
Please send any patches to Greg Kroah-Hartman <greg@kroah.com> and
diff --git a/drivers/staging/sm7xx/smtcfb.c b/drivers/staging/sm7xx/smtcfb.c
index c0d943f..94cb4e8 100644
--- a/drivers/staging/sm7xx/smtcfb.c
+++ b/drivers/staging/sm7xx/smtcfb.c
@@ -8,6 +8,9 @@
* Copyright (C) 2009 Lemote, Inc.
* Author: Wu Zhangjin, wuzhangjin@gmail.com
*
+ * Copyright (C) 2011 Igalia, S.L.
+ * Author: Javier M. Mellid <jmunhoz@igalia.com>
+ *
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file COPYING in the main directory of this archive for
* more details.
@@ -39,16 +42,16 @@
#include <linux/pm.h>
#endif
-struct screen_info smtc_screen_info;
-
#include "smtcfb.h"
#ifdef DEBUG
-#define smdbg(format, arg...) printk(KERN_DEBUG format , ## arg)
+#define smdbg(format, arg...) printk(KERN_DEBUG format , ## arg)
#else
#define smdbg(format, arg...)
#endif
+struct screen_info smtc_screen_info;
+
/*
* Private structure
*/
@@ -127,6 +130,29 @@ u16 smtc_ChipIDs[] = {
#define numSMTCchipIDs (sizeof(smtc_ChipIDs) / sizeof(u16))
+static struct fb_var_screeninfo smtcfb_var = {
+ .xres = 1024,
+ .yres = 600,
+ .xres_virtual = 1024,
+ .yres_virtual = 600,
+ .bits_per_pixel = 16,
+ .red = {16, 8, 0},
+ .green = {8, 8, 0},
+ .blue = {0, 8, 0},
+ .activate = FB_ACTIVATE_NOW,
+ .height = -1,
+ .width = -1,
+ .vmode = FB_VMODE_NONINTERLACED,
+};
+
+static struct fb_fix_screeninfo smtcfb_fix = {
+ .id = "sm712fb",
+ .type = FB_TYPE_PACKED_PIXELS,
+ .visual = FB_VISUAL_TRUECOLOR,
+ .line_length = 800 * 3,
+ .accel = FB_ACCEL_SMI_LYNX,
+};
+
static void sm712_set_timing(struct smtcfb_info *sfb,
struct par_info *ppar_info)
{
@@ -268,29 +294,6 @@ static void smtc_set_timing(struct smtcfb_info *sfb, struct par_info
}
}
-static struct fb_var_screeninfo smtcfb_var = {
- .xres = 1024,
- .yres = 600,
- .xres_virtual = 1024,
- .yres_virtual = 600,
- .bits_per_pixel = 16,
- .red = {16, 8, 0},
- .green = {8, 8, 0},
- .blue = {0, 8, 0},
- .activate = FB_ACTIVATE_NOW,
- .height = -1,
- .width = -1,
- .vmode = FB_VMODE_NONINTERLACED,
-};
-
-static struct fb_fix_screeninfo smtcfb_fix = {
- .id = "sm712fb",
- .type = FB_TYPE_PACKED_PIXELS,
- .visual = FB_VISUAL_TRUECOLOR,
- .line_length = 800 * 3,
- .accel = FB_ACCEL_SMI_LYNX,
-};
-
/* chan_to_field
*
* convert a colour value into a field position
@@ -604,20 +607,6 @@ smtcfb_write(struct fb_info *info, const char __user *buf, size_t count,
}
#endif /* ! __BIG_ENDIAN */
-static struct fb_ops smtcfb_ops = {
- .owner = THIS_MODULE,
- .fb_setcolreg = smtc_setcolreg,
- .fb_blank = cfb_blank,
- .fb_fillrect = cfb_fillrect,
- .fb_imageblit = cfb_imageblit,
- .fb_copyarea = cfb_copyarea,
-#ifdef __BIG_ENDIAN
- .fb_read = smtcfb_read,
- .fb_write = smtcfb_write,
-#endif
-
-};
-
void smtcfb_setmode(struct smtcfb_info *sfb)
{
switch (sfb->fb.var.bits_per_pixel) {
@@ -676,6 +665,47 @@ void smtcfb_setmode(struct smtcfb_info *sfb)
smtc_set_timing(sfb, &hw);
}
+static int smtc_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
+{
+ /* sanity checks */
+ if (var->xres_virtual < var->xres)
+ var->xres_virtual = var->xres;
+
+ if (var->yres_virtual < var->yres)
+ var->yres_virtual = var->yres;
+
+ /* set valid default bpp */
+ if ((var->bits_per_pixel != 8) && (var->bits_per_pixel != 16) &&
+ (var->bits_per_pixel != 24) && (var->bits_per_pixel != 32))
+ var->bits_per_pixel = 16;
+
+ return 0;
+}
+
+static int smtc_set_par(struct fb_info *info)
+{
+ struct smtcfb_info *sfb = (struct smtcfb_info *)info;
+
+ smtcfb_setmode(sfb);
+
+ return 0;
+}
+
+static struct fb_ops smtcfb_ops = {
+ .owner = THIS_MODULE,
+ .fb_check_var = smtc_check_var,
+ .fb_set_par = smtc_set_par,
+ .fb_setcolreg = smtc_setcolreg,
+ .fb_blank = cfb_blank,
+ .fb_fillrect = cfb_fillrect,
+ .fb_imageblit = cfb_imageblit,
+ .fb_copyarea = cfb_copyarea,
+#ifdef __BIG_ENDIAN
+ .fb_read = smtcfb_read,
+ .fb_write = smtcfb_write,
+#endif
+};
+
/*
* Alloc struct smtcfb_info and assign the default value
*/
@@ -796,7 +826,7 @@ static void smtc_free_fb_info(struct smtcfb_info *sfb)
* Returns zero.
*
*/
-static int __init __maybe_unused sm712vga_setup(char *options)
+static int __init sm712vga_setup(char *options)
{
int index;
--
1.7.4.1
next prev parent reply other threads:[~2011-05-07 1:14 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-06 17:24 [PATCH] staging: sm7xx: Use kernel framebuffer mode setting Javier M. Mellid
2011-05-06 21:22 ` Greg KH
2011-05-06 22:26 ` Javier Muñoz
2011-05-06 23:55 ` Greg KH
2011-05-07 1:16 ` Javier Muñoz [this message]
2011-05-07 1:11 ` [PATCH RESEND 1/1] " Javier M. Mellid
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4DC49D7E.6060905@igalia.com \
--to=jmunhoz@igalia.com \
--cc=devel@driverdev.osuosl.org \
--cc=gregkh@suse.de \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.