brintos

brintos / linux-shallow public Read only

0
0
Text · 2.7 KiB · b79f125 Raw
119 lines · 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 25625 26#define PING_PERIOD	(15 * HZ)27 28#define NUM_MSGS CEC_MAX_MSG_RX_QUEUE_SZ29 30#define MAX_PORTS (1 + 6)31 32#define MAX_EDID_BLOCKS 233 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#endif119