diff options
Diffstat (limited to 'ANDROID_3.4.5/arch/m68k/q40/README')
-rw-r--r-- | ANDROID_3.4.5/arch/m68k/q40/README | 138 |
1 files changed, 0 insertions, 138 deletions
diff --git a/ANDROID_3.4.5/arch/m68k/q40/README b/ANDROID_3.4.5/arch/m68k/q40/README deleted file mode 100644 index 93f4c4cd..00000000 --- a/ANDROID_3.4.5/arch/m68k/q40/README +++ /dev/null @@ -1,138 +0,0 @@ -Linux for the Q40 -================= - -You may try http://www.geocities.com/SiliconValley/Bay/2602/ for -some up to date information. Booter and other tools will be also -available from this place or http://ftp.uni-erlangen.de/pub/unix/Linux/680x0/q40/ -and mirrors. - -Hints to documentation usually refer to the linux source tree in -/usr/src/linux/Documentation unless URL given. - -It seems IRQ unmasking can't be safely done on a Q40. IRQ probing -is not implemented - do not try it! (See below) - -For a list of kernel command-line options read the documentation for the -particular device drivers. - -The floppy imposes a very high interrupt load on the CPU, approx 30K/s. -When something blocks interrupts (HD) it will lose some of them, so far -this is not known to have caused any data loss. On highly loaded systems -it can make the floppy very slow or practically stop. Other Q40 OS' simply -poll the floppy for this reason - something that can't be done in Linux. -Only possible cure is getting a 82072 controller with fifo instead of -the 8272A. - -drivers used by the Q40, apart from the very obvious (console etc.): - drivers/char/q40_keyb.c # use PC keymaps for national keyboards - serial.c # normal PC driver - any speed - lp.c # printer driver - genrtc.c # RTC - char/joystick/* # most of this should work, not - # in default config.in - block/q40ide.c # startup for ide - ide* # see Documentation/ide/ide.txt - floppy.c # normal PC driver, DMA emu in asm/floppy.h - # and arch/m68k/kernel/entry.S - # see drivers/block/README.fd - net/ne.c - video/q40fb.c - parport/* - sound/dmasound_core.c - dmasound_q40.c - -Various other PC drivers can be enabled simply by adding them to -arch/m68k/config.in, especially 8 bit devices should be without any -problems. For cards using 16bit io/mem more care is required, like -checking byte order issues, hacking memcpy_*_io etc. - - -Debugging -========= - -Upon startup the kernel will usually output "ABCQGHIJ" into the SRAM, -preceded by the booter signature. This is a trace just in case something -went wrong during earliest setup stages of head.S. -**Changed** to preserve SRAM contents by default, this is only done when -requested - SRAM must start with '%LX$' signature to do this. '-d' option -to 'lxx' loader enables this. - -SRAM can also be used as additional console device, use debug=mem. -This will save kernel startup msgs into SRAM, the screen will display -only the penguin - and shell prompt if it gets that far.. -Unfortunately only 2000 bytes are available. - -Serial console works and can also be used for debugging, see loader_txt - -Most problems seem to be caused by fawlty or badly configured io-cards or -hard drives anyway. -Make sure to configure the parallel port as SPP and remove IRQ/DMA jumpers -for first testing. The Q40 does not support DMA and may have trouble with -parallel ports version of interrupts. - - -Q40 Hardware Description -======================== - -This is just an overview, see asm-m68k/* for details ask if you have any -questions. - -The Q40 consists of a 68040@40 MHz, 1MB video RAM, up to 32MB RAM, AT-style -keyboard interface, 1 Programmable LED, 2x8bit DACs and up to 1MB ROM, 1MB -shadow ROM. -The Q60 has any of 68060 or 68LC060 and up to 128 MB RAM. - -Most interfacing like floppy, IDE, serial and parallel ports is done via ISA -slots. The ISA io and mem range is mapped (sparse&byteswapped!) into separate -regions of the memory. -The main interrupt register IIRQ_REG will indicate whether an IRQ was internal -or from some ISA devices, EIRQ_REG can distinguish up to 8 ISA IRQs. - -The Q40 custom chip is programmable to provide 2 periodic timers: - - 50 or 200 Hz - level 2, !!THIS CAN'T BE DISABLED!! - - 10 or 20 KHz - level 4, used for dma-sound - -Linux uses the 200 Hz interrupt for timer and beep by default. - - -Interrupts -========== - -q40 master chip handles only a subset of level triggered interrupts. - -Linux has some requirements wrt interrupt architecture, these are -to my knowledge: - (a) interrupt handler must not be reentered even when sti() is called - from within handler - (b) working enable/disable_irq - -Luckily these requirements are only important for drivers shared -with other architectures - ide,serial,parallel, ethernet. -q40ints.c now contains a trivial hack for (a), (b) is more difficult -because only irq's 4-15 can be disabled - and only all of them at once. -Thus disable_irq() can effectively block the machine if the driver goes -asleep. -One thing to keep in mind when hacking around the interrupt code is -that there is no way to find out which IRQ caused a request, [EI]IRQ_REG -displays current state of the various IRQ lines. - -Keyboard -======== - -q40 receives AT make/break codes from the keyboard, these are translated to -the PC scancodes x86 Linux uses. So by theory every national keyboard should -work just by loading the appropriate x86 keytable - see any national-HOWTO. - -Unfortunately the AT->PC translation isn't quite trivial and even worse, my -documentation of it is absolutely minimal - thus some exotic keys may not -behave exactly as expected. - -There is still hope that it can be fixed completely though. If you encounter -problems, email me ideally this: - - exact keypress/release sequence - - 'showkey -s' run on q40, non-X session - - 'showkey -s' run on a PC, non-X session - - AT codes as displayed by the q40 debugging ROM -btw if the showkey output from PC and Q40 doesn't differ then you have some -classic configuration problem - don't send me anything in this case - |