关于DVI视频输出口,微软搞了个SDVO用来保护:

#define SDVO_OUTPUT_FIRST   (0)

#define SDVO_OUTPUT_TMDS0   (1 << 0)

#define SDVO_OUTPUT_RGB0    (1 << 1)

#define SDVO_OUTPUT_CVBS0   (1 << 2)

#define SDVO_OUTPUT_SVID0   (1 << 3)

#define SDVO_OUTPUT_YPRPB0  (1 << 4)

#define SDVO_OUTPUT_SCART0  (1 << 5)

#define SDVO_OUTPUT_LVDS0   (1 << 6)

#define SDVO_OUTPUT_TMDS1   (1 << 8)

#define SDVO_OUTPUT_RGB1    (1 << 9)

#define SDVO_OUTPUT_CVBS1   (1 << 10)

#define SDVO_OUTPUT_SVID1   (1 << 11)

#define SDVO_OUTPUT_YPRPB1  (1 << 12)

#define SDVO_OUTPUT_SCART1  (1 << 13)

#define SDVO_OUTPUT_LVDS1   (1 << 14)

#define SDVO_OUTPUT_LAST    (14)

struct i830_sdvo_caps {

    uint8_t vendor_id;

    uint8_t device_id;

    uint8_t device_rev_id;

    uint8_t sdvo_version_major;

    uint8_t sdvo_version_minor;

    unsigned int sdvo_input_count:2;

    unsigned int smooth_scaling:1;

    unsigned int sharp_scaling:1;

    unsigned int up_scaling:1;

    unsigned int down_scaling:1;

    unsigned int stall_support:1;

    unsigned int pad:1;

    uint16_t output_flags;

} __attribute__((packed));

/** This matches the EDID DTD structure, more or less */

struct i830_sdvo_dtd {

    struct {

 uint16_t clock;  /**< pixel clock, in 10kHz units */

 uint8_t h_active; /**< lower 8 bits (pixels) */

 uint8_t h_blank; /**< lower 8 bits (pixels) */

 uint8_t h_high;  /**< upper 4 bits each h_active, h_blank */

 uint8_t v_active; /**< lower 8 bits (lines) */

 uint8_t v_blank; /**< lower 8 bits (lines) */

 uint8_t v_high;  /**< upper 4 bits each v_active, v_blank */

    } part1;

struct {

 uint8_t h_sync_off; /**< lower 8 bits, from hblank start */

 uint8_t h_sync_width; /**< lower 8 bits (pixels) */

 /** lower 4 bits each vsync offset, vsync width */

 uint8_t v_sync_off_width;

 /**

  * 2 high bits of hsync offset, 2 high bits of hsync width,

  * bits 4-5 of vsync offset, and 2 high bits of vsync width.

  */

 uint8_t sync_off_width_high;

 uint8_t dtd_flags;

 uint8_t sdvo_flags;

 /** bits 6-7 of vsync offset at bits 6-7 */

 uint8_t v_sync_off_high;

 uint8_t reserved;

    } part2;

} __attribute__((packed));

struct i830_sdvo_pixel_clock_range {

    uint16_t min;   /**< pixel clock, in 10kHz units */

    uint16_t max;   /**< pixel clock, in 10kHz units */

} __attribute__((packed));

struct i830_sdvo_preferred_input_timing_args {

    uint16_t clock;

    uint16_t width;

    uint16_t height;

} __attribute__((packed));

/* I2C registers for SDVO */

#define SDVO_I2C_ARG_0    0x07

#define SDVO_I2C_ARG_1    0x06

#define SDVO_I2C_ARG_2    0x05

#define SDVO_I2C_ARG_3    0x04

#define SDVO_I2C_ARG_4    0x03

#define SDVO_I2C_ARG_5    0x02

#define SDVO_I2C_ARG_6    0x01

#define SDVO_I2C_ARG_7    0x00

#define SDVO_I2C_OPCODE    0x08

#define SDVO_I2C_CMD_STATUS   0x09

#define SDVO_I2C_RETURN_0   0x0a

#define SDVO_I2C_RETURN_1   0x0b

