2004-01-08 22:04:29

by James Simmons

[permalink] [raw]
Subject: New FBDev patch


This is the latest patch against 2.6.0-rc3. Give it a try.

http://phoenix.infradead.org/~jsimmons/fbdev.diff.gz

Here are the changes.

Documentation/fb/modedb.txt | 4
Documentation/fb/neofb.txt | 27
MAINTAINERS | 5
drivers/char/vt.c | 47
drivers/char/vt_ioctl.c | 12
drivers/video/Kconfig | 130
drivers/video/Makefile | 15
drivers/video/acornfb.c | 1
drivers/video/asiliantfb.c | 619
drivers/video/aty/Makefile | 1
drivers/video/aty/aty128fb.c | 349
drivers/video/aty/atyfb.h | 155
drivers/video/aty/atyfb_base.c | 1842 +-
drivers/video/aty/mach64_ct.c | 732 -
drivers/video/aty/mach64_cursor.c | 324
drivers/video/aty/mach64_gx.c | 20
drivers/video/aty/xlinit.c | 68
drivers/video/bw2.c | 74
drivers/video/cfbimgblt.c | 2
drivers/video/cg14.c | 98
drivers/video/cg3.c | 79
drivers/video/cg6.c | 89
drivers/video/chipsfb.c | 4
drivers/video/cirrusfb.c | 32
drivers/video/clients.c | 108
drivers/video/console/Makefile | 29
drivers/video/console/fbcon.c | 703 -
drivers/video/console/fbcon.h | 3
drivers/video/controlfb.c | 10
drivers/video/cyber2000fb.c | 198
drivers/video/epson1355fb.c | 967 -
drivers/video/fbmem.c | 443
drivers/video/fbmon.c | 10
drivers/video/ffb.c | 110
drivers/video/fm2fb.c | 1
drivers/video/g364fb.c | 78
drivers/video/i810/Makefile | 7
drivers/video/i810/i810_main.c | 21
drivers/video/igafb.c | 5
drivers/video/imsttfb.c | 17
drivers/video/leo.c | 78
drivers/video/logo/Kconfig | 2
drivers/video/logo/Makefile | 49
drivers/video/logo/logo.c | 10
drivers/video/macfb.c | 34
drivers/video/matrox/matroxfb_base.c | 8
drivers/video/matrox/matroxfb_crtc2.c | 3
drivers/video/modedb.c | 4
drivers/video/neofb.c | 446
drivers/video/p9100.c | 62
drivers/video/platinumfb.c | 10
drivers/video/pm2fb.c | 3010 +---
drivers/video/pvr2fb.c | 846 -
drivers/video/radeonfb.c | 5
drivers/video/riva/fbdev.c | 189
drivers/video/riva/nv_type.h | 12
drivers/video/sa1100fb.c | 1
drivers/video/sgivwfb.c | 14
drivers/video/sis/300vtbl.h | 2455 ---
drivers/video/sis/310vtbl.h | 3515 +----
drivers/video/sis/init.c | 8364 +++++-------
drivers/video/sis/init.h | 2874 +++-
drivers/video/sis/init301.c |21991 +++++++++++++++++-----------------
drivers/video/sis/init301.h | 535
drivers/video/sis/initdef.h | 357
drivers/video/sis/oem300.h | 502
drivers/video/sis/oem310.h | 181
drivers/video/sis/osdef.h | 122
drivers/video/sis/sis_accel.c | 68
drivers/video/sis/sis_accel.h | 27
drivers/video/sis/sis_main.c | 4594 +++----
drivers/video/sis/sis_main.h | 713 -
drivers/video/sis/vgatypes.h | 267
drivers/video/sis/vstruct.h | 218
drivers/video/skeletonfb.c | 74
drivers/video/softcursor.c | 206
drivers/video/sstfb.c | 4
drivers/video/stifb.c | 1
drivers/video/tcx.c | 115
drivers/video/tdfxfb.c | 98
drivers/video/tgafb.c | 177
drivers/video/tridentfb.c | 3
drivers/video/valkyriefb.c | 548
drivers/video/vesafb.c | 17
drivers/video/vgastate.c | 1
include/linux/fb.h | 153
include/linux/linux_logo.h | 4
include/linux/pci_ids.h | 109
include/video/aty128.h | 3
include/video/cirrus.h | 1
include/video/cvisionppc.h | 51
include/video/epson1355.h | 64
include/video/mach64.h | 229
include/video/neomagic.h | 261
include/video/sisfb.h | 105
include/video/tdfx.h | 1
96 files changed, 30792 insertions(+), 30438 deletions(-)

