📄 hw.h
字号:
/* IGA1 Vertical Blank End */struct iga1_ver_blank_end { int reg_num; struct io_register reg[IGA1_VER_BLANK_END_REG_NUM];};/* IGA1 Vertical Sync Start */struct iga1_ver_sync_start { int reg_num; struct io_register reg[IGA1_VER_SYNC_START_REG_NUM];};/* IGA1 Vertical Sync End */struct iga1_ver_sync_end { int reg_num; struct io_register reg[IGA1_VER_SYNC_END_REG_NUM];};/******************************************************* Define IGA2 Shadow Display Timing *********************************************************//* IGA2 Shadow Horizontal Total */struct iga2_shadow_hor_total { int reg_num; struct io_register reg[IGA2_SHADOW_HOR_TOTAL_REG_NUM];};/* IGA2 Shadow Horizontal Blank End */struct iga2_shadow_hor_blank_end { int reg_num; struct io_register reg[IGA2_SHADOW_HOR_BLANK_END_REG_NUM];};/* IGA2 Shadow Vertical Total */struct iga2_shadow_ver_total { int reg_num; struct io_register reg[IGA2_SHADOW_VER_TOTAL_REG_NUM];};/* IGA2 Shadow Vertical Addressable Video */struct iga2_shadow_ver_addr { int reg_num; struct io_register reg[IGA2_SHADOW_VER_ADDR_REG_NUM];};/* IGA2 Shadow Vertical Blank Start */struct iga2_shadow_ver_blank_start { int reg_num; struct io_register reg[IGA2_SHADOW_VER_BLANK_START_REG_NUM];};/* IGA2 Shadow Vertical Blank End */struct iga2_shadow_ver_blank_end { int reg_num; struct io_register reg[IGA2_SHADOW_VER_BLANK_END_REG_NUM];};/* IGA2 Shadow Vertical Sync Start */struct iga2_shadow_ver_sync_start { int reg_num; struct io_register reg[IGA2_SHADOW_VER_SYNC_START_REG_NUM];};/* IGA2 Shadow Vertical Sync End */struct iga2_shadow_ver_sync_end { int reg_num; struct io_register reg[IGA2_SHADOW_VER_SYNC_END_REG_NUM];};/******************************************************* Define IGA2 Display Timing **********************************************************//* IGA2 Horizontal Total */struct iga2_hor_total { int reg_num; struct io_register reg[IGA2_HOR_TOTAL_REG_NUM];};/* IGA2 Horizontal Addressable Video */struct iga2_hor_addr { int reg_num; struct io_register reg[IGA2_HOR_ADDR_REG_NUM];};/* IGA2 Horizontal Blank Start */struct iga2_hor_blank_start { int reg_num; struct io_register reg[IGA2_HOR_BLANK_START_REG_NUM];};/* IGA2 Horizontal Blank End */struct iga2_hor_blank_end { int reg_num; struct io_register reg[IGA2_HOR_BLANK_END_REG_NUM];};/* IGA2 Horizontal Sync Start */struct iga2_hor_sync_start { int reg_num; struct io_register reg[IGA2_HOR_SYNC_START_REG_NUM];};/* IGA2 Horizontal Sync End */struct iga2_hor_sync_end { int reg_num; struct io_register reg[IGA2_HOR_SYNC_END_REG_NUM];};/* IGA2 Vertical Total */struct iga2_ver_total { int reg_num; struct io_register reg[IGA2_VER_TOTAL_REG_NUM];};/* IGA2 Vertical Addressable Video */struct iga2_ver_addr { int reg_num; struct io_register reg[IGA2_VER_ADDR_REG_NUM];};/* IGA2 Vertical Blank Start */struct iga2_ver_blank_start { int reg_num; struct io_register reg[IGA2_VER_BLANK_START_REG_NUM];};/* IGA2 Vertical Blank End */struct iga2_ver_blank_end { int reg_num; struct io_register reg[IGA2_VER_BLANK_END_REG_NUM];};/* IGA2 Vertical Sync Start */struct iga2_ver_sync_start { int reg_num; struct io_register reg[IGA2_VER_SYNC_START_REG_NUM];};/* IGA2 Vertical Sync End */struct iga2_ver_sync_end { int reg_num; struct io_register reg[IGA2_VER_SYNC_END_REG_NUM];};/* IGA1 Offset Register */struct iga1_offset { int reg_num; struct io_register reg[IGA1_OFFSET_REG_NUM];};/* IGA2 Offset Register */struct iga2_offset { int reg_num; struct io_register reg[IGA2_OFFSET_REG_NUM];};struct offset { struct iga1_offset iga1_offset_reg; struct iga2_offset iga2_offset_reg;};/* IGA1 Fetch Count Register */struct iga1_fetch_count { int reg_num; struct io_register reg[IGA1_FETCH_COUNT_REG_NUM];};/* IGA2 Fetch Count Register */struct iga2_fetch_count { int reg_num; struct io_register reg[IGA2_FETCH_COUNT_REG_NUM];};struct fetch_count { struct iga1_fetch_count iga1_fetch_count_reg; struct iga2_fetch_count iga2_fetch_count_reg;};/* Starting Address Register */struct iga1_starting_addr { int reg_num; struct io_register reg[IGA1_STARTING_ADDR_REG_NUM];};struct iga2_starting_addr { int reg_num; struct io_register reg[IGA2_STARTING_ADDR_REG_NUM];};struct starting_addr { struct iga1_starting_addr iga1_starting_addr_reg; struct iga2_starting_addr iga2_starting_addr_reg;};/* LCD Power Sequence Timer */struct lcd_pwd_seq_td0 { int reg_num; struct io_register reg[LCD_POWER_SEQ_TD0_REG_NUM];};struct lcd_pwd_seq_td1 { int reg_num; struct io_register reg[LCD_POWER_SEQ_TD1_REG_NUM];};struct lcd_pwd_seq_td2 { int reg_num; struct io_register reg[LCD_POWER_SEQ_TD2_REG_NUM];};struct lcd_pwd_seq_td3 { int reg_num; struct io_register reg[LCD_POWER_SEQ_TD3_REG_NUM];};struct _lcd_pwd_seq_timer { struct lcd_pwd_seq_td0 td0; struct lcd_pwd_seq_td1 td1; struct lcd_pwd_seq_td2 td2; struct lcd_pwd_seq_td3 td3;};/* LCD Scaling Factor */struct _lcd_hor_scaling_factor { int reg_num; struct io_register reg[LCD_HOR_SCALING_FACTOR_REG_NUM];};struct _lcd_ver_scaling_factor { int reg_num; struct io_register reg[LCD_VER_SCALING_FACTOR_REG_NUM];};struct _lcd_scaling_factor { struct _lcd_hor_scaling_factor lcd_hor_scaling_factor; struct _lcd_ver_scaling_factor lcd_ver_scaling_factor;};struct pll_map { u32 clk; u32 cle266_pll; u32 k800_pll; u32 cx700_pll;};struct rgbLUT { u8 red; u8 green; u8 blue;};struct lcd_pwd_seq_timer { u16 td0; u16 td1; u16 td2; u16 td3;};/* Display FIFO Relation Registers*/struct iga1_fifo_depth_select { int reg_num; struct io_register reg[IGA1_FIFO_DEPTH_SELECT_REG_NUM];};struct iga1_fifo_threshold_select { int reg_num; struct io_register reg[IGA1_FIFO_THRESHOLD_REG_NUM];};struct iga1_fifo_high_threshold_select { int reg_num; struct io_register reg[IGA1_FIFO_HIGH_THRESHOLD_REG_NUM];};struct iga1_display_queue_expire_num { int reg_num; struct io_register reg[IGA1_DISPLAY_QUEUE_EXPIRE_NUM_REG_NUM];};struct iga2_fifo_depth_select { int reg_num; struct io_register reg[IGA2_FIFO_DEPTH_SELECT_REG_NUM];};struct iga2_fifo_threshold_select { int reg_num; struct io_register reg[IGA2_FIFO_THRESHOLD_REG_NUM];};struct iga2_fifo_high_threshold_select { int reg_num; struct io_register reg[IGA2_FIFO_HIGH_THRESHOLD_REG_NUM];};struct iga2_display_queue_expire_num { int reg_num; struct io_register reg[IGA2_DISPLAY_QUEUE_EXPIRE_NUM_REG_NUM];};struct fifo_depth_select { struct iga1_fifo_depth_select iga1_fifo_depth_select_reg; struct iga2_fifo_depth_select iga2_fifo_depth_select_reg;};struct fifo_threshold_select { struct iga1_fifo_threshold_select iga1_fifo_threshold_select_reg; struct iga2_fifo_threshold_select iga2_fifo_threshold_select_reg;};struct fifo_high_threshold_select { struct iga1_fifo_high_threshold_select iga1_fifo_high_threshold_select_reg; struct iga2_fifo_high_threshold_select iga2_fifo_high_threshold_select_reg;};struct display_queue_expire_num { struct iga1_display_queue_expire_num iga1_display_queue_expire_num_reg; struct iga2_display_queue_expire_num iga2_display_queue_expire_num_reg;};struct iga1_crtc_timing { struct iga1_hor_total hor_total; struct iga1_hor_addr hor_addr; struct iga1_hor_blank_start hor_blank_start; struct iga1_hor_blank_end hor_blank_end; struct iga1_hor_sync_start hor_sync_start; struct iga1_hor_sync_end hor_sync_end; struct iga1_ver_total ver_total; struct iga1_ver_addr ver_addr; struct iga1_ver_blank_start ver_blank_start; struct iga1_ver_blank_end ver_blank_end; struct iga1_ver_sync_start ver_sync_start; struct iga1_ver_sync_end ver_sync_end;};struct iga2_shadow_crtc_timing { struct iga2_shadow_hor_total hor_total_shadow; struct iga2_shadow_hor_blank_end hor_blank_end_shadow; struct iga2_shadow_ver_total ver_total_shadow; struct iga2_shadow_ver_addr ver_addr_shadow; struct iga2_shadow_ver_blank_start ver_blank_start_shadow; struct iga2_shadow_ver_blank_end ver_blank_end_shadow; struct iga2_shadow_ver_sync_start ver_sync_start_shadow; struct iga2_shadow_ver_sync_end ver_sync_end_shadow;};struct iga2_crtc_timing { struct iga2_hor_total hor_total; struct iga2_hor_addr hor_addr; struct iga2_hor_blank_start hor_blank_start; struct iga2_hor_blank_end hor_blank_end; struct iga2_hor_sync_start hor_sync_start; struct iga2_hor_sync_end hor_sync_end; struct iga2_ver_total ver_total; struct iga2_ver_addr ver_addr; struct iga2_ver_blank_start ver_blank_start; struct iga2_ver_blank_end ver_blank_end; struct iga2_ver_sync_start ver_sync_start; struct iga2_ver_sync_end ver_sync_end;};/* device ID */#define CLE266 0x3123#define KM400 0x3205#define CN400_FUNCTION2 0x2259#define CN400_FUNCTION3 0x3259/* support VT3314 chipset */#define CN700_FUNCTION2 0x2314#define CN700_FUNCTION3 0x3208/* VT3324 chipset */#define CX700_FUNCTION2 0x2324#define CX700_FUNCTION3 0x3324/* VT3204 chipset*/#define KM800_FUNCTION3 0x3204/* VT3336 chipset*/#define KM890_FUNCTION3 0x3336/* VT3327 chipset*/#define P4M890_FUNCTION3 0x3327/* VT3293 chipset*/#define CN750_FUNCTION3 0x3208/* VT3364 chipset*/#define P4M900_FUNCTION3 0x3364/* VT3353 chipset*/#define VX800_FUNCTION3 0x3353#define NUM_TOTAL_PLL_TABLE ARRAY_SIZE(pll_value)struct IODATA { u8 Index; u8 Mask; u8 Data;};struct pci_device_id_info { u32 vendor; u32 device; u32 chip_index;};extern unsigned int viafb_second_virtual_xres;extern unsigned int viafb_second_offset;extern int viafb_second_size;extern int viafb_SAMM_ON;extern int viafb_dual_fb;extern int viafb_LCD2_ON;extern int viafb_LCD_ON;extern int viafb_DVI_ON;extern int via_fb_accel;extern int via_fb_hotplug;extern struct pll_map pll_value[68];extern struct fifo_depth_select display_fifo_depth_reg;extern struct fifo_threshold_select fifo_threshold_select_reg;extern struct fifo_high_threshold_select fifo_high_threshold_select_reg;extern struct display_queue_expire_num display_queue_expire_num_reg;extern struct fetch_count fetch_count_reg;extern struct iga1_crtc_timing iga1_crtc_reg;extern struct iga2_crtc_timing iga2_crtc_reg;void viafb_write_reg_mask(u8 index, int io_port, u8 data, u8 mask);void viafb_set_output_path(int device, int set_iga, int output_interface);void viafb_fill_crtc_timing(struct crt_mode_table *crt_table, int mode_index, int bpp_byte, int set_iga);void viafb_set_vclock(u32 CLK, int set_iga);void viafb_load_reg(int timing_value, int viafb_load_reg_num, struct io_register *reg, int io_type);void viafb_crt_disable(void);void viafb_crt_enable(void);void init_ad9389(void);/* Access I/O Function */void viafb_write_reg(u8 index, u16 io_port, u8 data);u8 viafb_read_reg(int io_port, u8 index);void viafb_lock_crt(void);void viafb_unlock_crt(void);void viafb_load_offset_reg(int h_addr, int bpp_byte, int set_iga);void viafb_load_fetch_count_reg(int h_addr, int bpp_byte, int set_iga);void viafb_write_regx(struct io_reg RegTable[], int ItemNum);struct VideoModeTable *viafb_get_modetbl_pointer(int Index);u32 viafb_get_clk_value(int clk);void viafb_load_FIFO_reg(int set_iga, int hor_active, int ver_active);void viafb_set_color_depth(int bpp_byte, int set_iga);void viafb_set_dpa_gfx(int output_interface, struct GFX_DPA_SETTING\ *p_gfx_dpa_setting);int viafb_setmode(int vmode_index, int hor_res, int ver_res, int video_bpp, int vmode_index1, int hor_res1, int ver_res1, int video_bpp1);void viafb_init_chip_info(void);void viafb_init_dac(int set_iga);int viafb_get_pixclock(int hres, int vres, int vmode_refresh);int viafb_get_refresh(int hres, int vres, u32 float_refresh);void viafb_update_device_setting(int hres, int vres, int bpp, int vmode_refresh, int flag);void viafb_get_mmio_info(unsigned long *mmio_base, unsigned long *mmio_len);void viafb_set_iga_path(void);void viafb_set_start_addr(void);void viafb_get_fb_info(unsigned int *fb_base, unsigned int *fb_len);#endif /* __HW_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -