* [PATCH v7 0/5] Add data-lanes and link-frequencies to dp_out endpoint
@ 2022-12-05 17:45 Kuogee Hsieh
2022-12-05 17:45 ` [PATCH v7 1/5] arm64: dts: qcom: add data-lanes and link-freuencies into " Kuogee Hsieh
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Kuogee Hsieh @ 2022-12-05 17:45 UTC (permalink / raw)
To: dri-devel, robdclark, sean, swboyd, dianders, vkoul, daniel,
airlied, agross, dmitry.baryshkov, bjorn.andersson, andersson,
konrad.dybcio, robh+dt, krzysztof.kozlowski+dt, devicetree,
airlied
Cc: Kuogee Hsieh, quic_abhinavk, quic_sbillaka, freedreno,
linux-arm-msm, linux-kernel
Add DP both data-lanes and link-frequencies property to dp_out endpoint and support
functions to DP driver.
Kuogee Hsieh (5):
arm64: dts: qcom: add data-lanes and link-freuencies into dp_out
endpoint
dt-bindings: msm/dp: add data-lanes and link-frequencies property
drm/msm/dp: parser data-lanes as property of dp_out endpoint
drm/msm/dp: parser link-frequencies as property of dp_out endpoint
drm/msm/dp: add support of max dp link rate
.../bindings/display/msm/dp-controller.yaml | 22 +++++++++----
arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi | 6 +++-
arch/arm64/boot/dts/qcom/sc7280-herobrine.dtsi | 6 +++-
drivers/gpu/drm/msm/dp/dp_display.c | 4 +++
drivers/gpu/drm/msm/dp/dp_panel.c | 7 ++--
drivers/gpu/drm/msm/dp/dp_panel.h | 1 +
drivers/gpu/drm/msm/dp/dp_parser.c | 38 ++++++++++++++++++----
drivers/gpu/drm/msm/dp/dp_parser.h | 2 ++
8 files changed, 68 insertions(+), 18 deletions(-)
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v7 1/5] arm64: dts: qcom: add data-lanes and link-freuencies into dp_out endpoint
2022-12-05 17:45 [PATCH v7 0/5] Add data-lanes and link-frequencies to dp_out endpoint Kuogee Hsieh
@ 2022-12-05 17:45 ` Kuogee Hsieh
2022-12-05 17:45 ` [PATCH v7 2/5] dt-bindings: msm/dp: add data-lanes and link-frequencies property Kuogee Hsieh
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Kuogee Hsieh @ 2022-12-05 17:45 UTC (permalink / raw)
To: dri-devel, robdclark, sean, swboyd, dianders, vkoul, daniel,
airlied, agross, dmitry.baryshkov, bjorn.andersson, andersson,
konrad.dybcio, robh+dt, krzysztof.kozlowski+dt, devicetree,
airlied
Cc: Kuogee Hsieh, quic_abhinavk, quic_sbillaka, freedreno,
linux-arm-msm, linux-kernel
Move data-lanes property from mdss_dp node to dp_out endpoint. Also
add link-frequencies property into dp_out endpoint as well. The last
frequency specified at link-frequencies will be the max link rate
supported by DP.
Changes in v5:
-- revert changes at sc7180.dtsi and sc7280.dtsi
-- add &dp_out to sc7180-trogdor.dtsi and sc7280-herobrine.dtsi
Changes in v6:
-- add data-lanes and link-frequencies to yaml
Changes in v7:
-- change 160000000 to 1620000000
-- separate yaml to different patch
Signed-off-by: Kuogee Hsieh <quic_khsieh@quicinc.com>
---
arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi | 6 +++++-
arch/arm64/boot/dts/qcom/sc7280-herobrine.dtsi | 6 +++++-
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi b/arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi
index eae22e6..0ad50e2 100644
--- a/arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi
+++ b/arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi
@@ -814,7 +814,11 @@ hp_i2c: &i2c9 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&dp_hot_plug_det>;
- data-lanes = <0 1>;
+};
+
+&dp_out {
+ data-lanes = <0 1>;
+ link-frequencies = /bits/ 64 <162000000 270000000 540000000>;
};
&pm6150_adc {
diff --git a/arch/arm64/boot/dts/qcom/sc7280-herobrine.dtsi b/arch/arm64/boot/dts/qcom/sc7280-herobrine.dtsi
index c11e371..3c7a9d8 100644
--- a/arch/arm64/boot/dts/qcom/sc7280-herobrine.dtsi
+++ b/arch/arm64/boot/dts/qcom/sc7280-herobrine.dtsi
@@ -442,7 +442,11 @@ ap_i2c_tpm: &i2c14 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&dp_hot_plug_det>;
- data-lanes = <0 1>;
+};
+
+&dp_out {
+ data-lanes = <0 1>;
+ link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
};
&mdss_mdp {
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v7 2/5] dt-bindings: msm/dp: add data-lanes and link-frequencies property
2022-12-05 17:45 [PATCH v7 0/5] Add data-lanes and link-frequencies to dp_out endpoint Kuogee Hsieh
2022-12-05 17:45 ` [PATCH v7 1/5] arm64: dts: qcom: add data-lanes and link-freuencies into " Kuogee Hsieh
@ 2022-12-05 17:45 ` Kuogee Hsieh
2022-12-05 17:45 ` [PATCH v7 3/5] drm/msm/dp: parser data-lanes as property of dp_out endpoint Kuogee Hsieh
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Kuogee Hsieh @ 2022-12-05 17:45 UTC (permalink / raw)
To: dri-devel, robdclark, sean, swboyd, dianders, vkoul, daniel,
airlied, agross, dmitry.baryshkov, bjorn.andersson, andersson,
konrad.dybcio, robh+dt, krzysztof.kozlowski+dt, devicetree,
airlied
Cc: Kuogee Hsieh, quic_abhinavk, quic_sbillaka, freedreno,
linux-arm-msm, linux-kernel
Add both data-lanes and link-frequencies property into endpoint
changes in v7:
-- split yaml out of dtsi patch
-- link-frequencies from link rate to symbol rate
-- deprecation of old data-lanes property
Signed-off-by: Kuogee Hsieh <quic_khsieh@quicinc.com>
---
.../bindings/display/msm/dp-controller.yaml | 22 ++++++++++++++++------
1 file changed, 16 insertions(+), 6 deletions(-)
diff --git a/Documentation/devicetree/bindings/display/msm/dp-controller.yaml b/Documentation/devicetree/bindings/display/msm/dp-controller.yaml
index f2515af..13d2c3c 100644
--- a/Documentation/devicetree/bindings/display/msm/dp-controller.yaml
+++ b/Documentation/devicetree/bindings/display/msm/dp-controller.yaml
@@ -79,12 +79,6 @@ properties:
aux-bus:
$ref: /schemas/display/dp-aux-bus.yaml#
- data-lanes:
- $ref: /schemas/types.yaml#/definitions/uint32-array
- minItems: 1
- maxItems: 4
- items:
- maximum: 3
"#sound-dai-cells":
const: 0
@@ -105,6 +99,19 @@ properties:
$ref: /schemas/graph.yaml#/properties/port
description: Output endpoint of the controller
+ properties:
+ endpoint:
+ $ref: /schemas/media/video-interfaces.yaml#
+
+ properties:
+ data-lanes:
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+
+ link-frequencies:
+ $ref: /schemas/types.yaml#/definitions/uint64-array
+
+ additionalProperties: false
+
required:
- compatible
- reg
@@ -193,6 +200,9 @@ examples:
reg = <1>;
endpoint {
remote-endpoint = <&typec>;
+ data-lanes = <1 2>;
+ link-frequencies = /bits/ 64 <1620000000 2700000000
+ 5400000000 8100000000>;
};
};
};
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v7 3/5] drm/msm/dp: parser data-lanes as property of dp_out endpoint
2022-12-05 17:45 [PATCH v7 0/5] Add data-lanes and link-frequencies to dp_out endpoint Kuogee Hsieh
2022-12-05 17:45 ` [PATCH v7 1/5] arm64: dts: qcom: add data-lanes and link-freuencies into " Kuogee Hsieh
2022-12-05 17:45 ` [PATCH v7 2/5] dt-bindings: msm/dp: add data-lanes and link-frequencies property Kuogee Hsieh
@ 2022-12-05 17:45 ` Kuogee Hsieh
2022-12-05 17:45 ` [PATCH v7 4/5] drm/msm/dp: parser link-frequencies " Kuogee Hsieh
2022-12-05 17:45 ` [PATCH v7 5/5] drm/msm/dp: add support of max dp link rate Kuogee Hsieh
4 siblings, 0 replies; 6+ messages in thread
From: Kuogee Hsieh @ 2022-12-05 17:45 UTC (permalink / raw)
To: dri-devel, robdclark, sean, swboyd, dianders, vkoul, daniel,
airlied, agross, dmitry.baryshkov, bjorn.andersson, andersson,
konrad.dybcio, robh+dt, krzysztof.kozlowski+dt, devicetree,
airlied
Cc: Kuogee Hsieh, quic_abhinavk, quic_sbillaka, freedreno,
linux-arm-msm, linux-kernel
Add capability to parser data-lanes as property of dp_out endpoint.
Also retain the original capability to parser data-lanes as property
of mdss_dp node to handle legacy case.
Changes in v6:
-- first patch after split parser patch into two
Changes in v7:
-- check "data-lanes" from endpoint first
Signed-off-by: Kuogee Hsieh <quic_khsieh@quicinc.com>
---
drivers/gpu/drm/msm/dp/dp_parser.c | 25 +++++++++++++++++--------
1 file changed, 17 insertions(+), 8 deletions(-)
diff --git a/drivers/gpu/drm/msm/dp/dp_parser.c b/drivers/gpu/drm/msm/dp/dp_parser.c
index dd73221..b5f7e70 100644
--- a/drivers/gpu/drm/msm/dp/dp_parser.c
+++ b/drivers/gpu/drm/msm/dp/dp_parser.c
@@ -94,16 +94,25 @@ static int dp_parser_ctrl_res(struct dp_parser *parser)
static int dp_parser_misc(struct dp_parser *parser)
{
struct device_node *of_node = parser->pdev->dev.of_node;
- int len;
-
- len = drm_of_get_data_lanes_count(of_node, 1, DP_MAX_NUM_DP_LANES);
- if (len < 0) {
- DRM_WARN("Invalid property \"data-lanes\", default max DP lanes = %d\n",
- DP_MAX_NUM_DP_LANES);
- len = DP_MAX_NUM_DP_LANES;
+ int cnt;
+
+ /*
+ * data-lanes is the property of dp_out endpoint
+ */
+ cnt = drm_of_get_data_lanes_count_ep(of_node, 1, 0, 1, DP_MAX_NUM_DP_LANES);
+ if (cnt > 0)
+ parser->max_dp_lanes = cnt;
+ else {
+ /*
+ * legacy code, data-lanes is the property of mdss_dp node
+ */
+ cnt = drm_of_get_data_lanes_count(of_node, 1, DP_MAX_NUM_DP_LANES);
+ if (cnt > 0)
+ parser->max_dp_lanes = cnt;
+ else
+ parser->max_dp_lanes = DP_MAX_NUM_DP_LANES; /* 4 lanes */
}
- parser->max_dp_lanes = len;
return 0;
}
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v7 4/5] drm/msm/dp: parser link-frequencies as property of dp_out endpoint
2022-12-05 17:45 [PATCH v7 0/5] Add data-lanes and link-frequencies to dp_out endpoint Kuogee Hsieh
` (2 preceding siblings ...)
2022-12-05 17:45 ` [PATCH v7 3/5] drm/msm/dp: parser data-lanes as property of dp_out endpoint Kuogee Hsieh
@ 2022-12-05 17:45 ` Kuogee Hsieh
2022-12-05 17:45 ` [PATCH v7 5/5] drm/msm/dp: add support of max dp link rate Kuogee Hsieh
4 siblings, 0 replies; 6+ messages in thread
From: Kuogee Hsieh @ 2022-12-05 17:45 UTC (permalink / raw)
To: dri-devel, robdclark, sean, swboyd, dianders, vkoul, daniel,
airlied, agross, dmitry.baryshkov, bjorn.andersson, andersson,
konrad.dybcio, robh+dt, krzysztof.kozlowski+dt, devicetree,
airlied
Cc: Kuogee Hsieh, quic_abhinavk, quic_sbillaka, freedreno,
linux-arm-msm, linux-kernel
Add capability to parser and retrieve max DP link supported rate from
link-frequencies property of dp_out endpoint.
Changes in v6:
-- second patch after split parser patch into two patches
Changes in v7:
-- without checking cnt against DP_MAX_NUM_DP_LANES to retrieve link rate
Signed-off-by: Kuogee Hsieh <quic_khsieh@quicinc.com>
---
drivers/gpu/drm/msm/dp/dp_parser.c | 19 +++++++++++++++++--
drivers/gpu/drm/msm/dp/dp_parser.h | 2 ++
2 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/msm/dp/dp_parser.c b/drivers/gpu/drm/msm/dp/dp_parser.c
index b5f7e70..037dad8 100644
--- a/drivers/gpu/drm/msm/dp/dp_parser.c
+++ b/drivers/gpu/drm/msm/dp/dp_parser.c
@@ -94,15 +94,28 @@ static int dp_parser_ctrl_res(struct dp_parser *parser)
static int dp_parser_misc(struct dp_parser *parser)
{
struct device_node *of_node = parser->pdev->dev.of_node;
+ struct device_node *endpoint;
+ u64 frequency;
int cnt;
/*
* data-lanes is the property of dp_out endpoint
*/
cnt = drm_of_get_data_lanes_count_ep(of_node, 1, 0, 1, DP_MAX_NUM_DP_LANES);
- if (cnt > 0)
+ if (cnt > 0) {
parser->max_dp_lanes = cnt;
- else {
+
+ endpoint = of_graph_get_endpoint_by_regs(of_node, 1, 0); /* port@1 */
+ cnt = of_property_count_u64_elems(endpoint, "link-frequencies");
+ if (cnt > 0) {
+ of_property_read_u64_index(endpoint, "link-frequencies",
+ cnt - 1, &frequency);
+ frequency /= 10; /* from symbol rate to link rate */
+ parser->max_dp_link_rate = (frequency / 1000); /* kbits */
+ } else {
+ parser->max_dp_link_rate = DP_LINK_RATE_HBR2; /* 540000 khz */
+ }
+ } else {
/*
* legacy code, data-lanes is the property of mdss_dp node
*/
@@ -111,6 +124,8 @@ static int dp_parser_misc(struct dp_parser *parser)
parser->max_dp_lanes = cnt;
else
parser->max_dp_lanes = DP_MAX_NUM_DP_LANES; /* 4 lanes */
+
+ parser->max_dp_link_rate = DP_LINK_RATE_HBR2; /* 540000 khz */
}
return 0;
diff --git a/drivers/gpu/drm/msm/dp/dp_parser.h b/drivers/gpu/drm/msm/dp/dp_parser.h
index 866c1a8..3ddf639 100644
--- a/drivers/gpu/drm/msm/dp/dp_parser.h
+++ b/drivers/gpu/drm/msm/dp/dp_parser.h
@@ -15,6 +15,7 @@
#define DP_LABEL "MDSS DP DISPLAY"
#define DP_MAX_PIXEL_CLK_KHZ 675000
#define DP_MAX_NUM_DP_LANES 4
+#define DP_LINK_RATE_HBR2 540000
enum dp_pm_type {
DP_CORE_PM,
@@ -119,6 +120,7 @@ struct dp_parser {
struct dp_io io;
struct dp_display_data disp_data;
u32 max_dp_lanes;
+ u32 max_dp_link_rate;
struct drm_bridge *next_bridge;
int (*parse)(struct dp_parser *parser);
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v7 5/5] drm/msm/dp: add support of max dp link rate
2022-12-05 17:45 [PATCH v7 0/5] Add data-lanes and link-frequencies to dp_out endpoint Kuogee Hsieh
` (3 preceding siblings ...)
2022-12-05 17:45 ` [PATCH v7 4/5] drm/msm/dp: parser link-frequencies " Kuogee Hsieh
@ 2022-12-05 17:45 ` Kuogee Hsieh
4 siblings, 0 replies; 6+ messages in thread
From: Kuogee Hsieh @ 2022-12-05 17:45 UTC (permalink / raw)
To: dri-devel, robdclark, sean, swboyd, dianders, vkoul, daniel,
airlied, agross, dmitry.baryshkov, bjorn.andersson, andersson,
konrad.dybcio, robh+dt, krzysztof.kozlowski+dt, devicetree,
airlied
Cc: Kuogee Hsieh, quic_abhinavk, quic_sbillaka, freedreno,
linux-arm-msm, linux-kernel
By default, HBR2 (5.4G) is the max link link be supported. This patch add
the capability to support max link rate at HBR3 (8.1G).
Changes in v2:
-- add max link rate from dtsi
Changes in v3:
-- parser max_data_lanes and max_dp_link_rate from dp_out endpoint
Changes in v4:
-- delete unnecessary pr_err
Changes in v5:
-- split parser function into different patch
Signed-off-by: Kuogee Hsieh <quic_khsieh@quicinc.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
---
drivers/gpu/drm/msm/dp/dp_display.c | 4 ++++
drivers/gpu/drm/msm/dp/dp_panel.c | 7 ++++---
drivers/gpu/drm/msm/dp/dp_panel.h | 1 +
3 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c
index bfd0aef..edee550 100644
--- a/drivers/gpu/drm/msm/dp/dp_display.c
+++ b/drivers/gpu/drm/msm/dp/dp_display.c
@@ -390,6 +390,10 @@ static int dp_display_process_hpd_high(struct dp_display_private *dp)
struct edid *edid;
dp->panel->max_dp_lanes = dp->parser->max_dp_lanes;
+ dp->panel->max_dp_link_rate = dp->parser->max_dp_link_rate;
+
+ drm_dbg_dp(dp->drm_dev, "max_lanes=%d max_link_rate=%d\n",
+ dp->panel->max_dp_lanes, dp->panel->max_dp_link_rate);
rc = dp_panel_read_sink_caps(dp->panel, dp->dp_display.connector);
if (rc)
diff --git a/drivers/gpu/drm/msm/dp/dp_panel.c b/drivers/gpu/drm/msm/dp/dp_panel.c
index 5149ceb..933fa9c 100644
--- a/drivers/gpu/drm/msm/dp/dp_panel.c
+++ b/drivers/gpu/drm/msm/dp/dp_panel.c
@@ -75,12 +75,13 @@ static int dp_panel_read_dpcd(struct dp_panel *dp_panel)
link_info->rate = drm_dp_bw_code_to_link_rate(dpcd[DP_MAX_LINK_RATE]);
link_info->num_lanes = dpcd[DP_MAX_LANE_COUNT] & DP_MAX_LANE_COUNT_MASK;
+ /* Limit data lanes from data-lanes of endpoint properity of dtsi */
if (link_info->num_lanes > dp_panel->max_dp_lanes)
link_info->num_lanes = dp_panel->max_dp_lanes;
- /* Limit support upto HBR2 until HBR3 support is added */
- if (link_info->rate >= (drm_dp_bw_code_to_link_rate(DP_LINK_BW_5_4)))
- link_info->rate = drm_dp_bw_code_to_link_rate(DP_LINK_BW_5_4);
+ /* Limit link rate from link-frequencies of endpoint properity of dtsi */
+ if (link_info->rate > dp_panel->max_dp_link_rate)
+ link_info->rate = dp_panel->max_dp_link_rate;
drm_dbg_dp(panel->drm_dev, "version: %d.%d\n", major, minor);
drm_dbg_dp(panel->drm_dev, "link_rate=%d\n", link_info->rate);
diff --git a/drivers/gpu/drm/msm/dp/dp_panel.h b/drivers/gpu/drm/msm/dp/dp_panel.h
index d861197a..f04d021 100644
--- a/drivers/gpu/drm/msm/dp/dp_panel.h
+++ b/drivers/gpu/drm/msm/dp/dp_panel.h
@@ -50,6 +50,7 @@ struct dp_panel {
u32 vic;
u32 max_dp_lanes;
+ u32 max_dp_link_rate;
u32 max_bw_code;
};
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2022-12-05 17:48 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-12-05 17:45 [PATCH v7 0/5] Add data-lanes and link-frequencies to dp_out endpoint Kuogee Hsieh
2022-12-05 17:45 ` [PATCH v7 1/5] arm64: dts: qcom: add data-lanes and link-freuencies into " Kuogee Hsieh
2022-12-05 17:45 ` [PATCH v7 2/5] dt-bindings: msm/dp: add data-lanes and link-frequencies property Kuogee Hsieh
2022-12-05 17:45 ` [PATCH v7 3/5] drm/msm/dp: parser data-lanes as property of dp_out endpoint Kuogee Hsieh
2022-12-05 17:45 ` [PATCH v7 4/5] drm/msm/dp: parser link-frequencies " Kuogee Hsieh
2022-12-05 17:45 ` [PATCH v7 5/5] drm/msm/dp: add support of max dp link rate Kuogee Hsieh
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).