Lines Matching refs:cec
38 struct s5p_cec_dev *cec = cec_get_drvdata(adap); in s5p_cec_adap_enable() local
41 pm_runtime_get_sync(cec->dev); in s5p_cec_adap_enable()
43 s5p_cec_reset(cec); in s5p_cec_adap_enable()
45 s5p_cec_set_divider(cec); in s5p_cec_adap_enable()
46 s5p_cec_threshold(cec); in s5p_cec_adap_enable()
48 s5p_cec_unmask_tx_interrupts(cec); in s5p_cec_adap_enable()
49 s5p_cec_unmask_rx_interrupts(cec); in s5p_cec_adap_enable()
50 s5p_cec_enable_rx(cec); in s5p_cec_adap_enable()
52 s5p_cec_mask_tx_interrupts(cec); in s5p_cec_adap_enable()
53 s5p_cec_mask_rx_interrupts(cec); in s5p_cec_adap_enable()
54 pm_runtime_disable(cec->dev); in s5p_cec_adap_enable()
62 struct s5p_cec_dev *cec = cec_get_drvdata(adap); in s5p_cec_adap_log_addr() local
64 s5p_cec_set_addr(cec, addr); in s5p_cec_adap_log_addr()
71 struct s5p_cec_dev *cec = cec_get_drvdata(adap); in s5p_cec_adap_transmit() local
77 s5p_cec_copy_packet(cec, msg->msg, msg->len, max(1, attempts - 1)); in s5p_cec_adap_transmit()
83 struct s5p_cec_dev *cec = priv; in s5p_cec_irq_handler() local
86 status = s5p_cec_get_status(cec); in s5p_cec_irq_handler()
88 dev_dbg(cec->dev, "irq received\n"); in s5p_cec_irq_handler()
92 dev_dbg(cec->dev, "CEC_STATUS_TX_NACK set\n"); in s5p_cec_irq_handler()
93 cec->tx = STATE_NACK; in s5p_cec_irq_handler()
95 dev_dbg(cec->dev, "CEC_STATUS_TX_ERROR set\n"); in s5p_cec_irq_handler()
96 cec->tx = STATE_ERROR; in s5p_cec_irq_handler()
98 dev_dbg(cec->dev, "CEC_STATUS_TX_DONE\n"); in s5p_cec_irq_handler()
99 cec->tx = STATE_DONE; in s5p_cec_irq_handler()
101 s5p_clr_pending_tx(cec); in s5p_cec_irq_handler()
106 dev_dbg(cec->dev, "CEC_STATUS_RX_ERROR set\n"); in s5p_cec_irq_handler()
107 s5p_cec_rx_reset(cec); in s5p_cec_irq_handler()
108 s5p_cec_enable_rx(cec); in s5p_cec_irq_handler()
110 dev_dbg(cec->dev, "CEC_STATUS_RX_DONE set\n"); in s5p_cec_irq_handler()
111 if (cec->rx != STATE_IDLE) in s5p_cec_irq_handler()
112 dev_dbg(cec->dev, "Buffer overrun (worker did not process previous message)\n"); in s5p_cec_irq_handler()
113 cec->rx = STATE_BUSY; in s5p_cec_irq_handler()
114 cec->msg.len = status >> 24; in s5p_cec_irq_handler()
115 cec->msg.rx_status = CEC_RX_STATUS_OK; in s5p_cec_irq_handler()
116 s5p_cec_get_rx_buf(cec, cec->msg.len, in s5p_cec_irq_handler()
117 cec->msg.msg); in s5p_cec_irq_handler()
118 cec->rx = STATE_DONE; in s5p_cec_irq_handler()
119 s5p_cec_enable_rx(cec); in s5p_cec_irq_handler()
122 s5p_clr_pending_rx(cec); in s5p_cec_irq_handler()
129 struct s5p_cec_dev *cec = priv; in s5p_cec_irq_handler_thread() local
131 dev_dbg(cec->dev, "irq processing thread\n"); in s5p_cec_irq_handler_thread()
132 switch (cec->tx) { in s5p_cec_irq_handler_thread()
134 cec_transmit_done(cec->adap, CEC_TX_STATUS_OK, 0, 0, 0, 0); in s5p_cec_irq_handler_thread()
135 cec->tx = STATE_IDLE; in s5p_cec_irq_handler_thread()
138 cec_transmit_done(cec->adap, in s5p_cec_irq_handler_thread()
141 cec->tx = STATE_IDLE; in s5p_cec_irq_handler_thread()
144 cec_transmit_done(cec->adap, in s5p_cec_irq_handler_thread()
147 cec->tx = STATE_IDLE; in s5p_cec_irq_handler_thread()
150 dev_err(cec->dev, "state set to busy, this should not occur here\n"); in s5p_cec_irq_handler_thread()
156 switch (cec->rx) { in s5p_cec_irq_handler_thread()
158 cec_received_msg(cec->adap, &cec->msg); in s5p_cec_irq_handler_thread()
159 cec->rx = STATE_IDLE; in s5p_cec_irq_handler_thread()
179 struct s5p_cec_dev *cec; in s5p_cec_probe() local
188 cec = devm_kzalloc(&pdev->dev, sizeof(*cec), GFP_KERNEL); in s5p_cec_probe()
189 if (!cec) in s5p_cec_probe()
192 cec->dev = dev; in s5p_cec_probe()
194 cec->irq = platform_get_irq(pdev, 0); in s5p_cec_probe()
195 if (cec->irq < 0) in s5p_cec_probe()
196 return cec->irq; in s5p_cec_probe()
198 ret = devm_request_threaded_irq(dev, cec->irq, s5p_cec_irq_handler, in s5p_cec_probe()
199 s5p_cec_irq_handler_thread, 0, pdev->name, cec); in s5p_cec_probe()
203 cec->clk = devm_clk_get(dev, "hdmicec"); in s5p_cec_probe()
204 if (IS_ERR(cec->clk)) in s5p_cec_probe()
205 return PTR_ERR(cec->clk); in s5p_cec_probe()
207 cec->pmu = syscon_regmap_lookup_by_phandle(dev->of_node, in s5p_cec_probe()
209 if (IS_ERR(cec->pmu)) in s5p_cec_probe()
213 cec->reg = devm_ioremap_resource(dev, res); in s5p_cec_probe()
214 if (IS_ERR(cec->reg)) in s5p_cec_probe()
215 return PTR_ERR(cec->reg); in s5p_cec_probe()
217 cec->adap = cec_allocate_adapter(&s5p_cec_adap_ops, cec, CEC_NAME, in s5p_cec_probe()
220 ret = PTR_ERR_OR_ZERO(cec->adap); in s5p_cec_probe()
224 cec->notifier = cec_notifier_cec_adap_register(hdmi_dev, NULL, in s5p_cec_probe()
225 cec->adap); in s5p_cec_probe()
226 if (!cec->notifier) { in s5p_cec_probe()
231 ret = cec_register_adapter(cec->adap, &pdev->dev); in s5p_cec_probe()
235 platform_set_drvdata(pdev, cec); in s5p_cec_probe()
242 cec_notifier_cec_adap_unregister(cec->notifier); in s5p_cec_probe()
245 cec_delete_adapter(cec->adap); in s5p_cec_probe()
251 struct s5p_cec_dev *cec = platform_get_drvdata(pdev); in s5p_cec_remove() local
253 cec_notifier_cec_adap_unregister(cec->notifier); in s5p_cec_remove()
254 cec_unregister_adapter(cec->adap); in s5p_cec_remove()
261 struct s5p_cec_dev *cec = dev_get_drvdata(dev); in s5p_cec_runtime_suspend() local
263 clk_disable_unprepare(cec->clk); in s5p_cec_runtime_suspend()
269 struct s5p_cec_dev *cec = dev_get_drvdata(dev); in s5p_cec_runtime_resume() local
272 ret = clk_prepare_enable(cec->clk); in s5p_cec_runtime_resume()