[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
|
||||
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
|
||||
tristate "Virtual Frame Buffer support (ONLY FOR TESTING!)"
|
||||
depends on FB
|
||||
|
|
|
@ -97,6 +97,7 @@ obj-$(CONFIG_FB_S3C2410) += s3c2410fb.o
|
|||
obj-$(CONFIG_FB_PNX4008_DUM) += pnx4008/
|
||||
obj-$(CONFIG_FB_PNX4008_DUM_RGB) += pnx4008/
|
||||
obj-$(CONFIG_FB_IBM_GXT4500) += gxt4500.o
|
||||
obj-$(CONFIG_FB_PS3) += ps3fb.o
|
||||
|
||||
# Platform or fallback drivers go here
|
||||
obj-$(CONFIG_FB_VESA) += vesafb.o
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -23,6 +23,7 @@ header-y += linkage.h
|
|||
header-y += resource.h
|
||||
header-y += sigcontext.h
|
||||
header-y += statfs.h
|
||||
header-y += ps3fb.h
|
||||
|
||||
unifdef-y += a.out.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_ */
|
Загрузка…
Ссылка в новой задаче