#include <linux/delay.h>
#include <linux/slab.h>
#include <linux/sched/types.h>
#include <media/cec-pin.h>
#include "cec-pin-priv.h"
#define CEC_TIM_START_BIT_LOW …
#define CEC_TIM_START_BIT_LOW_MIN …
#define CEC_TIM_START_BIT_LOW_MAX …
#define CEC_TIM_START_BIT_TOTAL …
#define CEC_TIM_START_BIT_TOTAL_MIN …
#define CEC_TIM_START_BIT_TOTAL_MAX …
#define CEC_TIM_DATA_BIT_0_LOW …
#define CEC_TIM_DATA_BIT_0_LOW_MIN …
#define CEC_TIM_DATA_BIT_0_LOW_MAX …
#define CEC_TIM_DATA_BIT_1_LOW …
#define CEC_TIM_DATA_BIT_1_LOW_MIN …
#define CEC_TIM_DATA_BIT_1_LOW_MAX …
#define CEC_TIM_DATA_BIT_TOTAL …
#define CEC_TIM_DATA_BIT_TOTAL_MIN …
#define CEC_TIM_DATA_BIT_TOTAL_MAX …
#define CEC_TIM_DATA_BIT_SAMPLE …
#define CEC_TIM_DATA_BIT_HIGH …
#define CEC_TIM_IDLE_SAMPLE …
#define CEC_TIM_START_BIT_SAMPLE …
#define CEC_TIM_SAMPLE …
#define CEC_TIM_LOW_DRIVE_ERROR …
#define CEC_TIM_DATA_BIT_TOTAL_SHORT …
#define CEC_TIM_DATA_BIT_TOTAL_LONG …
#define CEC_TIM_START_BIT_TOTAL_SHORT …
#define CEC_TIM_START_BIT_TOTAL_LONG …
#define EOM_BIT …
#define ACK_BIT …
struct cec_state { … };
static const struct cec_state states[CEC_PIN_STATES] = …;
static void cec_pin_update(struct cec_pin *pin, bool v, bool force)
{ … }
static bool cec_pin_read(struct cec_pin *pin)
{ … }
static void cec_pin_low(struct cec_pin *pin)
{ … }
static bool cec_pin_high(struct cec_pin *pin)
{ … }
static bool rx_error_inj(struct cec_pin *pin, unsigned int mode_offset,
int arg_idx, u8 *arg)
{ … }
static bool rx_nack(struct cec_pin *pin)
{ … }
static bool rx_low_drive(struct cec_pin *pin)
{ … }
static bool rx_add_byte(struct cec_pin *pin)
{ … }
static bool rx_remove_byte(struct cec_pin *pin)
{ … }
static bool rx_arb_lost(struct cec_pin *pin, u8 *poll)
{ … }
static bool tx_error_inj(struct cec_pin *pin, unsigned int mode_offset,
int arg_idx, u8 *arg)
{ … }
static bool tx_no_eom(struct cec_pin *pin)
{ … }
static bool tx_early_eom(struct cec_pin *pin)
{ … }
static bool tx_short_bit(struct cec_pin *pin)
{ … }
static bool tx_long_bit(struct cec_pin *pin)
{ … }
static bool tx_custom_bit(struct cec_pin *pin)
{ … }
static bool tx_short_start(struct cec_pin *pin)
{ … }
static bool tx_long_start(struct cec_pin *pin)
{ … }
static bool tx_custom_start(struct cec_pin *pin)
{ … }
static bool tx_last_bit(struct cec_pin *pin)
{ … }
static u8 tx_add_bytes(struct cec_pin *pin)
{ … }
static bool tx_remove_byte(struct cec_pin *pin)
{ … }
static bool tx_low_drive(struct cec_pin *pin)
{ … }
static void cec_pin_to_idle(struct cec_pin *pin)
{ … }
static void cec_pin_tx_states(struct cec_pin *pin, ktime_t ts)
{ … }
static void cec_pin_rx_states(struct cec_pin *pin, ktime_t ts)
{ … }
static enum hrtimer_restart cec_pin_timer(struct hrtimer *timer)
{ … }
static int cec_pin_thread_func(void *_adap)
{ … }
static int cec_pin_adap_enable(struct cec_adapter *adap, bool enable)
{ … }
static int cec_pin_adap_log_addr(struct cec_adapter *adap, u8 log_addr)
{ … }
void cec_pin_start_timer(struct cec_pin *pin)
{ … }
static int cec_pin_adap_transmit(struct cec_adapter *adap, u8 attempts,
u32 signal_free_time, struct cec_msg *msg)
{ … }
static void cec_pin_adap_status(struct cec_adapter *adap,
struct seq_file *file)
{ … }
static int cec_pin_adap_monitor_all_enable(struct cec_adapter *adap,
bool enable)
{ … }
static void cec_pin_adap_free(struct cec_adapter *adap)
{ … }
static int cec_pin_received(struct cec_adapter *adap, struct cec_msg *msg)
{ … }
void cec_pin_changed(struct cec_adapter *adap, bool value)
{ … }
EXPORT_SYMBOL_GPL(…);
static const struct cec_adap_ops cec_pin_adap_ops = …;
struct cec_adapter *cec_pin_allocate_adapter(const struct cec_pin_ops *pin_ops,
void *priv, const char *name, u32 caps)
{ … }
EXPORT_SYMBOL_GPL(…);