linux-fbdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Antonino A. Daplas" <adaplas@hotpop.com>
To: Gerd Knorr <kraxel@bytesex.org>, adaplas@pol.net
Cc: Andrew Morton <akpm@osdl.org>,
	Linux Fbdev development list
	<linux-fbdev-devel@lists.sourceforge.net>,
	Aurelien Jacobs <aurel@gnuage.org>
Subject: [PATCH] fbdev: split vesafb option vram into vtotal and vremap
Date: Tue, 5 Oct 2004 05:40:50 +0800	[thread overview]
Message-ID: <200410050540.50453.adaplas@hotpop.com> (raw)
In-Reply-To: <20041004115604.GA8827@bytesex>

From Gerd Knorr <kraxel@bytesex.org>:

"IMHO the the only sane thing is to have two options for total + remapped
memory as well.  Otherwise we'll end up changing that back and forth like
it happened for the size calculation stuff for quite some time ...

The patch below does just that and also has the other vmode fix
(vmode = yres * linelength /* instead of yres * xres * depth >> 3 */)."

- Patched rediffed against 2.6.9-rc3-mm2.

- Modified documentation about the changes.

Signed-off-by: Antonino Daplas <adaplas@pol.net>
---

 Documentation/fb/vesafb.txt |    7 ++++++-
 drivers/video/vesafb.c      |   25 ++++++++++++++++---------
 2 files changed, 22 insertions(+), 10 deletions(-)

diff -uprN linux-2.6.9-rc3-mm2-orig/Documentation/fb/vesafb.txt linux-2.6.9-rc3-mm2/Documentation/fb/vesafb.txt
--- linux-2.6.9-rc3-mm2-orig/Documentation/fb/vesafb.txt	2004-10-05 05:25:09.672888064 +0800
+++ linux-2.6.9-rc3-mm2/Documentation/fb/vesafb.txt	2004-10-05 05:24:20.374382576 +0800
@@ -146,11 +146,16 @@ pmipal	Use the protected mode interface 
 
 mtrr	setup memory type range registers for the vesafb framebuffer.
 
-vram:n	remap 'n' MiB of video RAM. If 0 or not specified, remap memory
+vremap:n
+        remap 'n' MiB of video RAM. If 0 or not specified, remap memory
 	according to video mode. (2.5.66 patch/idea by Antonino Daplas
 	reversed to give override possibility (allocate more fb memory
 	than the kernel would) to 2.4 by tmb@iki.fi)
 
+vtotal:n
+        if the video BIOS of your card incorrectly determines the total
+        amount of video RAM, use this option to override the BIOS (in MiB).
+
 Have fun!
 
   Gerd
diff -uprN linux-2.6.9-rc3-mm2-orig/drivers/video/vesafb.c linux-2.6.9-rc3-mm2/drivers/video/vesafb.c
--- linux-2.6.9-rc3-mm2-orig/drivers/video/vesafb.c	2004-10-05 05:20:37.000000000 +0800
+++ linux-2.6.9-rc3-mm2/drivers/video/vesafb.c	2004-10-05 05:29:54.581575360 +0800
@@ -49,7 +49,8 @@ static struct fb_fix_screeninfo vesafb_f
 
 static int             inverse   = 0;
 static int             mtrr      = 1;
-static int	       vram __initdata = 0; /* Set amount of memory to be used */
+static int	       vram_remap __initdata = 0; /* Set amount of memory to be used */
+static int	       vram_total __initdata = 0; /* Set total amount of memory */
 static int             pmi_setpal = 0;	/* pmi for palette changes ??? */
 static int             ypan       = 0;  /* 0..nothing, 1..ypan, 2..ywrap */
 static unsigned short  *pmi_base  = NULL;
@@ -209,8 +210,10 @@ int __init vesafb_setup(char *options)
 			mtrr=1;
 		else if (! strcmp(this_opt, "nomtrr"))
 			mtrr=0;
-		else if (! strncmp(this_opt, "vram:", 5))
-			vram = simple_strtoul(this_opt+5, NULL, 0);
+		else if (! strncmp(this_opt, "vtotal:", 7))
+			vram_total = simple_strtoul(this_opt+7, NULL, 0);
+		else if (! strncmp(this_opt, "vremap:", 7))
+			vram_remap = simple_strtoul(this_opt+7, NULL, 0);
 	}
 	return 0;
 }
@@ -240,11 +243,14 @@ static int __init vesafb_probe(struct de
 	/*   size_vmode -- that is the amount of memory needed for the
 	 *                 used video mode, i.e. the minimum amount of
 	 *                 memory we need. */
-	size_vmode = vesafb_fix.line_length * vesafb_defined.yres;
+	size_vmode = vesafb_defined.yres * vesafb_fix.line_length;
 
 	/*   size_total -- all video memory we have. Used for mtrr
-	 *                 entries and bounds checking. */
+	 *                 entries, ressource allocation and bounds
+	 *                 checking. */
 	size_total = screen_info.lfb_size * 65536;
+	if (vram_total)
+		size_total = vram_total * 1024 * 1024;
 	if (size_total < size_vmode)
 		size_total = size_vmode;
 
@@ -252,10 +258,11 @@ static int __init vesafb_probe(struct de
 	 *                 use for vesafb.  With modern cards it is no
 	 *                 option to simply use size_total as that
 	 *                 wastes plenty of kernel address space. */
-	size_remap = size_vmode * 2;
-	if (vram)
-		size_remap = vram * 1024 * 1024;
-
+	size_remap  = size_vmode * 2;
+	if (vram_remap)
+		size_remap = vram_remap * 1024 * 1024;
+	if (size_remap < size_vmode)
+		size_remap = size_vmode;
 	if (size_remap > size_total)
 		size_remap = size_total;
 	vesafb_fix.smem_len = size_remap;




-------------------------------------------------------
This SF.net email is sponsored by: IT Product Guide on ITManagersJournal
Use IT products in your business? Tell us what you think of them. Give us
Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out more
http://productguide.itmanagersjournal.com/guidepromo.tmpl

      reply	other threads:[~2004-10-04 21:41 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-10-04  1:23 [PATCH] fbdev: fix framebuffer memory calculation for vesafb Antonino A. Daplas
2004-10-04 11:56 ` Gerd Knorr
2004-10-04 21:40   ` Antonino A. Daplas [this message]

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=200410050540.50453.adaplas@hotpop.com \
    --to=adaplas@hotpop.com \
    --cc=adaplas@pol.net \
    --cc=akpm@osdl.org \
    --cc=aurel@gnuage.org \
    --cc=kraxel@bytesex.org \
    --cc=linux-fbdev-devel@lists.sourceforge.net \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).