Lines Matching refs:cec

59 static void mtk_cec_clear_bits(struct mtk_cec *cec, unsigned int offset,  in mtk_cec_clear_bits()  argument
62 void __iomem *reg = cec->regs + offset; in mtk_cec_clear_bits()
70 static void mtk_cec_set_bits(struct mtk_cec *cec, unsigned int offset, in mtk_cec_set_bits() argument
73 void __iomem *reg = cec->regs + offset; in mtk_cec_set_bits()
81 static void mtk_cec_mask(struct mtk_cec *cec, unsigned int offset, in mtk_cec_mask() argument
84 u32 tmp = readl(cec->regs + offset) & ~mask; in mtk_cec_mask()
87 writel(val, cec->regs + offset); in mtk_cec_mask()
94 struct mtk_cec *cec = dev_get_drvdata(dev); in mtk_cec_set_hpd_event() local
97 spin_lock_irqsave(&cec->lock, flags); in mtk_cec_set_hpd_event()
98 cec->hdmi_dev = hdmi_dev; in mtk_cec_set_hpd_event()
99 cec->hpd_event = hpd_event; in mtk_cec_set_hpd_event()
100 spin_unlock_irqrestore(&cec->lock, flags); in mtk_cec_set_hpd_event()
105 struct mtk_cec *cec = dev_get_drvdata(dev); in mtk_cec_hpd_high() local
108 status = readl(cec->regs + RX_EVENT); in mtk_cec_hpd_high()
113 static void mtk_cec_htplg_irq_init(struct mtk_cec *cec) in mtk_cec_htplg_irq_init() argument
115 mtk_cec_mask(cec, CEC_CKGEN, 0 | CEC_32K_PDN, PDN | CEC_32K_PDN); in mtk_cec_htplg_irq_init()
116 mtk_cec_set_bits(cec, RX_GEN_WD, HDMI_PORD_INT_32K_CLR | in mtk_cec_htplg_irq_init()
118 mtk_cec_mask(cec, RX_GEN_WD, 0, HDMI_PORD_INT_32K_CLR | RX_INT_32K_CLR | in mtk_cec_htplg_irq_init()
123 static void mtk_cec_htplg_irq_enable(struct mtk_cec *cec) in mtk_cec_htplg_irq_enable() argument
125 mtk_cec_set_bits(cec, RX_EVENT, HDMI_PORD_INT_EN | HDMI_HTPLG_INT_EN); in mtk_cec_htplg_irq_enable()
128 static void mtk_cec_htplg_irq_disable(struct mtk_cec *cec) in mtk_cec_htplg_irq_disable() argument
130 mtk_cec_clear_bits(cec, RX_EVENT, HDMI_PORD_INT_EN | HDMI_HTPLG_INT_EN); in mtk_cec_htplg_irq_disable()
133 static void mtk_cec_clear_htplg_irq(struct mtk_cec *cec) in mtk_cec_clear_htplg_irq() argument
135 mtk_cec_set_bits(cec, TR_CONFIG, CLEAR_CEC_IRQ); in mtk_cec_clear_htplg_irq()
136 mtk_cec_set_bits(cec, NORMAL_INT_CTRL, HDMI_HTPLG_INT_CLR | in mtk_cec_clear_htplg_irq()
138 mtk_cec_set_bits(cec, RX_GEN_WD, HDMI_PORD_INT_32K_CLR | in mtk_cec_clear_htplg_irq()
141 mtk_cec_clear_bits(cec, NORMAL_INT_CTRL, HDMI_HTPLG_INT_CLR | in mtk_cec_clear_htplg_irq()
143 mtk_cec_clear_bits(cec, TR_CONFIG, CLEAR_CEC_IRQ); in mtk_cec_clear_htplg_irq()
144 mtk_cec_clear_bits(cec, RX_GEN_WD, HDMI_PORD_INT_32K_CLR | in mtk_cec_clear_htplg_irq()
148 static void mtk_cec_hpd_event(struct mtk_cec *cec, bool hpd) in mtk_cec_hpd_event() argument
154 spin_lock_irqsave(&cec->lock, flags); in mtk_cec_hpd_event()
155 hpd_event = cec->hpd_event; in mtk_cec_hpd_event()
156 hdmi_dev = cec->hdmi_dev; in mtk_cec_hpd_event()
157 spin_unlock_irqrestore(&cec->lock, flags); in mtk_cec_hpd_event()
166 struct mtk_cec *cec = dev_get_drvdata(dev); in mtk_cec_htplg_isr_thread() local
169 mtk_cec_clear_htplg_irq(cec); in mtk_cec_htplg_isr_thread()
172 if (cec->hpd != hpd) { in mtk_cec_htplg_isr_thread()
174 cec->hpd, hpd); in mtk_cec_htplg_isr_thread()
175 cec->hpd = hpd; in mtk_cec_htplg_isr_thread()
176 mtk_cec_hpd_event(cec, hpd); in mtk_cec_htplg_isr_thread()
184 struct mtk_cec *cec; in mtk_cec_probe() local
188 cec = devm_kzalloc(dev, sizeof(*cec), GFP_KERNEL); in mtk_cec_probe()
189 if (!cec) in mtk_cec_probe()
192 platform_set_drvdata(pdev, cec); in mtk_cec_probe()
193 spin_lock_init(&cec->lock); in mtk_cec_probe()
196 cec->regs = devm_ioremap_resource(dev, res); in mtk_cec_probe()
197 if (IS_ERR(cec->regs)) { in mtk_cec_probe()
198 ret = PTR_ERR(cec->regs); in mtk_cec_probe()
203 cec->clk = devm_clk_get(dev, NULL); in mtk_cec_probe()
204 if (IS_ERR(cec->clk)) { in mtk_cec_probe()
205 ret = PTR_ERR(cec->clk); in mtk_cec_probe()
210 cec->irq = platform_get_irq(pdev, 0); in mtk_cec_probe()
211 if (cec->irq < 0) { in mtk_cec_probe()
212 dev_err(dev, "Failed to get cec irq: %d\n", cec->irq); in mtk_cec_probe()
213 return cec->irq; in mtk_cec_probe()
216 ret = devm_request_threaded_irq(dev, cec->irq, NULL, in mtk_cec_probe()
225 ret = clk_prepare_enable(cec->clk); in mtk_cec_probe()
231 mtk_cec_htplg_irq_init(cec); in mtk_cec_probe()
232 mtk_cec_htplg_irq_enable(cec); in mtk_cec_probe()
239 struct mtk_cec *cec = platform_get_drvdata(pdev); in mtk_cec_remove() local
241 mtk_cec_htplg_irq_disable(cec); in mtk_cec_remove()
242 clk_disable_unprepare(cec->clk); in mtk_cec_remove()