through these ChangeSets:

<[email protected]> (04/01/08 1.1406)
[IMSTT FBDEV] No longer need these special macros.

<[email protected]> (04/01/08 1.1404)
[NEOMAGIC FBDEV] Fixed the nasty bug causing a oops. I needed to call neofb_check_var at bootup to fix the yres_virtual value. Updated the still not functional cursor code. The hardware imageblit code has a problem.

<jsimmons@debian.(none)> (04/01/07 1.1402)
[MACH 64] Hardware info from the specs.

<jsimmons@debian.(none)> (04/01/07 1.1400)
[VT CONSOLE] Pavel patch to fix the trailing cursor bug. The fix is to first hide the cursor _then_ hide the software cursor. A very old bug never discovered until now.

<[email protected]> (04/01/06 1.1398)
[FBCON] Needed fix for resizing. Cols and rows where reversed.

<[email protected]> (04/01/06 1.1397)
[ATY FBDEV] More PCI ids for more Mach 64 cards out there.

<[email protected]> (04/01/06 1.1396)
[CONSOLE] Don't let a monochrome display stomp all over the color values.

<[email protected]> (04/01/06 1.1395)
[FBDEV] Changed docs to reflect commandline change.

<[email protected]> (04/01/06 1.1394)
[FM2 FBDEV] Removed old comment.

<[email protected]> (04/01/06 1.1393)
[CIRRUS FBDEV] 16 bpp color mode fix.

<[email protected]> (03/12/19 1.1389)
[FBCON] Fixed the order of which driver is used for the console. Before the api changes the last driver loaded became the default one. Now that is not the case.

<[email protected]> (03/12/03 1.1380)
[FBCON] Need to clear the cursor mask data.

<[email protected]> (03/11/06 1.1364)
[ATY FBDEV] Sparc compile fixes.

<jsimmons@debian.(none)> (03/10/31 1.1358)
[FBDEV] Fixed the cursor ioctl. It was placing the image and mask data in cursor instead of info->cursor.

<jsimmons@debian.(none)> (03/10/31 1.1357)
[MACH64 FBDEV] Latest LCD support code.

<jsimmons@debian.(none)> (03/10/30 1.1354)
[FBCON] cur_height might not be initialized. SO we use vc->vc_font.height instead. Fixed overflow issues with mask.

<[email protected]> (03/10/29 1.1350)
[FBCON] Accidentally disabled flashing cursor.

<[email protected]> (03/10/29 1.1349)
[FBCON] State management added.

<jsimmons@debian.(none)> (03/10/28 1.1344.1.13)
[FBCON] Final fix to the cursor issues when the cursor wasn't divisible evenly by 8.

<jsimmons@debian.(none)> (03/10/28 1.1344.1.11)
[FBDEV] Major fixes to the cursor code.

<jsimmons@debian.(none)> (03/10/27 1.1344.1.9)
[FBDEV] The passed in data was in the wrong order.

<[email protected]> (03/10/17 1.1337.50.2)
[FBDEV RADEON} The return of fb_setup.

[FBDEV SGIVW] Match info to code.

<[email protected]> (03/10/16 1.1337.25.21)
[FBDEV] Fixed Radeon PCI IDs so the agp driver could compile as well.

<[email protected]> (03/10/16 1.1337.25.19)
[ATY128 FBDEV] ATI 128 Rage updates.

[FBDEV] Sysfs updates

<[email protected]> (03/10/15 1.1337.25.18)
[RADEON FBDEV] Fixed the pitch size.

