Enable use of cirrus driver on NEC PC-9821 with CLGD755x. Patch was

submitted by Satoshi Kimura to both x11@freebsd.org and XFree86. It is
already in XFree86 CVS (Changelog #125) so the diff was taken from there.
Also install two files with Japanese documentation.

Submitted by:	Satoshi Kimura
This commit is contained in:
Dejan Lesjak 2004-11-11 19:40:20 +00:00
parent 6ae9fe2889
commit 40ace6f64a
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=121408
9 changed files with 391 additions and 2 deletions

View file

@ -7,7 +7,7 @@
PORTNAME= Server
PORTVERSION= 4.4.0
PORTREVISION= 4
PORTREVISION= 5
CATEGORIES= x11-servers
MASTER_SITES= ${MASTER_SITE_XFREE:S/$/:x/} \
${MASTER_SITE_LOCAL:S/$/:local/}
@ -25,7 +25,7 @@ EXTRACT_ONLY= XFree86-4.4.0-src-1.tgz \
MAINTAINER= x11@FreeBSD.org
COMMENT= XFree86-4 X server and related programs
CONFLICTS= xorg-server-*
CONFLICTS= xorg-server-[0-9]*
# Override default from XFree86-4-libraries/Makefile.inc
PATCHDIR= ${MASTERDIR}/files

View file

@ -0,0 +1,52 @@
Index: programs/Xserver/hw/xfree86/XF98Conf.cpp
===================================================================
RCS file: /cvs/xc/programs/Xserver/hw/xfree86/XF98Conf.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- programs/Xserver/hw/xfree86/XF98Conf.cpp 13 Feb 2004 23:58:34 -0000 1.4
+++ programs/Xserver/hw/xfree86/XF98Conf.cpp 8 Jun 2004 01:28:55 -0000 1.5
@@ -1,4 +1,4 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/XF98Conf.cpp,v 1.4 2004/02/13 23:58:34 dawes Exp $
+XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/XF98Conf.cpp,v 1.5 2004/06/08 01:28:55 dawes Exp $
XCOMM
XCOMM Copyright (c) 1994-1998 by The XFree86 Project, Inc.
XCOMM All rights reserved.
@@ -480,6 +480,20 @@
EndSection
+Section "Monitor"
+ Identifier "Aile TFT LCD"
+ VendorName "NEC"
+ ModelName "La13"
+ HorizSync 33.0-82.0
+ VertRefresh 55.0-90.0
+
+XCOMM fH=46.9,fV=75.0
+ ModeLine "800x600" 49.50 800 836 920 1056 600 601 604 625
+
+XCOMM fH=53.7,fV=85.1
+ ModeLine "800x600H" 56.30 800 836 920 1048 600 601 604 631
+EndSection
+
XCOMM **********************************************************************
XCOMM Graphics device section
XCOMM **********************************************************************
@@ -508,6 +522,16 @@
XCOMM VideoRam 2048
Endsection
+Section "Device"
+ Identifier "CLGD7555"
+ VendorName "Cirrus Logic"
+ BoardName "CLGD 7555"
+ Driver "cirrus"
+XCOMM Option "sw cursor" "on"
+XCOMM BusID "PCI:0:3:0"
+XCOMM VideoRam 2048
+EndSection
+
XCOMM **********************************************************************
XCOMM Screen sections.
XCOMM **********************************************************************

View file

@ -0,0 +1,22 @@
Index: programs/Xserver/hw/xfree86/common/xf86PciInfo.h
===================================================================
RCS file: /cvs/xc/programs/Xserver/hw/xfree86/common/xf86PciInfo.h,v
retrieving revision 1.159
retrieving revision 1.160
diff -u -r1.159 -r1.160
--- programs/Xserver/hw/xfree86/common/xf86PciInfo.h 22 Mar 2004 17:01:14 -0000 1.159
+++ programs/Xserver/hw/xfree86/common/xf86PciInfo.h 8 Jun 2004 01:28:56 -0000 1.160
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86PciInfo.h,v 1.159 2004/03/22 17:01:14 tsi Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86PciInfo.h,v 1.160 2004/06/08 01:28:56 dawes Exp $ */
/*
* Copyright (c) 1995-2003 by The XFree86 Project, Inc.
@@ -317,6 +317,7 @@
/* Cirrus Logic */
#define PCI_CHIP_GD7548 0x0038
#define PCI_CHIP_GD7555 0x0040
+#define PCI_CHIP_GD7556 0x004C
#define PCI_CHIP_GD5430 0x00A0
#define PCI_CHIP_GD5434_4 0x00A4
#define PCI_CHIP_GD5434_8 0x00A8

View file

@ -0,0 +1,62 @@
Index: programs/Xserver/hw/xfree86/doc/Japanese/README98
===================================================================
RCS file: /cvs/xc/programs/Xserver/hw/xfree86/doc/Japanese/README98,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- programs/Xserver/hw/xfree86/doc/Japanese/README98 20 Jun 2000 20:07:58 -0000 1.4
+++ programs/Xserver/hw/xfree86/doc/Japanese/README98 8 Jun 2004 01:28:56 -0000 1.5
@@ -1,6 +1,6 @@
XFree86 PC98 Dependent Information
The XFree86 Project Inc. and X98 CORE TEAM 著
- 2000 年 6 月 20 日
+ 2004 年 6 月 6 日
このドキュメントでは、PC98 固有の事項について解説します。PC/AT 互換機
と共通の事項については、共通のドキュメントを参照して下さい。
@@ -11,7 +11,7 @@
イル名: XFree86) されており、従来のボード / チップセット毎のサーバもな
くなりました。また、各ドライバはすべて SVGA ベースで、XF86_S3 ベースの
ドライバはありません。現在のところ、PC98 で動作しているのは、mga、
- apm、glint、trident ドライバのみです。Millennium、Mystique、
+ apm、glint、trident、cirrus ドライバのみです。Millennium、Mystique、
VoodooRUSH、Permedia2、TGUI968x(いずれも PCI) のボードをお持ちの方以外
は、3.3 ベース (ex. 3.3.6) の環境を御利用下さい。現状 4.0 では EGC や
PEGC すら利用できません。開発メンバが非常に少なくなっているので、開発
@@ -43,6 +43,7 @@
------------- ----------------------------------------------- -------
NEC MGA Millennium/Mystique XFree86
NEC Trident TGUI968x(X-Mate,ValueStar 等) XFree86
+ NEC Cirrus Logic CLGD755x (Aile 等) XFree86
3. 共通事項
@@ -274,6 +275,28 @@
README.trident は現時点 (4.0) では 3.3.6 用の内容であり、これに記載さ
れている Option の多くは使用できないので注意して下さい。
+ 4.5. cirrus ドライバ
+
+ NEC の内蔵アクセラレータ (Cirrus Logic CLGD755x) で動作するドライバです。
+
+ 4.5.1. XF86Config の設定
+
+ XF86Config.98 内に記されたオプションを指定できます。
+ 通常は特に何も指定する必要無い筈です。
+
+ 4.5.2. 報告されている問題
+
+ o ログに MMIO および I2C に関連したエラー ("(EE)" で示される) が
+ 出ますが、これは実際には警告レベルで動作には関係ないようです。
+
+ 4.5.3. その他
+
+ o まだ十分なテストが行われていないので動作レポートをお願いします。
+
+ 4.5.4. 関連
+
+ XFree86 man page, cirrus man page
+
5. 各 OS 毎の注意事項
5.1. FreeBSD(98) での注意事項

