The omap_dss_device .enable_hpd() and .disable_hpd() are used to enable and disable hot-plug detection at omapdrm probe and remove time. This is required to avoid reporting hot-plug detection events before the DRM infrastructure is ready to accept them, as that could result in crashes or other malfunction. Hot-plug event reporting is conditioned by both HPD being enabled through the .enable_hpd() operation and by the HPD callback being registered though the .register_hpd_cb() operation. We thus don't need a separate enable operation if we can guarantee that callbacks won't be registered too early. HPD callbacks are registered at connector initialization time, which is too early to start reporting HPD events. There's however nothing blocking a move of callback registration to a later time when the omapdrm driver calls the HPD enable operations. Do so, and remove the HPD enable operation completely from omap_dss_device drivers. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
40 lines
1.3 KiB
C
40 lines
1.3 KiB
C
/*
|
|
* omap_connector.h -- OMAP DRM Connector
|
|
*
|
|
* Copyright (C) 2011 Texas Instruments
|
|
* Author: Rob Clark <rob@ti.com>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License version 2 as published by
|
|
* the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
* more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along with
|
|
* this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef __OMAPDRM_CONNECTOR_H__
|
|
#define __OMAPDRM_CONNECTOR_H__
|
|
|
|
#include <linux/types.h>
|
|
|
|
struct drm_connector;
|
|
struct drm_device;
|
|
struct drm_encoder;
|
|
struct omap_dss_device;
|
|
|
|
struct drm_connector *omap_connector_init(struct drm_device *dev,
|
|
int connector_type, struct omap_dss_device *dssdev,
|
|
struct drm_encoder *encoder);
|
|
struct drm_encoder *omap_connector_attached_encoder(
|
|
struct drm_connector *connector);
|
|
bool omap_connector_get_hdmi_mode(struct drm_connector *connector);
|
|
void omap_connector_enable_hpd(struct drm_connector *connector);
|
|
void omap_connector_disable_hpd(struct drm_connector *connector);
|
|
|
|
#endif /* __OMAPDRM_CONNECTOR_H__ */
|