Move panel-related functions to dp_panel.c, following up the cleanup
done by the rest of the submodules.

Signed-off-by: Dmitry Baryshkov <[email protected]>
---
 drivers/gpu/drm/msm/dp/dp_catalog.c | 114 ------------------------------------
 drivers/gpu/drm/msm/dp/dp_catalog.h |   6 --
 drivers/gpu/drm/msm/dp/dp_ctrl.c    |   4 +-
 drivers/gpu/drm/msm/dp/dp_panel.c   | 114 ++++++++++++++++++++++++++++++++++--
 drivers/gpu/drm/msm/dp/dp_panel.h   |   3 +
 5 files changed, 113 insertions(+), 128 deletions(-)

diff --git a/drivers/gpu/drm/msm/dp/dp_catalog.c 
b/drivers/gpu/drm/msm/dp/dp_catalog.c
index 
7c65eba867733cf532831f54639f23aa5605c35a..9c12484589dc38951a3f1cb4bb33eb9aa5822d87
 100644
--- a/drivers/gpu/drm/msm/dp/dp_catalog.c
+++ b/drivers/gpu/drm/msm/dp/dp_catalog.c
@@ -21,8 +21,6 @@
 #define DP_INTERRUPT_STATUS_ACK_SHIFT  1
 #define DP_INTERRUPT_STATUS_MASK_SHIFT 2
 
-#define DP_INTF_CONFIG_DATABUS_WIDEN     BIT(4)
-
 #define DP_INTERRUPT_STATUS1 \
        (DP_INTR_AUX_XFER_DONE| \
        DP_INTR_WRONG_ADDR | DP_INTR_TIMEOUT | \
@@ -220,118 +218,6 @@ int msm_dp_catalog_ctrl_get_interrupt(struct 
msm_dp_catalog *msm_dp_catalog)
        return intr;
 }
 