View file

@ -0,0 +1,45 @@
Index: programs/Xserver/hw/xfree86/doc/VideoBoard98
===================================================================
RCS file: /cvs/xc/programs/Xserver/hw/xfree86/doc/VideoBoard98,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- programs/Xserver/hw/xfree86/doc/VideoBoard98 20 Jun 2000 20:07:58 -0000 1.5
+++ programs/Xserver/hw/xfree86/doc/VideoBoard98 8 Jun 2004 01:28:56 -0000 1.6
@@ -156,9 +156,9 @@
|PC9821Nb7/C,D |CLGD7543 | B/I | B/I |1| X | |
|PC9821Nb10 |CLGD7548 | B/I | B/I |1| X | |
|PC9821Nx/3,C7 |Cyber9320 | B/I | B/I |1| X | |
-|PC9821Nr12 |CLGD7555 | B/I | B/I |2| X | |
-|PC9821Nr13/D10 |CLGD7555 | B/I | B/I |2| X | |
-|PC9821Nr13/D14,S14 |CLGD7556 | B/I | B/I |2| X | |
+|PC9821Nr12 |CLGD7555 | B/I | B/I |2| o? |O|
+|PC9821Nr13/D10 |CLGD7555 | B/I | B/I |2| o? |O|
+|PC9821Nr13/D14,S14 |CLGD7556 | B/I | B/I |2| o? |O|
|PC9821Nr15 |Cyber9385 | B/I | B/I |2| X | |
|PC9821Nr150 |Cyber9385 | B/I | B/I |2| X | |
|PC9821Nr150/S20 |Cyber9385-1 | B/I | B/I |2| X | |
@@ -169,12 +169,12 @@
|PC9821Lt2 |Cyber9320 | B/I | B/I |1| X | |
|PC9821La7 |Cyber9320 | B/I | B/I |1| X | |
|PC9821La10 |Cyber9320 | B/I | B/I |1| X | |
-|PC9821La13 |CLGD7555 | B/I | B/I |2| X | |
+|PC9821La13 |CLGD7555 | B/I | B/I |2| o |O|
+------------------------+---------------+-------+--------+-+-------+-+
-|PC9821Ls12 |CLGD7555 | B/I | B/I |2| X | |
-|PC9821Ls13 |CLGD7555 | B/I | B/I |2| X | |
-|PC9821Ls13 |CLGD7556 | B/I | B/I |2| X | |
-|PC9821Ls150 |CLGD7555 | B/I | B/I |2| X | |
+|PC9821Ls12 |CLGD7555 | B/I | B/I |2| o? |O|
+|PC9821Ls13 |CLGD7555 | B/I | B/I |2| o? |O|
+|PC9821Ls13 |CLGD7556 | B/I | B/I |2| o? |O|
+|PC9821Ls150 |CLGD7555 | B/I | B/I |2| o? |O|
+------------------------+---------------+-------+--------+-+-------+-+
@@ -384,4 +384,4 @@
|WinFrame928 |S3-928 | | |2| X | |
+------------------------+---------------+-------+--------+-+-------+-+
-/* $XFree86: xc/programs/Xserver/hw/xfree86/doc/VideoBoard98,v 1.5 2000/06/20 20:07:58 dawes Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/doc/VideoBoard98,v 1.6 2004/06/08 01:28:56 dawes Exp $ */

