Commit 6215f155 authored by Dmitry Baryshkov's avatar Dmitry Baryshkov

drm/msm/dp: drop dp_parser

Finally drop separate "parsing" submodule. There is no need in it
anymore. All submodules handle DT properties directly rather than
passing them via the separate structure pointer.
Signed-off-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: default avatarKonrad Dybcio <konrad.dybcio@linaro.org>
Tested-by: default avatarKuogee Hsieh <quic_khsieh@quicinc.com>
Reviewed-by: default avatarKuogee Hsieh <quic_khsieh@quicinc.com>
Patchwork: https://patchwork.freedesktop.org/patch/576116/
Link: https://lore.kernel.org/r/20240126-dp-power-parser-cleanup-v3-15-098d5f581dd3@linaro.org
parent b3b1d122
...@@ -127,7 +127,6 @@ msm-$(CONFIG_DRM_MSM_DP)+= dp/dp_aux.o \ ...@@ -127,7 +127,6 @@ msm-$(CONFIG_DRM_MSM_DP)+= dp/dp_aux.o \
dp/dp_drm.o \ dp/dp_drm.o \
dp/dp_link.o \ dp/dp_link.o \
dp/dp_panel.o \ dp/dp_panel.o \
dp/dp_parser.o \
dp/dp_audio.o dp/dp_audio.o
msm-$(CONFIG_DRM_FBDEV_EMULATION) += msm_fbdev.o msm-$(CONFIG_DRM_FBDEV_EMULATION) += msm_fbdev.o
......
...@@ -16,6 +16,7 @@ void dp_aux_init(struct drm_dp_aux *dp_aux); ...@@ -16,6 +16,7 @@ void dp_aux_init(struct drm_dp_aux *dp_aux);
void dp_aux_deinit(struct drm_dp_aux *dp_aux); void dp_aux_deinit(struct drm_dp_aux *dp_aux);
void dp_aux_reconfig(struct drm_dp_aux *dp_aux); void dp_aux_reconfig(struct drm_dp_aux *dp_aux);
struct phy;
struct drm_dp_aux *dp_aux_get(struct device *dev, struct dp_catalog *catalog, struct drm_dp_aux *dp_aux_get(struct device *dev, struct dp_catalog *catalog,
struct phy *phy, struct phy *phy,
bool is_edp); bool is_edp);
......
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
#include <drm/drm_modes.h> #include <drm/drm_modes.h>
#include "dp_parser.h"
#include "disp/msm_disp_snapshot.h" #include "disp/msm_disp_snapshot.h"
/* interrupts */ /* interrupts */
......
...@@ -9,7 +9,6 @@ ...@@ -9,7 +9,6 @@
#include "dp_aux.h" #include "dp_aux.h"
#include "dp_panel.h" #include "dp_panel.h"
#include "dp_link.h" #include "dp_link.h"
#include "dp_parser.h"
#include "dp_catalog.h" #include "dp_catalog.h"
struct dp_ctrl { struct dp_ctrl {
...@@ -17,6 +16,8 @@ struct dp_ctrl { ...@@ -17,6 +16,8 @@ struct dp_ctrl {
bool wide_bus_en; bool wide_bus_en;
}; };
struct phy;
int dp_ctrl_on_link(struct dp_ctrl *dp_ctrl); int dp_ctrl_on_link(struct dp_ctrl *dp_ctrl);
int dp_ctrl_on_stream(struct dp_ctrl *dp_ctrl, bool force_link_train); int dp_ctrl_on_stream(struct dp_ctrl *dp_ctrl, bool force_link_train);
void dp_ctrl_off_link_stream(struct dp_ctrl *dp_ctrl); void dp_ctrl_off_link_stream(struct dp_ctrl *dp_ctrl);
......
...@@ -9,7 +9,6 @@ ...@@ -9,7 +9,6 @@
#include <drm/drm_connector.h> #include <drm/drm_connector.h>
#include <drm/drm_file.h> #include <drm/drm_file.h>
#include "dp_parser.h"
#include "dp_catalog.h" #include "dp_catalog.h"
#include "dp_aux.h" #include "dp_aux.h"
#include "dp_ctrl.h" #include "dp_ctrl.h"
......
...@@ -9,13 +9,13 @@ ...@@ -9,13 +9,13 @@
#include <linux/debugfs.h> #include <linux/debugfs.h>
#include <linux/component.h> #include <linux/component.h>
#include <linux/of_irq.h> #include <linux/of_irq.h>
#include <linux/phy/phy.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <drm/display/drm_dp_aux_bus.h> #include <drm/display/drm_dp_aux_bus.h>
#include <drm/drm_edid.h> #include <drm/drm_edid.h>
#include "msm_drv.h" #include "msm_drv.h"
#include "msm_kms.h" #include "msm_kms.h"
#include "dp_parser.h"
#include "dp_ctrl.h" #include "dp_ctrl.h"
#include "dp_catalog.h" #include "dp_catalog.h"
#include "dp_aux.h" #include "dp_aux.h"
...@@ -88,7 +88,6 @@ struct dp_display_private { ...@@ -88,7 +88,6 @@ struct dp_display_private {
struct drm_device *drm_dev; struct drm_device *drm_dev;
struct dentry *root; struct dentry *root;
struct dp_parser *parser;
struct dp_catalog *catalog; struct dp_catalog *catalog;
struct drm_dp_aux *aux; struct drm_dp_aux *aux;
struct dp_link *link; struct dp_link *link;
...@@ -705,14 +704,11 @@ static int dp_init_sub_modules(struct dp_display_private *dp) ...@@ -705,14 +704,11 @@ static int dp_init_sub_modules(struct dp_display_private *dp)
struct dp_panel_in panel_in = { struct dp_panel_in panel_in = {
.dev = dev, .dev = dev,
}; };
struct phy *phy;
dp->parser = dp_parser_get(dp->dp_display.pdev); phy = devm_phy_get(dev, "dp");
if (IS_ERR(dp->parser)) { if (IS_ERR(phy))
rc = PTR_ERR(dp->parser); return PTR_ERR(phy);
DRM_ERROR("failed to initialize parser, rc = %d\n", rc);
dp->parser = NULL;
goto error;
}
dp->catalog = dp_catalog_get(dev); dp->catalog = dp_catalog_get(dev);
if (IS_ERR(dp->catalog)) { if (IS_ERR(dp->catalog)) {
...@@ -723,7 +719,7 @@ static int dp_init_sub_modules(struct dp_display_private *dp) ...@@ -723,7 +719,7 @@ static int dp_init_sub_modules(struct dp_display_private *dp)
} }
dp->aux = dp_aux_get(dev, dp->catalog, dp->aux = dp_aux_get(dev, dp->catalog,
dp->parser->phy, phy,
dp->dp_display.is_edp); dp->dp_display.is_edp);
if (IS_ERR(dp->aux)) { if (IS_ERR(dp->aux)) {
rc = PTR_ERR(dp->aux); rc = PTR_ERR(dp->aux);
...@@ -754,7 +750,7 @@ static int dp_init_sub_modules(struct dp_display_private *dp) ...@@ -754,7 +750,7 @@ static int dp_init_sub_modules(struct dp_display_private *dp)
dp->ctrl = dp_ctrl_get(dev, dp->link, dp->panel, dp->aux, dp->ctrl = dp_ctrl_get(dev, dp->link, dp->panel, dp->aux,
dp->catalog, dp->catalog,
dp->parser->phy); phy);
if (IS_ERR(dp->ctrl)) { if (IS_ERR(dp->ctrl)) {
rc = PTR_ERR(dp->ctrl); rc = PTR_ERR(dp->ctrl);
DRM_ERROR("failed to initialize ctrl, rc = %d\n", rc); DRM_ERROR("failed to initialize ctrl, rc = %d\n", rc);
......
...@@ -10,6 +10,8 @@ ...@@ -10,6 +10,8 @@
#include <sound/hdmi-codec.h> #include <sound/hdmi-codec.h>
#include "disp/msm_disp_snapshot.h" #include "disp/msm_disp_snapshot.h"
#define DP_MAX_PIXEL_CLK_KHZ 675000
struct msm_dp { struct msm_dp {
struct drm_device *drm_dev; struct drm_device *drm_dev;
struct platform_device *pdev; struct platform_device *pdev;
......
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
*/
#include <linux/of_gpio.h>
#include <linux/phy/phy.h>
#include <drm/drm_of.h>
#include <drm/drm_print.h>
#include <drm/drm_bridge.h>
#include "dp_parser.h"
#include "dp_reg.h"
static int dp_parser_ctrl_res(struct dp_parser *parser)
{
struct platform_device *pdev = parser->pdev;
parser->phy = devm_phy_get(&pdev->dev, "dp");
if (IS_ERR(parser->phy))
return PTR_ERR(parser->phy);
return 0;
}
static int dp_parser_parse(struct dp_parser *parser)
{
int rc = 0;
if (!parser) {
DRM_ERROR("invalid input\n");
return -EINVAL;
}
rc = dp_parser_ctrl_res(parser);
if (rc)
return rc;
return 0;
}
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->pdev = pdev;
ret = dp_parser_parse(parser);
if (ret) {
dev_err(&pdev->dev, "device tree parsing failed\n");
return ERR_PTR(ret);
}
return parser;
}
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
*/
#ifndef _DP_PARSER_H_
#define _DP_PARSER_H_
#include <linux/platform_device.h>
#include "msm_drv.h"
#define DP_MAX_PIXEL_CLK_KHZ 675000
/**
* struct dp_parser - DP parser's data exposed to clients
*
* @pdev: platform data of the client
* @phy: PHY handle
*/
struct dp_parser {
struct platform_device *pdev;
struct phy *phy;
};
/**
* dp_parser_get() - get the DP's device tree parser module
*
* @pdev: platform data of the client
* return: pointer to dp_parser structure.
*
* This function provides client capability to parse the
* device tree and populate the data structures. The data
* related to clock, regulators, pin-control and other
* can be parsed using this module.
*/
struct dp_parser *dp_parser_get(struct platform_device *pdev);
#endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment