Lines Matching refs:aux

189 drm_dp_dump_access(const struct drm_dp_aux *aux,  in drm_dp_dump_access()  argument
196 aux->name, offset, arrow, ret, min(ret, 20), buffer); in drm_dp_dump_access()
199 aux->name, offset, arrow, ret); in drm_dp_dump_access()
214 static int drm_dp_dpcd_access(struct drm_dp_aux *aux, u8 request, in drm_dp_dpcd_access() argument
227 mutex_lock(&aux->hw_mutex); in drm_dp_dpcd_access()
241 ret = aux->transfer(aux, &msg); in drm_dp_dpcd_access()
267 mutex_unlock(&aux->hw_mutex); in drm_dp_dpcd_access()
285 ssize_t drm_dp_dpcd_read(struct drm_dp_aux *aux, unsigned int offset, in drm_dp_dpcd_read() argument
302 ret = drm_dp_dpcd_access(aux, DP_AUX_NATIVE_READ, DP_DPCD_REV, buffer, in drm_dp_dpcd_read()
307 ret = drm_dp_dpcd_access(aux, DP_AUX_NATIVE_READ, offset, buffer, in drm_dp_dpcd_read()
311 drm_dp_dump_access(aux, DP_AUX_NATIVE_READ, offset, buffer, ret); in drm_dp_dpcd_read()
330 ssize_t drm_dp_dpcd_write(struct drm_dp_aux *aux, unsigned int offset, in drm_dp_dpcd_write() argument
335 ret = drm_dp_dpcd_access(aux, DP_AUX_NATIVE_WRITE, offset, buffer, in drm_dp_dpcd_write()
337 drm_dp_dump_access(aux, DP_AUX_NATIVE_WRITE, offset, buffer, ret); in drm_dp_dpcd_write()
350 int drm_dp_dpcd_read_link_status(struct drm_dp_aux *aux, in drm_dp_dpcd_read_link_status() argument
353 return drm_dp_dpcd_read(aux, DP_LANE0_1_STATUS, status, in drm_dp_dpcd_read_link_status()
369 int drm_dp_link_probe(struct drm_dp_aux *aux, struct drm_dp_link *link) in drm_dp_link_probe() argument
376 err = drm_dp_dpcd_read(aux, DP_DPCD_REV, values, sizeof(values)); in drm_dp_link_probe()
398 int drm_dp_link_power_up(struct drm_dp_aux *aux, struct drm_dp_link *link) in drm_dp_link_power_up() argument
407 err = drm_dp_dpcd_readb(aux, DP_SET_POWER, &value); in drm_dp_link_power_up()
414 err = drm_dp_dpcd_writeb(aux, DP_SET_POWER, value); in drm_dp_link_power_up()
436 int drm_dp_link_power_down(struct drm_dp_aux *aux, struct drm_dp_link *link) in drm_dp_link_power_down() argument
445 err = drm_dp_dpcd_readb(aux, DP_SET_POWER, &value); in drm_dp_link_power_down()
452 err = drm_dp_dpcd_writeb(aux, DP_SET_POWER, value); in drm_dp_link_power_down()
467 int drm_dp_link_configure(struct drm_dp_aux *aux, struct drm_dp_link *link) in drm_dp_link_configure() argument
478 err = drm_dp_dpcd_write(aux, DP_LINK_BW_SET, values, sizeof(values)); in drm_dp_link_configure()
568 int drm_dp_downstream_id(struct drm_dp_aux *aux, char id[6]) in drm_dp_downstream_id() argument
570 return drm_dp_dpcd_read(aux, DP_BRANCH_ID, id, 6); in drm_dp_downstream_id()
584 const u8 port_cap[4], struct drm_dp_aux *aux) in drm_dp_downstream_debug() argument
630 drm_dp_downstream_id(aux, id); in drm_dp_downstream_debug()
633 len = drm_dp_dpcd_read(aux, DP_BRANCH_HW_REV, &rev[0], 1); in drm_dp_downstream_debug()
638 len = drm_dp_dpcd_read(aux, DP_BRANCH_SW_REV, rev, 2); in drm_dp_downstream_debug()
777 static int drm_dp_i2c_do_msg(struct drm_dp_aux *aux, struct drm_dp_aux_msg *msg) in drm_dp_i2c_do_msg() argument
791 ret = aux->transfer(aux, msg); in drm_dp_i2c_do_msg()
854 aux->i2c_nack_count++; in drm_dp_i2c_do_msg()
863 aux->i2c_defer_count++; in drm_dp_i2c_do_msg()
894 static int drm_dp_i2c_drain_msg(struct drm_dp_aux *aux, struct drm_dp_aux_msg *orig_msg) in drm_dp_i2c_drain_msg() argument
900 err = drm_dp_i2c_do_msg(aux, &msg); in drm_dp_i2c_drain_msg()
930 struct drm_dp_aux *aux = adapter->algo_data; in drm_dp_i2c_xfer() local
949 err = drm_dp_i2c_do_msg(aux, &msg); in drm_dp_i2c_xfer()
968 err = drm_dp_i2c_drain_msg(aux, &msg); in drm_dp_i2c_xfer()
992 (void)drm_dp_i2c_do_msg(aux, &msg); in drm_dp_i2c_xfer()
1028 static int drm_dp_aux_get_crc(struct drm_dp_aux *aux, u8 *crc) in drm_dp_aux_get_crc() argument
1033 ret = drm_dp_dpcd_readb(aux, DP_TEST_SINK, &buf); in drm_dp_aux_get_crc()
1039 ret = drm_dp_dpcd_readb(aux, DP_TEST_SINK_MISC, &buf); in drm_dp_aux_get_crc()
1044 if (count == aux->crc_count) in drm_dp_aux_get_crc()
1047 aux->crc_count = count; in drm_dp_aux_get_crc()
1053 ret = drm_dp_dpcd_read(aux, DP_TEST_CRC_R_CR, crc, 6); in drm_dp_aux_get_crc()
1062 struct drm_dp_aux *aux = container_of(work, struct drm_dp_aux, in drm_dp_aux_crc_work() local
1069 if (WARN_ON(!aux->crtc)) in drm_dp_aux_crc_work()
1072 crtc = aux->crtc; in drm_dp_aux_crc_work()
1078 ret = drm_dp_aux_get_crc(aux, crc_bytes); in drm_dp_aux_crc_work()
1081 ret = drm_dp_aux_get_crc(aux, crc_bytes); in drm_dp_aux_crc_work()
1109 void drm_dp_aux_init(struct drm_dp_aux *aux) in drm_dp_aux_init() argument
1111 mutex_init(&aux->hw_mutex); in drm_dp_aux_init()
1112 mutex_init(&aux->cec.lock); in drm_dp_aux_init()
1113 INIT_WORK(&aux->crc_work, drm_dp_aux_crc_work); in drm_dp_aux_init()
1115 aux->ddc.algo = &drm_dp_i2c_algo; in drm_dp_aux_init()
1116 aux->ddc.algo_data = aux; in drm_dp_aux_init()
1117 aux->ddc.retries = 3; in drm_dp_aux_init()
1119 aux->ddc.lock_ops = &drm_dp_i2c_lock_ops; in drm_dp_aux_init()
1131 int drm_dp_aux_register(struct drm_dp_aux *aux) in drm_dp_aux_register() argument
1135 if (!aux->ddc.algo) in drm_dp_aux_register()
1136 drm_dp_aux_init(aux); in drm_dp_aux_register()
1138 aux->ddc.class = I2C_CLASS_DDC; in drm_dp_aux_register()
1139 aux->ddc.owner = THIS_MODULE; in drm_dp_aux_register()
1140 aux->ddc.dev.parent = aux->dev; in drm_dp_aux_register()
1142 strlcpy(aux->ddc.name, aux->name ? aux->name : dev_name(aux->dev), in drm_dp_aux_register()
1143 sizeof(aux->ddc.name)); in drm_dp_aux_register()
1145 ret = drm_dp_aux_register_devnode(aux); in drm_dp_aux_register()
1149 ret = i2c_add_adapter(&aux->ddc); in drm_dp_aux_register()
1151 drm_dp_aux_unregister_devnode(aux); in drm_dp_aux_register()
1163 void drm_dp_aux_unregister(struct drm_dp_aux *aux) in drm_dp_aux_unregister() argument
1165 drm_dp_aux_unregister_devnode(aux); in drm_dp_aux_unregister()
1166 i2c_del_adapter(&aux->ddc); in drm_dp_aux_unregister()
1210 int drm_dp_start_crc(struct drm_dp_aux *aux, struct drm_crtc *crtc) in drm_dp_start_crc() argument
1215 ret = drm_dp_dpcd_readb(aux, DP_TEST_SINK, &buf); in drm_dp_start_crc()
1219 ret = drm_dp_dpcd_writeb(aux, DP_TEST_SINK, buf | DP_TEST_SINK_START); in drm_dp_start_crc()
1223 aux->crc_count = 0; in drm_dp_start_crc()
1224 aux->crtc = crtc; in drm_dp_start_crc()
1225 schedule_work(&aux->crc_work); in drm_dp_start_crc()
1237 int drm_dp_stop_crc(struct drm_dp_aux *aux) in drm_dp_stop_crc() argument
1242 ret = drm_dp_dpcd_readb(aux, DP_TEST_SINK, &buf); in drm_dp_stop_crc()
1246 ret = drm_dp_dpcd_writeb(aux, DP_TEST_SINK, buf & ~DP_TEST_SINK_START); in drm_dp_stop_crc()
1250 flush_work(&aux->crc_work); in drm_dp_stop_crc()
1251 aux->crtc = NULL; in drm_dp_stop_crc()
1313 int drm_dp_read_desc(struct drm_dp_aux *aux, struct drm_dp_desc *desc, in drm_dp_read_desc() argument
1320 ret = drm_dp_dpcd_read(aux, offset, ident, sizeof(*ident)); in drm_dp_read_desc()