; 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
HALDevice_Reserved1     #       12
HALDevice_Activate      #       4
HALDevice_Deactivate    #       4
HALDevice_Reset         #       4
HALDevice_Sleep         #       4
HALDevice_Device        #       4
HALDevice_TestIRQ       #       4
HALDevice_ClearIRQ      #       4
HALDevice_Reserved2     #       4
HALDeviceSize           *       :INDEX: @


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

HALDeviceType_Audio     *       2 :SHL: 8
                        ^       1
HALDeviceAudio_AudC     #       1       ; 16-bit sound input/output controller
HALDeviceAudio_Mixer    #       1       ; Sound I/O mixer

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
HALDeviceSysPeri_RTC    #       1       ; RTCDevice
HALDeviceSysPeri_CPUClk #       1       ; CPU clock generator
HALDeviceSysPeri_BMU    #       1       ; Battery management unit
HALDeviceSysPeri_NVRAM  #       1       ; Low capacity non volatile storage
HALDeviceSysPeri_CacheC #       1       ; Cache controller

HALDeviceType_Comms      *      4 :SHL: 8
                         ^      1
HALDeviceComms_UART      #      1       ; UART
HALDeviceComms_EtherNIC  #      1       ; Ethernet NIC
HALDeviceComms_GPIO      #      1       ; GPIO interface
HALDeviceComms_InterProc #      1       ; Inter-processor mailboxes, etc.
HALDeviceComms_SPI       #      1       ; SPI
HALDeviceComms_ARMDBell  #      1       ; Doorbell for signaling other ARM cores

HALDeviceType_ExpCtl    *       5 :SHL: 8
                        ^       1
HALDeviceExpCtl_SDIO    #       1       ; SD/SDIO host controller
HALDeviceExpCtl_AHCI    #       1       ; AHCI SATA bus interface
HALDeviceExpCtl_IDE     #       1       ; IDE PATA bus interface
                                        ; things like USB, FireWire, SAS controllers might go here

HALDeviceType_HID       *       6 :SHL: 8
                        ^       1
HALDeviceHID_Keyboard   #       1       ; Standard data entry keyboard
HALDeviceHID_Touchscreen #      1

HALDeviceBus_Pro        *       0 :SHL: 28

HALDeviceProBus_Core    *       0 :SHL: 24
HALDeviceProBus_CoPro   *       1 :SHL: 24

HALDeviceBus_Sys        *       1 :SHL: 28

HALDeviceSysBus_AHB     *       0 :SHL: 24 ; AMBA 2, ARM
HALDeviceSysBus_ASB     *       1 :SHL: 24 ; AMBA 2, ARM
HALDeviceSysBus_PXBus   *       2 :SHL: 24 ; Intel PXA
HALDeviceSysBus_OPEN    *       3 :SHL: 24 ; Acorn Risc PC
HALDeviceSysBus_SonicsMX *      4 :SHL: 24 ; Sonics Inc - OMAP3 'L3'
HALDeviceSysBus_NoC     *       5 :SHL: 24 ; Network on Chip, Arteris Inc - OMAP4 'L3'
HALDeviceSysBus_AXI     *       6 :SHL: 24 ; AMBA 3, ARM

HALDeviceBus_Peri       *       2 :SHL: 28

HALDevicePeriBus_APB    *       0 :SHL: 24 ; ARM
HALDevicePeriBus_Rsvd1  *       1 :SHL: 24 ; Reserved
HALDevicePeriBus_Sonics3220 *   2 :SHL: 24 ; Sonics Inc - OMAP3/OMAP4 'L4'

HALDeviceBus_Exp        *       3 :SHL: 28

HALDeviceExpBus_Acorn   *       0 :SHL: 24 ; DEBI, EASI, IOC, MEMC
HALDeviceExpBus_ISA     *       1 :SHL: 24 ; IBM
HALDeviceExpBus_PCI     *       2 :SHL: 24 ; PCI SIG
HALDeviceExpBus_GPMC    *       3 :SHL: 24 ; General purpose memory controller

HALDeviceBus_Ser        *       4 :SHL: 28

HALDeviceSerBus_ACLink  *       0 :SHL: 24 ; Audio codec
HALDeviceSerBus_IIC     *       1 :SHL: 24 ; Inter IC
HALDeviceSerBus_IIS     *       2 :SHL: 24 ; Inter IC sound

                                ^       0
HALDeviceID_AudC_M5451          #       1
HALDeviceID_AudC_TPS65950       #       1
HALDeviceID_AudC_TWL6040        #       1
HALDeviceID_AudC_VCHIQ          #       1
HALDeviceID_AudC_Pandora        #       1
HALDeviceID_AudC_SGTL5000       #       1
HALDeviceID_AudC_TLV320AIC310x  #       1
HALDeviceID_AudC_IMX6HDMI       #       1

                                ^       0
