Lines Matching refs:aux
176 static int drm_dp_dpcd_access(struct drm_dp_aux *aux, u8 request, in drm_dp_dpcd_access() argument
189 mutex_lock(&aux->hw_mutex); in drm_dp_dpcd_access()
199 err = aux->transfer(aux, &msg); in drm_dp_dpcd_access()
228 mutex_unlock(&aux->hw_mutex); in drm_dp_dpcd_access()
246 ssize_t drm_dp_dpcd_read(struct drm_dp_aux *aux, unsigned int offset, in drm_dp_dpcd_read() argument
249 return drm_dp_dpcd_access(aux, DP_AUX_NATIVE_READ, offset, buffer, in drm_dp_dpcd_read()
268 ssize_t drm_dp_dpcd_write(struct drm_dp_aux *aux, unsigned int offset, in drm_dp_dpcd_write() argument
271 return drm_dp_dpcd_access(aux, DP_AUX_NATIVE_WRITE, offset, buffer, in drm_dp_dpcd_write()
284 int drm_dp_dpcd_read_link_status(struct drm_dp_aux *aux, in drm_dp_dpcd_read_link_status() argument
287 return drm_dp_dpcd_read(aux, DP_LANE0_1_STATUS, status, in drm_dp_dpcd_read_link_status()
303 int drm_dp_link_probe(struct drm_dp_aux *aux, struct drm_dp_link *link) in drm_dp_link_probe() argument
310 err = drm_dp_dpcd_read(aux, DP_DPCD_REV, values, sizeof(values)); in drm_dp_link_probe()
332 int drm_dp_link_power_up(struct drm_dp_aux *aux, struct drm_dp_link *link) in drm_dp_link_power_up() argument
341 err = drm_dp_dpcd_readb(aux, DP_SET_POWER, &value); in drm_dp_link_power_up()
348 err = drm_dp_dpcd_writeb(aux, DP_SET_POWER, value); in drm_dp_link_power_up()
370 int drm_dp_link_power_down(struct drm_dp_aux *aux, struct drm_dp_link *link) in drm_dp_link_power_down() argument
379 err = drm_dp_dpcd_readb(aux, DP_SET_POWER, &value); in drm_dp_link_power_down()
386 err = drm_dp_dpcd_writeb(aux, DP_SET_POWER, value); in drm_dp_link_power_down()
401 int drm_dp_link_configure(struct drm_dp_aux *aux, struct drm_dp_link *link) in drm_dp_link_configure() argument
412 err = drm_dp_dpcd_write(aux, DP_LINK_BW_SET, values, sizeof(values)); in drm_dp_link_configure()
537 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
551 ret = aux->transfer(aux, msg); in drm_dp_i2c_do_msg()
604 aux->i2c_nack_count++; in drm_dp_i2c_do_msg()
613 aux->i2c_defer_count++; in drm_dp_i2c_do_msg()
644 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
650 err = drm_dp_i2c_do_msg(aux, &msg); in drm_dp_i2c_drain_msg()
680 struct drm_dp_aux *aux = adapter->algo_data; in drm_dp_i2c_xfer() local
690 mutex_lock(&aux->hw_mutex); in drm_dp_i2c_xfer()
701 err = drm_dp_i2c_do_msg(aux, &msg); in drm_dp_i2c_xfer()
720 err = drm_dp_i2c_drain_msg(aux, &msg); in drm_dp_i2c_xfer()
744 (void)drm_dp_i2c_do_msg(aux, &msg); in drm_dp_i2c_xfer()
746 mutex_unlock(&aux->hw_mutex); in drm_dp_i2c_xfer()
762 int drm_dp_aux_register(struct drm_dp_aux *aux) in drm_dp_aux_register() argument
764 mutex_init(&aux->hw_mutex); in drm_dp_aux_register()
766 aux->ddc.algo = &drm_dp_i2c_algo; in drm_dp_aux_register()
767 aux->ddc.algo_data = aux; in drm_dp_aux_register()
768 aux->ddc.retries = 3; in drm_dp_aux_register()
770 aux->ddc.class = I2C_CLASS_DDC; in drm_dp_aux_register()
771 aux->ddc.owner = THIS_MODULE; in drm_dp_aux_register()
772 aux->ddc.dev.parent = aux->dev; in drm_dp_aux_register()
773 aux->ddc.dev.of_node = aux->dev->of_node; in drm_dp_aux_register()
775 strlcpy(aux->ddc.name, aux->name ? aux->name : dev_name(aux->dev), in drm_dp_aux_register()
776 sizeof(aux->ddc.name)); in drm_dp_aux_register()
778 return i2c_add_adapter(&aux->ddc); in drm_dp_aux_register()
786 void drm_dp_aux_unregister(struct drm_dp_aux *aux) in drm_dp_aux_unregister() argument
788 i2c_del_adapter(&aux->ddc); in drm_dp_aux_unregister()