~ [ source navigation ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/arch/m68k/q40/

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Name Size Last modified (GMT) Description
Back Parent directory 2001-01-04 21:00:55
File Makefile 394 bytes 2000-12-29 22:07:20
File README 5272 bytes 2000-11-28 01:11:26
C file config.c 11524 bytes 2000-11-28 01:57:34
C file q40ints.c 13375 bytes 2000-11-28 01:11:26

  1 Linux for the Q40
  2 =================
  3 
  4 You may try http://www.geocities.com/SiliconValley/Bay/2602/ for
  5 some up to date information. Booter and other tools will be also
  6 available from this place and ftp.uni-erlangen.de/linux/680x0/q40/
  7 and mirrors.
  8 
  9 Hints to documentation usually refer to the linux source tree in
 10 /usr/src/linux/Documentation unless URL given.
 11 
 12 It seems IRQ unmasking can't be safely done on a Q40. Autoprobing is 
 13 not yet implemented - do not try it! (See below)
 14 
 15 For a list of kernel commandline options read the documentation for the
 16 particular device drivers.
 17 
 18 The floppy imposes a very high interrupt load on the CPU, approx 30K/s.
 19 When something blocks interrupts (HD) it will loose some of them, so far 
 20 this is not known to have caused any data loss. On hihgly loaded systems
 21 it can make the floppy very slow or practicaly stop. Other Q40 OS' simply 
 22 poll the floppy for this reason - something that can't be done in Linux.
 23 Only possible cure is getting a 82072 contoler with fifo instead of 
 24 the 8272A
 25 
 26 drivers used by the Q40, appart from the very obvious (console etc.):
 27         drivers/char/q40_keyb.c         # use PC keymaps for national keyboards
 28                      serial.c           # normal PC driver - any speed
 29                      lp.c               # printer driver
 30                 char/joystick/*         # most of this should work
 31                 block/q40ide.c          # startup for ide
 32                       ide*              # see Documentation/ide.txt
 33                       floppy.c          # normal PC driver, DMA emu in asm/floppy.h
 34                                         # and arch/m68k/kernel/entry.S
 35                                         # see drivers/block/README.fd
 36                 video/q40fb.c
 37                 misc/parport_pc.c
 38 
 39 Various other PC drivers can be enabled simply by adding them to 
 40 arch/m68k/config.in, especially 8 bit devices should be without any
 41 problems. For cards using 16bit io/mem more care is required, like 
 42 checking byteorder issues, hacking memcpy_*_io etc.
 43 
 44 
 45 Debugging
 46 =========
 47 
 48 Upon startup the kernel will usually output "ABCQGHIJ" into the SRAM, 
 49 preceded by the booter signature. This is a trace just in case something 
 50 went wrong during earliest setup stages. 
 51 **Changed** to preserve SRAM contents by default, this is only done when 
 52 requested - SRAM must start with '%LX$' signature to do this. '-d' option 
 53 to 'lxx' loader enables this.
 54 
 55 SRAM can also be used as additional console device, use debug=mem.
 56 This will save kernel startup msgs into SRAM, the screen will display 
 57 only the penguin - and shell prompt if it gets that far..
 58 
 59 Serial console works and can also be used for debugging, see loader_txt
 60 
 61 Most problems seem to be caused by fawlty or badly configured io-cards or 
 62 harddrives anyway..there are so many things that can go wrong here.
 63 Make sure to configure the parallel port as SPP for first testing..the
 64 Q40 may have trouble with parallel interrupts.
 65 
 66 
 67 Q40 Hardware Description
 68 ========================
 69 
 70 This is just an overview, see asm-m68k/* for details ask if you have any 
 71 questions.
 72 
 73 The Q40 consists of a 68040@40 MHz, 1MB video RAM, up to 32MB RAM, AT-style
 74 keyboard interface, 1 Programmable LED, 2 8bit DACs and up to 1MB ROM, 1MB
 75 shadow ROM.
 76 
 77 Most interfacing like floppy, hd, serial, parallel ports is done via ISA 
 78 slots. The ISA io and mem range is mapped (sparse&byteswapped!) into separate 
 79 regions of the memory.
 80 The main interrupt register IIRQ_REG will indicate whether an IRQ was internal 
 81 or from some ISA devices, EIRQ_REG can distinguish up to 8 ISA IRQs.
 82 
 83 The Q40 custom chip is programmable to provide 2 periodic timers:
 84         - 50 or 200 Hz - level 2,
 85         - 10 or 20 KHz - level 4 
 86   !!THIS CANT BE DISABLED!!
 87 
 88 Linux uses the 200 Hz interrupt for timer and beep by default.
 89 
 90 
 91 Interrupts
 92 ==========
 93 
 94 q40 master chip handles only level triggered interrupts :-((
 95 
 96 IRQ sharing is not yet implemented but this should be only a minor
 97 problem..
 98 
 99 Linux has some requirements wrt interrupt architecture, these are
100 to my knowledge:
101         (a) interrupt handler must not be reentered even when sti() is called
102             from within handler
103         (b) working enable/disable_irq
104 
105 Luckily these requirements are only important for drivers shared
106 with other architectures - ide,serial,parallel, ethernet..
107 q40ints.c now contains a trivial hack for (a), (b) is more difficult
108 because only irq's 4-15 can be disabled - and only all o them at once.
109 Thus disable_irq() can effectively block the machine if the driver goes
110 asleep.
111 One thing to keep in minde when hacking around the interrupt code is 
112 that there is no way to find out which IRQ caused a request.
113 
114 Keyboard
115 ========
116 
117 q40 receives AT make/break codes from the keyboard, these are translated to
118 the PC scancodes x86 Linux uses. So by theory every national keyboard should
119 work just by loading the apropriate x86 keytable - see any national-HOWTO.
120 
121 Unfortunately the AT->PC translation isn't quite trivial and even worse, my 
122 documentation of it is absolutely minimal - thus some exotic keys may not 
123 behave exactly as expected.
124 
125 There is still hope that it can be fixed completely though. If you encounter 
126 problems, email me idealy this:
127         - exact keypress/release sequence
128         - 'showkey -s' run on q40, non-X session
129         - 'showkey -s' run on a PC, non-X session
130         - AT codes as displayed by the q40 debuging ROM
131 btw if the showkey output from PC and Q40 doesn't differ then you have some
132 classic configuration problem - don't send me anything in this case
133 

~ [ source navigation ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.