README revision 1.1
11.1SbriggsOverview
21.1Sbriggs
31.1SbriggsThis is a port to the Motorola "SandPoint" evaluation system.  The
41.1SbriggsSandPoint is the successor to the "Yellowknife" system.  The system
51.1Sbriggscan be fitted with different PMCs (Processor Mezzanine Cards).  This
61.1Sbriggsport is specifically for the rev X2 motherboard system with the PPC
71.1Sbriggs8240 PMC rev X4 installed.
81.1Sbriggs
91.1SbriggsAll references (cf) listed here are for the MPC8240 Integrated Processor
101.1SbriggsUser's Manual.
111.1Sbriggs
121.1Sbriggs
131.1Sbriggs
141.1SbriggsSandPoint Hardware Configuration
151.1Sbriggs
161.1SbriggsThis port was developed on a Sandpoint X2 motherboard with a Unity X4 PMC.
171.1Sbriggs
181.1SbriggsThis port assumes that the jumpers are set as follows:
191.1Sbriggs	S3/S4	- Mode 1: PMC w/o IDE (switches opposite, one nearest PCI
201.1Sbriggs		  slot toward near edge)
211.1Sbriggs	S5	- Interrupt to PMC normal (switch toward near edge)
221.1Sbriggs	S6	- Local I/O shared with slot 2 (switch toward near edge)
231.1Sbriggs
241.1SbriggsMode 0 (PMC w/ IDE) does not appear to work right with ISA interrupts.  The
251.1Sbriggsinterrupts from the Winbond chip do not appear at the PMC.
261.1Sbriggs
271.1SbriggsOn the PPMC, we assume a 100MHz clock.
281.1Sbriggson PPMC: (C == closed, or "on")
291.1Sbriggs    SW2:
301.1Sbriggs	C	ROM on PCI bus (DINK32 on mainboard)
311.1Sbriggs	-	Map "B": CHRP
321.1Sbriggs	C	Motorola PPMC
331.1Sbriggs	C	Wait for initialization (peripheral mode)
341.1Sbriggs	-	Program mode: Normal mode
351.1Sbriggs	-	Select normal ROM
361.1Sbriggs	-	33 MHz only
371.1Sbriggs	-	COP only resets local CPU/MPC107
381.1Sbriggs    SW3:
391.1Sbriggs	-C--C	PCI 33, Mem 66, PPC 266
401.1Sbriggs	--	0.5 - 0.9 ns PCI hold time
411.1Sbriggs	C	25 ohm PCI drive strength
421.1Sbriggs
431.1Sbriggs
441.1SbriggsAddress Map
451.1Sbriggs
461.1SbriggsFor this port, we choose the "Address Map B" (CHRP-compatible) for the
471.1Sbriggssystem (see SW2, #2, above):
481.1Sbriggs
491.1Sbriggs (Processor View)
501.1Sbriggs0000 0000   0009 FFFF	System Memory
511.1Sbriggs000A 0000   000F FFFF	Compatibility Hole (programmable to go to PCI space
521.1Sbriggs			or system memory--programmed for system memory--cf 5.8)
531.1Sbriggs0010 0000   3FFF FFFF	System memory
541.1Sbriggs4000 0000   7FFF FFFF	Reserved (programmed to give a memory select
551.1Sbriggs			error if accessed--cf 5.7.2)
561.1Sbriggs8000 0000   FCFF FFFF	PCI memory space
571.1SbriggsFD00 0000   FDFF FFFF	PCI/ISA memory space (see 5.8, CPU_FD_ALIAS_EN)
581.1SbriggsFE00 0000   FE7F FFFF	PCI/ISA I/O space (Forwarded to PCI address space
591.1Sbriggs			with high byte zeroed, but FE01 0000 and up are
601.1Sbriggs			reserved)
611.1SbriggsFE80 0000   FEBF FFFF	PCI I/O space (Forwarded to PCI I/O space with high
621.1Sbriggs			byte zeroed)
631.1SbriggsFEC0 0000   FEDF FFFF	PCI configuration address register (Each word in this
641.1Sbriggs			range is aliased to the PCI CONFIG_ADDR register)
651.1SbriggsFEE0 0000   FEEF FFFF	PCI configuration data register (Each word in this
661.1Sbriggs			range is aliased to the PCI CONFIG_DATA register)
671.1SbriggsFEF0 0000   FEFF FFFF	PCI interrupt acknowledge
681.1SbriggsFF00 0000   FF7F FFFF	32- or 64-bit Flash/ROM space (Can hit either local
691.1Sbriggs			memory or PCI bus -- cf. 5.6)
701.1SbriggsFF80 0000   FFFF FFFF	8-, 32- or 64-bit Flash/ROM space (Can hit either
711.1Sbriggs			local memory or PCI bus -- cf. 5.6)
721.1Sbriggs
731.1SbriggsThis is a host-mode port, so the inbound and output translation windows
741.1Sbriggsare unused.
751.1Sbriggs
761.1SbriggsThe Embedded Utilities Memory Block (EUMB) is set to be 1M below the end
771.1Sbriggsof the PCI memory space: FCF0 0000, so EUMBBAR is FCF0 0000, giving us
781.1Sbriggs
791.1SbriggsMessage unit (I2O) base	: FCF0 0000	(cf. 10.2, 10.2.3, 10.3)
801.1SbriggsDMA base		: FCF0 1000	(cf. 9.2)
811.1SbriggsATU base		: FCF0 2000	(cf. 4.3.3)
821.1SbriggsI2C base		: FCF0 3000	(cf. 11.3)
831.1SbriggsEPIC base		: FCF4 0000	(cf. 12.2)
841.1Sbriggs
851.1Sbriggs
861.1Sbriggs
871.1SbriggsBoot Information
881.1Sbriggs
891.1SbriggsThe SandPoint ships with the Motorola DINK32 ROM.  This is a rather
901.1Sbriggsbasic ROM with only serial-download (S-Record) capability for
911.1Sbriggsloading the kernel.  Basically, the kernel is loaded to a specified
921.1Sbriggsaddress and you jump to it.  The ROM takes care of initializing
931.1Sbriggsthe MICRs and MCCRs.  There is really no boot information to pass.
941.1Sbriggs
951.1SbriggsIt would be nice to have a much more complete ROM interface, allowing
961.1Sbriggssettings for, say, bootp/tftp boot, automatic boot, and persistent
971.1Sbriggssettings (for console rate, auto boot, bootp, etc), and that might
981.1Sbriggsbe provided at some point, but that's not available as of this
991.1Sbriggswriting.
1001.1Sbriggs
1011.1SbriggsSo, the kernel is hard-coded to boot w/ 64MB for now.
1021.1Sbriggs
1031.1Sbriggs
1041.1Sbriggs
1051.1SbriggsInterrupt Configuration
1061.1Sbriggs
1071.1SbriggsThe 8240 has the internal EPIC.  For the SandPoint, the EPIC is programmed
1081.1Sbriggsin mixed-mode (GCR) with direct interrupts (EICR).  With this configuration,
1091.1Sbriggsthere are 13 available interrupts:
1101.1Sbriggs	4 global timers
1111.1Sbriggs	5 direct IRQs
1121.1Sbriggs		IRQ0 - PCI Slot #0 INTA#
1131.1Sbriggs		IRQ1 - PCI Slot #1 INTA# / shared with WinBond I/O
1141.1Sbriggs		IRQ2 - PCI Slot #2 INTA#
1151.1Sbriggs		IRQ3 - PCI Slot #3 INTA#
1161.1Sbriggs		IRQ4 - On-PPMC 16552 interrupt (Unity X2)
1171.1Sbriggs		IRQ4 - pulled down w/ resistor (Unity X4)
1181.1Sbriggs	4 internal interrupts
1191.1Sbriggs		I2C
1201.1Sbriggs		DMA Ch0
1211.1Sbriggs		DMA Ch1
1221.1Sbriggs		I2O message unit
1231.1Sbriggs
1241.1SbriggsThe SandPoint can run in one of 4 interrupt modes:
1251.1Sbriggs  0 - PMC host with IDE (3.3v PCI slots are unavailable)
1261.1Sbriggs  1 - PMC host w/o IDE (all PCI slots are available)
1271.1Sbriggs  2 - PMC agent, Winbond providing arbitration & interrupt to INTA# on PMC
1281.1Sbriggs  3 - Yellowknife mode--just like #2, except drives INTA# on 4th PCI slot
1291.1Sbriggs
1301.1SbriggsWe choose to run in mode 1 as Motorola recommends modes 0 or 1 for
1311.1Sbriggsall new development.  Unfortunately, mode 0 does not appear to
1321.1Sbriggswork--"ISA" interrupts are lost.  In this mode, with interrupts
1331.1Sbriggsrouted to PCI slot 3, we have to check for both a Winbond (ISA)
1341.1Sbriggsinterrupt, and a PCI slot interrupt.  So basically, we have a
1351.1Sbriggstwo-level interrupt configuration for Winbond interrupts.  The ISA
1361.1Sbriggsbus attachment registers an interrupt for PCI slot 3 with its own
1371.1Sbriggsinterrupt handler.  Drivers for ISA devices on the Winbond will
1381.1Sbriggsregister interrupts with the ISA interrupt handler.  The sticky
1391.1Sbriggspart of this is how to deal with one global interrupt priority.
1401.1Sbriggs
1411.1Sbriggs
142