File: /usr/src/linux/drivers/video/sa1100fb.h

1     /*
2      * linux/drivers/video/sa1100fb.h
3      *    -- StrongARM 1100 LCD Controller Frame Buffer Device
4      *
5      *  Copyright (C) 1999 Eric A. Thomas
6      *   Based on acornfb.c Copyright (C) Russell King.
7      *  
8      * This file is subject to the terms and conditions of the GNU General Public
9      * License.  See the file COPYING in the main directory of this archive
10      * for more details.
11      */
12     
13     /*
14      * These are the bitfields for each
15      * display depth that we support.
16      */
17     struct sa1100fb_rgb {
18     	struct fb_bitfield	red;
19     	struct fb_bitfield	green;
20     	struct fb_bitfield	blue;
21     	struct fb_bitfield	transp;
22     };
23     
24     /*
25      * This structure describes the machine which we are running on.
26      */
27     struct sa1100fb_mach_info {
28     	u_long		pixclock;
29     
30     	u_short		xres;
31     	u_short		yres;
32     
33     	u_char		bpp;
34     	u_char		hsync_len;
35     	u_char		left_margin;
36     	u_char		right_margin;
37     
38     	u_char		vsync_len;
39     	u_char		upper_margin;
40     	u_char		lower_margin;
41     	u_char		sync;
42     
43     	u_int		cmap_greyscale:1,
44     			cmap_inverse:1,
45     			cmap_static:1,
46     			unused:29;
47     
48     	u_int		lccr0;
49     	u_int		lccr3;
50     };
51     
52     /* Shadows for LCD controller registers */
53     struct sa1100fb_lcd_reg {
54     	Word lccr0;
55     	Word lccr1;
56     	Word lccr2;
57     	Word lccr3;
58     };
59     
60     #define RGB_8	(0)
61     #define RGB_16	(1)
62     #define NR_RGB	2
63     
64     struct sa1100fb_info {
65     	struct fb_info		fb;
66     	signed int		currcon;
67     
68     	struct sa1100fb_rgb	*rgb[NR_RGB];
69     
70     	u_int			max_bpp;
71     	u_int			max_xres;
72     	u_int			max_yres;
73     
74     	/*
75     	 * These are the addresses we mapped
76     	 * the framebuffer memory region to.
77     	 */
78     	dma_addr_t		map_dma;
79     	u_char *		map_cpu;
80     	u_int			map_size;
81     
82     	u_char *		screen_cpu;
83     	dma_addr_t		screen_dma;
84     	u16 *			palette_cpu;
85     	dma_addr_t		palette_dma;
86     	u_int			palette_size;
87     
88     	dma_addr_t		dbar1;
89     	dma_addr_t		dbar2;
90     
91     	u_int			lccr0;
92     	u_int			lccr3;
93     	u_int			cmap_inverse:1,
94     				cmap_static:1,
95     				unused:30;
96     
97     	u_int			reg_lccr0;
98     	u_int			reg_lccr1;
99     	u_int			reg_lccr2;
100     	u_int			reg_lccr3;
101     
102     	volatile u_char		state;
103     	volatile u_char		task_state;
104     	struct semaphore	ctrlr_sem;
105     	wait_queue_head_t	ctrlr_wait;
106     	struct tq_struct	task;
107     
108     #ifdef CONFIG_PM
109     	struct pm_dev		*pm;
110     #endif
111     #ifdef CONFIG_CPU_FREQ
112     	struct notifier_block	clockchg;
113     #endif
114     };
115     
116     #define __type_entry(ptr,type,member) ((type *)((char *)(ptr)-offsetof(type,member)))
117     
118     #define TO_INF(ptr,member)	__type_entry(ptr,struct sa1100fb_info,member)
119     
120     #define SA1100_PALETTE_MODE_VAL(bpp)    (((bpp) & 0x018) << 9)
121     
122     /*
123      * These are the actions for set_ctrlr_state
124      */
125     #define C_DISABLE		(0)
126     #define C_ENABLE		(1)
127     #define C_DISABLE_CLKCHANGE	(2)
128     #define C_ENABLE_CLKCHANGE	(3)
129     #define C_REENABLE		(4)
130     
131     #define SA1100_NAME	"SA1100"
132     
133     /*
134      *  Debug macros 
135      */
136     #if DEBUG
137     #  define DPRINTK(fmt, args...)	printk("%s: " fmt, __FUNCTION__ , ## args)
138     #else
139     #  define DPRINTK(fmt, args...)
140     #endif
141     
142     /*
143      * Minimum X and Y resolutions
144      */
145     #define MIN_XRES	64
146     #define MIN_YRES	64
147     
148