#define SDVO_I2C_RETURN_2   0x0c

#define SDVO_I2C_RETURN_3   0x0d

#define SDVO_I2C_RETURN_4   0x0e

#define SDVO_I2C_RETURN_5   0x0f

#define SDVO_I2C_RETURN_6   0x10

#define SDVO_I2C_RETURN_7   0x11

#define SDVO_I2C_VENDOR_BEGIN  0x20

/* Status results */

#define SDVO_CMD_STATUS_POWER_ON  0x0

#define SDVO_CMD_STATUS_SUCCESS   0x1

#define SDVO_CMD_STATUS_NOTSUPP   0x2

#define SDVO_CMD_STATUS_INVALID_ARG  0x3

#define SDVO_CMD_STATUS_PENDING   0x4

#define SDVO_CMD_STATUS_TARGET_NOT_SPECIFIED 0x5

#define SDVO_CMD_STATUS_SCALING_NOT_SUPP 0x6

/* SDVO commands, argument/result registers */

#define SDVO_CMD_RESET     0x01

/** Returns a struct i830_sdvo_caps */

#define SDVO_CMD_GET_DEVICE_CAPS   0x02

#define SDVO_CMD_GET_FIRMWARE_REV   0x86

# define SDVO_DEVICE_FIRMWARE_MINOR   SDVO_I2C_RETURN_0

# define SDVO_DEVICE_FIRMWARE_MAJOR   SDVO_I2C_RETURN_1

# define SDVO_DEVICE_FIRMWARE_PATCH   SDVO_I2C_RETURN_2

/**

 * Reports which inputs are trained (managed to sync).

 *

 * Devices must have trained within 2 vsyncs of a mode change.

 */

#define SDVO_CMD_GET_TRAINED_INPUTS   0x03

struct i830_sdvo_get_trained_inputs_response {

    unsigned int input0_trained:1;

    unsigned int input1_trained:1;

    unsigned int pad:6;

} __attribute__((packed));

/** Returns a struct i830_sdvo_output_flags of active outputs. */

#define SDVO_CMD_GET_ACTIVE_OUTPUTS   0x04

/**

 * Sets the current set of active outputs.

 *

 * Takes a struct i830_sdvo_output_flags.  Must be preceded by a SET_IN_OUT_MAP

 * on multi-output devices.

 */

#define SDVO_CMD_SET_ACTIVE_OUTPUTS   0x05

/**

 * Returns the current mapping of SDVO inputs to outputs on the device.

 *

 * Returns two struct i830_sdvo_output_flags structures.

 */

#define SDVO_CMD_GET_IN_OUT_MAP    0x06

struct i830_sdvo_in_out_map {

    uint16_t in0, in1;

};

/**

 * Sets the current mapping of SDVO inputs to outputs on the device.

 *

 * Takes two struct i380_sdvo_output_flags structures.

 */

#define SDVO_CMD_SET_IN_OUT_MAP    0x07

/**

 * Returns a struct i830_sdvo_output_flags of attached displays.

 */

#define SDVO_CMD_GET_ATTACHED_DISPLAYS   0x0b

/**

 * Returns a struct i830_sdvo_ouptut_flags of displays supporting hot plugging.

 */

#define SDVO_CMD_GET_HOT_PLUG_SUPPORT   0x0c

/**

 * Takes a struct i830_sdvo_output_flags.

 */

#define SDVO_CMD_SET_ACTIVE_HOT_PLUG   0x0d

/**

 * Returns a struct i830_sdvo_output_flags of displays with hot plug

 * interrupts enabled.

 */

#define SDVO_CMD_GET_ACTIVE_HOT_PLUG   0x0e

#define SDVO_CMD_GET_INTERRUPT_EVENT_SOURCE  0x0f

struct i830_sdvo_get_interrupt_event_source_response {

    uint16_t interrupt_status;

    unsigned int ambient_light_interrupt:1;

    unsigned int pad:7;

} __attribute__((packed));

