1 /* SPDX-License-Identifier: GPL-2.0-only */
4 * Copyright 2021-2024 Cisco Systems, Inc. and/or its affiliates. All rights reserved.
7 #ifndef _CEC_SPLITTER_H_
8 #define _CEC_SPLITTER_H_
12 #define STATE_CHANGE_MAX_REPEATS 2
14 struct cec_splitter_port
{
15 struct cec_splitter
*splitter
;
16 struct cec_adapter
*adap
;
18 bool is_active_source
;
21 u32 out_request_current_latency_seq
;
22 ktime_t out_request_current_latency_ts
;
24 u32 out_give_device_power_status_seq
;
25 ktime_t out_give_device_power_status_ts
;
31 unsigned int num_out_ports
;
32 struct cec_splitter_port
**ports
;
34 /* High-level splitter state */
35 u8 request_current_latency_dest
;
36 u8 give_device_power_status_dest
;
40 void cec_splitter_unconfigured_output(struct cec_splitter_port
*port
);
41 void cec_splitter_configured_output(struct cec_splitter_port
*port
);
42 int cec_splitter_received_input(struct cec_splitter_port
*port
, struct cec_msg
*msg
);
43 int cec_splitter_received_output(struct cec_splitter_port
*port
, struct cec_msg
*msg
,
44 struct cec_adapter
*input_adap
);
45 void cec_splitter_nb_transmit_canceled_output(struct cec_splitter_port
*port
,
46 const struct cec_msg
*msg
,
47 struct cec_adapter
*input_adap
);
48 bool cec_splitter_poll(struct cec_splitter
*splitter
,
49 struct cec_adapter
*input_adap
, bool debug
);