diff options
52 files changed, 2267 insertions, 1426 deletions
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index 5dda07cf7097..fadcd44ff196 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c | |||
| @@ -395,13 +395,14 @@ out: | |||
| 395 | * \param adapter : i2c device adaptor | 395 | * \param adapter : i2c device adaptor |
| 396 | * \return 1 on success | 396 | * \return 1 on success |
| 397 | */ | 397 | */ |
| 398 | static bool | 398 | bool |
| 399 | drm_probe_ddc(struct i2c_adapter *adapter) | 399 | drm_probe_ddc(struct i2c_adapter *adapter) |
| 400 | { | 400 | { |
| 401 | unsigned char out; | 401 | unsigned char out; |
| 402 | 402 | ||
| 403 | return (drm_do_probe_ddc_edid(adapter, &out, 0, 1) == 0); | 403 | return (drm_do_probe_ddc_edid(adapter, &out, 0, 1) == 0); |
| 404 | } | 404 | } |
| 405 | EXPORT_SYMBOL(drm_probe_ddc); | ||
| 405 | 406 | ||
| 406 | /** | 407 | /** |
| 407 | * drm_get_edid - get EDID data, if available | 408 | * drm_get_edid - get EDID data, if available |
diff --git a/drivers/gpu/drm/exynos/exynos_ddc.c b/drivers/gpu/drm/exynos/exynos_ddc.c index 961a1806a246..37e6ec704e1d 100644 --- a/drivers/gpu/drm/exynos/exynos_ddc.c +++ b/drivers/gpu/drm/exynos/exynos_ddc.c | |||
| @@ -26,29 +26,41 @@ static int s5p_ddc_probe(struct i2c_client *client, | |||
| 26 | { | 26 | { |
| 27 | hdmi_attach_ddc_client(client); | 27 | hdmi_attach_ddc_client(client); |
| 28 | 28 | ||
| 29 | dev_info(&client->adapter->dev, "attached s5p_ddc " | 29 | dev_info(&client->adapter->dev, |
| 30 | "into i2c adapter successfully\n"); | 30 | "attached %s into i2c adapter successfully\n", |
| 31 | client->name); | ||
| 31 | 32 | ||
| 32 | return 0; | 33 | return 0; |
| 33 | } | 34 | } |
| 34 | 35 | ||
| 35 | static int s5p_ddc_remove(struct i2c_client *client) | 36 | static int s5p_ddc_remove(struct i2c_client *client) |
| 36 | { | 37 | { |
| 37 | dev_info(&client->adapter->dev, "detached s5p_ddc " | 38 | dev_info(&client->adapter->dev, |
| 38 | "from i2c adapter successfully\n"); | 39 | "detached %s from i2c adapter successfully\n", |
| 40 | client->name); | ||
| 39 | 41 | ||
| 40 | return 0; | 42 | return 0; |
| 41 | } | 43 | } |
| 42 | 44 | ||
| 43 | static struct i2c_device_id ddc_idtable[] = { | 45 | static struct i2c_device_id ddc_idtable[] = { |
| 44 | {"s5p_ddc", 0}, | 46 | {"s5p_ddc", 0}, |
| 47 | {"exynos5-hdmiddc", 0}, | ||
| 45 | { }, | 48 | { }, |
| 46 | }; | 49 | }; |
| 47 | 50 | ||
| 51 | static struct of_device_id hdmiddc_match_types[] = { | ||
| 52 | { | ||
| 53 | .compatible = "samsung,exynos5-hdmiddc", | ||
| 54 | }, { | ||
| 55 | /* end node */ | ||
| 56 | } | ||
| 57 | }; | ||
| 58 | |||
| 48 | struct i2c_driver ddc_driver = { | 59 | struct i2c_driver ddc_driver = { |
| 49 | .driver = { | 60 | .driver = { |
| 50 | .name = "s5p_ddc", | 61 | .name = "exynos-hdmiddc", |
| 51 | .owner = THIS_MODULE, | 62 | .owner = THIS_MODULE, |
| 63 | .of_match_table = hdmiddc_match_types, | ||
| 52 | }, | 64 | }, |
| 53 | .id_table = ddc_idtable, | 65 | .id_table = ddc_idtable, |
| 54 | .probe = s5p_ddc_probe, | 66 | .probe = s5p_ddc_probe, |
diff --git a/drivers/gpu/drm/exynos/exynos_drm_connector.c b/drivers/gpu/drm/exynos/exynos_drm_connector.c index c2b1b1441ed0..18c271862ca8 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_connector.c +++ b/drivers/gpu/drm/exynos/exynos_drm_connector.c | |||
| @@ -40,6 +40,7 @@ struct exynos_drm_connector { | |||
| 40 | struct drm_connector drm_connector; | 40 | struct drm_connector drm_connector; |
| 41 | uint32_t encoder_id; | 41 | uint32_t encoder_id; |
| 42 | struct exynos_drm_manager *manager; | 42 | struct exynos_drm_manager *manager; |
| 43 | uint32_t dpms; | ||
| 43 | }; | 44 | }; |
| 44 | 45 | ||
| 45 | /* convert exynos_video_timings to drm_display_mode */ | 46 | /* convert exynos_video_timings to drm_display_mode */ |
| @@ -149,8 +150,12 @@ static int exynos_drm_connector_get_modes(struct drm_connector *connector) | |||
| 149 | count = drm_add_edid_modes(connector, edid); | 150 | count = drm_add_edid_modes(connector, edid); |
| 150 | kfree(edid); | 151 | kfree(edid); |
| 151 | } else { | 152 | } else { |
| 152 | struct drm_display_mode *mode = drm_mode_create(connector->dev); | ||
| 153 | struct exynos_drm_panel_info *panel; | 153 | struct exynos_drm_panel_info *panel; |
| 154 | struct drm_display_mode *mode = drm_mode_create(connector->dev); | ||
| 155 | if (!mode) { | ||
| 156 | DRM_ERROR("failed to create a new display mode.\n"); | ||
| 157 | return 0; | ||
| 158 | } | ||
| 154 | 159 | ||
| 155 | if (display_ops->get_panel) | 160 | if (display_ops->get_panel) |
| 156 | panel = display_ops->get_panel(manager->dev); | 161 | panel = display_ops->get_panel(manager->dev); |
| @@ -194,8 +199,7 @@ static int ex | |||