/**

 * Selects which input is affected by future input commands.

 *

 * Commands affected include SET_INPUT_TIMINGS_PART[12],

 * GET_INPUT_TIMINGS_PART[12], GET_PREFERRED_INPUT_TIMINGS_PART[12],

 * GET_INPUT_PIXEL_CLOCK_RANGE, and CREATE_PREFERRED_INPUT_TIMINGS.

 */

#define SDVO_CMD_SET_TARGET_INPUT   0x10

struct i830_sdvo_set_target_input_args {

    unsigned int target_1:1;

    unsigned int pad:7;

} __attribute__((packed));

/**

 * Takes a struct i830_sdvo_output_flags of which outputs are targetted by

 * future output commands.

 *

 * Affected commands inclue SET_OUTPUT_TIMINGS_PART[12],

 * GET_OUTPUT_TIMINGS_PART[12], and GET_OUTPUT_PIXEL_CLOCK_RANGE.

 */

#define SDVO_CMD_SET_TARGET_OUTPUT   0x11

#define SDVO_CMD_GET_INPUT_TIMINGS_PART1  0x12

#define SDVO_CMD_GET_INPUT_TIMINGS_PART2  0x13

#define SDVO_CMD_SET_INPUT_TIMINGS_PART1  0x14

#define SDVO_CMD_SET_INPUT_TIMINGS_PART2  0x15

#define SDVO_CMD_SET_OUTPUT_TIMINGS_PART1  0x16

#define SDVO_CMD_SET_OUTPUT_TIMINGS_PART2  0x17

#define SDVO_CMD_GET_OUTPUT_TIMINGS_PART1  0x18

#define SDVO_CMD_GET_OUTPUT_TIMINGS_PART2  0x19

/* Part 1 */

# define SDVO_DTD_CLOCK_LOW    SDVO_I2C_ARG_0

# define SDVO_DTD_CLOCK_HIGH    SDVO_I2C_ARG_1

# define SDVO_DTD_H_ACTIVE    SDVO_I2C_ARG_2

# define SDVO_DTD_H_BLANK    SDVO_I2C_ARG_3

# define SDVO_DTD_H_HIGH    SDVO_I2C_ARG_4

# define SDVO_DTD_V_ACTIVE    SDVO_I2C_ARG_5

# define SDVO_DTD_V_BLANK    SDVO_I2C_ARG_6

# define SDVO_DTD_V_HIGH    SDVO_I2C_ARG_7

/* Part 2 */

# define SDVO_DTD_HSYNC_OFF    SDVO_I2C_ARG_0

# define SDVO_DTD_HSYNC_WIDTH    SDVO_I2C_ARG_1

# define SDVO_DTD_VSYNC_OFF_WIDTH   SDVO_I2C_ARG_2

# define SDVO_DTD_SYNC_OFF_WIDTH_HIGH   SDVO_I2C_ARG_3

# define SDVO_DTD_DTD_FLAGS    SDVO_I2C_ARG_4

# define SDVO_DTD_DTD_FLAG_INTERLACED    (1 << 7)

# define SDVO_DTD_DTD_FLAG_STEREO_MASK    (3 << 5)

# define SDVO_DTD_DTD_FLAG_INPUT_MASK    (3 << 3)

# define SDVO_DTD_DTD_FLAG_SYNC_MASK    (3 << 1)

# define SDVO_DTD_SDVO_FLAS    SDVO_I2C_ARG_5

# define SDVO_DTD_SDVO_FLAG_STALL    (1 << 7)

# define SDVO_DTD_SDVO_FLAG_CENTERED    (0 << 6)

# define SDVO_DTD_SDVO_FLAG_UPPER_LEFT    (1 << 6)

# define SDVO_DTD_SDVO_FLAG_SCALING_MASK   (3 << 4)

# define SDVO_DTD_SDVO_FLAG_SCALING_NONE   (0 << 4)

# define SDVO_DTD_SDVO_FLAG_SCALING_SHARP   (1 << 4)

# define SDVO_DTD_SDVO_FLAG_SCALING_SMOOTH   (2 << 4)

# define SDVO_DTD_VSYNC_OFF_HIGH   SDVO_I2C_ARG_6