-/* panel related catalog functions */
-int msm_dp_catalog_panel_timing_cfg(struct msm_dp_catalog *msm_dp_catalog, u32 
total,
-                               u32 sync_start, u32 width_blanking, u32 
msm_dp_active)
-{
-       u32 reg;
-
-       msm_dp_write_link(msm_dp_catalog, REG_DP_TOTAL_HOR_VER, total);
-       msm_dp_write_link(msm_dp_catalog, REG_DP_START_HOR_VER_FROM_SYNC, 
sync_start);
-       msm_dp_write_link(msm_dp_catalog, REG_DP_HSYNC_VSYNC_WIDTH_POLARITY, 
width_blanking);
-       msm_dp_write_link(msm_dp_catalog, REG_DP_ACTIVE_HOR_VER, msm_dp_active);
-
-       reg = msm_dp_read_p0(msm_dp_catalog, MMSS_DP_INTF_CONFIG);
-
-       if (msm_dp_catalog->wide_bus_en)
-               reg |= DP_INTF_CONFIG_DATABUS_WIDEN;
-       else
-               reg &= ~DP_INTF_CONFIG_DATABUS_WIDEN;
-
-
-       DRM_DEBUG_DP("wide_bus_en=%d reg=%#x\n", msm_dp_catalog->wide_bus_en, 
reg);
-
-       msm_dp_write_p0(msm_dp_catalog, MMSS_DP_INTF_CONFIG, reg);
-       return 0;
-}
-
-static void msm_dp_catalog_panel_send_vsc_sdp(struct msm_dp_catalog 
*msm_dp_catalog, struct dp_sdp *vsc_sdp)
-{
-       u32 header[2];
-       u32 val;
-       int i;
-
-       msm_dp_utils_pack_sdp_header(&vsc_sdp->sdp_header, header);
-
-       msm_dp_write_link(msm_dp_catalog, MMSS_DP_GENERIC0_0, header[0]);
-       msm_dp_write_link(msm_dp_catalog, MMSS_DP_GENERIC0_1, header[1]);
-
-       for (i = 0; i < sizeof(vsc_sdp->db); i += 4) {
-               val = ((vsc_sdp->db[i]) | (vsc_sdp->db[i + 1] << 8) | 
(vsc_sdp->db[i + 2] << 16) |
-                      (vsc_sdp->db[i + 3] << 24));
-               msm_dp_write_link(msm_dp_catalog, MMSS_DP_GENERIC0_2 + i, val);
-       }
-}
-
-static void msm_dp_catalog_panel_update_sdp(struct msm_dp_catalog 
*msm_dp_catalog)
-{
-       u32 hw_revision;
-
-       hw_revision = msm_dp_catalog_hw_revision(msm_dp_catalog);
-       if (hw_revision < DP_HW_VERSION_1_2 && hw_revision >= 
DP_HW_VERSION_1_0) {
-               msm_dp_write_link(msm_dp_catalog, MMSS_DP_SDP_CFG3, 0x01);
-               msm_dp_write_link(msm_dp_catalog, MMSS_DP_SDP_CFG3, 0x00);
-       }
-}
-
-void msm_dp_catalog_panel_enable_vsc_sdp(struct msm_dp_catalog 
*msm_dp_catalog, struct dp_sdp *vsc_sdp)
-{
-       struct msm_dp_catalog_private *catalog;
-       u32 cfg, cfg2, misc;
-
-       catalog = container_of(msm_dp_catalog, struct msm_dp_catalog_private, 
msm_dp_catalog);
-
-       cfg = msm_dp_read_link(msm_dp_catalog, MMSS_DP_SDP_CFG);
-       cfg2 = msm_dp_read_link(msm_dp_catalog, MMSS_DP_SDP_CFG2);
-       misc = msm_dp_read_link(msm_dp_catalog, REG_DP_MISC1_MISC0);
-
-       cfg |= GEN0_SDP_EN;
-       msm_dp_write_link(msm_dp_catalog, MMSS_DP_SDP_CFG, cfg);
-
-       cfg2 |= GENERIC0_SDPSIZE_VALID;
-       msm_dp_write_link(msm_dp_catalog, MMSS_DP_SDP_CFG2, cfg2);
-
-       msm_dp_catalog_panel_send_vsc_sdp(msm_dp_catalog, vsc_sdp);
-
-       /* indicates presence of VSC (BIT(6) of MISC1) */
-       misc |= DP_MISC1_VSC_SDP;
-
-       drm_dbg_dp(catalog->drm_dev, "vsc sdp enable=1\n");
-
-       pr_debug("misc settings = 0x%x\n", misc);
-       msm_dp_write_link(msm_dp_catalog, REG_DP_MISC1_MISC0, misc);
-
-       msm_dp_catalog_panel_update_sdp(msm_dp_catalog);
-}
-
-void msm_dp_catalog_panel_disable_vsc_sdp(struct msm_dp_catalog 
*msm_dp_catalog)
-{
-       struct msm_dp_catalog_private *catalog;
-       u32 cfg, cfg2, misc;
-
-       catalog = container_of(msm_dp_catalog, struct msm_dp_catalog_private, 
msm_dp_catalog);
-
-       cfg = msm_dp_read_link(msm_dp_catalog, MMSS_DP_SDP_CFG);
-       cfg2 = msm_dp_read_link(msm_dp_catalog, MMSS_DP_SDP_CFG2);
-       misc = msm_dp_read_link(msm_dp_catalog, REG_DP_MISC1_MISC0);
-
-       cfg &= ~GEN0_SDP_EN;
-       msm_dp_write_link(msm_dp_catalog, MMSS_DP_SDP_CFG, cfg);
-
-       cfg2 &= ~GENERIC0_SDPSIZE_VALID;
-       msm_dp_write_link(msm_dp_catalog, MMSS_DP_SDP_CFG2, cfg2);
-
-       /* switch back to MSA */
-       misc &= ~DP_MISC1_VSC_SDP;
-
-       drm_dbg_dp(catalog->drm_dev, "vsc sdp enable=0\n");
-
-       pr_debug("misc settings = 0x%x\n", misc);
-       msm_dp_write_link(msm_dp_catalog, REG_DP_MISC1_MISC0, misc);
-
-       msm_dp_catalog_panel_update_sdp(msm_dp_catalog);
-}
-
 static void __iomem *msm_dp_ioremap(struct platform_device *pdev, int idx, 
size_t *len)
 {
        struct resource *res;
diff --git a/drivers/gpu/drm/msm/dp/dp_catalog.h 
b/drivers/gpu/drm/msm/dp/dp_catalog.h
index 
ad3c6bfbd8bb449d7bee92b55b74ddddd1ce4ed0..8b63f53e960092666f08b95f556aefe210f4a1e0
 100644
--- a/drivers/gpu/drm/msm/dp/dp_catalog.h
+++ b/drivers/gpu/drm/msm/dp/dp_catalog.h
@@ -148,12 +148,6 @@ int msm_dp_catalog_ctrl_get_interrupt(struct 
msm_dp_catalog *msm_dp_catalog);
 void msm_dp_catalog_ctrl_config_psr_interrupt(struct msm_dp_catalog 
*msm_dp_catalog);
 u32 msm_dp_catalog_ctrl_read_psr_interrupt_status(struct msm_dp_catalog 
*msm_dp_catalog);
 
-/* DP Panel APIs */
-int msm_dp_catalog_panel_timing_cfg(struct msm_dp_catalog *msm_dp_catalog, u32 
total,
-                               u32 sync_start, u32 width_blanking, u32 
msm_dp_active);
-void msm_dp_catalog_panel_enable_vsc_sdp(struct msm_dp_catalog 
*msm_dp_catalog, struct dp_sdp *vsc_sdp);
-void msm_dp_catalog_panel_disable_vsc_sdp(struct msm_dp_catalog 
*msm_dp_catalog);
-
 struct msm_dp_catalog *msm_dp_catalog_get(struct device *dev);
 
 /* DP Audio APIs */
diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.c b/drivers/gpu/drm/msm/dp/dp_ctrl.c
index 
6ca2e055717b55c9eb064887948cf095fbfc1c40..cde667bf8eeec95035b2feb3661686c99acf5b7d
 100644
--- a/drivers/gpu/drm/msm/dp/dp_ctrl.c
+++ b/drivers/gpu/drm/msm/dp/dp_ctrl.c
@@ -2395,7 +2395,7 @@ void msm_dp_ctrl_off_link_stream(struct msm_dp_ctrl 
*msm_dp_ctrl)
        ctrl = container_of(msm_dp_ctrl, struct msm_dp_ctrl_private, 
msm_dp_ctrl);
        phy = ctrl->phy;
 
-       msm_dp_catalog_panel_disable_vsc_sdp(ctrl->catalog);
+       msm_dp_panel_disable_vsc_sdp(ctrl->panel);
 
        /* set dongle to D3 (power off) mode */
        msm_dp_link_psm_config(ctrl->link, &ctrl->panel->link_info, true);
@@ -2449,7 +2449,7 @@ void msm_dp_ctrl_off(struct msm_dp_ctrl *msm_dp_ctrl)
        ctrl = container_of(msm_dp_ctrl, struct msm_dp_ctrl_private, 
msm_dp_ctrl);
        phy = ctrl->phy;
 
-       msm_dp_catalog_panel_disable_vsc_sdp(ctrl->catalog);
+       msm_dp_panel_disable_vsc_sdp(ctrl->panel);
 
        msm_dp_ctrl_mainlink_disable(ctrl);
 
diff --git a/drivers/gpu/drm/msm/dp/dp_panel.c 
b/drivers/gpu/drm/msm/dp/dp_panel.c
index 
7a5656d8702e4f9c6f8e13d00788a5bdbbe3729f..7903606fc9c249b4ec21949fe51240df90492103
 100644
--- a/drivers/gpu/drm/msm/dp/dp_panel.c
+++ b/drivers/gpu/drm/msm/dp/dp_panel.c
@@ -4,6 +4,7 @@
  */
 
 #include "dp_panel.h"
+#include "dp_reg.h"
 #include "dp_utils.h"
 
 #include <drm/drm_connector.h>
@@ -11,6 +12,8 @@
 #include <drm/drm_of.h>
 #include <drm/drm_print.h>
 
+#define DP_INTF_CONFIG_DATABUS_WIDEN     BIT(4)
+
 #define DP_MAX_NUM_DP_LANES    4
 #define DP_LINK_RATE_HBR2      540000 /* kbytes */
 
@@ -242,10 +245,97 @@ void msm_dp_panel_handle_sink_request(struct msm_dp_panel 
*msm_dp_panel)
        }
 }
 
