Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 104818
b: refs/heads/master
c: 9a23409
h: refs/heads/master
v: v3
  • Loading branch information
Maxim Shchetynin authored and Benjamin Herrenschmidt committed Jul 22, 2008
1 parent 55c0360 commit 9a0a42c
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 9 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 18ad7a61e1b700dfe177fabf1c350b4f5d4da8ac
refs/heads/master: 9a23409b69440e76d34dc23846cae44f46f60d98
23 changes: 15 additions & 8 deletions trunk/arch/powerpc/sysdev/axonram.c
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@
#define AXON_RAM_SECTOR_SIZE 1 << AXON_RAM_SECTOR_SHIFT
#define AXON_RAM_IRQ_FLAGS IRQF_SHARED | IRQF_TRIGGER_RISING

static int azfs_major, azfs_minor;

struct axon_ram_bank {
struct of_device *device;
struct gendisk *disk;
Expand Down Expand Up @@ -227,19 +229,14 @@ axon_ram_probe(struct of_device *device, const struct of_device_id *device_id)
goto failed;
}

bank->disk->first_minor = 0;
bank->disk->major = azfs_major;
bank->disk->first_minor = azfs_minor;
bank->disk->fops = &axon_ram_devops;
bank->disk->private_data = bank;
bank->disk->driverfs_dev = &device->dev;

sprintf(bank->disk->disk_name, "%s%d",
AXON_RAM_DEVICE_NAME, axon_ram_bank_id);
bank->disk->major = register_blkdev(0, bank->disk->disk_name);
if (bank->disk->major < 0) {
dev_err(&device->dev, "Cannot register block device\n");
rc = -EFAULT;
goto failed;
}

bank->disk->queue = blk_alloc_queue(GFP_KERNEL);
if (bank->disk->queue == NULL) {
Expand Down Expand Up @@ -276,6 +273,8 @@ axon_ram_probe(struct of_device *device, const struct of_device_id *device_id)
goto failed;
}

azfs_minor += bank->disk->minors;

return 0;

failed:
Expand Down Expand Up @@ -310,7 +309,6 @@ axon_ram_remove(struct of_device *device)

device_remove_file(&device->dev, &dev_attr_ecc);
free_irq(bank->irq_id, device);
unregister_blkdev(bank->disk->major, bank->disk->disk_name);
del_gendisk(bank->disk);
iounmap((void __iomem *) bank->io_addr);
kfree(bank);
Expand Down Expand Up @@ -341,6 +339,14 @@ static struct of_platform_driver axon_ram_driver = {
static int __init
axon_ram_init(void)
{
azfs_major = register_blkdev(azfs_major, AXON_RAM_DEVICE_NAME);
if (azfs_major < 0) {
printk(KERN_ERR "%s cannot become block device major number\n",
AXON_RAM_MODULE_NAME);
return -EFAULT;
}
azfs_minor = 0;

return of_register_platform_driver(&axon_ram_driver);
}

Expand All @@ -351,6 +357,7 @@ static void __exit
axon_ram_exit(void)
{
of_unregister_platform_driver(&axon_ram_driver);
unregister_blkdev(azfs_major, AXON_RAM_DEVICE_NAME);
}

module_init(axon_ram_init);
Expand Down

0 comments on commit 9a0a42c

Please sign in to comment.