Lines Matching +full:vm +full:- +full:map

1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
22 /* The encoder and connector both map to same dssdev.. the encoder
24 * of the hw, and the connector handles the 'read-only' parts, like
44 static void omap_encoder_update_videomode_flags(struct videomode *vm, in omap_encoder_update_videomode_flags() argument
47 if (!(vm->flags & (DISPLAY_FLAGS_DE_LOW | in omap_encoder_update_videomode_flags()
50 vm->flags |= DISPLAY_FLAGS_DE_LOW; in omap_encoder_update_videomode_flags()
52 vm->flags |= DISPLAY_FLAGS_DE_HIGH; in omap_encoder_update_videomode_flags()
55 if (!(vm->flags & (DISPLAY_FLAGS_PIXDATA_POSEDGE | in omap_encoder_update_videomode_flags()
58 vm->flags |= DISPLAY_FLAGS_PIXDATA_POSEDGE; in omap_encoder_update_videomode_flags()
60 vm->flags |= DISPLAY_FLAGS_PIXDATA_NEGEDGE; in omap_encoder_update_videomode_flags()
63 if (!(vm->flags & (DISPLAY_FLAGS_SYNC_POSEDGE | in omap_encoder_update_videomode_flags()
66 vm->flags |= DISPLAY_FLAGS_SYNC_POSEDGE; in omap_encoder_update_videomode_flags()
68 vm->flags |= DISPLAY_FLAGS_SYNC_NEGEDGE; in omap_encoder_update_videomode_flags()
77 struct omap_dss_device *output = omap_encoder->output; in omap_encoder_mode_set()
79 struct drm_device *dev = encoder->dev; in omap_encoder_mode_set()
82 struct videomode vm = { 0 }; in omap_encoder_mode_set() local
85 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { in omap_encoder_mode_set()
86 if (connector->encoder == encoder) in omap_encoder_mode_set()
90 drm_display_mode_to_videomode(adjusted_mode, &vm); in omap_encoder_mode_set()
93 * HACK: This fixes the vm flags. in omap_encoder_mode_set()
99 * A better solution is to use DRM's bus-flags through the whole driver. in omap_encoder_mode_set()
101 for (dssdev = output; dssdev; dssdev = dssdev->next) in omap_encoder_mode_set()
102 omap_encoder_update_videomode_flags(&vm, dssdev->bus_flags); in omap_encoder_mode_set()
104 for (bridge = output->bridge; bridge; in omap_encoder_mode_set()
106 if (!bridge->timings) in omap_encoder_mode_set()
109 bus_flags = bridge->timings->input_bus_flags; in omap_encoder_mode_set()
110 omap_encoder_update_videomode_flags(&vm, bus_flags); in omap_encoder_mode_set()
113 bus_flags = connector->display_info.bus_flags; in omap_encoder_mode_set()
114 omap_encoder_update_videomode_flags(&vm, bus_flags); in omap_encoder_mode_set()
117 dss_mgr_set_timings(output, &vm); in omap_encoder_mode_set()
123 struct omap_dss_device *dssdev = omap_encoder->output; in omap_encoder_disable()
124 struct drm_device *dev = encoder->dev; in omap_encoder_disable()
126 dev_dbg(dev->dev, "disable(%s)\n", dssdev->name); in omap_encoder_disable()
131 * dssdev->next is NULL for all other outputs. in omap_encoder_disable()
133 omapdss_device_disable(dssdev->next); in omap_encoder_disable()
139 struct omap_dss_device *dssdev = omap_encoder->output; in omap_encoder_enable()
140 struct drm_device *dev = encoder->dev; in omap_encoder_enable()
142 dev_dbg(dev->dev, "enable(%s)\n", dssdev->name); in omap_encoder_enable()
147 * dssdev->next is NULL for all other outputs. in omap_encoder_enable()
149 omapdss_device_enable(dssdev->next); in omap_encoder_enable()
159 status = omap_connector_mode_fixup(omap_encoder->output, in omap_encoder_atomic_check()
160 &crtc_state->mode, in omap_encoder_atomic_check()
161 &crtc_state->adjusted_mode); in omap_encoder_atomic_check()
163 dev_err(encoder->dev->dev, "invalid timings: %d\n", status); in omap_encoder_atomic_check()
164 return -EINVAL; in omap_encoder_atomic_check()
188 omap_encoder->output = output; in omap_encoder_init()
190 encoder = &omap_encoder->base; in omap_encoder_init()