sa1100fb.h 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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. #define LCCR0 0x0000 /* LCD Control Reg. 0 */
  13. #define LCSR 0x0004 /* LCD Status Reg. */
  14. #define DBAR1 0x0010 /* LCD DMA Base Address Reg. channel 1 */
  15. #define DCAR1 0x0014 /* LCD DMA Current Address Reg. channel 1 */
  16. #define DBAR2 0x0018 /* LCD DMA Base Address Reg. channel 2 */
  17. #define DCAR2 0x001C /* LCD DMA Current Address Reg. channel 2 */
  18. #define LCCR1 0x0020 /* LCD Control Reg. 1 */
  19. #define LCCR2 0x0024 /* LCD Control Reg. 2 */
  20. #define LCCR3 0x0028 /* LCD Control Reg. 3 */
  21. /* Shadows for LCD controller registers */
  22. struct sa1100fb_lcd_reg {
  23. unsigned long lccr0;
  24. unsigned long lccr1;
  25. unsigned long lccr2;
  26. unsigned long lccr3;
  27. };
  28. struct sa1100fb_info {
  29. struct fb_info fb;
  30. struct device *dev;
  31. const struct sa1100fb_rgb *rgb[NR_RGB];
  32. void __iomem *base;
  33. /*
  34. * These are the addresses we mapped
  35. * the framebuffer memory region to.
  36. */
  37. dma_addr_t map_dma;
  38. u_char * map_cpu;
  39. u_int map_size;
  40. u_char * screen_cpu;
  41. dma_addr_t screen_dma;
  42. u16 * palette_cpu;
  43. dma_addr_t palette_dma;
  44. u_int palette_size;
  45. dma_addr_t dbar1;
  46. dma_addr_t dbar2;
  47. u_int reg_lccr0;
  48. u_int reg_lccr1;
  49. u_int reg_lccr2;
  50. u_int reg_lccr3;
  51. volatile u_char state;
  52. volatile u_char task_state;
  53. struct mutex ctrlr_lock;
  54. wait_queue_head_t ctrlr_wait;
  55. struct work_struct task;
  56. #ifdef CONFIG_CPU_FREQ
  57. struct notifier_block freq_transition;
  58. struct notifier_block freq_policy;
  59. #endif
  60. const struct sa1100fb_mach_info *inf;
  61. struct clk *clk;
  62. };
  63. #define TO_INF(ptr,member) container_of(ptr,struct sa1100fb_info,member)
  64. #define SA1100_PALETTE_MODE_VAL(bpp) (((bpp) & 0x018) << 9)
  65. /*
  66. * These are the actions for set_ctrlr_state
  67. */
  68. #define C_DISABLE (0)
  69. #define C_ENABLE (1)
  70. #define C_DISABLE_CLKCHANGE (2)
  71. #define C_ENABLE_CLKCHANGE (3)
  72. #define C_REENABLE (4)
  73. #define C_DISABLE_PM (5)
  74. #define C_ENABLE_PM (6)
  75. #define C_STARTUP (7)
  76. #define SA1100_NAME "SA1100"
  77. /*
  78. * Minimum X and Y resolutions
  79. */
  80. #define MIN_XRES 64
  81. #define MIN_YRES 64