/* Copyright 2003 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.
 */
#ifndef GLOBAL_HALDEVICE_H

#include <stdbool.h>
#include <stdint.h>

struct device
{
  uint16_t type;
  uint16_t id;
  uint32_t location;
  uint32_t version;
  const char *description;
  void *address;
  uint32_t reserved1[3];
  bool (*Activate)(struct device *);
  void (*Deactivate)(struct device *);
  void (*Reset)(struct device *);
  int32_t (*Sleep)(struct device *, int32_t state);
  int32_t devicenumber;
  bool (*TestIRQ)(struct device *);
  void (*ClearIRQ)(struct device *);
  uint32_t reserved2[1];
};

#endif
/* In the exported copy of this file, the Hdr2H translation of hdr.HALDevice will follow. */
/* Created by Hdr2H.  Do not edit.*/
#ifndef GLOBAL_HALDEVICE_H
#define GLOBAL_HALDEVICE_H

#ifdef __CC_NORCROFT
#pragma force_top_level
#pragma include_only_once
#endif

#define HALDevice_Type                           (0)
#define HALDevice_ID                             (2)
#define HALDevice_Location                       (4)
#define HALDevice_Version                        (8)
#define HALDevice_Description                    (12)
#define HALDevice_Address                        (16)
#define HALDevice_Reserved1                      (20)
#define HALDevice_Activate                       (32)
#define HALDevice_Deactivate                     (36)
#define HALDevice_Reset                          (40)
#define HALDevice_Sleep                          (44)
#define HALDevice_Device                         (48)
#define HALDevice_TestIRQ                        (52)
#define HALDevice_ClearIRQ                       (56)
#define HALDevice_Reserved2                      (60)
#define HALDeviceSize                            (64)
#define HALDeviceType_Video                      (1 << 8)
#define HALDeviceVideo_VDU                       (1)
#define HALDeviceType_Audio                      (2 << 8)
#define HALDeviceAudio_AudC                      (1)
#define HALDeviceAudio_Mixer                     (2)
#define HALDeviceType_SysPeri                    (3 << 8)
#define HALDeviceSysPeri_IntC                    (1)
#define HALDeviceSysPeri_DMAC                    (2)
#define HALDeviceSysPeri_DMAB                    (3)
#define HALDeviceSysPeri_DMAL                    (4)
#define HALDeviceSysPeri_RTC                     (5)
#define HALDeviceSysPeri_CPUClk                  (6)
#define HALDeviceSysPeri_BMU                     (7)
#define HALDeviceSysPeri_NVRAM                   (8)
#define HALDeviceSysPeri_CacheC                  (9)
#define HALDeviceType_Comms                      (4 << 8)
#define HALDeviceComms_UART                      (1)
#define HALDeviceComms_EtherNIC                  (2)
#define HALDeviceComms_GPIO                      (3)
#define HALDeviceComms_InterProc                 (4)
#define HALDeviceComms_SPI                       (5)
#define HALDeviceComms_ARMDBell                  (6)
#define HALDeviceType_ExpCtl                     (5 << 8)
#define HALDeviceExpCtl_SDIO                     (1)
#define HALDeviceExpCtl_AHCI                     (2)
#define HALDeviceExpCtl_IDE                      (3)
#define HALDeviceType_HID                        (6 << 8)
#define HALDeviceHID_Keyboard                    (1)
#define HALDeviceHID_Touchscreen                 (2)
#define HALDeviceBus_Pro                         (0 << 28)
#define HALDeviceProBus_Core                     (0 << 24)
#define HALDeviceProBus_CoPro                    (1 << 24)
#define HALDeviceBus_Sys                         (1 << 28)
#define HALDeviceSysBus_AHB                      (0 << 24)
#define HALDeviceSysBus_ASB                      (1 << 24)
#define HALDeviceSysBus_PXBus                    (2 << 24)
#define HALDeviceSysBus_OPEN                     (3 << 24)
#define HALDeviceSysBus_SonicsMX                 (4 << 24)
#define HALDeviceSysBus_NoC                      (5 << 24)
#define HALDeviceSysBus_AXI                      (6 << 24)
#define HALDeviceBus_Peri                        (2 << 28)
#define HALDevicePeriBus_APB                     (0 << 24)
#define HALDevicePeriBus_Rsvd1                   (1 << 24)
#define HALDevicePeriBus_Sonics3220              (2 << 24)
#define HALDeviceBus_Exp                         (3 << 28)
#define HALDeviceExpBus_Acorn                    (0 << 24)
#define HALDeviceExpBus_ISA                      (1 << 24)
#define HALDeviceExpBus_PCI                      (2 << 24)
#define HALDeviceExpBus_GPMC                     (3 << 24)
#define HALDeviceBus_Ser                         (4 << 28)
#define HALDeviceSerBus_ACLink                   (0 << 24)
#define HALDeviceSerBus_IIC                      (1 << 24)
#define HALDeviceSerBus_IIS                      (2 << 24)
#define HALDeviceID_AudC_M5451                   (0)
#define HALDeviceID_AudC_TPS65950                (1)
#define HALDeviceID_AudC_TWL6040                 (2)
#define HALDeviceID_AudC_VCHIQ                   (3)
#define HALDeviceID_AudC_Pandora                 (4)
#define HALDeviceID_AudC_SGTL5000                (5)
#define HALDeviceID_AudC_TLV320AIC310x           (6)
#define HALDeviceID_AudC_IMX6HDMI                (7)
#define HALDeviceID_Mixer_STAC9750               (0)
#define HALDeviceID_Mixer_TPS65950               (1)
#define HALDeviceID_Mixer_TWL6040                (2)
#define HALDeviceID_Mixer_VCHIQ                  (3)
#define HALDeviceID_Mixer_SGTL5000               (4)
#define HALDeviceID_Mixer_TLV320AIC310x          (5)
#define HALDeviceID_Mixer_Software               (6)
#define HALDeviceID_DMAC_M1535                   (0)
#define HALDeviceID_DMAC_M5229                   (1)
#define HALDeviceID_DMAC_OMAP3                   (2)
#define HALDeviceID_DMAC_OMAP4                   (3)
#define HALDeviceID_DMAC_BCM2835                 (4)
#define HALDeviceID_DMAC_IOMD21                  (5)
#define HALDeviceID_DMAC_IMX6                    (6)
#define HALDeviceID_DMAC_SDMA                    (7)
#define HALDeviceID_DMAC_OMAP5                   (8)
#define HALDeviceID_DMAB_M1535                   (0)
#define HALDeviceID_DMAB_OMAP3                   (1)
#define HALDeviceID_DMAB_OMAP4                   (2)
#define HALDeviceID_DMAB_IOMD21                  (3)
#define HALDeviceID_DMAB_SDMA                    (4)
#define HALDeviceID_DMAB_OMAP5                   (5)
#define HALDeviceID_DMAL_M5229                   (0)
#define HALDeviceID_DMAL_BCM2835                 (1)
#define HALDeviceID_DMAL_IMX6                    (2)
#define HALDeviceID_RTC_TPS65950                 (0)
#define HALDeviceID_RTC_TWL6030                  (1)
#define HALDeviceID_RTC_DS1307                   (2)
#define HALDeviceID_RTC_PCF8583                  (3)
#define HALDeviceID_RTC_PCF8523                  (4)
#define HALDeviceID_CPUClk_OMAP3                 (0)
#define HALDeviceID_CPUClk_OMAP4                 (1)
#define HALDeviceID_CPUClk_AMDM37x_SR            (2)
#define HALDeviceID_CPUClk_IMX6                  (3)
#define HALDeviceID_CPUClk_AM572x                (4)
#define HALDeviceID_CPUClk_OMAP5                 (5)
#define HALDeviceID_CPUClk_BCM283x               (6)
#define HALDeviceID_BMU_TPS65950                 (0)
#define HALDeviceID_BMU_BQ27200                  (1)
#define HALDeviceID_BMU_BQ27500                  (2)
#define HALDeviceID_BMU_TWL6037                  (3)
#define HALDeviceID_NVRAM_24C02                  (0)
#define HALDeviceID_NVRAM_24C04                  (1)
#define HALDeviceID_NVRAM_24C08                  (2)
#define HALDeviceID_NVRAM_24C16                  (3)
#define HALDeviceID_VDU_OMAP3                    (0)
#define HALDeviceID_VDU_OMAP4                    (1)
#define HALDeviceID_VDU_Tungsten                 (2)
#define HALDeviceID_VDU_VIDC20                   (3)
#define HALDeviceID_VDU_BCM2835                  (4)
#define HALDeviceID_VDU_IMX6                     (5)
#define HALDeviceID_VDU_GC320                    (6)
#define HALDeviceID_VDU_OMAP5                    (7)
#define HALDeviceID_EtherNIC_SMSC9221            (0)
#define HALDeviceID_EtherNIC_DM9000              (1)
#define HALDeviceID_EtherNIC_IMX6                (2)
#define HALDeviceID_EtherNIC_CPSW                (3)
#define HALDeviceID_EtherNIC_BCMGENET            (4)
#define HALDeviceID_GPIO_OMAP3                   (0)
#define HALDeviceID_GPIO_OMAP4                   (1)
#define HALDeviceID_GPIO_BCM2835                 (2)
#define HALDeviceID_GPIO_IMX6                    (3)
#define HALDeviceID_GPIO_OMAP5                   (4)
#define HALDeviceID_InterProc_VCHIQ              (0)
#define HALDeviceID_InterProc_BCMMBox            (1)
#define HALDeviceID_SPI_BCM2835_0                (0)
#define HALDeviceID_SPI_BCM2835_12               (1)
#define HALDeviceID_SPI_IMX6                     (2)
#define HALDeviceID_ARMDBell_BCM2836             (0)
#define HALDeviceID_ARMDBell_GIC                 (1)
#define HALDeviceID_SDIO_SDHCI                   (0)
#define HALDeviceID_Keyboard_Pandora             (0)
#define HALDeviceID_Touchscreen_FT5406           (0)
#define HALDeviceID_AHCI_IMX6                    (0)
#define HALDeviceID_AHCI_SynopsisDWC             (1)
#define HALDeviceID_IDE_SMC37C66x                (0)
#define HALDeviceID_IDE_M5229                    (1)
#define HALDeviceID_CacheC_PL310                 (0)
#endif