View file

@ -0,0 +1,170 @@
Index: programs/Xserver/hw/xfree86/drivers/cirrus/alp_driver.c
===================================================================
RCS file: /cvs/xc/programs/Xserver/hw/xfree86/drivers/cirrus/alp_driver.c,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -r1.36 -r1.37
--- programs/Xserver/hw/xfree86/drivers/cirrus/alp_driver.c 7 Nov 2003 22:49:58 -0000 1.36
+++ programs/Xserver/hw/xfree86/drivers/cirrus/alp_driver.c 8 Jun 2004 01:28:56 -0000 1.37
@@ -11,7 +11,7 @@
* Guy DESBIEF
*/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/cirrus/alp_driver.c,v 1.36 2003/11/07 22:49:58 dawes Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/cirrus/alp_driver.c,v 1.37 2004/06/08 01:28:56 dawes Exp $ */
/* All drivers should typically include these */
#include "xf86.h"
@@ -109,6 +109,9 @@
static void AlpDisplayPowerManagementSet(ScrnInfoPtr pScrn,
int PowerManagementMode, int flags);
+static void PC98CIRRUS755xEnable(ScrnInfoPtr pScrn);
+static void PC98CIRRUS755xDisable(ScrnInfoPtr pScrn);
+
/*
* This is intentionally screen-independent. It indicates the binding
* choice made in the first PreInit.
@@ -143,6 +146,8 @@
static int gd5446_MaxClocks[] = { 135100, 135100, 85500, 85500, 0 };
static int gd5480_MaxClocks[] = { 135100, 200000, 200000, 135100, 135100 };
static int gd7548_MaxClocks[] = { 80100, 80100, 80100, 80100, 80100 };
+static int gd7555_MaxClocks[] = { 80100, 80100, 80100, 80100, 80100 };
+static int gd7556_MaxClocks[] = { 80100, 80100, 80100, 80100, 80100 };
/*
* List of symbols from other modules that this module references. This
@@ -453,6 +458,11 @@
break;
}
break;
+
+ case PCI_CHIP_GD7555:
+ case PCI_CHIP_GD7556:
+ videoram = 2048; /* for PC-9821 La13 etc. */
+ break;
}
/* UNMap the Alp memory and MMIO areas */
@@ -567,7 +577,7 @@
pCir->PciInfo->device,
pCir->PciInfo->func);
- if (xf86LoadSubModule(pScrn, "int10")) {
+ if (!xf86IsPc98() && xf86LoadSubModule(pScrn, "int10")) {
xf86LoaderReqSymLists(int10Symbols,NULL);
xf86DrvMsg(pScrn->scrnIndex,X_INFO,"initializing int10\n");
pInt = xf86InitInt10(pCir->pEnt->index);
@@ -653,6 +663,16 @@
from = X_DEFAULT;
pCir->HWCursor = FALSE;
+
+ switch (pCir->Chipset) {
+ case PCI_CHIP_GD7555:
+ case PCI_CHIP_GD7556:
+ pCir->HWCursor = TRUE;
+ break;
+ default:
+ break;
+ }
+
if (xf86GetOptValBool(pCir->Options, OPTION_HW_CURSOR, &pCir->HWCursor))
from = X_CONFIG;
@@ -939,6 +959,12 @@
case PCI_CHIP_GD7548:
p = gd7548_MaxClocks;
break;
+ case PCI_CHIP_GD7555:
+ p = gd7555_MaxClocks;
+ break;
+ case PCI_CHIP_GD7556:
+ p = gd7556_MaxClocks;
+ break;
}
if (!p)
return FALSE;
@@ -1425,6 +1451,9 @@
vgaHWProtect(pScrn, FALSE);
+ if (xf86IsPc98())
+ PC98CIRRUS755xEnable(pScrn);
+
return TRUE;
}
@@ -1843,6 +1872,9 @@
AlpRestore(pScrn);
vgaHWLock(hwp);
+
+ if (xf86IsPc98())
+ PC98CIRRUS755xDisable(pScrn);
}
@@ -1880,6 +1912,9 @@
pScrn->vtSema = FALSE;
+ if (xf86IsPc98())
+ PC98CIRRUS755xDisable(pScrn);
+
pScreen->CloseScreen = pCir->CloseScreen;
return (*pScreen->CloseScreen)(scrnIndex, pScreen);
}
@@ -2142,3 +2177,52 @@
box.y2 - pScrn->virtualY);
}
}
+
+static void
+PC98CIRRUS755xEnable(ScrnInfoPtr pScrn) /* enter_aile() */
+{
+ unsigned int index,data;
+ vgaHWPtr hwp = VGAHWPTR(pScrn);
+
+ outb(0xfac, 0x02);
+
+ outb(0x68, 0x0e);
+ outb(0x6a, 0x07);
+ outb(0x6a, 0x8f);
+ outb(0x6a, 0x06);
+
+ outw(VGA_SEQ_INDEX, 0x1206); /* unlock cirrus special */
+
+ index = hwp->IOBase + VGA_CRTC_INDEX_OFFSET;
+ data = hwp->IOBase + VGA_CRTC_DATA_OFFSET;
+ outb(index, 0x3c);
+ outb(data, inb(data) & 0xef);
+ outb(index, 0x1a);
+ outb(data, inb(data) & 0xf3);
+}
+
+static void
+PC98CIRRUS755xDisable(ScrnInfoPtr pScrn) /* leave_aile() */
+{
+ unsigned int index,data;
+ vgaHWPtr hwp = VGAHWPTR(pScrn);
+
+ outw(VGA_SEQ_INDEX, 0x1206); /* unlock cirrus special */
+
+ index = hwp->IOBase + VGA_CRTC_INDEX_OFFSET;
+ data = hwp->IOBase + VGA_CRTC_DATA_OFFSET;
+ outb(index, 0x3c);
+ outb(data, 0x71);
+ outb(index, 0x1a);
+ outb(data, inb(data) | 0x0c);
+
+ outb(0xfac,0x00);
+
+ outb(0x68, 0x0f);
+ outb(0x6a, 0x07);
+ outb(0x6a, 0x8e);
+ outb(0x6a, 0x21);
+ outb(0x6a, 0x69);
+ outb(0x6a, 0x06);
+}
+