+static void msm_dp_panel_send_vsc_sdp(struct msm_dp_panel_private *panel, 
struct dp_sdp *vsc_sdp)
+{
+       struct msm_dp_catalog *msm_dp_catalog = panel->catalog;
+       u32 header[2];
+       u32 val;
+       int i;
+
+       msm_dp_utils_pack_sdp_header(&vsc_sdp->sdp_header, header);
+
+       msm_dp_write_link(msm_dp_catalog, MMSS_DP_GENERIC0_0, header[0]);
+       msm_dp_write_link(msm_dp_catalog, MMSS_DP_GENERIC0_1, header[1]);
+
+       for (i = 0; i < sizeof(vsc_sdp->db); i += 4) {
+               val = ((vsc_sdp->db[i]) | (vsc_sdp->db[i + 1] << 8) | 
(vsc_sdp->db[i + 2] << 16) |
+                      (vsc_sdp->db[i + 3] << 24));
+               msm_dp_write_link(msm_dp_catalog, MMSS_DP_GENERIC0_2 + i, val);
+       }
+}
+
+static void msm_dp_panel_update_sdp(struct msm_dp_panel_private *panel)
+{
+       u32 hw_revision;
+
+       hw_revision = msm_dp_catalog_hw_revision(panel->catalog);
+       if (hw_revision >= DP_HW_VERSION_1_0 &&
+           hw_revision < DP_HW_VERSION_1_2) {
+               msm_dp_write_link(panel->catalog, MMSS_DP_SDP_CFG3, UPDATE_SDP);
+               msm_dp_write_link(panel->catalog, MMSS_DP_SDP_CFG3, 0x0);
+       }
+}
+
+void msm_dp_panel_enable_vsc_sdp(struct msm_dp_panel *msm_dp_panel, struct 
dp_sdp *vsc_sdp)
+{
+       struct msm_dp_panel_private *panel =
+               container_of(msm_dp_panel, struct msm_dp_panel_private, 
msm_dp_panel);
+       struct msm_dp_catalog *msm_dp_catalog = panel->catalog;
+       u32 cfg, cfg2, misc;
+
+       cfg = msm_dp_read_link(msm_dp_catalog, MMSS_DP_SDP_CFG);
+       cfg2 = msm_dp_read_link(msm_dp_catalog, MMSS_DP_SDP_CFG2);
+       misc = msm_dp_read_link(msm_dp_catalog, REG_DP_MISC1_MISC0);
+
+       cfg |= GEN0_SDP_EN;
+       msm_dp_write_link(msm_dp_catalog, MMSS_DP_SDP_CFG, cfg);
+
+       cfg2 |= GENERIC0_SDPSIZE_VALID;
+       msm_dp_write_link(msm_dp_catalog, MMSS_DP_SDP_CFG2, cfg2);
+
+       msm_dp_panel_send_vsc_sdp(panel, vsc_sdp);
+
+       /* indicates presence of VSC (BIT(6) of MISC1) */
+       misc |= DP_MISC1_VSC_SDP;
+
+       drm_dbg_dp(panel->drm_dev, "vsc sdp enable=1\n");
+
+       pr_debug("misc settings = 0x%x\n", misc);
+       msm_dp_write_link(msm_dp_catalog, REG_DP_MISC1_MISC0, misc);
+
+       msm_dp_panel_update_sdp(panel);
+}
+
+void msm_dp_panel_disable_vsc_sdp(struct msm_dp_panel *msm_dp_panel)
+{
+       struct msm_dp_panel_private *panel =
+               container_of(msm_dp_panel, struct msm_dp_panel_private, 
msm_dp_panel);
+       struct msm_dp_catalog *msm_dp_catalog = panel->catalog;
+       u32 cfg, cfg2, misc;
+
+       cfg = msm_dp_read_link(msm_dp_catalog, MMSS_DP_SDP_CFG);
+       cfg2 = msm_dp_read_link(msm_dp_catalog, MMSS_DP_SDP_CFG2);
+       misc = msm_dp_read_link(msm_dp_catalog, REG_DP_MISC1_MISC0);
+
+       cfg &= ~GEN0_SDP_EN;
+       msm_dp_write_link(msm_dp_catalog, MMSS_DP_SDP_CFG, cfg);
+
+       cfg2 &= ~GENERIC0_SDPSIZE_VALID;
+       msm_dp_write_link(msm_dp_catalog, MMSS_DP_SDP_CFG2, cfg2);
+
+       /* switch back to MSA */
+       misc &= ~DP_MISC1_VSC_SDP;
+
+       drm_dbg_dp(panel->drm_dev, "vsc sdp enable=0\n");
+
+       pr_debug("misc settings = 0x%x\n", misc);
+       msm_dp_write_link(msm_dp_catalog, REG_DP_MISC1_MISC0, misc);
+
+       msm_dp_panel_update_sdp(panel);
+}
+
 static int msm_dp_panel_setup_vsc_sdp_yuv_420(struct msm_dp_panel 
*msm_dp_panel)
 {
-       struct msm_dp_catalog *catalog;
-       struct msm_dp_panel_private *panel;
        struct msm_dp_display_mode *msm_dp_mode;
        struct drm_dp_vsc_sdp vsc_sdp_data;
        struct dp_sdp vsc_sdp;
@@ -256,8 +346,6 @@ static int msm_dp_panel_setup_vsc_sdp_yuv_420(struct 
msm_dp_panel *msm_dp_panel)
                return -EINVAL;
        }
 
