52 lines
1.4 KiB
C
52 lines
1.4 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
|
|
/*
|
|
* Copyright 2021-2024 Cisco Systems, Inc. and/or its affiliates. All rights reserved.
|
|
*/
|
|
|
|
#ifndef _CEC_SPLITTER_H_
|
|
#define _CEC_SPLITTER_H_
|
|
|
|
struct cec_splitter;
|
|
|
|
#define STATE_CHANGE_MAX_REPEATS 2
|
|
|
|
struct cec_splitter_port {
|
|
struct cec_splitter *splitter;
|
|
struct cec_adapter *adap;
|
|
unsigned int port;
|
|
bool is_active_source;
|
|
bool found_sink;
|
|
ktime_t lost_sink_ts;
|
|
u32 out_request_current_latency_seq;
|
|
ktime_t out_request_current_latency_ts;
|
|
u8 video_latency;
|
|
u32 out_give_device_power_status_seq;
|
|
ktime_t out_give_device_power_status_ts;
|
|
u8 power_status;
|
|
};
|
|
|
|
struct cec_splitter {
|
|
struct device *dev;
|
|
unsigned int num_out_ports;
|
|
struct cec_splitter_port **ports;
|
|
|
|
/* High-level splitter state */
|
|
u8 request_current_latency_dest;
|
|
u8 give_device_power_status_dest;
|
|
bool is_standby;
|
|
};
|
|
|
|
void cec_splitter_unconfigured_output(struct cec_splitter_port *port);
|
|
void cec_splitter_configured_output(struct cec_splitter_port *port);
|
|
int cec_splitter_received_input(struct cec_splitter_port *port, struct cec_msg *msg);
|
|
int cec_splitter_received_output(struct cec_splitter_port *port, struct cec_msg *msg,
|
|
struct cec_adapter *input_adap);
|
|
void cec_splitter_nb_transmit_canceled_output(struct cec_splitter_port *port,
|
|
const struct cec_msg *msg,
|
|
struct cec_adapter *input_adap);
|
|
bool cec_splitter_poll(struct cec_splitter *splitter,
|
|
struct cec_adapter *input_adap, bool debug);
|
|
|
|
#endif
|