View file

@ -0,0 +1,35 @@
Index: programs/Xserver/hw/xfree86/drivers/cirrus/cir_driver.c
===================================================================
RCS file: /cvs/xc/programs/Xserver/hw/xfree86/drivers/cirrus/cir_driver.c,v
retrieving revision 1.69
retrieving revision 1.70
diff -u -r1.69 -r1.70
--- programs/Xserver/hw/xfree86/drivers/cirrus/cir_driver.c 18 Jun 2003 16:17:38 -0000 1.69
+++ programs/Xserver/hw/xfree86/drivers/cirrus/cir_driver.c 8 Jun 2004 01:28:56 -0000 1.70
@@ -11,7 +11,7 @@
* Guy DESBIEF
*/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/cirrus/cir_driver.c,v 1.69 2003/06/18 16:17:38 eich Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/cirrus/cir_driver.c,v 1.70 2004/06/08 01:28:56 dawes Exp $ */
/* All drivers should typically include these */
#include "xf86.h"
@@ -86,6 +86,8 @@
{ PCI_CHIP_GD5464BD, "CL-GD5464BD" },
{ PCI_CHIP_GD5465, "CL-GD5465" },
{ PCI_CHIP_GD7548, "CL-GD7548" },
+ { PCI_CHIP_GD7555, "CL-GD7555" },
+ { PCI_CHIP_GD7556, "CL-GD7556" },
{-1, NULL }
};
@@ -103,6 +105,8 @@
{ PCI_CHIP_GD5464BD,PCI_CHIP_GD5464BD, RES_SHARED_VGA },
{ PCI_CHIP_GD5465, PCI_CHIP_GD5465, RES_SHARED_VGA },
{ PCI_CHIP_GD7548, PCI_CHIP_GD7548, RES_SHARED_VGA },
+ { PCI_CHIP_GD7555, PCI_CHIP_GD7555, RES_SHARED_VGA },
+ { PCI_CHIP_GD7556, PCI_CHIP_GD7556, RES_SHARED_VGA },
{ -1, -1, RES_UNDEFINED}
};

View file

@ -43,6 +43,8 @@ lib/X11/doc/BUILD
lib/X11/doc/BugReport
lib/X11/doc/DESIGN
lib/X11/doc/Install
lib/X11/doc/Japanese/README98
lib/X11/doc/Japanese/README98.1st
lib/X11/doc/LICENSE
lib/X11/doc/README
lib/X11/doc/README.DECtga

View file

@ -64,6 +64,7 @@ echo "#define XF86Server YES" >> $LOCALDEF
echo "#define BuildServersOnly YES" >> $LOCALDEF
echo "#define BuildGLXLibrary YES" >> $LOCALDEF
echo "#define BuildXFree86ConfigTools YES" >> $LOCALDEF
echo "#define InstallJapaneseDocs YES" >> $LOCALDEF
echo "#define UseInstalledPrograms YES" >> $LOCALDEF
echo "#define UseInstalledLibraries YES" >> $LOCALDEF
echo "#define StandardIncludes -I${PREFIX}/include" >> $LOCALDEF