Lines Matching refs:aux

94 	struct drm_dp_aux *aux = cec_get_drvdata(adap);
98 err = drm_dp_dpcd_writeb(aux, DP_CEC_TUNNELING_CONTROL, val);
104 struct drm_dp_aux *aux = cec_get_drvdata(adap);
114 err = drm_dp_dpcd_write(aux, DP_CEC_LOGICAL_ADDRESS_MASK, mask, 2);
121 struct drm_dp_aux *aux = cec_get_drvdata(adap);
125 err = drm_dp_dpcd_write(aux, DP_CEC_TX_MESSAGE_BUFFER,
130 err = drm_dp_dpcd_writeb(aux, DP_CEC_TX_MESSAGE_INFO,
139 struct drm_dp_aux *aux = cec_get_drvdata(adap);
146 err = drm_dp_dpcd_readb(aux, DP_CEC_TUNNELING_CONTROL, &val);
152 err = drm_dp_dpcd_writeb(aux, DP_CEC_TUNNELING_CONTROL, val);
160 struct drm_dp_aux *aux = cec_get_drvdata(adap);
164 if (drm_dp_read_desc(aux, &desc, true))
189 static int drm_dp_cec_received(struct drm_dp_aux *aux)
191 struct cec_adapter *adap = aux->cec.adap;
196 err = drm_dp_dpcd_readb(aux, DP_CEC_RX_MESSAGE_INFO, &rx_msg_info);
204 err = drm_dp_dpcd_read(aux, DP_CEC_RX_MESSAGE_BUFFER, msg.msg, msg.len);
212 static void drm_dp_cec_handle_irq(struct drm_dp_aux *aux)
214 struct cec_adapter *adap = aux->cec.adap;
217 if (drm_dp_dpcd_readb(aux, DP_CEC_TUNNELING_IRQ_FLAGS, &flags) < 0)
221 drm_dp_cec_received(aux);
232 drm_dp_dpcd_writeb(aux, DP_CEC_TUNNELING_IRQ_FLAGS, flags);
237 * @aux: DisplayPort AUX channel
242 void drm_dp_cec_irq(struct drm_dp_aux *aux)
248 if (!aux->transfer)
251 mutex_lock(&aux->cec.lock);
252 if (!aux->cec.adap)
255 ret = drm_dp_dpcd_readb(aux, DP_DEVICE_SERVICE_IRQ_VECTOR_ESI1,
260 drm_dp_cec_handle_irq(aux);
261 drm_dp_dpcd_writeb(aux, DP_DEVICE_SERVICE_IRQ_VECTOR_ESI1, DP_CEC_IRQ);
263 mutex_unlock(&aux->cec.lock);
267 static bool drm_dp_cec_cap(struct drm_dp_aux *aux, u8 *cec_cap)
271 if (drm_dp_dpcd_readb(aux, DP_CEC_TUNNELING_CAPABILITY, &cap) != 1 ||
285 struct drm_dp_aux *aux = container_of(work, struct drm_dp_aux,
288 mutex_lock(&aux->cec.lock);
289 cec_unregister_adapter(aux->cec.adap);
290 aux->cec.adap = NULL;
291 mutex_unlock(&aux->cec.lock);
300 void drm_dp_cec_set_edid(struct drm_dp_aux *aux, const struct edid *edid)
302 struct drm_connector *connector = aux->cec.connector;
310 if (!aux->transfer)
323 cancel_delayed_work_sync(&aux->cec.unregister_work);
325 mutex_lock(&aux->cec.lock);
326 if (!drm_dp_cec_cap(aux, &cap)) {
328 cec_unregister_adapter(aux->cec.adap);
329 aux->cec.adap = NULL;
338 if (aux->cec.adap) {
339 if (aux->cec.adap->capabilities == cec_caps &&
340 aux->cec.adap->available_log_addrs == num_las) {
342 cec_s_phys_addr_from_edid(aux->cec.adap, edid);
349 cec_unregister_adapter(aux->cec.adap);
353 aux->cec.adap = cec_allocate_adapter(&drm_dp_cec_adap_ops,
354 aux, connector->name, cec_caps,
356 if (IS_ERR(aux->cec.adap)) {
357 aux->cec.adap = NULL;
362 cec_s_conn_info(aux->cec.adap, &conn_info);
364 if (cec_register_adapter(aux->cec.adap, connector->dev->dev)) {
365 cec_delete_adapter(aux->cec.adap);
366 aux->cec.adap = NULL;
373 cec_s_phys_addr_from_edid(aux->cec.adap, edid);
376 mutex_unlock(&aux->cec.lock);
383 void drm_dp_cec_unset_edid(struct drm_dp_aux *aux)
386 if (!aux->transfer)
389 cancel_delayed_work_sync(&aux->cec.unregister_work);
391 mutex_lock(&aux->cec.lock);
392 if (!aux->cec.adap)
395 cec_phys_addr_invalidate(aux->cec.adap);
403 !drm_dp_cec_cap(aux, NULL)) {
409 schedule_delayed_work(&aux->cec.unregister_work,
413 mutex_unlock(&aux->cec.lock);
419 * @aux: DisplayPort AUX channel
427 void drm_dp_cec_register_connector(struct drm_dp_aux *aux,
430 WARN_ON(aux->cec.adap);
431 if (WARN_ON(!aux->transfer))
433 aux->cec.connector = connector;
434 INIT_DELAYED_WORK(&aux->cec.unregister_work,
441 * @aux: DisplayPort AUX channel
443 void drm_dp_cec_unregister_connector(struct drm_dp_aux *aux)
445 if (!aux->cec.adap)
447 cancel_delayed_work_sync(&aux->cec.unregister_work);
448 cec_unregister_adapter(aux->cec.adap);
449 aux->cec.adap = NULL;