mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-27 14:43:58 +08:00
74ba9207e1
Based on 1 normalized pattern(s): this program is free software you can redistribute it and or modify it under the terms of the gnu general public license as published by the free software foundation either version 2 of the license or at your option any later version this program is distributed in the hope that it will be useful but without any warranty without even the implied warranty of merchantability or fitness for a particular purpose see the gnu general public license for more details you should have received a copy of the gnu general public license along with this program if not write to the free software foundation inc 675 mass ave cambridge ma 02139 usa extracted by the scancode license scanner the SPDX license identifier GPL-2.0-or-later has been chosen to replace the boilerplate/reference in 441 file(s). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc) Reviewed-by: Richard Fontana <rfontana@redhat.com> Reviewed-by: Allison Randal <allison@lohutok.net> Reviewed-by: Kate Stewart <kstewart@linuxfoundation.org> Cc: linux-spdx@vger.kernel.org Link: https://lkml.kernel.org/r/20190520071858.739733335@linutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
215 lines
5.6 KiB
C
215 lines
5.6 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
cx231xx-pcb-cfg.h - driver for Conexant
|
|
Cx23100/101/102 USB video capture devices
|
|
|
|
Copyright (C) 2008 <srinivasa.deevi at conexant dot com>
|
|
|
|
*/
|
|
|
|
#ifndef _PCB_CONFIG_H_
|
|
#define _PCB_CONFIG_H_
|
|
|
|
#include <linux/init.h>
|
|
#include <linux/module.h>
|
|
|
|
/***************************************************************************
|
|
* Class Information *
|
|
***************************************************************************/
|
|
#define CLASS_DEFAULT 0xFF
|
|
|
|
enum VENDOR_REQUEST_TYPE {
|
|
/* Set/Get I2C */
|
|
VRT_SET_I2C0 = 0x0,
|
|
VRT_SET_I2C1 = 0x1,
|
|
VRT_SET_I2C2 = 0x2,
|
|
VRT_GET_I2C0 = 0x4,
|
|
VRT_GET_I2C1 = 0x5,
|
|
VRT_GET_I2C2 = 0x6,
|
|
|
|
/* Set/Get GPIO */
|
|
VRT_SET_GPIO = 0x8,
|
|
VRT_GET_GPIO = 0x9,
|
|
|
|
/* Set/Get GPIE */
|
|
VRT_SET_GPIE = 0xA,
|
|
VRT_GET_GPIE = 0xB,
|
|
|
|
/* Set/Get Register Control/Status */
|
|
VRT_SET_REGISTER = 0xC,
|
|
VRT_GET_REGISTER = 0xD,
|
|
|
|
/* Get Extended Compat ID Descriptor */
|
|
VRT_GET_EXTCID_DESC = 0xFF,
|
|
};
|
|
|
|
enum BYTE_ENABLE_MASK {
|
|
ENABLE_ONE_BYTE = 0x1,
|
|
ENABLE_TWE_BYTE = 0x3,
|
|
ENABLE_THREE_BYTE = 0x7,
|
|
ENABLE_FOUR_BYTE = 0xF,
|
|
};
|
|
|
|
#define SPEED_MASK 0x1
|
|
enum USB_SPEED{
|
|
FULL_SPEED = 0x0, /* 0: full speed */
|
|
HIGH_SPEED = 0x1 /* 1: high speed */
|
|
};
|
|
|
|
#define TS_MASK 0x6
|
|
enum TS_PORT{
|
|
NO_TS_PORT = 0x0, /* 2'b00: Neither port used. PCB not a Hybrid,
|
|
only offers Analog TV or Video */
|
|
TS1_PORT = 0x4, /* 2'b10: TS1 Input (Hybrid mode :
|
|
Digital or External Analog/Compressed source) */
|
|
TS1_TS2_PORT = 0x6, /* 2'b11: TS1 & TS2 Inputs
|
|
(Dual inputs from Digital and/or
|
|
External Analog/Compressed sources) */
|
|
TS1_EXT_CLOCK = 0x6, /* 2'b11: TS1 & TS2 as selector
|
|
to external clock */
|
|
TS1VIP_TS2_PORT = 0x2 /* 2'b01: TS1 used as 656/VIP Output,
|
|
TS2 Input (from Compressor) */
|
|
};
|
|
|
|
#define EAVP_MASK 0x8
|
|
enum EAV_PRESENT{
|
|
NO_EXTERNAL_AV = 0x0, /* 0: No External A/V inputs
|
|
(no need for i2s block),
|
|
Analog Tuner must be present */
|
|
EXTERNAL_AV = 0x8 /* 1: External A/V inputs
|
|
present (requires i2s blk) */
|
|
};
|
|
|
|
#define ATM_MASK 0x30
|
|
enum AT_MODE{
|
|
DIF_TUNER = 0x30, /* 2'b11: IF Tuner (requires use of DIF) */
|
|
BASEBAND_SOUND = 0x20, /* 2'b10: Baseband Composite &
|
|
Sound-IF Signals present */
|
|
NO_TUNER = 0x10 /* 2'b0x: No Analog Tuner present */
|
|
};
|
|
|
|
#define PWR_SEL_MASK 0x40
|
|
enum POWE_TYPE{
|
|
SELF_POWER = 0x0, /* 0: self power */
|
|
BUS_POWER = 0x40 /* 1: bus power */
|
|
};
|
|
|
|
enum USB_POWE_TYPE{
|
|
USB_SELF_POWER = 0,
|
|
USB_BUS_POWER
|
|
};
|
|
|
|
#define BO_0_MASK 0x80
|
|
enum AVDEC_STATUS{
|
|
AVDEC_DISABLE = 0x0, /* 0: A/V Decoder Disabled */
|
|
AVDEC_ENABLE = 0x80 /* 1: A/V Decoder Enabled */
|
|
};
|
|
|
|
#define BO_1_MASK 0x100
|
|
|
|
#define BUSPOWER_MASK 0xC4 /* for Polaris spec 0.8 */
|
|
#define SELFPOWER_MASK 0x86
|
|
|
|
/***************************************************************************/
|
|
#define NOT_DECIDE_YET 0xFE
|
|
#define NOT_SUPPORTED 0xFF
|
|
|
|
/***************************************************************************
|
|
* for mod field use *
|
|
***************************************************************************/
|
|
#define MOD_DIGITAL 0x1
|
|
#define MOD_ANALOG 0x2
|
|
#define MOD_DIF 0x4
|
|
#define MOD_EXTERNAL 0x8
|
|
#define CAP_ALL_MOD 0x0f
|
|
|
|
/***************************************************************************
|
|
* source define *
|
|
***************************************************************************/
|
|
#define SOURCE_DIGITAL 0x1
|
|
#define SOURCE_ANALOG 0x2
|
|
#define SOURCE_DIF 0x4
|
|
#define SOURCE_EXTERNAL 0x8
|
|
#define SOURCE_TS_BDA 0x10
|
|
#define SOURCE_TS_ENCODE 0x20
|
|
#define SOURCE_TS_EXTERNAL 0x40
|
|
|
|
/***************************************************************************
|
|
* interface information define *
|
|
***************************************************************************/
|
|
struct INTERFACE_INFO {
|
|
u8 interrupt_index;
|
|
u8 ts1_index;
|
|
u8 ts2_index;
|
|
u8 audio_index;
|
|
u8 video_index;
|
|
u8 vanc_index; /* VBI */
|
|
u8 hanc_index; /* Sliced CC */
|
|
u8 ir_index;
|
|
};
|
|
|
|
enum INDEX_INTERFACE_INFO{
|
|
INDEX_INTERRUPT = 0x0,
|
|
INDEX_TS1,
|
|
INDEX_TS2,
|
|
INDEX_AUDIO,
|
|
INDEX_VIDEO,
|
|
INDEX_VANC,
|
|
INDEX_HANC,
|
|
INDEX_IR,
|
|
};
|
|
|
|
/***************************************************************************
|
|
* configuration information define *
|
|
***************************************************************************/
|
|
struct CONFIG_INFO {
|
|
u8 config_index;
|
|
struct INTERFACE_INFO interface_info;
|
|
};
|
|
|
|
struct pcb_config {
|
|
u8 index;
|
|
u8 type; /* bus power or self power,
|
|
self power--0, bus_power--1 */
|
|
u8 speed; /* usb speed, 2.0--1, 1.1--0 */
|
|
u8 mode; /* digital , anlog, dif or external A/V */
|
|
u32 ts1_source; /* three source -- BDA,External,encode */
|
|
u32 ts2_source;
|
|
u32 analog_source;
|
|
u8 digital_index; /* bus-power used */
|
|
u8 analog_index; /* bus-power used */
|
|
u8 dif_index; /* bus-power used */
|
|
u8 external_index; /* bus-power used */
|
|
u8 config_num; /* current config num, 0,1,2,
|
|
for self-power, always 0 */
|
|
struct CONFIG_INFO hs_config_info[3];
|
|
struct CONFIG_INFO fs_config_info[3];
|
|
};
|
|
|
|
enum INDEX_PCB_CONFIG{
|
|
INDEX_SELFPOWER_DIGITAL_ONLY = 0x0,
|
|
INDEX_SELFPOWER_DUAL_DIGITAL,
|
|
INDEX_SELFPOWER_ANALOG_ONLY,
|
|
INDEX_SELFPOWER_DUAL,
|
|
INDEX_SELFPOWER_TRIPLE,
|
|
INDEX_SELFPOWER_COMPRESSOR,
|
|
INDEX_BUSPOWER_DIGITAL_ONLY,
|
|
INDEX_BUSPOWER_ANALOG_ONLY,
|
|
INDEX_BUSPOWER_DIF_ONLY,
|
|
INDEX_BUSPOWER_EXTERNAL_ONLY,
|
|
INDEX_BUSPOWER_EXTERNAL_ANALOG,
|
|
INDEX_BUSPOWER_EXTERNAL_DIF,
|
|
INDEX_BUSPOWER_EXTERNAL_DIGITAL,
|
|
INDEX_BUSPOWER_DIGITAL_ANALOG,
|
|
INDEX_BUSPOWER_DIGITAL_DIF,
|
|
INDEX_BUSPOWER_DIGITAL_ANALOG_EXTERNAL,
|
|
INDEX_BUSPOWER_DIGITAL_DIF_EXTERNAL,
|
|
};
|
|
|
|
/***************************************************************************/
|
|
struct cx231xx;
|
|
|
|
int initialize_cx231xx(struct cx231xx *p_dev);
|
|
|
|
#endif
|