[PATCH] ps3: Virtual Frame Buffer Driver

Add the PS3 Virtual Frame Buffer Driver.

As the actual graphics hardware cannot be accessed directly by Linux, ps3fb
uses a virtual frame buffer in main memory.  The actual screen image is copied
to graphics memory by the GPU on every vertical blank, by making a hypervisor
call.

Signed-off-by: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
Cc: James Simmons <jsimmons@infradead.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Geert Uytterhoeven 2007-02-12 00:55:23 -08:00 коммит произвёл Linus Torvalds
Родитель fbdb3e5be3
Коммит 310d8c1112
5 изменённых файлов: 1295 добавлений и 0 удалений

Просмотреть файл

@ -1598,6 +1598,26 @@ config FB_IBM_GXT4500
Say Y here to enable support for the IBM GXT4500P display Say Y here to enable support for the IBM GXT4500P display
adaptor, found on some IBM System P (pSeries) machines. adaptor, found on some IBM System P (pSeries) machines.
config FB_PS3
bool "PS3 GPU framebuffer driver"
depends on FB && PPC_PS3
select PS3_PS3AV
select FB_CFB_FILLRECT
select FB_CFB_COPYAREA
select FB_CFB_IMAGEBLIT
---help---
Include support for the virtual frame buffer in the PS3 platform.
config FB_PS3_DEFAULT_SIZE_M
int "PS3 default frame buffer size (in MiB)"
depends on FB_PS3
default 18
---help---
This is the default size (in MiB) of the virtual frame buffer in
the PS3.
The default value can be overridden on the kernel command line
using the "ps3fb" option (e.g. "ps3fb=9M");
config FB_VIRTUAL config FB_VIRTUAL
tristate "Virtual Frame Buffer support (ONLY FOR TESTING!)" tristate "Virtual Frame Buffer support (ONLY FOR TESTING!)"
depends on FB depends on FB

Просмотреть файл

@ -97,6 +97,7 @@ obj-$(CONFIG_FB_S3C2410) += s3c2410fb.o
obj-$(CONFIG_FB_PNX4008_DUM) += pnx4008/ obj-$(CONFIG_FB_PNX4008_DUM) += pnx4008/
obj-$(CONFIG_FB_PNX4008_DUM_RGB) += pnx4008/ obj-$(CONFIG_FB_PNX4008_DUM_RGB) += pnx4008/
obj-$(CONFIG_FB_IBM_GXT4500) += gxt4500.o obj-$(CONFIG_FB_IBM_GXT4500) += gxt4500.o
obj-$(CONFIG_FB_PS3) += ps3fb.o
# Platform or fallback drivers go here # Platform or fallback drivers go here
obj-$(CONFIG_FB_VESA) += vesafb.o obj-$(CONFIG_FB_VESA) += vesafb.o

1229
drivers/video/ps3fb.c Normal file

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -23,6 +23,7 @@ header-y += linkage.h
header-y += resource.h header-y += resource.h
header-y += sigcontext.h header-y += sigcontext.h
header-y += statfs.h header-y += statfs.h
header-y += ps3fb.h
unifdef-y += a.out.h unifdef-y += a.out.h
unifdef-y += asm-compat.h unifdef-y += asm-compat.h

Просмотреть файл

@ -0,0 +1,44 @@
/*
* Copyright (C) 2006 Sony Computer Entertainment Inc.
* Copyright 2006, 2007 Sony Corporation
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published
* by the Free Software Foundation; version 2 of the License.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef _ASM_POWERPC_PS3FB_H_
#define _ASM_POWERPC_PS3FB_H_
#include <linux/ioctl.h>
/* ioctl */
#define PS3FB_IOCTL_SETMODE _IOW('r', 1, int) /* set video mode */
#define PS3FB_IOCTL_GETMODE _IOR('r', 2, int) /* get video mode */
#define PS3FB_IOCTL_SCREENINFO _IOR('r', 3, int) /* get screen info */
#define PS3FB_IOCTL_ON _IO('r', 4) /* use IOCTL_FSEL */
#define PS3FB_IOCTL_OFF _IO('r', 5) /* return to normal-flip */
#define PS3FB_IOCTL_FSEL _IOW('r', 6, int) /* blit and flip request */
#ifndef FBIO_WAITFORVSYNC
#define FBIO_WAITFORVSYNC _IOW('F', 0x20, __u32) /* wait for vsync */
#endif
struct ps3fb_ioctl_res {
__u32 xres; /* frame buffer x_size */
__u32 yres; /* frame buffer y_size */
__u32 xoff; /* margine x */
__u32 yoff; /* margine y */
__u32 num_frames; /* num of frame buffers */
};
#endif /* _ASM_POWERPC_PS3FB_H_ */