Lines Matching refs:cec
34 struct cec_gpio *cec = cec_get_drvdata(adap); in cec_gpio_read() local
36 if (cec->cec_is_low) in cec_gpio_read()
38 return gpiod_get_value(cec->cec_gpio); in cec_gpio_read()
43 struct cec_gpio *cec = cec_get_drvdata(adap); in cec_gpio_high() local
45 if (!cec->cec_is_low) in cec_gpio_high()
47 cec->cec_is_low = false; in cec_gpio_high()
48 gpiod_set_value(cec->cec_gpio, 1); in cec_gpio_high()
53 struct cec_gpio *cec = cec_get_drvdata(adap); in cec_gpio_low() local
55 if (cec->cec_is_low) in cec_gpio_low()
57 cec->cec_is_low = true; in cec_gpio_low()
58 gpiod_set_value(cec->cec_gpio, 0); in cec_gpio_low()
63 struct cec_gpio *cec = priv; in cec_hpd_gpio_irq_handler_thread() local
65 cec_queue_pin_hpd_event(cec->adap, cec->hpd_is_high, cec->hpd_ts); in cec_hpd_gpio_irq_handler_thread()
71 struct cec_gpio *cec = priv; in cec_5v_gpio_irq_handler() local
72 bool is_high = gpiod_get_value(cec->v5_gpio); in cec_5v_gpio_irq_handler()
74 if (is_high == cec->v5_is_high) in cec_5v_gpio_irq_handler()
76 cec->v5_ts = ktime_get(); in cec_5v_gpio_irq_handler()
77 cec->v5_is_high = is_high; in cec_5v_gpio_irq_handler()
83 struct cec_gpio *cec = priv; in cec_5v_gpio_irq_handler_thread() local
85 cec_queue_pin_5v_event(cec->adap, cec->v5_is_high, cec->v5_ts); in cec_5v_gpio_irq_handler_thread()
91 struct cec_gpio *cec = priv; in cec_hpd_gpio_irq_handler() local
92 bool is_high = gpiod_get_value(cec->hpd_gpio); in cec_hpd_gpio_irq_handler()
94 if (is_high == cec->hpd_is_high) in cec_hpd_gpio_irq_handler()
96 cec->hpd_ts = ktime_get(); in cec_hpd_gpio_irq_handler()
97 cec->hpd_is_high = is_high; in cec_hpd_gpio_irq_handler()
103 struct cec_gpio *cec = priv; in cec_gpio_irq_handler() local
105 cec_pin_changed(cec->adap, gpiod_get_value(cec->cec_gpio)); in cec_gpio_irq_handler()
111 struct cec_gpio *cec = cec_get_drvdata(adap); in cec_gpio_enable_irq() local
113 enable_irq(cec->cec_irq); in cec_gpio_enable_irq()
119 struct cec_gpio *cec = cec_get_drvdata(adap); in cec_gpio_disable_irq() local
121 disable_irq(cec->cec_irq); in cec_gpio_disable_irq()
126 struct cec_gpio *cec = cec_get_drvdata(adap); in cec_gpio_status() local
128 seq_printf(file, "mode: %s\n", cec->cec_is_low ? "low-drive" : "read"); in cec_gpio_status()
129 seq_printf(file, "using irq: %d\n", cec->cec_irq); in cec_gpio_status()
130 if (cec->hpd_gpio) in cec_gpio_status()
132 cec->hpd_is_high ? "high" : "low"); in cec_gpio_status()
133 if (cec->v5_gpio) in cec_gpio_status()
135 cec->v5_is_high ? "high" : "low"); in cec_gpio_status()
140 struct cec_gpio *cec = cec_get_drvdata(adap); in cec_gpio_read_hpd() local
142 if (!cec->hpd_gpio) in cec_gpio_read_hpd()
144 return gpiod_get_value(cec->hpd_gpio); in cec_gpio_read_hpd()
149 struct cec_gpio *cec = cec_get_drvdata(adap); in cec_gpio_read_5v() local
151 if (!cec->v5_gpio) in cec_gpio_read_5v()
153 return gpiod_get_value(cec->v5_gpio); in cec_gpio_read_5v()
176 struct cec_gpio *cec; in cec_gpio_probe() local
179 cec = devm_kzalloc(dev, sizeof(*cec), GFP_KERNEL); in cec_gpio_probe()
180 if (!cec) in cec_gpio_probe()
183 cec->dev = dev; in cec_gpio_probe()
185 cec->cec_gpio = devm_gpiod_get(dev, "cec", GPIOD_OUT_HIGH_OPEN_DRAIN); in cec_gpio_probe()
186 if (IS_ERR(cec->cec_gpio)) in cec_gpio_probe()
187 return PTR_ERR(cec->cec_gpio); in cec_gpio_probe()
188 cec->cec_irq = gpiod_to_irq(cec->cec_gpio); in cec_gpio_probe()
190 cec->hpd_gpio = devm_gpiod_get_optional(dev, "hpd", GPIOD_IN); in cec_gpio_probe()
191 if (IS_ERR(cec->hpd_gpio)) in cec_gpio_probe()
192 return PTR_ERR(cec->hpd_gpio); in cec_gpio_probe()
194 cec->v5_gpio = devm_gpiod_get_optional(dev, "v5", GPIOD_IN); in cec_gpio_probe()
195 if (IS_ERR(cec->v5_gpio)) in cec_gpio_probe()
196 return PTR_ERR(cec->v5_gpio); in cec_gpio_probe()
198 cec->adap = cec_pin_allocate_adapter(&cec_gpio_pin_ops, in cec_gpio_probe()
199 cec, pdev->name, CEC_CAP_DEFAULTS | CEC_CAP_PHYS_ADDR | in cec_gpio_probe()
201 if (IS_ERR(cec->adap)) in cec_gpio_probe()
202 return PTR_ERR(cec->adap); in cec_gpio_probe()
204 ret = devm_request_irq(dev, cec->cec_irq, cec_gpio_irq_handler, in cec_gpio_probe()
206 cec->adap->name, cec); in cec_gpio_probe()
210 cec_gpio_disable_irq(cec->adap); in cec_gpio_probe()
212 if (cec->hpd_gpio) { in cec_gpio_probe()
213 cec->hpd_irq = gpiod_to_irq(cec->hpd_gpio); in cec_gpio_probe()
214 ret = devm_request_threaded_irq(dev, cec->hpd_irq, in cec_gpio_probe()
219 "hpd-gpio", cec); in cec_gpio_probe()
224 if (cec->v5_gpio) { in cec_gpio_probe()
225 cec->v5_irq = gpiod_to_irq(cec->v5_gpio); in cec_gpio_probe()
226 ret = devm_request_threaded_irq(dev, cec->v5_irq, in cec_gpio_probe()
231 "v5-gpio", cec); in cec_gpio_probe()
236 ret = cec_register_adapter(cec->adap, &pdev->dev); in cec_gpio_probe()
238 cec_delete_adapter(cec->adap); in cec_gpio_probe()
242 platform_set_drvdata(pdev, cec); in cec_gpio_probe()
248 struct cec_gpio *cec = platform_get_drvdata(pdev); in cec_gpio_remove() local
250 cec_unregister_adapter(cec->adap); in cec_gpio_remove()