<[email protected]> (03/10/15 1.1337.25.16)
[FBDEV SOFT CURSOR] Fixed size bug.
[FBDEV] Increased size for 64 bit platforms.

<[email protected]> (03/10/15 1.1337.25.15)
[FBDEV SOFTWARE CURSOR] We always save the maximum are under the cursor. This way we don't have to worry about cursor resizing.

<[email protected]> (03/10/14 1.1337.25.14)
[FBDEV] Implemented the first round of saving and restoring the area under the cursor.

<[email protected]> (03/10/14 1.1337.25.12)
[FBDEV] Moved kernel header files to be visible only when compiling for the kernel. Userland doesn't need these header files. It also makes shifting from kernel version to kernel version easier.

<[email protected]> (03/10/14 1.1337.25.11)
[SIS FBDEV] Compile fix.

<[email protected]> (03/10/13 1.1337.30.2)
[SIS FBDEV] SIS updates. FIxed CRT1 detection.

<[email protected]> (03/10/03 1.1296.47.4)
[SGIVW FBDEV] Fixed 16 bpp color mode.

<[email protected]> (03/09/29 1.1296.32.2)
[FBDEV] Patch fixes get_std_timing. Current code doesn't search the VESA modedb. Instead it exits after the first iteration with mode calculated by calc_mode_timings.

<[email protected]> (03/09/22 1.1267.1.26)
[FBDEV] Better makefile.

<[email protected]> (03/09/22 1.1267.1.25)
pm2fb-2.6.patch

<jsimmons@debian.(none)> (03/09/19 1.1267.47.2)
[TGA FBDEV] Updates to the tga famebuffer. Added color imageblit support. Added using dec logo for TGA fbdev. Color palette fix.

<[email protected]> (03/09/18 1.1267.1.20)
Update driver with the new API

<[email protected]> (03/09/18 1.1267.1.19)
Update sisfb driver:
- merge with driver version version 090903-1 (from Thomas Winischhofer)
- port driver to the new framebuffer_{alloc,release} API

<[email protected]> (03/09/17 1.1267.1.18)
Update sparc framebuffer drivers to the new API.

<[email protected]> (03/09/17 1.1267.40.1)
Add new API framebuffer_alloc and framebuffer_release.

Framebuffer info structure (ie. struct fb_info) must be obtained from
framebuffer_alloc. When it is no longer needed (after unregister_framebuffer
and clean up) it can be released using framebuffer_release.

If the framebuffer is not registered yet (eg. on error path) then fb_info must
be released via kfree.

<[email protected]> (03/09/16 1.1267.1.16)
[MACH 64 FBDEV] Updated to new cursor api.

<jsimmons@debian.(none)> (03/09/14 1.1267.1.14)
[FBDEV} Final cursor api.

<[email protected]> (03/09/04 1.1153.146.5)
[FBDEV] Cleanup for Configuration of Mach64 driver.

<[email protected]> (03/09/04 1.1153.146.4)
[FBDEV] Fixed the cursor code. Also some cleanup with move_buf_*.

<[email protected]> (03/09/04 1.1153.146.3)
[FBDEV] Currcon removal. fbcon.c does this for us.

<[email protected]> (03/09/04 1.1153.146.2)
[FBDEV MODEDB] Better support for 1400x1050 modes.

<[email protected]> (03/08/21 1.1153.1.97)
[FBDEV] Removed currcon from low level drivers.

<[email protected]> (03/08/21 1.1153.1.96)
[FBDEV] Sysfs support.

<[email protected]> (03/08/18 1.1153.6.4)
[RIVA FBDEV] Finally cursor api is complete. A few bugs yet but now to start on other drivers.

<[email protected]> (03/08/15 1.1153.6.2)
[TDFX FBDEV] Fixed Interlace. Only for Banshee interlace wasn't supported.
Added Double scanline mode.
Fixed the foreground color value for tdfxfb_fillrect. For Truecolor modes we have to map the to the proper color value

