xref: /OK3568_Linux_fs/kernel/include/video/kyro.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  *  linux/drivers/video/kyro/kryo.h
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  *  Copyright (C) 2002 STMicroelectronics
5*4882a593Smuzhiyun  *  Copyright (C) 2004 Paul Mundt
6*4882a593Smuzhiyun  *
7*4882a593Smuzhiyun  * This file is subject to the terms and conditions of the GNU General Public
8*4882a593Smuzhiyun  * License.  See the file COPYING in the main directory of this archive
9*4882a593Smuzhiyun  * for more details.
10*4882a593Smuzhiyun  */
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun #ifndef _KYRO_H
13*4882a593Smuzhiyun #define _KYRO_H
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun struct kyrofb_info {
16*4882a593Smuzhiyun 	void __iomem *regbase;
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun 	u32 palette[16];
19*4882a593Smuzhiyun 	u32 HTot;	/* Hor Total Time    */
20*4882a593Smuzhiyun 	u32 HFP;	/* Hor Front Porch   */
21*4882a593Smuzhiyun 	u32 HST;	/* Hor Sync Time     */
22*4882a593Smuzhiyun 	u32 HBP;	/* Hor Back Porch    */
23*4882a593Smuzhiyun 	s32 HSP;		/* Hor Sync Polarity */
24*4882a593Smuzhiyun 	u32 VTot;	/* Ver Total Time    */
25*4882a593Smuzhiyun 	u32 VFP;	/* Ver Front Porch   */
26*4882a593Smuzhiyun 	u32 VST;	/* Ver Sync Time     */
27*4882a593Smuzhiyun 	u32 VBP;	/* Ver Back Porch    */
28*4882a593Smuzhiyun 	s32 VSP;		/* Ver Sync Polarity */
29*4882a593Smuzhiyun 	u32 XRES;	/* X Resolution      */
30*4882a593Smuzhiyun 	u32 YRES;	/* Y Resolution      */
31*4882a593Smuzhiyun 	u32 VFREQ;	/* Ver Frequency     */
32*4882a593Smuzhiyun 	u32 PIXCLK;	/* Pixel Clock       */
33*4882a593Smuzhiyun 	u32 HCLK;	/* Hor Clock         */
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun 	/* Useful to hold depth here for Linux */
36*4882a593Smuzhiyun 	u8 PIXDEPTH;
37*4882a593Smuzhiyun 
38*4882a593Smuzhiyun 	int wc_cookie;
39*4882a593Smuzhiyun };
40*4882a593Smuzhiyun 
41*4882a593Smuzhiyun extern int kyro_dev_init(void);
42*4882a593Smuzhiyun extern void kyro_dev_reset(void);
43*4882a593Smuzhiyun 
44*4882a593Smuzhiyun extern unsigned char *kyro_dev_physical_fb_ptr(void);
45*4882a593Smuzhiyun extern unsigned char *kyro_dev_virtual_fb_ptr(void);
46*4882a593Smuzhiyun extern void *kyro_dev_physical_regs_ptr(void);
47*4882a593Smuzhiyun extern void *kyro_dev_virtual_regs_ptr(void);
48*4882a593Smuzhiyun extern unsigned int kyro_dev_fb_size(void);
49*4882a593Smuzhiyun extern unsigned int kyro_dev_regs_size(void);
50*4882a593Smuzhiyun 
51*4882a593Smuzhiyun extern u32 kyro_dev_overlay_offset(void);
52*4882a593Smuzhiyun 
53*4882a593Smuzhiyun /*
54*4882a593Smuzhiyun  * benedict.gaster@superh.com
55*4882a593Smuzhiyun  * Added the follow IOCTLS for the creation of overlay services...
56*4882a593Smuzhiyun  */
57*4882a593Smuzhiyun #define KYRO_IOC_MAGIC 'k'
58*4882a593Smuzhiyun 
59*4882a593Smuzhiyun #define KYRO_IOCTL_OVERLAY_CREATE       _IO(KYRO_IOC_MAGIC, 0)
60*4882a593Smuzhiyun #define KYRO_IOCTL_OVERLAY_VIEWPORT_SET _IO(KYRO_IOC_MAGIC, 1)
61*4882a593Smuzhiyun #define KYRO_IOCTL_SET_VIDEO_MODE       _IO(KYRO_IOC_MAGIC, 2)
62*4882a593Smuzhiyun #define KYRO_IOCTL_UVSTRIDE             _IO(KYRO_IOC_MAGIC, 3)
63*4882a593Smuzhiyun #define KYRO_IOCTL_OVERLAY_OFFSET       _IO(KYRO_IOC_MAGIC, 4)
64*4882a593Smuzhiyun #define KYRO_IOCTL_STRIDE               _IO(KYRO_IOC_MAGIC, 5)
65*4882a593Smuzhiyun 
66*4882a593Smuzhiyun /*
67*4882a593Smuzhiyun  * The follow 3 structures are used to pass data from user space into the kernel
68*4882a593Smuzhiyun  * for the creation of overlay surfaces and setting the video mode.
69*4882a593Smuzhiyun  */
70*4882a593Smuzhiyun typedef struct _OVERLAY_CREATE {
71*4882a593Smuzhiyun 	u32 ulWidth;
72*4882a593Smuzhiyun 	u32 ulHeight;
73*4882a593Smuzhiyun 	int bLinear;
74*4882a593Smuzhiyun } overlay_create;
75*4882a593Smuzhiyun 
76*4882a593Smuzhiyun typedef struct _OVERLAY_VIEWPORT_SET {
77*4882a593Smuzhiyun 	u32 xOrgin;
78*4882a593Smuzhiyun 	u32 yOrgin;
79*4882a593Smuzhiyun 	u32 xSize;
80*4882a593Smuzhiyun 	u32 ySize;
81*4882a593Smuzhiyun } overlay_viewport_set;
82*4882a593Smuzhiyun 
83*4882a593Smuzhiyun typedef struct _SET_VIDEO_MODE {
84*4882a593Smuzhiyun 	u32 ulWidth;
85*4882a593Smuzhiyun 	u32 ulHeight;
86*4882a593Smuzhiyun 	u32 ulScan;
87*4882a593Smuzhiyun 	u8 displayDepth;
88*4882a593Smuzhiyun 	int bLinear;
89*4882a593Smuzhiyun } set_video_mode;
90*4882a593Smuzhiyun 
91*4882a593Smuzhiyun #endif /* _KYRO_H */
92