Lines Matching refs:aux

41 static int edp_msg_fifo_tx(struct edp_aux *aux, struct drm_dp_aux_msg *msg)  in edp_msg_fifo_tx()  argument
75 edp_write(aux->base + REG_EDP_AUX_DATA, reg); in edp_msg_fifo_tx()
83 edp_write(aux->base + REG_EDP_AUX_TRANS_CTRL, reg); in edp_msg_fifo_tx()
88 static int edp_msg_fifo_rx(struct edp_aux *aux, struct drm_dp_aux_msg *msg) in edp_msg_fifo_rx() argument
95 edp_write(aux->base + REG_EDP_AUX_DATA, in edp_msg_fifo_rx()
101 data = edp_read(aux->base + REG_EDP_AUX_DATA); in edp_msg_fifo_rx()
103 data = edp_read(aux->base + REG_EDP_AUX_DATA); in edp_msg_fifo_rx()
120 struct edp_aux *aux = to_edp_aux(drm_aux); in edp_aux_transfer() local
140 mutex_lock(&aux->msg_mutex); in edp_aux_transfer()
142 aux->msg_err = false; in edp_aux_transfer()
143 reinit_completion(&aux->msg_comp); in edp_aux_transfer()
145 ret = edp_msg_fifo_tx(aux, msg); in edp_aux_transfer()
150 ret = wait_for_completion_timeout(&aux->msg_comp, 300); in edp_aux_transfer()
156 edp_write(aux->base + REG_EDP_AUX_TRANS_CTRL, 0); in edp_aux_transfer()
157 msm_edp_aux_ctrl(aux, 1); in edp_aux_transfer()
163 if (!aux->msg_err) { in edp_aux_transfer()
165 ret = edp_msg_fifo_rx(aux, msg); in edp_aux_transfer()
187 mutex_unlock(&aux->msg_mutex); in edp_aux_transfer()
194 struct edp_aux *aux = NULL; in msm_edp_aux_init() local
198 aux = devm_kzalloc(dev, sizeof(*aux), GFP_KERNEL); in msm_edp_aux_init()
199 if (!aux) in msm_edp_aux_init()
202 aux->base = regbase; in msm_edp_aux_init()
203 mutex_init(&aux->msg_mutex); in msm_edp_aux_init()
204 init_completion(&aux->msg_comp); in msm_edp_aux_init()
206 aux->drm_aux.name = "msm_edp_aux"; in msm_edp_aux_init()
207 aux->drm_aux.dev = dev; in msm_edp_aux_init()
208 aux->drm_aux.transfer = edp_aux_transfer; in msm_edp_aux_init()
209 ret = drm_dp_aux_register(&aux->drm_aux); in msm_edp_aux_init()
212 mutex_destroy(&aux->msg_mutex); in msm_edp_aux_init()
215 if (drm_aux && aux) in msm_edp_aux_init()
216 *drm_aux = &aux->drm_aux; in msm_edp_aux_init()
218 return aux; in msm_edp_aux_init()
221 void msm_edp_aux_destroy(struct device *dev, struct edp_aux *aux) in msm_edp_aux_destroy() argument
223 if (aux) { in msm_edp_aux_destroy()
224 drm_dp_aux_unregister(&aux->drm_aux); in msm_edp_aux_destroy()
225 mutex_destroy(&aux->msg_mutex); in msm_edp_aux_destroy()
229 irqreturn_t msm_edp_aux_irq(struct edp_aux *aux, u32 isr) in msm_edp_aux_irq() argument
233 edp_write(aux->base + REG_EDP_AUX_TRANS_CTRL, 0); in msm_edp_aux_irq()
236 aux->msg_err = true; in msm_edp_aux_irq()
238 aux->msg_err = false; in msm_edp_aux_irq()
240 complete(&aux->msg_comp); in msm_edp_aux_irq()
246 void msm_edp_aux_ctrl(struct edp_aux *aux, int enable) in msm_edp_aux_ctrl() argument
251 data = edp_read(aux->base + REG_EDP_AUX_CTRL); in msm_edp_aux_ctrl()
255 edp_write(aux->base + REG_EDP_AUX_CTRL, data); in msm_edp_aux_ctrl()
262 edp_write(aux->base + REG_EDP_AUX_CTRL, data); in msm_edp_aux_ctrl()
265 edp_write(aux->base + REG_EDP_AUX_CTRL, data); in msm_edp_aux_ctrl()