Lines Matching refs:aux
170 drm_dp_dump_access(const struct drm_dp_aux *aux, in drm_dp_dump_access() argument
177 aux->name, offset, arrow, ret, min(ret, 20), buffer); in drm_dp_dump_access()
180 aux->name, offset, arrow, ret); in drm_dp_dump_access()
195 static int drm_dp_dpcd_access(struct drm_dp_aux *aux, u8 request, in drm_dp_dpcd_access() argument
208 mutex_lock(&aux->hw_mutex); in drm_dp_dpcd_access()
222 ret = aux->transfer(aux, &msg); in drm_dp_dpcd_access()
248 mutex_unlock(&aux->hw_mutex); in drm_dp_dpcd_access()
266 ssize_t drm_dp_dpcd_read(struct drm_dp_aux *aux, unsigned int offset, in drm_dp_dpcd_read() argument
283 ret = drm_dp_dpcd_access(aux, DP_AUX_NATIVE_READ, DP_DPCD_REV, buffer, in drm_dp_dpcd_read()
288 ret = drm_dp_dpcd_access(aux, DP_AUX_NATIVE_READ, offset, buffer, in drm_dp_dpcd_read()
292 drm_dp_dump_access(aux, DP_AUX_NATIVE_READ, offset, buffer, ret); in drm_dp_dpcd_read()
311 ssize_t drm_dp_dpcd_write(struct drm_dp_aux *aux, unsigned int offset, in drm_dp_dpcd_write() argument
316 ret = drm_dp_dpcd_access(aux, DP_AUX_NATIVE_WRITE, offset, buffer, in drm_dp_dpcd_write()
318 drm_dp_dump_access(aux, DP_AUX_NATIVE_WRITE, offset, buffer, ret); in drm_dp_dpcd_write()
331 int drm_dp_dpcd_read_link_status(struct drm_dp_aux *aux, in drm_dp_dpcd_read_link_status() argument
334 return drm_dp_dpcd_read(aux, DP_LANE0_1_STATUS, status, in drm_dp_dpcd_read_link_status()
350 int drm_dp_link_probe(struct drm_dp_aux *aux, struct drm_dp_link *link) in drm_dp_link_probe() argument
357 err = drm_dp_dpcd_read(aux, DP_DPCD_REV, values, sizeof(values)); in drm_dp_link_probe()
379 int drm_dp_link_power_up(struct drm_dp_aux *aux, struct drm_dp_link *link) in drm_dp_link_power_up() argument
388 err = drm_dp_dpcd_readb(aux, DP_SET_POWER, &value); in drm_dp_link_power_up()
395 err = drm_dp_dpcd_writeb(aux, DP_SET_POWER, value); in drm_dp_link_power_up()
417 int drm_dp_link_power_down(struct drm_dp_aux *aux, struct drm_dp_link *link) in drm_dp_link_power_down() argument
426 err = drm_dp_dpcd_readb(aux, DP_SET_POWER, &value); in drm_dp_link_power_down()
433 err = drm_dp_dpcd_writeb(aux, DP_SET_POWER, value); in drm_dp_link_power_down()
448 int drm_dp_link_configure(struct drm_dp_aux *aux, struct drm_dp_link *link) in drm_dp_link_configure() argument
459 err = drm_dp_dpcd_write(aux, DP_LINK_BW_SET, values, sizeof(values)); in drm_dp_link_configure()
550 int drm_dp_downstream_id(struct drm_dp_aux *aux, char id[6]) in drm_dp_downstream_id() argument
552 return drm_dp_dpcd_read(aux, DP_BRANCH_ID, id, 6); in drm_dp_downstream_id()
566 const u8 port_cap[4], struct drm_dp_aux *aux) in drm_dp_downstream_debug() argument
612 drm_dp_downstream_id(aux, id); in drm_dp_downstream_debug()
615 len = drm_dp_dpcd_read(aux, DP_BRANCH_HW_REV, &rev[0], 1); in drm_dp_downstream_debug()
620 len = drm_dp_dpcd_read(aux, DP_BRANCH_SW_REV, rev, 2); in drm_dp_downstream_debug()
759 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
773 ret = aux->transfer(aux, msg); in drm_dp_i2c_do_msg()
837 aux->i2c_nack_count++; in drm_dp_i2c_do_msg()
846 aux->i2c_defer_count++; in drm_dp_i2c_do_msg()
878 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
884 err = drm_dp_i2c_do_msg(aux, &msg); in drm_dp_i2c_drain_msg()
914 struct drm_dp_aux *aux = adapter->algo_data; in drm_dp_i2c_xfer() local
933 err = drm_dp_i2c_do_msg(aux, &msg); in drm_dp_i2c_xfer()
952 err = drm_dp_i2c_drain_msg(aux, &msg); in drm_dp_i2c_xfer()
976 (void)drm_dp_i2c_do_msg(aux, &msg); in drm_dp_i2c_xfer()
1012 static int drm_dp_aux_get_crc(struct drm_dp_aux *aux, u8 *crc) in drm_dp_aux_get_crc() argument
1017 ret = drm_dp_dpcd_readb(aux, DP_TEST_SINK, &buf); in drm_dp_aux_get_crc()
1023 ret = drm_dp_dpcd_readb(aux, DP_TEST_SINK_MISC, &buf); in drm_dp_aux_get_crc()
1028 if (count == aux->crc_count) in drm_dp_aux_get_crc()
1031 aux->crc_count = count; in drm_dp_aux_get_crc()
1037 ret = drm_dp_dpcd_read(aux, DP_TEST_CRC_R_CR, crc, 6); in drm_dp_aux_get_crc()
1046 struct drm_dp_aux *aux = container_of(work, struct drm_dp_aux, in drm_dp_aux_crc_work() local
1053 if (WARN_ON(!aux->crtc)) in drm_dp_aux_crc_work()
1056 crtc = aux->crtc; in drm_dp_aux_crc_work()
1062 ret = drm_dp_aux_get_crc(aux, crc_bytes); in drm_dp_aux_crc_work()
1065 ret = drm_dp_aux_get_crc(aux, crc_bytes); in drm_dp_aux_crc_work()
1093 void drm_dp_aux_init(struct drm_dp_aux *aux) in drm_dp_aux_init() argument
1095 mutex_init(&aux->hw_mutex); in drm_dp_aux_init()
1096 mutex_init(&aux->cec.lock); in drm_dp_aux_init()
1097 INIT_WORK(&aux->crc_work, drm_dp_aux_crc_work); in drm_dp_aux_init()
1099 aux->ddc.algo = &drm_dp_i2c_algo; in drm_dp_aux_init()
1100 aux->ddc.algo_data = aux; in drm_dp_aux_init()
1101 aux->ddc.retries = 3; in drm_dp_aux_init()
1103 aux->ddc.lock_ops = &drm_dp_i2c_lock_ops; in drm_dp_aux_init()
1115 int drm_dp_aux_register(struct drm_dp_aux *aux) in drm_dp_aux_register() argument
1119 if (!aux->ddc.algo) in drm_dp_aux_register()
1120 drm_dp_aux_init(aux); in drm_dp_aux_register()
1122 aux->ddc.class = I2C_CLASS_DDC; in drm_dp_aux_register()
1123 aux->ddc.owner = THIS_MODULE; in drm_dp_aux_register()
1124 aux->ddc.dev.parent = aux->dev; in drm_dp_aux_register()
1126 strlcpy(aux->ddc.name, aux->name ? aux->name : dev_name(aux->dev), in drm_dp_aux_register()
1127 sizeof(aux->ddc.name)); in drm_dp_aux_register()
1129 ret = drm_dp_aux_register_devnode(aux); in drm_dp_aux_register()
1133 ret = i2c_add_adapter(&aux->ddc); in drm_dp_aux_register()
1135 drm_dp_aux_unregister_devnode(aux); in drm_dp_aux_register()
1147 void drm_dp_aux_unregister(struct drm_dp_aux *aux) in drm_dp_aux_unregister() argument
1149 drm_dp_aux_unregister_devnode(aux); in drm_dp_aux_unregister()
1150 i2c_del_adapter(&aux->ddc); in drm_dp_aux_unregister()
1194 int drm_dp_start_crc(struct drm_dp_aux *aux, struct drm_crtc *crtc) in drm_dp_start_crc() argument
1199 ret = drm_dp_dpcd_readb(aux, DP_TEST_SINK, &buf); in drm_dp_start_crc()
1203 ret = drm_dp_dpcd_writeb(aux, DP_TEST_SINK, buf | DP_TEST_SINK_START); in drm_dp_start_crc()
1207 aux->crc_count = 0; in drm_dp_start_crc()
1208 aux->crtc = crtc; in drm_dp_start_crc()
1209 schedule_work(&aux->crc_work); in drm_dp_start_crc()
1221 int drm_dp_stop_crc(struct drm_dp_aux *aux) in drm_dp_stop_crc() argument
1226 ret = drm_dp_dpcd_readb(aux, DP_TEST_SINK, &buf); in drm_dp_stop_crc()
1230 ret = drm_dp_dpcd_writeb(aux, DP_TEST_SINK, buf & ~DP_TEST_SINK_START); in drm_dp_stop_crc()
1234 flush_work(&aux->crc_work); in drm_dp_stop_crc()
1235 aux->crtc = NULL; in drm_dp_stop_crc()
1316 int drm_dp_read_desc(struct drm_dp_aux *aux, struct drm_dp_desc *desc, in drm_dp_read_desc() argument
1323 ret = drm_dp_dpcd_read(aux, offset, ident, sizeof(*ident)); in drm_dp_read_desc()