<jsimmons@bohr.(none)> (03/08/11 1.1123.21.2)
[NEOMAGIC FBDEV] Add going between graphics and VGA text mode.

<[email protected]> (03/07/21 1.1046.416.32)
[TDFX FBDEV] Fixes to make the image blitter work. Also the color handling code was fixed.

<[email protected]> (03/07/15 1.1046.416.28)
[FBCON] Always turn off the cursor in fbcon_cursor. The reason is that cursor might try to blink while we are reprogramming the hardware.

<[email protected]> (03/07/11 1.1046.416.25)
[IMSTT FBDEV] Free up resources when it fails.

<[email protected]> (03/07/11 1.1046.416.24)
[FBDEV] Makefiel cleanups.

<[email protected]> (03/07/11 1.1046.416.23)
[ASILIANT FBDEV] Added support for the asiliant graphics chipset.

<[email protected]> (03/07/09 1.1046.416.18)
[RIVA FBDEV] Support for more versions of GEFORCE 4. Also some cursor cleanup to allow it to compile.

<[email protected]> (03/07/08 1.1046.416.15)
[SIS FBDEV] Updates to the SiS framebuffer driver. Add support for 760 chipset, LCD scaling.

<jsimmons@kozmo.(none)> (03/07/03 1.1046.416.12)
[NEOMAGIC FBDEV] Fixed a nasty bug in the copyarea function. It wasn't testing for the condition when both regions have the same y coordinates but are over lapping. This casued a corrpution of data. Also started ot used the macros in vga.h.

<jsimmons@kozmo.(none)> (03/06/30 1.1046.416.7)
[LOGO] Display the correct logo for MIPS DEC workstations.

<jsimmons@kozmo.(none)> (03/06/25 1.1046.416.1)
[FBCON] Removed the crappy ROP_COPY/ROP_XOR test for flashing the cursor. Now we disable and enable the cursor timer instead.

<jsimmons@kozmo.(none)> (03/06/24 1.1046.1.192)
[FBDEV] Now we can use a specific hardware mapper for different hardware functionality.

<jsimmons@kozmo.(none)> (03/06/23 1.1046.1.188)
[VGA CORE] Added needed vmalloc header.

<jsimmons@kozmo.(none)> (03/06/23 1.1046.1.185)
[FBCON] When using 512 characters, the mouse pointer starts using the wrong complement_mask after a console reset.

<jsimmons@kozmo.(none)> (03/06/23 1.1046.1.184)
[FBDEV] Made chipsfb/controlfb/platinumfb use the xxfb kernel command line string.

<[email protected]> (03/06/18 1.1046.1.180)
[MAC FBDEV] Bug fixes.

<[email protected]> (03/06/15 1.1046.1.176)
[SIS FBDEV] More updates for the SIS driver.

<[email protected]> (03/06/14 1.1046.1.174)
[CONTROL/PLATINUM FBDEV] Fix to match change in fb_set_var.

<[email protected]> (03/06/10 1.1046.1.170)
[FBDEV] Fixed a issue with soft_cursor. It only worked with drivers with a pixmap.scan_align of 1. Now it will work with any.

<jsimmons@kozmo.(none)> (03/06/07 1.1046.1.164)
[SIS FBDEV] Fixed sysnc issue.

<jsimmons@kozmo.(none)> (03/06/05 1.1046.1.160)
[FBCON] Cleared out the struct fb_cursor we passed in. Other wise we get random data being used.

<jsimmons@kozmo.(none)> (03/05/30 1.1046.1.155)
[FBDEV GENERIC ACCEL] Fixed why logo was not displayed for some.

<[email protected]> (03/05/24 1.1046.155.3)
[VALKYRUE FBDEV] Ported to new api.

<[email protected]> (03/05/23 1.1046.155.1)
[FBDEV] Updates to explain the new cursor api.

<[email protected]> (03/05/23 1.1046.1.142)
[EPSON FRAMEBUFFER] Ported to the new api. Added support for the arm platform.

