Lines Matching defs:cec

16 #include <media/cec.h>
17 #include <media/cec-notifier.h>
19 #define CEC_NAME "stih-cec"
134 struct stih_cec *cec = cec_get_drvdata(adap);
138 unsigned long clk_freq = clk_get_rate(cec->clk);
141 writel(cec_clk_div, cec->regs + CEC_CLK_DIV);
145 cec->regs + CEC_BIT_TOUT_THRESH);
149 cec->regs + CEC_BIT_PULSE_THRESH);
152 writel(BIT(5) | BIT(7), cec->regs + CEC_TX_CTRL);
156 cec->regs + CEC_DATA_ARRAY_CTRL);
160 cec->regs + CEC_CTRL);
163 writel(0, cec->regs + CEC_ADDR_TABLE);
166 writel(0x0, cec->regs + CEC_STATUS);
172 cec->regs + CEC_IRQ_CTRL);
176 writel(0, cec->regs + CEC_ADDR_TABLE);
179 writel(0x0, cec->regs + CEC_STATUS);
182 writel(0, cec->regs + CEC_IRQ_CTRL);
190 struct stih_cec *cec = cec_get_drvdata(adap);
191 u32 reg = readl(cec->regs + CEC_ADDR_TABLE);
198 writel(reg, cec->regs + CEC_ADDR_TABLE);
206 struct stih_cec *cec = cec_get_drvdata(adap);
211 writeb(msg->msg[i], cec->regs + CEC_TX_DATA_BASE + i);
218 msg->len, cec->regs + CEC_TX_ARRAY_CTRL);
223 static void stih_tx_done(struct stih_cec *cec, u32 status)
226 cec_transmit_attempt_done(cec->adap, CEC_TX_STATUS_ERROR);
231 cec_transmit_attempt_done(cec->adap, CEC_TX_STATUS_ARB_LOST);
236 cec_transmit_attempt_done(cec->adap, CEC_TX_STATUS_NACK);
240 cec_transmit_attempt_done(cec->adap, CEC_TX_STATUS_OK);
243 static void stih_rx_done(struct stih_cec *cec, u32 status)
254 msg.len = readl(cec->regs + CEC_DATA_ARRAY_STATUS) & 0x1f;
263 msg.msg[i] = readl(cec->regs + CEC_RX_DATA_BASE + i);
265 cec_received_msg(cec->adap, &msg);
270 struct stih_cec *cec = priv;
272 if (cec->irq_status & CEC_TX_DONE_STS)
273 stih_tx_done(cec, cec->irq_status);
275 if (cec->irq_status & CEC_RX_DONE_STS)
276 stih_rx_done(cec, cec->irq_status);
278 cec->irq_status = 0;
285 struct stih_cec *cec = priv;
287 cec->irq_status = readl(cec->regs + CEC_STATUS);
288 writel(cec->irq_status, cec->regs + CEC_STATUS);
302 struct stih_cec *cec;
311 cec = devm_kzalloc(dev, sizeof(*cec), GFP_KERNEL);
312 if (!cec)
315 cec->dev = dev;
317 cec->regs = devm_platform_ioremap_resource(pdev, 0);
318 if (IS_ERR(cec->regs))
319 return PTR_ERR(cec->regs);
321 cec->irq = platform_get_irq(pdev, 0);
322 if (cec->irq < 0)
323 return cec->irq;
325 ret = devm_request_threaded_irq(dev, cec->irq, stih_cec_irq_handler,
327 pdev->name, cec);
331 cec->clk = devm_clk_get(dev, "cec-clk");
332 if (IS_ERR(cec->clk)) {
333 dev_err(dev, "Cannot get cec clock\n");
334 return PTR_ERR(cec->clk);
337 cec->adap = cec_allocate_adapter(&sti_cec_adap_ops, cec, CEC_NAME,
341 ret = PTR_ERR_OR_ZERO(cec->adap);
345 cec->notifier = cec_notifier_cec_adap_register(hdmi_dev, NULL,
346 cec->adap);
347 if (!cec->notifier) {
352 ret = cec_register_adapter(cec->adap, &pdev->dev);
356 platform_set_drvdata(pdev, cec);
360 cec_notifier_cec_adap_unregister(cec->notifier, cec->adap);
363 cec_delete_adapter(cec->adap);
369 struct stih_cec *cec = platform_get_drvdata(pdev);
371 cec_notifier_cec_adap_unregister(cec->notifier, cec->adap);
372 cec_unregister_adapter(cec->adap);
377 .compatible = "st,stih-cec",