/**

 * Generates a DTD based on the given width, height, and flags.

 *

 * This will be supported by any device supporting scaling or interlaced

 * modes.

 */

#define SDVO_CMD_CREATE_PREFERRED_INPUT_TIMING  0x1a

# define SDVO_PREFERRED_INPUT_TIMING_CLOCK_LOW  SDVO_I2C_ARG_0

# define SDVO_PREFERRED_INPUT_TIMING_CLOCK_HIGH  SDVO_I2C_ARG_1

# define SDVO_PREFERRED_INPUT_TIMING_WIDTH_LOW  SDVO_I2C_ARG_2

# define SDVO_PREFERRED_INPUT_TIMING_WIDTH_HIGH  SDVO_I2C_ARG_3

# define SDVO_PREFERRED_INPUT_TIMING_HEIGHT_LOW  SDVO_I2C_ARG_4

# define SDVO_PREFERRED_INPUT_TIMING_HEIGHT_HIGH SDVO_I2C_ARG_5

# define SDVO_PREFERRED_INPUT_TIMING_FLAGS  SDVO_I2C_ARG_6

# define SDVO_PREFERRED_INPUT_TIMING_FLAGS_INTERLACED  (1 << 0)

# define SDVO_PREFERRED_INPUT_TIMING_FLAGS_SCALED  (1 << 1)

#define SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART1 0x1b

#define SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART2 0x1c

/** Returns a struct i830_sdvo_pixel_clock_range */

#define SDVO_CMD_GET_INPUT_PIXEL_CLOCK_RANGE  0x1d

/** Returns a struct i830_sdvo_pixel_clock_range */

#define SDVO_CMD_GET_OUTPUT_PIXEL_CLOCK_RANGE  0x1e

/** Returns a byte bitfield containing SDVO_CLOCK_RATE_MULT_* flags */

#define SDVO_CMD_GET_SUPPORTED_CLOCK_RATE_MULTS  0x1f

/** Returns a byte containing a SDVO_CLOCK_RATE_MULT_* flag */

#define SDVO_CMD_GET_CLOCK_RATE_MULT   0x20

/** Takes a byte containing a SDVO_CLOCK_RATE_MULT_* flag */

#define SDVO_CMD_SET_CLOCK_RATE_MULT   0x21

# define SDVO_CLOCK_RATE_MULT_1X    (1 << 0)

# define SDVO_CLOCK_RATE_MULT_2X    (1 << 1)

# define SDVO_CLOCK_RATE_MULT_4X    (1 << 3)

#define SDVO_CMD_GET_SUPPORTED_TV_FORMATS  0x27

/** 5 bytes of bit flags for TV formats shared by all TV format functions */

struct i830_sdvo_tv_format {

    unsigned int ntsc_m:1;

    unsigned int ntsc_j:1;

    unsigned int ntsc_443:1;

    unsigned int pal_b:1;

    unsigned int pal_d:1;

    unsigned int pal_g:1;

    unsigned int pal_h:1;

    unsigned int pal_i:1;

unsigned int pal_m:1;

    unsigned int pal_n:1;

    unsigned int pal_nc:1;

    unsigned int pal_60:1;

    unsigned int secam_b:1;

    unsigned int secam_d:1;

    unsigned int secam_g:1;

    unsigned int secam_k:1;

unsigned int secam_k1:1;

    unsigned int secam_l:1;

    unsigned int secam_60:1;

    unsigned int hdtv_std_smpte_240m_1080i_59:1;

    unsigned int hdtv_std_smpte_240m_1080i_60:1;

    unsigned int hdtv_std_smpte_260m_1080i_59:1;

    unsigned int hdtv_std_smpte_260m_1080i_60:1;

    unsigned int hdtv_std_smpte_270m_1080i_50:1;

unsigned int hdtv_std_smpte_274m_1080i_50:1;

    unsigned int hdtv_std_smpte_274m_1080i_59:1;

    unsigned int hdtv_std_smpte_274m_1080i_60:1;

    unsigned int hdtv_std_smpte_274m_1080p_23:1;

    unsigned int hdtv_std_smpte_274m_1080p_24:1;

