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_8 (0) 61 #define RGB_16 (1) 62 #define NR_RGB 2 63 64 struct sa1100fb_info { 65 struct fb_info fb; 66 struct device *dev; 67 struct sa1100fb_rgb *rgb[NR_RGB]; 68 69 u_int max_bpp; 70 u_int max_xres; 71 u_int max_yres; 72 73 /* 74 * These are the addresses we mapped 75 * the framebuffer memory region to. 76 */ 77 dma_addr_t map_dma; 78 u_char * map_cpu; 79 u_int map_size; 80 81 u_char * screen_cpu; 82 dma_addr_t screen_dma; 83 u16 * palette_cpu; 84 dma_addr_t palette_dma; 85 u_int palette_size; 86 87 dma_addr_t dbar1; 88 dma_addr_t dbar2; 89 90 u_int lccr0; 91 u_int lccr3; 92 u_int cmap_inverse:1, 93 cmap_static:1, 94 unused:30; 95 96 u_int reg_lccr0; 97 u_int reg_lccr1; 98 u_int reg_lccr2; 99 u_int reg_lccr3; 100 101 volatile u_char state; 102 volatile u_char task_state; 103 struct mutex ctrlr_lock; 104 wait_queue_head_t ctrlr_wait; 105 struct work_struct task; 106 107 #ifdef CONFIG_CPU_FREQ 108 struct notifier_block freq_transition; 109 struct notifier_block freq_policy; 110 #endif 111 }; 112 113 #define TO_INF(ptr,member) container_of(ptr,struct sa1100fb_info,member) 114 115 #define SA1100_PALETTE_MODE_VAL(bpp) (((bpp) & 0x018) << 9) 116 117 /* 118 * These are the actions for set_ctrlr_state 119 */ 120 #define C_DISABLE (0) 121 #define C_ENABLE (1) 122 #define C_DISABLE_CLKCHANGE (2) 123 #define C_ENABLE_CLKCHANGE (3) 124 #define C_REENABLE (4) 125 #define C_DISABLE_PM (5) 126 #define C_ENABLE_PM (6) 127 #define C_STARTUP (7) 128 129 #define SA1100_NAME "SA1100" 130 131 /* 132 * Debug macros 133 */ 134 #if DEBUG 135 # define DPRINTK(fmt, args...) printk("%s: " fmt, __func__ , ## args) 136 #else 137 # define DPRINTK(fmt, args...) 138 #endif 139 140 /* 141 * Minimum X and Y resolutions 142 */ 143 #define MIN_XRES 64 144 #define MIN_YRES 64 145 146