Commit 004e822a authored by Dariusz Marcinkiewicz's avatar Dariusz Marcinkiewicz Committed by Thierry Reding

drm/tegra: Use cec_notifier_conn_(un)register()

Use the new cec_notifier_conn_(un)register() functions to
(un)register the notifier for the HDMI connector, and fill in
the cec_connector_info.
Signed-off-by: default avatarDariusz Marcinkiewicz <darekm@google.com>
Tested-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Acked-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
parent 051172e8
...@@ -70,6 +70,11 @@ tegra_output_connector_detect(struct drm_connector *connector, bool force) ...@@ -70,6 +70,11 @@ tegra_output_connector_detect(struct drm_connector *connector, bool force)
void tegra_output_connector_destroy(struct drm_connector *connector) void tegra_output_connector_destroy(struct drm_connector *connector)
{ {
struct tegra_output *output = connector_to_output(connector);
if (output->cec)
cec_notifier_conn_unregister(output->cec);
drm_connector_unregister(connector); drm_connector_unregister(connector);
drm_connector_cleanup(connector); drm_connector_cleanup(connector);
} }
...@@ -163,18 +168,11 @@ int tegra_output_probe(struct tegra_output *output) ...@@ -163,18 +168,11 @@ int tegra_output_probe(struct tegra_output *output)
disable_irq(output->hpd_irq); disable_irq(output->hpd_irq);
} }
output->cec = cec_notifier_get(output->dev);
if (!output->cec)
return -ENOMEM;
return 0; return 0;
} }
void tegra_output_remove(struct tegra_output *output) void tegra_output_remove(struct tegra_output *output)
{ {
if (output->cec)
cec_notifier_put(output->cec);
if (output->hpd_gpio) if (output->hpd_gpio)
free_irq(output->hpd_irq, output); free_irq(output->hpd_irq, output);
...@@ -184,6 +182,7 @@ void tegra_output_remove(struct tegra_output *output) ...@@ -184,6 +182,7 @@ void tegra_output_remove(struct tegra_output *output)
int tegra_output_init(struct drm_device *drm, struct tegra_output *output) int tegra_output_init(struct drm_device *drm, struct tegra_output *output)
{ {
int connector_type;
int err; int err;
if (output->panel) { if (output->panel) {
...@@ -199,6 +198,21 @@ int tegra_output_init(struct drm_device *drm, struct tegra_output *output) ...@@ -199,6 +198,21 @@ int tegra_output_init(struct drm_device *drm, struct tegra_output *output)
if (output->hpd_gpio) if (output->hpd_gpio)
enable_irq(output->hpd_irq); enable_irq(output->hpd_irq);
connector_type = output->connector.connector_type;
/*
* Create a CEC notifier for HDMI connector.
*/
if (connector_type == DRM_MODE_CONNECTOR_HDMIA ||
connector_type == DRM_MODE_CONNECTOR_HDMIB) {
struct cec_connector_info conn_info;
cec_fill_conn_info_from_drm(&conn_info, &output->connector);
output->cec = cec_notifier_conn_register(output->dev, NULL,
&conn_info);
if (!output->cec)
return -ENOMEM;
}
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment