Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*
0003  *  Driver for the NXP SAA7164 PCIe bridge
0004  *
0005  *  Copyright (c) 2010-2015 Steven Toth <stoth@kernellabs.com>
0006  */
0007 
0008 /* TODO: Retest the driver with errors expressed as negatives */
0009 
0010 /* Result codes */
0011 #define SAA_OK              0
0012 #define SAA_ERR_BAD_PARAMETER       0x09
0013 #define SAA_ERR_NO_RESOURCES        0x0c
0014 #define SAA_ERR_NOT_SUPPORTED       0x13
0015 #define SAA_ERR_BUSY            0x15
0016 #define SAA_ERR_READ            0x17
0017 #define SAA_ERR_TIMEOUT         0x1f
0018 #define SAA_ERR_OVERFLOW        0x20
0019 #define SAA_ERR_EMPTY           0x22
0020 #define SAA_ERR_NOT_STARTED     0x23
0021 #define SAA_ERR_ALREADY_STARTED     0x24
0022 #define SAA_ERR_NOT_STOPPED     0x25
0023 #define SAA_ERR_ALREADY_STOPPED     0x26
0024 #define SAA_ERR_INVALID_COMMAND     0x3e
0025 #define SAA_ERR_NULL_PACKET     0x59
0026 
0027 /* Errors and flags from the silicon */
0028 #define PVC_ERRORCODE_UNKNOWN       0x00
0029 #define PVC_ERRORCODE_INVALID_COMMAND   0x01
0030 #define PVC_ERRORCODE_INVALID_CONTROL   0x02
0031 #define PVC_ERRORCODE_INVALID_DATA  0x03
0032 #define PVC_ERRORCODE_TIMEOUT       0x04
0033 #define PVC_ERRORCODE_NAK       0x05
0034 #define PVC_RESPONSEFLAG_ERROR      0x01
0035 #define PVC_RESPONSEFLAG_OVERFLOW   0x02
0036 #define PVC_RESPONSEFLAG_RESET      0x04
0037 #define PVC_RESPONSEFLAG_INTERFACE  0x08
0038 #define PVC_RESPONSEFLAG_CONTINUED  0x10
0039 #define PVC_CMDFLAG_INTERRUPT       0x02
0040 #define PVC_CMDFLAG_INTERFACE       0x04
0041 #define PVC_CMDFLAG_SERIALIZE       0x08
0042 #define PVC_CMDFLAG_CONTINUE        0x10
0043 
0044 /* Silicon Commands */
0045 #define GET_DESCRIPTORS_CONTROL     0x01
0046 #define GET_STRING_CONTROL      0x03
0047 #define GET_LANGUAGE_CONTROL        0x05
0048 #define SET_POWER_CONTROL       0x07
0049 #define GET_FW_STATUS_CONTROL       0x08
0050 #define GET_FW_VERSION_CONTROL      0x09
0051 #define SET_DEBUG_LEVEL_CONTROL     0x0B
0052 #define GET_DEBUG_DATA_CONTROL      0x0C
0053 #define GET_PRODUCTION_INFO_CONTROL 0x0D
0054 
0055 /* cmd defines */
0056 #define SAA_CMDFLAG_CONTINUE        0x10
0057 #define SAA_CMD_MAX_MSG_UNITS       256
0058 
0059 /* Some defines */
0060 #define SAA_BUS_TIMEOUT         50
0061 #define SAA_DEVICE_TIMEOUT      5000
0062 #define SAA_DEVICE_MAXREQUESTSIZE   256
0063 
0064 /* Register addresses */
0065 #define SAA_DEVICE_VERSION      0x30
0066 #define SAA_DOWNLOAD_FLAGS      0x34
0067 #define SAA_DOWNLOAD_FLAG       0x34
0068 #define SAA_DOWNLOAD_FLAG_ACK       0x38
0069 #define SAA_DATAREADY_FLAG      0x3C
0070 #define SAA_DATAREADY_FLAG_ACK      0x40
0071 
0072 /* Boot loader register and bit definitions */
0073 #define SAA_BOOTLOADERERROR_FLAGS   0x44
0074 #define SAA_DEVICE_IMAGE_SEARCHING  0x01
0075 #define SAA_DEVICE_IMAGE_LOADING    0x02
0076 #define SAA_DEVICE_IMAGE_BOOTING    0x03
0077 #define SAA_DEVICE_IMAGE_CORRUPT    0x04
0078 #define SAA_DEVICE_MEMORY_CORRUPT   0x08
0079 #define SAA_DEVICE_NO_IMAGE     0x10
0080 
0081 /* Register addresses */
0082 #define SAA_DEVICE_2ND_VERSION          0x50
0083 #define SAA_DEVICE_2ND_DOWNLOADFLAG_OFFSET  0x54
0084 
0085 /* Register addresses */
0086 #define SAA_SECONDSTAGEERROR_FLAGS      0x64
0087 
0088 /* Bootloader regs and flags */
0089 #define SAA_DEVICE_DEADLOCK_DETECTED_OFFSET 0x6C
0090 #define SAA_DEVICE_DEADLOCK_DETECTED        0xDEADDEAD
0091 
0092 /* Basic firmware status registers */
0093 #define SAA_DEVICE_SYSINIT_STATUS_OFFSET    0x70
0094 #define SAA_DEVICE_SYSINIT_STATUS       0x70
0095 #define SAA_DEVICE_SYSINIT_MODE         0x74
0096 #define SAA_DEVICE_SYSINIT_SPEC         0x78
0097 #define SAA_DEVICE_SYSINIT_INST         0x7C
0098 #define SAA_DEVICE_SYSINIT_CPULOAD      0x80
0099 #define SAA_DEVICE_SYSINIT_REMAINHEAP       0x84
0100 
0101 #define SAA_DEVICE_DOWNLOAD_OFFSET      0x1000
0102 #define SAA_DEVICE_BUFFERBLOCKSIZE      0x1000
0103 
0104 #define SAA_DEVICE_2ND_BUFFERBLOCKSIZE      0x100000
0105 #define SAA_DEVICE_2ND_DOWNLOAD_OFFSET      0x200000
0106 
0107 /* Descriptors */
0108 #define CS_INTERFACE    0x24
0109 
0110 /* Descriptor subtypes */
0111 #define VC_INPUT_TERMINAL       0x02
0112 #define VC_OUTPUT_TERMINAL      0x03
0113 #define VC_SELECTOR_UNIT        0x04
0114 #define VC_PROCESSING_UNIT      0x05
0115 #define FEATURE_UNIT            0x06
0116 #define TUNER_UNIT          0x09
0117 #define ENCODER_UNIT            0x0A
0118 #define EXTENSION_UNIT          0x0B
0119 #define VC_TUNER_PATH           0xF0
0120 #define PVC_HARDWARE_DESCRIPTOR     0xF1
0121 #define PVC_INTERFACE_DESCRIPTOR    0xF2
0122 #define PVC_INFRARED_UNIT       0xF3
0123 #define DRM_UNIT            0xF4
0124 #define GENERAL_REQUEST         0xF5
0125 
0126 /* Format Types */
0127 #define VS_FORMAT_TYPE         0x02
0128 #define VS_FORMAT_TYPE_I       0x01
0129 #define VS_FORMAT_UNCOMPRESSED 0x04
0130 #define VS_FRAME_UNCOMPRESSED  0x05
0131 #define VS_FORMAT_MPEG2PS      0x09
0132 #define VS_FORMAT_MPEG2TS      0x0A
0133 #define VS_FORMAT_MPEG4SL      0x0B
0134 #define VS_FORMAT_WM9          0x0C
0135 #define VS_FORMAT_DIVX         0x0D
0136 #define VS_FORMAT_VBI          0x0E
0137 #define VS_FORMAT_RDS          0x0F
0138 
0139 /* Device extension commands */
0140 #define EXU_REGISTER_ACCESS_CONTROL 0x00
0141 #define EXU_GPIO_CONTROL        0x01
0142 #define EXU_GPIO_GROUP_CONTROL      0x02
0143 #define EXU_INTERRUPT_CONTROL       0x03
0144 
0145 /* State Transition and args */
0146 #define SAA_PROBE_CONTROL   0x01
0147 #define SAA_COMMIT_CONTROL  0x02
0148 #define SAA_STATE_CONTROL   0x03
0149 #define SAA_DMASTATE_STOP   0x00
0150 #define SAA_DMASTATE_ACQUIRE    0x01
0151 #define SAA_DMASTATE_PAUSE  0x02
0152 #define SAA_DMASTATE_RUN    0x03
0153 
0154 /* A/V Mux Input Selector */
0155 #define SU_INPUT_SELECT_CONTROL 0x01
0156 
0157 /* Encoder Profiles */
0158 #define EU_PROFILE_PS_DVD   0x06
0159 #define EU_PROFILE_TS_HQ    0x09
0160 #define EU_VIDEO_FORMAT_MPEG_2  0x02
0161 
0162 /* Tuner */
0163 #define TU_AUDIO_MODE_CONTROL  0x17
0164 
0165 /* Video Formats */
0166 #define TU_STANDARD_CONTROL     0x00
0167 #define TU_STANDARD_AUTO_CONTROL    0x01
0168 #define TU_STANDARD_NONE        0x00
0169 #define TU_STANDARD_NTSC_M      0x01
0170 #define TU_STANDARD_PAL_I       0x08
0171 #define TU_STANDARD_MANUAL      0x00
0172 #define TU_STANDARD_AUTO        0x01
0173 
0174 /* Video Controls */
0175 #define PU_BRIGHTNESS_CONTROL   0x02
0176 #define PU_CONTRAST_CONTROL 0x03
0177 #define PU_HUE_CONTROL      0x06
0178 #define PU_SATURATION_CONTROL   0x07
0179 #define PU_SHARPNESS_CONTROL    0x08
0180 
0181 /* Audio Controls */
0182 #define MUTE_CONTROL        0x01
0183 #define VOLUME_CONTROL      0x02
0184 #define AUDIO_DEFAULT_CONTROL   0x0D
0185 
0186 /* Default Volume Levels */
0187 #define TMHW_LEV_ADJ_DECLEV_DEFAULT     0x00
0188 #define TMHW_LEV_ADJ_MONOLEV_DEFAULT    0x00
0189 #define TMHW_LEV_ADJ_NICLEV_DEFAULT     0x00
0190 #define TMHW_LEV_ADJ_SAPLEV_DEFAULT     0x00
0191 #define TMHW_LEV_ADJ_ADCLEV_DEFAULT     0x00
0192 
0193 /* Encoder Related Commands */
0194 #define EU_PROFILE_CONTROL      0x00
0195 #define EU_VIDEO_FORMAT_CONTROL     0x01
0196 #define EU_VIDEO_BIT_RATE_CONTROL   0x02
0197 #define EU_VIDEO_RESOLUTION_CONTROL 0x03
0198 #define EU_VIDEO_GOP_STRUCTURE_CONTROL  0x04
0199 #define EU_VIDEO_INPUT_ASPECT_CONTROL   0x0A
0200 #define EU_AUDIO_FORMAT_CONTROL     0x0C
0201 #define EU_AUDIO_BIT_RATE_CONTROL   0x0D
0202 
0203 /* Firmware Debugging */
0204 #define SET_DEBUG_LEVEL_CONTROL 0x0B
0205 #define GET_DEBUG_DATA_CONTROL  0x0C