video: da8xx-fb: reorganize panel detection
authorAfzal Mohammed <afzal@ti.com>
Mon, 5 Aug 2013 22:02:35 +0000 (17:02 -0500)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Fri, 9 Aug 2013 11:02:43 +0000 (14:02 +0300)
Move panel detection to a separate function, this helps in readability
as well as makes DT support cleaner.

Signed-off-by: Afzal Mohammed <afzal@ti.com>
Signed-off-by: Darren Etheridge <detheridge@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
drivers/video/da8xx-fb.c

index dec2777..d8b295a 100644 (file)
@@ -1253,6 +1253,27 @@ static struct fb_ops da8xx_fb_ops = {
        .fb_blank = cfb_blank,
 };
 
+static struct fb_videomode *da8xx_fb_get_videomode(struct platform_device *dev)
+{
+       struct da8xx_lcdc_platform_data *fb_pdata = dev->dev.platform_data;
+       struct fb_videomode *lcdc_info;
+       int i;
+
+       for (i = 0, lcdc_info = known_lcd_panels;
+               i < ARRAY_SIZE(known_lcd_panels); i++, lcdc_info++) {
+               if (strcmp(fb_pdata->type, lcdc_info->name) == 0)
+                       break;
+       }
+
+       if (i == ARRAY_SIZE(known_lcd_panels)) {
+               dev_err(&dev->dev, "no panel found\n");
+               return NULL;
+       }
+       dev_info(&dev->dev, "found %s panel\n", lcdc_info->name);
+
+       return lcdc_info;
+}
+
 static int fb_probe(struct platform_device *device)
 {
        struct da8xx_lcdc_platform_data *fb_pdata =
@@ -1263,7 +1284,7 @@ static int fb_probe(struct platform_device *device)
        struct fb_info *da8xx_fb_info;
        struct clk *fb_clk = NULL;
        struct da8xx_fb_par *par;
-       int ret, i;
+       int ret;
        unsigned long ulcm;
 
        if (fb_pdata == NULL) {
@@ -1271,6 +1292,10 @@ static int fb_probe(struct platform_device *device)
                return -ENOENT;
        }
 
+       lcdc_info = da8xx_fb_get_videomode(device);
+       if (lcdc_info == NULL)
+               return -ENODEV;
+
        lcdc_regs = platform_get_resource(device, IORESOURCE_MEM, 0);
        da8xx_fb_reg_base = devm_ioremap_resource(&device->dev, lcdc_regs);
        if (IS_ERR(da8xx_fb_reg_base))
@@ -1302,21 +1327,6 @@ static int fb_probe(struct platform_device *device)
                break;
        }
 
-       for (i = 0, lcdc_info = known_lcd_panels;
-               i < ARRAY_SIZE(known_lcd_panels);
-               i++, lcdc_info++) {
-               if (strcmp(fb_pdata->type, lcdc_info->name) == 0)
-                       break;
-       }
-
-       if (i == ARRAY_SIZE(known_lcd_panels)) {
-               dev_err(&device->dev, "GLCD: No valid panel found\n");
-               ret = -ENODEV;
-               goto err_pm_runtime_disable;
-       } else
-               dev_info(&device->dev, "GLCD: Found %s panel\n",
-                                       fb_pdata->type);
-
        lcd_cfg = (struct lcd_ctrl_config *)fb_pdata->controller_data;
 
        if (!lcd_cfg) {