; Copyright 2000 Pace Micro Technology plc
;
; Licensed under the Apache License, Version 2.0 (the "License");
; you may not use this file except in compliance with the License.
; You may obtain a copy of the License at
;
;     http://www.apache.org/licenses/LICENSE-2.0
;
; Unless required by applicable law or agreed to in writing, software
; distributed under the License is distributed on an "AS IS" BASIS,
; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
; See the License for the specific language governing permissions and
; limitations under the License.
;
; The layout of the HAL descriptor

                        ^       0
HALDesc_Flags           #       4
HALDesc_Start           #       4
HALDesc_Size            #       4
HALDesc_Entries         #       4
HALDesc_NumEntries      #       4
HALDesc_Workspace       #       4
HALDesc_size            #       4

; Entries to the HAL from the OS

                                ^       0
EntryNo_HAL_Init                #       1

EntryNo_HAL_IRQEnable           #       1
EntryNo_HAL_IRQDisable          #       1
EntryNo_HAL_IRQClear            #       1
EntryNo_HAL_IRQSource           #       1
EntryNo_HAL_IRQStatus           #       1
EntryNo_HAL_FIQEnable           #       1
EntryNo_HAL_FIQDisable          #       1
EntryNo_HAL_FIQDisableAll       #       1
EntryNo_HAL_FIQClear            #       1
EntryNo_HAL_FIQSource           #       1
EntryNo_HAL_FIQStatus           #       1

EntryNo_HAL_Timers              #       1
EntryNo_HAL_TimerDevice         #       1
EntryNo_HAL_TimerGranularity    #       1
EntryNo_HAL_TimerMaxPeriod      #       1
EntryNo_HAL_TimerSetPeriod      #       1
EntryNo_HAL_TimerPeriod         #       1
EntryNo_HAL_TimerReadCountdown  #       1

EntryNo_HAL_CounterRate         #       1
EntryNo_HAL_CounterPeriod       #       1
EntryNo_HAL_CounterRead         #       1
EntryNo_HAL_CounterDelay        #       1

EntryNo_HAL_NVMemoryType        #       1
EntryNo_HAL_NVMemorySize        #       1
EntryNo_HAL_NVMemoryPageSize    #       1
EntryNo_HAL_NVMemoryProtectedSize #     1
EntryNo_HAL_NVMemoryProtection  #       1
EntryNo_HAL_NVMemoryIICAddress  #       1
EntryNo_HAL_NVMemoryRead        #       1
EntryNo_HAL_NVMemoryWrite       #       1

EntryNo_HAL_IICBuses            #       1
EntryNo_HAL_IICType             #       1
EntryNo_HAL_IICSetLines         #       1
EntryNo_HAL_IICReadLines        #       1
EntryNo_HAL_IICDevice           #       1
EntryNo_HAL_IICTransfer         #       1
EntryNo_HAL_IICMonitorTransfer  #       1

EntryNo_HAL_VideoFlybackDevice        #  1
EntryNo_HAL_Video_SetMode             #  1
EntryNo_HAL_Video_WritePaletteEntry   #  1
EntryNo_HAL_Video_WritePaletteEntries #  1
EntryNo_HAL_Video_ReadPaletteEntry    #  1
EntryNo_HAL_Video_SetInterlace        #  1
EntryNo_HAL_Video_SetBlank            #  1
EntryNo_HAL_Video_SetPowerSave        #  1
EntryNo_HAL_Video_UpdatePointer       #  1
EntryNo_HAL_Video_SetDAG              #  1
EntryNo_HAL_Video_VetMode             #  1
EntryNo_HAL_Video_PixelFormats        #  1
EntryNo_HAL_Video_Features            #  1
EntryNo_HAL_Video_BufferAlignment     #  1
EntryNo_HAL_Video_OutputFormat        #  1

EntryNo_HAL_MatrixColumns       #       1
EntryNo_HAL_MatrixScan          #       1

EntryNo_HAL_TouchscreenType     #       1
EntryNo_HAL_TouchscreenRead     #       1
EntryNo_HAL_TouchscreenMode     #       1
EntryNo_HAL_TouchscreenMeasure  #       1

EntryNo_HAL_MachineID           #       1 ; ReadSysInfo 2
EntryNo_HAL_ControllerAddress   #       1 ; Memory 9
EntryNo_HAL_HardwareInfo        #       1 ; ReadSysInfo 2
EntryNo_HAL_SuperIOInfo         #       1 ; ReadSysInfo 3
EntryNo_HAL_PlatformInfo        #       1 ; ReadSysInfo 8
EntryNo_HAL_CleanerSpace        #       1

