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