]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - include/linux/platform_device.h
vfs: remove unused MNT_STRICTATIME
[karo-tx-linux.git] / include / linux / platform_device.h
index 5417944d3687758bdfbb286633457258fd88a913..d7ecad0093bbd6767fdd3ed7df03bf249a9de9a0 100644 (file)
@@ -43,10 +43,64 @@ extern struct resource *platform_get_resource_byname(struct platform_device *, u
 extern int platform_get_irq_byname(struct platform_device *, const char *);
 extern int platform_add_devices(struct platform_device **, int);
 
-extern struct platform_device *platform_device_register_simple(const char *, int id,
-                                       const struct resource *, unsigned int);
-extern struct platform_device *platform_device_register_data(struct device *,
-               const char *, int, const void *, size_t);
+extern struct platform_device *platform_device_register_resndata(
+               struct device *parent, const char *name, int id,
+               const struct resource *res, unsigned int num,
+               const void *data, size_t size);
+
+/**
+ * platform_device_register_simple - add a platform-level device and its resources
+ * @name: base name of the device we're adding
+ * @id: instance id
+ * @res: set of resources that needs to be allocated for the device
+ * @num: number of resources
+ *
+ * This function creates a simple platform device that requires minimal
+ * resource and memory management. Canned release function freeing memory
+ * allocated for the device allows drivers using such devices to be
+ * unloaded without waiting for the last reference to the device to be
+ * dropped.
+ *
+ * This interface is primarily intended for use with legacy drivers which
+ * probe hardware directly.  Because such drivers create sysfs device nodes
+ * themselves, rather than letting system infrastructure handle such device
+ * enumeration tasks, they don't fully conform to the Linux driver model.
+ * In particular, when such drivers are built as modules, they can't be
+ * "hotplugged".
+ *
+ * Returns &struct platform_device pointer on success, or ERR_PTR() on error.
+ */
+static inline struct platform_device *platform_device_register_simple(
+               const char *name, int id,
+               const struct resource *res, unsigned int num)
+{
+       return platform_device_register_resndata(NULL, name, id,
+                       res, num, NULL, 0);
+}
+
+/**
+ * platform_device_register_data - add a platform-level device with platform-specific data
+ * @parent: parent device for the device we're adding
+ * @name: base name of the device we're adding
+ * @id: instance id
+ * @data: platform specific data for this platform device
+ * @size: size of platform specific data
+ *
+ * This function creates a simple platform device that requires minimal
+ * resource and memory management. Canned release function freeing memory
+ * allocated for the device allows drivers using such devices to be
+ * unloaded without waiting for the last reference to the device to be
+ * dropped.
+ *
+ * Returns &struct platform_device pointer on success, or ERR_PTR() on error.
+ */
+static inline struct platform_device *platform_device_register_data(
+               struct device *parent, const char *name, int id,
+               const void *data, size_t size)
+{
+       return platform_device_register_resndata(parent, name, id,
+                       NULL, 0, data, size);
+}
 
 extern struct platform_device *platform_device_alloc(const char *name, int id);
 extern int platform_device_add_resources(struct platform_device *pdev,