<[email protected]> (03/05/15 1.1046.84.18)
[SIS FBDEV] SIS Framebuffer updates.
- Added preliminary and untested support for SiS660
- Added DDC support
- Enhanced proprietary programming API for compatibility with X driver
and upcoming SDL updates and upcoming vidix driver for mplayer
- Fixes for video bridge output on various HW combinations
- Fixes in TV detection
- Reduced source size by removing duplicated data
- Updated Kconfig descriptions

<[email protected]> (03/05/14 1.1046.73.2)
[PVR2 FBDEV] Port of the Dreamcast Frambuffer to the new api.

<[email protected]> (03/05/12 1.1046.7.19)
[FBCON] set_con2fb_map wasn't testing to see the VC we where mapping to actually exist. Now it does.

I add code to fbcon_cursor to reset the hotspot if it was changed by userland.

<[email protected]> (03/05/12 1.1046.7.17)
[RIVA FBDEV] Removal of exccess variable. Kills off a few warnings.

<[email protected]> (03/05/12 1.1046.7.16)
[VESA FBDEV] Removed the EDID code. The results where mixed. It worked for some but not for others.

<[email protected]> (03/05/12 1.1046.7.15)
[CONSOLE] This patch fixes the problem of not being able to set the fonts on VCs other than the first one. This also was the bug that was casuing dual head (vga and mda) to lock up.

<jsimmons@kozmo.(none)> (03/05/02 1.1042.122.2)
[FBDEV] Synced to kdev_t change.

<jsimmons@kozmo.(none)> (03/04/22 1.1042.37.2)
[FBDEV] Moved pixmap to the kernel side of the header. Will not be needed for ioctl calls at the present time.

[FBCON] Lots more optimizations.

<jsimmons@kozmo.(none)> (03/04/21 1.1042.37.1)
[LOGO] Removed fb_ prefix. Wil be used by other drivers such as the newport driver.

[G354 FBDEV] Now use the final cursor api.



2004-01-08 22:57:01

by Moritz Muehlenhoff

[permalink] [raw]
Subject: Re: New FBDev patch

In gmane.linux.kernel James Simmons wrote:
> This is the latest patch against 2.6.0-rc3. Give it a try.

Radeon 7500 (r100) with your patch on top of 2.6.1-rc3:
This fixes the "scheduling while atomic" oops when viewing a picture on
fbcon with fbi (recorded as #879, which I just marked as fixed). Thanks.

However, there's a regression with radeonfb: I get a slight visual corruption
with the cursor: It's a full white blinking block with some pixels left black.

2004-01-08 23:05:46

by Paul Mundt

[permalink] [raw]
Subject: Re: New FBDev patch

Hi James,

On Thu, Jan 08, 2004 at 10:03:54PM +0000, James Simmons wrote:
> This is the latest patch against 2.6.0-rc3. Give it a try.
>
> http://phoenix.infradead.org/~jsimmons/fbdev.diff.gz
>
> Here are the changes.
>
> drivers/video/pvr2fb.c | 846 -
[snip]
> <[email protected]> (03/05/14 1.1046.73.2)
> [PVR2 FBDEV] Port of the Dreamcast Frambuffer to the new api.
>
Please drop this from your patch, it re-introduces a number of parse
errors that I already fixed in the 2.6 tree.

On another note, I do have some more pvr2fb updates pending, but I'll send
these to you seperately.


Attachments:
(No filename) (624.00 B)
(No filename) (189.00 B)
Download all attachments

2004-01-08 23:13:35

by Tomas Szepe

[permalink] [raw]
Subject: Re: New FBDev patch

On Jan-08 2004, Thu, 22:03 +0000
James Simmons <[email protected]> wrote:

> This is the latest patch against 2.6.0-rc3. Give it a try.
> http://phoenix.infradead.org/~jsimmons/fbdev.diff.gz

GEN .version
CHK include/linux/compile.h
UPD include/linux/compile.h
CC init/version.o
LD init/built-in.o
LD .tmp_vmlinux1
drivers/built-in.o(.init.data+0x33c): undefined reference to adeonfb_setup'
make: *** [.tmp_vmlinux1] Error 1

CONFIG_FB=y
# CONFIG_FB_CIRRUS is not set
# CONFIG_FB_PM2 is not set
# CONFIG_FB_CYBER2000 is not set
# CONFIG_FB_IMSTT is not set
# CONFIG_FB_VGA16 is not set
CONFIG_FB_VESA=y
CONFIG_VIDEO_SELECT=y
# CONFIG_FB_HGA is not set
# CONFIG_FB_RIVA is not set
# CONFIG_FB_I810 is not set
# CONFIG_FB_MATROX is not set
CONFIG_FB_RADEON=y
# CONFIG_FB_ATY128 is not set
# CONFIG_FB_ATY is not set
# CONFIG_FB_SIS is not set
# CONFIG_FB_NEOMAGIC is not set
# CONFIG_FB_3DFX is not set
# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_TRIDENT is not set
# CONFIG_FB_PM3 is not set
# CONFIG_FB_VIRTUAL is not set

--
Tomas Szepe <[email protected]>

2004-01-08 23:26:25

by Russell King

[permalink] [raw]
Subject: Re: New FBDev patch

On Thu, Jan 08, 2004 at 10:03:54PM +0000, James Simmons wrote:
> This is the latest patch against 2.6.0-rc3. Give it a try.
>
> http://phoenix.infradead.org/~jsimmons/fbdev.diff.gz

This looks wrong (cyber2000fb.c):

@@ -1220,18 +1220,18 @@
}

