aboutsummaryrefslogtreecommitdiff
path: root/SrcShared/Palm/Platform/Core/Hardware/IncsPrv/M68VZ328Hwr.h
diff options
context:
space:
mode:
Diffstat (limited to 'SrcShared/Palm/Platform/Core/Hardware/IncsPrv/M68VZ328Hwr.h')
-rw-r--r--SrcShared/Palm/Platform/Core/Hardware/IncsPrv/M68VZ328Hwr.h844
1 files changed, 844 insertions, 0 deletions
diff --git a/SrcShared/Palm/Platform/Core/Hardware/IncsPrv/M68VZ328Hwr.h b/SrcShared/Palm/Platform/Core/Hardware/IncsPrv/M68VZ328Hwr.h
new file mode 100644
index 0000000..323b8c1
--- /dev/null
+++ b/SrcShared/Palm/Platform/Core/Hardware/IncsPrv/M68VZ328Hwr.h
@@ -0,0 +1,844 @@
+/*******************************************************************
+ * Pilot Software
+ *
+ * Copyright(c) 1995-1999, Palm Computing Inc., All Rights Reserved
+ *
+ *-------------------------------------------------------------------
+ * FileName:
+ * M68VZ328Hwr.h
+ *
+ * Description:
+ * Hardware Equates for the Motorola 68VZ328 Dragonball-VZ chip
+ *
+ * History:
+ * 11/19/99 EBE Created; integrated from M68EZ328Hwr.h
+ * 11/22/99 EBE Added Port Defs for J, K, & M
+ * 12/03/99 EBE Fixed up fillers @ 0x00A & 0x518
+ *
+ *******************************************************************/
+
+#ifdef NON_PORTABLE // So apps don't include this...
+
+
+#ifndef __M68VZ328HWR_H__
+#define __M68VZ328HWR_H__
+
+
+#include <PalmTypes.h> // Touchdown includes
+
+
+// Define location of the 68VZ328 Dragonball chip
+#define hwr68328Base 0xFFFFF000L // Base address of 68328
+
+
+/***********************************************************************
+ * Motorola 68VZ328 registers
+ ***********************************************************************/
+struct HwrM68VZ328Type {
+
+ UInt8 scr; // $000: System Control Register
+ UInt8 ___filler0[0x003-0x001];
+ UInt8 pcr; // $003: Peripheral Control Register
+ UInt8 chipID; // $004: Chip ID Register
+ UInt8 maskID; // $005: Mask ID Register
+ UInt16 swID; // $006: Software ID Register
+ UInt16 ioDriveControl; // $008: I/O Drive Control Register
+ UInt8 ___filler1[0x100-0x00A];
+
+ UInt16 csAGroupBase; // $100: Chip Select Group A Base Register
+ UInt16 csBGroupBase; // $102: Chip Select Group B Base Register
+ UInt16 csCGroupBase; // $104: Chip Select Group C Base Register
+ UInt16 csDGroupBase; // $106: Chip Select Group D Base Register
+
+ UInt16 csUGroupBase; // $108: Chip Select Upper Group Base Register
+
+ UInt16 csControl1; // $10A: Chip Select Control Register
+ UInt16 csControl2; // $10C: Chip Select Control Register
+
+ UInt8 ___filler2[0x110-0x10E];
+
+ UInt16 csASelect; // $110: Group A Chip Select Register
+ UInt16 csBSelect; // $112: Group B Chip Select Register
+ UInt16 csCSelect; // $114: Group C Chip Select Register
+ UInt16 csDSelect; // $116: Group D Chip Select Register
+
+ UInt16 emuCS; // $118: EMU Chip Select Register
+
+ UInt8 ___filler3[0x150-0x11A];
+
+ UInt16 csControl3; // $150: Chip Select Control Register
+
+ UInt8 ___filler3a[0x200-0x152];
+
+ UInt16 pllControl; // $200: PLL Control Register
+ UInt16 pllFreqSel; // $202: CGM Frequency Select Register
+
+ UInt8 ___filler4[0x207-0x204];
+
+ UInt8 pwrControl; // $207: Power Control Register
+
+ UInt8 ___filler5[0x300-0x208];
+
+ UInt8 intVector; // $300: Interrupt Vector Register
+ UInt8 ___filler6;
+ UInt16 intControl; // $302: Interrupt Control Register
+ UInt16 intMaskHi; // $304: Interrupt Mask Register/HIGH word
+ UInt16 intMaskLo; // $306: Interrupt Mask Register/LOW word
+ UInt8 ___filler7[0x30c-0x308];
+ UInt16 intStatusHi; // $30C: Interrupt Status Register/HIGH word
+ UInt16 intStatusLo; // $30E: Interrupt Status Register/LOW word
+ UInt16 intPendingHi; // $310: Interrupt Pending Register/HIGH word
+ UInt16 intPendingLo; // $312: Interrupt Pending Register/LOW word
+ UInt16 intLevelControl; // $314: Interrupt Level Control Register
+
+ UInt8 ___filler4a[0x400-0x316];
+
+ UInt8 portADir; // $400: Port A Direction Register
+ UInt8 portAData; // $401: Port A Data Register
+ UInt8 portAPullupEn; // $402: Port A Pullup Enable
+ UInt8 ___filler8[5];
+
+ UInt8 portBDir; // $408: Port B Direction Register
+ UInt8 portBData; // $409: Port B Data Register
+ UInt8 portBPullupEn; // $40A: Port B Pullup Enable
+ UInt8 portBSelect; // $40B: Port B Select Register
+
+ UInt8 ___filler9[4];
+
+ UInt8 portCDir; // $410: Port C Direction Register
+ UInt8 portCData; // $411: Port C Data Register
+ UInt8 portCPulldnEn; // $412: Port C Pulldown Enable
+ UInt8 portCSelect; // $413: Port C Select Register
+
+ UInt8 ___filler10[4];
+
+ UInt8 portDDir; // $418: Port D Direction Register
+ UInt8 portDData; // $419: Port D Data Register
+ UInt8 portDPullupEn; // $41A: Port D Pull-up Enable
+ UInt8 portDSelect; // $41B: Port D Select Register
+ UInt8 portDPolarity; // $41C: Port D Polarity Register
+ UInt8 portDIntReqEn; // $41D: Port D Interrupt Request Enable
+ UInt8 portDKbdIntEn; // $41E: Port D Keyboard Interrupt Enable
+ UInt8 portDIntEdge; // $41F: Port D IRQ Edge Register
+
+ UInt8 portEDir; // $420: Port E Direction Register
+ UInt8 portEData; // $421: Port E Data Register
+ UInt8 portEPullupEn; // $422: Port E Pull-up Enable
+ UInt8 portESelect; // $423: Port E Select Register
+
+ UInt8 ___filler14[4];
+
+ UInt8 portFDir; // $428: Port F Direction Register
+ UInt8 portFData; // $429: Port F Data Register
+ UInt8 portFPullupdnEn; // $42A: Port F Pull-up/down Enable
+ UInt8 portFSelect; // $42B: Port F Select Register
+
+ UInt8 ___filler16[4];
+
+ UInt8 portGDir; // $430: Port G Direction Register
+ UInt8 portGData; // $431: Port G Data Register
+ UInt8 portGPullupEn; // $432: Port G Pull-up Enable
+ UInt8 portGSelect; // $433: Port G Select Register
+
+ UInt8 ___filler17[0x438-0x434];
+
+ UInt8 portJDir; // $438: Port J Direction Register
+ UInt8 portJData; // $439: Port J Data Register
+ UInt8 portJPullupEn; // $43A: Port J Pull-up Enable
+ UInt8 portJSelect; // $43B: Port J Select Register
+
+ UInt8 ___filler18[0x440-0x43C];
+
+ UInt8 portKDir; // $440: Port K Direction Register
+ UInt8 portKData; // $441: Port K Data Register
+ UInt8 portKPullupdnEn; // $442: Port K Pull-up/down Enable
+ UInt8 portKSelect; // $443: Port K Select Register
+
+ UInt8 ___filler19[0x448-0x444];
+
+ UInt8 portMDir; // $448: Port M Direction Register
+ UInt8 portMData; // $449: Port M Data Register
+ UInt8 portMPullupdnEn; // $44A: Port M Pull-up/down Enable
+ UInt8 portMSelect; // $44B: Port M Select Register
+
+ UInt8 ___filler20[0x500-0x44C];
+
+ UInt16 pwmControl; // $500: PWM 1 Control Register (PWM 1 is the same as the single PWM in EZ)
+ UInt8 pwmSampleHi; // $502: PWM 1 Sample - high byte
+ UInt8 pwmSampleLo; // $503: PWM 1 Sample - low byte
+ UInt8 pwmPeriod; // $504: PWM 1 Period
+ UInt8 pwmCounter; // $505: PWM 1 Counter
+
+ UInt8 ___filler22[0x510-0x506];
+
+ UInt16 pwm2Control; // $510: PWM 2 Control Register
+ UInt16 pwm2Period; // $512: PWM 2 Period
+ UInt16 pwm2Width; // $514: PWM 2 Width
+ UInt16 pwm2Counter; // $516: PWM 2 Counter
+
+ UInt8 ___filler23[0x600-0x518];
+
+ UInt16 tmr1Control; // $600: Timer 1 Control Register
+ UInt16 tmr1Prescaler; // $602: Timer 1 Prescaler Register
+ UInt16 tmr1Compare; // $604: Timer 1 Compare Register
+ UInt16 tmr1Capture; // $606: Timer 1 Capture Register
+ UInt16 tmr1Counter; // $608: Timer 1 Counter Register
+ UInt16 tmr1Status; // $60A: Timer 1 Status Register
+
+ UInt8 ___filler24[0x610-0x60C];
+
+ UInt16 tmr2Control; // $610: Timer 2 Control Register
+ UInt16 tmr2Prescaler; // $612: Timer 2 Prescaler Register
+ UInt16 tmr2Compare; // $614: Timer 2 Compare Register
+ UInt16 tmr2Capture; // $616: Timer 2 Capture Register
+ UInt16 tmr2Counter; // $618: Timer 2 Counter Register
+ UInt16 tmr2Status; // $61A: Timer 2 Status Register
+
+ UInt8 ___filler25[0x700-0x61C];
+
+ UInt16 spiRxD; // $700: SPI Unit 1 Receive Data Register
+ UInt16 spiTxD; // $702: SPI Unit 1 Transmit Data Register
+ UInt16 spiCont1; // $704: SPI Unit 1 Control/Status Register
+ UInt16 spiIntCS; // $706: SPI Unit 1 Interrupt control/Status Register
+ UInt16 spiTest; // $708: SPI Unit 1 Test Register
+ UInt16 spiSpc; // $70A: SPI Unit 1 Sample period counter register
+
+ UInt8 ___filler26[0x800-0x70C];
+
+ UInt16 spiMasterData; // $800: SPI Unit 2 Data Register (SPI 2 is the same as the single SPI Master in EZ)
+ UInt16 spiMasterControl; // $802: SPI Unit 2 Control/Status Register
+
+ UInt8 ___filler27[0x900-0x804];
+
+ UInt16 uControl; // $900: Uart 1 Status/Control Register (Uart 1 is the same as the single Uart in EZ)
+ UInt16 uBaud; // $902: Uart 1 Baud Control Register
+ UInt16 uReceive; // $904: Uart 1 Receive Register
+ UInt16 uTransmit; // $906: Uart 1 Transmit Register
+ UInt16 uMisc; // $908: Uart 1 Miscellaneous Register
+ UInt16 uNonIntPresc; // $90A: Uart 1 Non-Integer Prescaler
+
+ UInt8 ___filler28[0x910-0x90C];
+
+ UInt16 u2Control; // $910: Uart 2 Status/Control Register
+ UInt16 u2Baud; // $912: Uart 2 Baud Control Register
+ UInt16 u2Receive; // $914: Uart 2 Receiver Register
+ UInt16 u2Transmit; // $916: Uart 2 Transmitter Register
+ UInt16 u2Misc; // $918: Uart 2 Miscellaneous Register
+ UInt16 u2NonIntPresc; // $91A: Uart 2 Non-Integer Prescaler
+ UInt16 u2FIFOHMark; // $91C: Uart 2 Half Mark FIFO Register
+
+ UInt8 ___filler28a[0xA00-0x91E];
+
+ UInt32 lcdStartAddr; // $A00: Screen Starting Address Register
+ UInt8 ___filler29;
+ UInt8 lcdPageWidth; // $A05: Virtual Page Width Register
+ UInt8 ___filler30[2];
+ UInt16 lcdScreenWidth; // $A08: Screen Width Register
+ UInt16 lcdScreenHeight; // $A0A: Screen Height Register
+ UInt8 ___filler31[0xA18-0xA0C];
+ UInt16 lcdCursorXPos; // $A18: Cursor X Position
+ UInt16 lcdCursorYPos; // $A1A: Cursor Y Position
+ UInt16 lcdCursorWidthHeight; // $A1C: Cursor Width and Height
+ UInt8 ___filler32;
+ UInt8 lcdBlinkControl; // $A1F: Blink Control Register
+ UInt8 lcdPanelControl; // $A20: Panel Interface Configuration Register
+ UInt8 lcdPolarity; // $A21: Polarity Config Register
+ UInt8 ___filler33;
+ UInt8 lcdACDRate; // $A23: ACD (M) Rate Control Register
+ UInt8 ___filler34;
+ UInt8 lcdPixelClock; // $A25: Pixel Clock Divider Register
+ UInt8 ___filler35;
+ UInt8 lcdClockControl; // $A27: Clocking Control Register
+// UInt8 ___filler36;
+ UInt16 lcdRefreshRateAdj; // $A28: Refresh Rate Adjustment Register
+ UInt8 ___filler37;
+ UInt8 lcdReserved1; // $A2B: Reserved
+ UInt8 ___filler38;
+ UInt8 lcdPanningOffset; // $A2D: Panning Offset Register
+
+ UInt8 ___filler39[0xA31-0xA2E];
+
+ UInt8 lcdFrameRate; // $A31: Frame Rate Control Modulation Register
+ UInt8 ___filler2004;
+ UInt8 lcdGrayPalette; // $A33: Gray Palette Mapping Register
+ UInt8 lcdReserved2; // $A34: Reserved
+ UInt8 ___filler2005;
+ UInt16 lcdContrastControlPWM; // $A36: Contrast Control
+ UInt8 lcdRefreshModeControl; // $A38: Refresh Mode Control Register
+ UInt8 lcdDMAControl; // $A39: DMA Control Register
+
+ UInt8 ___filler40[0xB00-0xA3a];
+
+ UInt32 rtcHourMinSec; // $B00: RTC Hours, Minutes, Seconds Register
+ UInt32 rtcAlarm; // $B04: RTC Alarm Register
+ UInt8 ___filler2001[0xB0A-0xB08];
+ UInt16 rtcWatchDog; // $B0A: RTC Watchdog Timer
+ UInt16 rtcControl; // $B0C: RTC Control Register
+ UInt16 rtcIntStatus; // $B0E: RTC Interrupt Status Register
+ UInt16 rtcIntEnable; // $B10: RTC Interrupt Enable Register
+ UInt16 stopWatch; // $B12: Stopwatch Minutes
+ UInt8 ___filler2002[0xB1A-0xB14];
+ UInt16 rtcDay; // $B1A: RTC Day
+ UInt16 rtcDayAlarm; // $B1C: RTC Day Alarm
+
+ UInt8 ___filler41[0xC00-0xB1E];
+
+ UInt16 dramConfig; // $C00: DRAM Memory Config Register
+ UInt16 dramControl; // $C02: DRAM Control Register
+ UInt16 sdramControl; // $C04: SDRAM Control Register
+ UInt16 sdramPwDn; // $C06: SDRAM Power Down Register
+
+ UInt8 ___filler42[0xD00-0xC08];
+
+ UInt32 emuAddrCompare; // $D00: Emulation Address Compare Register
+ UInt32 emuAddrMask; // $D04: Emulation Address Mask Register
+ UInt16 emuControlCompare; // $D08: Emulation Control Compare Register
+ UInt16 emuControlMask; // $D0A: Emulation Control Mask Register
+ UInt16 emuControl; // $DOC: Emulation Control Register
+ UInt16 emuStatus; // $D0E: Emulation Status Register
+};
+
+typedef volatile struct HwrM68VZ328Type* HwrM68VZ328Ptr;
+
+#define HwrDBallType HwrM68VZ328Type
+#define HwrDBallPtr HwrM68VZ328Ptr
+
+
+#if 0 // Take this out for Poser; it conflicts with the one in M68EZ328Hwr.h
+
+/************************************************************************
+ * Jerry EZ cost reduction PLD I/O register
+ ***********************************************************************/
+typedef volatile struct HwrJerryPLDType {
+
+ UInt8 dspOn; // pld output turn dsp on/off
+ UInt8 unused1;
+ UInt8 chargeOn; // pld output turn charger on/off
+ UInt8 unused2;
+ UInt8 refOn; // pld output turn 3.0 volt reference on/off
+ UInt8 unused3;
+ UInt8 pipaBiasEnable; // pld output turn PA bias on/off
+ UInt8 unused4;
+ UInt8 dspReset; // pld output control dsp reset pin up/down
+ UInt8 unused5;
+ UInt8 ezToDsl; // pld output comm. pin to dsp
+ UInt8 unused6;
+ UInt8 rs232Shdn; // pld output control rs232 interface chip on/off
+ UInt8 unused7;
+ UInt8 spareOut; // pld output not used
+ UInt8 unused8;
+ UInt16 dTo3Sln; // pld input comm. from dsp
+ UInt16 iXtrnl2; // pld input cradle connector pin
+} HwrJerryPLDType;
+
+typedef HwrJerryPLDType* HwrJerryPldPtr;
+
+/************************************************************************
+ * Jerry EZ cost reduction. PLD settings
+ ***********************************************************************/
+#define hwrJerryPld232Enable 0x80
+#define hwrJerryPld232Disable 0
+#define hwrJerryPldChargerOn 0x80
+#define hwrJerryPldChargerOff 0
+#define hwrJerryPldPaBiasEnable 0x80
+#define hwrJerryPldPaBiasDisable 0
+#define hwrJerryPldRefOn 0x80
+#define hwrJerryPldRefOff 0
+#define hwrJerryPldDspSelect 0x80
+#define hwrJerryPldDspDeselect 0
+#define hwrJerryPldDspResetAssert 0x80
+#define hwrJerryPldDspResetDeassert 0
+#define hwrJerryPldDspPowerOn 0x80
+#define hwrJerryPldDspPowerOff 0
+
+/************************************************************************
+ * Jerry EZ cost reduction. PLD shadow settings
+ ***********************************************************************/
+#define hwrJerryPldDspOnBit 0x0001
+#define hwrJerryPldChargeOnBit 0x0002
+#define hwrJerryPldRefOnBit 0x0004
+#define hwrJerryPldPaBiasEnableBit 0x0008
+#define hwrJerryPldDspResetBit 0x0010
+#define hwrJerryPldEzToDslBit 0x0020
+#define hwrJerryPldRs232Bit 0x0040
+#endif
+
+/************************************************************************
+ * Chip ID register for VZ
+ ***********************************************************************/
+ #define hwrVZ328chipIDVZ 0x45
+
+/************************************************************************
+ * Mask ID register for VZ
+ ***********************************************************************/
+#define hwrVZ328maskID0H31J 0x01
+#define hwrVZ328maskID0J75C 0x02
+#define hwrVZ328maskID1J75C 0x03
+#define hwrVZ328maskID0J83G 0x04
+
+/************************************************************************
+ * LCD Controller Bits
+ ************************************************************************/
+// lcdCursorXPos Register
+#define hwrVZ328LcdCursorXPosCtlMask 0xC000
+ #define hwrVZ328LcdCursorXPosCtlTrans 0x0000
+ #define hwrVZ328LcdCursorXPosCtlBlack 0x4000
+ #define hwrVZ328LcdCursorXPosCtlReverse 0x8000
+ #define hwrVZ328LcdCursorXPosCtlWhite 0xC000
+#define hwrVZ328LcdCursorXPosValueMask 0x1FF
+#define hwrVZ328LcdCursorYPosValueMask 0x1FF
+
+#define hwrVZ328LcdCursorWidthMask 0x1F
+ #define hwrVZ328LcdCursorWidthOffset 0x8
+#define hwrVZ328LcdCursorHeightMask 0x1F
+
+// lcdBlinkControl Register
+#define hwrVZ328LcdBlinkControlEnable 0x80
+#define hwrVZ328LcdBlinkDivisorMask 0x7F
+
+// lcdPanelControl Register
+#define hwrVZ328LcdPanelControlBusMask 0x0C
+ #define hwrVZ328LcdPanelControlBus1Bit 0x00
+ #define hwrVZ328LcdPanelControlBus2Bit 0x04
+ #define hwrVZ328LcdPanelControlBus4Bit 0x08
+#define hwrVZ328LcdPanelControlGrayScale 0x01
+#define hwrVZ328LcdPanelControl4BitGrayScale 0x02
+
+// lcdPolarity Register
+#define hwrVZ328LcdPolarityShiftClock 0x08
+#define hwrVZ328LcdPolarityFLM 0x04
+#define hwrVZ328LcdPolarityLP 0x02
+#define hwrVZ328LcdPolarityPixel 0x01
+
+// lcdClockControl Register
+#define hwrVZ328LcdClockControlEnable 0x80
+#define hwrVZ328LcdClockControl8BitBus 0x40
+
+#define hwrVZ328LcdClockControlBurstRateMask 0x0F
+#define hwrVZ328LcdClockControlBurstRate1 0x00
+#define hwrVZ328LcdClockControlBurstRate2 0x01
+#define hwrVZ328LcdClockControlBurstRate3 0x02
+#define hwrVZ328LcdClockControlBurstRate4 0x03
+#define hwrVZ328LcdClockControlBurstRate5 0x04
+#define hwrVZ328LcdClockControlBurstRate6 0x05
+#define hwrVZ328LcdClockControlBurstRate7 0x06
+#define hwrVZ328LcdClockControlBurstRate8 0x07
+#define hwrVZ328LcdClockControlBurstRate9 0x08
+#define hwrVZ328LcdClockControlBurstRate10 0x09
+#define hwrVZ328LcdClockControlBurstRate11 0x0A
+#define hwrVZ328LcdClockControlBurstRate12 0x0B
+#define hwrVZ328LcdClockControlBurstRate13 0x0C
+#define hwrVZ328LcdClockControlBurstRate14 0x0D
+#define hwrVZ328LcdClockControlBurstRate15 0x0E
+#define hwrVZ328LcdClockControlBurstRate16 0x0F
+
+#define hwrVZ328LcdContrastPWMWidthMask 0x00FF
+#define hwrVZ328LcdContrastEnable 0x0100
+
+
+
+/************************************************************************
+ * Interrupt Controller Bits
+ ************************************************************************/
+// intMaskHi bits
+// NOTE: Due to a bug in early rev's of the DragonBall, the clear bits for
+// IRQ[1236] on those early chips were different than the indicator bits
+// (the order was reversed). So some older code uses the OR of the IRQ1 and
+// IRQ6 bits for either, and the OR of the IRQ2 and IRQ3 bits for either.
+#define hwrVZ328IntHiEMU 0x0080
+#define hwrVZ328IntHiSampleTimer 0x0040
+#define hwrVZ328IntHiPen 0x0010
+#define hwrVZ328IntHiIRQ6 0x0008
+#define hwrVZ328IntHiIRQ3 0x0004
+#define hwrVZ328IntHiIRQ2 0x0002
+#define hwrVZ328IntHiIRQ1 0x0001
+
+// intMaskLo bits
+#define hwrVZ328IntLoPWM2 0x2000
+#define hwrVZ328IntLoPWM2Bit 13
+#define hwrVZ328IntLoUART2 0x1000
+#define hwrVZ328IntLoUART2Bit 12
+#define hwrVZ328IntLoInt3 0x0800
+#define hwrVZ328IntLoInt2 0x0400
+#define hwrVZ328IntLoInt1 0x0200
+#define hwrVZ328IntLoInt0 0x0100
+#define hwrVZ328IntLoAllKeys 0x0F00
+#define hwrVZ328IntLoInt0Bit 8
+#define hwrVZ328IntLoPWM 0x0080
+#define hwrVZ328IntLoPWMBit 7
+#define hwrVZ328IntLoKbd 0x0040
+#define hwrVZ328IntLoTimer2 0x0020
+#define hwrVZ328IntLoTimer2Bit 5
+#define hwrVZ328IntLoRTC 0x0010
+#define hwrVZ328IntLoRTCBit 4
+#define hwrVZ328IntLoWDT 0x0008
+#define hwrVZ328IntLoUART 0x0004
+#define hwrVZ328IntLoUARTBit 2
+#define hwrVZ328IntLoTimer 0x0002
+#define hwrVZ328IntLoTimerBit 1
+#define hwrVZ328IntLoSPIM 0x0001
+
+// intControl bits
+// NOTE: These are different than that documented in the User's manual
+// for the DragonBall (see erratas). The DragonBall is the same as the EZ.
+#define hwrVZ328IntCtlEdge1 0x0800
+#define hwrVZ328IntCtlEdge2 0x0400
+#define hwrVZ328IntCtlEdge3 0x0200
+#define hwrVZ328IntCtlEdge6 0x0100
+#define hwrVZ328IntCtlPol1 0x8000
+#define hwrVZ328IntCtlPol2 0x4000
+#define hwrVZ328IntCtlPol3 0x2000
+#define hwrVZ328IntCtlPol6 0x1000
+#define hwrVZ328IntCtlPol5 0x0080
+
+/************************************************************************
+ * DRAM Controller Bits bits
+ * Not all the bits are defined here-- some are pretty bad to muck with
+ * in anything but initial setup of the DRAM.
+ ************************************************************************/
+#define hwrVZ328dramControlEnable 0x8000
+#define hwrVZ328dramControlSelfRefreshEn 0x4000
+#define hwrVZ328dramControlEDOEn 0x0400
+#define hwrVZ328dramControlLightSleep 0x0010
+#define hwrVZ328dramControlLowPowerRefreshEn 0x0004
+#define hwrVZ328dramControlDWEEnable 0x0001
+
+
+/************************************************************************
+ * SDRAM Controller Bits bits
+ * Not all the bits are defined here-- some are pretty bad to muck with
+ * in anything but initial setup of the SDRAM.
+ ************************************************************************/
+// SdramControl bits
+#define hwrVZ328SdramControlEnable 0x8000
+#define hwrVZ328SdramControlContPgModeEn 0x4000
+ // rsvd
+#define hwrVZ328SdramControlRefreshEn 0x1000
+#define hwrVZ328SdramControlInitPreChg 0x0800
+#define hwrVZ328SdramControlInitModeReg 0x0400
+ // rsvd
+ // rsvd
+ // rsvd
+#define hwrVZ328SdramControlSColOpt 0x0040
+ // BnkAddH[1:0]
+ // BnkAddL[1:0]
+#define hwrVZ328SdramControlCASLatency 0x0002
+#define hwrVZ328SdramControlRefrActCmdLatency 0x0001
+
+// SdramPwDn bits
+#define hwrVZ328SdramPwDnAPEn 0x8000
+#define hwrVZ328SdramPwDnPDEn 0x4000
+ // rsvd
+ // rsvd
+ // PDTOUT[3:0]
+ // rsvd
+ // rsvd
+ // rsvd
+ // rsvd
+ // rsvd
+ // rsvd
+ // rsvd
+ // rsvd
+
+
+/************************************************************************
+ * Timer bits
+ ************************************************************************/
+#define hwrVZ328TmrControlUnused 0xFC00
+#define hwrVZ328TmrControlTIOOutput 0x0200
+#define hwrVZ328TmrControlFreeRun 0x0100
+#define hwrVZ328TmrControlCaptureEdgeMask 0x00C0
+ #define hwrVZ328TmrControlCaptureEdgeNone 0x0000
+ #define hwrVZ328TmrControlCaptureEdgeRising 0x0040
+ #define hwrVZ328TmrControlCaptureEdgeFalling 0x0080
+ #define hwrVZ328TmrControlCaptureEdgeBoth 0x00C0
+#define hwrVZ328TmrControlOutputModeToggle 0x0020
+#define hwrVZ328TmrControlEnInterrupt 0x0010
+#define hwrVZ328TmrControlClkSrcMask 0x000E
+ #define hwrVZ328TmrControlClkSrcStop 0x0000
+ #define hwrVZ328TmrControlClkSrcSys 0x0002
+ #define hwrVZ328TmrControlClkSrcSysBy16 0x0004
+ #define hwrVZ328TmrControlClkSrcTIN 0x0006
+ #define hwrVZ328TmrControlClkSrc32KHz 0x0008
+#define hwrVZ328TmrControlEnable 0x0001
+
+#define hwrVZ328TmrStatusCapture 0x0002
+#define hwrVZ328TmrStatusCaptureBit 1
+#define hwrVZ328TmrStatusCompare 0x0001
+#define hwrVZ328TmrStatusCompareBit 0
+
+
+/************************************************************************
+ * 68VZ328 Serial Port Register Bits
+ ************************************************************************/
+// uControl Register
+#define hwrVZ328UControlUARTEnable 0x8000
+#define hwrVZ328UControlRxEnable 0x4000
+#define hwrVZ328UControlTxEnable 0x2000
+#define hwrVZ328UControlRxClock1xSync 0x1000
+#define hwrVZ328UControlParityEn 0x0800
+#define hwrVZ328UControlParityOdd 0x0400
+#define hwrVZ328UControlStopBits2 0x0200
+#define hwrVZ328UControlDataBits8 0x0100
+#define hwrVZ328UControlOldDataEn 0x0080
+#define hwrVZ328UControlCTSDeltaEn 0x0040
+#define hwrVZ328UControlRxFullEn 0x0020
+#define hwrVZ328UControlRxHalfEn 0x0010
+#define hwrVZ328UControlRxRdyEn 0x0008
+#define hwrVZ328UControlTxEmptyEn 0x0004
+#define hwrVZ328UControlTxHalfEn 0x0002
+#define hwrVZ328UControlTxAvailEn 0x0001
+
+#define hwrVZ328UControlEnableAll (hwrVZ328UControlUARTEnable | \
+ hwrVZ328UControlRxEnable | \
+ hwrVZ328UControlTxEnable)
+
+// uBaud Register
+// UCLK output requires PE3 Select to be 0
+#define hwrVZ328UBaudUCLKDirOut 0x2000
+#define hwrVZ328UBaudBaudSrcUCLK 0x0800
+#define hwrVZ328UBaudDivider 0x0700
+#define hwrVZ328UBaudPrescaler 0x003F
+
+#define hwrVZ328UBaudDivideBitOffset 8
+
+
+// uReceive Register
+#define hwrVZ328UReceiveFIFOFull 0x8000
+#define hwrVZ328UReceiveFIFOHalf 0x4000
+#define hwrVZ328UReceiveDataRdy 0x2000
+#define hwrVZ328UReceiveDataRdyBit 13
+#define hwrVZ328UReceiveOldData 0x1000
+#define hwrVZ328UReceiveOverrunErr 0x0800
+#define hwrVZ328UReceiveOverrunErrBit 11
+#define hwrVZ328UReceiveFrameErr 0x0400
+#define hwrVZ328UReceiveFrameErrBit 10
+#define hwrVZ328UReceiveBreakErr 0x0200
+#define hwrVZ328UReceiveBreakErrBit 9
+#define hwrVZ328UReceiveParityErr 0x0100
+#define hwrVZ328UReceiveParityErrBit 8
+#define hwrVZ328UReceiveData 0x00FF
+
+#define hwrVZ328UReceiveErrsMask (hwrVZ328UReceiveOverrunErr | \
+ hwrVZ328UReceiveFrameErr | \
+ hwrVZ328UReceiveBreakErr | \
+ hwrVZ328UReceiveParityErr)
+
+// uTransmit Register
+#define hwrVZ328UTransmitFIFOEmpty 0x8000
+#define hwrVZ328UTransmitFIFOHalf 0x4000
+#define hwrVZ328UTransmitTxAvail 0x2000
+#define hwrVZ328UTransmitSendBreak 0x1000
+#define hwrVZ328UTransmitIgnoreCTS 0x0800
+#define hwrVZ328UTransmitBusy 0x0400
+#define hwrVZ328UTransmitCTSStatus 0x0200
+#define hwrVZ328UTransmitCTSDelta 0x0100
+#define hwrVZ328UTransmitData 0x00FF
+
+// uMisc Register
+#define hwrVZ328UMiscBaudTest 0x8000
+#define hwrVZ328UMiscClkSrcUCLK 0x4000
+#define hwrVZ328UMiscForceParityErr 0x2000
+#define hwrVZ328UMiscLoopback 0x1000
+#define hwrVZ328UMiscBaudReset 0x0800
+#define hwrVZ328UMiscIRTestEn 0x0400
+#define hwrVZ328UMiscReservedMask 0x0300
+#define hwrVZ328UMiscRTSThruFIFO 0x0080
+#define hwrVZ328UMiscRTSOut 0x0040
+#define hwrVZ328UMiscIRDAEn 0x0020
+#define hwrVZ328UMiscLoopIRDA 0x0010
+#define hwrVZ328UMiscRXPolarityInv 0x0008
+#define hwrVZ328UMiscTXPolarityInv 0x0004
+#define hwrVZ328UMiscUnused 0x0003
+
+// uNonIntPresc Register
+#define hwrVZ328UNonIntPrescSrcIntPresc 0x0000
+#define hwrVZ328UNonIntPrescSrcNonIntPresc 0x8000
+
+#define hwrVZ328UNonIntPrescSelDiv128 0x0000
+#define hwrVZ328UNonIntPrescSelDiv64 0x0100
+#define hwrVZ328UNonIntPrescSelDiv32 0x0200
+#define hwrVZ328UNonIntPrescSelDiv16 0x0300
+#define hwrVZ328UNonIntPrescSelDiv8 0x0400
+#define hwrVZ328UNonIntPrescSelDiv4 0x0500
+#define hwrVZ328UNonIntPrescSelDiv2 0x0600
+#define hwrVZ328UNonIntPrescSelDiv1 0x0700
+
+#define hwrVZ328UNonIntPrescStepMask 0x00FF
+#define hwrVZ328UNonIntPrescSelOffset 8
+
+// see VZ docs for explanation of the following. This provides the correct
+// pulse width for IRDA, and is just a statement in the docs. The values don't
+// appear to make sense, but I just push the buttons.
+
+// This has been deprecated in favor of a prv function in the serial driver and
+// the SerialMgr (depending on whether you have Bond or not) that calculates
+// the value of this register based on the clock frequency you're running on.
+// There was a bug when running EZ at 20MHz that caused the IrDA pulsewidth to
+// get too short.
+
+#if 0
+#define hwrVZ328UNonIntPrescIRDAMode (hwrVZ328UNonIntPrescSrcIntPresc \
+ | hwrVZ328UNonIntPrescSelDiv32 \
+ | (hwrVZ328UNonIntPrescStepMask & 0x20))
+#endif
+
+/************************************************************************
+ * PWM Bits
+ ************************************************************************/
+// PWM register bits of interest
+#define hwrVZ328PWMControlEnable 0x0010
+#define hwrVZ328PWMControlEnableBit 4
+#define hwrVZ328PWMControlEnableIRQ 0x0040
+#define hwrVZ328PWMIRQStatus 0x0080
+// PWM divider chain output selectors
+#define hwrVZ328PWMControlDivMask 0x0003
+#define hwrVZ328PWMControlDivBy2 0x0
+#define hwrVZ328PWMControlDivBy4 0x1
+#define hwrVZ328PWMControlDivBy8 0x2
+#define hwrVZ328PWMControlDivBy16 0x3
+// PWM Repeat Counts
+#define hwrVZ328PWMRepeatSample1x 0x0
+#define hwrVZ328PWMRepeatSample2x 0x4
+#define hwrVZ328PWMRepeatSample4x 0x8
+#define hwrVZ328PWMRepeatSample8x 0xC
+// PWM hardware constraints
+#define hwrVZ328PWMFifoSizeInBytes 4
+#define hwrVZ328PWMPrescalerMask 0x7F00
+#define hwrVZ328PWMPrescalerOffset 8
+
+/************************************************************************
+ * PLL Bits
+ ************************************************************************/
+#define hwrVZ328PLLControlDisable 0x0008
+#define hwrVZ328PLLControlClkDisable 0x0010
+
+#define hwrVZ328PLLControlSysDMADiv2 0x0000
+#define hwrVZ328PLLControlSysDMADiv4 0x0100
+#define hwrVZ328PLLControlSysDMADiv8 0x0200
+#define hwrVZ328PLLControlSysDMADiv16 0x0300
+#define hwrVZ328PLLControlSysDMADiv1 0x0400
+
+#define hwrVZ328PLLControlPixDMADiv2 0x0000
+#define hwrVZ328PLLControlPixDMADiv4 0x0800
+#define hwrVZ328PLLControlPixDMADiv8 0x1000
+#define hwrVZ328PLLControlPixDMADiv16 0x1800
+#define hwrVZ328PLLControlPixDMADiv1 0x2000
+
+#define hwrVZ328PLLControlPreSc1Div2 0x0080
+#define hwrVZ328PLLControlPreSc1Div1 0x0000
+
+#define hwrVZ328PLLControlPreSc2Div2 0x0020
+#define hwrVZ328PLLControlPreSc2Div1 0x0000
+
+#define hwrCZ328PLLControl32Periods 0x0000
+#define hwrCZ328PLLControl48Periods 0x0001
+#define hwrCZ328PLLControl64Periods 0x0002
+#define hwrCZ328PLLControl96Periods 0x0003
+
+#define hwrVZ328PLLFreqSelCLK32 0x8000
+
+/************************************************************************
+ * Real Time Clock (RTC) Bits
+ ************************************************************************/
+
+// RTC Control Register (RTCCTL) bits
+#define hwrVZ328RTCControlRTCEnable 0x80
+#define hwrVZ328RTCControlRefSelMask 0x20
+#define hwrVZ328RTCControlRefSel38400 0x20 // 38.4 kHz reference frequency
+#define hwrVZ328RTCControlRefSel32768 0x00 // 32.768 kHz reference frequency
+
+// RTC Interrupt Enable Register (RTCIENR) bits
+#define hwrVZ328RTCIntEnableSample7 0x8000
+#define hwrVZ328RTCIntEnableSample6 0x4000
+#define hwrVZ328RTCIntEnableSample5 0x2000
+#define hwrVZ328RTCIntEnableSample4 0x1000
+#define hwrVZ328RTCIntEnableSample3 0x0800
+#define hwrVZ328RTCIntEnableSample2 0x0400
+#define hwrVZ328RTCIntEnableSample1 0x0200
+#define hwrVZ328RTCIntEnableSample0 0x0100
+#define hwrVZ328RTCIntEnableHour 0x0020
+#define hwrVZ328RTCIntEnableSec 0x0010
+#define hwrVZ328RTCIntEnable24Hr 0x0008
+#define hwrVZ328RTCIntEnableAlarm 0x0004
+#define hwrVZ328RTCIntEnableMinute 0x0002
+#define hwrVZ328RTCIntEnableStopWatch 0x0001
+
+// RTC Interrupt Status Register bits
+#define hwrVZ328RTCIntStatusSample7 0x8000
+#define hwrVZ328RTCIntStatusSample6 0x4000
+#define hwrVZ328RTCIntStatusSample5 0x2000
+#define hwrVZ328RTCIntStatusSample4 0x1000
+#define hwrVZ328RTCIntStatusSample3 0x0800
+#define hwrVZ328RTCIntStatusSample2 0x0400
+#define hwrVZ328RTCIntStatusSample1 0x0200
+#define hwrVZ328RTCIntStatusSample0 0x0100
+#define hwrVZ328RTCIntStatusHour 0x0020
+#define hwrVZ328RTCIntStatusSec 0x0010
+#define hwrVZ328RTCIntStatus24Hr 0x0008
+#define hwrVZ328RTCIntStatusAlarm 0x0004
+#define hwrVZ328RTCIntStatusMinute 0x0002
+#define hwrVZ328RTCIntStatusStopWatch 0x0001
+
+// RTC Alarm register (RTCALRM) masks and offsets
+#define hwrVZ328RTCAlarmSecondsMask 0x0000003fL
+#define hwrVZ328RTCAlarmSecondsOffset 0
+#define hwrVZ328RTCAlarmMinutesMask 0x003f0000L
+#define hwrVZ328RTCAlarmMinutesOffset 16
+#define hwrVZ328RTCAlarmHoursMask 0x1f000000L
+#define hwrVZ328RTCAlarmHoursOffset 24
+
+// RTC hours/minutes/seconds register (RTCHMS) masks and offsets
+#define hwrVZ328RTCHourMinSecSecondsMask 0x0000003fL
+#define hwrVZ328RTCHourMinSecSecondsOffset 0
+#define hwrVZ328RTCHourMinSecMinutesMask 0x003f0000L
+#define hwrVZ328RTCHourMinSecMinutesOffset 16
+#define hwrVZ328RTCHourMinSecHoursMask 0x1f000000L
+#define hwrVZ328RTCHourMinSecHoursOffset 24
+
+// RTC Day register masks/offsets
+#define hwrVZ328RTCDayDayMask 0x01FF
+#define hwrVZ328RTCDayDayOffset 0
+
+// RTC Watchdog Timer masks/offsets
+#define hwrVZ328RTCWatchdogEnable 0x0001
+#define hwrVZ328RTCWatchdogIntSel 0x0002
+#define hwrVZ328RTCWatchdogIntStatus 0x0080
+#define hwrVZ328RTCWatchdogCountMask 0x0300
+#define hwrVZ328RTCWatchdogCountOffset 8
+
+/************************************************************************
+ * SPI Master bits
+ ************************************************************************/
+#define hwrVZ328SPIMControlRateMask 0xE000
+ #define hwrVZ328SPIMControlRateDiv4 0x0000
+ #define hwrVZ328SPIMControlRateDiv8 0x2000
+ #define hwrVZ328SPIMControlRateDiv16 0x4000
+ #define hwrVZ328SPIMControlRateDiv32 0x6000
+ #define hwrVZ328SPIMControlRateDiv64 0x8000
+ #define hwrVZ328SPIMControlRateDiv128 0xA000
+ #define hwrVZ328SPIMControlRateDiv256 0xC000
+ #define hwrVZ328SPIMControlRateDiv512 0xE000
+#define hwrVZ328SPIMControlEnable 0x0200
+#define hwrVZ328SPIMControlExchange 0x0100
+#define hwrVZ328SPIMControlIntStatus 0x0080
+#define hwrVZ328SPIMControlIntEnable 0x0040
+#define hwrVZ328SPIMControlOppPhase 0x0020
+#define hwrVZ328SPIMControlInvPolarity 0x0010
+#define hwrVZ328SPIMControlBitsMask 0x000F
+
+
+#endif // __M68VZ328_H__
+
+#endif // NON_PORTABLE
+
+
+
+
+
+
+
+
+
+
+