EntryNo_HAL_UARTPorts           #       1
EntryNo_HAL_UARTStartUp         #       1
EntryNo_HAL_UARTShutdown        #       1
EntryNo_HAL_UARTFeatures        #       1
EntryNo_HAL_UARTReceiveByte     #       1
EntryNo_HAL_UARTTransmitByte    #       1
EntryNo_HAL_UARTLineStatus      #       1
EntryNo_HAL_UARTInterruptEnable #       1
EntryNo_HAL_UARTRate            #       1
EntryNo_HAL_UARTFormat          #       1
EntryNo_HAL_UARTFIFOSize        #       1
EntryNo_HAL_UARTFIFOClear       #       1
EntryNo_HAL_UARTFIFOEnable      #       1
EntryNo_HAL_UARTFIFOThreshold   #       1
EntryNo_HAL_UARTInterruptID     #       1
EntryNo_HAL_UARTBreak           #       1
EntryNo_HAL_UARTModemControl    #       1
EntryNo_HAL_UARTModemStatus     #       1
EntryNo_HAL_UARTDevice          #       1

EntryNo_HAL_Reset               #       1
EntryNo_HAL_DebugRX             #       1
EntryNo_HAL_DebugTX             #       1

EntryNo_HAL_PCIFeatures         #       1
EntryNo_HAL_PCIReadConfigByte   #       1
EntryNo_HAL_PCIReadConfigHalfword #     1
EntryNo_HAL_PCIReadConfigWord   #       1
EntryNo_HAL_PCIWriteConfigByte  #       1
EntryNo_HAL_PCIWriteConfigHalfword #     1
EntryNo_HAL_PCIWriteConfigWord  #       1
EntryNo_HAL_PCISpecialCycle     #       1
EntryNo_HAL_PCISlotNumber       #       1
EntryNo_HAL_PCIAddresses        #       1

EntryNo_HAL_ATAControllerInfo   #       1
EntryNo_HAL_ATASetModes         #       1
EntryNo_HAL_ATACableID          #       1

EntryNo_HAL_InitDevices         #       1

; Quick bodge until devices are working...
EntryNo_HAL_DMA_Activate              #       1
EntryNo_HAL_DMA_Deactivate            #       1
EntryNo_HAL_DMA_Reset                 #       1
EntryNo_HAL_DMA_Sleep                 #       1
EntryNo_HAL_DMA_TestIRQ               #       1
EntryNo_HAL_DMA_DMA_EnumeratePhysical #       1
EntryNo_HAL_DMA_DMA_EnumerateLogical  #       1
EntryNo_HAL_DMA_DMA_Allocate          #       1
EntryNo_HAL_DMA_DMA_Deallocate        #       1
EntryNo_HAL_DMA_DMA_Features          #       1
EntryNo_HAL_DMA_DMA_SetOptions        #       1
EntryNo_HAL_DMA_DMA_SetCurrentTransfer #      1
EntryNo_HAL_DMA_DMA_SetNextTransfer   #       1
EntryNo_HAL_DMA_DMA_TransferState     #       1
EntryNo_HAL_DMA_DMA_SetCurrentTransfer2 #     1
EntryNo_HAL_DMA_DMA_SetNextTransfer2  #       1
EntryNo_HAL_DMA_DMA_TransferState2    #       1
EntryNo_HAL_DMA_DMA_IRQClear          #       1
EntryNo_HAL_DMA_DMA_Status            #       1

; Various flags and constants

; NVMemory

NVMemoryFlag_None               * 0
NVMemoryFlag_MaybeIIC           * 1
NVMemoryFlag_IIC                * 2
NVMemoryFlag_HAL                * 3
NVMemoryFlag_Provision          * 7 ; mask for provision
NVMemoryFlag_ProtectAtEnd       * 1:SHL:8   ; Protected region at end
NVMemoryFlag_Deprotectable      * 1:SHL:9
NVMemoryFlag_LowRead            * 1:SHL:10  ; locations 0-15 are readable
NVMemoryFlag_LowWrite           * 1:SHL:11  ; locations 0-15 are writeable

; IIC

IICFlag_LowLevel        * 1:SHL:0
IICFlag_HighLevel       * 1:SHL:1
IICFlag_Background      * 1:SHL:4
IICFlag_Fast            * 1:SHL:16
IICFlag_HighSpeed       * 1:SHL:17

        END