static struct cfb_info * __devinit
-cyberpro_alloc_fb_info(unsigned int id, char *name)
+cyberpro_alloc_fb_info(unsigned int id, char *name, struct device *dev)
{
struct cfb_info *cfb;
+ struct fb_info *fb_info;

- cfb = kmalloc(sizeof(struct cfb_info) +
- sizeof(u32) * 16, GFP_KERNEL);
+ fb_info = framebuffer_alloc(sizeof(struct cfb_info) + 32 * 16, dev);

sizeof(u32) != 32. Proper fix is to place the pseudopalette array
inside cfb_info, and dispense with this addition here.

I could supply a patch, but I'll wait for this to be merged before
I fix this up.

--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of: 2.6 PCMCIA - http://pcmcia.arm.linux.org.uk/
2.6 Serial core

2004-01-09 00:35:27

by James Simmons

[permalink] [raw]
Subject: Re: New FBDev patch



Try it again. I missed a patch for the radeon.


2004-01-09 11:27:35

by Andreas Theofilu

[permalink] [raw]
Subject: Re: New FBDev patch

James Simmons wrote:

>
>
> Try it again. I missed a patch for the radeon.
>
This is what happens here:

CC drivers/video/aty/radeon_base.o
drivers/video/aty/radeon_base.c: In function `radeon_find_mem_vbios':
drivers/video/aty/radeon_base.c:522: `rom' undeclared (first use in this
function)
drivers/video/aty/radeon_base.c:522: (Each undeclared identifier is reported
only once
drivers/video/aty/radeon_base.c:522: for each function it appears in.)
make[3]: *** [drivers/video/aty/radeon_base.o] Error 1
make[2]: *** [drivers/video/aty] Error 2
make[1]: *** [drivers/video] Error 2
make: *** [drivers] Error 2

--
Andreas Theofilu
http://www.TheosSoft.net
E-Mail: andreas at TheosSoft dot net

2004-01-09 14:14:18

by Benjamin Herrenschmidt

[permalink] [raw]
Subject: Re: New FBDev patch

On Fri, 2004-01-09 at 22:27, Andreas Theofilu wrote:
> James Simmons wrote:
>
> >
> >
> > Try it again. I missed a patch for the radeon.
> >
> This is what happens here:

Looks like James cloned my tree right at the wrong time :)

This is fixed in the current one. In the meantime, change
"rom" with "rom_base"

Ben.


2004-01-09 17:17:21

by Luca

[permalink] [raw]
Subject: Re: [Linux-fbdev-devel] New FBDev patch

