1f7018c21STomi Valkeinen /* 2f7018c21STomi Valkeinen * linux/drivers/video/sa1100fb.h 3f7018c21STomi Valkeinen * -- StrongARM 1100 LCD Controller Frame Buffer Device 4f7018c21STomi Valkeinen * 5f7018c21STomi Valkeinen * Copyright (C) 1999 Eric A. Thomas 6f7018c21STomi Valkeinen * Based on acornfb.c Copyright (C) Russell King. 7f7018c21STomi Valkeinen * 8f7018c21STomi Valkeinen * This file is subject to the terms and conditions of the GNU General Public 9f7018c21STomi Valkeinen * License. See the file COPYING in the main directory of this archive 10f7018c21STomi Valkeinen * for more details. 11f7018c21STomi Valkeinen */ 12f7018c21STomi Valkeinen 13*5e4096efSLinus Walleij struct gpio_desc; 14*5e4096efSLinus Walleij 15f7018c21STomi Valkeinen #define LCCR0 0x0000 /* LCD Control Reg. 0 */ 16f7018c21STomi Valkeinen #define LCSR 0x0004 /* LCD Status Reg. */ 17f7018c21STomi Valkeinen #define DBAR1 0x0010 /* LCD DMA Base Address Reg. channel 1 */ 18f7018c21STomi Valkeinen #define DCAR1 0x0014 /* LCD DMA Current Address Reg. channel 1 */ 19f7018c21STomi Valkeinen #define DBAR2 0x0018 /* LCD DMA Base Address Reg. channel 2 */ 20f7018c21STomi Valkeinen #define DCAR2 0x001C /* LCD DMA Current Address Reg. channel 2 */ 21f7018c21STomi Valkeinen #define LCCR1 0x0020 /* LCD Control Reg. 1 */ 22f7018c21STomi Valkeinen #define LCCR2 0x0024 /* LCD Control Reg. 2 */ 23f7018c21STomi Valkeinen #define LCCR3 0x0028 /* LCD Control Reg. 3 */ 24f7018c21STomi Valkeinen 25f7018c21STomi Valkeinen /* Shadows for LCD controller registers */ 26f7018c21STomi Valkeinen struct sa1100fb_lcd_reg { 27f7018c21STomi Valkeinen unsigned long lccr0; 28f7018c21STomi Valkeinen unsigned long lccr1; 29f7018c21STomi Valkeinen unsigned long lccr2; 30f7018c21STomi Valkeinen unsigned long lccr3; 31f7018c21STomi Valkeinen }; 32f7018c21STomi Valkeinen 33f7018c21STomi Valkeinen struct sa1100fb_info { 34f7018c21STomi Valkeinen struct fb_info fb; 35f7018c21STomi Valkeinen struct device *dev; 36f7018c21STomi Valkeinen const struct sa1100fb_rgb *rgb[NR_RGB]; 37f7018c21STomi Valkeinen void __iomem *base; 38*5e4096efSLinus Walleij struct gpio_desc *shannon_lcden; 39f7018c21STomi Valkeinen 40f7018c21STomi Valkeinen /* 41f7018c21STomi Valkeinen * These are the addresses we mapped 42f7018c21STomi Valkeinen * the framebuffer memory region to. 43f7018c21STomi Valkeinen */ 44f7018c21STomi Valkeinen dma_addr_t map_dma; 45f7018c21STomi Valkeinen u_char * map_cpu; 46f7018c21STomi Valkeinen u_int map_size; 47f7018c21STomi Valkeinen 48f7018c21STomi Valkeinen u_char * screen_cpu; 49f7018c21STomi Valkeinen dma_addr_t screen_dma; 50f7018c21STomi Valkeinen u16 * palette_cpu; 51f7018c21STomi Valkeinen dma_addr_t palette_dma; 52f7018c21STomi Valkeinen u_int palette_size; 53f7018c21STomi Valkeinen 54f7018c21STomi Valkeinen dma_addr_t dbar1; 55f7018c21STomi Valkeinen dma_addr_t dbar2; 56f7018c21STomi Valkeinen 57f7018c21STomi Valkeinen u_int reg_lccr0; 58f7018c21STomi Valkeinen u_int reg_lccr1; 59f7018c21STomi Valkeinen u_int reg_lccr2; 60f7018c21STomi Valkeinen u_int reg_lccr3; 61f7018c21STomi Valkeinen 62f7018c21STomi Valkeinen volatile u_char state; 63f7018c21STomi Valkeinen volatile u_char task_state; 64f7018c21STomi Valkeinen struct mutex ctrlr_lock; 65f7018c21STomi Valkeinen wait_queue_head_t ctrlr_wait; 66f7018c21STomi Valkeinen struct work_struct task; 67f7018c21STomi Valkeinen 68f7018c21STomi Valkeinen #ifdef CONFIG_CPU_FREQ 69f7018c21STomi Valkeinen struct notifier_block freq_transition; 70f7018c21STomi Valkeinen #endif 71f7018c21STomi Valkeinen 72f7018c21STomi Valkeinen const struct sa1100fb_mach_info *inf; 7323834a41SDmitry Eremin-Solenikov struct clk *clk; 74cb6bc3ffSRussell King 75cb6bc3ffSRussell King u32 pseudo_palette[16]; 76f7018c21STomi Valkeinen }; 77f7018c21STomi Valkeinen 78f7018c21STomi Valkeinen #define TO_INF(ptr,member) container_of(ptr,struct sa1100fb_info,member) 79f7018c21STomi Valkeinen 80f7018c21STomi Valkeinen #define SA1100_PALETTE_MODE_VAL(bpp) (((bpp) & 0x018) << 9) 81f7018c21STomi Valkeinen 82f7018c21STomi Valkeinen /* 83f7018c21STomi Valkeinen * These are the actions for set_ctrlr_state 84f7018c21STomi Valkeinen */ 85f7018c21STomi Valkeinen #define C_DISABLE (0) 86f7018c21STomi Valkeinen #define C_ENABLE (1) 87f7018c21STomi Valkeinen #define C_DISABLE_CLKCHANGE (2) 88f7018c21STomi Valkeinen #define C_ENABLE_CLKCHANGE (3) 89f7018c21STomi Valkeinen #define C_REENABLE (4) 90f7018c21STomi Valkeinen #define C_DISABLE_PM (5) 91f7018c21STomi Valkeinen #define C_ENABLE_PM (6) 92f7018c21STomi Valkeinen #define C_STARTUP (7) 93f7018c21STomi Valkeinen 94f7018c21STomi Valkeinen #define SA1100_NAME "SA1100" 95f7018c21STomi Valkeinen 96f7018c21STomi Valkeinen /* 97f7018c21STomi Valkeinen * Minimum X and Y resolutions 98f7018c21STomi Valkeinen */ 99f7018c21STomi Valkeinen #define MIN_XRES 64 100f7018c21STomi Valkeinen #define MIN_YRES 64 101f7018c21STomi Valkeinen 102