Lines Matching refs:cec

39 	struct s5p_cec_dev *cec = cec_get_drvdata(adap);  in s5p_cec_adap_enable()  local
42 ret = pm_runtime_resume_and_get(cec->dev); in s5p_cec_adap_enable()
46 s5p_cec_reset(cec); in s5p_cec_adap_enable()
48 s5p_cec_set_divider(cec); in s5p_cec_adap_enable()
49 s5p_cec_threshold(cec); in s5p_cec_adap_enable()
51 s5p_cec_unmask_tx_interrupts(cec); in s5p_cec_adap_enable()
52 s5p_cec_unmask_rx_interrupts(cec); in s5p_cec_adap_enable()
53 s5p_cec_enable_rx(cec); in s5p_cec_adap_enable()
55 s5p_cec_mask_tx_interrupts(cec); in s5p_cec_adap_enable()
56 s5p_cec_mask_rx_interrupts(cec); in s5p_cec_adap_enable()
57 pm_runtime_put(cec->dev); in s5p_cec_adap_enable()
65 struct s5p_cec_dev *cec = cec_get_drvdata(adap); in s5p_cec_adap_log_addr() local
67 s5p_cec_set_addr(cec, addr); in s5p_cec_adap_log_addr()
74 struct s5p_cec_dev *cec = cec_get_drvdata(adap); in s5p_cec_adap_transmit() local
80 s5p_cec_copy_packet(cec, msg->msg, msg->len, max(1, attempts - 1)); in s5p_cec_adap_transmit()
86 struct s5p_cec_dev *cec = priv; in s5p_cec_irq_handler() local
89 status = s5p_cec_get_status(cec); in s5p_cec_irq_handler()
91 dev_dbg(cec->dev, "irq received\n"); in s5p_cec_irq_handler()
95 dev_dbg(cec->dev, "CEC_STATUS_TX_NACK set\n"); in s5p_cec_irq_handler()
96 cec->tx = STATE_NACK; in s5p_cec_irq_handler()
98 dev_dbg(cec->dev, "CEC_STATUS_TX_ERROR set\n"); in s5p_cec_irq_handler()
99 cec->tx = STATE_ERROR; in s5p_cec_irq_handler()
101 dev_dbg(cec->dev, "CEC_STATUS_TX_DONE\n"); in s5p_cec_irq_handler()
102 cec->tx = STATE_DONE; in s5p_cec_irq_handler()
104 s5p_clr_pending_tx(cec); in s5p_cec_irq_handler()
109 dev_dbg(cec->dev, "CEC_STATUS_RX_ERROR set\n"); in s5p_cec_irq_handler()
110 s5p_cec_rx_reset(cec); in s5p_cec_irq_handler()
111 s5p_cec_enable_rx(cec); in s5p_cec_irq_handler()
113 dev_dbg(cec->dev, "CEC_STATUS_RX_DONE set\n"); in s5p_cec_irq_handler()
114 if (cec->rx != STATE_IDLE) in s5p_cec_irq_handler()
115 dev_dbg(cec->dev, "Buffer overrun (worker did not process previous message)\n"); in s5p_cec_irq_handler()
116 cec->rx = STATE_BUSY; in s5p_cec_irq_handler()
117 cec->msg.len = status >> 24; in s5p_cec_irq_handler()
118 cec->msg.rx_status = CEC_RX_STATUS_OK; in s5p_cec_irq_handler()
119 s5p_cec_get_rx_buf(cec, cec->msg.len, in s5p_cec_irq_handler()
120 cec->msg.msg); in s5p_cec_irq_handler()
121 cec->rx = STATE_DONE; in s5p_cec_irq_handler()
122 s5p_cec_enable_rx(cec); in s5p_cec_irq_handler()
125 s5p_clr_pending_rx(cec); in s5p_cec_irq_handler()
132 struct s5p_cec_dev *cec = priv; in s5p_cec_irq_handler_thread() local
134 dev_dbg(cec->dev, "irq processing thread\n"); in s5p_cec_irq_handler_thread()
135 switch (cec->tx) { in s5p_cec_irq_handler_thread()
137 cec_transmit_done(cec->adap, CEC_TX_STATUS_OK, 0, 0, 0, 0); in s5p_cec_irq_handler_thread()
138 cec->tx = STATE_IDLE; in s5p_cec_irq_handler_thread()
141 cec_transmit_done(cec->adap, in s5p_cec_irq_handler_thread()
144 cec->tx = STATE_IDLE; in s5p_cec_irq_handler_thread()
147 cec_transmit_done(cec->adap, in s5p_cec_irq_handler_thread()
150 cec->tx = STATE_IDLE; in s5p_cec_irq_handler_thread()
153 dev_err(cec->dev, "state set to busy, this should not occur here\n"); in s5p_cec_irq_handler_thread()
159 switch (cec->rx) { in s5p_cec_irq_handler_thread()
161 cec_received_msg(cec->adap, &cec->msg); in s5p_cec_irq_handler_thread()
162 cec->rx = STATE_IDLE; in s5p_cec_irq_handler_thread()
181 struct s5p_cec_dev *cec; in s5p_cec_probe() local
190 cec = devm_kzalloc(&pdev->dev, sizeof(*cec), GFP_KERNEL); in s5p_cec_probe()
191 if (!cec) in s5p_cec_probe()
194 cec->dev = dev; in s5p_cec_probe()
196 cec->irq = platform_get_irq(pdev, 0); in s5p_cec_probe()
197 if (cec->irq < 0) in s5p_cec_probe()
198 return cec->irq; in s5p_cec_probe()
200 ret = devm_request_threaded_irq(dev, cec->irq, s5p_cec_irq_handler, in s5p_cec_probe()
201 s5p_cec_irq_handler_thread, 0, pdev->name, cec); in s5p_cec_probe()
205 cec->clk = devm_clk_get(dev, "hdmicec"); in s5p_cec_probe()
206 if (IS_ERR(cec->clk)) in s5p_cec_probe()
207 return PTR_ERR(cec->clk); in s5p_cec_probe()
209 cec->pmu = syscon_regmap_lookup_by_phandle(dev->of_node, in s5p_cec_probe()
211 if (IS_ERR(cec->pmu)) in s5p_cec_probe()
214 cec->reg = devm_platform_ioremap_resource(pdev, 0); in s5p_cec_probe()
215 if (IS_ERR(cec->reg)) in s5p_cec_probe()
216 return PTR_ERR(cec->reg); in s5p_cec_probe()
218 cec->adap = cec_allocate_adapter(&s5p_cec_adap_ops, cec, CEC_NAME, in s5p_cec_probe()
221 ret = PTR_ERR_OR_ZERO(cec->adap); in s5p_cec_probe()
225 cec->notifier = cec_notifier_cec_adap_register(hdmi_dev, NULL, in s5p_cec_probe()
226 cec->adap); in s5p_cec_probe()
227 if (!cec->notifier) { in s5p_cec_probe()
232 ret = cec_register_adapter(cec->adap, &pdev->dev); in s5p_cec_probe()
236 platform_set_drvdata(pdev, cec); in s5p_cec_probe()
243 cec_notifier_cec_adap_unregister(cec->notifier, cec->adap); in s5p_cec_probe()
246 cec_delete_adapter(cec->adap); in s5p_cec_probe()
252 struct s5p_cec_dev *cec = platform_get_drvdata(pdev); in s5p_cec_remove() local
254 cec_notifier_cec_adap_unregister(cec->notifier, cec->adap); in s5p_cec_remove()
255 cec_unregister_adapter(cec->adap); in s5p_cec_remove()
262 struct s5p_cec_dev *cec = dev_get_drvdata(dev); in s5p_cec_runtime_suspend() local
264 clk_disable_unprepare(cec->clk); in s5p_cec_runtime_suspend()
270 struct s5p_cec_dev *cec = dev_get_drvdata(dev); in s5p_cec_runtime_resume() local
273 ret = clk_prepare_enable(cec->clk); in s5p_cec_runtime_resume()