| // SPDX-License-Identifier: GPL-2.0-only |
| /* |
| * Copyright (C) 2009 Nokia Corporation |
| * Author: Tomi Valkeinen <tomi.valkeinen@ti.com> |
| * |
| * Some code and ideas taken from drivers/video/omap/ driver |
| * by Imre Deak. |
| */ |
| |
| #define DSS_SUBSYS_NAME "DISPLAY" |
| |
| #include <linux/kernel.h> |
| #include <linux/of.h> |
| |
| #include <drm/drm_connector.h> |
| #include <drm/drm_modes.h> |
| |
| #include "omapdss.h" |
| |
| static int disp_num_counter; |
| |
| void omapdss_display_init(struct omap_dss_device *dssdev) |
| { |
| int id; |
| |
| /* |
| * Note: this presumes that all displays either have an DT alias, or |
| * none has. |
| */ |
| id = of_alias_get_id(dssdev->dev->of_node, "display"); |
| if (id < 0) |
| id = disp_num_counter++; |
| |
| /* Use 'label' property for name, if it exists */ |
| of_property_read_string(dssdev->dev->of_node, "label", &dssdev->name); |
| |
| if (dssdev->name == NULL) |
| dssdev->name = devm_kasprintf(dssdev->dev, GFP_KERNEL, |
| "display%u", id); |
| } |
| EXPORT_SYMBOL_GPL(omapdss_display_init); |
| |
| int omapdss_display_get_modes(struct drm_connector *connector, |
| const struct videomode *vm) |
| { |
| struct drm_display_mode *mode; |
| |
| mode = drm_mode_create(connector->dev); |
| if (!mode) |
| return 0; |
| |
| drm_display_mode_from_videomode(vm, mode); |
| |
| mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED; |
| drm_mode_set_name(mode); |
| drm_mode_probed_add(connector, mode); |
| |
| return 1; |
| } |
| EXPORT_SYMBOL_GPL(omapdss_display_get_modes); |