    unsigned int hdtv_std_smpte_274m_1080p_25:1;

    unsigned int hdtv_std_smpte_274m_1080p_29:1;

    unsigned int hdtv_std_smpte_274m_1080p_50:1;

unsigned int hdtv_std_smpte_274m_1080p_59:1;

    unsigned int hdtv_std_smpte_274m_1080p_60:1;

    unsigned int hdtv_std_smpte_295m_1080i_50:1;

    unsigned int hdtv_std_smpte_295m_1080p_50:1;

    unsigned int hdtv_std_smpte_296m_720p_59:1;

    unsigned int hdtv_std_smpte_296m_720p_60:1;

    unsigned int hdtv_std_smpte_296m_720p_50:1;

    unsigned int hdtv_std_smpte_293m_480p_59:1;

unsigned int hdtv_std_smpte_270m_480i_59:1;

    unsigned int hdtv_std_iturbt601_576i_50:1;

    unsigned int hdtv_std_iturbt601_576p_50:1;

    unsigned int hdtv_std_eia_7702a_480i_60:1;

    unsigned int hdtv_std_eia_7702a_480p_60:1;

    unsigned int pad:3;

} __attribute__((packed));

#define SDVO_CMD_GET_TV_FORMAT    0x28

/** This command should be run before SetOutputTimingsPart[12] */

#define SDVO_CMD_SET_TV_FORMAT    0x29

/** Returns the resolutiosn that can be used with the given TV format */

#define SDVO_CMD_GET_SDTV_RESOLUTION_SUPPORT  0x83

struct i830_sdvo_sdtv_resolution_request {

    unsigned int ntsc_m:1;

    unsigned int ntsc_j:1;

    unsigned int ntsc_443:1;

    unsigned int pal_b:1;

    unsigned int pal_d:1;

    unsigned int pal_g:1;

    unsigned int pal_h:1;

    unsigned int pal_i:1;

unsigned int pal_m:1;

    unsigned int pal_n:1;

    unsigned int pal_nc:1;

    unsigned int pal_60:1;

} __attribute__((packed));

struct i830_sdvo_sdtv_resolution_reply {

    unsigned int res_320x200:1;

    unsigned int res_320x240:1;

    unsigned int res_400x300:1;

    unsigned int res_640x350:1;

    unsigned int res_640x400:1;

    unsigned int res_640x480:1;

    unsigned int res_704x480:1;

    unsigned int res_704x576:1;

unsigned int res_720x350:1;

    unsigned int res_720x400:1;

    unsigned int res_720x480:1;

    unsigned int res_720x540:1;

    unsigned int res_720x576:1;

    unsigned int res_800x600:1;

    unsigned int res_832x624:1;

unsigned int res_920x766:1;

    unsigned int res_1024x768:1;

    unsigned int res_1280x1024:1;

    unsigned int pad:5;

} __attribute__((packed));

#define SDVO_CMD_GET_SUPPORTED_POWER_STATES  0x2a

#define SDVO_CMD_GET_ENCODER_POWER_STATE  0x2b

#define SDVO_CMD_SET_ENCODER_POWER_STATE  0x2c

# define SDVO_ENCODER_STATE_ON     (1 << 0)

# define SDVO_ENCODER_STATE_STANDBY    (1 << 1)

# define SDVO_ENCODER_STATE_SUSPEND    (1 << 2)

# define SDVO_ENCODER_STATE_OFF     (1 << 3)

#define SDVO_CMD_GET_SUPPORTED_ENHANCEMENTS  0x84

struct i830_sdvo_enhancements_reply {

    unsigned int flicker_filter:1;

    unsigned int flicker_filter_adaptive:1;

    unsigned int flicker_filter_2d:1;

    unsigned int saturation:1;

    unsigned int hue:1;

    unsigned int brightness:1;

    unsigned int contrast:1;

    unsigned int overscan_h:1;

unsigned int overscan_v:1;

    unsigned int position_h:1;

    unsigned int position_v:1;

    unsigned int sharpness:1;

    unsigned int dot_crawl:1;

    unsigned int dither:1;

    unsigned int max_tv_chroma_filter:1;