HALDeviceID_Mixer_STAC9750      #       1
HALDeviceID_Mixer_TPS65950      #       1
HALDeviceID_Mixer_TWL6040       #       1
HALDeviceID_Mixer_VCHIQ         #       1
HALDeviceID_Mixer_SGTL5000      #       1
HALDeviceID_Mixer_TLV320AIC310x #       1
HALDeviceID_Mixer_Software      #       1 ; Any kind of software mixer (e.g. generic mixer created by SoundDMA)

                                ^       0
HALDeviceID_DMAC_M1535          #       1
HALDeviceID_DMAC_M5229          #       1
HALDeviceID_DMAC_OMAP3          #       1
HALDeviceID_DMAC_OMAP4          #       1
HALDeviceID_DMAC_BCM2835        #       1
HALDeviceID_DMAC_IOMD21         #       1
HALDeviceID_DMAC_IMX6           #       1
HALDeviceID_DMAC_SDMA           #       1 ; Same enough as OMAP3?
HALDeviceID_DMAC_OMAP5          #       1

                                ^       0
HALDeviceID_DMAB_M1535          #       1
HALDeviceID_DMAB_OMAP3          #       1
HALDeviceID_DMAB_OMAP4          #       1
HALDeviceID_DMAB_IOMD21         #       1
HALDeviceID_DMAB_SDMA           #       1 ; Same enough as OMAP3?
HALDeviceID_DMAB_OMAP5          #       1

                                ^       0
HALDeviceID_DMAL_M5229          #       1
HALDeviceID_DMAL_BCM2835        #       1
HALDeviceID_DMAL_IMX6           #       1

                                ^       0
HALDeviceID_RTC_TPS65950        #       1
HALDeviceID_RTC_TWL6030         #       1
HALDeviceID_RTC_DS1307          #       1
HALDeviceID_RTC_PCF8583         #       1
HALDeviceID_RTC_PCF8523         #       1

                                ^       0
HALDeviceID_CPUClk_OMAP3        #       1
HALDeviceID_CPUClk_OMAP4        #       1
HALDeviceID_CPUClk_AMDM37x_SR   #       1
HALDeviceID_CPUClk_IMX6         #       1
HALDeviceID_CPUClk_AM572x       #       1
HALDeviceID_CPUClk_OMAP5        #       1
HALDeviceID_CPUClk_BCM283x      #       1

                                ^       0
HALDeviceID_BMU_TPS65950        #       1
HALDeviceID_BMU_BQ27200         #       1
HALDeviceID_BMU_BQ27500         #       1
HALDeviceID_BMU_TWL6037         #       1

                                ^       0
HALDeviceID_NVRAM_24C02         #       1  ; 2kb = 256B
HALDeviceID_NVRAM_24C04         #       1
HALDeviceID_NVRAM_24C08         #       1
HALDeviceID_NVRAM_24C16         #       1  ; 16kb = 2kB

                                ^       0
HALDeviceID_VDU_OMAP3           #       1
HALDeviceID_VDU_OMAP4           #       1
HALDeviceID_VDU_Tungsten        #       1
HALDeviceID_VDU_VIDC20          #       1
HALDeviceID_VDU_BCM2835         #       1
HALDeviceID_VDU_IMX6            #       1
HALDeviceID_VDU_GC320           #       1
HALDeviceID_VDU_OMAP5           #       1

                                ^       0
HALDeviceID_EtherNIC_SMSC9221   #       1
HALDeviceID_EtherNIC_DM9000     #       1
HALDeviceID_EtherNIC_IMX6       #       1
HALDeviceID_EtherNIC_CPSW       #       1
HALDeviceID_EtherNIC_BCMGENET   #       1

                                ^       0
HALDeviceID_GPIO_OMAP3          #       1
HALDeviceID_GPIO_OMAP4          #       1
HALDeviceID_GPIO_BCM2835        #       1
HALDeviceID_GPIO_IMX6           #       1
HALDeviceID_GPIO_OMAP5          #       1

                                ^       0
HALDeviceID_InterProc_VCHIQ     #       1
HALDeviceID_InterProc_BCMMBox   #       1

                                ^       0
HALDeviceID_SPI_BCM2835_0       #       1
HALDeviceID_SPI_BCM2835_12      #       1
HALDeviceID_SPI_IMX6            #       1

                                ^       0
HALDeviceID_ARMDBell_BCM2836    #       1
HALDeviceID_ARMDBell_GIC        #       1

                                ^       0
HALDeviceID_SDIO_SDHCI          #       1

                                ^       0
HALDeviceID_Keyboard_Pandora    #       1

                                ^       0
HALDeviceID_Touchscreen_FT5406  #       1

                                ^       0
HALDeviceID_AHCI_IMX6           #       1
HALDeviceID_AHCI_SynopsisDWC    #       1

                                ^       0
HALDeviceID_IDE_SMC37C66x       #       1  ; SMSC super IO '665/'669
HALDeviceID_IDE_M5229           #       1  ; ALi super IO

                                ^       0
HALDeviceID_CacheC_PL310        #       1

 ] ; Included_Hdr_HALDevice

        OPT     OldOpt
        END