xref: /openbmc/linux/drivers/video/fbdev/riva/rivafb.h (revision f7018c21350204c4cf628462f229d44d03545254)
1*f7018c21STomi Valkeinen #ifndef __RIVAFB_H
2*f7018c21STomi Valkeinen #define __RIVAFB_H
3*f7018c21STomi Valkeinen 
4*f7018c21STomi Valkeinen #include <linux/fb.h>
5*f7018c21STomi Valkeinen #include <video/vga.h>
6*f7018c21STomi Valkeinen #include <linux/i2c.h>
7*f7018c21STomi Valkeinen #include <linux/i2c-algo-bit.h>
8*f7018c21STomi Valkeinen 
9*f7018c21STomi Valkeinen #include "riva_hw.h"
10*f7018c21STomi Valkeinen 
11*f7018c21STomi Valkeinen /* GGI compatibility macros */
12*f7018c21STomi Valkeinen #define NUM_SEQ_REGS		0x05
13*f7018c21STomi Valkeinen #define NUM_CRT_REGS		0x41
14*f7018c21STomi Valkeinen #define NUM_GRC_REGS		0x09
15*f7018c21STomi Valkeinen #define NUM_ATC_REGS		0x15
16*f7018c21STomi Valkeinen 
17*f7018c21STomi Valkeinen /* I2C */
18*f7018c21STomi Valkeinen #define DDC_SCL_READ_MASK       (1 << 2)
19*f7018c21STomi Valkeinen #define DDC_SCL_WRITE_MASK      (1 << 5)
20*f7018c21STomi Valkeinen #define DDC_SDA_READ_MASK       (1 << 3)
21*f7018c21STomi Valkeinen #define DDC_SDA_WRITE_MASK      (1 << 4)
22*f7018c21STomi Valkeinen 
23*f7018c21STomi Valkeinen /* holds the state of the VGA core and extended Riva hw state from riva_hw.c.
24*f7018c21STomi Valkeinen  * From KGI originally. */
25*f7018c21STomi Valkeinen struct riva_regs {
26*f7018c21STomi Valkeinen 	u8 attr[NUM_ATC_REGS];
27*f7018c21STomi Valkeinen 	u8 crtc[NUM_CRT_REGS];
28*f7018c21STomi Valkeinen 	u8 gra[NUM_GRC_REGS];
29*f7018c21STomi Valkeinen 	u8 seq[NUM_SEQ_REGS];
30*f7018c21STomi Valkeinen 	u8 misc_output;
31*f7018c21STomi Valkeinen 	RIVA_HW_STATE ext;
32*f7018c21STomi Valkeinen };
33*f7018c21STomi Valkeinen 
34*f7018c21STomi Valkeinen struct riva_par;
35*f7018c21STomi Valkeinen 
36*f7018c21STomi Valkeinen struct riva_i2c_chan {
37*f7018c21STomi Valkeinen 	struct riva_par *par;
38*f7018c21STomi Valkeinen 	unsigned long   ddc_base;
39*f7018c21STomi Valkeinen 	struct i2c_adapter adapter;
40*f7018c21STomi Valkeinen 	struct i2c_algo_bit_data algo;
41*f7018c21STomi Valkeinen };
42*f7018c21STomi Valkeinen 
43*f7018c21STomi Valkeinen struct riva_par {
44*f7018c21STomi Valkeinen 	RIVA_HW_INST riva;	/* interface to riva_hw.c */
45*f7018c21STomi Valkeinen 	u32 pseudo_palette[16]; /* default palette */
46*f7018c21STomi Valkeinen 	u32 palette[16];        /* for Riva128 */
47*f7018c21STomi Valkeinen 	u8 __iomem *ctrl_base;	/* virtual control register base addr */
48*f7018c21STomi Valkeinen 	unsigned dclk_max;	/* max DCLK */
49*f7018c21STomi Valkeinen 
50*f7018c21STomi Valkeinen 	struct riva_regs initial_state;	/* initial startup video mode */
51*f7018c21STomi Valkeinen 	struct riva_regs current_state;
52*f7018c21STomi Valkeinen #ifdef CONFIG_X86
53*f7018c21STomi Valkeinen 	struct vgastate state;
54*f7018c21STomi Valkeinen #endif
55*f7018c21STomi Valkeinen 	struct mutex open_lock;
56*f7018c21STomi Valkeinen 	unsigned int ref_count;
57*f7018c21STomi Valkeinen 	unsigned char *EDID;
58*f7018c21STomi Valkeinen 	unsigned int Chipset;
59*f7018c21STomi Valkeinen 	int forceCRTC;
60*f7018c21STomi Valkeinen 	Bool SecondCRTC;
61*f7018c21STomi Valkeinen 	int FlatPanel;
62*f7018c21STomi Valkeinen 	struct pci_dev *pdev;
63*f7018c21STomi Valkeinen 	int cursor_reset;
64*f7018c21STomi Valkeinen #ifdef CONFIG_MTRR
65*f7018c21STomi Valkeinen 	struct { int vram; int vram_valid; } mtrr;
66*f7018c21STomi Valkeinen #endif
67*f7018c21STomi Valkeinen 	struct riva_i2c_chan chan[3];
68*f7018c21STomi Valkeinen };
69*f7018c21STomi Valkeinen 
70*f7018c21STomi Valkeinen void riva_common_setup(struct riva_par *);
71*f7018c21STomi Valkeinen unsigned long riva_get_memlen(struct riva_par *);
72*f7018c21STomi Valkeinen unsigned long riva_get_maxdclk(struct riva_par *);
73*f7018c21STomi Valkeinen void riva_delete_i2c_busses(struct riva_par *par);
74*f7018c21STomi Valkeinen void riva_create_i2c_busses(struct riva_par *par);
75*f7018c21STomi Valkeinen int riva_probe_i2c_connector(struct riva_par *par, int conn, u8 **out_edid);
76*f7018c21STomi Valkeinen 
77*f7018c21STomi Valkeinen #endif /* __RIVAFB_H */
78