18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright 1998-2008 VIA Technologies, Inc. All Rights Reserved. 48c2ecf20Sopenharmony_ci * Copyright 2001-2008 S3 Graphics, Inc. All Rights Reserved. 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci#ifndef __VIAFBDEV_H__ 98c2ecf20Sopenharmony_ci#define __VIAFBDEV_H__ 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci#include <linux/proc_fs.h> 128c2ecf20Sopenharmony_ci#include <linux/fb.h> 138c2ecf20Sopenharmony_ci#include <linux/spinlock.h> 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ci#include "via_aux.h" 168c2ecf20Sopenharmony_ci#include "ioctl.h" 178c2ecf20Sopenharmony_ci#include "share.h" 188c2ecf20Sopenharmony_ci#include "chip.h" 198c2ecf20Sopenharmony_ci#include "hw.h" 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ci#define VERSION_MAJOR 2 228c2ecf20Sopenharmony_ci#define VERSION_KERNEL 6 /* For kernel 2.6 */ 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ci#define VERSION_OS 0 /* 0: for 32 bits OS, 1: for 64 bits OS */ 258c2ecf20Sopenharmony_ci#define VERSION_MINOR 4 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ci#define VIAFB_NUM_I2C 5 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_cistruct viafb_shared { 308c2ecf20Sopenharmony_ci u32 iga1_devices; 318c2ecf20Sopenharmony_ci u32 iga2_devices; 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_ci struct proc_dir_entry *proc_entry; /*viafb proc entry */ 348c2ecf20Sopenharmony_ci struct proc_dir_entry *iga1_proc_entry; 358c2ecf20Sopenharmony_ci struct proc_dir_entry *iga2_proc_entry; 368c2ecf20Sopenharmony_ci struct viafb_dev *vdev; /* Global dev info */ 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_ci /* I2C busses that may have auxiliary devices */ 398c2ecf20Sopenharmony_ci struct via_aux_bus *i2c_26; 408c2ecf20Sopenharmony_ci struct via_aux_bus *i2c_31; 418c2ecf20Sopenharmony_ci struct via_aux_bus *i2c_2C; 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_ci /* All the information will be needed to set engine */ 448c2ecf20Sopenharmony_ci struct tmds_setting_information tmds_setting_info; 458c2ecf20Sopenharmony_ci struct lvds_setting_information lvds_setting_info; 468c2ecf20Sopenharmony_ci struct lvds_setting_information lvds_setting_info2; 478c2ecf20Sopenharmony_ci struct chip_information chip_info; 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_ci /* hardware acceleration stuff */ 508c2ecf20Sopenharmony_ci u32 cursor_vram_addr; 518c2ecf20Sopenharmony_ci u32 vq_vram_addr; /* virtual queue address in video ram */ 528c2ecf20Sopenharmony_ci int (*hw_bitblt)(void __iomem *engine, u8 op, u32 width, u32 height, 538c2ecf20Sopenharmony_ci u8 dst_bpp, u32 dst_addr, u32 dst_pitch, u32 dst_x, u32 dst_y, 548c2ecf20Sopenharmony_ci u32 *src_mem, u32 src_addr, u32 src_pitch, u32 src_x, u32 src_y, 558c2ecf20Sopenharmony_ci u32 fg_color, u32 bg_color, u8 fill_rop); 568c2ecf20Sopenharmony_ci}; 578c2ecf20Sopenharmony_ci 588c2ecf20Sopenharmony_cistruct viafb_par { 598c2ecf20Sopenharmony_ci u8 depth; 608c2ecf20Sopenharmony_ci u32 vram_addr; 618c2ecf20Sopenharmony_ci 628c2ecf20Sopenharmony_ci unsigned int fbmem; /*framebuffer physical memory address */ 638c2ecf20Sopenharmony_ci unsigned int memsize; /*size of fbmem */ 648c2ecf20Sopenharmony_ci u32 fbmem_free; /* Free FB memory */ 658c2ecf20Sopenharmony_ci u32 fbmem_used; /* Use FB memory size */ 668c2ecf20Sopenharmony_ci u32 iga_path; 678c2ecf20Sopenharmony_ci 688c2ecf20Sopenharmony_ci struct viafb_shared *shared; 698c2ecf20Sopenharmony_ci 708c2ecf20Sopenharmony_ci /* All the information will be needed to set engine */ 718c2ecf20Sopenharmony_ci /* depreciated, use the ones in shared directly */ 728c2ecf20Sopenharmony_ci struct tmds_setting_information *tmds_setting_info; 738c2ecf20Sopenharmony_ci struct lvds_setting_information *lvds_setting_info; 748c2ecf20Sopenharmony_ci struct lvds_setting_information *lvds_setting_info2; 758c2ecf20Sopenharmony_ci struct chip_information *chip_info; 768c2ecf20Sopenharmony_ci}; 778c2ecf20Sopenharmony_ci 788c2ecf20Sopenharmony_ciextern int viafb_SAMM_ON; 798c2ecf20Sopenharmony_ciextern int viafb_dual_fb; 808c2ecf20Sopenharmony_ciextern int viafb_LCD2_ON; 818c2ecf20Sopenharmony_ciextern int viafb_LCD_ON; 828c2ecf20Sopenharmony_ciextern int viafb_DVI_ON; 838c2ecf20Sopenharmony_ciextern int viafb_hotplug; 848c2ecf20Sopenharmony_ci 858c2ecf20Sopenharmony_ciu8 viafb_gpio_i2c_read_lvds(struct lvds_setting_information 868c2ecf20Sopenharmony_ci *plvds_setting_info, struct lvds_chip_information 878c2ecf20Sopenharmony_ci *plvds_chip_info, u8 index); 888c2ecf20Sopenharmony_civoid viafb_gpio_i2c_write_mask_lvds(struct lvds_setting_information 898c2ecf20Sopenharmony_ci *plvds_setting_info, struct lvds_chip_information 908c2ecf20Sopenharmony_ci *plvds_chip_info, struct IODATA io_data); 918c2ecf20Sopenharmony_ciint via_fb_pci_probe(struct viafb_dev *vdev); 928c2ecf20Sopenharmony_civoid via_fb_pci_remove(struct pci_dev *pdev); 938c2ecf20Sopenharmony_ci/* Temporary */ 948c2ecf20Sopenharmony_ciint viafb_init(void); 958c2ecf20Sopenharmony_civoid viafb_exit(void); 968c2ecf20Sopenharmony_ci#endif /* __VIAFBDEV_H__ */ 97