##############################################################################
## This file is part of 'SLAC Firmware Standard Library'.
## It is subject to the license terms in the LICENSE.txt file found in the 
## top-level directory of this distribution and at: 
##    https://confluence.slac.stanford.edu/display/ppareg/LICENSE.html. 
## No part of 'SLAC Firmware Standard Library', including this file, 
## may be copied, modified, propagated, or distributed except according to 
## the terms contained in the LICENSE.txt file.
##############################################################################
#schemaversion 3.0.0
#once Adc16Dx370.yaml

Adc16Dx370: &Adc16Dx370
  name: Adc16Dx370
  description: ADC16Dx370 Module
  class: MMIODev
  configPrio: 1
  size: 0x00001000
  children:
    AdcReg_0x0000:
      at:
        offset: 0x000
      class: IntField
      name: AdcReg_0x0000
      sizeBits: 8
      mode: RW
      description: ADC Control Registers
    #########################################################
    AdcReg_0x0002:
      at:
        offset: 0x008
      class: IntField
      name: AdcReg_0x0002
      sizeBits: 8
      mode: RW
      description: ADC Control Registers
    #########################################################
    AdcReg_0x0003:
      at:
        offset: 0x00C
      class: IntField
      name: AdcReg_0x0003
      sizeBits: 8
      mode: RW
      description: ADC Control Registers
    #########################################################
    AdcReg_0x0004:
      at:
        offset: 0x00F
      class: IntField
      name: AdcReg_0x0004
      sizeBits: 8
      mode: RW
      description: ADC Control Registers
    #########################################################
    AdcReg_0x0005:
      at:
        offset: 0x014
      class: IntField
      name: AdcReg_0x0005
      sizeBits: 8
      mode: RW
      description: ADC Control Registers
    #########################################################
    AdcReg_0x0006:
      at:
        offset: 0x018
      class: IntField
      name: AdcReg_0x0006
      sizeBits: 8
      mode: RW
      description: ADC Control Registers
    #########################################################
    AdcReg_0x000C:
      at:
        offset: 0x030
      class: IntField
      name: AdcReg_0x000C
      sizeBits: 8
      mode: RW
      description: ADC Control Registers
    #########################################################
    AdcReg_0x000D:
      at:
        offset: 0x034
      class: IntField
      name: AdcReg_0x000D
      sizeBits: 8
      mode: RW
      description: ADC Control Registers
    #########################################################
    AdcReg_0x000E:
      at:
        offset: 0x038
      class: IntField
      name: AdcReg_0x000E
      sizeBits: 8
      mode: RW
      description: ADC Control Registers
    #########################################################
    AdcReg_0x000F:
      at:
        offset: 0x03C
      class: IntField
      name: AdcReg_0x000F
      sizeBits: 8
      mode: RW
      description: ADC Control Registers
    #########################################################
    AdcReg_0x0010:
      at:
        offset: 0x040
      class: IntField
      name: AdcReg_0x0010
      sizeBits: 8
      mode: RW
      description: ADC Control Registers
    #########################################################
    AdcReg_0x0011:
      at:
        offset: 0x044
      class: IntField
      name: AdcReg_0x0011
      sizeBits: 8
      mode: RW
      description: ADC Control Registers
    #########################################################
    AdcReg_0x0012:
      at:
        offset: 0x048
      class: IntField
      name: AdcReg_0x0012
      sizeBits: 8
      mode: RW
      description: ADC Control Registers
    #########################################################
    AdcReg_0x0013:
      at:
        offset: 0x04C
      class: IntField
      name: AdcReg_0x0013
      sizeBits: 8
      mode: RW
      description: ADC Control Registers
    #########################################################
    AdcReg_0x0014:
      at:
        offset: 0x050
      class: IntField
      name: AdcReg_0x0014
      sizeBits: 8
      mode: RW
      description: ADC Control Registers
    #########################################################
    AdcReg_0x0015:
      at:
        offset: 0x054
      class: IntField
      name: AdcReg_0x0015
      sizeBits: 8
      mode: RW
      description: ADC Control Registers
    #########################################################
    AdcReg_0x0019:
      at:
        offset: 0x064
      class: IntField
      name: AdcReg_0x0019
      sizeBits: 8
      mode: RW
      description: ADC Control Registers
    #########################################################
    AdcReg_0x003B:
      at:
        offset: 0x0EC
      class: IntField
      name: AdcReg_0x003B
      sizeBits: 8
      mode: RW
      description: ADC Control Registers
    #########################################################
    AdcReg_0x003C:
      at:
        offset: 0x0F0
      class: IntField
      name: AdcReg_0x003C
      sizeBits: 8
      mode: RW
      description: ADC Control Registers
    #########################################################
    AdcReg_0x003D:
      at:
        offset: 0x0F4
      class: IntField
      name: AdcReg_0x003D
      sizeBits: 8
      mode: RW
      description: ADC Control Registers
    #########################################################
    AdcReg_0x0047:
      at:
        offset: 0x11C
      class: IntField
      name: AdcReg_0x0047
      sizeBits: 8
      mode: RW
      description: ADC Control Registers
    #########################################################
    AdcReg_0x0060:
      at:
        offset: 0x180
      class: IntField
      name: AdcReg_0x0060
      sizeBits: 8
      mode: RW
      description: ADC Control Registers
    #########################################################
    AdcReg_0x0061:
      at:
        offset: 0x184
      class: IntField
      name: AdcReg_0x0061
      sizeBits: 8
      mode: RW
      description: ADC Control Registers
    #########################################################
    AdcReg_0x0062:
      at:
        offset: 0x188
      class: IntField
      name: AdcReg_0x0062
      sizeBits: 8
      mode: RW
      description: ADC Control Registers
    #########################################################
    AdcReg_0x0063:
      at:
        offset: 0x18C
      class: IntField
      name: AdcReg_0x0063
      sizeBits: 8
      mode: RW
      description: ADC Control Registers
    #########################################################
    AdcReg_0x0070:
      at:
        offset: 0x1C0
      class: IntField
      name: AdcReg_0x0070
      sizeBits: 8
      mode: RW
      description: ADC Control Registers
    #########################################################
    #
    #   Status registers
    #
    #########################################################
    ID_DEVICE_TYPE:
      at:
        offset: 0x00C
      class: IntField
      name: ID_DEVICE_TYPE
      sizeBits: 8
      mode: RO
      description: ID_DEVICE_TYPE
    #########################################################
    ID_PROD_UPPER:
      at:
        offset: 0x010
      class: IntField
      name: ID_PROD_UPPER
      sizeBits: 8
      mode: RO
      description: ID_PROD_UPPER
    #########################################################
    ID_PROD_LOWER:
      at:
        offset: 0x014
      class: IntField
      name: ID_PROD_LOWER
      sizeBits: 8
      mode: RO
      description: ID_PROD_LOWER
    #########################################################
    ID_MASKREV:
      at:
        offset: 0x018
      class: IntField
      name: ID_MASKREV
      sizeBits: 8
      mode: RO
      description: ID_MASKREV
    #########################################################
    ID_VNDR_UPPER:
      at:
        offset: 0x030
      class: IntField
      name: ID_VNDR_UPPER
      sizeBits: 8
      mode: RO
      description: ID_VNDR_UPPER
    #########################################################
    ID_VNDR_LOWER:
      at:
        offset: 0x034
      class: IntField
      name: ID_VNDR_LOWER
      sizeBits: 8
      mode: RO
      description: ID_VNDR_LOWER
    #########################################################
    Clock_ready:
      at:
        offset: 0x1B0
      class: IntField
      name: Clock_ready
      sizeBits: 1
      lsBit: 0
      mode: RO
      description: Clock_ready
    #########################################################
    Calibration_done:
      at:
        offset: 0x1B0
      class: IntField
      name: Calibration_done
      sizeBits: 1
      lsBit: 1
      mode: RO
      description: Calibration_done
    #########################################################
    PLL_lock:
      at:
        offset: 0x1B0
      class: IntField
      name: PLL_lock
      sizeBits: 1
      lsBit: 2
      mode: RO
      description: PLL_lock
    #########################################################
    Aligned_to_sysref:
      at:
        offset: 0x1B0
      class: IntField
      name: Aligned_to_sysref
      sizeBits: 1
      lsBit: 3
      mode: RO
      description: Aligned_to_sysref
    #########################################################
    Realigned_to_sysref:
      at:
        offset: 0x1B0
      class: IntField
      name: Realigned_to_sysref
      sizeBits: 1
      lsBit: 4
      mode: RO
      description: Realigned_to_sysref
    #########################################################
    Sync_form_FPGA:
      at:
        offset: 0x1B0
      class: IntField
      name: Sync_form_FPGA
      sizeBits: 1
      lsBit: 5
      mode: RO
      description: Sync_form_FPGA
    #########################################################
    Link_active:
      at:
        offset: 0x1B0
      class: IntField
      name: Link_active
      sizeBits: 1
      lsBit: 6
      mode: RO
      description: Link_active
    #########################################################
    PowerDown:
      name: PowerDown
      class: SequenceCommand
      at:
        offset: 0x0
      description: PowerDown
      sequence:
      - entry: AdcReg_0x0002
        value: 0x3
    #########################################################
    PowerUp:
      name: PowerUp
      class: SequenceCommand
      at:
        offset: 0x0
      description: PowerUp
      sequence:
      - entry: AdcReg_0x0002
        value: 0x0
    #########################################################
    CalibrateAdc:
      name: CalibrateAdc
      class: SequenceCommand
      at:
        offset: 0x0
      description: CalibrateAdc
      sequence:
        # Power Down
        - entry: PowerDown
          value: 0x1
        # 1000 ms sleep
        - entry: usleep
          value: 1000000
        # Power Up
        - entry: PowerUp
          value: 0x1