-       panel = container_of(msm_dp_panel, struct msm_dp_panel_private, 
msm_dp_panel);
-       catalog = panel->catalog;
        msm_dp_mode = &msm_dp_panel->msm_dp_mode;
 
        memset(&vsc_sdp_data, 0, sizeof(vsc_sdp_data));
@@ -284,7 +372,7 @@ static int msm_dp_panel_setup_vsc_sdp_yuv_420(struct 
msm_dp_panel *msm_dp_panel)
                return len;
        }
 
-       msm_dp_catalog_panel_enable_vsc_sdp(catalog, &vsc_sdp);
+       msm_dp_panel_enable_vsc_sdp(msm_dp_panel, &vsc_sdp);
 
        return 0;
 }
@@ -299,6 +387,7 @@ int msm_dp_panel_timing_cfg(struct msm_dp_panel 
*msm_dp_panel)
        u32 sync_start;
        u32 msm_dp_active;
        u32 total;
+       u32 reg;
 
        panel = container_of(msm_dp_panel, struct msm_dp_panel_private, 
msm_dp_panel);
        catalog = panel->catalog;
@@ -344,7 +433,20 @@ int msm_dp_panel_timing_cfg(struct msm_dp_panel 
*msm_dp_panel)
 
        msm_dp_active = data;
 
