summaryrefslogtreecommitdiffstats
path: root/target/linux/layerscape/patches-5.4/805-display-0010-drm-bridge-cadence-move-struct-imx_mhdp_device-to-dr.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/layerscape/patches-5.4/805-display-0010-drm-bridge-cadence-move-struct-imx_mhdp_device-to-dr.patch')
-rw-r--r--target/linux/layerscape/patches-5.4/805-display-0010-drm-bridge-cadence-move-struct-imx_mhdp_device-to-dr.patch1096
1 files changed, 0 insertions, 1096 deletions
diff --git a/target/linux/layerscape/patches-5.4/805-display-0010-drm-bridge-cadence-move-struct-imx_mhdp_device-to-dr.patch b/target/linux/layerscape/patches-5.4/805-display-0010-drm-bridge-cadence-move-struct-imx_mhdp_device-to-dr.patch
deleted file mode 100644
index 74e5a58364..0000000000
--- a/target/linux/layerscape/patches-5.4/805-display-0010-drm-bridge-cadence-move-struct-imx_mhdp_device-to-dr.patch
+++ /dev/null
@@ -1,1096 +0,0 @@
-From fe1824851dd6f7d3ee6d5411edba4102dacea873 Mon Sep 17 00:00:00 2001
-From: Sandor Yu <Sandor.yu@nxp.com>
-Date: Wed, 11 Sep 2019 17:16:47 +0800
-Subject: [PATCH] drm: bridge: cadence: move struct imx_mhdp_device to drm/imx
-
-move struct imx_mhdp_device to drm/imx folder.
-change the base address name from regs to regs_base.
-add mhdp bus access function.
-uniform variable name.
-
-Signed-off-by: Sandor Yu <Sandor.yu@nxp.com>
----
- drivers/gpu/drm/bridge/cadence/cdns-dp-core.c | 188 ++++++++++-----------
- drivers/gpu/drm/bridge/cadence/cdns-hdmi-core.c | 190 ++++++++++------------
- drivers/gpu/drm/bridge/cadence/cdns-mhdp-audio.c | 1 -
- drivers/gpu/drm/bridge/cadence/cdns-mhdp-cec.c | 2 +-
- drivers/gpu/drm/bridge/cadence/cdns-mhdp-common.c | 43 ++---
- drivers/gpu/drm/bridge/cadence/cdns-mhdp-hdmi.c | 1 -
- include/drm/bridge/cdns-mhdp-common.h | 67 +++++++-
- include/drm/bridge/cdns-mhdp-imx.h | 121 --------------
- 8 files changed, 258 insertions(+), 355 deletions(-)
- delete mode 100644 include/drm/bridge/cdns-mhdp-imx.h
-
---- a/drivers/gpu/drm/bridge/cadence/cdns-dp-core.c
-+++ b/drivers/gpu/drm/bridge/cadence/cdns-dp-core.c
-@@ -9,8 +9,7 @@
- * (at your option) any later version.
- *
- */
--
--#include <drm/bridge/cdns-mhdp-imx.h>
-+#include <drm/bridge/cdns-mhdp-common.h>
- #include <drm/drm_atomic_helper.h>
- #include <drm/drm_crtc_helper.h>
- #include <drm/drm_edid.h>
-@@ -25,8 +24,6 @@
- #include <linux/mutex.h>
- #include <linux/of_device.h>
-
--#define aux_to_hdp(x) container_of(x, struct imx_mhdp_device, aux)
--
- /*
- * This function only implements native DPDC reads and writes
- */
-@@ -111,24 +108,24 @@ static void dp_pixel_clk_reset(struct cd
- cdns_mhdp_reg_write(mhdp, SOURCE_HDTX_CAR, val);
- }
-
--static void cdns_dp_mode_set(struct imx_mhdp_device *dp,
-+static void cdns_dp_mode_set(struct cdns_mhdp_device *mhdp,
- const struct drm_display_mode *mode)
- {
- struct drm_dp_link link;
-- struct cdns_mhdp_device *mhdp = &dp->mhdp;
- u32 lane_mapping = mhdp->lane_mapping;
- int ret;
- char linkid[6];
-
- memcpy(&mhdp->mode, mode, sizeof(struct drm_display_mode));
-
-- dp->dual_mode = video_is_dual_mode(mode);
-+ //Sandor TODO
-+// mhdp->dual_mode = video_is_dual_mode(mode);
-
- dp_pixel_clk_reset(mhdp);
-
-- hdp_plat_call(dp, pclock_change);
-+ cdns_mhdp_plat_call(mhdp, pclk_rate);
-
-- hdp_plat_call(dp, phy_init);
-+ cdns_mhdp_plat_call(mhdp, phy_set);
-
- ret = drm_dp_downstream_id(&mhdp->dp.aux, linkid);
- if (ret < 0) {
-@@ -168,7 +165,7 @@ static void cdns_dp_mode_set(struct imx_
- /* initialize phy if lanes or link rate differnt */
- if (mhdp->dp.link.num_lanes != mhdp->dp.num_lanes ||
- mhdp->dp.link.rate != mhdp->dp.link_rate)
-- hdp_plat_call(dp, phy_init);
-+ cdns_mhdp_plat_call(mhdp, phy_set);
-
- /* Video off */
- ret = cdns_mhdp_set_video_status(mhdp, CONTROL_VIDEO_IDLE);
-@@ -215,11 +212,11 @@ static void cdns_dp_mode_set(struct imx_
- static enum drm_connector_status
- cdns_dp_connector_detect(struct drm_connector *connector, bool force)
- {
-- struct imx_mhdp_device *dp = container_of(connector,
-- struct imx_mhdp_device, mhdp.connector.base);
-+ struct cdns_mhdp_device *mhdp = container_of(connector,
-+ struct cdns_mhdp_device, connector.base);
- u8 hpd = 0xf;
-
-- hpd = cdns_mhdp_read_hpd(&dp->mhdp);
-+ hpd = cdns_mhdp_read_hpd(mhdp);
- if (hpd == 1)
- /* Cable Connected */
- return connector_status_connected;
-@@ -235,15 +232,15 @@ cdns_dp_connector_detect(struct drm_conn
-
- static int cdns_dp_connector_get_modes(struct drm_connector *connector)
- {
-- struct imx_mhdp_device *dp = container_of(connector,
-- struct imx_mhdp_device, mhdp.connector.base);
-+ struct cdns_mhdp_device *mhdp = container_of(connector,
-+ struct cdns_mhdp_device, connector.base);
- int num_modes = 0;
- struct edid *edid;
-
-- edid = drm_do_get_edid(&dp->mhdp.connector.base,
-- cdns_mhdp_get_edid_block, &dp->mhdp);
-+ edid = drm_do_get_edid(&mhdp->connector.base,
-+ cdns_mhdp_get_edid_block, mhdp);
- if (edid) {
-- dev_info(dp->mhdp.dev, "%x,%x,%x,%x,%x,%x,%x,%x\n",
-+ dev_info(mhdp->dev, "%x,%x,%x,%x,%x,%x,%x,%x\n",
- edid->header[0], edid->header[1],
- edid->header[2], edid->header[3],
- edid->header[4], edid->header[5],
-@@ -273,9 +270,9 @@ static const struct drm_connector_helper
-
- static int cdns_dp_bridge_attach(struct drm_bridge *bridge)
- {
-- struct imx_mhdp_device *dp = bridge->driver_private;
-+ struct cdns_mhdp_device *mhdp = bridge->driver_private;
- struct drm_encoder *encoder = bridge->encoder;
-- struct drm_connector *connector = &dp->mhdp.connector.base;
-+ struct drm_connector *connector = &mhdp->connector.base;
-
- connector->interlace_allowed = 1;
- connector->polled = DRM_CONNECTOR_POLL_HPD;
-@@ -319,9 +316,9 @@ static void cdns_dp_bridge_mode_set(stru
- const struct drm_display_mode *orig_mode,
- const struct drm_display_mode *mode)
- {
-- struct imx_mhdp_device *dp = bridge->driver_private;
-- struct drm_display_info *display_info = &dp->mhdp.connector.base.display_info;
-- struct video_info *video = &dp->mhdp.video_info;
-+ struct cdns_mhdp_device *mhdp = bridge->driver_private;
-+ struct drm_display_info *display_info = &mhdp->connector.base.display_info;
-+ struct video_info *video = &mhdp->video_info;
-
- switch (display_info->bpc) {
- case 10:
-@@ -341,11 +338,11 @@ static void cdns_dp_bridge_mode_set(stru
-
- DRM_INFO("Mode: %dx%dp%d\n", mode->hdisplay, mode->vdisplay, mode->clock);
-
-- mutex_lock(&dp->lock);
-+ mutex_lock(&mhdp->lock);
-
-- cdns_dp_mode_set(dp, mode);
-+ cdns_dp_mode_set(mhdp, mode);
-
-- mutex_unlock(&dp->lock);
-+ mutex_unlock(&mhdp->lock);
- }
-
- static void cdn_hdp_bridge_enable(struct drm_bridge *bridge)
-@@ -354,8 +351,7 @@ static void cdn_hdp_bridge_enable(struct
-
- static void cdn_hdp_bridge_disable(struct drm_bridge *bridge)
- {
-- struct imx_mhdp_device *dp = bridge->driver_private;
-- struct cdns_mhdp_device *mhdp = &dp->mhdp;
-+ struct cdns_mhdp_device *mhdp = bridge->driver_private;
-
- cdns_mhdp_set_video_status(mhdp, CONTROL_VIDEO_IDLE);
- drm_dp_link_power_down(&mhdp->dp.aux, &mhdp->dp.link);
-@@ -371,29 +367,29 @@ static const struct drm_bridge_funcs cdn
-
- static void hotplug_work_func(struct work_struct *work)
- {
-- struct imx_mhdp_device *dp = container_of(work,
-- struct imx_mhdp_device, hotplug_work.work);
-- struct drm_connector *connector = &dp->mhdp.connector.base;
-+ struct cdns_mhdp_device *mhdp = container_of(work,
-+ struct cdns_mhdp_device, hotplug_work.work);
-+ struct drm_connector *connector = &mhdp->connector.base;
-
- drm_helper_hpd_irq_event(connector->dev);
-
- if (connector->status == connector_status_connected) {
- DRM_INFO("HDMI/DP Cable Plug In\n");
-- enable_irq(dp->irq[IRQ_OUT]);
-+ enable_irq(mhdp->irq[IRQ_OUT]);
- } else if (connector->status == connector_status_disconnected) {
- /* Cable Disconnedted */
- DRM_INFO("HDMI/DP Cable Plug Out\n");
-- enable_irq(dp->irq[IRQ_IN]);
-+ enable_irq(mhdp->irq[IRQ_IN]);
- }
- }
-
- static irqreturn_t cdns_dp_irq_thread(int irq, void *data)
- {
-- struct imx_mhdp_device *dp = data;
-+ struct cdns_mhdp_device *mhdp = data;
-
- disable_irq_nosync(irq);
-
-- mod_delayed_work(system_wq, &dp->hotplug_work,
-+ mod_delayed_work(system_wq, &mhdp->hotplug_work,
- msecs_to_jiffies(HOTPLUG_DEBOUNCE_MS));
-
- return IRQ_HANDLED;
-@@ -430,111 +426,92 @@ static void cdns_dp_parse_dt(struct cdns
- mhdp->dp.link.rate= mhdp->dp.link_rate;
- }
-
--static struct imx_mhdp_device *
--__cdns_dp_probe(struct platform_device *pdev,
-- const struct cdn_plat_data *plat_data)
-+static int __cdns_dp_probe(struct platform_device *pdev,
-+ struct cdns_mhdp_device *mhdp)
- {
- struct device *dev = &pdev->dev;
-- struct imx_mhdp_device *dp;
- struct resource *iores = NULL;
- int ret;
-
-- dp = devm_kzalloc(dev, sizeof(*dp), GFP_KERNEL);
-- if (!dp)
-- return ERR_PTR(-ENOMEM);
--
-- dp->plat_data = plat_data;
-- dp->mhdp.dev = dev;
--
-- mutex_init(&dp->lock);
-- mutex_init(&dp->audio_mutex);
-- spin_lock_init(&dp->audio_lock);
-+ mutex_init(&mhdp->lock);
-
-- INIT_DELAYED_WORK(&dp->hotplug_work, hotplug_work_func);
-+ INIT_DELAYED_WORK(&mhdp->hotplug_work, hotplug_work_func);
-
- iores = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-- dp->mhdp.regs = devm_ioremap(dev, iores->start, resource_size(iores));
-- if (IS_ERR(dp->mhdp.regs)) {
-- ret = PTR_ERR(dp->mhdp.regs);
-- goto err_out;
-- }
-+ mhdp->regs_base = devm_ioremap(dev, iores->start, resource_size(iores));
-+ if (IS_ERR(mhdp->regs_base))
-+ return -ENOMEM;
-
--#if 0
- iores = platform_get_resource(pdev, IORESOURCE_MEM, 1);
-- dp->regs_ss = devm_ioremap(dev, iores->start, resource_size(iores));
-- if (IS_ERR(dp->regs_ss)) {
-- ret = PTR_ERR(dp->regs_ss);
-- goto err_out;
-- }
--#endif
-+ mhdp->regs_sec = devm_ioremap(dev, iores->start, resource_size(iores));
-+ if (IS_ERR(mhdp->regs_sec))
-+ return -ENOMEM;
-
-- dp->irq[IRQ_IN] = platform_get_irq_byname(pdev, "plug_in");
-- if (dp->irq[IRQ_IN] < 0)
-+ mhdp->irq[IRQ_IN] = platform_get_irq_byname(pdev, "plug_in");
-+ if (mhdp->irq[IRQ_IN] < 0)
- dev_info(dev, "No plug_in irq number\n");
-
-- dp->irq[IRQ_OUT] = platform_get_irq_byname(pdev, "plug_out");
-- if (dp->irq[IRQ_OUT] < 0)
-+ mhdp->irq[IRQ_OUT] = platform_get_irq_byname(pdev, "plug_out");
-+ if (mhdp->irq[IRQ_OUT] < 0)
- dev_info(dev, "No plug_out irq number\n");
-
-- cdns_dp_parse_dt(&dp->mhdp);
-+ cdns_dp_parse_dt(mhdp);
-
-- dp->dual_mode = false;
-- hdp_plat_call(dp, fw_init);
-+// mhdp->dual_mode = false;
-+ cdns_mhdp_plat_call(mhdp, firmware_init);
-
- /* DP FW alive check */
-- ret = cdns_mhdp_check_alive(&dp->mhdp);
-+ ret = cdns_mhdp_check_alive(mhdp);
- if (ret == false) {
- DRM_ERROR("NO dp FW running\n");
-- return ERR_PTR(-ENXIO);
-+ return -ENXIO;
- }
-
- /* DP PHY init before AUX init */
-- hdp_plat_call(dp, phy_init);
-+ cdns_mhdp_plat_call(mhdp, phy_set);
-
- /* Enable Hotplug Detect IRQ thread */
-- irq_set_status_flags(dp->irq[IRQ_IN], IRQ_NOAUTOEN);
-- ret = devm_request_threaded_irq(dev, dp->irq[IRQ_IN],
-+ irq_set_status_flags(mhdp->irq[IRQ_IN], IRQ_NOAUTOEN);
-+ ret = devm_request_threaded_irq(dev, mhdp->irq[IRQ_IN],
- NULL, cdns_dp_irq_thread,
- IRQF_ONESHOT, dev_name(dev),
-- dp);
-+ mhdp);
- if (ret) {
- dev_err(dev, "can't claim irq %d\n",
-- dp->irq[IRQ_IN]);
-- goto err_out;
-+ mhdp->irq[IRQ_IN]);
-+ return -EINVAL;
- }
-
-- irq_set_status_flags(dp->irq[IRQ_OUT], IRQ_NOAUTOEN);
-- ret = devm_request_threaded_irq(dev, dp->irq[IRQ_OUT],
-+ irq_set_status_flags(mhdp->irq[IRQ_OUT], IRQ_NOAUTOEN);
-+ ret = devm_request_threaded_irq(dev, mhdp->irq[IRQ_OUT],
- NULL, cdns_dp_irq_thread,
- IRQF_ONESHOT, dev_name(dev),
-- dp);
-+ mhdp);
- if (ret) {
- dev_err(dev, "can't claim irq %d\n",
-- dp->irq[IRQ_OUT]);
-- goto err_out;
-+ mhdp->irq[IRQ_OUT]);
-+ return -EINVAL;
- }
-- if (cdns_mhdp_read_hpd(&dp->mhdp))
-- enable_irq(dp->irq[IRQ_OUT]);
-+
-+ if (cdns_mhdp_read_hpd(mhdp))
-+ enable_irq(mhdp->irq[IRQ_OUT]);
- else
-- enable_irq(dp->irq[IRQ_IN]);
-+ enable_irq(mhdp->irq[IRQ_IN]);
-
-- dp->mhdp.bridge.base.driver_private = dp;
-- dp->mhdp.bridge.base.funcs = &cdns_dp_bridge_funcs;
-+ mhdp->bridge.base.driver_private = mhdp;
-+ mhdp->bridge.base.funcs = &cdns_dp_bridge_funcs;
- #ifdef CONFIG_OF
-- dp->mhdp.bridge.base.of_node = dev->of_node;
-+ mhdp->bridge.base.of_node = dev->of_node;
- #endif
-
-- dev_set_drvdata(dev, &dp->mhdp);
-+ dev_set_drvdata(dev, mhdp);
-
- /* register audio driver */
- cdns_mhdp_register_audio_driver(dev);
-
-- dp_aux_init(&dp->mhdp, dev);
--
-- return dp;
-+ dp_aux_init(mhdp, dev);
-
--err_out:
-- return ERR_PTR(ret);
-+ return 0;
- }
-
- static void __cdns_dp_remove(struct cdns_mhdp_device *mhdp)
-@@ -547,15 +524,15 @@ static void __cdns_dp_remove(struct cdns
- * Probe/remove API, used from platforms based on the DRM bridge API.
- */
- int cdns_dp_probe(struct platform_device *pdev,
-- const struct cdn_plat_data *plat_data)
-+ struct cdns_mhdp_device *mhdp)
- {
-- struct imx_mhdp_device *dp;
-+ int ret;
-
-- dp = __cdns_dp_probe(pdev, plat_data);
-- if (IS_ERR(dp))
-- return PTR_ERR(dp);
-+ ret = __cdns_dp_probe(pdev, mhdp);
-+ if (ret)
-+ return ret;
-
-- drm_bridge_add(&dp->mhdp.bridge.base);
-+ drm_bridge_add(&mhdp->bridge.base);
-
- return 0;
- }
-@@ -575,16 +552,15 @@ EXPORT_SYMBOL_GPL(cdns_dp_remove);
- * Bind/unbind API, used from platforms based on the component framework.
- */
- int cdns_dp_bind(struct platform_device *pdev, struct drm_encoder *encoder,
-- const struct cdn_plat_data *plat_data)
-+ struct cdns_mhdp_device *mhdp)
- {
-- struct imx_mhdp_device *dp;
- int ret;
-
-- dp = __cdns_dp_probe(pdev, plat_data);
-- if (IS_ERR(dp))
-- return PTR_ERR(dp);
-+ ret = __cdns_dp_probe(pdev, mhdp);
-+ if (ret < 0)
-+ return ret;
-
-- ret = drm_bridge_attach(encoder, &dp->mhdp.bridge.base, NULL);
-+ ret = drm_bridge_attach(encoder, &mhdp->bridge.base, NULL);
- if (ret) {
- cdns_dp_remove(pdev);
- DRM_ERROR("Failed to initialize bridge with drm\n");
---- a/drivers/gpu/drm/bridge/cadence/cdns-hdmi-core.c
-+++ b/drivers/gpu/drm/bridge/cadence/cdns-hdmi-core.c
-@@ -9,7 +9,7 @@
- * (at your option) any later version.
- *
- */
--#include <drm/bridge/cdns-mhdp-imx.h>
-+#include <drm/bridge/cdns-mhdp-common.h>
- #include <drm/drm_atomic_helper.h>
- #include <drm/drm_crtc_helper.h>
- #include <drm/drm_edid.h>
-@@ -60,8 +60,6 @@ static int hdmi_sink_config(struct cdns_
- static void hdmi_lanes_config(struct cdns_mhdp_device *mhdp)
- {
- /* Line swaping */
-- /* For imx8qm lane_mapping = 0x93
-- * For imx8mq lane_mapping = 0xe4*/
- cdns_mhdp_reg_write(mhdp, LANES_CONFIG, 0x00400000 | mhdp->lane_mapping);
- }
-
-@@ -216,12 +214,12 @@ void cdns_hdmi_mode_set(struct cdns_mhdp
- static enum drm_connector_status
- cdns_hdmi_connector_detect(struct drm_connector *connector, bool force)
- {
-- struct imx_mhdp_device *hdmi =
-- container_of(connector, struct imx_mhdp_device, mhdp.connector.base);
-+ struct cdns_mhdp_device *mhdp =
-+ container_of(connector, struct cdns_mhdp_device, connector.base);
-
- u8 hpd = 0xf;
-
-- hpd = cdns_mhdp_read_hpd(&hdmi->mhdp);
-+ hpd = cdns_mhdp_read_hpd(mhdp);
-
- if (hpd == 1)
- /* Cable Connected */
-@@ -238,15 +236,15 @@ cdns_hdmi_connector_detect(struct drm_co
-
- static int cdns_hdmi_connector_get_modes(struct drm_connector *connector)
- {
-- struct imx_mhdp_device *hdmi = container_of(connector, struct imx_mhdp_device,
-- mhdp.connector.base);
-+ struct cdns_mhdp_device *mhdp =
-+ container_of(connector, struct cdns_mhdp_device, connector.base);
- int num_modes = 0;
- struct edid *edid;
-
-- edid = drm_do_get_edid(&hdmi->mhdp.connector.base,
-- cdns_hdmi_get_edid_block, &hdmi->mhdp);
-+ edid = drm_do_get_edid(&mhdp->connector.base,
-+ cdns_hdmi_get_edid_block, mhdp);
- if (edid) {
-- dev_info(hdmi->mhdp.dev, "%x,%x,%x,%x,%x,%x,%x,%x\n",
-+ dev_info(mhdp->dev, "%x,%x,%x,%x,%x,%x,%x,%x\n",
- edid->header[0], edid->header[1],
- edid->header[2], edid->header[3],
- edid->header[4], edid->header[5],
-@@ -276,9 +274,9 @@ static const struct drm_connector_helper
-
- static int cdns_hdmi_bridge_attach(struct drm_bridge *bridge)
- {
-- struct imx_mhdp_device *hdmi = bridge->driver_private;
-+ struct cdns_mhdp_device *mhdp = bridge->driver_private;
- struct drm_encoder *encoder = bridge->encoder;
-- struct drm_connector *connector = &hdmi->mhdp.connector.base;
-+ struct drm_connector *connector = &mhdp->connector.base;
-
- connector->interlace_allowed = 1;
- connector->polled = DRM_CONNECTOR_POLL_HPD;
-@@ -319,9 +317,9 @@ static void cdns_hdmi_bridge_mode_set(st
- const struct drm_display_mode *orig_mode,
- const struct drm_display_mode *mode)
- {
-- struct imx_mhdp_device *hdmi = bridge->driver_private;
-- struct drm_display_info *display_info = &hdmi->mhdp.connector.base.display_info;
-- struct video_info *video = &hdmi->mhdp.video_info;
-+ struct cdns_mhdp_device *mhdp = bridge->driver_private;
-+ struct drm_display_info *display_info = &mhdp->connector.base.display_info;
-+ struct video_info *video = &mhdp->video_info;
-
- switch (display_info->bpc) {
- case 10:
-@@ -339,23 +337,24 @@ static void cdns_hdmi_bridge_mode_set(st
- video->v_sync_polarity = !!(mode->flags & DRM_MODE_FLAG_NVSYNC);
- video->h_sync_polarity = !!(mode->flags & DRM_MODE_FLAG_NHSYNC);
-
-- mutex_lock(&hdmi->lock);
-+ mutex_lock(&mhdp->lock);
-
- DRM_INFO("Mode: %dx%dp%d\n", mode->hdisplay, mode->vdisplay, mode->clock);
-
-- memcpy(&hdmi->mhdp.mode, mode, sizeof(struct drm_display_mode));
-+ memcpy(&mhdp->mode, mode, sizeof(struct drm_display_mode));
-
-- hdmi->dual_mode = video_is_dual_mode(mode);
-+ //Sandor TODO
-+// hdmi->dual_mode = video_is_dual_mode(mode);
-
-- hdmi_lanes_config(&hdmi->mhdp);
-+ hdmi_lanes_config(mhdp);
-
-- hdp_plat_call(hdmi, pclock_change);
-+ cdns_mhdp_plat_call(mhdp, pclk_rate);
-
-- hdp_plat_call(hdmi, phy_init);
-+ cdns_mhdp_plat_call(mhdp, phy_set);
-
-- cdns_hdmi_mode_set(&hdmi->mhdp);
-+ cdns_hdmi_mode_set(mhdp);
-
-- mutex_unlock(&hdmi->lock);
-+ mutex_unlock(&mhdp->lock);
- }
-
- static const struct drm_bridge_funcs cdns_hdmi_bridge_funcs = {
-@@ -366,30 +365,30 @@ static const struct drm_bridge_funcs cdn
-
- static void hotplug_work_func(struct work_struct *work)
- {
-- struct imx_mhdp_device *hdmi = container_of(work,
-- struct imx_mhdp_device, hotplug_work.work);
-- struct drm_connector *connector = &hdmi->mhdp.connector.base;
-+ struct cdns_mhdp_device *mhdp = container_of(work,
-+ struct cdns_mhdp_device, hotplug_work.work);
-+ struct drm_connector *connector = &mhdp->connector.base;
-
- drm_helper_hpd_irq_event(connector->dev);
-
- if (connector->status == connector_status_connected) {
- /* Cable Connected */
- DRM_INFO("HDMI Cable Plug In\n");
-- enable_irq(hdmi->irq[IRQ_OUT]);
-+ enable_irq(mhdp->irq[IRQ_OUT]);
- } else if (connector->status == connector_status_disconnected) {
- /* Cable Disconnedted */
- DRM_INFO("HDMI Cable Plug Out\n");
-- enable_irq(hdmi->irq[IRQ_IN]);
-+ enable_irq(mhdp->irq[IRQ_IN]);
- }
- }
-
- static irqreturn_t cdns_hdmi_irq_thread(int irq, void *data)
- {
-- struct imx_mhdp_device *hdmi = data;
-+ struct cdns_mhdp_device *mhdp = data;
-
- disable_irq_nosync(irq);
-
-- mod_delayed_work(system_wq, &hdmi->hotplug_work,
-+ mod_delayed_work(system_wq, &mhdp->hotplug_work,
- msecs_to_jiffies(HOTPLUG_DEBOUNCE_MS));
-
- return IRQ_HANDLED;
-@@ -408,109 +407,99 @@ static void cdns_hdmi_parse_dt(struct cd
- dev_info(mhdp->dev, "lane-mapping 0x%02x\n", mhdp->lane_mapping);
- }
-
--static struct imx_mhdp_device *
--__cdns_hdmi_probe(struct platform_device *pdev,
-- const struct cdn_plat_data *plat_data)
-+static int __cdns_hdmi_probe(struct platform_device *pdev,
-+ struct cdns_mhdp_device *mhdp)
- {
- struct device *dev = &pdev->dev;
-- struct device_node *np = dev->of_node;
- struct platform_device_info pdevinfo;
-- struct imx_mhdp_device *hdmi;
- struct resource *iores = NULL;
- int ret;
-
-- hdmi = devm_kzalloc(dev, sizeof(*hdmi), GFP_KERNEL);
-- if (!hdmi)
-- return ERR_PTR(-ENOMEM);
--
-- hdmi->plat_data = plat_data;
-- hdmi->mhdp.dev = dev;
--
-- mutex_init(&hdmi->lock);
-- mutex_init(&hdmi->audio_mutex);
-- spin_lock_init(&hdmi->audio_lock);
-+ mutex_init(&mhdp->lock);
-
-- INIT_DELAYED_WORK(&hdmi->hotplug_work, hotplug_work_func);
-+ INIT_DELAYED_WORK(&mhdp->hotplug_work, hotplug_work_func);
-
- iores = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-- hdmi->mhdp.regs = devm_ioremap(dev, iores->start, resource_size(iores));
-- if (IS_ERR(hdmi->mhdp.regs)) {
-- ret = PTR_ERR(hdmi->mhdp.regs);
-- goto err_out;
-+ mhdp->regs_base = devm_ioremap(dev, iores->start, resource_size(iores));
-+ if (IS_ERR(mhdp->regs_base)) {
-+ dev_err(dev, "No regs_base memory\n");
-+ return -ENOMEM;
-+ }
-+
-+ /* sec register base */
-+ iores = platform_get_resource(pdev, IORESOURCE_MEM, 1);
-+ mhdp->regs_sec = devm_ioremap(dev, iores->start, resource_size(iores));
-+ if (IS_ERR(mhdp->regs_sec)) {
-+ dev_err(dev, "No regs_sec memory\n");
-+ return -ENOMEM;
- }
-
-- /* csr register base */
-- hdmi->regmap_csr = syscon_regmap_lookup_by_phandle(np, "csr");
-- if (IS_ERR(hdmi->regmap_csr)) {
-- dev_info(dev, "No csr regmap\n");
-- }
--
-- hdmi->irq[IRQ_IN] = platform_get_irq_byname(pdev, "plug_in");
-- if (hdmi->irq[IRQ_IN] < 0) {
-+ mhdp->irq[IRQ_IN] = platform_get_irq_byname(pdev, "plug_in");
-+ if (mhdp->irq[IRQ_IN] < 0) {
- dev_info(dev, "No plug_in irq number\n");
-- return ERR_PTR(-EPROBE_DEFER);
-+ return -EPROBE_DEFER;
- }
-
-- hdmi->irq[IRQ_OUT] = platform_get_irq_byname(pdev, "plug_out");
-- if (hdmi->irq[IRQ_OUT] < 0) {
-+ mhdp->irq[IRQ_OUT] = platform_get_irq_byname(pdev, "plug_out");
-+ if (mhdp->irq[IRQ_OUT] < 0) {
- dev_info(dev, "No plug_out irq number\n");
-- return ERR_PTR(-EPROBE_DEFER);
-+ return -EPROBE_DEFER;
- }
-
- /* Initialize dual_mode to false */
-- hdmi->dual_mode = false;
-+// hdmi->dual_mode = false;
-
- /* Initialize FW */
-- hdp_plat_call(hdmi, fw_init);
-+ cdns_mhdp_plat_call(mhdp, firmware_init);
-
- /* HDMI FW alive check */
-- ret = cdns_mhdp_check_alive(&hdmi->mhdp);
-+ ret = cdns_mhdp_check_alive(mhdp);
- if (ret == false) {
-- DRM_ERROR("NO HDMI FW running\n");
-- return ERR_PTR(-ENXIO);
-+ dev_err(dev, "NO HDMI FW running\n");
-+ return -ENXIO;
- }
-
- /* Enable Hotplug Detect thread */
-- irq_set_status_flags(hdmi->irq[IRQ_IN], IRQ_NOAUTOEN);
-- ret = devm_request_threaded_irq(dev, hdmi->irq[IRQ_IN],
-+ irq_set_status_flags(mhdp->irq[IRQ_IN], IRQ_NOAUTOEN);
-+ ret = devm_request_threaded_irq(dev, mhdp->irq[IRQ_IN],
- NULL, cdns_hdmi_irq_thread,
- IRQF_ONESHOT, dev_name(dev),
-- hdmi);
-- if (ret) {
-+ mhdp);
-+ if (ret < 0) {
- dev_err(dev, "can't claim irq %d\n",
-- hdmi->irq[IRQ_IN]);
-- goto err_out;
-+ mhdp->irq[IRQ_IN]);
-+ return -EINVAL;
- }
-
-- irq_set_status_flags(hdmi->irq[IRQ_OUT], IRQ_NOAUTOEN);
-- ret = devm_request_threaded_irq(dev, hdmi->irq[IRQ_OUT],
-+ irq_set_status_flags(mhdp->irq[IRQ_OUT], IRQ_NOAUTOEN);
-+ ret = devm_request_threaded_irq(dev, mhdp->irq[IRQ_OUT],
- NULL, cdns_hdmi_irq_thread,
- IRQF_ONESHOT, dev_name(dev),
-- hdmi);
-- if (ret) {
-+ mhdp);
-+ if (ret < 0) {
- dev_err(dev, "can't claim irq %d\n",
-- hdmi->irq[IRQ_OUT]);
-- goto err_out;
-+ mhdp->irq[IRQ_OUT]);
-+ return -EINVAL;
- }
-
-- cdns_hdmi_parse_dt(&hdmi->mhdp);
-+ cdns_hdmi_parse_dt(mhdp);
-
-- if (cdns_mhdp_read_hpd(&hdmi->mhdp))
-- enable_irq(hdmi->irq[IRQ_OUT]);
-+ if (cdns_mhdp_read_hpd(mhdp))
-+ enable_irq(mhdp->irq[IRQ_OUT]);
- else
-- enable_irq(hdmi->irq[IRQ_IN]);
-+ enable_irq(mhdp->irq[IRQ_IN]);
-
-- hdmi->mhdp.bridge.base.driver_private = hdmi;
-- hdmi->mhdp.bridge.base.funcs = &cdns_hdmi_bridge_funcs;
-+ mhdp->bridge.base.driver_private = mhdp;
-+ mhdp->bridge.base.funcs = &cdns_hdmi_bridge_funcs;
- #ifdef CONFIG_OF
-- hdmi->mhdp.bridge.base.of_node = dev->of_node;
-+ mhdp->bridge.base.of_node = dev->of_node;
- #endif
-
- memset(&pdevinfo, 0, sizeof(pdevinfo));
- pdevinfo.parent = dev;
- pdevinfo.id = PLATFORM_DEVID_AUTO;
-
-- dev_set_drvdata(dev, &hdmi->mhdp);
-+ dev_set_drvdata(dev, mhdp);
-
- /* register audio driver */
- cdns_mhdp_register_audio_driver(dev);
-@@ -520,11 +509,7 @@ __cdns_hdmi_probe(struct platform_device
- cdns_mhdp_register_cec_driver(dev);
- #endif
-
-- return hdmi;
--
--err_out:
--
-- return ERR_PTR(ret);
-+ return 0;
- }
-
- static void __cdns_hdmi_remove(struct cdns_mhdp_device *mhdp)
-@@ -540,15 +525,15 @@ static void __cdns_hdmi_remove(struct cd
- * Probe/remove API, used from platforms based on the DRM bridge API.
- */
- int cdns_hdmi_probe(struct platform_device *pdev,
-- const struct cdn_plat_data *plat_data)
-+ struct cdns_mhdp_device *mhdp)
- {
-- struct imx_mhdp_device *hdmi;
-+ int ret;
-
-- hdmi = __cdns_hdmi_probe(pdev, plat_data);
-- if (IS_ERR(hdmi))
-- return PTR_ERR(hdmi);
-+ ret = __cdns_hdmi_probe(pdev, mhdp);
-+ if (ret < 0)
-+ return ret;
-
-- drm_bridge_add(&hdmi->mhdp.bridge.base);
-+ drm_bridge_add(&mhdp->bridge.base);
-
- return 0;
- }
-@@ -568,16 +553,15 @@ EXPORT_SYMBOL_GPL(cdns_hdmi_remove);
- * Bind/unbind API, used from platforms based on the component framework.
- */
- int cdns_hdmi_bind(struct platform_device *pdev, struct drm_encoder *encoder,
-- const struct cdn_plat_data *plat_data)
-+ struct cdns_mhdp_device *mhdp)
- {
-- struct imx_mhdp_device *hdmi;
- int ret;
-
-- hdmi = __cdns_hdmi_probe(pdev, plat_data);
-- if (IS_ERR(hdmi))
-- return PTR_ERR(hdmi);
-+ ret = __cdns_hdmi_probe(pdev, mhdp);
-+ if (ret)
-+ return ret;
-
-- ret = drm_bridge_attach(encoder, &hdmi->mhdp.bridge.base, NULL);
-+ ret = drm_bridge_attach(encoder, &mhdp->bridge.base, NULL);
- if (ret) {
- cdns_hdmi_remove(pdev);
- DRM_ERROR("Failed to initialize bridge with drm\n");
---- a/drivers/gpu/drm/bridge/cadence/cdns-mhdp-audio.c
-+++ b/drivers/gpu/drm/bridge/cadence/cdns-mhdp-audio.c
-@@ -16,7 +16,6 @@
- #include <linux/reset.h>
- #include <drm/bridge/cdns-mhdp-common.h>
- #include <sound/hdmi-codec.h>
--#include <drm/bridge/cdns-mhdp-imx.h>
- #include <drm/drm_of.h>
- #include <drm/drmP.h>
-
---- a/drivers/gpu/drm/bridge/cadence/cdns-mhdp-cec.c
-+++ b/drivers/gpu/drm/bridge/cadence/cdns-mhdp-cec.c
-@@ -344,4 +344,4 @@ int cdns_mhdp_unregister_cec_driver(stru
-
- MODULE_AUTHOR("Sandor.Yu@NXP.com");
- MODULE_LICENSE("GPL");
--MODULE_DESCRIPTION("NXP CDNS MHDP CEC driver");
-+MODULE_DESCRIPTION("NXP CDNS MHDP HDMI CEC driver");
---- a/drivers/gpu/drm/bridge/cadence/cdns-mhdp-common.c
-+++ b/drivers/gpu/drm/bridge/cadence/cdns-mhdp-common.c
-@@ -23,7 +23,6 @@
- #include <asm/unaligned.h>
-
- #include <drm/bridge/cdns-mhdp-common.h>
--#include <drm/bridge/cdns-mhdp-imx.h>
- #include <drm/drm_modes.h>
- #include <drm/drm_print.h>
- #include <linux/regmap.h>
-@@ -74,18 +73,20 @@ static inline void put_unaligned_be24(u3
-
- u32 cdns_mhdp_bus_read(struct cdns_mhdp_device *mhdp, u32 offset)
- {
-- struct imx_mhdp_device *hdmi = container_of(mhdp, struct imx_mhdp_device, mhdp);
- u32 val;
-
-- /* TODO */
-- if (offset >= 0x1000 && hdmi->regmap_csr) {
-+ if (mhdp->bus_type == BUS_TYPE_LOW4K_SAPB) {
-+ /* Remap address to low 4K SAPB bus */
-+ writel(offset >> 12, mhdp->regs_sec + 0xc);
-+ val = readl((offset & 0xfff) + mhdp->regs_base);
-+ } else if (mhdp->bus_type == BUS_TYPE_LOW4K_APB) {
- /* Remap address to low 4K memory */
-- regmap_write(hdmi->regmap_csr, hdmi->csr_ctrl0_reg, offset >> 12);
-- val = readl((offset & 0xfff) + mhdp->regs);
-- /* Restore address mapping */
-- regmap_write(hdmi->regmap_csr, hdmi->csr_ctrl0_reg, 0);
-- } else
-- val = readl(mhdp->regs + offset);
-+ writel(offset >> 12, mhdp->regs_sec + 8);
-+ val = readl((offset & 0xfff) + mhdp->regs_base);
-+ } else if (mhdp->bus_type == BUS_TYPE_NORMAL_SAPB)
-+ val = readl(mhdp->regs_sec + offset);
-+ else
-+ val = readl(mhdp->regs_base + offset);
-
- return val;
- }
-@@ -93,18 +94,18 @@ EXPORT_SYMBOL(cdns_mhdp_bus_read);
-
- void cdns_mhdp_bus_write(u32 val, struct cdns_mhdp_device *mhdp, u32 offset)
- {
-- struct imx_mhdp_device *hdmi = container_of(mhdp, struct imx_mhdp_device, mhdp);
--
-- /* TODO */
-- if (offset >= 0x1000 && hdmi->regmap_csr) {
-+ if (mhdp->bus_type == BUS_TYPE_LOW4K_SAPB) {
-+ /* Remap address to low 4K SAPB bus */
-+ writel(offset >> 12, mhdp->regs_sec + 0xc);
-+ writel(val, (offset & 0xfff) + mhdp->regs_base);
-+ } else if (mhdp->bus_type == BUS_TYPE_LOW4K_APB) {
- /* Remap address to low 4K memory */
-- regmap_write(hdmi->regmap_csr, hdmi->csr_ctrl0_reg, offset >> 12);
-- writel(val, (offset & 0xfff) + mhdp->regs);
-- /* Restore address mapping */
-- regmap_write(hdmi->regmap_csr, hdmi->csr_ctrl0_reg, 0);
--
-- } else
-- writel(val, mhdp->regs + offset);
-+ writel(offset >> 12, mhdp->regs_sec + 8);
-+ writel(val, (offset & 0xfff) + mhdp->regs_base);
-+ } else if (mhdp->bus_type == BUS_TYPE_NORMAL_SAPB)
-+ writel(val, mhdp->regs_sec + offset);
-+ else
-+ writel(val, mhdp->regs_base + offset);
- }
- EXPORT_SYMBOL(cdns_mhdp_bus_write);
-
---- a/drivers/gpu/drm/bridge/cadence/cdns-mhdp-hdmi.c
-+++ b/drivers/gpu/drm/bridge/cadence/cdns-mhdp-hdmi.c
-@@ -10,7 +10,6 @@
- #include <drm/drmP.h>
- #include <linux/io.h>
- #include <drm/bridge/cdns-mhdp-common.h>
--#include <drm/bridge/cdns-mhdp-imx.h>
- #include <linux/regmap.h>
-
- void cdns_mhdp_infoframe_set(struct cdns_mhdp_device *mhdp,
---- a/include/drm/bridge/cdns-mhdp-common.h
-+++ b/include/drm/bridge/cdns-mhdp-common.h
-@@ -495,6 +495,22 @@
-
- #define HOTPLUG_DEBOUNCE_MS 200
-
-+#define IRQ_IN 0
-+#define IRQ_OUT 1
-+#define IRQ_NUM 2
-+
-+#define cdns_mhdp_plat_call(mhdp, operation) \
-+ (!(mhdp) ? -ENODEV : (((mhdp)->plat_data && (mhdp)->plat_data->operation) ? \
-+ (mhdp)->plat_data->operation(mhdp) : ENOIOCTLCMD))
-+
-+/* bus access type */
-+enum {
-+ BUS_TYPE_NORMAL_APB = 0,
-+ BUS_TYPE_NORMAL_SAPB = 1,
-+ BUS_TYPE_LOW4K_APB = 2,
-+ BUS_TYPE_LOW4K_SAPB = 3,
-+};
-+
- enum voltage_swing_level {
- VOLTAGE_LEVEL_0,
- VOLTAGE_LEVEL_1,
-@@ -616,8 +632,33 @@ struct cdns_mhdp_cec {
- };
- #endif
-
-+struct cdns_plat_data {
-+ /* Vendor PHY support */
-+ int (*bind)(struct platform_device *pdev,
-+ struct drm_encoder *encoder,
-+ struct cdns_mhdp_device *mhdp);
-+ void (*unbind)(struct device *dev);
-+
-+ void (*plat_init)(struct cdns_mhdp_device *mhdp);
-+ void (*plat_deinit)(struct cdns_mhdp_device *mhdp);
-+
-+ int (*phy_set)(struct cdns_mhdp_device *mhdp);
-+ int (*firmware_init)(struct cdns_mhdp_device *mhdp);
-+ void (*pclk_rate)(struct cdns_mhdp_device *mhdp);
-+
-+ int (*power_on)(struct cdns_mhdp_device *mhdp);
-+ int (*power_off)(struct cdns_mhdp_device *mhdp);
-+
-+ int bus_type;
-+ int video_format;
-+ char is_dp;
-+};
-+
- struct cdns_mhdp_device {
-- void __iomem *regs;
-+ void __iomem *regs_base;
-+ void __iomem *regs_sec;
-+
-+ int bus_type;
-
- struct device *dev;
-
-@@ -642,6 +683,9 @@ struct cdns_mhdp_device {
- bool link_up;
- bool power_up;
- bool plugged;
-+ struct mutex lock;
-+
-+ int irq[IRQ_NUM];
-
- union {
- struct _dp_data {
-@@ -663,6 +707,8 @@ struct cdns_mhdp_device {
- u32 hdmi_type;
- } hdmi;
- };
-+ const struct cdns_plat_data *plat_data;
-+
- };
-
- u32 cdns_mhdp_bus_read(struct cdns_mhdp_device *mhdp, u32 offset);
-@@ -727,6 +773,25 @@ int cdns_hdmi_disable_gcp(struct cdns_mh
- int cdns_hdmi_enable_gcp(struct cdns_mhdp_device *mhdp);
-
- bool cdns_mhdp_check_alive(struct cdns_mhdp_device *mhdp);
-+
-+/* HDMI */
-+int cdns_hdmi_probe(struct platform_device *pdev,
-+ struct cdns_mhdp_device *mhdp);
-+void cdns_hdmi_remove(struct platform_device *pdev);
-+void cdns_hdmi_unbind(struct device *dev);
-+int cdns_hdmi_bind(struct platform_device *pdev,
-+ struct drm_encoder *encoder, struct cdns_mhdp_device *mhdp);
-+void cdns_hdmi_set_sample_rate(struct cdns_mhdp_device *mhdp, unsigned int rate);
-+void cdns_hdmi_audio_enable(struct cdns_mhdp_device *mhdp);
-+void cdns_hdmi_audio_disable(struct cdns_mhdp_device *mhdp);
-+/* DP */
-+int cdns_dp_probe(struct platform_device *pdev,
-+ struct cdns_mhdp_device *mhdp);
-+void cdns_dp_remove(struct platform_device *pdev);
-+void cdns_dp_unbind(struct device *dev);
-+int cdns_dp_bind(struct platform_device *pdev,
-+ struct drm_encoder *encoder, struct cdns_mhdp_device *mhdp);
-+
- /* CEC */
- #ifdef CONFIG_DRM_CDNS_HDMI_CEC
- int cdns_mhdp_register_cec_driver(struct device *dev);
---- a/include/drm/bridge/cdns-mhdp-imx.h
-+++ /dev/null
-@@ -1,121 +0,0 @@
--/*
-- * Cadence High-Definition Multimedia Interface (HDMI) driver
-- *
-- * Copyright (C) 2019 NXP Semiconductor, Inc.
-- *
-- * This program is free software; you can redistribute it and/or modify
-- * it under the terms of the GNU General Public License as published by
-- * the Free Software Foundation; either version 2 of the License, or
-- * (at your option) any later version.
-- *
-- */
--#ifndef CDNS_MHDP_IMX_H_
--#define CDNS_MHDP_IMX_H_
--
--#include <drm/bridge/cdns-mhdp-common.h>
--
--#define IRQ_IN 0
--#define IRQ_OUT 1
--#define IRQ_NUM 2
--
--#define hdp_plat_call(hdp, operation) \
-- (!(hdp) ? -ENODEV : (((hdp)->plat_data && (hdp)->plat_data->operation) ? \
-- (hdp)->plat_data->operation(hdp) : ENOIOCTLCMD))
--
--#define HDP_DUAL_MODE_MIN_PCLK_RATE 300000 /* KHz */
--#define HDP_SINGLE_MODE_MAX_WIDTH 1920
--
--static inline bool video_is_dual_mode(const struct drm_display_mode *mode)
--{
-- return (mode->clock > HDP_DUAL_MODE_MIN_PCLK_RATE ||
-- mode->hdisplay > HDP_SINGLE_MODE_MAX_WIDTH) ? true : false;
--}
--
--struct imx_mhdp_device;
--
--struct imx_hdp_clks {
-- struct clk *av_pll;
-- struct clk *dig_pll;
-- struct clk *clk_ipg;
-- struct clk *clk_core;
-- struct clk *clk_pxl;
-- struct clk *clk_pxl_mux;
-- struct clk *clk_pxl_link;
--
-- struct clk *lpcg_hdp;
-- struct clk *lpcg_msi;
-- struct clk *lpcg_pxl;
-- struct clk *lpcg_vif;
-- struct clk *lpcg_lis;
-- struct clk *lpcg_apb;
-- struct clk *lpcg_apb_csr;
-- struct clk *lpcg_apb_ctrl;
--
-- struct clk *lpcg_i2s;
-- struct clk *clk_i2s_bypass;
--};
--
--struct cdn_plat_data {
-- /* Vendor PHY support */
-- int (*phy_init)(struct imx_mhdp_device *hdmi);
-- int (*bind)(struct platform_device *pdev,
-- struct drm_encoder *encoder,
-- const struct cdn_plat_data *plat_data);
-- void (*unbind)(struct device *dev);
-- int (*fw_init)(struct imx_mhdp_device *hdp);
-- void (*pclock_change)(struct imx_mhdp_device *hdp);
-- char is_dp;
--};
--
--struct imx_mhdp_device {
-- struct cdns_mhdp_device mhdp;
--
-- struct mutex lock;
-- struct mutex audio_mutex;
-- spinlock_t audio_lock;
-- bool connected;
-- bool active;
-- bool suspended;
-- struct imx_hdp_clks clks;
--
-- const struct cdn_plat_data *plat_data;
--
-- int irq[IRQ_NUM];
-- struct delayed_work hotplug_work;
-- //void __iomem *regmap_csr;
-- struct regmap *regmap_csr;
-- u32 csr_pxl_mux_reg;
-- u32 csr_ctrl0_reg;
-- u32 csr_ctrl0_sec;
--
-- struct audio_info audio_info;
-- bool sink_has_audio;
-- u32 dual_mode;
--
-- struct device *pd_mhdp_dev;
-- struct device *pd_pll0_dev;
-- struct device *pd_pll1_dev;
-- struct device_link *pd_mhdp_link;
-- struct device_link *pd_pll0_link;
-- struct device_link *pd_pll1_link;
--
-- u32 phy_init;
--};
--
--int cdns_hdmi_probe(struct platform_device *pdev,
-- const struct cdn_plat_data *plat_data);
--void cdns_hdmi_remove(struct platform_device *pdev);
--void cdns_hdmi_unbind(struct device *dev);
--int cdns_hdmi_bind(struct platform_device *pdev, struct drm_encoder *encoder,
-- const struct cdn_plat_data *plat_data);
--void cdns_hdmi_set_sample_rate(struct imx_mhdp_device *hdmi, unsigned int rate);
--void cdns_hdmi_audio_enable(struct imx_mhdp_device *hdmi);
--void cdns_hdmi_audio_disable(struct imx_mhdp_device *hdmi);
--int cdns_dp_probe(struct platform_device *pdev,
-- const struct cdn_plat_data *plat_data);
--void cdns_dp_remove(struct platform_device *pdev);
--void cdns_dp_unbind(struct device *dev);
--int cdns_dp_bind(struct platform_device *pdev, struct drm_encoder *encoder,
-- const struct cdn_plat_data *plat_data);
--
--#endif /* CDNS_MHDP_IMX_H_ */