mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 07:48:58 +07:00
video: da8xx-fb: reorganize panel detection
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>
This commit is contained in:
parent
3a58101da2
commit
2bdff0680f
@ -1253,6 +1253,27 @@ static struct fb_ops da8xx_fb_ops = {
|
|||||||
.fb_blank = cfb_blank,
|
.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)
|
static int fb_probe(struct platform_device *device)
|
||||||
{
|
{
|
||||||
struct da8xx_lcdc_platform_data *fb_pdata =
|
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 fb_info *da8xx_fb_info;
|
||||||
struct clk *fb_clk = NULL;
|
struct clk *fb_clk = NULL;
|
||||||
struct da8xx_fb_par *par;
|
struct da8xx_fb_par *par;
|
||||||
int ret, i;
|
int ret;
|
||||||
unsigned long ulcm;
|
unsigned long ulcm;
|
||||||
|
|
||||||
if (fb_pdata == NULL) {
|
if (fb_pdata == NULL) {
|
||||||
@ -1271,6 +1292,10 @@ static int fb_probe(struct platform_device *device)
|
|||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lcdc_info = da8xx_fb_get_videomode(device);
|
||||||
|
if (lcdc_info == NULL)
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
lcdc_regs = platform_get_resource(device, IORESOURCE_MEM, 0);
|
lcdc_regs = platform_get_resource(device, IORESOURCE_MEM, 0);
|
||||||
da8xx_fb_reg_base = devm_ioremap_resource(&device->dev, lcdc_regs);
|
da8xx_fb_reg_base = devm_ioremap_resource(&device->dev, lcdc_regs);
|
||||||
if (IS_ERR(da8xx_fb_reg_base))
|
if (IS_ERR(da8xx_fb_reg_base))
|
||||||
@ -1302,21 +1327,6 @@ static int fb_probe(struct platform_device *device)
|
|||||||
break;
|
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;
|
lcd_cfg = (struct lcd_ctrl_config *)fb_pdata->controller_data;
|
||||||
|
|
||||||
if (!lcd_cfg) {
|
if (!lcd_cfg) {
|
||||||
|
Loading…
Reference in New Issue
Block a user