-       msm_dp_catalog_panel_timing_cfg(catalog, total, sync_start, 
width_blanking, msm_dp_active);
+       msm_dp_write_link(catalog, REG_DP_TOTAL_HOR_VER, total);
+       msm_dp_write_link(catalog, REG_DP_START_HOR_VER_FROM_SYNC, sync_start);
+       msm_dp_write_link(catalog, REG_DP_HSYNC_VSYNC_WIDTH_POLARITY, 
width_blanking);
+       msm_dp_write_link(catalog, REG_DP_ACTIVE_HOR_VER, msm_dp_active);
+
+       reg = msm_dp_read_p0(catalog, MMSS_DP_INTF_CONFIG);
+       if (catalog->wide_bus_en)
+               reg |= DP_INTF_CONFIG_DATABUS_WIDEN;
+       else
+               reg &= ~DP_INTF_CONFIG_DATABUS_WIDEN;
+
+       drm_dbg_dp(panel->drm_dev, "wide_bus_en=%d reg=%#x\n", 
catalog->wide_bus_en, reg);
+
+       msm_dp_write_p0(catalog, MMSS_DP_INTF_CONFIG, reg);
 
        if (msm_dp_panel->msm_dp_mode.out_fmt_is_yuv_420)
                msm_dp_panel_setup_vsc_sdp_yuv_420(msm_dp_panel);
diff --git a/drivers/gpu/drm/msm/dp/dp_panel.h 
b/drivers/gpu/drm/msm/dp/dp_panel.h
index 
317e2a13d7e917acd78edd2f1c99c4be3de902bd..332ac79594e71157e2b087dc5268c50a87993d83
 100644
--- a/drivers/gpu/drm/msm/dp/dp_panel.h
+++ b/drivers/gpu/drm/msm/dp/dp_panel.h
@@ -63,6 +63,9 @@ int msm_dp_panel_get_modes(struct msm_dp_panel *msm_dp_panel,
                struct drm_connector *connector);
 void msm_dp_panel_handle_sink_request(struct msm_dp_panel *msm_dp_panel);
 
+void msm_dp_panel_enable_vsc_sdp(struct msm_dp_panel *msm_dp_panel, struct 
dp_sdp *vsc_sdp);
+void msm_dp_panel_disable_vsc_sdp(struct msm_dp_panel *msm_dp_panel);
+
 /**
  * is_link_rate_valid() - validates the link rate
  * @lane_rate: link rate requested by the sink

-- 
2.39.5

Reply via email to