You can subscribe to this list here.
2001 |
Jan
|
Feb
(4) |
Mar
(47) |
Apr
(27) |
May
(113) |
Jun
|
Jul
|
Aug
(1) |
Sep
(15) |
Oct
(25) |
Nov
|
Dec
(34) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(17) |
Feb
(5) |
Mar
(5) |
Apr
(2) |
May
(16) |
Jun
|
Jul
|
Aug
(15) |
Sep
(28) |
Oct
(78) |
Nov
(39) |
Dec
|
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(4) |
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Karl T. K. <ka...@us...> - 2001-03-05 01:58:29
|
Update of /cvsroot/linuxdc/docs/tools/ht2html In directory usw-pr-cvs1:/tmp/cvs-serv4909/ht2html Added Files: ht2html.py Log Message: Added the ht2html. Will add a generator once it's started --- NEW FILE --- #! /usr/bin/env python """Generate a .html file from a .ht template. Usage: %(program)s [options] file1 [file2 [...]] Where options are: --rootdir <directory> -r <directory> specify the root of the Web page hierarchy. otherwise the current directory is used. --style <classmod> -s <classmod> specifies the generator `style'. classmod is both a module name and a class name. The module is imported (so it must be findable on your sys.path) and the class is dug out of that module (so they must have the same name). This class is instantiated by passing the following arguments: file -- the .ht file to be parsed rootdir -- as specified above relthis -- the directory path to get from rootdir to the current directory. Note that rootdir must be a direct parent of the current directory. file should be passed to HTParser to create an instance of the file parser. Your class should also create a LinkFixer using (the .html version of) file, rootdir, and relthis. --backup -b Make a backup of any existing .html if it would get overwritten. --backupext <ext> -x <ext> Specify the extension for backup files. Otherwise .bak is used --force -f Force overwritting of .html file even if the generated file is the same. Otherwise only overwrite .html file if the new one is different. --version -v Print the version number of this tool and exit. --quiet -q Be quiet. --help -h print this message and exit. """ __version__ = '1.1' import sys import os import getopt import errno program = sys.argv[0] sys.path.insert(0, os.getcwd()) try: abspath = os.path.abspath except AttributeError: # not Python 1.5.2 def abspath(path): return os.path.normpath(os.path.join(os.getcwd(), path)) def usage(code, msg=''): print __doc__ % globals() if msg: print msg sys.exit(code) def main(): try: opts, args = getopt.getopt( sys.argv[1:], 'hr:s:bx:fqv', ['help', 'rootdir=', 'style=', 'backup', 'backupext=', 'force', 'quiet', 'version']) except getopt.error, msg: usage(1, msg) rootdir = '.' classmod = 'StandardGenerator' backup = 0 backupext = '.bak' force = 0 quiet = 0 for opt, arg in opts: if opt in ('-h', '--help'): usage(0) elif opt in ('-v', '--version'): print 'ht2html version', __version__ sys.exit(0) elif opt in ('-r', '--rootdir'): ## rootdir = os.path.expanduser(arg) ## if rootdir[0] <> '/': ## rootdir = os.path.join(os.getcwd(), rootdir) ## rootdir = os.path.normpath(rootdir) rootdir = arg elif opt in ('-s', '--style'): classmod = arg elif opt in ('-b', '--backup'): backup = 1 elif opt in ('-x', '--backupext'): backupext = arg elif opt in ('-f', '--force'): force = 1 elif opt in ('-q', '--quiet'): quiet = 1 # find current dir relative to rootdir absroot = abspath(rootdir) curdir = abspath('.') prefix = os.path.commonprefix([absroot, curdir]) if prefix <> absroot: usage(1, 'Root directory must be relative to current directory') relthis = curdir[len(prefix)+1:] if not relthis: relthis = '.' # get the generator class m = __import__(classmod) GenClass = getattr(m, classmod) # process all the files on the command line for file in args: if not quiet: print 'Processing %s...' % file # get the target filename root, ext = os.path.splitext(file) htmlfile = root + '.html' g = GenClass(file, rootdir, relthis) # deal with backups, first load the original file try: fp = open(htmlfile) data = fp.read() fp.close() origfound = 1 except IOError: origfound = 0 newtext = g.makepage() if origfound and newtext == data: # the file hasn't changed. only write it if forced to if not force: continue try: omask = os.umask(002) if origfound and backup: fp = open(htmlfile + '.generated', 'w') fp.write(newtext) fp.close() os.rename(htmlfile, htmlfile + backupext) os.rename(htmlfile + '.generated', htmlfile) else: fp = open(htmlfile, 'w') fp.write(newtext) fp.close() except IOError, e: if e.errno == errno.EACCES: print e else: raise if __name__ == '__main__': main() |
From: Karl T. K. <ka...@us...> - 2001-03-05 01:58:00
|
Update of /cvsroot/linuxdc/docs/tools/ht2html In directory usw-pr-cvs1:/tmp/cvs-serv4788/ht2html Log Message: Directory /cvsroot/linuxdc/docs/tools/ht2html added to the repository |
From: Karl T. K. <ka...@us...> - 2001-03-05 01:57:16
|
Update of /cvsroot/linuxdc/docs/howto In directory usw-pr-cvs1:/tmp/cvs-serv4634/howto Added Files: Makefile install-kernel.ht install-tools.ht Log Message: Added beginnings of the new HOWTOs --- NEW FILE --- --- NEW FILE --- <HTML> <!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. --> <!-- Mon Mar 5 03:28:12 2001 --> <!-- USING HT2HTML 1.1 --> <!-- SEE http://www.python.org/~bwarsaw/software/pyware.html --> <!-- User-specified headers: Title: install-kernel.ht --> <HEAD> <TITLE>install-kernel.ht</TITLE> </HEAD> <BODY BGCOLOR="#ffffff" TEXT="#000000" TOPMARGIN="0" LEFTMARGIN="0" MARGINWIDTH="0" MARGINHEIGHT="0" LINK="#0000bb" VLINK="#551a8b" ALINK="#ff0000"> <!-- start of page table --> <TABLE WIDTH="100%" BORDER=0 CELLSPACING=0 CELLPADDING=0> <TR><!-- start of sidebar/body row --> <!-- start of sidebar cells --> <TD WIDTH=150 VALIGN=TOP BGCOLOR="#cdba96"> <!-- start of sidebar table --> <TABLE WIDTH="100%" BORDER=0 CELLSPACING=0 CELLPADDING=3 BGCOLOR="#ffffff"> <TR><TD BGCOLOR="#b78900"><B><FONT COLOR="#ffffff"> Email Us </FONT></B></TD></TR> <TR><TD BGCOLOR="#cdba96"> <A HREF="mailto:webmaster@local">webmaster@local</A> </TD></TR> </TABLE><!-- end of sidebar table --> </TD> <TD WIDTH=15> </TD><!--spacer--> <!-- end of sidebar cell --> <!-- start of body cell --> <TD VALIGN=TOP WIDTH="90%"><BR> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <html> <head> <title>Compiling and installing the Dreamcast Linux kernel</title> </head> <body bgcolor=white> </body> </html> </TD><!-- end of body cell --> </TR><!-- end of sidebar/body row --> </TABLE><!-- end of page table --> </BODY></HTML> --- NEW FILE --- <html> <h3 align=center>Compiling and installing the toolchain</h3> <h4>binutils</h4> <p>Get a recent snapshot of the GNU binutils from <a href="ftp://sources.redhat.com/pub/binutils/snapshots/">sources.redhat.com</a>. binutils-010220.tar.bz2 is know to work, so should the later versions. </p> <p>Unpack the tarball, make a directory alongside the unpacked snapshot and run configure from there:</p> <pre>sh-binutils>../binutils-010220/configure --target=sh-linux-gnu sh-binutils>make all install </pre> <p>You may want to use the --prefix option so that you don't clutter up /usr/local more than necessary. If you do, remember to add the bin directory to your path.</p> <h4>gcc</h4> <p>Again, <a href="ftp://sources.redhat.com/pub/gcc/snapshots/">sources.redhat.com</a> is the place to look for a recent snapshot. gcc-20010205 is known to work with a minor patch added. So should more recent snapshots. </p> <p>Unpack the tarball and make a directory alongside the unpacked snapshot to compile in. </p> <p>Before you start compiling, however, you will need to apply a minor <a href="mno-fpu-patch.diff">fpu-disabling patch</a>, thus: <pre>sh-gcc>patch -p1 < mno-fpu-patch.diff</pre> <p>Once that has been taken care of, you're ready to compile: <pre> sh-gcc>../gcc-20010205/configure --target=sh-linux-gnu --without-headers --with-newlib --enable-languages=c sh-gcc>make all-gcc install-gcc </pre> <p>If you run into a problem about missing sh-linux-gnu-as, you should fix your path to include the bin directory from wherever you installed binutils. </p> <h4>dcload</h4> <p>To upload the kernel later on, you'll need a serial slave for you DC. The one we recommend is <a href="http://www.cerc.utexas.edu/~andrewk/dc/">dcload</a>. </p> <p>To compile dcload, you'll have to apply a patch to it, since the 'sh-linux-gnu' target we compiled our tools with breaks the SH ABI. We've put together an <a href="dcload-unabi.diff">ABI-uncorrecting patch</a>. for this. Apply it: <pre> dcload>patch -p1 < dcload-unabi.diff </pre> <p>Then edit Makefile.cfg to suit your paths.</p> <p>After that, you should be set to do a <pre> dcload>make all install </pre> <p>To burn the dcload to a CD-R, you'll need a few more tools: <ul> <li><a href="http://mc.pp.se/dc/files/scramble.c">scramble.c</a></li> <li><a href="http://mc.pp.se/dc/files/makeip.tar.gz">makeip.tar.gz</a></li> <li>cdrecord and mkisofs, probably already installed if you have a CD burner</li> </ul> Install these tools, modify make-cd/Makefile in the dcload-distribution, then do make inside the make-cd directory to burn the serial loader to CD. </p> <h4>Conclusion</h4> <p>If you get this far and everything is working, you can pat yourself on the back. The worst part is over. Scuttle over to the <a href="install-kernel.html"> kernel installing howto</a> to finish up.</p> </body> </html> |
From: Karl T. K. <ka...@us...> - 2001-03-05 01:56:26
|
Update of /cvsroot/linuxdc/docs/faq In directory usw-pr-cvs1:/tmp/cvs-serv4482/faq Added Files: faq.inc.html Log Message: Added the FAQ --- NEW FILE --- <!-- this file is included by a PHP script, so don't do any fuzz on the top or the bottom --> <h1>The Dreamcast Linux FAQ</h1> <h3>Q-1:Can I use your code to rip games ?</h3> <p>A-1: Yes, as long as you have written permission from the original authors of the games.</p> <h3>Q0:Where are the binaries ?</h3> <p>A0: A compile away...</p> <h3>Q1: Is this some kind of hoax?</h3> <p>A1: Nope, no hoax, but this is work in progress. So don't expect everything to work straight out of the box.</p> <h3>Q2: How far has the port come?</h3> <p>A2: Good question, today there are at least four (4!) different ports of Linux for the DC. They are in various conditions, and lately some developers have joined forces on the <a href="http://www.dreamcastlinux.org">http://www.dreamcastlinux.org</a> site (and its American counterpart <a href="http://linuxdc.sourceforge.net">http://linuxdc.sourceforge.net</a>) to try to synchronize these ports into one. Check out the roadmap on either site to see the actual status.</p> <br> <h2>On the "pre" ports</h2> <br> <h3>Q2.1: What's a "pre" port?</h3> <p>A2.1: It's a Linux port that was written before this project (Dreamcast Linux) got started.</p> <h3>Q3: What ports where there before this project?</h3> <p>A3: Until this site came along there were at least two known successful ports. And then there were some unofficial ones. But so far none have been publicly available with source. However, we are trying to get hold of as many of these ports as we can, and if possible, integrate them into our project. Check out our <a href="http://www.dreamcastlinux.org">home page</a> for more information.</p> <h3>Q3: I have downloaded a kernel that boots the DC with a frame buffer and been able to log in with the keyboard. But I can't find the source. Do you now where it is?</h3> <p>A3: You probably have one of the "pre" ports. It has been wildly published on various home pages, among them SlashDot. As far as I know the source to that kernel hasn't been released to the public yet. And we don't know if it ever will be. <b>Note!</b> This binary is not ours. We, the Dreamcast Linux team didn't write it.</p> <h3>Q4: So if you didn't develop it how did you get a hold of it then?</h3> <p>A4: The kernel is part of an 300MB large ISO image that can be freely downloaded from the Internet.</p> <h3>Q5: From where on the Internet can this ISO be downloaded?</h3> <p>A5: Since the information of the kernel's whereabouts became known, without our knowledge or approval, we have been receiving a lot of traffic. Which of course is nice. But the original kernel is part of a 300MB large ISO image, and since we don't know the capacity of the original site, we are not going to link to it an send a zillon people there to download the 300M large file. There is good chance that the site would go down or become unavailable. But if we get an OK from those people we will of course link to it. </p> <h3>Q6: OK so who wrote the kernel?</h3> <p>A6: Well again I (Rene Malmgren) am not telling until I get an OK from the individual. I am not taking credit for his work, but right now he is in breach of the GPL, and perhaps more. So until the whole mess is sorted out I will remain silent. Hopefully he will release his code to this project and become a part of it. His contribution would of cause be very valuable.</p> <br> <h2>The project kernel</h2> <br> <h3>Q7: Is there an GPL kernel released for the DC?</h3> <p>A4: Yes, check the the <a href="http://www.dreamcastlinux.org">home page</a>. But this kernel is not finished yet. So there is no keyboard or FB support. But we are working on it. We will shortly post a a HOWTO there on how installation is done.</p> <h3>Q8: When will the kernel be finished ?</h3> <p>A8a: First of May, two thousand and one, around tea time.</p> <p>A8b: We don't know. Right now we think a realistic guess is that it will be ready with keyboard support and framebuffer in Q1 2001. Perhaps even Ethernet support, if we can get a hold some NICs and its programming specs.</p> <h3>Q9:What is "apocope" ?</h3> <p>A9: A noun. It means the loss of one or more sounds from the end of a word. Example: Modern English "sing" from Middle English "singen".</p> |
From: Karl T. K. <ka...@us...> - 2001-03-05 01:56:15
|
Update of /cvsroot/linuxdc/docs/udctm In directory usw-pr-cvs1:/tmp/cvs-serv4428/udctm Added Files: Makefile book.docbook Log Message: Moved the UDCTM --- NEW FILE --- #override SGML_CATALOG_FILES = /etc/sgml/catalog:/usr/lib/sgml/catalog verify: nsgmls -s book.docbook all: echo $(SGML_CATALOG_FILES) sgmltools -b html book.docbook --- NEW FILE --- <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [ <!ENTITY hwmanual "SH4 hardware manual"> <!ENTITY dcgc "Dreamcast® gaming console"> <!ENTITY dc "Dreamcast®"> <!ENTITY sega "SEGA®"> <!ENTITY goal "<para>This goal of this book is to have it eventually contain all the technical information on the &sega; &dcgc;. As all of the contents in this books will be covered by the GNU Free Documentation License, any contributions that carry with them other copyrights will be rejected.</para> <para>The material contained within has been collected from various places. See the Resources appendix for details.</para>"> ]> <!-- [ <!ENTITY introduction SYSTEM "introduction.docbook"> ]> --> [...2222 lines suppressed...] <listitem> <para id="danpotter">Memory map by Dan Potter <bard at allusion.net></para> </listitem> <listitem> <para id="marcuscomstedt">Additional PowerVR2 matieral by Marcus Comstedt <marus at idonex.se >, from http://mc.pp.se/ </para> </listitem> <listitem> <para>The SH4 Programming Manual version 1.2.1. 1998, Hitachi Ltd. http://semiconductor.hitachi.com/superh/</para> </listitem> <listitem> <para>The SH4 Hardware Manual version 1.1. 1998, Hitachi Ltd. http://semiconductor.hitachi.com/superh/</para> </listitem> </orderedlist> </appendix> </book> |
From: Karl T. K. <ka...@us...> - 2001-03-05 01:55:45
|
Update of /cvsroot/linuxdc/docs In directory usw-pr-cvs1:/tmp/cvs-serv4372 Modified Files: Makefile Removed Files: book.docbook Log Message: Rearranging the docs module Index: Makefile =================================================================== RCS file: /cvsroot/linuxdc/docs/Makefile,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** Makefile 2001/02/03 16:28:23 1.1 --- Makefile 2001/03/05 01:57:18 1.2 *************** *** 1,8 **** - #override SGML_CATALOG_FILES = /etc/sgml/catalog:/usr/lib/sgml/catalog - - verify: - nsgmls -s book.docbook - - all: - echo $(SGML_CATALOG_FILES) - sgmltools -b html book.docbook --- 0 ---- --- book.docbook DELETED --- |
From: Karl T. K. <ka...@us...> - 2001-03-05 01:55:31
|
Update of /cvsroot/linuxdc/docs/udctm In directory usw-pr-cvs1:/tmp/cvs-serv4311/udctm Log Message: Directory /cvsroot/linuxdc/docs/udctm added to the repository |
From: Karl T. K. <ka...@us...> - 2001-03-05 01:55:31
|
Update of /cvsroot/linuxdc/docs/howto In directory usw-pr-cvs1:/tmp/cvs-serv4311/howto Log Message: Directory /cvsroot/linuxdc/docs/howto added to the repository |
From: Karl T. K. <ka...@us...> - 2001-03-05 01:55:31
|
Update of /cvsroot/linuxdc/docs/tools In directory usw-pr-cvs1:/tmp/cvs-serv4311/tools Log Message: Directory /cvsroot/linuxdc/docs/tools added to the repository |
From: Karl T. K. <ka...@us...> - 2001-03-05 01:55:31
|
Update of /cvsroot/linuxdc/docs/faq In directory usw-pr-cvs1:/tmp/cvs-serv4311/faq Log Message: Directory /cvsroot/linuxdc/docs/faq added to the repository |
From: M. R. B. <mr...@us...> - 2001-03-05 01:27:51
|
Update of /cvsroot/linuxdc/linux/arch/sh/boot/compressed In directory usw-pr-cvs1:/tmp/cvs-serv30769/arch/sh/boot/compressed Modified Files: Makefile Log Message: ZIMAGE_BASE_OFFSET Index: Makefile =================================================================== RCS file: /cvsroot/linuxdc/linux/arch/sh/boot/compressed/Makefile,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -r1.1.1.1 -r1.2 *** Makefile 2000/12/09 00:36:00 1.1.1.1 --- Makefile 2001/03/05 01:29:23 1.2 *************** *** 19,23 **** # ZIMAGE_OFFSET is the load offset of the compression loader # ! ZIMAGE_OFFSET = $(shell printf "0x%8x" $$[0x80000000+0x$(CONFIG_MEMORY_START)+0x200000+0x10000]) ZLINKFLAGS = -Ttext $(ZIMAGE_OFFSET) $(ZLDFLAGS) --- 19,29 ---- # ZIMAGE_OFFSET is the load offset of the compression loader # ! # ZIMAGE_BASE_SIZE is how far to load the zImage after CONFIG_MEMORY_START, to make ! # sure zImage doesn't overwrite a preloaded ramdisk. ! ZIMAGE_BASE_SIZE = 0x200000 ! ifdef CONFIG_SH_DREAMCAST ! ZIMAGE_BASE_SIZE = 0x700000 ! endif ! ZIMAGE_OFFSET = $(shell printf "0x%8x" $$[0x80000000+0x$(CONFIG_MEMORY_START)+$(ZIMAGE_BASE_SIZE)+0x10000]) ZLINKFLAGS = -Ttext $(ZIMAGE_OFFSET) $(ZLDFLAGS) |
From: M. R. B. <mr...@us...> - 2001-03-05 01:27:51
|
Update of /cvsroot/linuxdc/linux In directory usw-pr-cvs1:/tmp/cvs-serv30769 Modified Files: ChangeLog.dc Log Message: ZIMAGE_BASE_OFFSET Index: ChangeLog.dc =================================================================== RCS file: /cvsroot/linuxdc/linux/ChangeLog.dc,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** ChangeLog.dc 2001/03/04 23:17:14 1.4 --- ChangeLog.dc 2001/03/05 01:29:23 1.5 *************** *** 1,4 **** --- 1,7 ---- 2001-03-04 M. R. Brown <mr...@0x...> + * arch/sh/boot/compressed/Makefile (ZIMAGE_BASE_SIZE): Added. Added + a conditional to up this value to 7MB for CONFIG_SH_DREAMCAST. + * drivers/video/pvr2dcfb.c (pvr2dcfb_init): Added a condition to select the default mode on VGA displays. |
From: M. R. B. <mr...@us...> - 2001-03-04 23:15:43
|
Update of /cvsroot/linuxdc/linux In directory usw-pr-cvs1:/tmp/cvs-serv11126 Modified Files: ChangeLog.dc Log Message: VGA interlace fix Index: ChangeLog.dc =================================================================== RCS file: /cvsroot/linuxdc/linux/ChangeLog.dc,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** ChangeLog.dc 2001/03/01 21:38:20 1.3 --- ChangeLog.dc 2001/03/04 23:17:14 1.4 *************** *** 1,2 **** --- 1,9 ---- + 2001-03-04 M. R. Brown <mr...@0x...> + + * drivers/video/pvr2dcfb.c (pvr2dcfb_init): Added a condition to select + the default mode on VGA displays. + (pvr2dc_decode_var): Made sure interlace wasn't being set for VGA mode. + Added a 640x480 VGA mode. + 2001-03-01 M. R. Brown <mr...@0x...> |
From: M. R. B. <mr...@us...> - 2001-03-04 23:15:43
|
Update of /cvsroot/linuxdc/linux/drivers/video In directory usw-pr-cvs1:/tmp/cvs-serv11126/drivers/video Modified Files: pvr2dcfb.c Log Message: VGA interlace fix Index: pvr2dcfb.c =================================================================== RCS file: /cvsroot/linuxdc/linux/drivers/video/pvr2dcfb.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** pvr2dcfb.c 2001/03/01 11:00:27 1.1 --- pvr2dcfb.c 2001/03/04 23:17:14 1.2 *************** *** 277,284 **** --- 277,295 ---- }, + { + /* 640x480 @ 60hz (VGA) */ + "vga_640x480", 60, 640, 480, 38, 33, 0, 18, 146, 26, + 0, FB_VMODE_YWRAP + }, + }; #define NUM_TOTAL_MODES ARRAY_SIZE(pvr2dc_modedb) + #define DEFMODE_NTSC 0 + #define DEFMODE_PAL 0 + #define DEFMODE_VGA 2 + + static int defmode = DEFMODE_NTSC; static const char *mode_option __initdata = NULL; *************** *** 673,677 **** par->vmode = var->vmode & FB_VMODE_MASK; ! if (par->vmode & FB_VMODE_INTERLACED) par->is_interlaced = 1; /* --- 684,688 ---- par->vmode = var->vmode & FB_VMODE_MASK; ! if (par->vmode & FB_VMODE_INTERLACED && video_output != VO_VGA) par->is_interlaced = 1; /* *************** *** 1011,1018 **** /* XXX: This needs to pull default video output via BIOS or other means */ ! if (video_output < 0 && cable_type == CT_VGA) ! video_output = VO_VGA; ! else ! video_output = VO_NTSC; strcpy(fb_info.modename, pvr2dcfb_name); --- 1022,1031 ---- /* XXX: This needs to pull default video output via BIOS or other means */ ! if (video_output < 0) { ! if (cable_type == CT_VGA) ! video_output = VO_VGA; ! else ! video_output = VO_NTSC; ! } strcpy(fb_info.modename, pvr2dcfb_name); *************** *** 1027,1032 **** memset(&var, 0, sizeof(var)); if (!fb_find_mode(&var, &fb_info, mode_option, pvr2dc_modedb, ! NUM_TOTAL_MODES, &pvr2dc_modedb[0], 16)) { return -EINVAL; } --- 1040,1048 ---- memset(&var, 0, sizeof(var)); + if (video_output == VO_VGA) + defmode = DEFMODE_VGA; + if (!fb_find_mode(&var, &fb_info, mode_option, pvr2dc_modedb, ! NUM_TOTAL_MODES, &pvr2dc_modedb[defmode], 16)) { return -EINVAL; } |
From: M. R. B. <mr...@us...> - 2001-03-01 21:37:23
|
Update of /cvsroot/linuxdc/linux/arch/sh In directory usw-pr-cvs1:/tmp/cvs-serv26475/arch/sh Modified Files: config.in Log Message: CONFIG_MEMORY_START change Index: config.in =================================================================== RCS file: /cvsroot/linuxdc/linux/arch/sh/config.in,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** config.in 2001/02/21 15:22:11 1.4 --- config.in 2001/03/01 21:38:47 1.5 *************** *** 80,84 **** bool 'Little Endian' CONFIG_CPU_LITTLE_ENDIAN if [ "$CONFIG_SH_SOLUTION_ENGINE" = "y" -o "$CONFIG_SH_HP600" = "y" -o \ ! "$CONFIG_SH_7750_OVERDRIVE" = "y" ]; then define_hex CONFIG_MEMORY_START 0c000000 else --- 80,84 ---- bool 'Little Endian' CONFIG_CPU_LITTLE_ENDIAN if [ "$CONFIG_SH_SOLUTION_ENGINE" = "y" -o "$CONFIG_SH_HP600" = "y" -o \ ! "$CONFIG_SH_7750_OVERDRIVE" = "y" -o "$CONFIG_SH_DREAMCAST" = "y" ]; then define_hex CONFIG_MEMORY_START 0c000000 else *************** *** 89,97 **** define_hex CONFIG_MEMORY_START 02000000 else ! if [ "$CONFIG_SH_DREAMCAST" = "y" ]; then ! define_hex CONFIG_MEMORY_START 0c010000 ! else ! hex 'Physical memory start address' CONFIG_MEMORY_START 08000000 ! fi fi fi --- 89,93 ---- define_hex CONFIG_MEMORY_START 02000000 else ! hex 'Physical memory start address' CONFIG_MEMORY_START 08000000 fi fi |
From: M. R. B. <mr...@us...> - 2001-03-01 21:36:56
|
Update of /cvsroot/linuxdc/linux In directory usw-pr-cvs1:/tmp/cvs-serv26361 Modified Files: ChangeLog.dc Log Message: CONFIG_MEMORY_START change Index: ChangeLog.dc =================================================================== RCS file: /cvsroot/linuxdc/linux/ChangeLog.dc,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** ChangeLog.dc 2001/03/01 10:54:52 1.2 --- ChangeLog.dc 2001/03/01 21:38:20 1.3 *************** *** 1,4 **** --- 1,7 ---- 2001-03-01 M. R. Brown <mr...@0x...> + * arch/sh/config.in: Changed the CONFIG_MEMORY_START option to + 0x0c000000. + * arch/sh/kernel/setup_powervr2dc.c (disable_powervr2dc_irq, enable_powervr2dc_irq, ack_powervr2dc_irq): Fixed bug where irq offset |
From: M. R. B. <mr...@us...> - 2001-03-01 10:59:05
|
Update of /cvsroot/linuxdc/linux/drivers/video In directory usw-pr-cvs1:/tmp/cvs-serv10511/drivers/video Added Files: pvr2dcfb.c Log Message: Initial framebuffer support @ 640x480-32 (NTSC) --- NEW FILE --- /* drivers/video/pvr2dcfb.c * * Frame buffer and fbcon support for the NEC PowerVR2 found within the Sega * Dreamcast. * * Copyright (c) 2001 M. R. Brown <mr...@0x...> * * This file is part of the LinuxDC project (linuxdc.sourceforge.net). * */ /* * This driver is mostly based on the excellent amifb and vfb sources. It uses * an odd scheme for converting hardware values to/from framebuffer values, here are * some hacked-up formulas: * * The Dreamcast has screen offsets from each side of it's four borders and the start * offsets of the display window. I used these values to calculate 'pseudo' values * (think of them as placeholders) for the fb video mode, so that when it came time [...1093 lines suppressed...] if (*cable_arg) cable_type = pvr2dc_get_param(cables, cable_arg, 0, 6); if (*output_arg) video_output = pvr2dc_get_param(outputs, output_arg, 0, 6); return 0; } #ifdef MODULE int init_module(void) { return pvr2dcfb_init(); } void cleanup_module(void) { unregister_framebuffer(&fb_info); } #endif /* MODULE */ |
From: M. R. B. <mr...@us...> - 2001-03-01 10:56:44
|
Update of /cvsroot/linuxdc/linux/include/asm-sh In directory usw-pr-cvs1:/tmp/cvs-serv9655/include/asm-sh Modified Files: keyboard.h Log Message: Vapor dcfb changed to _real_ pvr2dcfb... Index: keyboard.h =================================================================== RCS file: /cvsroot/linuxdc/linux/include/asm-sh/keyboard.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** keyboard.h 2001/02/09 16:28:28 1.3 --- keyboard.h 2001/03/01 10:58:06 1.4 *************** *** 39,43 **** extern void hp600_kbd_init_hw(void); - extern void dreamcast_kbd_init_hw(void); static __inline__ void kbd_init_hw(void) --- 39,42 ---- *************** *** 45,51 **** if (MACH_HP600) { hp600_kbd_init_hw(); - } - if (MACH_DREAMCAST) { - dreamcast_kbd_init_hw(); } } --- 44,47 ---- |
From: M. R. B. <mr...@us...> - 2001-03-01 10:56:44
|
Update of /cvsroot/linuxdc/linux/drivers/video In directory usw-pr-cvs1:/tmp/cvs-serv9655/drivers/video Modified Files: Config.in Makefile fbmem.c Log Message: Vapor dcfb changed to _real_ pvr2dcfb... Index: Config.in =================================================================== RCS file: /cvsroot/linuxdc/linux/drivers/video/Config.in,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** Config.in 2001/02/09 16:28:06 1.3 --- Config.in 2001/03/01 10:58:06 1.4 *************** *** 105,109 **** fi if [ "$CONFIG_SH_DREAMCAST" = "y" ]; then ! tristate ' Dreamcast Frame Buffer support' CONFIG_FB_DC fi if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then --- 105,109 ---- fi if [ "$CONFIG_SH_DREAMCAST" = "y" ]; then ! tristate ' Dreamcast PowerVR2DC (pvr2dc) display support' CONFIG_FB_PVR2DC fi if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then *************** *** 263,267 **** "$CONFIG_FB_RIVA" = "y" -o "$CONFIG_FB_ATY128" = "y" -o \ "$CONFIG_FB_CYBER2000" = "y" -o "$CONFIG_FB_3DFX" = "y" -o \ ! "$CONFIG_FB_SIS" = "y" -o "$CONFIG_FB_SA1100" = "y" ]; then define_tristate CONFIG_FBCON_CFB16 y else --- 263,268 ---- "$CONFIG_FB_RIVA" = "y" -o "$CONFIG_FB_ATY128" = "y" -o \ "$CONFIG_FB_CYBER2000" = "y" -o "$CONFIG_FB_3DFX" = "y" -o \ ! "$CONFIG_FB_SIS" = "y" -o "$CONFIG_FB_SA1100" = "y" -o \ ! "$CONFIG_FB_PVR2DC" = "y" ]; then define_tristate CONFIG_FBCON_CFB16 y else *************** *** 277,281 **** "$CONFIG_FB_RIVA" = "m" -o "$CONFIG_FB_ATY128" = "m" -o \ "$CONFIG_FB_CYBER2000" = "m" -o "$CONFIG_FB_SIS" = "m" -o \ ! "$CONFIG_FB_SA1100" = "m" ]; then define_tristate CONFIG_FBCON_CFB16 m fi --- 278,282 ---- "$CONFIG_FB_RIVA" = "m" -o "$CONFIG_FB_ATY128" = "m" -o \ "$CONFIG_FB_CYBER2000" = "m" -o "$CONFIG_FB_SIS" = "m" -o \ ! "$CONFIG_FB_SA1100" = "m" -o "$CONFIG_FB_PVR2DC" = "m" ]; then define_tristate CONFIG_FBCON_CFB16 m fi *************** *** 285,289 **** "$CONFIG_FB_MATROX" = "y" -o "$CONFIG_FB_PM2" = "y" -o \ "$CONFIG_FB_ATY128" = "y" -o \ ! "$CONFIG_FB_CYBER2000" = "y" ]; then define_tristate CONFIG_FBCON_CFB24 y else --- 286,290 ---- "$CONFIG_FB_MATROX" = "y" -o "$CONFIG_FB_PM2" = "y" -o \ "$CONFIG_FB_ATY128" = "y" -o \ ! "$CONFIG_FB_CYBER2000" = "y" -o "$CONFIG_FB_PVR2DC" = "y" ]; then define_tristate CONFIG_FBCON_CFB24 y else *************** *** 292,296 **** "$CONFIG_FB_MATROX" = "m" -o "$CONFIG_FB_PM2" = "m" -o \ "$CONFIG_FB_ATY128" = "m" -o \ ! "$CONFIG_FB_CYBER2000" = "m" ]; then define_tristate CONFIG_FBCON_CFB24 m fi --- 293,297 ---- "$CONFIG_FB_MATROX" = "m" -o "$CONFIG_FB_PM2" = "m" -o \ "$CONFIG_FB_ATY128" = "m" -o \ ! "$CONFIG_FB_CYBER2000" = "m" -o "$CONFIG_FB_PVR2DC" = "m" ]; then define_tristate CONFIG_FBCON_CFB24 m fi *************** *** 303,307 **** "$CONFIG_FB_RIVA" = "y" -o "$CONFIG_FB_ATY128" = "y" -o \ "$CONFIG_FB_FM2" = "y" -o "$CONFIG_FB_SGIVW" = "y" -o \ ! "$CONFIG_FB_3DFX" = "y" -o "$CONFIG_FB_SIS" = "y" ]; then define_tristate CONFIG_FBCON_CFB32 y else --- 304,309 ---- "$CONFIG_FB_RIVA" = "y" -o "$CONFIG_FB_ATY128" = "y" -o \ "$CONFIG_FB_FM2" = "y" -o "$CONFIG_FB_SGIVW" = "y" -o \ ! "$CONFIG_FB_3DFX" = "y" -o "$CONFIG_FB_SIS" = "y" -o \ ! "$CONFIG_FB_PVR2DC" = "y" ]; then define_tristate CONFIG_FBCON_CFB32 y else *************** *** 313,317 **** "$CONFIG_FB_RIVA" = "m" -o "$CONFIG_FB_ATY128" = "m" -o \ "$CONFIG_FB_3DFX" = "m" -o \ ! "$CONFIG_FB_SGIVW" = "m" -o "$CONFIG_FB_SIS" = "m" ]; then define_tristate CONFIG_FBCON_CFB32 m fi --- 315,320 ---- "$CONFIG_FB_RIVA" = "m" -o "$CONFIG_FB_ATY128" = "m" -o \ "$CONFIG_FB_3DFX" = "m" -o \ ! "$CONFIG_FB_SGIVW" = "m" -o "$CONFIG_FB_SIS" = "m" -o \ ! "$CONFIG_FB_PVR2DC" = "m" ]; then define_tristate CONFIG_FBCON_CFB32 m fi Index: Makefile =================================================================== RCS file: /cvsroot/linuxdc/linux/drivers/video/Makefile,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** Makefile 2001/01/09 03:31:12 1.2 --- Makefile 2001/03/01 10:58:06 1.3 *************** *** 102,106 **** obj-$(CONFIG_FB_HIT) += hitfb.o fbgen.o obj-$(CONFIG_FB_E1355) += epson1355fb.o fbgen.o ! obj-$(CONFIG_FB_DC) += dcfb.o fbgen.o # Generic Low Level Drivers --- 102,106 ---- obj-$(CONFIG_FB_HIT) += hitfb.o fbgen.o obj-$(CONFIG_FB_E1355) += epson1355fb.o fbgen.o ! obj-$(CONFIG_FB_PVR2DC) += pvr2dcfb.o # Generic Low Level Drivers Index: fbmem.c =================================================================== RCS file: /cvsroot/linuxdc/linux/drivers/video/fbmem.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** fbmem.c 2001/01/09 03:31:12 1.2 --- fbmem.c 2001/03/01 10:58:06 1.3 *************** *** 118,122 **** extern int e1355fb_init(void); extern int e1355fb_setup(char*); ! extern int dcfb_init(void); static struct { --- 118,123 ---- extern int e1355fb_init(void); extern int e1355fb_setup(char*); ! extern int pvr2dcfb_init(void); ! extern int pvr2dcfb_setup(char*); static struct { *************** *** 263,268 **** { "hitfb", hitfb_init, NULL }, #endif ! #ifdef CONFIG_FB_DC ! { "dcfb", dcfb_init, NULL }, #endif --- 264,269 ---- { "hitfb", hitfb_init, NULL }, #endif ! #ifdef CONFIG_FB_PVR2DC ! { "pvr2dc", pvr2dcfb_init, pvr2dcfb_setup }, #endif |
From: M. R. B. <mr...@us...> - 2001-03-01 10:56:44
|
Update of /cvsroot/linuxdc/linux/drivers/char In directory usw-pr-cvs1:/tmp/cvs-serv9655/drivers/char Modified Files: Makefile Log Message: Vapor dcfb changed to _real_ pvr2dcfb... Index: Makefile =================================================================== RCS file: /cvsroot/linuxdc/linux/drivers/char/Makefile,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** Makefile 2001/01/09 03:30:35 1.2 --- Makefile 2001/03/01 10:58:06 1.3 *************** *** 83,87 **** ifeq ($(CONFIG_SH_DREAMCAST),y) KEYMAP = defkeymap.o ! KEYBD = scan_keyb.o dc_keyb.o maple.o CONSOLE = console.o endif --- 83,87 ---- ifeq ($(CONFIG_SH_DREAMCAST),y) KEYMAP = defkeymap.o ! KEYBD = CONSOLE = console.o endif |
From: M. R. B. <mr...@us...> - 2001-03-01 10:54:20
|
Update of /cvsroot/linuxdc/linux/arch/sh/kernel In directory usw-pr-cvs1:/tmp/cvs-serv8952/arch/sh/kernel Modified Files: setup_powervr2dc.c Log Message: IRQ offset and NMI fixes Index: setup_powervr2dc.c =================================================================== RCS file: /cvsroot/linuxdc/linux/arch/sh/kernel/setup_powervr2dc.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** setup_powervr2dc.c 2001/02/21 15:22:11 1.1 --- setup_powervr2dc.c 2001/03/01 10:55:42 1.2 *************** *** 83,92 **** static inline void disable_powervr2dc_irq(unsigned int irq) { ! clear_bit(irq, (volatile unsigned long *)PVR2DC_REG_IMRA); } static inline void enable_powervr2dc_irq(unsigned int irq) { ! set_bit(irq, (volatile unsigned long *)PVR2DC_REG_IMRA); } --- 83,92 ---- static inline void disable_powervr2dc_irq(unsigned int irq) { ! clear_bit(irq - PVR2DC_IRQ_BASE, (volatile unsigned long *)PVR2DC_REG_IMRA); } static inline void enable_powervr2dc_irq(unsigned int irq) { ! set_bit(irq - PVR2DC_IRQ_BASE, (volatile unsigned long *)PVR2DC_REG_IMRA); } *************** *** 98,102 **** static void ack_powervr2dc_irq(unsigned int irq) { ! set_bit(irq, (volatile unsigned long *)PVR2DC_REG_IPRA); } --- 98,103 ---- static void ack_powervr2dc_irq(unsigned int irq) { ! test_and_set_bit(irq - PVR2DC_IRQ_BASE, ! (volatile unsigned long *)PVR2DC_REG_IPRA); } *************** *** 104,108 **** static void end_powervr2dc_irq(unsigned int irq) { ! enable_powervr2dc_irq(irq); } --- 105,109 ---- static void end_powervr2dc_irq(unsigned int irq) { ! /*enable_powervr2dc_irq(irq);*/ } *************** *** 129,133 **** }; - /* Just to satisfy my own curiosities :) */ static void powervr2dc_interrupt(int irq, void *dev_id, struct pt_regs *regs) { --- 130,133 ---- *************** *** 144,171 **** /* ! * That handy bitfield again. To demux IRQ9, just find the first non-zero bit ! * to use as the source. There's only one problem: if you get multiple interrupt ! * sources per IRQ, how do you demux those? */ - /* XXX: Need to make sure all int. sources are being handled per IRQ! Is this - * handled in irq.c:handle_IRQ_event()/do_IRQ() ? */ int powervr2dc_irq_demux(int irq) { if (irq == PVR2DC_IRQ) { ! u32 i = 0, bit; ! u32 ipr, req; ! ! /* Brute force scan each int. pending register. ! * This also needs fixing. */ ! for (ipr = PVR2DC_REG_IPRA ; ipr <= PVR2DC_REG_IPRC ; ipr += 4) { ! req = ctrl_inl(ipr); ! for (bit = 1 ; i < PVR2DC_IRQ_NUM ; bit <<= 1, i++) ! if (req & bit) ! goto found; } found: ! if (i < PVR2DC_IRQ_NUM) irq = PVR2DC_IRQ_BASE + i; } --- 144,175 ---- /* ! * There initially was a problem with pvr2dc NMI's (namely the scanline triggers) ! * occurring faster than what we could handle. Right now this is fixed a) because ! * nothing uses the scanline ints yet; and b) I should've known to remask the IPR ! * just in case this happened :). */ int powervr2dc_irq_demux(int irq) { if (irq == PVR2DC_IRQ) { ! u32 i = 0, j, bit; ! u32 ipr, reg; ! /* ! * Scan through each IPR and return the first found interrupt ! * (make sure we mask out those we don't want). ! */ ! for (ipr = PVR2DC_REG_IPRA ; ipr <= PVR2DC_REG_IPRC ; ipr += 4) { ! reg = ctrl_inl(ipr); ! /* Only because the IPR/IMR are parallel does this work */ ! reg &= ctrl_inl(ipr + 0x30); ! ! for (bit = 1, j = 0 ; j < 32 ; bit <<= 1, i++) ! if (reg & bit) ! goto found; } found: ! if (i < PVR2DC_IRQ_NUM) { irq = PVR2DC_IRQ_BASE + i; + } } *************** *** 183,189 **** } - for (i = PVR2DC_IRQ_BASE; i < PVR2DC_IRQ_BASE + PVR2DC_IRQ_NUM; i++) - irq_desc[i].handler = &powervr2dc_int; - ver_major = (ctrl_inl(PVR2DC_REG_VERSION) >> 4) & 0x0f; ver_minor = ctrl_inl(PVR2DC_REG_VERSION) & 0x0f; --- 187,190 ---- *************** *** 193,198 **** ver_major, ver_minor, PVR2DC_BASE, PVR2DC_IRQ, PVR2DC_IRQ_NUM); - setup_irq(PVR2DC_IRQ, &irq9); - /* Mask all interrupts. */ ctrl_outl(0, PVR2DC_REG_IMRA); --- 194,197 ---- *************** *** 207,210 **** --- 206,214 ---- ctrl_inl(PVR2DC_REG_IPRC); ctrl_outl(0xffffffff, PVR2DC_REG_IPRC); + + for (i = PVR2DC_IRQ_BASE; i < PVR2DC_IRQ_BASE + PVR2DC_IRQ_NUM; i++) + irq_desc[i].handler = &powervr2dc_int; + + setup_irq(PVR2DC_IRQ, &irq9); return 0; |
From: M. R. B. <mr...@us...> - 2001-03-01 10:53:31
|
Update of /cvsroot/linuxdc/linux In directory usw-pr-cvs1:/tmp/cvs-serv8847 Modified Files: ChangeLog.dc Log Message: Framebuffer and PowerVR2DC interrupt fixes Index: ChangeLog.dc =================================================================== RCS file: /cvsroot/linuxdc/linux/ChangeLog.dc,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** ChangeLog.dc 2001/02/21 15:13:44 1.1 --- ChangeLog.dc 2001/03/01 10:54:52 1.2 *************** *** 1,2 **** --- 1,28 ---- + 2001-03-01 M. R. Brown <mr...@0x...> + + * arch/sh/kernel/setup_powervr2dc.c (disable_powervr2dc_irq, + enable_powervr2dc_irq, ack_powervr2dc_irq): Fixed bug where irq offset + was incorrectly calculated. + (powervr2dc_irq_demux): Made sure interrupts were being masked + according to the IMR, this fixed the problem where scanline NMIs + interfered with the VBL interrupt. + (setup_powervr2dc): Misc. cleanups. + + * drivers/char/Makefile (CONFIG_SH_DREAMCAST): Removed LinuxSH's KEYBD + definition as it conflicts with LinuxDC. + * drivers/video/Config.in: Changed LinuxSH's config macros into + LinuxDC macros: CONFIG_FB_DC -> CONFIG_FB_PVR2DC. + (CONFIG_FB_PVR2DC): Added default console color modes. + * drivers/video/Makefile: Changed LinuxSH's config macros into LinuxDC + macros; added the pvr2dcfb.o file. + * drivers/video/fbmem.c: Updated configuration from CONFIG_FB_DC to + CONFIG_FB_PVR2DC, including fb name (pvr2dc) and setup routine. + + * drivers/video/pvr2dcfb.c: New file. + + * include/asm-sh/keyboard.h (kbd_init_hw): Removed Dreamcast keyboard + initialization code, added by LinuxSH. + + 2001-02-21 M. R. Brown <mr...@0x...> |
From: M. R. B. <mr...@us...> - 2001-02-21 15:21:11
|
Update of /cvsroot/linuxdc/linux/arch/sh/kernel In directory usw-pr-cvs1:/tmp/cvs-serv1015/kernel Modified Files: Makefile Added Files: io_powervr2dc.c mach_dreamcast.c setup_powervr2dc.c Log Message: Added initial Dreamcast PowerVR2DC and hardware support --- NEW FILE --- /* * linux/arch/sh/kernel/io_powervr2dc.c * * I/O routines for the Dreamcast PowerVR2DC ASIC. * * Copyright (c) 2001 M. R. Brown <mr...@0x...> * */ /* * Until I get some info on bITmASTER's ISA/IDE interface to the DC's * expansion port, this file will remain unimplemented. Until then, * you won't get much use out of ISA code :) */ /* BTW, PCI is coming real soon :) */ /* I hope I don't get hanged for this ;) */ #include <linux/config.h> #include <linux/kernel.h> #include <linux/types.h> #include <asm/io.h> #include <asm/page.h> #include <asm/powervr2dc.h> /* unsigned char powervr2dc_inb(unsigned long port) { BUG(); return 0; } unsigned short powervr2dc_inw(unsigned long port) { BUG(); return 0; } unsigned int powervr2dc_inl(unsigned long port) { BUG(); return 0; } void powervr2dc_outb(unsigned char data, unsigned long port) { BUG(); } void powervr2dc_outw(unsigned short data, unsigned long port) { BUG(); } void powervr2dc_outl(unsigned int data, unsigned long port) { BUG(); } */ --- NEW FILE --- /* * linux/arch/sh/kernel/mach_dreamcast.c * * Copyright (c) 2001 M. R. Brown <mr...@0x...> * * Machine vector for the Sega Dreamcast. */ #include <linux/config.h> #include <linux/init.h> #include <asm/machvec.h> #include <asm/rtc.h> #include <asm/machvec_init.h> #include <asm/io.h> #include <asm/irq.h> /* * The Machine Vector */ struct sh_machine_vector mv_dreamcast __initmv = { mv_name: "Dreamcast", mv_nr_irqs: 160, /* PVR2DC_IRQ_BASE + PVR2DC_IRQ_NUM */ mv_inb: generic_inb, mv_inw: generic_inw, mv_inl: generic_inl, mv_outb: generic_outb, mv_outw: generic_outw, mv_outl: generic_outl, mv_inb_p: generic_inb_p, mv_inw_p: generic_inw_p, mv_inl_p: generic_inl_p, mv_outb_p: generic_outb_p, mv_outw_p: generic_outw_p, mv_outl_p: generic_outl_p, mv_insb: generic_insb, mv_insw: generic_insw, mv_insl: generic_insl, mv_outsb: generic_outsb, mv_outsw: generic_outsw, mv_outsl: generic_outsl, mv_readb: generic_readb, mv_readw: generic_readw, mv_readl: generic_readl, mv_writeb: generic_writeb, mv_writew: generic_writew, mv_writel: generic_writel, mv_irq_demux: powervr2dc_irq_demux, /* These are in setup_powervr2dc.c */ mv_rtc_gettimeofday: dc_aica_rtc_gettimeofday, mv_rtc_settimeofday: dc_aica_rtc_settimeofday, mv_hw_dreamcast: 1, }; ALIAS_MV(dreamcast) --- NEW FILE --- /* * linux/arch/sh/kernel/setup_powervr2dc.c * * Interrupt handling and misc. routines for the Dreamcast * PowerVR2DC ASIC. * * Copyright (c) 2001 M. R. Brown <mr...@0x...> * * This code is based on both setup_hd64465.c and setup_ec3104.c, by * Greg Banks and Philipp Rumpf, respectively. */ /* * This a preliminary PowerVR2DC interrupt handling mechanism. NOTE: This code * needs *MAJOR* testing. I need to make sure the "bitfield" semantics are correct, * and that powervr2dc_irq_demux() does what it's intended to. */ #include <linux/config.h> #include <linux/sched.h> #include <linux/kernel.h> #include <linux/param.h> #include <linux/interrupt.h> #include <linux/init.h> #include <linux/irq.h> #include <linux/time.h> #include <linux/types.h> #include <asm/io.h> #include <asm/irq.h> #include <asm/powervr2dc.h> #include <asm/aica.h> /* * The AICA RTC routines are in here because there isn't really a proper * place for them, based on what they're needed for (they serve two purposes, * RTC manipulation and timer calibration). There isn't even enough for a * full-fledged "misc" driver, and there doesn't need to be. */ /* * The AICA RTC epoch is January 1st, 1950, so we need to add/subtract this * value to convert from/to the Unix epoch. */ #define TWENTY_YEARS 631152000 void dc_aica_rtc_gettimeofday(struct timeval *tv) { u32 secs; u32 val; do { secs = ((ctrl_inl(AICA_REG_RTCH) & 0xffff) << 16) | (ctrl_inl(AICA_REG_RTCL) & 0xffff); val = ((ctrl_inl(AICA_REG_RTCH) & 0xffff) << 16) | (ctrl_inl(AICA_REG_RTCL) & 0xffff); } while (secs != val); tv->tv_sec = secs - TWENTY_YEARS; tv->tv_usec = 0; } int dc_aica_rtc_settimeofday(const struct timeval *tv) { u32 val; u32 secs = tv->tv_sec + TWENTY_YEARS; do { ctrl_outl((secs >> 16) & 0xffff, AICA_REG_RTCH); ctrl_outl(secs & 0xffff, AICA_REG_RTCL); val = ((ctrl_inl(AICA_REG_RTCH) & 0xffff) << 16) | (ctrl_inl(AICA_REG_RTCL) & 0xffff); } while (secs != val); return 0; } /* PowerVR2DC Interrupt-handling */ /* Hmm, I treat the IPR/IMR as a giant bitfield (96 bits) as each interrupt is * masked/acknowledged by a single bit position. */ static inline void disable_powervr2dc_irq(unsigned int irq) { clear_bit(irq, (volatile unsigned long *)PVR2DC_REG_IMRA); } static inline void enable_powervr2dc_irq(unsigned int irq) { set_bit(irq, (volatile unsigned long *)PVR2DC_REG_IMRA); } /* * To acknowledge an interrupt, we write back the mask onto the IPR* * registers. You can actually acknowledge as many or as few interrupts * as you like, but we only handle one request here. */ static void ack_powervr2dc_irq(unsigned int irq) { set_bit(irq, (volatile unsigned long *)PVR2DC_REG_IPRA); } /* XXX: These next three were done pretty blindly */ static void end_powervr2dc_irq(unsigned int irq) { enable_powervr2dc_irq(irq); } static unsigned int startup_powervr2dc_irq(unsigned int irq) { enable_powervr2dc_irq(irq); return 0; } static void shutdown_powervr2dc_irq(unsigned int irq) { disable_powervr2dc_irq(irq); } static struct hw_interrupt_type powervr2dc_int = { typename: "PowerVR2DC", startup: startup_powervr2dc_irq, shutdown: shutdown_powervr2dc_irq, enable: enable_powervr2dc_irq, disable: disable_powervr2dc_irq, ack: ack_powervr2dc_irq, end: end_powervr2dc_irq, }; /* Just to satisfy my own curiosities :) */ static void powervr2dc_interrupt(int irq, void *dev_id, struct pt_regs *regs) { printk(KERN_INFO "PowerVR2DC: spurious interrupt, IPRA: %08x IPRB: %08x IPRC: %08x" "IMRA: %08x IMRB: %08x IMRC: %08x\n", ctrl_inl(PVR2DC_REG_IPRA), ctrl_inl(PVR2DC_REG_IPRB), ctrl_inl(PVR2DC_REG_IPRC), ctrl_inl(PVR2DC_REG_IMRA), ctrl_inl(PVR2DC_REG_IMRB), ctrl_inl(PVR2DC_REG_IMRC)); } static struct irqaction irq9 = { powervr2dc_interrupt, SA_INTERRUPT, 0, "PowerVR2DC", NULL, NULL }; /* * That handy bitfield again. To demux IRQ9, just find the first non-zero bit * to use as the source. There's only one problem: if you get multiple interrupt * sources per IRQ, how do you demux those? */ /* XXX: Need to make sure all int. sources are being handled per IRQ! Is this * handled in irq.c:handle_IRQ_event()/do_IRQ() ? */ int powervr2dc_irq_demux(int irq) { if (irq == PVR2DC_IRQ) { u32 i = 0, bit; u32 ipr, req; /* Brute force scan each int. pending register. * This also needs fixing. */ for (ipr = PVR2DC_REG_IPRA ; ipr <= PVR2DC_REG_IPRC ; ipr += 4) { req = ctrl_inl(ipr); for (bit = 1 ; i < PVR2DC_IRQ_NUM ; bit <<= 1, i++) if (req & bit) goto found; } found: if (i < PVR2DC_IRQ_NUM) irq = PVR2DC_IRQ_BASE + i; } return irq; } int __init setup_powervr2dc(void) { int i; int ver_major, ver_minor; if (!MACH_DREAMCAST) { printk("!MACH_DREAMCAST\n"); return 0; } for (i = PVR2DC_IRQ_BASE; i < PVR2DC_IRQ_BASE + PVR2DC_IRQ_NUM; i++) irq_desc[i].handler = &powervr2dc_int; ver_major = (ctrl_inl(PVR2DC_REG_VERSION) >> 4) & 0x0f; ver_minor = ctrl_inl(PVR2DC_REG_VERSION) & 0x0f; /* XXX: What other initialization needs to be done (besides interrupts)? */ printk("Initializing PowerVR2DC v%d.%d at 0x%08x (interrupts on IRQ %d, %d total)\n", ver_major, ver_minor, PVR2DC_BASE, PVR2DC_IRQ, PVR2DC_IRQ_NUM); setup_irq(PVR2DC_IRQ, &irq9); /* Mask all interrupts. */ ctrl_outl(0, PVR2DC_REG_IMRA); ctrl_outl(0, PVR2DC_REG_IMRB); ctrl_outl(0, PVR2DC_REG_IMRC); /* Acknowledge any previous interrupts */ ctrl_inl(PVR2DC_REG_IPRA); ctrl_outl(0xffffffff, PVR2DC_REG_IPRA); ctrl_inl(PVR2DC_REG_IPRB); ctrl_outl(0xffffffff, PVR2DC_REG_IPRB); ctrl_inl(PVR2DC_REG_IPRC); ctrl_outl(0xffffffff, PVR2DC_REG_IPRC); return 0; } module_init(setup_powervr2dc); Index: Makefile =================================================================== RCS file: /cvsroot/linuxdc/linux/arch/sh/kernel/Makefile,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** Makefile 2001/02/09 16:27:14 1.3 --- Makefile 2001/02/21 15:22:11 1.4 *************** *** 53,57 **** obj-$(CONFIG_SH_DMIDA) += mach_dmida.o obj-$(CONFIG_SH_EC3104) += setup_ec3104.o io_ec3104.o mach_ec3104.o ! obj-$(CONFIG_SH_DREAMCAST) += mach_dc.o setup_dc.o io_dc.o ifeq ($(CONFIG_SH_GENERIC),y) --- 53,57 ---- obj-$(CONFIG_SH_DMIDA) += mach_dmida.o obj-$(CONFIG_SH_EC3104) += setup_ec3104.o io_ec3104.o mach_ec3104.o ! obj-$(CONFIG_SH_DREAMCAST) += mach_dreamcast.o setup_powervr2dc.o io_powervr2dc.o ifeq ($(CONFIG_SH_GENERIC),y) |
From: M. R. B. <mr...@us...> - 2001-02-21 15:21:11
|
Update of /cvsroot/linuxdc/linux/arch/sh In directory usw-pr-cvs1:/tmp/cvs-serv1015 Modified Files: config.in Log Message: Added initial Dreamcast PowerVR2DC and hardware support Index: config.in =================================================================== RCS file: /cvsroot/linuxdc/linux/arch/sh/config.in,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** config.in 2001/02/09 16:27:14 1.3 --- config.in 2001/02/21 15:22:11 1.4 *************** *** 41,45 **** BareCPU CONFIG_SH_UNKNOWN" Generic ! define_bool CONFIG_SH_RTC y if [ "$CONFIG_SH_HP620" = "y" -o "$CONFIG_SH_HP680" = "y" -o \ --- 41,49 ---- BareCPU CONFIG_SH_UNKNOWN" Generic ! if [ "$CONFIG_SH_DREAMCAST" = "y" ]; then ! define_bool CONFIG_SH_RTC n ! else ! define_bool CONFIG_SH_RTC y ! fi if [ "$CONFIG_SH_HP620" = "y" -o "$CONFIG_SH_HP680" = "y" -o \ *************** *** 85,89 **** define_hex CONFIG_MEMORY_START 02000000 else ! hex 'Physical memory start address' CONFIG_MEMORY_START 08000000 fi fi --- 89,97 ---- define_hex CONFIG_MEMORY_START 02000000 else ! if [ "$CONFIG_SH_DREAMCAST" = "y" ]; then ! define_hex CONFIG_MEMORY_START 0c010000 ! else ! hex 'Physical memory start address' CONFIG_MEMORY_START 08000000 ! fi fi fi |
From: M. R. B. <mr...@us...> - 2001-02-21 15:17:52
|
Update of /cvsroot/linuxdc/linux/include/asm-sh In directory usw-pr-cvs1:/tmp/cvs-serv302 Modified Files: rtc.h io.h irq.h Added Files: aica.h io_powervr2dc.h powervr2dc.h Log Message: Added initial Dreamcast PowerVR2DC and hardware support --- NEW FILE --- /* include/asm-sh/aica.h * * Hardware register definitions for the Yamaha AICA hardware found in the * Dreamcast. * * Copyright (c) 2001 M. R. Brown <mr...@0x...> * */ #ifndef __ASM_AICA_H #define __ASM_AICA_H #define AICA_BASE 0xa0700000 #define AICA_RAM 0xa0800000 /* RTC registers */ #define AICA_REG_RTCH 0xa0710000 #define AICA_REG_RTCL 0xa0710004 #endif /* __ASM_AICA_H */ --- NEW FILE --- /* include/asm-sh/io_powervr2dc.h * * Copyright (c) 2001 M. R. Brown <mr...@0x...> * * Adapted from io_ec3104.h by Philipp Rumpf * * I/O definitions for the NEC PowerVR2 DC System ASIC. * * Since most of anything DC-related goes out through the PowerVR2DC * chip (DMA, on-board peripherals, etc.), this is pivotal to a solid * Dreamcast port. */ #ifndef _ASM_SH_IO_POWERVR2DC_H #define _ASM_SH_IO_POWERVR2DC_H #include <asm/io_generic.h> #include <linux/types.h> /* Not implemented quite yet. */ /* extern unsigned char powervr2dc_inb(unsigned long port); extern unsigned short powervr2dc_inw(unsigned long port); extern unsigned int powervr2dc_inl(unsigned long port); extern void powervr2dc_outb(unsigned char value, unsigned long port); extern void powervr2dc_outw(unsigned short value, unsigned long port); extern void powervr2dc_outl(unsigned int value, unsigned long port); */ /* The mysterious IRQ9 */ extern int powervr2dc_irq_demux(int irq); #ifdef __WANT_IO_DEF # define __inb generic_inb # define __inw generic_inw # define __inl generic_inl # define __outb generic_outb # define __outw generic_outw # define __outl generic_outl # define __inb_p generic_inb # define __inw_p generic_inw # define __inl_p generic_inl # define __outb_p generic_outb # define __outw_p generic_outw # define __outl_p generic_outl # define __insb generic_insb # define __insw generic_insw # define __insl generic_insl # define __outsb generic_outsb # define __outsw generic_outsw # define __outsl generic_outsl # define __readb generic_readb # define __readw generic_readw # define __readl generic_readl # define __writeb generic_writeb # define __writew generic_writew # define __writel generic_writel /* This may change soon... */ # define __isa_port2addr generic_isa_port2addr # define __ioremap generic_ioremap # define __ioremap_nocache generic_ioremap_nocache # define __iounmap generic_iounmap #endif #endif /* _ASM_SH_IO_POWERVR2DC_H */ --- NEW FILE --- /* include/asm-sh/powervr2dc.h * * Hardware register definitions for the Dreamcast PowerVR2DC ASIC. * * Copyright (c) 2001 M. R. Brown <mr...@0x...> * * The PowerVR2DC System ASIC (P/N SEGA 315-6201) is responsible for most of * the Dreamcast's peripheral I/O, whether it be DMA, interrupts, FIFOs, etc. I've * seen the entire architecture referred to as the "G2 bus", but I'm not quite sure * which components represent the G2 bus and which are seperate (read: I don't know * what the G2 bus is or where it's located). For this reason, my sources assume * everything is done by the PowerVR2DC, hence the naming convention. One exception * to this rule is the Yamaha AICA system (see aica.h). I'm assuming that the AICA * participates on the G2 bus (as it has G2 DMA, possible interrupts, etc.), but it's * big enough to warrant is own section. * */ #ifndef __ASM_POWERVR2DC_H #define __ASM_POWERVR2DC_H #define PVR2DC_BASE 0xa05f0000 /* PowerVR2DC interrupts are multiplexed on IRQ9 */ #define PVR2DC_IRQ 9 #define PVR2DC_IRQ_BASE 64 /* * There are three known PowerVR2DC interrupt source/mask registers, ranging from * a05f6900-6908 for source and a05f6930-6938 for masks. Each bit corresponds to an * individual interrupt. Because of this, we can represent those continguous * registers as a bitmap, and this means that there's possibly 96 interrupt sources * (there could be more than that!). */ #define PVR2DC_IRQ_NUM 96 /* Interrupt Pending Registers */ #define PVR2DC_REG_IPRA 0xa05f6900 #define PVR2DC_REG_IPRB 0xa05f6904 #define PVR2DC_REG_IPRC 0xa05f6908 /* Interrupt Mask Registers */ #define PVR2DC_REG_IMRA 0xa05f6930 #define PVR2DC_REG_IMRB 0xa05f6934 #define PVR2DC_REG_IMRC 0xa05f6938 /* Partial mapping of interrupts */ /* 6900/6930 */ #define PVR2DC_INT_TAUNK0 (PVR2DC_IRQ_BASE + 0) /* unknown .. TA rendering? */ #define PVR2DC_INT_TAUNK1 (PVR2DC_IRQ_BASE + 1) /* unknown .. TA rendering? */ #define PVR2DC_INT_RNDRC (PVR2DC_IRQ_BASE + 2) /* TA: render completion */ #define PVR2DC_INT_SCAN1 (PVR2DC_IRQ_BASE + 3) /* scanline trigger #1 */ #define PVR2DC_INT_SCAN2 (PVR2DC_IRQ_BASE + 4) /* scanline trigger #2 */ #define PVR2DC_INT_VBL (PVR2DC_IRQ_BASE + 5) /* vertical retrace */ #define PVR2DC_INT_OLQC (PVR2DC_IRQ_BASE + 7) /* opaque list q. completion */ #define PVR2DC_INT_OLMQC (PVR2DC_IRQ_BASE + 8) /* " " modifier " " */ #define PVR2DC_INT_TLQC (PVR2DC_IRQ_BASE + 9) /* transparent list q. compl. */ #define PVR2DC_INT_TLMQC (PVR2DC_IRQ_BASE + 10) /* " " modifier " " */ #define PVR2DC_INT_PTLQC (PVR2DC_IRQ_BASE + 21) /* punch-thru list q. compl. */ /* 6904/6934 */ #define PVR2DC_INT_GDIOC (PVR2DC_IRQ_BASE + 32) /* GD-ROM I/O completion */ /* 6908/6938 */ #define PVR2DC_INT_PRIMEM (PVR2DC_IRQ_BASE + 66) /* out of primitive memory */ #define PVR2DC_INT_PPBMEM (PVR2DC_IRQ_BASE + 67) /* out of PP-block memory */ /* Misc. registers */ /* PowerVR2DC version */ #define PVR2DC_REG_VERSION 0xa05f8004 #endif /* __ASM_POWERVR2DC_H */ Index: rtc.h =================================================================== RCS file: /cvsroot/linuxdc/linux/include/asm-sh/rtc.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -r1.1.1.1 -r1.2 *** rtc.h 2001/02/09 12:07:25 1.1.1.1 --- rtc.h 2001/02/21 15:18:50 1.2 *************** *** 2,5 **** --- 2,7 ---- #define _ASM_RTC_H + #include <linux/config.h> + #include <asm/machvec.h> *************** *** 7,12 **** --- 9,19 ---- #define rtc_settimeofday sh_mv.mv_rtc_settimeofday + #if defined(CONFIG_SH_RTC) extern void sh_rtc_gettimeofday(struct timeval *tv); extern int sh_rtc_settimeofday(const struct timeval *tv); + #elif defined(CONFIG_SH_DREAMCAST) + extern void dc_aica_rtc_gettimeofday(struct timeval *tv); + extern int dc_aica_rtc_settimeofday(const struct timeval *tv); + #endif #endif /* _ASM_RTC_H */ Index: io.h =================================================================== RCS file: /cvsroot/linuxdc/linux/include/asm-sh/io.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** io.h 2001/02/09 16:28:28 1.3 --- io.h 2001/02/21 15:18:50 1.4 *************** *** 121,125 **** # include <asm/io_ec3104.h> # elif defined(CONFIG_SH_DREAMCAST) ! # include <asm/io_dc.h> # elif defined(CONFIG_SH_CAT68701) # include <asm/io_cat68701.h> --- 121,125 ---- # include <asm/io_ec3104.h> # elif defined(CONFIG_SH_DREAMCAST) ! # include <asm/io_powervr2dc.h> # elif defined(CONFIG_SH_CAT68701) # include <asm/io_cat68701.h> Index: irq.h =================================================================== RCS file: /cvsroot/linuxdc/linux/include/asm-sh/irq.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** irq.h 2001/02/09 16:28:28 1.3 --- irq.h 2001/02/21 15:18:50 1.4 *************** *** 136,139 **** --- 136,141 ---- # elif defined (CONFIG_SH_EC3104) # define OFFCHIP_NR_IRQS 16 + # elif defined (CONFIG_SH_DREAMCAST) + # define OFFCHIP_NR_IRQS 96 # else # define OFFCHIP_NR_IRQS 0 *************** *** 286,289 **** --- 288,296 ---- extern int cat68701_irq_demux(int irq); #define irq_demux cat68701_irq_demux + + #elif defined(CONFIG_SH_DREAMCAST) + + extern int powervr2dc_irq_demux(int irq); + #define irq_demux powervr2dc_irq_demux #else |