diff --git a/drivers/extcon/extcon-class.c b/drivers/extcon/extcon-class.c
index 60adc04..533d10f 100644
--- a/drivers/extcon/extcon-class.c
+++ b/drivers/extcon/extcon-class.c
@@ -545,6 +545,36 @@
 }
 EXPORT_SYMBOL_GPL(extcon_unregister_notifier);
 
+/**
+ * extcon_cable_set_data() - Set the data structure for a cable
+ * @edev:	the extcon device
+ * @cable_index:	the cable index of the correspondant
+ * @type:	type of the data structure
+ * @data:
+ */
+void extcon_cable_set_data(struct extcon_dev *edev, int cable_index,
+			   enum extcon_cable_type type,
+			   union extcon_cable_data data)
+{
+	edev->cables[cable_index].type = type;
+	edev->cables[cable_index].data = data;
+}
+
+/**
+ * extcon_cable_get_data() - Get the data structure for a cable
+ * @edev:	the extcon device
+ * @cable_index:	the cable index of the correspondant
+ * @type:	type of the data structure
+ * @data:	the corresponding data structure (e.g., regulator)
+ */
+void extcon_cable_get_data(struct extcon_dev *edev, int cable_index,
+			   enum extcon_cable_type *type,
+			   union extcon_cable_data *data)
+{
+	*type = edev->cables[cable_index].type;
+	*data = edev->cables[cable_index].data;
+}
+
 static struct device_attribute extcon_attrs[] = {
 	__ATTR(state, S_IRUGO | S_IWUSR, state_show, state_store),
 	__ATTR_RO(name),
diff --git a/include/linux/extcon.h b/include/linux/extcon.h
index fcb51c8..e107d32 100644
--- a/include/linux/extcon.h
+++ b/include/linux/extcon.h
@@ -27,6 +27,11 @@
 #include <linux/notifier.h>
 #include <linux/sysfs.h>
 
+/* For the cable types */
+#include <linux/regulator/consumer.h>
+#include <linux/power_supply.h>
+#include <linux/power/charger-manager.h>
+
 #define SUPPORTED_CABLE_MAX	32
 #define CABLE_NAME_MAX		30
 
@@ -137,6 +142,21 @@
 	struct device_attribute *d_attrs_muex;
 };
 
+enum extcon_cable_type {
+	EXTCON_CT_NONE = 0,
+	EXTCON_CT_REGULATOR,
+	EXTCON_CT_PSY,
+	EXTCON_CT_CHARGER_MANAGER,
+	/* Please add other related standards when needed */
+};
+
+union extcon_cable_data {
+	struct regualtor *reg;	/* EXTCON_CT_REGULATOR */
+	struct power_supply *psy; /* EXTCON_CT_PSY */
+	struct charger_cable *charger; /* EXTCON_CT_CHARGER_MANAGER */
+	/* Please add accordingly with enum extcon_cable_type */
+};
+
 /**
  * struct extcon_cable	- An internal data for each cable of extcon device.
  * @edev:	The extcon device
@@ -145,6 +165,8 @@
  * @attr_name:	"name" sysfs entry
  * @attr_state:	"state" sysfs entry
  * @attrs:	Array pointing to attr_name and attr_state for attr_g
+ * @type:	The type of @data.
+ * @data:	The data structure representing the status and states of this cable.
  */
 struct extcon_cable {
 	struct extcon_dev *edev;
@@ -155,6 +177,9 @@
 	struct device_attribute attr_state;
 
 	struct attribute *attrs[3]; /* to be fed to attr_g.attrs */
+
+	enum extcon_cable_type type;
+	union extcon_cable_data data;
 };
 
 /**
@@ -185,6 +210,17 @@
 extern struct extcon_dev *extcon_get_extcon_dev(const char *extcon_name);
 
 /*
+ * Following APIs are for managing the status and states of each cable.
+ * For example, if a cable is represented as a regulator, then the cable
+ * may have struct regulator as its data.
+ */
+extern void extcon_cable_set_data(struct extcon_dev *edev, int cable_index,
+				  enum extcon_cable_type type,
+				  union extcon_cable_data data);
+extern void extcon_cable_get_data(struct extcon_dev *edev, int cable_index,
+				  enum extcon_cable_type *type,
+				  union extcon_cable_data *data);
+/*
  * get/set/update_state access the 32b encoded state value, which represents
  * states of all possible cables of the multistate port. For example, if one
  * calls extcon_set_state(edev, 0x7), it may mean that all the three cables
@@ -246,6 +282,14 @@
 
 static inline void extcon_dev_unregister(struct extcon_dev *edev) { }
 
+static void extcon_cable_set_data(struct extcon_dev *edev, int cable_index,
+				 enum extcon_cable_type type,
+				 union extcon_cable_data data) { }
+
+static void extcon_cable_get_data(struct extcon_dev *edev, int cable_index,
+				 enum extcon_cable_type *type,
+				 union extcon_cable_data *data) { }
+
 static inline u32 extcon_get_state(struct extcon_dev *edev)
 {
 	return 0;