    unsigned int max_tv_luma_filter:1;

} __attribute__((packed));

/* Picture enhancement limits below are dependent on the current TV format,

 * and thus need to be queried and set after it.

 */

#define SDVO_CMD_GET_MAX_FLICKER_FITER   0x4d

#define SDVO_CMD_GET_MAX_ADAPTIVE_FLICKER_FITER  0x7b

#define SDVO_CMD_GET_MAX_2D_FLICKER_FITER  0x52

#define SDVO_CMD_GET_MAX_SATURATION   0x55

#define SDVO_CMD_GET_MAX_HUE    0x58

#define SDVO_CMD_GET_MAX_BRIGHTNESS   0x5c

#define SDVO_CMD_GET_MAX_CONTRAST   0x5e

#define SDVO_CMD_GET_MAX_OVERSCAN_H   0x61

#define SDVO_CMD_GET_MAX_OVERSCAN_V   0x64

#define SDVO_CMD_GET_MAX_POSITION_H   0x67

#define SDVO_CMD_GET_MAX_POSITION_V   0x6a

#define SDVO_CMD_GET_MAX_SHARPNESS_V   0x6d

#define SDVO_CMD_GET_MAX_TV_CHROMA   0x74

#define SDVO_CMD_GET_MAX_TV_LUMA   0x77

struct i830_sdvo_enhancement_limits_reply {

    uint16_t max_value;

    uint16_t default_value;

} __attribute__((packed));

#define SDVO_CMD_GET_FLICKER_FITER   0x4d

#define SDVO_CMD_SET_FLICKER_FITER   0x4e

#define SDVO_CMD_GET_ADAPTIVE_FLICKER_FITER  0x50

#define SDVO_CMD_SET_ADAPTIVE_FLICKER_FITER  0x51

#define SDVO_CMD_GET_2D_FLICKER_FITER   0x53

#define SDVO_CMD_SET_2D_FLICKER_FITER   0x54

#define SDVO_CMD_GET_SATURATION    0x56

#define SDVO_CMD_SET_SATURATION    0x57

#define SDVO_CMD_GET_HUE    0x59

#define SDVO_CMD_SET_HUE    0x5a

#define SDVO_CMD_GET_BRIGHTNESS    0x5c

#define SDVO_CMD_SET_BRIGHTNESS    0x5d

#define SDVO_CMD_GET_CONTRAST    0x5f

#define SDVO_CMD_SET_CONTRAST    0x60

#define SDVO_CMD_GET_OVERSCAN_H    0x62

#define SDVO_CMD_SET_OVERSCAN_H    0x63

#define SDVO_CMD_GET_OVERSCAN_V    0x65

#define SDVO_CMD_SET_OVERSCAN_V    0x66

#define SDVO_CMD_GET_POSITION_H    0x68

#define SDVO_CMD_SET_POSITION_H    0x69

#define SDVO_CMD_GET_POSITION_V    0x6b

#define SDVO_CMD_SET_POSITION_V    0x6c

#define SDVO_CMD_GET_SHARPNESS    0x6e

#define SDVO_CMD_SET_SHARPNESS    0x6f

#define SDVO_CMD_GET_TV_CHROMA    0x75

#define SDVO_CMD_SET_TV_CHROMA    0x76

#define SDVO_CMD_GET_TV_LUMA    0x78

#define SDVO_CMD_SET_TV_LUMA    0x79

struct i830_sdvo_enhancements_arg {

    uint16_t value;

}__attribute__((packed));

#define SDVO_CMD_GET_DOT_CRAWL    0x70

#define SDVO_CMD_SET_DOT_CRAWL    0x71

# define SDVO_DOT_CRAWL_ON     (1 << 0)

# define SDVO_DOT_CRAWL_DEFAULT_ON    (1 << 1)

#define SDVO_CMD_GET_DITHER    0x72

#define SDVO_CMD_SET_DITHER    0x73

# define SDVO_DITHER_ON      (1 << 0)

# define SDVO_DITHER_DEFAULT_ON     (1 << 1)

#define SDVO_CMD_SET_TV_RESOLUTION_SUPPORT  0x93

