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()
121 struct edp_aux *aux = to_edp_aux(drm_aux); in edp_aux_transfer() local
142 mutex_lock(&aux->msg_mutex); in edp_aux_transfer()
144 aux->msg_err = false; in edp_aux_transfer()
145 reinit_completion(&aux->msg_comp); in edp_aux_transfer()
147 ret = edp_msg_fifo_tx(aux, msg); in edp_aux_transfer()
152 time_left = wait_for_completion_timeout(&aux->msg_comp, in edp_aux_transfer()
159 edp_write(aux->base + REG_EDP_AUX_TRANS_CTRL, 0); in edp_aux_transfer()
160 msm_edp_aux_ctrl(aux, 1); in edp_aux_transfer()
167 if (!aux->msg_err) { in edp_aux_transfer()
169 ret = edp_msg_fifo_rx(aux, msg); in edp_aux_transfer()
191 mutex_unlock(&aux->msg_mutex); in edp_aux_transfer()
198 struct edp_aux *aux = NULL; in msm_edp_aux_init() local
202 aux = devm_kzalloc(dev, sizeof(*aux), GFP_KERNEL); in msm_edp_aux_init()
203 if (!aux) in msm_edp_aux_init()
206 aux->base = regbase; in msm_edp_aux_init()
207 mutex_init(&aux->msg_mutex); in msm_edp_aux_init()
208 init_completion(&aux->msg_comp); in msm_edp_aux_init()
210 aux->drm_aux.name = "msm_edp_aux"; in msm_edp_aux_init()
211 aux->drm_aux.dev = dev; in msm_edp_aux_init()
212 aux->drm_aux.transfer = edp_aux_transfer; in msm_edp_aux_init()
213 ret = drm_dp_aux_register(&aux->drm_aux); in msm_edp_aux_init()
216 mutex_destroy(&aux->msg_mutex); in msm_edp_aux_init()
219 if (drm_aux && aux) in msm_edp_aux_init()
220 *drm_aux = &aux->drm_aux; in msm_edp_aux_init()
222 return aux; in msm_edp_aux_init()
225 void msm_edp_aux_destroy(struct device *dev, struct edp_aux *aux) in msm_edp_aux_destroy() argument
227 if (aux) { in msm_edp_aux_destroy()
228 drm_dp_aux_unregister(&aux->drm_aux); in msm_edp_aux_destroy()
229 mutex_destroy(&aux->msg_mutex); in msm_edp_aux_destroy()
233 irqreturn_t msm_edp_aux_irq(struct edp_aux *aux, u32 isr) in msm_edp_aux_irq() argument
237 edp_write(aux->base + REG_EDP_AUX_TRANS_CTRL, 0); in msm_edp_aux_irq()
240 aux->msg_err = true; in msm_edp_aux_irq()
242 aux->msg_err = false; in msm_edp_aux_irq()
244 complete(&aux->msg_comp); in msm_edp_aux_irq()
250 void msm_edp_aux_ctrl(struct edp_aux *aux, int enable) in msm_edp_aux_ctrl() argument
255 data = edp_read(aux->base + REG_EDP_AUX_CTRL); in msm_edp_aux_ctrl()
259 edp_write(aux->base + REG_EDP_AUX_CTRL, data); in msm_edp_aux_ctrl()
266 edp_write(aux->base + REG_EDP_AUX_CTRL, data); in msm_edp_aux_ctrl()
269 edp_write(aux->base + REG_EDP_AUX_CTRL, data); in msm_edp_aux_ctrl()