Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cffb4add authored by Jim Paris's avatar Jim Paris Committed by Benjamin Herrenschmidt
Browse files

mtd/ps3vram: Add ps3vram driver for accessing video RAM as MTD



Add ps3vram driver, which exposes unused video RAM on the PS3 as a MTD
device suitable for storage or swap.  Fast data transfer is achieved
using a local cache in system RAM and DMA transfers via the GPU.

Signed-off-by: default avatarVivien Chappelier <vivien.chappelier@free.fr>
Signed-off-by: default avatarJim Paris <jim@jtan.com>
Acked-by: default avatarGeoff Levand <geoffrey.levand@am.sony.com>
Acked-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent d2b4397b
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -3484,6 +3484,12 @@ L: linuxppc-dev@ozlabs.org
L:	cbe-oss-dev@ozlabs.org
S:	Supported

PS3VRAM DRIVER
P:	Jim Paris
M:	jim@jtan.com
L:	cbe-oss-dev@ozlabs.org
S:	Maintained

PVRUSB2 VIDEO4LINUX DRIVER
P:	Mike Isely
M:	isely@pobox.com
+1 −0
Original line number Diff line number Diff line
@@ -320,6 +320,7 @@ enum ps3_match_id {

enum ps3_match_sub_id {
	PS3_MATCH_SUB_ID_GPU_FB		= 1,
	PS3_MATCH_SUB_ID_GPU_RAMDISK	= 2,
};

#define PS3_MODULE_ALIAS_EHCI		"ps3:1:0"
+37 −0
Original line number Diff line number Diff line
@@ -518,6 +518,41 @@ fail_device_register:
	return result;
}

static int __init ps3_register_ramdisk_device(void)
{
	int result;
	struct layout {
		struct ps3_system_bus_device dev;
	} *p;

	pr_debug(" -> %s:%d\n", __func__, __LINE__);

	p = kzalloc(sizeof(struct layout), GFP_KERNEL);

	if (!p)
		return -ENOMEM;

	p->dev.match_id = PS3_MATCH_ID_GPU;
	p->dev.match_sub_id = PS3_MATCH_SUB_ID_GPU_RAMDISK;
	p->dev.dev_type = PS3_DEVICE_TYPE_IOC0;

	result = ps3_system_bus_device_register(&p->dev);

	if (result) {
		pr_debug("%s:%d ps3_system_bus_device_register failed\n",
			__func__, __LINE__);
		goto fail_device_register;
	}

	pr_debug(" <- %s:%d\n", __func__, __LINE__);
	return 0;

fail_device_register:
	kfree(p);
	pr_debug(" <- %s:%d failed\n", __func__, __LINE__);
	return result;
}

/**
 * ps3_setup_dynamic_device - Setup a dynamic device from the repository
 */
@@ -946,6 +981,8 @@ static int __init ps3_register_devices(void)

	ps3_register_lpm_devices();

	ps3_register_ramdisk_device();

	pr_debug(" <- %s:%d\n", __func__, __LINE__);
	return 0;
}
+7 −0
Original line number Diff line number Diff line
@@ -120,6 +120,13 @@ config MTD_PHRAM
	  doesn't have access to, memory beyond the mem=xxx limit, nvram,
	  memory on the video card, etc...

config MTD_PS3VRAM
	tristate "PS3 video RAM"
	depends on FB_PS3
	help
	  This driver allows you to use excess PS3 video RAM as volatile
	  storage or system swap.

config MTD_LART
	tristate "28F160xx flash driver for LART"
	depends on SA1100_LART
+1 −0
Original line number Diff line number Diff line
@@ -16,3 +16,4 @@ obj-$(CONFIG_MTD_LART) += lart.o
obj-$(CONFIG_MTD_BLOCK2MTD)	+= block2mtd.o
obj-$(CONFIG_MTD_DATAFLASH)	+= mtd_dataflash.o
obj-$(CONFIG_MTD_M25P80)	+= m25p80.o
obj-$(CONFIG_MTD_PS3VRAM)	+= ps3vram.o
Loading