Lines Matching refs:cec

134 	struct stih_cec *cec = cec_get_drvdata(adap);  in stih_cec_adap_enable()  local
138 unsigned long clk_freq = clk_get_rate(cec->clk); in stih_cec_adap_enable()
141 writel(cec_clk_div, cec->regs + CEC_CLK_DIV); in stih_cec_adap_enable()
145 cec->regs + CEC_BIT_TOUT_THRESH); in stih_cec_adap_enable()
149 cec->regs + CEC_BIT_PULSE_THRESH); in stih_cec_adap_enable()
152 writel(BIT(5) | BIT(7), cec->regs + CEC_TX_CTRL); in stih_cec_adap_enable()
156 cec->regs + CEC_DATA_ARRAY_CTRL); in stih_cec_adap_enable()
160 cec->regs + CEC_CTRL); in stih_cec_adap_enable()
163 writel(0, cec->regs + CEC_ADDR_TABLE); in stih_cec_adap_enable()
166 writel(0x0, cec->regs + CEC_STATUS); in stih_cec_adap_enable()
172 cec->regs + CEC_IRQ_CTRL); in stih_cec_adap_enable()
176 writel(0, cec->regs + CEC_ADDR_TABLE); in stih_cec_adap_enable()
179 writel(0x0, cec->regs + CEC_STATUS); in stih_cec_adap_enable()
182 writel(0, cec->regs + CEC_IRQ_CTRL); in stih_cec_adap_enable()
190 struct stih_cec *cec = cec_get_drvdata(adap); in stih_cec_adap_log_addr() local
191 u32 reg = readl(cec->regs + CEC_ADDR_TABLE); in stih_cec_adap_log_addr()
198 writel(reg, cec->regs + CEC_ADDR_TABLE); in stih_cec_adap_log_addr()
206 struct stih_cec *cec = cec_get_drvdata(adap); in stih_cec_adap_transmit() local
211 writeb(msg->msg[i], cec->regs + CEC_TX_DATA_BASE + i); in stih_cec_adap_transmit()
218 msg->len, cec->regs + CEC_TX_ARRAY_CTRL); in stih_cec_adap_transmit()
223 static void stih_tx_done(struct stih_cec *cec, u32 status) in stih_tx_done() argument
226 cec_transmit_attempt_done(cec->adap, CEC_TX_STATUS_ERROR); in stih_tx_done()
231 cec_transmit_attempt_done(cec->adap, CEC_TX_STATUS_ARB_LOST); in stih_tx_done()
236 cec_transmit_attempt_done(cec->adap, CEC_TX_STATUS_NACK); in stih_tx_done()
240 cec_transmit_attempt_done(cec->adap, CEC_TX_STATUS_OK); in stih_tx_done()
243 static void stih_rx_done(struct stih_cec *cec, u32 status) in stih_rx_done() argument
254 msg.len = readl(cec->regs + CEC_DATA_ARRAY_STATUS) & 0x1f; in stih_rx_done()
263 msg.msg[i] = readl(cec->regs + CEC_RX_DATA_BASE + i); in stih_rx_done()
265 cec_received_msg(cec->adap, &msg); in stih_rx_done()
270 struct stih_cec *cec = priv; in stih_cec_irq_handler_thread() local
272 if (cec->irq_status & CEC_TX_DONE_STS) in stih_cec_irq_handler_thread()
273 stih_tx_done(cec, cec->irq_status); in stih_cec_irq_handler_thread()
275 if (cec->irq_status & CEC_RX_DONE_STS) in stih_cec_irq_handler_thread()
276 stih_rx_done(cec, cec->irq_status); in stih_cec_irq_handler_thread()
278 cec->irq_status = 0; in stih_cec_irq_handler_thread()
285 struct stih_cec *cec = priv; in stih_cec_irq_handler() local
287 cec->irq_status = readl(cec->regs + CEC_STATUS); in stih_cec_irq_handler()
288 writel(cec->irq_status, cec->regs + CEC_STATUS); in stih_cec_irq_handler()
303 struct stih_cec *cec; in stih_cec_probe() local
312 cec = devm_kzalloc(dev, sizeof(*cec), GFP_KERNEL); in stih_cec_probe()
313 if (!cec) in stih_cec_probe()
316 cec->dev = dev; in stih_cec_probe()
319 cec->regs = devm_ioremap_resource(dev, res); in stih_cec_probe()
320 if (IS_ERR(cec->regs)) in stih_cec_probe()
321 return PTR_ERR(cec->regs); in stih_cec_probe()
323 cec->irq = platform_get_irq(pdev, 0); in stih_cec_probe()
324 if (cec->irq < 0) in stih_cec_probe()
325 return cec->irq; in stih_cec_probe()
327 ret = devm_request_threaded_irq(dev, cec->irq, stih_cec_irq_handler, in stih_cec_probe()
329 pdev->name, cec); in stih_cec_probe()
333 cec->clk = devm_clk_get(dev, "cec-clk"); in stih_cec_probe()
334 if (IS_ERR(cec->clk)) { in stih_cec_probe()
336 return PTR_ERR(cec->clk); in stih_cec_probe()
339 cec->adap = cec_allocate_adapter(&sti_cec_adap_ops, cec, CEC_NAME, in stih_cec_probe()
343 ret = PTR_ERR_OR_ZERO(cec->adap); in stih_cec_probe()
347 cec->notifier = cec_notifier_cec_adap_register(hdmi_dev, NULL, in stih_cec_probe()
348 cec->adap); in stih_cec_probe()
349 if (!cec->notifier) { in stih_cec_probe()
354 ret = cec_register_adapter(cec->adap, &pdev->dev); in stih_cec_probe()
358 platform_set_drvdata(pdev, cec); in stih_cec_probe()
362 cec_notifier_cec_adap_unregister(cec->notifier, cec->adap); in stih_cec_probe()
365 cec_delete_adapter(cec->adap); in stih_cec_probe()
371 struct stih_cec *cec = platform_get_drvdata(pdev); in stih_cec_remove() local
373 cec_notifier_cec_adap_unregister(cec->notifier, cec->adap); in stih_cec_remove()
374 cec_unregister_adapter(cec->adap); in stih_cec_remove()