13d0407baSopenharmony_ci/* 23d0407baSopenharmony_ci * Copyright (C) Fuzhou Rockchip Electronics Co.Ltd 33d0407baSopenharmony_ci * Author Huicong Xu <xhc@rock-chips.com> 43d0407baSopenharmony_ci * 53d0407baSopenharmony_ci * This software is licensed under the terms of the GNU General Public 63d0407baSopenharmony_ci * License version 2, as published by the Free Software Foundation, and 73d0407baSopenharmony_ci * may be copied, distributed, and modified under those terms. 83d0407baSopenharmony_ci * 93d0407baSopenharmony_ci * This program is distributed in the hope that it will be useful, 103d0407baSopenharmony_ci * but WITHOUT ANY WARRANTY; without even the implied warranty of 113d0407baSopenharmony_ci * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 123d0407baSopenharmony_ci * GNU General Public License for more details. 133d0407baSopenharmony_ci */ 143d0407baSopenharmony_ci 153d0407baSopenharmony_ci#ifndef DW_HDMI_HDCP_H 163d0407baSopenharmony_ci#define DW_HDMI_HDCP_H 173d0407baSopenharmony_ci 183d0407baSopenharmony_ci#include <linux/miscdevice.h> 193d0407baSopenharmony_ci 203d0407baSopenharmony_ci#define DW_HDCP_DRIVER_NAME "dw-hdmi-hdcp" 213d0407baSopenharmony_ci#define HDCP_PRIVATE_KEY_SIZE 280 223d0407baSopenharmony_ci#define HDCP_KEY_SHA_SIZE 20 233d0407baSopenharmony_ci 243d0407baSopenharmony_cistruct hdcp_keys { 253d0407baSopenharmony_ci u8 KSV[8]; 263d0407baSopenharmony_ci u8 devicekey[HDCP_PRIVATE_KEY_SIZE]; 273d0407baSopenharmony_ci u8 sha1[HDCP_KEY_SHA_SIZE]; 283d0407baSopenharmony_ci}; 293d0407baSopenharmony_ci 303d0407baSopenharmony_cistruct dw_hdcp { 313d0407baSopenharmony_ci bool enable; 323d0407baSopenharmony_ci int retry_times; 333d0407baSopenharmony_ci int remaining_times; 343d0407baSopenharmony_ci char *seeds; 353d0407baSopenharmony_ci int invalidkey; 363d0407baSopenharmony_ci char *invalidkeys; 373d0407baSopenharmony_ci int hdcp2_enable; 383d0407baSopenharmony_ci int status; 393d0407baSopenharmony_ci u32 reg_io_width; 403d0407baSopenharmony_ci 413d0407baSopenharmony_ci struct miscdevice mdev; 423d0407baSopenharmony_ci struct hdcp_keys *keys; 433d0407baSopenharmony_ci struct device *dev; 443d0407baSopenharmony_ci struct dw_hdmi *hdmi; 453d0407baSopenharmony_ci void __iomem *regs; 463d0407baSopenharmony_ci 473d0407baSopenharmony_ci void (*write)(struct dw_hdmi *hdmi, u8 val, int offset); 483d0407baSopenharmony_ci u8 (*read)(struct dw_hdmi *hdmi, int offset); 493d0407baSopenharmony_ci int (*hdcp_start)(struct dw_hdcp *hdcp); 503d0407baSopenharmony_ci int (*hdcp_stop)(struct dw_hdcp *hdcp); 513d0407baSopenharmony_ci void (*hdcp_isr)(struct dw_hdcp *hdcp, int hdcp_int); 523d0407baSopenharmony_ci}; 533d0407baSopenharmony_ci 543d0407baSopenharmony_ci#endif 55