#define SDVO_CMD_SET_CONTROL_BUS_SWITCH   0x7a

# define SDVO_CONTROL_BUS_PROM    (1 << 0)

# define SDVO_CONTROL_BUS_DDC1    (1 << 1)

# define SDVO_CONTROL_BUS_DDC2    (1 << 2)

# define SDVO_CONTROL_BUS_DDC3    (1 << 3)

/* HDMI op codes */

#define SDVO_CMD_GET_SUPP_ENCODE 0x9d

#define SDVO_CMD_GET_ENCODE  0x9e

#define SDVO_CMD_SET_ENCODE  0x9f

  #define SDVO_ENCODE_DVI 0x0

  #define SDVO_ENCODE_HDMI 0x1

#define SDVO_CMD_SET_PIXEL_REPLI 0x8b

#define SDVO_CMD_GET_PIXEL_REPLI 0x8c

#define SDVO_CMD_GET_COLORIMETRY_CAP 0x8d

#define SDVO_CMD_SET_COLORIMETRY 0x8e

  #define SDVO_COLORIMETRY_RGB256   0x0

  #define SDVO_COLORIMETRY_RGB220   0x1

  #define SDVO_COLORIMETRY_YCrCb422 0x3

  #define SDVO_COLORIMETRY_YCrCb444 0x4

#define SDVO_CMD_GET_COLORIMETRY 0x8f

#define SDVO_CMD_GET_AUDIO_ENCRYPT_PREFER 0x90

#define SDVO_CMD_SET_AUDIO_STAT  0x91

#define SDVO_CMD_GET_AUDIO_STAT  0x92

#define SDVO_CMD_SET_HBUF_INDEX  0x93

#define SDVO_CMD_GET_HBUF_INDEX  0x94

#define SDVO_CMD_GET_HBUF_INFO  0x95

#define SDVO_CMD_SET_HBUF_AV_SPLIT 0x96

#define SDVO_CMD_GET_HBUF_AV_SPLIT 0x97

#define SDVO_CMD_SET_HBUF_DATA  0x98

#define SDVO_CMD_GET_HBUF_DATA  0x99

#define SDVO_CMD_SET_HBUF_TXRATE 0x9a

#define SDVO_CMD_GET_HBUF_TXRATE 0x9b

  #define SDVO_HBUF_TX_DISABLED (0 << 6)

  #define SDVO_HBUF_TX_ONCE (2 << 6)

  #define SDVO_HBUF_TX_VSYNC (3 << 6)

#define SDVO_CMD_GET_AUDIO_TX_INFO 0x9c

struct i830_sdvo_encode{

    uint8_t dvi_rev;

    uint8_t hdmi_rev;

} __attribute__ ((packed));

