; Copyright 2002 Tematic Ltd
;
; 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.
;

; Structure of generic HAL devices, as described in Kernel.Docs.HAL.NewAPI

OldOpt  SETA    {OPT}
        OPT     OptNoList+OptNoP1List

 [ :LNOT: :DEF: Included_Hdr_HALDevice
                       GBLL Included_Hdr_HALDevice
Included_Hdr_HALDevice SETL {TRUE}


                        ^       0
HALDevice_Type          #       2
HALDevice_ID            #       2
HALDevice_Location      #       4
HALDevice_Version       #       4
HALDevice_Description   #       4
HALDevice_Address       #       4
                        #       12
HALDevice_Activate      #       4
HALDevice_Deactivate    #       4
HALDevice_Reset         #       4
HALDevice_Sleep         #       4
HALDevice_Device        #       4
HALDevice_TestIRQ       #       4
                        #       8
HALDeviceSize           *       :INDEX: @


HALDeviceType_Video     *       1 :SHL: 8
                        ^       1
HALDeviceVideo_VDU      #       1       ; VDU display

HALDeviceType_Audio     *       2 :SHL: 8
                        ^       1
HALDeviceAudio_PCM16    #       1       ; 16-bit PCM sound output

HALDeviceType_SysPeri   *       3 :SHL: 8
                        ^       1
HALDeviceSysPeri_IntC   #       1       ; Interrupt controller
HALDeviceSysPeri_DMAC   #       1       ; DMA controller
HALDeviceSysPeri_DMAB   #       1       ; DMA channel - buffer type
HALDeviceSysPeri_DMAL   #       1       ; DMA channel - list type

HALDeviceType_Comms     *       4 :SHL: 8
                        ^       1
HALDeviceComms_UART     #       1       ; UART


HALDeviceBus_Pro        *       0 :SHL: 28
                        ^       0
HALDeviceProBus_Core    #       1 :SHL: 24
HALDeviceProBus_CoPro   #       1 :SHL: 24

HALDeviceBus_Sys        *       1 :SHL: 28
                        ^       0
HALDeviceSysBus_AHB     #       1 :SHL: 24
HALDeviceSysBus_ASB     #       1 :SHL: 24

HALDeviceBus_Peri       *       2 :SHL: 28
                        ^       0
HALDevicePeriBus_APB    #       1 :SHL: 24

HALDeviceBus_Exp        *       3 :SHL: 28
                        ^       0
HALDeviceExpBus_Acorn   #       1 :SHL: 24
HALDeviceExpBus_ISA     #       1 :SHL: 24
HALDeviceExpBus_PCI     #       1 :SHL: 24

 ]

        OPT     OldOpt
        END