Merge tag 'pinctrl-v4.9-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw...
[linux-2.6-block.git] / include / linux / extcon.h
index 4fa37385c97a715e0b476f59e96738766c6c0a4b..b871c0cb1f02b277df53f835a1d51fe3c99fff28 100644 (file)
@@ -53,6 +53,7 @@
 #define EXTCON_CHG_USB_ACA     8       /* Accessory Charger Adapter */
 #define EXTCON_CHG_USB_FAST    9
 #define EXTCON_CHG_USB_SLOW    10
+#define EXTCON_CHG_WPT         11      /* Wireless Power Transfer */
 
 /* Jack external connector */
 #define EXTCON_JACK_MICROPHONE 20
@@ -69,6 +70,8 @@
 #define EXTCON_DISP_MHL                41      /* Mobile High-Definition Link */
 #define EXTCON_DISP_DVI                42      /* Digital Visual Interface */
 #define EXTCON_DISP_VGA                43      /* Video Graphics Array */
+#define EXTCON_DISP_DP         44      /* Display Port */
+#define EXTCON_DISP_HMD                45      /* Head-Mounted Display */
 
 /* Miscellaneous external connector */
 #define EXTCON_DOCK            60
  * @type:      integer (intval)
  * @value:     0 (low) or 1 (high)
  * @default:   0 (low)
+ * - EXTCON_PROP_USB_TYPEC_POLARITY
+ * @type:      integer (intval)
+ * @value:     0 (normal) or 1 (flip)
+ * @default:   0 (normal)
+ * - EXTCON_PROP_USB_SS (SuperSpeed)
+ * @type:       integer (intval)
+ * @value:      0 (USB/USB2) or 1 (USB3)
+ * @default:    0 (USB/USB2)
+ *
  */
 #define EXTCON_PROP_USB_VBUS           0
+#define EXTCON_PROP_USB_TYPEC_POLARITY 1
+#define EXTCON_PROP_USB_SS             2
 
 #define EXTCON_PROP_USB_MIN            0
-#define EXTCON_PROP_USB_MAX            0
+#define EXTCON_PROP_USB_MAX            2
 #define EXTCON_PROP_USB_CNT    (EXTCON_PROP_USB_MAX - EXTCON_PROP_USB_MIN + 1)
 
 /* Properties of EXTCON_TYPE_CHG. */
 #define EXTCON_PROP_JACK_MAX           100
 #define EXTCON_PROP_JACK_CNT (EXTCON_PROP_JACK_MAX - EXTCON_PROP_JACK_MIN + 1)
 
+/*
+ * Properties of EXTCON_TYPE_DISP.
+ *
+ * - EXTCON_PROP_DISP_HPD (Hot Plug Detect)
+ * @type:       integer (intval)
+ * @value:      0 (no hpd) or 1 (hpd)
+ * @default:    0 (no hpd)
+ *
+ */
+#define EXTCON_PROP_DISP_HPD           150
+
 /* Properties of EXTCON_TYPE_DISP. */
 #define EXTCON_PROP_DISP_MIN           150
-#define EXTCON_PROP_DISP_MAX           150
+#define EXTCON_PROP_DISP_MAX           151
 #define EXTCON_PROP_DISP_CNT (EXTCON_PROP_DISP_MAX - EXTCON_PROP_DISP_MIN + 1)
 
 /*
@@ -222,6 +247,12 @@ extern void devm_extcon_dev_free(struct device *dev, struct extcon_dev *edev);
 extern int extcon_get_state(struct extcon_dev *edev, unsigned int id);
 extern int extcon_set_state(struct extcon_dev *edev, unsigned int id,
                                   bool cable_state);
+extern int extcon_set_state_sync(struct extcon_dev *edev, unsigned int id,
+                               bool cable_state);
+/*
+ * Synchronize the state and property data for a specific external connector.
+ */
+extern int extcon_sync(struct extcon_dev *edev, unsigned int id);
 
 /*
  * get/set_property access the property value of each external connector.
@@ -233,6 +264,9 @@ extern int extcon_get_property(struct extcon_dev *edev, unsigned int id,
 extern int extcon_set_property(struct extcon_dev *edev, unsigned int id,
                                unsigned int prop,
                                union extcon_property_value prop_val);
+extern int extcon_set_property_sync(struct extcon_dev *edev, unsigned int id,
+                               unsigned int prop,
+                               union extcon_property_value prop_val);
 
 /*
  * get/set_property_capability set the capability of the property for each
@@ -317,6 +351,17 @@ static inline int extcon_set_state(struct extcon_dev *edev, unsigned int id,
        return 0;
 }
 
+static inline int extcon_set_state_sync(struct extcon_dev *edev, unsigned int id,
+                               bool cable_state)
+{
+       return 0;
+}
+
+static inline int extcon_sync(struct extcon_dev *edev, unsigned int id)
+{
+       return 0;
+}
+
 static inline int extcon_get_property(struct extcon_dev *edev, unsigned int id,
                                        unsigned int prop,
                                        union extcon_property_value *prop_val)
@@ -330,6 +375,13 @@ static inline int extcon_set_property(struct extcon_dev *edev, unsigned int id,
        return 0;
 }
 
+static inline int extcon_set_property_sync(struct extcon_dev *edev,
+                                       unsigned int id, unsigned int prop,
+                                       union extcon_property_value prop_val)
+{
+       return 0;
+}
+
 static inline int extcon_get_property_capability(struct extcon_dev *edev,
                                        unsigned int id, unsigned int prop)
 {
@@ -411,6 +463,6 @@ static inline int extcon_get_cable_state_(struct extcon_dev *edev, unsigned int
 static inline int extcon_set_cable_state_(struct extcon_dev *edev, unsigned int id,
                                   bool cable_state)
 {
-       return extcon_set_state(edev, id, cable_state);
+       return extcon_set_state_sync(edev, id, cable_state);
 }
 #endif /* __LINUX_EXTCON_H__ */