]> git.sur5r.net Git - u-boot/blobdiff - drivers/video/rockchip/rk_edp.c
SPDX: Convert all of our single license tags to Linux Kernel style
[u-boot] / drivers / video / rockchip / rk_edp.c
index 7ece038c8fe45ece87d47b0f3400b7f7f9053a5b..e07410763248657c0e3671a38f4afd4b955a50ac 100644 (file)
@@ -1,8 +1,7 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * Copyright (c) 2015 Google, Inc
  * Copyright 2014 Rockchip Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
@@ -20,8 +19,6 @@
 #include <asm/arch/grf_rk3288.h>
 #include <dt-bindings/clock/rk3288-cru.h>
 
-DECLARE_GLOBAL_DATA_PTR;
-
 #define MAX_CR_LOOP 5
 #define MAX_EQ_LOOP 5
 #define DP_LINK_STATUS_SIZE 6
@@ -998,13 +995,26 @@ static int rk_edp_ofdata_to_platdata(struct udevice *dev)
 {
        struct rk_edp_priv *priv = dev_get_priv(dev);
 
-       priv->regs = (struct rk3288_edp *)dev_get_addr(dev);
+       priv->regs = (struct rk3288_edp *)devfdt_get_addr(dev);
        priv->grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
 
        return 0;
 }
 
-int rk_edp_probe(struct udevice *dev)
+static int rk_edp_remove(struct udevice *dev)
+{
+       struct rk_edp_priv *priv = dev_get_priv(dev);
+       struct rk3288_edp *regs = priv->regs;
+
+       setbits_le32(&regs->video_ctl_1, VIDEO_MUTE);
+       clrbits_le32(&regs->video_ctl_1, VIDEO_EN);
+       clrbits_le32(&regs->sys_ctl_3, F_HPD | HPD_CTRL);
+       setbits_le32(&regs->func_en_1, SW_FUNC_EN_N);
+
+       return 0;
+}
+
+static int rk_edp_probe(struct udevice *dev)
 {
        struct display_plat *uc_plat = dev_get_uclass_platdata(dev);
        struct rk_edp_priv *priv = dev_get_priv(dev);
@@ -1080,5 +1090,6 @@ U_BOOT_DRIVER(dp_rockchip) = {
        .ops    = &dp_rockchip_ops,
        .ofdata_to_platdata     = rk_edp_ofdata_to_platdata,
        .probe  = rk_edp_probe,
+       .remove = rk_edp_remove,
        .priv_auto_alloc_size   = sizeof(struct rk_edp_priv),
 };