diff options
| -rw-r--r-- | drivers/gpu/drm/tilcdc/tilcdc_drv.c | 12 | ||||
| -rw-r--r-- | drivers/gpu/drm/tilcdc/tilcdc_drv.h | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/tilcdc/tilcdc_panel.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/tilcdc/tilcdc_slave.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/tilcdc/tilcdc_tfp410.c | 2 |
5 files changed, 18 insertions, 1 deletions
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c index 2b5461bcd9fb..f2a6528ddef0 100644 --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c | |||
| @@ -157,7 +157,9 @@ static int tilcdc_load(struct drm_device *dev, unsigned long flags) | |||
| 157 | struct platform_device *pdev = dev->platformdev; | 157 | struct platform_device *pdev = dev->platformdev; |
| 158 | struct device_node *node = pdev->dev.of_node; | 158 | struct device_node *node = pdev->dev.of_node; |
| 159 | struct tilcdc_drm_private *priv; | 159 | struct tilcdc_drm_private *priv; |
| 160 | struct tilcdc_module *mod; | ||
| 160 | struct resource *res; | 161 | struct resource *res; |
| 162 | u32 bpp = 0; | ||
| 161 | int ret; | 163 | int ret; |
| 162 | 164 | ||
| 163 | priv = kzalloc(sizeof(*priv), GFP_KERNEL); | 165 | priv = kzalloc(sizeof(*priv), GFP_KERNEL); |
| @@ -256,7 +258,15 @@ static int tilcdc_load(struct drm_device *dev, unsigned long flags) | |||
| 256 | 258 | ||
| 257 | platform_set_drvdata(pdev, dev); | 259 | platform_set_drvdata(pdev, dev); |
| 258 | 260 | ||
| 259 | priv->fbdev = drm_fbdev_cma_init(dev, 16, | 261 | |
| 262 | list_for_each_entry(mod, &module_list, list) { | ||
| 263 | DBG("%s: preferred_bpp: %d", mod->name, mod->preferred_bpp); | ||
| 264 | bpp = mod->preferred_bpp; | ||
| 265 | if (bpp > 0) | ||
| 266 | break; | ||
| 267 | } | ||
| 268 | |||
| 269 | priv->fbdev = drm_fbdev_cma_init(dev, bpp, | ||
| 260 | dev->mode_config.num_crtc, | 270 | dev->mode_config.num_crtc, |
| 261 | dev->mode_config.num_connector); | 271 | dev->mode_config.num_connector); |
| 262 | 272 | ||
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.h b/drivers/gpu/drm/tilcdc/tilcdc_drv.h index 8242b5a4307b..090684341fdb 100644 --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.h +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.h | |||
| @@ -89,6 +89,7 @@ struct tilcdc_module { | |||
| 89 | const char *name; | 89 | const char *name; |
| 90 | struct list_head list; | 90 | struct list_head list; |
| 91 | const struct tilcdc_module_ops *funcs; | 91 | const struct tilcdc_module_ops *funcs; |
| 92 | unsigned int preferred_bpp; | ||
| 92 | }; | 93 | }; |
| 93 | 94 | ||
| 94 | void tilcdc_module_init(struct tilcdc_module *mod, const char *name, | 95 | void tilcdc_module_init(struct tilcdc_module *mod, const char *name, |
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_panel.c b/drivers/gpu/drm/tilcdc/tilcdc_panel.c index 09176654fddb..86c67329b605 100644 --- a/drivers/gpu/drm/tilcdc/tilcdc_panel.c +++ b/drivers/gpu/drm/tilcdc/tilcdc_panel.c | |||
| @@ -393,6 +393,8 @@ static int panel_probe(struct platform_device *pdev) | |||
| 393 | goto fail; | 393 | goto fail; |
| 394 | } | 394 | } |
| 395 | 395 | ||
| 396 | mod->preferred_bpp = panel_mod->info->bpp; | ||
| 397 | |||
| 396 | panel_mod->backlight = of_find_backlight_by_node(node); | 398 | panel_mod->backlight = of_find_backlight_by_node(node); |
| 397 | if (panel_mod->backlight) | 399 | if (panel_mod->backlight) |
| 398 | dev_info(&pdev->dev, "found backlight\n"); | 400 | dev_info(&pdev->dev, "found backlight\n"); |
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_slave.c b/drivers/gpu/drm/tilcdc/tilcdc_slave.c index db1d2fc9dfb5..8bf4fd19181c 100644 --- a/drivers/gpu/drm/tilcdc/tilcdc_slave.c +++ b/drivers/gpu/drm/tilcdc/tilcdc_slave.c | |||
| @@ -323,6 +323,8 @@ static int slave_probe(struct platform_device *pdev) | |||
| 323 | goto fail; | 323 | goto fail; |
| 324 | } | 324 | } |
| 325 | 325 | ||
| 326 | mod->preferred_bpp = slave_info.bpp; | ||
| 327 | |||
| 326 | i2c_node = of_find_node_by_phandle(i2c_phandle); | 328 | i2c_node = of_find_node_by_phandle(i2c_phandle); |
| 327 | if (!i2c_node) { | 329 | if (!i2c_node) { |
| 328 | dev_err(&pdev->dev, "could not get i2c bus node\n"); | 330 | dev_err(&pdev->dev, "could not get i2c bus node\n"); |
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c index a36788fbcd98..925c7cddeff9 100644 --- a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c +++ b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c | |||
| @@ -354,6 +354,8 @@ static int tfp410_probe(struct platform_device *pdev) | |||
| 354 | goto fail; | 354 | goto fail; |
| 355 | } | 355 | } |
| 356 | 356 | ||
| 357 | mod->preferred_bpp = dvi_info.bpp; | ||
| 358 | |||
| 357 | i2c_node = of_find_node_by_phandle(i2c_phandle); | 359 | i2c_node = of_find_node_by_phandle(i2c_phandle); |
| 358 | if (!i2c_node) { | 360 | if (!i2c_node) { |
| 359 | dev_err(&pdev->dev, "could not get i2c bus node\n"); | 361 | dev_err(&pdev->dev, "could not get i2c bus node\n"); |
