diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2009-04-22 23:39:27 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2009-07-21 16:41:44 +0200 |
commit | a2b7cd183bad9c9e0888ce62f5ae0f83c070cc2a (patch) | |
tree | 556535cae729eac244edff816476cab281c6be7b /commands/mem.c | |
parent | 6411c3b2be40bb295520db2e9f6f891873a48b1a (diff) | |
download | barebox-a2b7cd183bad9c9e0888ce62f5ae0f83c070cc2a.tar.gz barebox-a2b7cd183bad9c9e0888ce62f5ae0f83c070cc2a.tar.xz |
introduce cdev
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'commands/mem.c')
-rw-r--r-- | commands/mem.c | 67 |
1 files changed, 34 insertions, 33 deletions
diff --git a/commands/mem.c b/commands/mem.c index fae53156fb..ee09ed0303 100644 --- a/commands/mem.c +++ b/commands/mem.c @@ -518,44 +518,46 @@ U_BOOT_CMD_START(memcpy) U_BOOT_CMD_HELP(cmd_memcpy_help) U_BOOT_CMD_END -static struct device_d mem_dev = { - .name = "mem", - .id = "mem", - .map_base = 0, - .size = ~0, /* FIXME: should be 0x100000000, ahem... */ +static struct file_operations memops = { + .read = mem_read, + .write = mem_write, + .memmap = generic_memmap_rw, + .lseek = dev_lseek_default, }; +static int mem_probe(struct device_d *dev) +{ + struct memory_platform_data *pdata = dev->platform_data; + struct cdev *cdev; + + cdev = xzalloc(sizeof (*cdev)); + dev->priv = cdev; + + cdev->name = pdata->name; + cdev->size = dev->size; + cdev->ops = &memops; + cdev->dev = dev; + + devfs_create(cdev); + + return 0; +} + static struct driver_d mem_drv = { .name = "mem", - .probe = dummy_probe, - .open = dev_open_default, - .close = dev_close_default, - .read = mem_read, - .write = mem_write, - .memmap = mem_memmap, - .lseek = dev_lseek_default, + .probe = mem_probe, }; -static struct driver_d ram_drv = { - .name = "ram", - .probe = dummy_probe, - .open = dev_open_default, - .close = dev_close_default, - .read = mem_read, - .write = mem_write, - .lseek = dev_lseek_default, - .memmap = mem_memmap, - .type = DEVICE_TYPE_DRAM, +static struct memory_platform_data mem_dev_pdata = { + .name = "mem", + .flags = DEVFS_RDWR, }; -static struct driver_d rom_drv = { - .name = "rom", - .probe = dummy_probe, - .open = dev_open_default, - .close = dev_close_default, - .read = mem_read, - .memmap = mem_memmap, - .lseek = dev_lseek_default, +static struct device_d mem_dev = { + .name = "mem", + .map_base = 0, + .size = ~0, /* FIXME: should be 0x100000000, ahem... */ + .platform_data = &mem_dev_pdata, }; static int mem_init(void) @@ -566,10 +568,9 @@ static int mem_init(void) return -1; } - register_device(&mem_dev); register_driver(&mem_drv); - register_driver(&ram_drv); - register_driver(&rom_drv); + register_device(&mem_dev); + return 0; } |