Add generic DP API for configuring DisplayPort PHYs. The parameters
that will be configured are link rate, number of lanes, voltage swing
and pre-emphasis.

Signed-off-by: Yuti Amonkar <yamon...@cadence.com>
---
 include/linux/phy/phy-dp.h | 95 ++++++++++++++++++++++++++++++++++++++++++++++
 include/linux/phy/phy.h    |  4 ++
 2 files changed, 99 insertions(+)
 create mode 100644 include/linux/phy/phy-dp.h

diff --git a/include/linux/phy/phy-dp.h b/include/linux/phy/phy-dp.h
new file mode 100644
index 0000000..18cad23
--- /dev/null
+++ b/include/linux/phy/phy-dp.h
@@ -0,0 +1,95 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (C) 2019 Cadence Design Systems Inc.
+ */
+
+#ifndef __PHY_DP_H_
+#define __PHY_DP_H_
+
+#include <linux/types.h>
+
+/**
+ * struct phy_configure_opts_dp - DisplayPort PHY configuration set
+ *
+ * This structure is used to represent the configuration state of a
+ * DisplayPort phy.
+ */
+struct phy_configure_opts_dp {
+       /**
+        * @link_rate:
+        *
+        * Link Rate, in Mb/s, of the main link.
+        *
+        * Allowed values: 1620, 2160, 2430, 2700, 3240, 4320, 5400, 8100 Mb/s
+        */
+       unsigned int link_rate;
+
+       /**
+        * @lanes:
+        *
+        * Number of active, consecutive, data lanes, starting from
+        * lane 0, used for the transmissions on main link.
+        *
+        * Allowed values: 1, 2, 4
+        */
+       unsigned int lanes;
+
+       /**
+        * @voltage:
+        *
+        * Voltage swing levels, as specified by DisplayPort specification,
+        * to be used by particular lanes. One value per lane.
+        * voltage[0] is for lane 0, voltage[1] is for lane 1, etc.
+        *
+        * Maximum value: 3
+        */
+       unsigned int voltage[4];
+
+       /**
+        * @pre:
+        *
+        * Pre-emphasis levels, as specified by DisplayPort specification, to be
+        * used by particular lanes. One value per lane.
+        *
+        * Maximum value: 3
+        */
+       unsigned int pre[4];
+
+       /**
+        * @ssc:
+        *
+        * Flag indicating, whether or not to enable spread-spectrum clocking.
+        *
+        */
+       u8 ssc : 1;
+
+       /**
+        * @set_rate:
+        *
+        * Flag indicating, whether or not reconfigure link rate and SSC to
+        * requested values.
+        *
+        */
+       u8 set_rate : 1;
+
+       /**
+        * @set_lanes:
+        *
+        * Flag indicating, whether or not reconfigure lane count to
+        * requested value.
+        *
+        */
+       u8 set_lanes : 1;
+
+       /**
+        * @set_voltages:
+        *
+        * Flag indicating, whether or not reconfigure voltage swing
+        * and pre-emphasis to requested values. Only lanes specified
+        * by "lanes" parameter will be affected.
+        *
+        */
+       u8 set_voltages : 1;
+};
+
+#endif /* __PHY_DP_H_ */
diff --git a/include/linux/phy/phy.h b/include/linux/phy/phy.h
index 15032f14..b981384 100644
--- a/include/linux/phy/phy.h
+++ b/include/linux/phy/phy.h
@@ -17,6 +17,7 @@
 #include <linux/regulator/consumer.h>
 
 #include <linux/phy/phy-mipi-dphy.h>
+#include <linux/phy/phy-dp.h>
 
 struct phy;
 
@@ -46,9 +47,12 @@ enum phy_mode {
  *
  * @mipi_dphy: Configuration set applicable for phys supporting
  *             the MIPI_DPHY phy mode.
+ * @dp:                Configuration set applicable for phys supporting
+ *             the DisplayPort protocol.
  */
 union phy_configure_opts {
        struct phy_configure_opts_mipi_dphy     mipi_dphy;
+       struct phy_configure_opts_dp            dp;
 };
 
 /**
-- 
2.7.4

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to