SDVO-DVI-I2C-register的更多相关文章

  1. qnx i2c 学习 二

    File still Updating.... many errors have been FOUND , need big change  qnx i2c structure  --written ...

  2. 乾坤合一~Linux设备驱动之I2C核心、总线以及设备驱动

    我思念的城市已是黄昏 为何我总对你一往情深 曾经给我快乐 也给我创伤 曾经给我希望 也给我绝望 我在遥远的城市 陌生的人群 感觉着你遥远的忧伤 我的幻想 你的忧伤,像我的的绝望,那样漫长,,,,,这是 ...

  3. STM32 I2C 难点---这个不错,留着慢慢研究

    来自:http://bbs.ednchina.com/BLOG_ARTICLE_2154168.HTM I2C 总线在所有嵌入式系统中用得极广, 是一个工业级别的总线, 但由于STM32 是一个32位 ...

  4. bq25890 ship mode

    Precondition 此是以 evb board 來做實驗的. 沒接 Vbus 僅接 i2c ,仍可以 讀寫 i2c register,但是 adc 似乎不能 working, evb board ...

  5. I2C子系统之驱动SSD1306 OLED

    理解I2C设备驱动框架,主要围绕四个结构体去分析就容易了. struct i2c_algorithm:提供I2C协议的实现的操作,如:master_xfer实现数据收发的最基本方法. struct i ...

  6. I2C 基础原理详解

    今天来学习下I2C通信~ I2C(Inter-Intergrated Circuit)指的是 IC(Intergrated Circuit)之间的(Inter) 通信方式.如上图所以有很多的周边设备都 ...

  7. i2c之at24c08驱动及应用程序

    1-->修改板级文件arch/arm/mach-s3c2440/mach-mini2440.c 步骤: ->添加引用 #include <linux/i2c.h> ->添 ...

  8. i2c总线,设备,驱动之间的关系

    ------ 总线上先添加好所有具体驱动,i2c.c遍历i2c_boardinfo链表,依次建立i2c_client, 并对每一个i2c_client与所有这个线上的驱动匹配,匹配上,就调用这个驱动的 ...

  9. Linux设备驱动模型之I2C总线

    一.I2C子系统总体架构 1.三大组成部分 (1)I2C核心(i2c-core):I2C核心提供了I2C总线驱动(适配器)和设备驱动的注册.注销方法,提供了与具体硬件无关的I2C读写函数. (2)I2 ...

  10. I2C总线和S5PV210的I2C总线控制器

    一.什么是I2C通信协议? 1.物理接口:SCL + SDA (1)SCL(serial clock):时钟线,传输CLK信号,一般是I2C主设备向从设备提供时钟的通道. (2)SDA(serial ...

随机推荐

  1. 百度网盘不限速下载软件 Pan Download

    百度网盘不限速下载软件 Pan Download Pan Download下载软件是一款电脑端的快速下载器软件,您可以通过Pan Download直接下载百度网盘中的资源,此款软件下载速度快,下载压缩 ...

  2. django的rest_framework框架源码剖析

    在看源码之前先了解一下什么是rest,restful api. 什么是rest 可以总结为一句话:REST是所有Web应用都应该遵守的架构设计指导原则. REST是Representational S ...

  3. ABP框架源码学习之修改默认数据库表前缀或表名称

    ABP框架源码学习之修改默认数据库表前缀或表名称 1,源码 namespace Abp.Zero.EntityFramework { /// <summary> /// Extension ...

  4. CSS选择器之通配符选择器和多元素选择器

    1.通配符选择器 如果希望所有的元素都符合某一种样式,可以使用通配符选择器. 基本语法: *{margin:0; padding:0} 可以让所有的html元素的外边距和内边距都默认为0. 写一段ht ...

  5. iOS-RATreeView多层UITableViewCell展示【多级列表展开与收起】的使用

    1.前言 iOS开发时,经常接触到的列表展示就是Tableview再熟悉不过了,但是如果接触到多层多级cell的展示,用大牛Augustyniak写的RATreeView是最好不过的了,Git地址:h ...

  6. 解决AspNet Zero Core 5.0.1无法运行的问题

    最近在研究AspNet Zero Core 5.0.1时发现VS点击调试后就自动退出了,从ABP QQ群里得知作者加入了licensecode校验.经过一个周左右断断续续的折腾,算是破解了吧.原本想把 ...

  7. BZOJ 2809: [Apio2012]dispatching [斜堆]

    题意:主席树做法见上一题 我曾发过誓再也不写左偏树(期末考试前一天下午5个小时没写出棘手的操作) 于是我来写斜堆啦 从叶子往根合并,维护斜堆就行了 题目连拓扑序都给你了... 说一下斜堆的操作: 合并 ...

  8. 数据分析之pandas教程------数据处理

    目录 1  数据合并 1.1  实现数据库表join功能 1.2  实现union功能 2  数据转换 2.1  轴旋转 2.2  数据转换 2.2.1  去重 2.2.2  对某一列运用函数 2.2 ...

  9. 工作笔记--自动切换host的python code

    修改host代码: #coding:utf-8import os,timepwd = os.path.dirname(__file__) #获取当前文件夹的绝对路径pull_host_cmd = 'a ...

  10. makefile讲解

    仅供自己学习使用 一.Makefile介绍 Makefile 或 makefile: 告诉make维护一个大型程序, 该做什么.Makefile说明了组成程序的各模块间的相互 关系及更新模块时必须进行 ...