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 unsigned long lccr0; 55 unsigned long lccr1; 56 unsigned long lccr2; 57 unsigned long lccr3; 58 }; 59 60 #define RGB_4 (0) 61 #define RGB_8 (1) 62 #define RGB_16 (2) 63 #define NR_RGB 3 64 65 struct sa1100fb_info { 66 struct fb_info fb; 67 struct device *dev; 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 mutex ctrlr_lock; 105 wait_queue_head_t ctrlr_wait; 106 struct work_struct task; 107 108 #ifdef CONFIG_CPU_FREQ 109 struct notifier_block freq_transition; 110 struct notifier_block freq_policy; 111 #endif 112 }; 113 114 #define TO_INF(ptr,member) container_of(ptr,struct sa1100fb_info,member) 115 116 #define SA1100_PALETTE_MODE_VAL(bpp) (((bpp) & 0x018) << 9) 117 118 /* 119 * These are the actions for set_ctrlr_state 120 */ 121 #define C_DISABLE (0) 122 #define C_ENABLE (1) 123 #define C_DISABLE_CLKCHANGE (2) 124 #define C_ENABLE_CLKCHANGE (3) 125 #define C_REENABLE (4) 126 #define C_DISABLE_PM (5) 127 #define C_ENABLE_PM (6) 128 #define C_STARTUP (7) 129 130 #define SA1100_NAME "SA1100" 131 132 /* 133 * Debug macros 134 */ 135 #if DEBUG 136 # define DPRINTK(fmt, args...) printk("%s: " fmt, __func__ , ## args) 137 #else 138 # define DPRINTK(fmt, args...) 139 #endif 140 141 /* 142 * Minimum X and Y resolutions 143 */ 144 #define MIN_XRES 64 145 #define MIN_YRES 64 146 147