amifb.c
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:93k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  * linux/drivers/video/amifb.c -- Amiga builtin chipset frame buffer device
  3.  *
  4.  *    Copyright (C) 1995 Geert Uytterhoeven
  5.  *
  6.  *          with work by Roman Zippel
  7.  *
  8.  *
  9.  * This file is based on the Atari frame buffer device (atafb.c):
  10.  *
  11.  *    Copyright (C) 1994 Martin Schaller
  12.  *                       Roman Hodek
  13.  *
  14.  *          with work by Andreas Schwab
  15.  *                       Guenther Kelleter
  16.  *
  17.  * and on the original Amiga console driver (amicon.c):
  18.  *
  19.  *    Copyright (C) 1993 Hamish Macdonald
  20.  *                       Greg Harp
  21.  *    Copyright (C) 1994 David Carter [carter@compsci.bristol.ac.uk]
  22.  *
  23.  *          with work by William Rucklidge (wjr@cs.cornell.edu)
  24.  *                       Geert Uytterhoeven
  25.  *                       Jes Sorensen (jds@kom.auc.dk)
  26.  *
  27.  *
  28.  * History:
  29.  *
  30.  *   - 24 Jul 96: Copper generates now vblank interrupt and
  31.  *                VESA Power Saving Protocol is fully implemented
  32.  *   - 14 Jul 96: Rework and hopefully last ECS bugs fixed
  33.  *   -  7 Mar 96: Hardware sprite support by Roman Zippel
  34.  *   - 18 Feb 96: OCS and ECS support by Roman Zippel
  35.  *                Hardware functions completely rewritten
  36.  *   -  2 Dec 95: AGA version by Geert Uytterhoeven
  37.  *
  38.  * This file is subject to the terms and conditions of the GNU General Public
  39.  * License. See the file COPYING in the main directory of this archive
  40.  * for more details.
  41.  */
  42. #include <linux/module.h>
  43. #include <linux/kernel.h>
  44. #include <linux/errno.h>
  45. #include <linux/string.h>
  46. #include <linux/mm.h>
  47. #include <linux/tty.h>
  48. #include <linux/slab.h>
  49. #include <linux/delay.h>
  50. #include <linux/config.h>
  51. #include <linux/interrupt.h>
  52. #include <linux/fb.h>
  53. #include <linux/init.h>
  54. #include <linux/console.h>
  55. #include <linux/ioport.h>
  56. #include <asm/uaccess.h>
  57. #include <asm/system.h>
  58. #include <asm/irq.h>
  59. #include <asm/amigahw.h>
  60. #include <asm/amigaints.h>
  61. #include <asm/setup.h>
  62. #include <video/fbcon.h>
  63. #include <video/fbcon-afb.h>
  64. #include <video/fbcon-ilbm.h>
  65. #include <video/fbcon-mfb.h>
  66. #define DEBUG
  67. #if !defined(CONFIG_FB_AMIGA_OCS) && !defined(CONFIG_FB_AMIGA_ECS) && !defined(CONFIG_FB_AMIGA_AGA)
  68. #define CONFIG_FB_AMIGA_OCS   /* define at least one fb driver, this will change later */
  69. #endif
  70. #if !defined(CONFIG_FB_AMIGA_OCS)
  71. #  define IS_OCS (0)
  72. #elif defined(CONFIG_FB_AMIGA_ECS) || defined(CONFIG_FB_AMIGA_AGA)
  73. #  define IS_OCS (chipset == TAG_OCS)
  74. #else
  75. #  define CONFIG_FB_AMIGA_OCS_ONLY
  76. #  define IS_OCS (1)
  77. #endif
  78. #if !defined(CONFIG_FB_AMIGA_ECS)
  79. #  define IS_ECS (0)
  80. #elif defined(CONFIG_FB_AMIGA_OCS) || defined(CONFIG_FB_AMIGA_AGA)
  81. #  define IS_ECS (chipset == TAG_ECS)
  82. #else
  83. #  define CONFIG_FB_AMIGA_ECS_ONLY
  84. #  define IS_ECS (1)
  85. #endif
  86. #if !defined(CONFIG_FB_AMIGA_AGA)
  87. #  define IS_AGA (0)
  88. #elif defined(CONFIG_FB_AMIGA_OCS) || defined(CONFIG_FB_AMIGA_ECS)
  89. #  define IS_AGA (chipset == TAG_AGA)
  90. #else
  91. #  define CONFIG_FB_AMIGA_AGA_ONLY
  92. #  define IS_AGA (1)
  93. #endif
  94. #ifdef DEBUG
  95. #  define DPRINTK(fmt, args...) printk(KERN_DEBUG "%s: " fmt, __FUNCTION__ , ## args)
  96. #else
  97. #  define DPRINTK(fmt, args...)
  98. #endif
  99. /*******************************************************************************
  100.    Generic video timings
  101.    ---------------------
  102.    Timings used by the frame buffer interface:
  103.    +----------+---------------------------------------------+----------+-------+
  104.    |          |                ^                            |          |       |
  105.    |          |                |upper_margin                |          |       |
  106.    |          |