brintos

brintos / linux-shallow public Read only

0
0
Text · 6.0 KiB · 3f9d12b Raw
206 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2/*3 *  Driver for the NXP SAA7164 PCIe bridge4 *5 *  Copyright (c) 2010-2015 Steven Toth <stoth@kernellabs.com>6 */7 8/* TODO: Retest the driver with errors expressed as negatives */9 10/* Result codes */11#define SAA_OK				012#define SAA_ERR_BAD_PARAMETER		0x0913#define SAA_ERR_NO_RESOURCES		0x0c14#define SAA_ERR_NOT_SUPPORTED		0x1315#define SAA_ERR_BUSY			0x1516#define SAA_ERR_READ			0x1717#define SAA_ERR_TIMEOUT			0x1f18#define SAA_ERR_OVERFLOW		0x2019#define SAA_ERR_EMPTY			0x2220#define SAA_ERR_NOT_STARTED		0x2321#define SAA_ERR_ALREADY_STARTED		0x2422#define SAA_ERR_NOT_STOPPED		0x2523#define SAA_ERR_ALREADY_STOPPED		0x2624#define SAA_ERR_INVALID_COMMAND		0x3e25#define SAA_ERR_NULL_PACKET		0x5926 27/* Errors and flags from the silicon */28#define PVC_ERRORCODE_UNKNOWN		0x0029#define PVC_ERRORCODE_INVALID_COMMAND	0x0130#define PVC_ERRORCODE_INVALID_CONTROL	0x0231#define PVC_ERRORCODE_INVALID_DATA	0x0332#define PVC_ERRORCODE_TIMEOUT		0x0433#define PVC_ERRORCODE_NAK		0x0534#define PVC_RESPONSEFLAG_ERROR		0x0135#define PVC_RESPONSEFLAG_OVERFLOW	0x0236#define PVC_RESPONSEFLAG_RESET		0x0437#define PVC_RESPONSEFLAG_INTERFACE	0x0838#define PVC_RESPONSEFLAG_CONTINUED	0x1039#define PVC_CMDFLAG_INTERRUPT		0x0240#define PVC_CMDFLAG_INTERFACE		0x0441#define PVC_CMDFLAG_SERIALIZE		0x0842#define PVC_CMDFLAG_CONTINUE		0x1043 44/* Silicon Commands */45#define GET_DESCRIPTORS_CONTROL		0x0146#define GET_STRING_CONTROL		0x0347#define GET_LANGUAGE_CONTROL		0x0548#define SET_POWER_CONTROL		0x0749#define GET_FW_STATUS_CONTROL		0x0850#define GET_FW_VERSION_CONTROL		0x0951#define SET_DEBUG_LEVEL_CONTROL		0x0B52#define GET_DEBUG_DATA_CONTROL		0x0C53#define GET_PRODUCTION_INFO_CONTROL	0x0D54 55/* cmd defines */56#define SAA_CMDFLAG_CONTINUE		0x1057#define SAA_CMD_MAX_MSG_UNITS		25658 59/* Some defines */60#define SAA_BUS_TIMEOUT			5061#define SAA_DEVICE_TIMEOUT		500062#define SAA_DEVICE_MAXREQUESTSIZE	25663 64/* Register addresses */65#define SAA_DEVICE_VERSION		0x3066#define SAA_DOWNLOAD_FLAGS		0x3467#define SAA_DOWNLOAD_FLAG		0x3468#define SAA_DOWNLOAD_FLAG_ACK		0x3869#define SAA_DATAREADY_FLAG		0x3C70#define SAA_DATAREADY_FLAG_ACK		0x4071 72/* Boot loader register and bit definitions */73#define SAA_BOOTLOADERERROR_FLAGS	0x4474#define SAA_DEVICE_IMAGE_SEARCHING	0x0175#define SAA_DEVICE_IMAGE_LOADING	0x0276#define SAA_DEVICE_IMAGE_BOOTING	0x0377#define SAA_DEVICE_IMAGE_CORRUPT	0x0478#define SAA_DEVICE_MEMORY_CORRUPT	0x0879#define SAA_DEVICE_NO_IMAGE		0x1080 81/* Register addresses */82#define SAA_DEVICE_2ND_VERSION			0x5083#define SAA_DEVICE_2ND_DOWNLOADFLAG_OFFSET	0x5484 85/* Register addresses */86#define SAA_SECONDSTAGEERROR_FLAGS		0x6487 88/* Bootloader regs and flags */89#define SAA_DEVICE_DEADLOCK_DETECTED_OFFSET	0x6C90#define SAA_DEVICE_DEADLOCK_DETECTED		0xDEADDEAD91 92/* Basic firmware status registers */93#define SAA_DEVICE_SYSINIT_STATUS_OFFSET	0x7094#define SAA_DEVICE_SYSINIT_STATUS		0x7095#define SAA_DEVICE_SYSINIT_MODE			0x7496#define SAA_DEVICE_SYSINIT_SPEC			0x7897#define SAA_DEVICE_SYSINIT_INST			0x7C98#define SAA_DEVICE_SYSINIT_CPULOAD		0x8099#define SAA_DEVICE_SYSINIT_REMAINHEAP		0x84100 101#define SAA_DEVICE_DOWNLOAD_OFFSET		0x1000102#define SAA_DEVICE_BUFFERBLOCKSIZE		0x1000103 104#define SAA_DEVICE_2ND_BUFFERBLOCKSIZE		0x100000105#define SAA_DEVICE_2ND_DOWNLOAD_OFFSET		0x200000106 107/* Descriptors */108#define CS_INTERFACE	0x24109 110/* Descriptor subtypes */111#define VC_INPUT_TERMINAL		0x02112#define VC_OUTPUT_TERMINAL		0x03113#define VC_SELECTOR_UNIT		0x04114#define VC_PROCESSING_UNIT		0x05115#define FEATURE_UNIT			0x06116#define TUNER_UNIT			0x09117#define ENCODER_UNIT			0x0A118#define EXTENSION_UNIT			0x0B119#define VC_TUNER_PATH			0xF0120#define PVC_HARDWARE_DESCRIPTOR		0xF1121#define PVC_INTERFACE_DESCRIPTOR	0xF2122#define PVC_INFRARED_UNIT		0xF3123#define DRM_UNIT			0xF4124#define GENERAL_REQUEST			0xF5125 126/* Format Types */127#define VS_FORMAT_TYPE         0x02128#define VS_FORMAT_TYPE_I       0x01129#define VS_FORMAT_UNCOMPRESSED 0x04130#define VS_FRAME_UNCOMPRESSED  0x05131#define VS_FORMAT_MPEG2PS      0x09132#define VS_FORMAT_MPEG2TS      0x0A133#define VS_FORMAT_MPEG4SL      0x0B134#define VS_FORMAT_WM9          0x0C135#define VS_FORMAT_DIVX         0x0D136#define VS_FORMAT_VBI          0x0E137#define VS_FORMAT_RDS          0x0F138 139/* Device extension commands */140#define EXU_REGISTER_ACCESS_CONTROL	0x00141#define EXU_GPIO_CONTROL		0x01142#define EXU_GPIO_GROUP_CONTROL		0x02143#define EXU_INTERRUPT_CONTROL		0x03144 145/* State Transition and args */146#define SAA_PROBE_CONTROL	0x01147#define SAA_COMMIT_CONTROL	0x02148#define SAA_STATE_CONTROL	0x03149#define SAA_DMASTATE_STOP	0x00150#define SAA_DMASTATE_ACQUIRE	0x01151#define SAA_DMASTATE_PAUSE	0x02152#define SAA_DMASTATE_RUN	0x03153 154/* A/V Mux Input Selector */155#define SU_INPUT_SELECT_CONTROL 0x01156 157/* Encoder Profiles */158#define EU_PROFILE_PS_DVD	0x06159#define EU_PROFILE_TS_HQ	0x09160#define EU_VIDEO_FORMAT_MPEG_2	0x02161 162/* Tuner */163#define TU_AUDIO_MODE_CONTROL  0x17164 165/* Video Formats */166#define TU_STANDARD_CONTROL		0x00167#define TU_STANDARD_AUTO_CONTROL	0x01168#define TU_STANDARD_NONE		0x00169#define TU_STANDARD_NTSC_M		0x01170#define TU_STANDARD_PAL_I		0x08171#define TU_STANDARD_MANUAL		0x00172#define TU_STANDARD_AUTO		0x01173 174/* Video Controls */175#define PU_BRIGHTNESS_CONTROL	0x02176#define PU_CONTRAST_CONTROL	0x03177#define PU_HUE_CONTROL		0x06178#define PU_SATURATION_CONTROL	0x07179#define PU_SHARPNESS_CONTROL	0x08180 181/* Audio Controls */182#define MUTE_CONTROL		0x01183#define VOLUME_CONTROL		0x02184#define AUDIO_DEFAULT_CONTROL	0x0D185 186/* Default Volume Levels */187#define TMHW_LEV_ADJ_DECLEV_DEFAULT     0x00188#define TMHW_LEV_ADJ_MONOLEV_DEFAULT    0x00189#define TMHW_LEV_ADJ_NICLEV_DEFAULT     0x00190#define TMHW_LEV_ADJ_SAPLEV_DEFAULT     0x00191#define TMHW_LEV_ADJ_ADCLEV_DEFAULT     0x00192 193/* Encoder Related Commands */194#define EU_PROFILE_CONTROL		0x00195#define EU_VIDEO_FORMAT_CONTROL		0x01196#define EU_VIDEO_BIT_RATE_CONTROL	0x02197#define EU_VIDEO_RESOLUTION_CONTROL	0x03198#define EU_VIDEO_GOP_STRUCTURE_CONTROL	0x04199#define EU_VIDEO_INPUT_ASPECT_CONTROL	0x0A200#define EU_AUDIO_FORMAT_CONTROL		0x0C201#define EU_AUDIO_BIT_RATE_CONTROL	0x0D202 203/* Firmware Debugging */204#define SET_DEBUG_LEVEL_CONTROL	0x0B205#define GET_DEBUG_DATA_CONTROL	0x0C206