; 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_FIQDisableCode      #       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_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_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
EntryNo_HAL_ControllerAddress   #       1
EntryNo_HAL_HardwareInfo        #       1
EntryNo_HAL_SuperIOInfo         #       1
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

; 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_Fast            * 1:SHL:16
IICFlag_HighSpeed       * 1:SHL:17

        END