From 1d595205630dafd6f4b0717d4bf6efaf2d3401d0 Mon Sep 17 00:00:00 2001 From: Shaochan Liu Date: Mon, 4 Mar 2019 15:39:02 +0800 Subject: [PATCH] lcd: optimize vsync probe method, by string, not index value in dts [2/2] PD#SWPL-4679 Problem: optimize vsync probe method, by string, not index value in dts Solution: optimize vsync probe method, by string, not index value in dts Verify: verify by t962x2-x301 Change-Id: Ib87a2913b7dafb3ea3c9c5a936b29939ab7ee034 Signed-off-by: Shaochan Liu --- .../media/vout/lcd/lcd_tablet/lcd_tablet.c | 4 +++ drivers/amlogic/media/vout/lcd/lcd_vout.c | 31 +++++-------------- 2 files changed, 12 insertions(+), 23 deletions(-) diff --git a/drivers/amlogic/media/vout/lcd/lcd_tablet/lcd_tablet.c b/drivers/amlogic/media/vout/lcd/lcd_tablet/lcd_tablet.c index 56f2647119cb..acb0e879fdfb 100644 --- a/drivers/amlogic/media/vout/lcd/lcd_tablet/lcd_tablet.c +++ b/drivers/amlogic/media/vout/lcd/lcd_tablet/lcd_tablet.c @@ -992,6 +992,10 @@ static int lcd_config_load_from_unifykey(struct lcd_config_s *pconf) ((*(p + LCD_UKEY_PCLK + 1)) << 8) | ((*(p + LCD_UKEY_PCLK + 2)) << 16) | ((*(p + LCD_UKEY_PCLK + 3)) << 24)); + if (pconf->lcd_timing.lcd_clk == 0) { /* avoid 0 mistake */ + pconf->lcd_timing.lcd_clk = 60; + LCDERR("lcd_clk is 0, default to 60Hz\n"); + } pconf->lcd_basic.h_period_min = (*(p + LCD_UKEY_H_PERIOD_MIN) | ((*(p + LCD_UKEY_H_PERIOD_MIN + 1)) << 8)); pconf->lcd_basic.h_period_max = (*(p + LCD_UKEY_H_PERIOD_MAX) | diff --git a/drivers/amlogic/media/vout/lcd/lcd_vout.c b/drivers/amlogic/media/vout/lcd/lcd_vout.c index 959e00fd1d35..4f4574f4ce13 100644 --- a/drivers/amlogic/media/vout/lcd/lcd_vout.c +++ b/drivers/amlogic/media/vout/lcd/lcd_vout.c @@ -1113,29 +1113,14 @@ static int lcd_config_probe(struct platform_device *pdev) LCDPR("detect lcd_auto_test: %d\n", lcd_driver->lcd_auto_test); } - ret = of_property_read_string_index(lcd_driver->dev->of_node, - "interrupt-names", 0, &str); - if (ret == 0) { - lcd_driver->res_vsync_irq = platform_get_resource(pdev, - IORESOURCE_IRQ, 0); - } - ret = of_property_read_string_index(lcd_driver->dev->of_node, - "interrupt-names", 1, &str); - if (ret == 0) { - if (strcmp(str, "vbyone") == 0) { - lcd_driver->res_vx1_irq = - platform_get_resource(pdev, IORESOURCE_IRQ, 1); - } else if (strcmp(str, "vsync2") == 0) { - lcd_driver->res_vsync2_irq = - platform_get_resource(pdev, IORESOURCE_IRQ, 1); - } - } - ret = of_property_read_string_index(lcd_driver->dev->of_node, - "interrupt-names", 2, &str); - if (ret == 0) { - lcd_driver->res_tcon_irq = platform_get_resource(pdev, - IORESOURCE_IRQ, 2); - } + lcd_driver->res_vsync_irq = platform_get_resource_byname(pdev, + IORESOURCE_IRQ, "vsync"); + lcd_driver->res_vsync2_irq = platform_get_resource_byname(pdev, + IORESOURCE_IRQ, "vsync2"); + lcd_driver->res_vx1_irq = platform_get_resource_byname(pdev, + IORESOURCE_IRQ, "vbyone"); + lcd_driver->res_tcon_irq = platform_get_resource_byname(pdev, + IORESOURCE_IRQ, "tcon"); lcd_driver->lcd_info = &lcd_vinfo; lcd_driver->lcd_config = &lcd_config_dft;