xref: /openbmc/linux/drivers/media/cec/core/cec-priv.h (revision fe4526d9)
1de73b88cSMauro Carvalho Chehab /* SPDX-License-Identifier: GPL-2.0-only */
2de73b88cSMauro Carvalho Chehab /*
3de73b88cSMauro Carvalho Chehab  * cec-priv.h - HDMI Consumer Electronics Control internal header
4de73b88cSMauro Carvalho Chehab  *
5de73b88cSMauro Carvalho Chehab  * Copyright 2016 Cisco Systems, Inc. and/or its affiliates. All rights reserved.
6de73b88cSMauro Carvalho Chehab  */
7de73b88cSMauro Carvalho Chehab 
8de73b88cSMauro Carvalho Chehab #ifndef _CEC_PRIV_H
9de73b88cSMauro Carvalho Chehab #define _CEC_PRIV_H
10de73b88cSMauro Carvalho Chehab 
11de73b88cSMauro Carvalho Chehab #include <linux/cec-funcs.h>
12de73b88cSMauro Carvalho Chehab #include <media/cec-notifier.h>
13de73b88cSMauro Carvalho Chehab 
14de73b88cSMauro Carvalho Chehab #define dprintk(lvl, fmt, arg...)					\
15de73b88cSMauro Carvalho Chehab 	do {								\
16de73b88cSMauro Carvalho Chehab 		if (lvl <= cec_debug)					\
17de73b88cSMauro Carvalho Chehab 			pr_info("cec-%s: " fmt, adap->name, ## arg);	\
18de73b88cSMauro Carvalho Chehab 	} while (0)
19de73b88cSMauro Carvalho Chehab 
20e2ed5024SHans Verkuil #define call_op(adap, op, arg...)					\
21e2ed5024SHans Verkuil 	((adap->ops->op && !adap->devnode.unregistered) ?		\
22e2ed5024SHans Verkuil 	 adap->ops->op(adap, ## arg) : 0)
23e2ed5024SHans Verkuil 
24e2ed5024SHans Verkuil #define call_void_op(adap, op, arg...)					\
25e2ed5024SHans Verkuil 	do {								\
26e2ed5024SHans Verkuil 		if (adap->ops->op && !adap->devnode.unregistered)	\
27e2ed5024SHans Verkuil 			adap->ops->op(adap, ## arg);			\
28e2ed5024SHans Verkuil 	} while (0)
29e2ed5024SHans Verkuil 
30de73b88cSMauro Carvalho Chehab /* devnode to cec_adapter */
31de73b88cSMauro Carvalho Chehab #define to_cec_adapter(node) container_of(node, struct cec_adapter, devnode)
32de73b88cSMauro Carvalho Chehab 
msg_is_raw(const struct cec_msg * msg)33de73b88cSMauro Carvalho Chehab static inline bool msg_is_raw(const struct cec_msg *msg)
34de73b88cSMauro Carvalho Chehab {
35de73b88cSMauro Carvalho Chehab 	return msg->flags & CEC_MSG_FL_RAW;
36de73b88cSMauro Carvalho Chehab }
37de73b88cSMauro Carvalho Chehab 
38de73b88cSMauro Carvalho Chehab /* cec-core.c */
39de73b88cSMauro Carvalho Chehab extern int cec_debug;
40de73b88cSMauro Carvalho Chehab int cec_get_device(struct cec_devnode *devnode);
41de73b88cSMauro Carvalho Chehab void cec_put_device(struct cec_devnode *devnode);
42de73b88cSMauro Carvalho Chehab 
43de73b88cSMauro Carvalho Chehab /* cec-adap.c */
44de73b88cSMauro Carvalho Chehab int cec_monitor_all_cnt_inc(struct cec_adapter *adap);
45de73b88cSMauro Carvalho Chehab void cec_monitor_all_cnt_dec(struct cec_adapter *adap);
46de73b88cSMauro Carvalho Chehab int cec_monitor_pin_cnt_inc(struct cec_adapter *adap);
47de73b88cSMauro Carvalho Chehab void cec_monitor_pin_cnt_dec(struct cec_adapter *adap);
48de73b88cSMauro Carvalho Chehab int cec_adap_status(struct seq_file *file, void *priv);
49de73b88cSMauro Carvalho Chehab int cec_thread_func(void *_adap);
50*fe4526d9SHans Verkuil int cec_adap_enable(struct cec_adapter *adap);
51de73b88cSMauro Carvalho Chehab void __cec_s_phys_addr(struct cec_adapter *adap, u16 phys_addr, bool block);
52de73b88cSMauro Carvalho Chehab int __cec_s_log_addrs(struct cec_adapter *adap,
53de73b88cSMauro Carvalho Chehab 		      struct cec_log_addrs *log_addrs, bool block);
54de73b88cSMauro Carvalho Chehab int cec_transmit_msg_fh(struct cec_adapter *adap, struct cec_msg *msg,
55de73b88cSMauro Carvalho Chehab 			struct cec_fh *fh, bool block);
56de73b88cSMauro Carvalho Chehab void cec_queue_event_fh(struct cec_fh *fh,
57de73b88cSMauro Carvalho Chehab 			const struct cec_event *new_ev, u64 ts);
58de73b88cSMauro Carvalho Chehab 
59de73b88cSMauro Carvalho Chehab /* cec-api.c */
60de73b88cSMauro Carvalho Chehab extern const struct file_operations cec_devnode_fops;
61de73b88cSMauro Carvalho Chehab 
62de73b88cSMauro Carvalho Chehab #endif
63