gpu:drm:tilcdc: get preferred_bpp value from DT
The preferred_bpp value in currently hard-coded to 16. This causes color corruption on the am335x-evm lcd panel which requires 32 bpp instead. This changes attempts to use the configured bpp value from the DT or built-in panel-info struct. Signed-off-by: Benoit Parrot <bparrot@ti.com> Acked-by: Rob Clark <robdclark@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
Родитель
d6f76f3707
Коммит
dc28aa072f
|
@ -157,7 +157,9 @@ static int tilcdc_load(struct drm_device *dev, unsigned long flags)
|
|||
struct platform_device *pdev = dev->platformdev;
|
||||
struct device_node *node = pdev->dev.of_node;
|
||||
struct tilcdc_drm_private *priv;
|
||||
struct tilcdc_module *mod;
|
||||
struct resource *res;
|
||||
u32 bpp = 0;
|
||||
int ret;
|
||||
|
||||
priv = kzalloc(sizeof(*priv), GFP_KERNEL);
|
||||
|
@ -256,7 +258,15 @@ static int tilcdc_load(struct drm_device *dev, unsigned long flags)
|
|||
|
||||
platform_set_drvdata(pdev, dev);
|
||||
|
||||
priv->fbdev = drm_fbdev_cma_init(dev, 16,
|
||||
|
||||
list_for_each_entry(mod, &module_list, list) {
|
||||
DBG("%s: preferred_bpp: %d", mod->name, mod->preferred_bpp);
|
||||
bpp = mod->preferred_bpp;
|
||||
if (bpp > 0)
|
||||
break;
|
||||
}
|
||||
|
||||
priv->fbdev = drm_fbdev_cma_init(dev, bpp,
|
||||
dev->mode_config.num_crtc,
|
||||
dev->mode_config.num_connector);
|
||||
|
||||
|
|
|
@ -89,6 +89,7 @@ struct tilcdc_module {
|
|||
const char *name;
|
||||
struct list_head list;
|
||||
const struct tilcdc_module_ops *funcs;
|
||||
unsigned int preferred_bpp;
|
||||
};
|
||||
|
||||
void tilcdc_module_init(struct tilcdc_module *mod, const char *name,
|
||||
|
|
|
@ -393,6 +393,8 @@ static int panel_probe(struct platform_device *pdev)
|
|||
goto fail;
|
||||
}
|
||||
|
||||
mod->preferred_bpp = panel_mod->info->bpp;
|
||||
|
||||
panel_mod->backlight = of_find_backlight_by_node(node);
|
||||
if (panel_mod->backlight)
|
||||
dev_info(&pdev->dev, "found backlight\n");
|
||||
|
|
|
@ -323,6 +323,8 @@ static int slave_probe(struct platform_device *pdev)
|
|||
goto fail;
|
||||
}
|
||||
|
||||
mod->preferred_bpp = slave_info.bpp;
|
||||
|
||||
i2c_node = of_find_node_by_phandle(i2c_phandle);
|
||||
if (!i2c_node) {
|
||||
dev_err(&pdev->dev, "could not get i2c bus node\n");
|
||||
|
|
|
@ -354,6 +354,8 @@ static int tfp410_probe(struct platform_device *pdev)
|
|||
goto fail;
|
||||
}
|
||||
|
||||
mod->preferred_bpp = dvi_info.bpp;
|
||||
|
||||
i2c_node = of_find_node_by_phandle(i2c_phandle);
|
||||
if (!i2c_node) {
|
||||
dev_err(&pdev->dev, "could not get i2c bus node\n");
|
||||
|
|
Загрузка…
Ссылка в новой задаче