Re: [PATCH RESEND v3 03/15] drm/msm/dp: parse DT from dp_parser_get

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 1/26/2024 10:26 AM, Dmitry Baryshkov wrote:
It makes little sense to split the submodule get and actual DT parsing.
Call dp_parser_parse() directly from dp_parser_get(), so that the parser
data is fully initialised once it is returned to the caller.

Reviewed-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxx>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx>
Tested-by: Kuogee Hsieh <quic_khsieh@xxxxxxxxxxx>
Reviewed-by: Kuogee Hsieh <quic_khsieh@xxxxxxxxxxx>
---
  drivers/gpu/drm/msm/dp/dp_display.c | 6 ------
  drivers/gpu/drm/msm/dp/dp_parser.c  | 8 +++++++-
  drivers/gpu/drm/msm/dp/dp_parser.h  | 3 ---
  3 files changed, 7 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c
index d37d599aec27..67b48f0a6c83 100644
--- a/drivers/gpu/drm/msm/dp/dp_display.c
+++ b/drivers/gpu/drm/msm/dp/dp_display.c
@@ -1266,12 +1266,6 @@ static int dp_display_probe(struct platform_device *pdev)
  		return -EPROBE_DEFER;
  	}
- rc = dp->parser->parse(dp->parser);
-	if (rc) {
-		DRM_ERROR("device tree parsing failed\n");
-		goto err;
-	}
-
  	rc = dp_power_client_init(dp->power);
  	if (rc) {
  		DRM_ERROR("Power client create failed\n");
diff --git a/drivers/gpu/drm/msm/dp/dp_parser.c b/drivers/gpu/drm/msm/dp/dp_parser.c
index 7032dcc8842b..2d9d126c119b 100644
--- a/drivers/gpu/drm/msm/dp/dp_parser.c
+++ b/drivers/gpu/drm/msm/dp/dp_parser.c
@@ -315,13 +315,19 @@ static int dp_parser_parse(struct dp_parser *parser)
  struct dp_parser *dp_parser_get(struct platform_device *pdev)
  {
  	struct dp_parser *parser;
+	int ret;
parser = devm_kzalloc(&pdev->dev, sizeof(*parser), GFP_KERNEL);
  	if (!parser)
  		return ERR_PTR(-ENOMEM);
- parser->parse = dp_parser_parse;
  	parser->pdev = pdev;
+ ret = dp_parser_parse(parser);
+	if (ret) {
+		dev_err(&pdev->dev, "device tree parsing failed\n");
+		return ERR_PTR(ret);
+	}
+
  	return parser;
  }
diff --git a/drivers/gpu/drm/msm/dp/dp_parser.h b/drivers/gpu/drm/msm/dp/dp_parser.h
index 90a2cdbbe344..4ccc432b4142 100644
--- a/drivers/gpu/drm/msm/dp/dp_parser.h
+++ b/drivers/gpu/drm/msm/dp/dp_parser.h
@@ -67,7 +67,6 @@ struct dss_module_power {
   *
   * @pdev: platform data of the client
   * @mp: gpio, regulator and clock related data
- * @parse: function to be called by client to parse device tree.
   */
  struct dp_parser {
  	struct platform_device *pdev;
@@ -76,8 +75,6 @@ struct dp_parser {
  	u32 max_dp_lanes;
  	u32 max_dp_link_rate;
  	struct drm_bridge *next_bridge;
-
-	int (*parse)(struct dp_parser *parser);
  };
/**




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux