[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:
Родитель
fbdb3e5be3
Коммит
310d8c1112
|
@ -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
|
||||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -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_ */
|
Загрузка…
Ссылка в новой задаче