aboutsummaryrefslogtreecommitdiff
path: root/SrcShared/Palm/Platform/Core/Hardware/IncsPrv/M68SZ328Hwr.h
diff options
context:
space:
mode:
Diffstat (limited to 'SrcShared/Palm/Platform/Core/Hardware/IncsPrv/M68SZ328Hwr.h')
-rw-r--r--SrcShared/Palm/Platform/Core/Hardware/IncsPrv/M68SZ328Hwr.h1078
1 files changed, 1078 insertions, 0 deletions
diff --git a/SrcShared/Palm/Platform/Core/Hardware/IncsPrv/M68SZ328Hwr.h b/SrcShared/Palm/Platform/Core/Hardware/IncsPrv/M68SZ328Hwr.h
new file mode 100644
index 0000000..bfabe11
--- /dev/null
+++ b/SrcShared/Palm/Platform/Core/Hardware/IncsPrv/M68SZ328Hwr.h
@@ -0,0 +1,1078 @@
+/*******************************************************************
+ * Pilot Software
+ *
+ * Copyright(c) 1995-1999, Palm Computing Inc., All Rights Reserved
+ *
+ *-------------------------------------------------------------------
+ * FileName:
+ * M68SZ328Hwr.h
+ *
+ * Description:
+ * Hardware Equates for the Motorola 68SZ328 Dragonball-SZ chip
+ *
+ * History:
+ * 07/05/99 TJC Created; integrated from M68VZ328Hwr.h
+ *
+ *******************************************************************/
+
+#ifdef NON_PORTABLE // So apps don't include this...
+
+
+#ifndef __M68SZ328HWR_H__
+#define __M68SZ328HWR_H__
+
+#if INCLUDE_SECRET_STUFF
+
+
+#include <PalmTypes.h> // Touchdown includes
+
+
+// Define location of the 68328 Dragonball chip
+// Note: this is not the same as kMemoryStart in this chip
+#define hwr68328Base 0xFFFFF000L // Base address of 68328
+
+
+/***********************************************************************
+ * Motorola 68SZ328 registers
+ ***********************************************************************/
+struct HwrM68SZ328Type
+{
+ UInt16 dmaControl; // $00000: DMA Control Register
+ UInt16 dmaInterruptStatus; // $00002: DMA Interrupt Status Register
+ UInt16 dmaInterruptMask; // $00004: DMA Interrupt Mask Register
+ UInt16 dmaBurstTimeOutStatus; // $00006: DMA Burst Time-Out Status Register
+ UInt16 dmaRequestTimeOutStatus; // $00008: DMA Request Time-Out Status Register
+
+ // Note, the spaces around the minus sign are
+ // necessary. Without them, a proper compiler
+ // like gcc 3.0 thinks that the expression
+ // is an invalid scientific notion number.
+ UInt8 ___filler00[0x00E - 0x00A];
+
+ UInt16 dmaBurstTimeOutControl; // $0000E: DMA Burst Time-Out Control Register
+
+ UInt8 ___filler01[0x040-0x010];
+
+ UInt32 mem0SourceAddress; // $00040: Memory Channel 0 Source Address Register
+ UInt32 mem0DestAddress; // $00044: Memory Channel 0 Destination Address Register
+ UInt32 mem0Count; // $00048: Memory Channel 0 Count Register
+ UInt16 mem0Control; // $0004C: Memory Channel 0 Control Register
+ UInt16 mem0BurstLength; // $0004E: Memory Channel 0 Burst Length Register
+ UInt16 mem0BusUtilizationControl; // $00050: Memory Channel 0 Bus Utilization Control Register
+ UInt16 mem0BlockLength; // $00052: Memory Channel 0 Block Length Register
+ UInt16 mem0BlockSeparationDist; // $00054: Memory Channel 0 Block Separation Distance Register
+ UInt16 mem0DMARequestTimeOut; // $00056: Memory Channel 0 DMA Request Time Out Register
+
+ UInt8 ___filler02[0x080-0x058];
+
+ UInt32 mem1SourceAddress; // $00080: Memory Channel 1 Source Address Register
+ UInt32 mem1DestAddress; // $00084: Memory Channel 1 Destination Address Register
+ UInt32 mem1Count; // $00088: Memory Channel 1 Count Register
+ UInt16 mem1Control; // $0008C: Memory Channel 1 Control Register
+ UInt16 mem1BurstLength; // $0008E: Memory Channel 1 Burst Length Register
+ UInt16 mem1BusUtilizationControl; // $00090: Memory Channel 1 Bus Utilization Control Register
+ UInt16 mem1BlockLength; // $00092: Memory Channel 1 Block Length Register
+ UInt16 mem1BlockSeparationDist; // $00094: Memory Channel 1 Block Separation Distance Register
+ UInt16 mem1DMARequestTimeOut; // $00096: Memory Channel 1 DMA Request Time Out Register
+
+ UInt8 ___filler03[0x0C0-0x098];
+
+ UInt32 io2MemoryAddress; // $000C0: I/O Channel 2 Memory Address Register
+ UInt32 io2PeripheralAddress; // $000C4: I/O Channel 2 Peripheral Address Register
+ UInt32 io2CountRegister; // $000C8: I/O Channel 2 Count Register
+ UInt16 io2Control; // $000CC: I/O Channel 2 Control Register
+ UInt16 io2RequestSourceSelect; // $000CE: I/O Channel 2 Request Source Select Register
+ UInt16 io2BurstLength; // $000D0: I/O Channel 2 Burst Length Register
+ UInt16 io2DMARequestTimeOut; // $000D2: I/O Channel 2 DMA Request Time-Out Register
+
+ UInt8 ___filler04[0x100-0x0D4];
+
+ UInt32 io3MemoryAddress; // $00100: I/O Channel 3 Memory Address Register
+ UInt32 io3PeripheralAddress; // $00104: I/O Channel 3 Peripheral Address Register
+ UInt32 io3CountRegister; // $00108: I/O Channel 3 Count Register
+ UInt16 io3Control; // $0010C: I/O Channel 3 Control Register
+ UInt16 io3RequestSourceSelect; // $0010E: I/O Channel 3 Request Source Select Register
+ UInt16 io3BurstLength; // $00110: I/O Channel 3 Burst Length Register
+ UInt16 io3DMARequestTimeOut; // $00112: I/O Channel 3 DMA Request Time-Out Register
+
+ UInt8 ___filler05[0x140-0x114];
+
+ UInt32 io4MemoryAddress; // $00140: I/O Channel 4 Memory Address Register
+ UInt32 io4PeripheralAddress; // $00144: I/O Channel 4 Peripheral Address Register
+ UInt32 io4CountRegister; // $00148: I/O Channel 4 Count Register
+ UInt16 io4Control; // $0014C: I/O Channel 4 Control Register
+ UInt16 io4RequestSourceSelect; // $0014E: I/O Channel 4 Request Source Select Register
+ UInt16 io4BurstLength; // $00150: I/O Channel 4 Burst Length Register
+ UInt16 io4DMARequestTimeOut; // $00152: I/O Channel 4 DMA Request Time-Out Register
+
+ UInt8 ___filler06[0x180-0x154];
+
+ UInt32 io5MemoryAddress; // $00180: I/O Channel 5 Memory Address Register
+ UInt32 io5PeripheralAddress; // $00184: I/O Channel 5 Peripheral Address Register
+ UInt32 io5CountRegister; // $00188: I/O Channel 5 Count Register
+ UInt16 io5Control; // $0018C: I/O Channel 5 Control Register
+ UInt16 io5RequestSourceSelect; // $0018E: I/O Channel 5 Request Source Select Register
+ UInt16 io5BurstLength; // $00190: I/O Channel 5 Burst Length Register
+ UInt16 io5DMARequestTimeOut; // $00192: I/O Channel 5 DMA Request Time-Out Register
+
+ UInt8 ___filler07[0x200-0x194];
+
+ UInt16 adcPenSampleFifo; // $00200: ADC Pen Sample FIFO
+
+ UInt8 ___filler08[0x210-0x202];
+
+ UInt32 adcControl; // $00210: ADC Control Register
+ UInt16 adcPenADSampleRateControl; // $00214: ADC Pen A/D Sample Rate Control Register
+
+ UInt8 ___filler09[0x218-0x216];
+
+ UInt16 adcInterruptControl; // $00218: ADC Interrupt Control Register
+ UInt16 adcInterruptErrorStatus; // $0021A: ADC Interrupt/Error Status Register
+
+ UInt8 ___filler10[0x22C-0x21C];
+
+ UInt16 adcClockDivide; // $0022C: ADC Clock Divide Register
+
+ UInt8 ___filler11[0x230-0x22E];
+
+ UInt32 adcCompareControl; // $00230: ADC Compare Control Register
+
+ UInt8 ___filler12[0x300-0x234];
+
+ UInt16 mmcClockControl; // $00300: MMC Clock Control Register
+
+ UInt8 ___filler13[0x304-0x302];
+
+ UInt16 mmcStatus; // $00304: MMC Status Register
+
+ UInt8 ___filler14[0x308-0x306];
+
+ UInt16 mmcClockRate; // $00308: MMC Clock Rate Register
+
+ UInt8 ___filler15[0x310-0x30A];
+
+ UInt16 mmcCommandDataControl; // $00310: MMC Command and Data Control Register
+
+ UInt8 ___filler16[0x314-0x312];
+
+ UInt16 mmcResponseTimeOut; // $00314: MMC Response Time Out Register
+
+ UInt8 ___filler17[0x318-0x316];
+
+ UInt16 mmcReadTimeOut; // $00318: MMC Read Time Out Register
+
+ UInt8 ___filler18[0x31C-0x31A];
+
+ UInt16 mmcBlockLength; // $0031C: MMC Block Length Register
+
+ UInt8 ___filler19[0x320-0x31E];
+
+ UInt16 mmcNumberOfBlocks; // $00320: MMC Number of Blocks Register
+
+ UInt8 ___filler20[0x324-0x322];
+
+ UInt16 mmcRevisionNumber; // $00324: MMC Revision Number Register
+
+ UInt16 mmcIOPort; // $00326: MMC IO Port Register
+ UInt16 mmcInterruptMask; // $00328: MMC Interrupt Mask Register
+
+ UInt8 ___filler21[0x32C-0x32A];
+
+ UInt16 mmcCommandNumber; // $0032C: MMC Command Number Register
+
+ UInt8 ___filler22[0x330-0x32E];
+
+ UInt16 mmcHigherArgument; // $00330: MMC HIGHER Argument Register
+ UInt16 mmcLowerArgument; // $00332: MMC LOWER Argument Register
+ UInt16 mmcResponseFifo; // $00334: MMC Response FIFO Register;
+
+ UInt8 ___filler23[0x338-0x336];
+
+ UInt16 mmcBufferAccess; // $00338: MMC Buffer Access Register
+
+ UInt8 ___filler24[0x33C-0x33A];
+
+ UInt16 mmcBufferPartFull; // $0033C: MMC Buffer Part Full Register
+
+ UInt8 ___filler25[0x400-0x33E];
+
+ UInt32 usbFrameNumberMatch; // $00400: USB Frame Number and Match
+ UInt32 usbSpecificationRelease; // $00404: USB Specification/Release Number
+ UInt32 usbStatus; // $00408: USB Status
+ UInt32 usbControl; // $0040C: USB Control
+ UInt32 usbConfigurationStatus; // $00410: USB Configuration Status
+ UInt32 usbEndpointBufferData; // $00414: USB Endpoint Buffer Data
+ UInt32 usbGeneralInterruptStatus; // $00418: USB General Interrupt Status Register
+ UInt32 usbInterruptMask; // $0041C: USB Interrupt Mask
+
+ UInt8 ___filler26[0x424-0x420];
+
+ UInt32 usbEnable; // $00424: USB Enable
+ UInt32 usbInterruptStatus; // $00428: USB Interrupt Status Register
+
+ UInt8 ___filler27[0x430-0x42C];
+
+ UInt32 usbEP0StatusControl; // $00430: USB Endpoint 0 Status/Control
+ UInt32 usbEP0InterruptStatus; // $00434: USB Endpoint 0 Interrupt Status
+ UInt32 usbEP0InterruptMask; // $00438: USB Endpoint 0 Interrupt Mask
+ UInt16 usbEP0FifoData; // $0043C: USB Endpoint 0 FIFO Data
+
+ UInt8 ___filler28[0x440-0x43E];
+
+ UInt32 usbEP0FifoStatus; // $00440: USB Endpoint 0 FIFO Status
+ UInt32 usbEP0FifoControl; // $00444: USB Endpoint 0 FIFO Control
+ UInt32 usbEP0LastReadFramePointer; // $00448: USB Endpoint 0 FIFO Last Read Frame Pointer
+ UInt32 usbEP0LastWriteFramePointer; // $0044C: USB Endpoint 0 FIFO Last Write Frame Pointer
+ UInt32 usbEP0FifoAlarm; // $00450: USB Endpoint 0 FIFO Alarm
+ UInt32 usbEP0FifoReadPointer; // $00454: USB Endpoint 0 FIFO Read Pointer
+ UInt32 usbEP0FifoWritePointer; // $00458: USB Endpoint 0 FIFO Write Pointer
+
+ UInt8 ___filler29[0x460-0x45C];
+
+ UInt32 usbEP1StatusControl; // $00460: USB Endpoint 1 Status/Control
+ UInt32 usbEP1InterruptStatus; // $00464: USB Endpoint 1 Interrupt Status
+ UInt32 usbEP1InterruptMask; // $00468: USB Endpoint 1 Interrupt Mask
+ UInt16 usbEP1FifoData; // $0046C: USB Endpoint 1 FIFO Data
+
+ UInt8 ___filler30[0x470-0x46E];
+
+ UInt32 usbEP1FifoStatus; // $00470: USB Endpoint 1 FIFO Status
+ UInt32 usbEP1FifoControl; // $00474: USB Endpoint 1 FIFO Control
+ UInt32 usbEP1LastReadFramePointer; // $00478: USB Endpoint 1 FIFO Last Read Frame Pointer
+ UInt32 usbEP1LastWriteFramePointer; // $0047C: USB Endpoint 1 FIFO Last Write Frame Pointer
+ UInt32 usbEP1FifoAlarm; // $00480: USB Endpoint 1 FIFO Alarm
+ UInt32 usbEP1FifoReadPointer; // $00484: USB Endpoint 1 FIFO Read Pointer
+ UInt32 usbEP1FifoWritePointer; // $00488: USB Endpoint 1 FIFO Write Pointer
+
+ UInt8 ___filler31[0x490-0x48C];
+
+ UInt32 usbEP2StatusControl; // $00490: USB Endpoint 2 Status/Control
+ UInt32 usbEP2InterruptStatus; // $00494: USB Endpoint 2 Interrupt Status
+ UInt32 usbEP2InterruptMask; // $00498: USB Endpoint 2 Interrupt Mask
+ UInt16 usbEP2FifoData; // $0049C: USB Endpoint 2 FIFO Data
+
+ UInt8 ___filler32[0x4A0-0x49E];
+
+ UInt32 usbEP2FifoStatus; // $004A0: USB Endpoint 2 FIFO Status
+ UInt32 usbEP2FifoControl; // $004A4: USB Endpoint 2 FIFO Control
+ UInt32 usbEP2LastReadFramePointer; // $004A8: USB Endpoint 2 FIFO Last Read Frame Pointer
+ UInt32 usbEP2LastWriteFramePointer; // $004AC: USB Endpoint 2 FIFO Last Write Frame Pointer
+ UInt32 usbEP2FifoAlarm; // $004B0: USB Endpoint 2 FIFO Alarm
+ UInt32 usbEP2FifoReadPointer; // $004B4: USB Endpoint 2 FIFO Read Pointer
+ UInt32 usbEP2FifoWritePointer; // $004B8: USB Endpoint 2 FIFO Write Pointer
+
+ UInt8 ___filler33[0x4C0-0x4BC];
+
+ UInt32 usbEP3StatusControl; // $004C0: USB Endpoint 3 Status/Control
+ UInt32 usbEP3InterruptStatus; // $004C4: USB Endpoint 3 Interrupt Status
+ UInt32 usbEP3InterruptMask; // $004C8: USB Endpoint 3 Interrupt Mask
+ UInt16 usbEP3FifoData; // $004CC: USB Endpoint 3 FIFO Data
+
+ UInt8 ___filler34[0x4D0-0x4CE];
+
+ UInt32 usbEP3FifoStatus; // $004D0: USB Endpoint 3 FIFO Status
+ UInt32 usbEP3FifoControl; // $004D4: USB Endpoint 3 FIFO Control
+ UInt32 usbEP3LastReadFramePointer; // $004D8: USB Endpoint 3 FIFO Last Read Frame Pointer
+ UInt32 usbEP3LastWriteFramePointer; // $004DC: USB Endpoint 3 FIFO Last Write Frame Pointer
+ UInt32 usbEP3FifoAlarm; // $004E0: USB Endpoint 3 FIFO Alarm
+ UInt32 usbEP3FifoReadPointer; // $004E4: USB Endpoint 3 FIFO Read Pointer
+ UInt32 usbEP3FifoWritePointer; // $004E8: USB Endpoint 3 FIFO Write Pointer
+
+ UInt8 ___filler35[0x4F0-0x4EC];
+
+ UInt32 usbEP4StatusControl; // $004F0: USB Endpoint 4 Status/Control
+ UInt32 usbEP4InterruptStatus; // $004F4: USB Endpoint 4 Interrupt Status
+ UInt32 usbEP4InterruptMask; // $004F8: USB Endpoint 4 Interrupt Mask
+ UInt16 usbEP4FifoData; // $004FC: USB Endpoint 4 FIFO Data
+
+ UInt8 ___filler36[0x500-0x4FE];
+
+ UInt32 usbEP4FifoStatus; // $00500: USB Endpoint 4 FIFO Status
+ UInt32 usbEP4FifoControl; // $00504: USB Endpoint 4 FIFO Control
+ UInt32 usbEP4LastReadFramePointer; // $00508: USB Endpoint 4 FIFO Last Read Frame Pointer
+ UInt32 usbEP4LastWriteFramePointer; // $0050C: USB Endpoint 4 FIFO Last Write Frame Pointer
+ UInt32 usbEP4FifoAlarm; // $00510: USB Endpoint 4 FIFO Alarm
+ UInt32 usbEP4FifoReadPointer; // $00514: USB Endpoint 4 FIFO Read Pointer
+ UInt32 usbEP4FifoWritePointer; // $00518: USB Endpoint 4 FIFO Write Pointer
+
+ UInt8 ___filler37[0x800-0x51C];
+
+ UInt32 lcdStartAddr; // $00800: LCD Screen Starting Address Register
+ UInt16 lcdScreenSize; // $00804: LCD Screen Size Register
+ UInt16 lcdPageWidth; // $00806: LCD Virtual Page Width Register
+ UInt16 lcdCursorXPos; // $00808: LCD Cursor X Position
+ UInt16 lcdCursorYPos; // $0080A: LCD Cursor Y Position
+ UInt16 lcdCursorSize; // $0080C: LCD Cursor Size
+ UInt16 lcdBlinkControl; // $0080E: LCD Blink Control Register
+ UInt16 lcdColorCursorMapping; // $00810: LCD Color Cursor Mapping Register
+ UInt16 lcdPanelControl0; // $00812: LCD Panel Configuration Register 0
+ UInt16 lcdPanelControl1; // $00814: LCD Panel Configuration Register 1
+ UInt16 lcdHorizontalConfig0; // $00816: LCD Horizontal Configuration Register 0
+ UInt16 lcdHorizontalConfig1; // $00818: LCD Horizontal Configuration Register 1
+ UInt16 lcdVerticalConfig0; // $0081A: LCD Vertical Configuration Register 0
+ UInt16 lcdVerticalConfig1; // $0081C: LCD Vertical Configuration Register 1
+ UInt16 lcdPanningOffset; // $0081E: LCD Panning Offset Register
+ UInt16 lcdGrayPalette; // $00820: LCD Gray Palette Mapping Register
+ UInt16 lcdPWMContrastControl; // $00822: LCD PWM Contrast Control Register
+ UInt16 lcdDMAControl; // $00824: LCD DMA Control Register
+ UInt16 lcdRefreshModeControl; // $00826: LCD Refresh Mode Control Register
+ UInt16 lcdInterruptConfiguration; // $00828: LCD Interrupt Configuration
+ UInt16 lcdInterruptStatus; // $0082A: LCD Interrupt Status
+
+ UInt8 ___filler38[0x1F000-0x0082C];
+
+ UInt8 scr; // $10000: System Control Register
+
+ UInt8 ___filler39[0x003-0x001];
+
+ UInt8 pcr; // $10003: Peripheral Control Register
+ UInt8 chipID; // $10004: Chip ID Register
+ UInt8 maskID; // $10005: Mask ID Register
+ UInt16 swID; // $10006: Software ID Register
+ UInt16 ioDriveControl; // $10008: I/O Drive Control Register
+
+ UInt8 ___filler40[0x100-0x00A];
+
+ UInt16 csAGroupBase; // $10100: Chip Select Group A Base Register
+ UInt16 csBGroupBase; // $10102: Chip Select Group B Base Register
+ UInt16 csCGroupBase; // $10104: Chip Select Group C Base Register
+ UInt16 csDGroupBase; // $10106: Chip Select Group D Base Register
+
+ UInt8 ___filler41[0x10c-0x108];
+
+ UInt16 csControl2; // $1010C: Chip Select Control Register 2
+
+ UInt8 ___filler42[0x110-0x10e];
+
+ UInt16 csASelect; // $10110: Group A Chip Select Register
+ UInt16 csBSelect; // $10112: Group B Chip Select Register
+ UInt16 csCSelect; // $10114: Group C Chip Select Register
+ UInt16 csDSelect; // $10116: Group D Chip Select Register
+
+ UInt16 emuCS; // $10118: EMU Chip Select Register
+
+ UInt8 ___filler43[0x150-0x11A];
+
+ UInt16 csControl3; // $10150: Chip Select Control Register 3
+
+ UInt8 ___filler43a[0x180-0x152];
+
+ UInt16 csEGroupBase; // $10180: Chip Select Group E Base Register
+ UInt16 csFGroupBase; // $10182: Chip Select Group F Base Register
+ UInt16 csGGroupBase; // $10184: Chip Select Group G Base Register
+
+ UInt8 ___filler44[0x18A-0x186];
+
+ UInt16 csControl1; // $1018A: Chip Select Control Register 1
+
+ UInt8 ___filler45[0x190-0x18C];
+
+ UInt16 csESelect; // $10190: Group E Chip Select Register
+ UInt16 csFSelect; // $10192: Group F Chip Select Register
+ UInt16 csGSelect; // $10194: Group G Chip Select Register
+
+ UInt8 ___filler46[0x200-0x196];
+
+ UInt16 pllControl; // $10200: PLL Control Register
+ UInt16 pllFreqSel0; // $10202: MCU PLL Frequency Select Register 0
+ UInt16 pllFreqSel1; // $10204: MCU PLL Frequency Select Register 1
+
+ UInt8 ___filler47;
+
+ UInt8 pwrControl; // $10207: CPU Power Control Register
+
+ UInt16 usbpllFreqSel0; // $10208: USBPLL Frequency Select Register 0
+ UInt16 usbpllFreqSel1; // $1020A: USBPLL Frequency Select Register 1
+
+ UInt16 clockSrcCtl; // $1020C: Clock Source Control Register
+
+ UInt8 ___filler48[0x300-0x20E];
+
+ UInt8 intVector; // $10300: Interrupt Vector Register
+
+ UInt8 ___filler49;
+
+ UInt16 intControl; // $10302: Interrupt Control Register
+ UInt16 intMaskHi; // $10304: Interrupt Mask Register (high word)
+ UInt16 intMaskLo; // $10306: Interrupt Mask Register (low word)
+
+ UInt8 ___filler50[0x30C-0x308];
+
+ UInt16 intStatusHi; // $1030C: Interrupt Status Register (high word)
+ UInt16 intStatusLo; // $1030E: Interrupt Status Register (low word)
+ UInt16 intPendingHi; // $10310: Interrupt Pending Register (high word)
+ UInt16 intPendingLo; // $10312: Interrupt Pending Register (low word)
+ UInt16 intLevelControl; // $10314: Interrupt Level Control Register
+ UInt16 intLevelControl2; // $10316: Interrupt Level Control Register 2
+ UInt16 intLevelControl3; // $10318: Interrupt Level Control Register 3
+ UInt16 intLevelControl4; // $1031A: Interrupt Level Control Register 4
+ UInt16 intLevelControl5; // $1031C: Interrupt Level Control Register 5
+ UInt16 intLevelControl6; // $1031E: Interrupt Level Control Register 6
+ UInt16 intLevelControl7; // $10320: Interrupt Level Control Register 7
+
+ UInt8 ___filler51[0x400-0x322];
+
+ UInt8 portADir; // $10400: Port A Direction Register
+ UInt8 portAData; // $10401: Port A Data Register
+ UInt8 portAPullupEn; // $10402: Port A Pullup Enable
+
+ UInt8 ___filler52[0x408-0x403];
+
+ UInt8 portBDir; // $10408: Port B Direction Register
+ UInt8 portBData; // $10409: Port B Data Register
+ UInt8 portBPullupEn; // $1040A: Port B Pullup Enable
+ UInt8 portBSelect; // $1040B: Port B Select Register
+
+ UInt8 ___filler53[0x410-0x40C];
+
+ UInt8 portCDir; // $10410: Port C Direction Register
+ UInt8 portCData; // $10411: Port C Data Register
+ UInt8 portCPulldnEn; // $10412: Port C Pulldown Enable
+ UInt8 portCSelect; // $10413: Port C Select Register
+
+ UInt8 ___filler54[0x418-0x414];
+
+ UInt8 portDDir; // $10418: Port D Direction Register
+ UInt8 portDData; // $10419: Port D Data Register
+ UInt8 portDPullupEn; // $1041A: Port D Pull-up Enable
+ UInt8 portDSelect; // $1041B: Port D Select Register
+ UInt8 portDIntMask; // $1041C: Port D Interrupt Mask Register
+ UInt8 portDIntStatus; // $1041D: Port D Interrupt Status Register
+ UInt8 portDIntEdge; // $1041E: Port D Interrupt Edge Register
+ UInt8 portDIntPolarity; // $1041F: Port D Interrupt Polarity Register
+
+ UInt8 portEDir; // $10420: Port E Direction Register
+ UInt8 portEData; // $10421: Port E Data Register
+ UInt8 portEPullupEn; // $10422: Port E Pull-up Enable
+ UInt8 portESelect; // $10423: Port E Select Register
+ UInt8 portEIntMask; // $10424: Port E Interrupt Mask Register
+ UInt8 portEIntStatus; // $10425: Port E Interrupt Status Register
+ UInt8 portEIntEdge; // $10426: Port E Interrupt Edge Register
+ UInt8 portEIntPolarity; // $10427: Port E Interrupt Polarity Register
+
+ UInt8 portFDir; // $10428: Port F Direction Register
+ UInt8 portFData; // $10429: Port F Data Register
+ UInt8 portFPullupdnEn; // $1042A: Port F Pull-up/down Enable
+ UInt8 portFSelect; // $1042B: Port F Select Register
+ UInt8 portFIntMask; // $1042C: Port F Interrupt Mask Register
+ UInt8 portFIntStatus; // $1042D: Port F Interrupt Status Register
+ UInt8 portFIntEdge; // $1042E: Port F Interrupt Edge Register
+ UInt8 portFIntPolarity; // $1042F: Port F Interrupt Polarity Register
+
+ UInt8 portGDir; // $10430: Port G Direction Register
+ UInt8 portGData; // $10431: Port G Data Register
+ UInt8 portGPullupEn; // $10432: Port G Pull-up Enable
+ UInt8 portGSelect; // $10433: Port G Select Register
+ UInt8 portGIntMask; // $10434: Port G Interrupt Mask Register
+ UInt8 portGIntStatus; // $10435: Port G Interrupt Status Register
+ UInt8 portGIntEdge; // $10436: Port G Interrupt Edge Register
+ UInt8 portGIntPolarity; // $10437: Port G Interrupt Polarity Register
+
+ UInt8 portJDir; // $10438: Port J Direction Register
+ UInt8 portJData; // $10439: Port J Data Register
+ UInt8 portJPullupEn; // $1043A: Port J Pull-up Enable
+ UInt8 portJSelect; // $1043B: Port J Select Register
+ UInt8 portJIntMask; // $1043C: Port J Interrupt Mask Register
+ UInt8 portJIntStatus; // $1043D: Port J Interrupt Status Register
+ UInt8 portJIntEdge; // $1043E: Port J Interrupt Edge Register
+ UInt8 portJIntPolarity; // $1043F: Port J Interrupt Polarity Register
+
+ UInt8 portKDir; // $10440: Port K Direction Register
+ UInt8 portKData; // $10441: Port K Data Register
+ UInt8 portKPullupdnEn; // $10442: Port K Pull-up/down Enable
+ UInt8 portKSelect; // $10443: Port K Select Register
+ UInt8 portKIntMask; // $10444: Port K Interrupt Mask Register
+ UInt8 portKIntStatus; // $10445: Port K Interrupt Status Register
+ UInt8 portKIntEdge; // $10446: Port K Interrupt Edge Register
+ UInt8 portKIntPolarity; // $10447: Port K Interrupt Polarity Register
+
+ UInt8 portMDir; // $10448: Port M Direction Register
+ UInt8 portMData; // $10449: Port M Data Register
+ UInt8 portMPullupdnEn; // $1044A: Port M Pull-up/down Enable
+ UInt8 portMSelect; // $1044B: Port M Select Register
+ UInt8 portMIntMask; // $1044C: Port M Interrupt Mask Register
+ UInt8 portMIntStatus; // $1044D: Port M Interrupt Status Register
+ UInt8 portMIntEdge; // $1044E: Port M Interrupt Edge Register
+ UInt8 portMIntPolarity; // $1044F: Port M Interrupt Polarity Register
+
+ UInt8 portNDir; // $10450: Port N Direction Register
+ UInt8 portNData; // $10451: Port N Data Register
+ UInt8 portNPullupdnEn; // $10452: Port N Pull-up/down Enable
+ UInt8 portNSelect; // $10453: Port N Select Register
+ UInt8 portNIntMask; // $10454: Port N Interrupt Mask Register
+ UInt8 portNIntStatus; // $10455: Port N Interrupt Status Register
+ UInt8 portNIntEdge; // $10456: Port N Interrupt Edge Register
+ UInt8 portNIntPolarity; // $10457: Port N Interrupt Polarity Register
+
+ UInt8 portPDir; // $10458: Port P Direction Register
+ UInt8 portPData; // $10459: Port P Data Register
+ UInt8 portPPullupdnEn; // $1045A: Port P Pull-up/down Enable
+ UInt8 portPSelect; // $1045B: Port P Select Register
+ UInt8 portPIntMask; // $1045C: Port P Interrupt Mask Register
+ UInt8 portPIntStatus; // $1045D: Port P Interrupt Status Register
+ UInt8 portPIntEdge; // $1045E: Port P Interrupt Edge Register
+ UInt8 portPIntPolarity; // $1045F: Port P Interrupt Polarity Register
+
+ UInt8 portRDir; // $10460: Port R Direction Register
+ UInt8 portRData; // $10461: Port R Data Register
+ UInt8 portRPullupdnEn; // $10462: Port R Pull-up/down Enable
+ UInt8 portRSelect; // $10463: Port R Select Register
+ UInt8 portRIntMask; // $10464: Port R Interrupt Mask Register
+ UInt8 portRIntStatus; // $10465: Port R Interrupt Status Register
+ UInt8 portRIntEdge; // $10466: Port R Interrupt Edge Register
+ UInt8 portRIntPolarity; // $10467: Port R Interrupt Polarity Register
+
+ UInt8 ___filler55[0x500-0x468];
+
+ UInt16 pwmControl; // $10500: PWM 1 Control Register (PWM 1 is the same as the single PWM in EZ)
+ UInt8 pwmSampleHi; // $10502: PWM 1 Sample - high byte
+ UInt8 pwmSampleLo; // $10503: PWM 1 Sample - low byte
+ UInt8 pwmPeriod; // $10504: PWM 1 Period
+ UInt8 pwmCounter; // $10505: PWM 1 Counter
+
+ UInt8 ___filler56[0x510-0x506];
+
+ UInt16 pwm2Control; // $10510: PWM 2 Control Register
+ UInt16 pwm2Period; // $10512: PWM 2 Period
+ UInt16 pwm2Width; // $10514: PWM 2 Width
+ UInt16 pwm2Counter; // $10516: PWM 2 Counter
+
+ UInt8 ___filler57[0x600-0x518];
+
+ UInt16 tmr1Control; // $10600: Timer 1 Control Register
+ UInt16 tmr1Prescaler; // $10602: Timer 1 Prescaler Register
+ UInt16 tmr1Compare; // $10604: Timer 1 Compare Register
+ UInt16 tmr1Capture; // $10606: Timer 1 Capture Register
+ UInt16 tmr1Counter; // $10608: Timer 1 Counter Register
+ UInt16 tmr1Status; // $1060A: Timer 1 Status Register
+
+ UInt8 ___filler58[0x610-0x60C];
+
+ UInt16 tmr2Control; // $10610: Timer 2 Control Register
+ UInt16 tmr2Prescaler; // $10612: Timer 2 Prescaler Register
+ UInt16 tmr2Compare; // $10614: Timer 2 Compare Register
+ UInt16 tmr2Capture; // $10616: Timer 2 Capture Register
+ UInt16 tmr2Counter; // $10618: Timer 2 Counter Register
+ UInt16 tmr2Status; // $1061A: Timer 2 Status Register
+
+ UInt8 ___filler59[0x700-0x61C];
+
+ UInt16 spiRxD; // $10700: SPI Unit 1 Receive Data Register
+ UInt16 spiTxD; // $10702: SPI Unit 1 Transmit Data Register
+ UInt16 spiCont1; // $10704: SPI Unit 1 Control/Status Register
+ UInt16 spiIntCS; // $10706: SPI Unit 1 Interrupt control/Status Register
+ UInt16 spiTest; // $10708: SPI Unit 1 Test Register
+ UInt16 spiSpc; // $1070A: SPI Unit 1 Sample period counter register
+
+ UInt8 ___filler60[0x800-0x70C];
+
+ UInt8 i2cAddress; // $10800: I2C Address Register
+
+ UInt8 ___filler61[0x804-0x801];
+
+ UInt8 i2cFreqDiv; // $10804: I2C Frequency Divider Register
+
+ UInt8 ___filler62[0x808-0x805];
+
+ UInt8 i2cControl; // $10808: I2C Control Register
+
+ UInt8 ___filler63[0x80C-0x809];
+
+ UInt8 i2cStatus; // $1080C: I2C Status Register
+
+ UInt8 ___filler64[0x810-0x80D];
+
+ UInt8 i2cDataIO; // $10810: I2C Data I/O Register
+
+ UInt8 ___filler65[0x900-0x811];
+
+ UInt16 uControl; // $10900: Uart 1 Status/Control Register (Uart 1 is the same as the single Uart in EZ)
+ UInt16 uBaud; // $10902: Uart 1 Baud Control Register
+ UInt16 uReceive; // $10904: Uart 1 Receive Register
+ UInt16 uTransmit; // $10906: Uart 1 Transmit Register
+ UInt16 uMisc; // $10908: Uart 1 Miscellaneous Register
+ UInt16 uNonIntPresc; // $1090A: Uart 1 Non-Integer Prescaler
+ UInt16 uFIFOHMark; // $1090C: Uart 1 Half Mark FIFO Register
+
+ UInt8 ___filler66[0x910-0x90E];
+
+ UInt16 u2Control; // $10910: Uart 2 Status/Control Register
+ UInt16 u2Baud; // $10912: Uart 2 Baud Control Register
+ UInt16 u2Receive; // $10914: Uart 2 Receiver Register
+ UInt16 u2Transmit; // $10916: Uart 2 Transmitter Register
+ UInt16 u2Misc; // $10918: Uart 2 Miscellaneous Register
+ UInt16 u2NonIntPresc; // $1091A: Uart 2 Non-Integer Prescaler Register
+ UInt16 u2FIFOHMark; // $1091C: Uart 2 Half Mark FIFO Register
+
+ UInt8 ___filler67[0xB00-0x91E];
+
+ UInt32 rtcHourMinSec; // $10B00: RTC Hours, Minutes, Seconds Register
+ UInt32 rtcAlarm; // $10B04: RTC Alarm Register
+
+ UInt8 ___filler68[0xB0A-0xB08];
+
+ UInt16 rtcWatchDog; // $10B0A: RTC Watchdog Timer
+ UInt16 rtcControl; // $10B0C: RTC Control Register
+ UInt16 rtcIntStatus; // $10B0E: RTC Interrupt Status Register
+ UInt16 rtcIntEnable; // $10B10: RTC Interrupt Enable Register
+ UInt16 stopWatch; // $10B12: Stopwatch Minutes
+
+ UInt8 ___filler69[0xB1A-0xB14];
+
+ UInt16 rtcDay; // $10B1A: RTC Day
+ UInt16 rtcDayAlarm; // $10B1C: RTC Day Alarm
+
+ UInt8 ___filler70[0xC00-0xB1E];
+
+ UInt32 sdramControlE; // $10C00: SDRAM Control Register for Chip Select E
+ UInt32 sdramControlF; // $10C04: SDRAM Control Register for Chip Select F
+ UInt32 edoControlE; // $10C08: EDO Control Register for Chip Select E
+ UInt32 edoControlF; // $10C0C: EDO Control Register for Chip Select F
+ UInt16 secondaryControl; // $10C10: Secondary Control Register
+
+ UInt8 ___filler71[0xD00-0xC12];
+
+ UInt32 emuAddrCompare; // $10D00: Emulation Address Compare Register
+ UInt32 emuAddrMask; // $10D04: Emulation Address Mask Register
+ UInt16 emuControlCompare; // $10D08: Emulation Control Compare Register
+ UInt16 emuControlMask; // $10D0A: Emulation Control Mask Register
+ UInt16 emuControl; // $10DOC: Emulation Control Register
+ UInt16 emuStatus; // $10D0E: Emulation Status Register
+};
+
+typedef volatile struct HwrM68SZ328Type* HwrM68SZ328Ptr;
+
+#define HwrDBallType HwrM68SZ328Type
+#define HwrDBallPtr HwrM68SZ328Ptr
+
+/************************************************************************
+ * ADC / ASP register for SZ
+ ***********************************************************************/
+#define hwrSZ328adcLowPowerOffEnable 0x04000000
+#define hwrSZ328adcVoiceEnable 0x00000004
+#define hwrSZ328adcPenEnable 0x00000002
+
+#define hwrSZ328adcIntEnable 0x00000097
+
+
+/************************************************************************
+ * Chip ID register for SZ
+ ***********************************************************************/
+ #define hwrSZ328chipIDSZ 0x45
+
+/************************************************************************
+ * Mask ID register for SZ
+ ***********************************************************************/
+#define hwrSZ328maskID0H31J 0x01
+#define hwrSZ328maskID0J75C 0x02
+#define hwrSZ328maskID1J75C 0x03
+#define hwrSZ328maskID0J83G 0x04
+
+/************************************************************************
+ * LCD Controller Bits
+ ************************************************************************/
+// lcdCursorXPos Register
+#define hwrSZ328LcdCursorXPosCtlMask 0xC000
+ #define hwrSZ328LcdCursorXPosCtlTrans 0x0000
+ #define hwrSZ328LcdCursorXPosCtlBlack 0x4000
+ #define hwrSZ328LcdCursorXPosCtlReverse 0x8000
+ #define hwrSZ328LcdCursorXPosCtlWhite 0xC000
+#define hwrSZ328LcdCursorXPosValueMask 0x1FF
+// lcdCursorYPos Register
+#define hwrSZ328LcdCursorYPosValueMask 0x1FF
+
+// lcdCursorSize Register
+#define hwrSZ328LcdCursorWidthMask 0x3F
+ #define hwrSZ328LcdCursorWidthOffset 0x8
+#define hwrSZ328LcdCursorHeightMask 0x3F
+
+// lcdBlinkControl Register
+#define hwrSZ328LcdBlinkDivisorMask 0xFF
+
+// lcdPanelControl1 Register
+#define hwrSZ328LcdPanelControlBusMask 0x3000
+ #define hwrSZ328LcdPanelControlBus1Bit 0x0000
+ #define hwrSZ328LcdPanelControlBus2Bit 0x1000
+ #define hwrSZ328LcdPanelControlBus4Bit 0x2000
+#define hwrSZ328LcdPanelControlGrayScale 0x4000
+#define hwrSZ328LcdPanelControl4BitGrayScale 0x0200
+
+// lcdPWMContrastControl Register
+#define hwrSZ328LcdContrastPWMWidthMask 0x00FF
+#define hwrSZ328LcdContrastEnable 0x0100
+#define hwrSZ328LcdLDMask 0x8000
+
+
+
+/************************************************************************
+ * 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 hwrSZ328IntHiUSB 0x8000
+#define hwrSZ328IntHiI2C 0x4000
+#define hwrSZ328IntHiMMC 0x2000
+#define hwrSZ328IntHiPortK 0x1000
+#define hwrSZ328IntHiPortM 0x0800
+#define hwrSZ328IntHiPortN 0x0400
+#define hwrSZ328IntHiPortP 0x0200
+#define hwrSZ328IntHiADC 0x0100
+#define hwrSZ328IntHiEMU 0x0080
+#define hwrSZ328IntHiSampleTimer 0x0040
+#define hwrSZ328IntHiCSPI 0x0020
+#define hwrSZ328IntHiPortR 0x0010
+#define hwrSZ328IntHiIRQ6 0x0008
+#define hwrSZ328IntHiIRQ3 0x0004
+#define hwrSZ328IntHiIRQ2 0x0002
+#define hwrSZ328IntHiIRQ1 0x0001
+
+// intMaskLo bits
+#define hwrSZ328IntLoDMA1 0x8000
+#define hwrSZ328IntLoDMA2 0x4000
+#define hwrSZ328IntLoPWM2 0x2000
+#define hwrSZ328IntLoPWM2Bit 13
+#define hwrSZ328IntLoUART2 0x1000
+#define hwrSZ328IntLoUART2Bit 12
+#define hwrSZ328IntLoPortD 0x0800
+#define hwrSZ328IntLoPortE 0x0400
+#define hwrSZ328IntLoPortF 0x0200
+#define hwrSZ328IntLoPortG 0x0100
+#define hwrSZ328IntLoAllKeys 0x0F00
+#define hwrSZ328IntLoInt0Bit 8
+#define hwrSZ328IntLoPWM 0x0080
+#define hwrSZ328IntLoPWMBit 7
+#define hwrSZ328IntLoPortJ 0x0040
+#define hwrSZ328IntLoTimer2 0x0020
+#define hwrSZ328IntLoTimer2Bit 5
+#define hwrSZ328IntLoRTC 0x0010
+#define hwrSZ328IntLoRTCBit 4
+#define hwrSZ328IntLoWDT 0x0008
+#define hwrSZ328IntLoUART 0x0004
+#define hwrSZ328IntLoUARTBit 2
+#define hwrSZ328IntLoTimer 0x0002
+#define hwrSZ328IntLoTimerBit 1
+#define hwrSZ328IntLoLCDC 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.
+// Note 2: I am going to assume that these have not changed, since the SZ
+// manual is the same as the VZ's (even thought the manual is not followed) [TJC]
+#define hwrSZ328IntCtlEdge1 0x0800
+#define hwrSZ328IntCtlEdge2 0x0400
+#define hwrSZ328IntCtlEdge3 0x0200
+#define hwrSZ328IntCtlEdge6 0x0100
+#define hwrSZ328IntCtlPol1 0x8000
+#define hwrSZ328IntCtlPol2 0x4000
+#define hwrSZ328IntCtlPol3 0x2000
+#define hwrSZ328IntCtlPol6 0x1000
+#define hwrSZ328IntCtlPol5 0x0080
+
+
+/************************************************************************
+ * 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[E,F] bits
+#define hwrSZ328SdramControlEnable 0x80000000
+#define hwrSZ328SdramControlOperatingMode 0x70000000
+ // rsvd
+#define hwrSZ328SdramControlIAM 0x00800000
+ // rsvd
+ // rsvd
+ // rsvd
+#define hwrSZ328SdramControlCASLatency 0x00000300
+
+// edoControl[E,F] bits
+#define hwrSZ328EdoControlEnable 0x80000000
+
+
+/************************************************************************
+ * Timer bits
+ ************************************************************************/
+#define hwrSZ328TmrControlUnused 0xFC00
+#define hwrSZ328TmrControlTIOOutput 0x0200
+#define hwrSZ328TmrControlFreeRun 0x0100
+#define hwrSZ328TmrControlCaptureEdgeMask 0x00C0
+ #define hwrSZ328TmrControlCaptureEdgeNone 0x0000
+ #define hwrSZ328TmrControlCaptureEdgeRising 0x0040
+ #define hwrSZ328TmrControlCaptureEdgeFalling 0x0080
+ #define hwrSZ328TmrControlCaptureEdgeBoth 0x00C0
+#define hwrSZ328TmrControlOutputModeToggle 0x0020
+#define hwrSZ328TmrControlEnInterrupt 0x0010
+#define hwrSZ328TmrControlClkSrcMask 0x000E
+ #define hwrSZ328TmrControlClkSrcStop 0x0000
+ #define hwrSZ328TmrControlClkSrcSys 0x0002
+ #define hwrSZ328TmrControlClkSrcSysBy16 0x0004
+ #define hwrSZ328TmrControlClkSrcTIN 0x0006
+ #define hwrSZ328TmrControlClkSrc32KHz 0x0008
+#define hwrSZ328TmrControlEnable 0x0001
+
+#define hwrSZ328TmrStatusCapture 0x0002
+#define hwrSZ328TmrStatusCaptureBit 1
+#define hwrSZ328TmrStatusCompare 0x0001
+#define hwrSZ328TmrStatusCompareBit 0
+
+
+/************************************************************************
+ * 68SZ328 Serial Port Register Bits
+ ************************************************************************/
+// uControl Register
+#define hwrSZ328UControlUARTEnable 0x8000
+#define hwrSZ328UControlRxEnable 0x4000
+#define hwrSZ328UControlTxEnable 0x2000
+#define hwrSZ328UControlRxClock1xSync 0x1000
+#define hwrSZ328UControlParityEn 0x0800
+#define hwrSZ328UControlParityOdd 0x0400
+#define hwrSZ328UControlStopBits2 0x0200
+#define hwrSZ328UControlDataBits8 0x0100
+#define hwrSZ328UControlOldDataEn 0x0080
+#define hwrSZ328UControlCTSDeltaEn 0x0040
+#define hwrSZ328UControlRxFullEn 0x0020
+#define hwrSZ328UControlRxHalfEn 0x0010
+#define hwrSZ328UControlRxRdyEn 0x0008
+#define hwrSZ328UControlTxEmptyEn 0x0004
+#define hwrSZ328UControlTxHalfEn 0x0002
+#define hwrSZ328UControlTxAvailEn 0x0001
+
+#define hwrSZ328UControlEnableAll (hwrSZ328UControlUARTEnable | \
+ hwrSZ328UControlRxEnable | \
+ hwrSZ328UControlTxEnable)
+
+// uBaud Register
+// UCLK output requires PE3 Select to be 0
+#define hwrSZ328UBaudUCLKDirOut 0x2000
+#define hwrSZ328UBaudBaudSrcUCLK 0x0800
+#define hwrSZ328UBaudDivider 0x0700
+#define hwrSZ328UBaudPrescaler 0x003F
+
+#define hwrSZ328UBaudDivideBitOffset 8
+
+
+// uReceive Register
+#define hwrSZ328UReceiveFIFOFull 0x8000
+#define hwrSZ328UReceiveFIFOHalf 0x4000
+#define hwrSZ328UReceiveDataRdy 0x2000
+#define hwrSZ328UReceiveDataRdyBit 13
+#define hwrSZ328UReceiveOldData 0x1000
+#define hwrSZ328UReceiveOverrunErr 0x0800
+#define hwrSZ328UReceiveOverrunErrBit 11
+#define hwrSZ328UReceiveFrameErr 0x0400
+#define hwrSZ328UReceiveFrameErrBit 10
+#define hwrSZ328UReceiveBreakErr 0x0200
+#define hwrSZ328UReceiveBreakErrBit 9
+#define hwrSZ328UReceiveParityErr 0x0100
+#define hwrSZ328UReceiveParityErrBit 8
+#define hwrSZ328UReceiveData 0x00FF
+
+#define hwrSZ328UReceiveErrsMask (hwrSZ328UReceiveOverrunErr | \
+ hwrSZ328UReceiveFrameErr | \
+ hwrSZ328UReceiveBreakErr | \
+ hwrSZ328UReceiveParityErr)
+
+// uTransmit Register
+#define hwrSZ328UTransmitFIFOEmpty 0x8000
+#define hwrSZ328UTransmitFIFOHalf 0x4000
+#define hwrSZ328UTransmitTxAvail 0x2000
+#define hwrSZ328UTransmitSendBreak 0x1000
+#define hwrSZ328UTransmitIgnoreCTS 0x0800
+#define hwrSZ328UTransmitBusy 0x0400
+#define hwrSZ328UTransmitCTSStatus 0x0200
+#define hwrSZ328UTransmitCTSDelta 0x0100
+#define hwrSZ328UTransmitData 0x00FF
+
+// uMisc Register
+#define hwrSZ328UMiscBaudTest 0x8000
+#define hwrSZ328UMiscClkSrcUCLK 0x4000
+#define hwrSZ328UMiscForceParityErr 0x2000
+#define hwrSZ328UMiscLoopback 0x1000
+#define hwrSZ328UMiscBaudReset 0x0800
+#define hwrSZ328UMiscIRTestEn 0x0400
+#define hwrSZ328UMiscReservedMask 0x0300
+#define hwrSZ328UMiscRTSThruFIFO 0x0080
+#define hwrSZ328UMiscRTSOut 0x0040
+#define hwrSZ328UMiscIRDAEn 0x0020
+#define hwrSZ328UMiscLoopIRDA 0x0010
+#define hwrSZ328UMiscRXPolarityInv 0x0008
+#define hwrSZ328UMiscTXPolarityInv 0x0004
+#define hwrSZ328UMiscErrorIntStatus 0x0002
+#define hwrSZ328UMiscErrorIntEnable 0x0001
+#define hwrSZ328UMiscUnused 0x0000
+
+// uNonIntPresc Register
+#define hwrSZ328UNonIntPrescSrcIntPresc 0x0000
+#define hwrSZ328UNonIntPrescSrcNonIntPresc 0x8000
+
+#define hwrSZ328UNonIntPrescSelDiv128 0x0000
+#define hwrSZ328UNonIntPrescSelDiv64 0x0100
+#define hwrSZ328UNonIntPrescSelDiv32 0x0200
+#define hwrSZ328UNonIntPrescSelDiv16 0x0300
+#define hwrSZ328UNonIntPrescSelDiv8 0x0400
+#define hwrSZ328UNonIntPrescSelDiv4 0x0500
+#define hwrSZ328UNonIntPrescSelDiv2 0x0600
+#define hwrSZ328UNonIntPrescSelDiv1 0x0700
+
+#define hwrSZ328UNonIntPrescStepMask 0x00FF
+#define hwrSZ328UNonIntPrescSelOffset 8
+
+// see SZ 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 hwrSZ328UNonIntPrescIRDAMode (hwrSZ328UNonIntPrescSrcIntPresc \
+ | hwrSZ328UNonIntPrescSelDiv32 \
+ | (hwrSZ328UNonIntPrescStepMask & 0x20))
+#endif
+
+/************************************************************************
+ * PWM Bits
+ ************************************************************************/
+// PWM register bits of interest
+#define hwrSZ328PWMControlEnable 0x0010
+#define hwrSZ328PWMControlEnableBit 4
+#define hwrSZ328PWMControlEnableIRQ 0x0040
+#define hwrSZ328PWMIRQStatus 0x0080
+// PWM divider chain output selectors
+#define hwrSZ328PWMControlDivMask 0x0003
+#define hwrSZ328PWMControlDivBy2 0x0
+#define hwrSZ328PWMControlDivBy4 0x1
+#define hwrSZ328PWMControlDivBy8 0x2
+#define hwrSZ328PWMControlDivBy16 0x3
+// PWM Repeat Counts
+#define hwrSZ328PWMRepeatSample1x 0x0
+#define hwrSZ328PWMRepeatSample2x 0x4
+#define hwrSZ328PWMRepeatSample4x 0x8
+#define hwrSZ328PWMRepeatSample8x 0xC
+// PWM hardware constraints
+#define hwrSZ328PWMFifoSizeInBytes 4
+#define hwrSZ328PWMPrescalerMask 0x7F00
+#define hwrSZ328PWMPrescalerOffset 8
+
+/************************************************************************
+ * PLL Bits
+ ************************************************************************/
+#define hwrSZ328PLLControlMCURestart 0x8000
+#define hwrSZ328PLLControlUSBRestart 0x4000
+#define hwrSZ328PLLControlClkEnable 0x0010
+#define hwrSZ328PLLControlMCUDisable 0x0008
+#define hwrSZ328PLLControlUSBDisable 0x0004
+
+#define hwrSZ328PLLControlSysDMADiv2 0x0000
+#define hwrSZ328PLLControlSysDMADiv4 0x0100
+#define hwrSZ328PLLControlSysDMADiv8 0x0200
+#define hwrSZ328PLLControlSysDMADiv16 0x0300
+#define hwrSZ328PLLControlSysDMADiv1 0x0400
+
+#define hwrSZ328PLLControlPixDMADiv2 0x0000
+#define hwrSZ328PLLControlPixDMADiv4 0x0800
+#define hwrSZ328PLLControlPixDMADiv8 0x1000
+#define hwrSZ328PLLControlPixDMADiv16 0x1800
+#define hwrSZ328PLLControlPixDMADiv1 0x2000
+
+
+/************************************************************************
+ * Real Time Clock (RTC) Bits
+ ************************************************************************/
+
+// RTC Control Register (RTCCTL / rtcControl) bits
+#define hwrSZ328RTCControlRTCEnable 0x0080
+
+// RTC Interrupt Enable Register (RTCIENR / rtcIntEnable) bits
+#define hwrSZ328RTCIntEnableSample7 0x8000
+#define hwrSZ328RTCIntEnableSample6 0x4000
+#define hwrSZ328RTCIntEnableSample5 0x2000
+#define hwrSZ328RTCIntEnableSample4 0x1000
+#define hwrSZ328RTCIntEnableSample3 0x0800
+#define hwrSZ328RTCIntEnableSample2 0x0400
+#define hwrSZ328RTCIntEnableSample1 0x0200
+#define hwrSZ328RTCIntEnableSample0 0x0100
+#define hwrSZ328RTCIntEnableHour 0x0020
+#define hwrSZ328RTCIntEnableSec 0x0010
+#define hwrSZ328RTCIntEnable24Hr 0x0008
+#define hwrSZ328RTCIntEnableAlarm 0x0004
+#define hwrSZ328RTCIntEnableMinute 0x0002
+#define hwrSZ328RTCIntEnableStopWatch 0x0001
+
+// RTC Interrupt Status Register bits (rtcIntStatus)
+#define hwrSZ328RTCIntStatusSample7 0x8000
+#define hwrSZ328RTCIntStatusSample6 0x4000
+#define hwrSZ328RTCIntStatusSample5 0x2000
+#define hwrSZ328RTCIntStatusSample4 0x1000
+#define hwrSZ328RTCIntStatusSample3 0x0800
+#define hwrSZ328RTCIntStatusSample2 0x0400
+#define hwrSZ328RTCIntStatusSample1 0x0200
+#define hwrSZ328RTCIntStatusSample0 0x0100
+#define hwrSZ328RTCIntStatusHour 0x0020
+#define hwrSZ328RTCIntStatusSec 0x0010
+#define hwrSZ328RTCIntStatus24Hr 0x0008
+#define hwrSZ328RTCIntStatusAlarm 0x0004
+#define hwrSZ328RTCIntStatusMinute 0x0002
+#define hwrSZ328RTCIntStatusStopWatch 0x0001
+
+// RTC Alarm register (RTCALRM / rtcAlarm) masks and offsets
+#define hwrSZ328RTCAlarmSecondsMask 0x0000003fL
+#define hwrSZ328RTCAlarmSecondsOffset 0
+#define hwrSZ328RTCAlarmMinutesMask 0x003f0000L
+#define hwrSZ328RTCAlarmMinutesOffset 16
+#define hwrSZ328RTCAlarmHoursMask 0x1f000000L
+#define hwrSZ328RTCAlarmHoursOffset 24
+
+// RTC hours/minutes/seconds register (RTCHMS / rtcHourMinSec) masks and offsets
+#define hwrSZ328RTCHourMinSecSecondsMask 0x0000003fL
+#define hwrSZ328RTCHourMinSecSecondsOffset 0
+#define hwrSZ328RTCHourMinSecMinutesMask 0x003f0000L
+#define hwrSZ328RTCHourMinSecMinutesOffset 16
+#define hwrSZ328RTCHourMinSecHoursMask 0x1f000000L
+#define hwrSZ328RTCHourMinSecHoursOffset 24
+
+// RTC Day register masks/offsets
+#define hwrSZ328RTCDayDayMask 0x01FF
+#define hwrSZ328RTCDayDayOffset 0
+
+// RTC Watchdog Timer masks/offsets
+#define hwrSZ328RTCWatchdogEnable 0x0001
+#define hwrSZ328RTCWatchdogIntSel 0x0002
+#define hwrSZ328RTCWatchdogIntStatus 0x0080
+#define hwrSZ328RTCWatchdogCountMask 0x0300
+#define hwrSZ328RTCWatchdogCountOffset 8
+
+/************************************************************************
+ * SPI Master bits
+ ************************************************************************/
+
+// spiCont1 Register
+#define hwrSZ328SPIMControlRateMask 0xE000
+ #define hwrSZ328SPIMControlRateDiv4 0x0000
+ #define hwrSZ328SPIMControlRateDiv8 0x2000
+ #define hwrSZ328SPIMControlRateDiv16 0x4000
+ #define hwrSZ328SPIMControlRateDiv32 0x6000
+ #define hwrSZ328SPIMControlRateDiv64 0x8000
+ #define hwrSZ328SPIMControlRateDiv128 0xA000
+ #define hwrSZ328SPIMControlRateDiv256 0xC000
+ #define hwrSZ328SPIMControlRateDiv512 0xE000
+#define hwrSZ328SPIMControlEnable 0x0200
+#define hwrSZ328SPIMControlExchange 0x0100
+#define hwrSZ328SPIMControlIntStatus 0x0080
+#define hwrSZ328SPIMControlIntEnable 0x0040
+#define hwrSZ328SPIMControlOppPhase 0x0020
+#define hwrSZ328SPIMControlInvPolarity 0x0010
+#define hwrSZ328SPIMControlBitsMask 0x000F
+
+
+#endif // INCLUDE_SECRET_STUFF
+
+#endif // __M68SZ328_H__
+
+#endif // NON_PORTABLE