Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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: Dariusz Marcinkiewicz <darekm@google.com>
Tested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Acked-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Thierry Reding <treding@nvidia.com>

authored by

Dariusz Marcinkiewicz and committed by
Thierry Reding
004e822a 051172e8

+21 -7
+21 -7
drivers/gpu/drm/tegra/output.c
··· 70 70 71 71 void tegra_output_connector_destroy(struct drm_connector *connector) 72 72 { 73 + struct tegra_output *output = connector_to_output(connector); 74 + 75 + if (output->cec) 76 + cec_notifier_conn_unregister(output->cec); 77 + 73 78 drm_connector_unregister(connector); 74 79 drm_connector_cleanup(connector); 75 80 } ··· 168 163 disable_irq(output->hpd_irq); 169 164 } 170 165 171 - output->cec = cec_notifier_get(output->dev); 172 - if (!output->cec) 173 - return -ENOMEM; 174 - 175 166 return 0; 176 167 } 177 168 178 169 void tegra_output_remove(struct tegra_output *output) 179 170 { 180 - if (output->cec) 181 - cec_notifier_put(output->cec); 182 - 183 171 if (output->hpd_gpio) 184 172 free_irq(output->hpd_irq, output); 185 173 ··· 182 184 183 185 int tegra_output_init(struct drm_device *drm, struct tegra_output *output) 184 186 { 187 + int connector_type; 185 188 int err; 186 189 187 190 if (output->panel) { ··· 197 198 */ 198 199 if (output->hpd_gpio) 199 200 enable_irq(output->hpd_irq); 201 + 202 + connector_type = output->connector.connector_type; 203 + /* 204 + * Create a CEC notifier for HDMI connector. 205 + */ 206 + if (connector_type == DRM_MODE_CONNECTOR_HDMIA || 207 + connector_type == DRM_MODE_CONNECTOR_HDMIB) { 208 + struct cec_connector_info conn_info; 209 + 210 + cec_fill_conn_info_from_drm(&conn_info, &output->connector); 211 + output->cec = cec_notifier_conn_register(output->dev, NULL, 212 + &conn_info); 213 + if (!output->cec) 214 + return -ENOMEM; 215 + } 200 216 201 217 return 0; 202 218 }