|
@@ -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) {
|