|
@@ -565,6 +565,42 @@ static void dummy_sysfs_dev_release(struct device *dev)
|
|
|
{
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
+ * extcon_dev_allocate() - Allocate the memory of extcon device.
|
|
|
+ * @supported_cable: Array of supported cable names ending with NULL.
|
|
|
+ * If supported_cable is NULL, cable name related APIs
|
|
|
+ * are disabled.
|
|
|
+ *
|
|
|
+ * This function allocates the memory for extcon device without allocating
|
|
|
+ * memory in each extcon provider driver and initialize default setting for
|
|
|
+ * extcon device.
|
|
|
+ *
|
|
|
+ * Return the pointer of extcon device if success or ERR_PTR(err) if fail
|
|
|
+ */
|
|
|
+struct extcon_dev *extcon_dev_allocate(const char **supported_cable)
|
|
|
+{
|
|
|
+ struct extcon_dev *edev;
|
|
|
+
|
|
|
+ edev = kzalloc(sizeof(*edev), GFP_KERNEL);
|
|
|
+ if (!edev)
|
|
|
+ return ERR_PTR(-ENOMEM);
|
|
|
+
|
|
|
+ edev->max_supported = 0;
|
|
|
+ edev->supported_cable = supported_cable;
|
|
|
+
|
|
|
+ return edev;
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+ * extcon_dev_free() - Free the memory of extcon device.
|
|
|
+ * @edev: the extcon device to free
|
|
|
+ */
|
|
|
+void extcon_dev_free(struct extcon_dev *edev)
|
|
|
+{
|
|
|
+ kfree(edev);
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(extcon_dev_free);
|
|
|
+
|
|
|
/**
|
|
|
* extcon_dev_register() - Register a new extcon device
|
|
|
* @edev : the new extcon device (should be allocated before calling)
|