File Index
Files and directories
Sign in
FILE

extron-da-hd-4k-plus.h

File preview with syntax highlighting.

linux-6.19.14/drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.h C
  1/* SPDX-License-Identifier: GPL-2.0-only */
  2
  3/*
  4 * Copyright 2021-2024 Cisco Systems, Inc. and/or its affiliates. All rights reserved.
  5 */
  6
  7#ifndef _EXTRON_DA_HD_4K_PLUS_H_
  8#define _EXTRON_DA_HD_4K_PLUS_H_
  9
 10#include <linux/kthread.h>
 11#include <linux/serio.h>
 12#include <linux/workqueue.h>
 13#include <media/cec.h>
 14#include <media/v4l2-ctrls.h>
 15#include <media/v4l2-dev.h>
 16#include <media/v4l2-device.h>
 17#include <media/v4l2-dv-timings.h>
 18#include <media/v4l2-event.h>
 19#include <media/v4l2-fh.h>
 20#include <media/v4l2-ioctl.h>
 21
 22#include "cec-splitter.h"
 23
 24#define DATA_SIZE 256
 25
 26#define PING_PERIOD	(15 * HZ)
 27
 28#define NUM_MSGS CEC_MAX_MSG_RX_QUEUE_SZ
 29
 30#define MAX_PORTS (1 + 6)
 31
 32#define MAX_EDID_BLOCKS 2
 33
 34struct extron;
 35
 36struct extron_port {
 37	struct cec_splitter_port port;
 38	struct device *dev;
 39	struct cec_adapter *adap;
 40	struct video_device vdev;
 41	struct v4l2_ctrl_handler hdl;
 42	struct v4l2_ctrl *ctrl_rx_power_present;
 43	struct v4l2_ctrl *ctrl_tx_hotplug;
 44	struct v4l2_ctrl *ctrl_tx_edid_present;
 45	bool is_input;
 46	char direction;
 47	char name[26];
 48	unsigned char edid[MAX_EDID_BLOCKS * 128];
 49	unsigned char edid_tmp[MAX_EDID_BLOCKS * 128];
 50	unsigned int edid_blocks;
 51	bool read_edid;
 52	struct extron *extron;
 53	struct work_struct irq_work;
 54	struct completion cmd_done;
 55	const char *response;
 56	unsigned int cmd_error;
 57	struct cec_msg rx_msg[NUM_MSGS];
 58	unsigned int rx_msg_cur_idx, rx_msg_num;
 59	/* protect rx_msg_cur_idx and rx_msg_num */
 60	spinlock_t msg_lock;
 61	u32 tx_done_status;
 62	bool update_phys_addr;
 63	u16 phys_addr;
 64	bool cec_was_registered;
 65	bool disconnected;
 66	bool update_has_signal;
 67	bool has_signal;
 68	bool update_has_edid;
 69	bool has_edid;
 70	bool has_4kp30;
 71	bool has_4kp60;
 72	bool has_qy;
 73	bool has_qs;
 74	u8 est_i, est_ii;
 75
 76	/* locks access to the video_device */
 77	struct mutex video_lock;
 78};
 79
 80struct extron {
 81	struct cec_splitter splitter;
 82	struct device *dev;
 83	struct serio *serio;
 84	/* locks access to serio */
 85	struct mutex serio_lock;
 86	unsigned int num_ports;
 87	unsigned int num_in_ports;
 88	unsigned int num_out_ports;
 89	char unit_name[32];
 90	char unit_type[64];
 91	char unit_fw_version[32];
 92	char unit_cec_engine_version[32];
 93	struct extron_port *ports[MAX_PORTS];
 94	struct cec_splitter_port *splitter_ports[MAX_PORTS];
 95	struct v4l2_device v4l2_dev;
 96	bool hpd_never_low;
 97	struct task_struct *kthread_setup;
 98	struct delayed_work work_update_edid;
 99
100	/* serializes EDID reading */
101	struct mutex edid_lock;
102	unsigned int edid_bytes_read;
103	struct extron_port *edid_port;
104	struct completion edid_completion;
105	bool edid_reading;
106	bool is_ready;
107
108	struct completion cmd_done;
109	const char *response;
110	unsigned int cmd_error;
111	char data[DATA_SIZE];
112	unsigned int len;
113	char reply[DATA_SIZE];
114	char buf[DATA_SIZE];
115	unsigned int idx;
116};
117
118#endif
~/ Read-only file preview.