From def2367077573b56f9fc4f824e5c0377a3a4175a Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Mon, 16 Oct 2023 02:45:46 +0000
Subject: [PATCH] 修改DO2-DO4初始为低
---
u-boot/drivers/video/drm/rockchip_panel.c | 128 ++++++++++++++++++++++++++++++++++++++++--
1 files changed, 121 insertions(+), 7 deletions(-)
diff --git a/u-boot/drivers/video/drm/rockchip_panel.c b/u-boot/drivers/video/drm/rockchip_panel.c
old mode 100644
new mode 100755
index de7e5e2..570bc99
--- a/u-boot/drivers/video/drm/rockchip_panel.c
+++ b/u-boot/drivers/video/drm/rockchip_panel.c
@@ -45,6 +45,7 @@
bool power_invert;
u32 bus_format;
unsigned int bpc;
+ unsigned int lvds_index;
struct {
unsigned int prepare;
@@ -66,6 +67,15 @@
struct udevice *backlight;
struct gpio_desc enable_gpio;
struct gpio_desc reset_gpio;
+ struct gpio_desc edp_bl_on;
+ struct gpio_desc edp_bl_en;
+ struct gpio_desc vcc_5v;
+ struct gpio_desc vddio_mipi;
+
+ struct gpio_desc lvds_gpio0;
+ struct gpio_desc lvds_gpio1;
+ struct gpio_desc lvds_gpio2;
+ struct gpio_desc lvds_gpio3;
int cmd_type;
struct gpio_desc spi_sdi_gpio;
@@ -275,24 +285,71 @@
if (priv->prepared)
return;
+ /*mipi */
+ if (dm_gpio_is_valid(&priv->vddio_mipi))
+ dm_gpio_set_value(&priv->vddio_mipi, 1);
+ mdelay(20);
+
+ if (dm_gpio_is_valid(&priv->vcc_5v))
+ dm_gpio_set_value(&priv->vcc_5v, 1);
+
+ ret = dm_gpio_get_value(&priv->vcc_5v);
+ printf("troy test get vcc_5v : %d \n",ret);
+ ret = dm_gpio_get_value(&priv->vddio_mipi);
+ printf("troy test get vddio-mipi : %d \n",ret);
+ /*mipi end*/
+
+ /*7511 LVDS IO Control start*/
+ printk("nodka_lvds_index = %d\n",plat->lvds_index);
+
+ ret = plat->lvds_index & 1;
+ if (dm_gpio_is_valid(&priv->lvds_gpio0))
+ dm_gpio_set_value(&priv->lvds_gpio0, ret);
+ ret = dm_gpio_get_value(&priv->lvds_gpio0);
+ printf("lvds_gpio0 : %d\n",ret);
+
+ ret = plat->lvds_index >> 1 & 1;
+ if (dm_gpio_is_valid(&priv->lvds_gpio1))
+ dm_gpio_set_value(&priv->lvds_gpio1, ret);
+ ret = dm_gpio_get_value(&priv->lvds_gpio1);
+ printf("lvds_gpio1 : %d\n",ret);
+
+ ret = plat->lvds_index >> 2 & 1;
+ if (dm_gpio_is_valid(&priv->lvds_gpio2))
+ dm_gpio_set_value(&priv->lvds_gpio2, ret);
+ ret = dm_gpio_get_value(&priv->lvds_gpio2);
+ printf("lvds_gpio2 : %d\n",ret);
+
+ ret = plat->lvds_index >> 3 & 1;
+ if (dm_gpio_is_valid(&priv->lvds_gpio3))
+ dm_gpio_set_value(&priv->lvds_gpio3, ret);
+ ret = dm_gpio_get_value(&priv->lvds_gpio3);
+ printf("lvds_gpio3 : %d\n",ret);
+ mdelay(100);
+/*7511 LVDS IO Control end*/
if (priv->power_supply)
regulator_set_enable(priv->power_supply, !plat->power_invert);
-
+
+ if (dm_gpio_is_valid(&priv->edp_bl_on))
+ dm_gpio_set_value(&priv->edp_bl_on, 1);
+
+ if (dm_gpio_is_valid(&priv->edp_bl_en))
+ dm_gpio_set_value(&priv->edp_bl_en, 1);
+
if (dm_gpio_is_valid(&priv->enable_gpio))
dm_gpio_set_value(&priv->enable_gpio, 1);
-
+
if (plat->delay.prepare)
mdelay(plat->delay.prepare);
-
+
if (dm_gpio_is_valid(&priv->reset_gpio))
dm_gpio_set_value(&priv->reset_gpio, 1);
-
- if (plat->delay.reset)
- mdelay(plat->delay.reset);
-
+ mdelay(50);
if (dm_gpio_is_valid(&priv->reset_gpio))
dm_gpio_set_value(&priv->reset_gpio, 0);
+
+ mdelay(200);
if (plat->delay.init)
mdelay(plat->delay.init);
@@ -407,6 +464,7 @@
plat->delay.disable = dev_read_u32_default(dev, "disable-delay-ms", 0);
plat->delay.init = dev_read_u32_default(dev, "init-delay-ms", 0);
plat->delay.reset = dev_read_u32_default(dev, "reset-delay-ms", 0);
+ plat->lvds_index = dev_read_u32_default(dev, "nodka-lvds", 0);
plat->bus_format = dev_read_u32_default(dev, "bus-format",
MEDIA_BUS_FMT_RBG888_1X24);
@@ -457,6 +515,34 @@
int ret;
const char *cmd_type;
+ ret = gpio_request_by_name(dev, "vcc-5v-gpio", 0,
+ &priv->vcc_5v, GPIOD_IS_OUT);
+ if (ret && ret != -ENOENT) {
+ printf("%s: Cannot get vcc-5v-gpio: %d\n", __func__, ret);
+ return ret;
+ }
+
+ ret = gpio_request_by_name(dev, "vddio-mipi", 0,
+ &priv->vddio_mipi, GPIOD_IS_OUT);
+ if (ret && ret != -ENOENT) {
+ printf("%s: Cannot get vddio-mipi: %d\n", __func__, ret);
+ return ret;
+ }
+
+ ret = gpio_request_by_name(dev, "edp-bl-gpios", 0,
+ &priv->edp_bl_on, GPIOD_IS_OUT);
+ if (ret && ret != -ENOENT) {
+ printf("%s: Cannot get enable GPIO: %d\n", __func__, ret);
+ return ret;
+ }
+
+ ret = gpio_request_by_name(dev, "edp-bl-en", 0,
+ &priv->edp_bl_en, GPIOD_IS_OUT);
+ if (ret && ret != -ENOENT) {
+ printf("%s: Cannot get enable GPIO: %d\n", __func__, ret);
+ return ret;
+ }
+
ret = gpio_request_by_name(dev, "enable-gpios", 0,
&priv->enable_gpio, GPIOD_IS_OUT);
if (ret && ret != -ENOENT) {
@@ -471,6 +557,34 @@
return ret;
}
+ ret = gpio_request_by_name(dev, "lvds-gpio0", 0,
+ &priv->lvds_gpio0, GPIOD_IS_OUT);
+ if (ret && ret != -ENOENT) {
+ printf("%s: Cannot get lvds-gpio0: %d\n", __func__, ret);
+ return ret;
+ }
+
+ ret = gpio_request_by_name(dev, "lvds-gpio1", 0,
+ &priv->lvds_gpio1, GPIOD_IS_OUT);
+ if (ret && ret != -ENOENT) {
+ printf("%s: Cannot get lvds-gpio1: %d\n", __func__, ret);
+ return ret;
+ }
+
+ ret = gpio_request_by_name(dev, "lvds-gpio2", 0,
+ &priv->lvds_gpio2, GPIOD_IS_OUT);
+ if (ret && ret != -ENOENT) {
+ printf("%s: Cannot get lvds-gpio2: %d\n", __func__, ret);
+ return ret;
+ }
+
+ ret = gpio_request_by_name(dev, "lvds-gpio3", 0,
+ &priv->lvds_gpio3, GPIOD_IS_OUT);
+ if (ret && ret != -ENOENT) {
+ printf("%s: Cannot get lvds-gpio3: %d\n", __func__, ret);
+ return ret;
+ }
+
ret = uclass_get_device_by_phandle(UCLASS_PANEL_BACKLIGHT, dev,
"backlight", &priv->backlight);
if (ret && ret != -ENOENT) {
--
Gitblit v1.6.2