Il Thu, Jan 08, 2004 at 10:03:54PM +0000, James Simmons ha scritto:
>
> This is the latest patch against 2.6.0-rc3. Give it a try.
>
> http://phoenix.infradead.org/~jsimmons/fbdev.diff.gz

> <[email protected]> (03/09/17 1.1267.40.1)
> Add new API framebuffer_alloc and framebuffer_release.
>
> Framebuffer info structure (ie. struct fb_info) must be obtained from
> framebuffer_alloc. When it is no longer needed (after unregister_framebuffer
> and clean up) it can be released using framebuffer_release.
>
> If the framebuffer is not registered yet (eg. on error path) then fb_info must
> be released via kfree.


Are we sure that we want this for 2.6? Greg KH has a much less intrusive
patch, maybe you should take that instead and keep my work 2.7.

If you decide to go with framebuffer_alloc then I have more patches for
you ;)

Luca
--
Reply-To: [email protected]
Home: http://kronoz.cjb.net
I went to God just to see
And I was looking at me
Saw heaven and hell were lies
When I'm God everyone dies

2004-01-09 19:54:56

by James Simmons

[permalink] [raw]
Subject: Re: New FBDev patch


> > This is the latest patch against 2.6.0-rc3. Give it a try.
> >
> > http://phoenix.infradead.org/~jsimmons/fbdev.diff.gz
>
> This looks wrong (cyber2000fb.c):

Yeap it is. Typo.

> sizeof(u32) != 32. Proper fix is to place the pseudopalette array
> inside cfb_info, and dispense with this addition here.

You have to make sure the struct fb_info pseudopalette points to the data
in cfb_info. Actually only drivers should allocate the pseudopalette at
boot time if the hardware doesn't support mode change. In the other case
the pseudopalette should be allocated in set_par.


2004-01-09 20:07:00

by James Simmons

[permalink] [raw]
Subject: Re: [Linux-fbdev-devel] New FBDev patch



> > http://phoenix.infradead.org/~jsimmons/fbdev.diff.gz
>
> > <[email protected]> (03/09/17 1.1267.40.1)
> > Add new API framebuffer_alloc and framebuffer_release.
> >
> > Framebuffer info structure (ie. struct fb_info) must be obtained from
> > framebuffer_alloc. When it is no longer needed (after unregister_framebuffer
> > and clean up) it can be released using framebuffer_release.
> >
> > If the framebuffer is not registered yet (eg. on error path) then fb_info must
> > be released via kfree.
>
>
> Are we sure that we want this for 2.6? Greg KH has a much less intrusive
> patch, maybe you should take that instead and keep my work 2.7.
>
> If you decide to go with framebuffer_alloc then I have more patches for
> you ;)

I have been using it for awhile on various cards.


2004-01-11 12:09:13

by Russell King

[permalink] [raw]
Subject: Re: New FBDev patch

On Fri, Jan 09, 2004 at 07:54:50PM +0000, James Simmons wrote:
> > sizeof(u32) != 32. Proper fix is to place the pseudopalette array
> > inside cfb_info, and dispense with this addition here.
>
> You have to make sure the struct fb_info pseudopalette points to the data
> in cfb_info. Actually only drivers should allocate the pseudopalette at
> boot time if the hardware doesn't support mode change. In the other case
> the pseudopalette should be allocated in set_par.

I respectfully disagree. It is not possible to error out of the set_par()
function - for instance, fb_set_var() contains this code:

if (info->fbops->fb_set_par)
info->fbops->fb_set_par(info);

There isn't any error return checking (so why does fb_set_par return an
int when it isn't used? It's fairly misleading.)

This all means that if the allocation of the pseudo_palette in set_par
fails, there's no way to abort the mode change - you _will_ oops in the
other fbcon layers due to a NULL pseudo_palette pointer.

Plus, we're only talking about an array of 16 32-bit words or 64 bytes.
That's hardly worth the extra code complexity to separately dynamically
allocate.

--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of: 2.6 PCMCIA - http://pcmcia.arm.linux.org.uk/
2.6 Serial core