palm-os-sdk/sdk-1/include/Core/Hardware/HardwareTD1.h
2016-08-25 07:53:48 -03:00

309 lines
12 KiB
C

/*******************************************************************
* Touchdown Software
*
* Copyright(c) 1994, Palm Computing Inc., All Rights Reserved
*
*-------------------------------------------------------------------
* FileName:
* HardwareTD1.h
*
* Description:
* Hardware Equates for the TD1 platform. This header file
* contains equates specific to Hardware platform TD1.
* It is included only in the modules "ROMHardwareTD1.c" and
* "AMXHardwareTD1.c".
*
* History:
* 6/13/95 RM - Created by Ron Marianetti
*
*******************************************************************/
#ifdef NON_PORTABLE // So app's don't mistakenly include this
#ifndef __HARDWARETD1_H__
#define __HARDWARETD1_H__
#if HW_REV == 1
/************************************************************************
* Port F Bit settings
************************************************************************/
#define hwrTD1PortFPanelYPOff 0x01 // (L) Vcc to Y Panel
#define hwrTD1PortFPanelYMOn 0x02 // (H) Gnd to Y Panel
#define hwrTD1PortFPanelXPOff 0x04 // (L) Vcc to X Panel
#define hwrTD1PortFPanelXMOn 0x08 // (H) Gnd to X Panel
#define hwrTD1PortFUnused4 0x10
#define hwrTD1PortFUnused5 0x20
#define hwrTD1PortFUnused6 0x40
#define hwrTD1PortFSerialOn 0x80 // (H) Serial driver Enable
// Configurations of the panel control bits
#define hwrTD1PortFPanelMask 0x0F // Panel control bits
// Configure for lowest power
#define hwrTD1PortFPanelCfgOff (hwrTD1PortFPanelYPOff | \
hwrTD1PortFPanelXPOff)
// Configure to generate pen interrupt
#define hwrTD1PortFPanelCfgPenIRQ (hwrTD1PortFPanelXMOn | \
hwrTD1PortFPanelYPOff | \
hwrTD1PortFPanelXPOff)
// Configure to Measure Y Position
#define hwrTD1PortFPanelCfgYMeas (hwrTD1PortFPanelXMOn | \
hwrTD1PortFPanelYPOff)
// Configure to Measure X Position
#define hwrTD1PortFPanelCfgXMeas (hwrTD1PortFPanelXPOff | \
hwrTD1PortFPanelYMOn)
/************************************************************************
* Port J Bit Assignments
************************************************************************/
#define hwrTD1PortJADCSOff 0x02 // (L) A/D Chip select
#define hwrTD1PortJBattOff 0x10 // (L) Battery Voltage measure
#define hwrTD1PortJLCDEnableOn 0x20 // (H) LCD Display On
#define hwrTD1PortJLCDVccOff 0x40 // (L) LCD Vcc
#define hwrTD1PortJLCDVeeOn 0x80 // (H) LCD Vee
/************************************************************************
* Port K Bit Assignments
************************************************************************/
#define hwrTD1PortKSelfRefOff 0x08 // (L) PSRAM Self Refresh mode
#define hwrTD1PortKSelfRefOffBit 3
/************************************************************************
* Port M Bit Assignments
************************************************************************/
#define hwrTD1PortMVccFail 0x04 // (L) Input indicates 3.3v is too low
#define hwrTD1PortMCardIRQ 0x08 // (L) IRQ3 input from card
#define hwrTD1PortMUnused4 0x10 // Unused (IRQ2)
#define hwrTD1PortMDockButton 0x20 // (L) Sync button from Serial Doc
#define hwrTD1PortMPenIO 0x40 // Pen input/output
#define hwrTD1PortMDockIn 0x80 // (L) Gen. Purpose input from Serial Doc
/************************************************************************
* SPIM Base Configuration
************************************************************************/
#define hwrTD1SPIMBaseControl (hwr328SPIMControlRateDiv32 | \
hwr328SPIMControlIntEnable | \
hwr328SPIMControlInvPolarity | \
hwr328SPIMControlOppPhase | \
16-1)
/************************************************************************
* Macros for turning write-protection on/off
* These are used in-line for MemSemaphoreReserve and MemSemaphoreRelease
* for performance reasons.
************************************************************************/
#define hwrWriteProtectOff() \
{ \
HwrDBallPtr baseP = (HwrDBallPtr)hwr68328Base; \
/* Word mask; */ \
\
/* DOLATER.. take this out.... */ \
/* mask = baseP->csAGroupMask; */ \
\
/* Clr read-only bit in chip select register for storage area */ \
baseP->csASelect1 &= ~(0x0008); \
baseP->csASelect2 &= ~(0x0008); \
\
/* DOLATER.. take this out... */ \
/* baseP->csAGroupMask = mask; */ \
}
#ifndef BUILD_OPTION_WP_OFF
#define hwrWriteProtectOn() \
{ \
HwrDBallPtr baseP = (HwrDBallPtr)hwr68328Base; \
/* Word mask; */ \
\
/* DOLATER.. take this out.... */ \
/* mask = baseP->csAGroupMask; */ \
\
/* Set read-only bit in chip select register for storage area */ \
baseP->csASelect1 |= (0x0008); \
baseP->csASelect2 |= (0x0008); \
\
/* DOLATER.. take this out... */ \
/* baseP->csAGroupMask = mask; */ \
}
#else
#define hwrWriteProtectOn()
#endif
#elif HW_REV >= 2
/************************************************************************
* Port D Bit settings
************************************************************************/
#define hwrTD1PortDNoExtPower 0x80 // (L) External DC input
/************************************************************************
* Port F Bit settings
************************************************************************/
#define hwrTD1PortFPanelYPOff 0x01 // (L) Vcc to Y Panel
#define hwrTD1PortFPanelYMOn 0x02 // (H) Gnd to Y Panel
#define hwrTD1PortFPanelXPOff 0x04 // (L) Vcc to X Panel
#define hwrTD1PortFPanelXMOn 0x08 // (H) Gnd to X Panel
#define hwrTD1PortFLCDEnableOn 0x10 // (H) LCD Display on
#define hwrTD1PortFLCDVccOff 0x20 // (L) LCD Vcc
#define hwrTD1PortFLCDVeeOn 0x40 // (H) LCD Vee
#define hwrTD1PortFADCSOff 0x80 // (L) A/D Chip Select
// Configurations of the panel control bits
#define hwrTD1PortFPanelMask 0x0F // Panel control bits
// Configure for lowest power
#define hwrTD1PortFPanelCfgOff (hwrTD1PortFPanelYPOff | \
hwrTD1PortFPanelXPOff)
// Configure to generate pen interrupt
#define hwrTD1PortFPanelCfgPenIRQ (hwrTD1PortFPanelXMOn | \
hwrTD1PortFPanelYPOff | \
hwrTD1PortFPanelXPOff)
// Configure to Measure Y Position
#define hwrTD1PortFPanelCfgYMeas (hwrTD1PortFPanelXMOn | \
hwrTD1PortFPanelYPOff)
// Configure to Measure X Position
#define hwrTD1PortFPanelCfgXMeas (hwrTD1PortFPanelXPOff | \
hwrTD1PortFPanelYMOn)
/************************************************************************
* Port G Bit Assignments
************************************************************************/
#define hwrTD1PortGSerialOn 0x08 // (H) Serial Driver Enable
#define hwrTD1PortGBattOff 0x10 // (L) Battery Voltage Measure
#define hwrTD1PortGRefreshOut 0x20 // (L) Timer 1 output to signal refresh
#define hwrTD1PortGSelfRefOff 0x40 // (L) PSRAM Self Refresh mode
#define hwrTD1PortGSelfRefOffBit 6 // Bit # for above
#define hwrTD1PortGDockOut1 0x80 // (H) Gen. Purpose output on Serial Doc
/************************************************************************
* Port M Bit Assignments
************************************************************************/
#define hwrTD1PortMVccFail 0x04 // (L) Input indicates 3.3v is too low
#define hwrTD1PortMCardIRQ 0x08 // (L) IRQ3 input from card
#define hwrTD1PortMUnused4 0x10 // Unused (IRQ2)
#define hwrTD1PortMDockButton 0x20 // (L) Sync button from Serial Doc
#define hwrTD1PortMPenIO 0x40 // Pen input/output
#define hwrTD1PortMDockIn 0x80 // (L) Gen. Purpose input from Serial Doc
/************************************************************************
* SPIM Base Configuration
************************************************************************/
#define hwrTD1SPIMBaseControl (hwr328SPIMControlRateDiv16 | \
hwr328SPIMControlIntEnable | \
hwr328SPIMControlInvPolarity | \
hwr328SPIMControlOppPhase | \
16-1)
/************************************************************************
* Macros for turning write-protection on/off
* These are used in-line for MemSemaphoreReserve and MemSemaphoreRelease
* for performance reasons.
************************************************************************/
#define hwrWriteProtectOff() \
{ \
HwrDBallPtr baseP = (HwrDBallPtr)hwr68328Base; \
/* Word mask; */ \
\
/* DOLATER.. take this out.... */ \
/* mask = baseP->csAGroupMask; */ \
\
/* Clr read-only bit in chip select register for storage area */ \
baseP->csASelect1 &= ~(0x0008); \
baseP->csASelect3 &= ~(0x0008); \
\
/* DOLATER.. take this out... */ \
/*baseP->csAGroupMask = mask; */ \
}
#ifndef BUILD_OPTION_WP_OFF
#define hwrWriteProtectOn() \
{ \
HwrDBallPtr baseP = (HwrDBallPtr)hwr68328Base; \
/* Word mask; */ \
\
/* DOLATER.. take this out.... */ \
/* mask = baseP->csAGroupMask; */ \
\
/* Set read-only bit in chip select register for storage area */ \
baseP->csASelect1 |= (0x0008); \
baseP->csASelect3 |= (0x0008); \
\
/* DOLATER.. take this out... */ \
/*baseP->csAGroupMask = mask; */ \
}
#else
#define hwrWriteProtectOn()
#endif
#else // HW_REV==2
#error "Compiler variable HW_REV not valid!!!"
#endif
/************************************************************************
*Initial values for the PLL. We set the system clock to be VCO/2 so
* the system clock speed becomes:
*
* 32768 * ((hwrTD1FreqSelP + 1) * 14 + hwrTD1FreqSelQ + 1)
* --------------------------------------------------------
* 2
************************************************************************/
// NON-ASIC versions must run at 8 Mhz.
#if HW_REV < 4
#define hwrTD1PLLControl (hwr328PLLControlClkEn | \
hwr328PLLControlSysVCODiv2 | \
hwr328PLLControlPixVCODiv2)
//#define hwrTD1FreqSelQ 0x05
#define hwrTD1FreqSelQ 0x07 // vmk 11/20/95 tunes clock freq for 38400 baud,
// allowing standard baud rates 2400-57600 to function
//#define hwrTD1FreqSelP 0x23
#define hwrTD1FreqSelP 0x24
#define hwrTD1Frequency (32768*((hwrTD1FreqSelP+1)*14+hwrTD1FreqSelQ+1)/2)
// OLD ASIC versions must run between 10 and 12.5 Mhz.
#elif HW_REV == 4
#define hwrTD1PLLControl (hwr328PLLControlClkEn | \
hwr328PLLControlSysVCODiv1 | \
hwr328PLLControlPixVCODiv1)
#define hwrTD1FreqSelQ 0x05
#define hwrTD1FreqSelP 0x19
#define hwrTD1Frequency (32768*((hwrTD1FreqSelP+1)*14+hwrTD1FreqSelQ+1)/1)
// NEW ASIC versions run at 16.580608 Mhz
#else
#define hwrTD1PLLControl (hwr328PLLControlClkEn | \
hwr328PLLControlSysVCODiv1 | \
hwr328PLLControlPixVCODiv1)
#define hwrTD1FreqSelQ 0x01
#define hwrTD1FreqSelP 0x23
#define hwrTD1Frequency (32768*((hwrTD1FreqSelP+1)*14+hwrTD1FreqSelQ+1)/1)
#endif
#endif //__HARDWARETD1_H__
#endif // NON_PORTABLE