summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-10-08 13:36:23 +0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-10-08 13:36:23 +0400
commitf8e4fae2e79d2d293fc490ede87be44c9b215d9e (patch)
tree6489b56cf3ccc5e9a1714f0d274349d509475ae9 /drivers
parent6325e940e7e0c690c6bdfaf5d54309e71845d3d9 (diff)
parent78410af51146796f783925009c8676a30d6c6d90 (diff)
downloadlinux-f8e4fae2e79d2d293fc490ede87be44c9b215d9e.tar.xz
Merge git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile
Pull arch/tile updates from Chris Metcalf: "The only substantive pieces in this batch are some more vDSO support, and removing the reference to &platform_bus in tile-srom.c. The rest are minor issues reported to me" * git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile: tile: add clock_gettime support to vDSO tile: switch to using seqlocks for the vDSO time code tile gxio: use better string copy primitive char: tile-srom: Add real platform bus parent Removed repeated word in comments tilegx: Enable ARCH_SUPPORTS_ATOMIC_RMW tile: Remove tile-specific _sinitdata and _einitdata tile: use ARRAY_SIZE
Diffstat (limited to 'drivers')
-rw-r--r--drivers/char/tile-srom.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/char/tile-srom.c b/drivers/char/tile-srom.c
index bd377472dcfb..02e76ac6d282 100644
--- a/drivers/char/tile-srom.c
+++ b/drivers/char/tile-srom.c
@@ -76,6 +76,7 @@ MODULE_LICENSE("GPL");
static int srom_devs; /* Number of SROM partitions */
static struct cdev srom_cdev;
+static struct platform_device *srom_parent;
static struct class *srom_class;
static struct srom_dev *srom_devices;
@@ -350,7 +351,7 @@ static int srom_setup_minor(struct srom_dev *srom, int index)
SROM_PAGE_SIZE_OFF, sizeof(srom->page_size)) < 0)
return -EIO;
- dev = device_create(srom_class, &platform_bus,
+ dev = device_create(srom_class, &srom_parent->dev,
MKDEV(srom_major, index), srom, "%d", index);
return PTR_ERR_OR_ZERO(dev);
}
@@ -415,6 +416,13 @@ static int srom_init(void)
if (result < 0)
goto fail_chrdev;
+ /* Create a parent device */
+ srom_parent = platform_device_register_simple("srom", -1, NULL, 0);
+ if (IS_ERR(srom_parent)) {
+ result = PTR_ERR(srom_parent);
+ goto fail_pdev;
+ }
+
/* Create a sysfs class. */
srom_class = class_create(THIS_MODULE, "srom");
if (IS_ERR(srom_class)) {
@@ -438,6 +446,8 @@ fail_class:
device_destroy(srom_class, MKDEV(srom_major, i));
class_destroy(srom_class);
fail_cdev:
+ platform_device_unregister(srom_parent);
+fail_pdev:
cdev_del(&srom_cdev);
fail_chrdev:
unregister_chrdev_region(dev, srom_devs);
@@ -454,6 +464,7 @@ static void srom_cleanup(void)
device_destroy(srom_class, MKDEV(srom_major, i));
class_destroy(srom_class);
cdev_del(&srom_cdev);
+ platform_device_unregister(srom_parent);
unregister_chrdev_region(MKDEV(srom_major, 0), srom_devs);
kfree(srom_devices);
}