* update kernel to .37 * add support for falcon (big thank you goes to lantiq !!)
authorJohn Crispin <john@openwrt.org>
Fri, 11 Mar 2011 08:19:53 +0000 (08:19 +0000)
committerJohn Crispin <john@openwrt.org>
Fri, 11 Mar 2011 08:19:53 +0000 (08:19 +0000)
SVN-Revision: 26021

38 files changed:
target/linux/lantiq/Makefile
target/linux/lantiq/config-default
target/linux/lantiq/falcon/config-default [new file with mode: 0644]
target/linux/lantiq/falcon/profiles/000-generic.mk [new file with mode: 0644]
target/linux/lantiq/falcon/profiles/001-lantiq.mk [new file with mode: 0644]
target/linux/lantiq/falcon/target.mk [new file with mode: 0644]
target/linux/lantiq/image/Makefile
target/linux/lantiq/modules.mk
target/linux/lantiq/patches/010-mips_clocksource_init_war.patch
target/linux/lantiq/patches/020-genirq_fix.patch
target/linux/lantiq/patches/100-board.patch
target/linux/lantiq/patches/104-board_xway.patch
target/linux/lantiq/patches/106-early_printk.patch
target/linux/lantiq/patches/110-machine.patch
target/linux/lantiq/patches/150-dev-leds-gpio.patch [new file with mode: 0644]
target/linux/lantiq/patches/200-serial.patch
target/linux/lantiq/patches/210-nor.patch
target/linux/lantiq/patches/211-nor_split.patch [deleted file]
target/linux/lantiq/patches/220-mtd_uimage_split.patch [new file with mode: 0644]
target/linux/lantiq/patches/230-xway_etop.patch
target/linux/lantiq/patches/250-watchdog.patch
target/linux/lantiq/patches/270-crypto.patch
target/linux/lantiq/patches/300-udp_redirect.patch
target/linux/lantiq/patches/310-atm_hack.patch
target/linux/lantiq/patches/400-mach-arv45xx.patch
target/linux/lantiq/patches/700-dwc_otg.patch
target/linux/lantiq/patches/809-mt-vpe.patch
target/linux/lantiq/patches/810-ar9-cache-split.patch
target/linux/lantiq/patches/900-header_falcon.patch [new file with mode: 0644]
target/linux/lantiq/patches/901-board_falcon.patch [new file with mode: 0644]
target/linux/lantiq/patches/910-falcon-i2c.patch [new file with mode: 0644]
target/linux/lantiq/patches/915-falcon-spi-flash.patch [new file with mode: 0644]
target/linux/lantiq/patches/916-m25p80-fast-read.patch [new file with mode: 0644]
target/linux/lantiq/patches/920-falcon-easy98000-cpld-led.patch [new file with mode: 0644]
target/linux/lantiq/patches/920-falcon-easy98020.patch [new file with mode: 0644]
target/linux/lantiq/patches/930-falcon-95C3AM1.patch [new file with mode: 0644]
target/linux/lantiq/xway/config-default
target/linux/lantiq/xway/profiles/002-arcadyan.mk

index 309b31a1648e746d96b33215bab807a2c8ffaa0d..f9a4e0f9a4e965e858e839e6258809ba648e6985 100644 (file)
@@ -9,10 +9,10 @@ include $(TOPDIR)/rules.mk
 ARCH:=mips
 BOARD:=lantiq
 BOARDNAME:=Lantiq GPON/XWAY
-FEATURES:=squashfs jffs2 atm
-SUBTARGETS:=xway
+FEATURES:=squashfs jffs2
+SUBTARGETS:=falcon xway
 
-LINUX_VERSION:=2.6.35.11
+LINUX_VERSION:=2.6.37.2
 
 CFLAGS=-Os -pipe -mips32r2 -mtune=mips32r2 -funit-at-a-time
 
index 95104710ac505ad47f51d21a1457159b80b892f7..ef3a4c544bf3985a5bffe2d4b887710a09311a39 100644 (file)
@@ -1,24 +1,38 @@
-# CONFIG_TC35815 is not set
-# CONFIG_TINY_RCU is not set
-# CONFIG_TREE_PREEMPT_RCU is not set
-# CONFIG_HAVE_IDE is not set
+CONFIG_32BIT=y
 # CONFIG_64BIT is not set
 # CONFIG_ALCHEMY_GPIO_INDIRECT is not set
 # CONFIG_AR7 is not set
 # CONFIG_ARCH_HAS_ILOG2_U32 is not set
 # CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
+# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
+CONFIG_ARCH_POPULATES_NODE_MAP=y
+CONFIG_ARCH_REQUIRE_GPIOLIB=y
 # CONFIG_ARCH_SUPPORTS_MSI is not set
+CONFIG_ARCH_SUPPORTS_OPROFILE=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+# CONFIG_AUTO_IRQ_AFFINITY is not set
 # CONFIG_BCM47XX is not set
 # CONFIG_BCM63XX is not set
+CONFIG_BITREVERSE=y
+CONFIG_BKL=y
 # CONFIG_CAVIUM_OCTEON_REFERENCE_BOARD is not set
 # CONFIG_CAVIUM_OCTEON_SIMULATOR is not set
+CONFIG_CEVT_R4K=y
+CONFIG_CEVT_R4K_LIB=y
+CONFIG_CPU_BIG_ENDIAN=y
 # CONFIG_CPU_CAVIUM_OCTEON is not set
+CONFIG_CPU_HAS_PREFETCH=y
+CONFIG_CPU_HAS_SYNC=y
 # CONFIG_CPU_LITTLE_ENDIAN is not set
 # CONFIG_CPU_LOONGSON2E is not set
 # CONFIG_CPU_LOONGSON2F is not set
+CONFIG_CPU_MIPS32=y
 # CONFIG_CPU_MIPS32_R1 is not set
+CONFIG_CPU_MIPS32_R2=y
 # CONFIG_CPU_MIPS64_R1 is not set
 # CONFIG_CPU_MIPS64_R2 is not set
+CONFIG_CPU_MIPSR2=y
 # CONFIG_CPU_NEVADA is not set
 # CONFIG_CPU_R10000 is not set
 # CONFIG_CPU_R3000 is not set
 # CONFIG_CPU_RM7000 is not set
 # CONFIG_CPU_RM9000 is not set
 # CONFIG_CPU_SB1 is not set
+CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
+CONFIG_CPU_SUPPORTS_HIGHMEM=y
 # CONFIG_CPU_TX39XX is not set
 # CONFIG_CPU_TX49XX is not set
 # CONFIG_CPU_VR41XX is not set
-# CONFIG_DM9000 is not set
-# CONFIG_FSNOTIFY is not set
-# CONFIG_HZ_100 is not set
-# CONFIG_LOONGSON_UART_BASE is not set
-# CONFIG_MACH_ALCHEMY is not set
-# CONFIG_MACH_DECSTATION is not set
-# CONFIG_MACH_JAZZ is not set
-# CONFIG_MACH_LOONGSON is not set
-# CONFIG_MACH_TX39XX is not set
-# CONFIG_MACH_TX49XX is not set
-# CONFIG_MACH_VR41XX is not set
-# CONFIG_MIKROTIK_RB532 is not set
-# CONFIG_MIPS_COBALT is not set
-# CONFIG_MIPS_MALTA is not set
-# CONFIG_MIPS_MT_SMP is not set
-# CONFIG_MIPS_MT_SMTC is not set
-# CONFIG_MIPS_SIM is not set
-# CONFIG_MIPS_VPE_LOADER is not set
-# CONFIG_NO_IOPORT is not set
-# CONFIG_NXP_STB220 is not set
-# CONFIG_NXP_STB225 is not set
-# CONFIG_PMC_MSP is not set
-# CONFIG_PMC_YOSEMITE is not set
-# CONFIG_PNX8550_JBS is not set
-# CONFIG_PNX8550_STB810 is not set
-# CONFIG_POWERTV is not set
-# CONFIG_SCSI_DMA is not set
-# CONFIG_SERIAL_8250 is not set
-# CONFIG_SERIAL_8250_EXTENDED is not set
-# CONFIG_SGI_IP22 is not set
-# CONFIG_SGI_IP27 is not set
-# CONFIG_SGI_IP28 is not set
-# CONFIG_SGI_IP32 is not set
-# CONFIG_SIBYTE_BIGSUR is not set
-# CONFIG_SIBYTE_CARMEL is not set
-# CONFIG_SIBYTE_CRHINE is not set
-# CONFIG_SIBYTE_CRHONE is not set
-# CONFIG_SIBYTE_LITTLESUR is not set
-# CONFIG_SIBYTE_RHONE is not set
-# CONFIG_SIBYTE_SENTOSA is not set
-# CONFIG_SIBYTE_SWARM is not set
-CONFIG_32BIT=y
-CONFIG_ADM6996_PHY=y
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-CONFIG_ARCH_REQUIRE_GPIOLIB=y
-CONFIG_ARCH_SUPPORTS_OPROFILE=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_BITREVERSE=y
-CONFIG_CEVT_R4K=y
-CONFIG_CEVT_R4K_LIB=y
-CONFIG_CPU_BIG_ENDIAN=y
-CONFIG_CPU_HAS_PREFETCH=y
-CONFIG_CPU_HAS_SYNC=y
-CONFIG_CPU_MIPS32=y
-CONFIG_CPU_MIPS32_R2=y
-CONFIG_CPU_MIPSR2=y
-CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
-CONFIG_CPU_SUPPORTS_HIGHMEM=y
-CONFIG_CRYPTO_BLKCIPHER=y
-CONFIG_CRYPTO_BLKCIPHER2=y
-CONFIG_CRYPTO_HW=y
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_WORKQUEUE=y
 CONFIG_CSRC_R4K=y
 CONFIG_CSRC_R4K_LIB=y
 CONFIG_DECOMPRESS_LZMA=y
 CONFIG_DEVPORT=y
+# CONFIG_DM9000 is not set
 CONFIG_DMA_NEED_PCI_MAP_STATE=y
 CONFIG_DMA_NONCOHERENT=y
 CONFIG_EARLY_PRINTK=y
+# CONFIG_FSNOTIFY is not set
+CONFIG_GENERIC_ATOMIC64=y
 CONFIG_GENERIC_CLOCKEVENTS=y
 CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
 CONFIG_GENERIC_CMOS_UPDATE=y
 CONFIG_GENERIC_FIND_LAST_BIT=y
 CONFIG_GENERIC_FIND_NEXT_BIT=y
 CONFIG_GENERIC_GPIO=y
+# CONFIG_GENERIC_HARDIRQS_NO_DEPRECATED is not set
 CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
+# CONFIG_GENERIC_PENDING_IRQ is not set
 CONFIG_GPIOLIB=y
 CONFIG_GPIO_SYSFS=y
+# CONFIG_HARDIRQS_SW_RESEND is not set
 CONFIG_HARDWARE_WATCHPOINTS=y
 CONFIG_HAS_DMA=y
 CONFIG_HAS_IOMEM=y
 CONFIG_HAS_IOPORT=y
 CONFIG_HAVE_ARCH_KGDB=y
+CONFIG_HAVE_C_RECORDMCOUNT=y
+CONFIG_HAVE_DMA_API_DEBUG=y
+CONFIG_HAVE_DMA_ATTRS=y
 CONFIG_HAVE_DYNAMIC_FTRACE=y
 CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
 CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
 CONFIG_HAVE_FUNCTION_TRACER=y
 CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
 CONFIG_HAVE_GENERIC_DMA_COHERENT=y
+CONFIG_HAVE_GENERIC_HARDIRQS=y
+# CONFIG_HAVE_IDE is not set
 CONFIG_HAVE_OPROFILE=y
+CONFIG_HAVE_PERF_EVENTS=y
+# CONFIG_HAVE_SPARSE_IRQ is not set
 CONFIG_HW_RANDOM=y
 CONFIG_HZ=250
+# CONFIG_HZ_100 is not set
 CONFIG_HZ_250=y
+# CONFIG_I2C_FALCON is not set
+CONFIG_IFX_UDP_REDIRECT=y
+CONFIG_IMAGE_CMDLINE_HACK=y
 CONFIG_INITRAMFS_SOURCE=""
 CONFIG_IRQ_CPU=y
+# CONFIG_IRQ_PER_CPU is not set
 CONFIG_LANTIQ=y
+CONFIG_LANTIQ_WDT=y
+CONFIG_LEDS_GPIO=y
+CONFIG_LOONGSON_UART_BASE=y
+# CONFIG_MACH_ALCHEMY is not set
+# CONFIG_MACH_DECSTATION is not set
+# CONFIG_MACH_JAZZ is not set
+# CONFIG_MACH_LOONGSON is not set
+CONFIG_MACH_NO_WESTBRIDGE=y
+# CONFIG_MACH_TX39XX is not set
+# CONFIG_MACH_TX49XX is not set
+# CONFIG_MACH_VR41XX is not set
+# CONFIG_MIKROTIK_RB532 is not set
 CONFIG_MIPS=y
+# CONFIG_MIPS_COBALT is not set
 CONFIG_MIPS_L1_CACHE_SHIFT=5
 CONFIG_MIPS_MACHINE=y
+# CONFIG_MIPS_MALTA is not set
 CONFIG_MIPS_MT_DISABLED=y
+# CONFIG_MIPS_MT_SMP is not set
+# CONFIG_MIPS_MT_SMTC is not set
+# CONFIG_MIPS_SIM is not set
+# CONFIG_MIPS_VPE_LOADER is not set
 CONFIG_MTD_CFI_ADV_OPTIONS=y
 CONFIG_MTD_CFI_GEOMETRY=y
 CONFIG_MTD_CMDLINE_PARTS=y
 CONFIG_MTD_LANTIQ=y
+CONFIG_MTD_UIMAGE_SPLIT=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_NEED_PER_CPU_KM=y
 CONFIG_NLS=y
+# CONFIG_NO_IOPORT is not set
+# CONFIG_NXP_STB220 is not set
+# CONFIG_NXP_STB225 is not set
 CONFIG_PAGEFLAGS_EXTENDED=y
 CONFIG_PCI=y
 CONFIG_PCI_DOMAINS=y
+CONFIG_PERF_USE_VMALLOC=y
 CONFIG_PHYLIB=y
+# CONFIG_PMC_MSP is not set
+# CONFIG_PMC_YOSEMITE is not set
+# CONFIG_PNX8550_JBS is not set
+# CONFIG_PNX8550_STB810 is not set
+# CONFIG_POWERTV is not set
+# CONFIG_PREEMPT_RCU is not set
+# CONFIG_QUOTACTL is not set
 CONFIG_SCHED_OMIT_FRAME_POINTER=y
+# CONFIG_SCSI_DMA is not set
+# CONFIG_SERIAL_8250 is not set
+# CONFIG_SERIAL_8250_EXTENDED is not set
 CONFIG_SERIAL_LANTIQ=y
+# CONFIG_SGI_IP22 is not set
+# CONFIG_SGI_IP27 is not set
+# CONFIG_SGI_IP28 is not set
+# CONFIG_SGI_IP32 is not set
+# CONFIG_SIBYTE_BIGSUR is not set
+# CONFIG_SIBYTE_CARMEL is not set
+# CONFIG_SIBYTE_CRHINE is not set
+# CONFIG_SIBYTE_CRHONE is not set
+# CONFIG_SIBYTE_LITTLESUR is not set
+# CONFIG_SIBYTE_RHONE is not set
+# CONFIG_SIBYTE_SENTOSA is not set
+# CONFIG_SIBYTE_SWARM is not set
+CONFIG_SOC_LANTIQ=y
 CONFIG_SWAP_IO_SPACE=y
 CONFIG_SWCONFIG=y
 CONFIG_SYS_HAS_CPU_MIPS32_R1=y
@@ -157,7 +175,9 @@ CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
 CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
 CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
 CONFIG_SYS_SUPPORTS_MULTITHREADING=y
+# CONFIG_TC35815 is not set
+CONFIG_TINY_RCU=y
 CONFIG_TRAD_SIGNALS=y
+# CONFIG_TREE_PREEMPT_RCU is not set
 CONFIG_TREE_RCU=y
 CONFIG_ZONE_DMA_FLAG=0
-CONFIG_IFX_UDP_REDIRECT=y
diff --git a/target/linux/lantiq/falcon/config-default b/target/linux/lantiq/falcon/config-default
new file mode 100644 (file)
index 0000000..2a06f87
--- /dev/null
@@ -0,0 +1,31 @@
+CONFIG_CPU_MIPSR2_IRQ_EI=y
+CONFIG_CPU_MIPSR2_IRQ_VI=y
+# CONFIG_CRYPTO is not set
+CONFIG_DM9000=y
+CONFIG_DM9000_DEBUGLEVEL=4
+CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL=y
+CONFIG_HAVE_IDE=y
+CONFIG_HW_HAS_PCI=y
+CONFIG_IFX_VPE_CACHE_SPLIT=y
+CONFIG_IFX_VPE_EXT=y
+CONFIG_LANTIQ_MACH_95C3AM1=y
+CONFIG_LANTIQ_MACH_EASY98000=y
+CONFIG_LANTIQ_MACH_EASY98020=y
+CONFIG_LANTIQ_PROM_ASC0=y
+# CONFIG_LANTIQ_PROM_ASC1 is not set
+CONFIG_M25PXX_USE_FAST_READ=y
+CONFIG_MIPS_MT=y
+# CONFIG_MIPS_VPE_APSP_API is not set
+CONFIG_MIPS_VPE_LOADER=y
+CONFIG_MIPS_VPE_LOADER_TOM=y
+CONFIG_MTD_M25P80=y
+CONFIG_MTSCHED=y
+# CONFIG_PCI is not set
+# CONFIG_PERFCTRS is not set
+CONFIG_SOC_LANTIQ_FALCON=y
+# CONFIG_SOC_LANTIQ_XWAY is not set
+CONFIG_SPI=y
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_FALCON=y
+# CONFIG_SPI_GPIO is not set
+CONFIG_SPI_MASTER=y
diff --git a/target/linux/lantiq/falcon/profiles/000-generic.mk b/target/linux/lantiq/falcon/profiles/000-generic.mk
new file mode 100644 (file)
index 0000000..166c52b
--- /dev/null
@@ -0,0 +1,14 @@
+define Profile/Generic
+  NAME:=Generic - all boards
+  PACKAGES:= \
+       kmod-leds-gpio \
+       kmod-dm9000 \
+       kmod-i2c-core kmod-i2c-algo-bit kmod-i2c-gpio kmod-eeprom-at24 \
+       kmod-spi-bitbang kmod-spi-gpio kmod-eeprom-at25 \
+       gpon-dti-agent \
+       uboot-easy980x0_norflash uboot-easy980x0_serialflash uboot-easy98020
+endef
+
+$(eval $(call Profile,Generic))
+
+
diff --git a/target/linux/lantiq/falcon/profiles/001-lantiq.mk b/target/linux/lantiq/falcon/profiles/001-lantiq.mk
new file mode 100644 (file)
index 0000000..941aa37
--- /dev/null
@@ -0,0 +1,27 @@
+define Profile/EASY98000
+  NAME:=EASY98000
+  PACKAGES:= \
+       kmod-dm9000 \
+       kmod-i2c-core kmod-i2c-algo-bit kmod-i2c-gpio kmod-eeprom-at24 \
+       kmod-spi-bitbang kmod-spi-gpio kmod-eeprom-at25 \
+       uboot-easy980x0_norflash uboot-easy980x0_serialflash
+endef
+
+define Profile/EASY98000/Description
+       Lantiq EASY98000 evalkit
+endef
+
+$(eval $(call Profile,EASY98000))
+
+define Profile/EASY98020
+  NAME:=EASY98020
+  PACKAGES:= \
+       kmod-leds-gpio uboot-easy98020
+endef
+
+define Profile/EASY98020/Description
+       Lantiq EASY98020 evalkit
+endef
+
+$(eval $(call Profile,EASY98020))
+
diff --git a/target/linux/lantiq/falcon/target.mk b/target/linux/lantiq/falcon/target.mk
new file mode 100644 (file)
index 0000000..e8d9ecc
--- /dev/null
@@ -0,0 +1,13 @@
+ARCH:=mips
+SUBTARGET:=falcon
+BOARDNAME:=Falcon
+FEATURES:=squashfs jffs2
+DEVICE_TYPE:=other
+
+DEFAULT_PACKAGES+= kmod-ifxos gpon-base-files kmod-leds-gpio \
+       kmod-gpon-optic-drv gpon-optic-drv kmod-gpon-onu-drv gpon-onu-drv \
+       gpon-pe-firmware gpon-omci-api gpon-omci-onu gpon-luci
+
+define Target/Description
+       Lantiq Falcon
+endef
index cc5d696d8358b4aec19a69a3f6c0f946ad79f4dc..16fe0ac6d3c34da811f6fa7977d76e84cc7f9ce1 100644 (file)
@@ -71,6 +71,14 @@ define Image/Build/Profile/EASY50812
        $(call Image/Build/$(1),$(1),EASY50812)
 endef
 
+define Image/BuildKernel/Profile/ARV3527P
+       $(call Image/BuildKernel/Template,ARV3527P,$(xway_cmdline))
+endef
+
+define Image/Build/Profile/ARV3527P
+       $(call Image/Build/$(1),$(1),ARV3527P)
+endef
+
 define Image/BuildKernel/Profile/ARV4518PW
        $(call Image/BuildKernel/Template,ARV4518PW,$(xway_cmdline))
 endef
@@ -115,6 +123,7 @@ define Image/BuildKernel/Profile/Generic
        $(call Image/BuildKernel/Template,EASY4010,$(xway_cmdline))
        $(call Image/BuildKernel/Template,EASY50712,$(xway_cmdline))
        $(call Image/BuildKernel/Template,EASY50812,$(xway_cmdline))
+       $(call Image/BuildKernel/Template,ARV3527P,$(xway_cmdline))
        $(call Image/BuildKernel/Template,ARV4510PW,$(xway_cmdline))
        $(call Image/BuildKernel/Template,ARV4518PW,$(xway_cmdline))
        $(call Image/BuildKernel/Template,ARV4520PW,$(xway_cmdline))
@@ -130,6 +139,7 @@ define Image/Build/Profile/Generic
        $(call Image/Build/$(1),$(1),EASY4010)
        $(call Image/Build/$(1),$(1),EASY50712)
        $(call Image/Build/$(1),$(1),EASY50812)
+       $(call Image/Build/$(1),$(1),ARV3527P)
        $(call Image/Build/$(1),$(1),ARV4510PW)
        $(call Image/Build/$(1),$(1),ARV4518PW)
        $(call Image/Build/$(1),$(1),ARV4520PW)
@@ -144,15 +154,17 @@ endef
 endif
 
 ifeq ($(CONFIG_TARGET_lantiq_falcon),y)
-define Image/BuildKernel
+define Image/BuildKernel/Profile/Generic
        $(call Image/BuildKernel/Template,EASY98000,$(falcon_cmdline))
+       $(call Image/BuildKernel/Template,EASY98020,$(falcon_cmdline))
        $(call Image/BuildKernel/Template,NONE)
 endef
 
-define Image/Build
+define Image/Build/Profile/Generic
        $(call Image/Build/$(1),$(1),EASY98000)
+       $(call Image/Build/$(1),$(1),EASY98020)
        $(call Image/Build/$(1),$(1),NONE)
-       $(CP) $(KDIR)/root.$(1)  $(BIN_DIR)/$(IMG_PREFIX)-$(1).rootfs
+       $(CP) $(KDIR)/root.$(1) $(BIN_DIR)/$(IMG_PREFIX)-$(1).rootfs
 endef
 endif
 
index 78289a1a11fa54746470125f3f4dfa0436f8af64..a4a96400d0daa32e5225334cb1d4abd7825e4367 100644 (file)
@@ -33,7 +33,8 @@ define KernelPackage/usb-dwc-otg
   KCONFIG:=CONFIG_DWC_OTG \
        CONFIG_DWC_OTG_DEBUG=n \
        CONFIG_DWC_OTG_LANTIQ=y \
-       CONFIG_DWC_OTG_HOST_ONLY=y
+       CONFIG_DWC_OTG_HOST_ONLY=y \
+       CONFIG_DWC_OTG_DEVICE_ONLY=n
   FILES:=$(LINUX_DIR)/drivers/usb/dwc_otg/dwc_otg.ko
   AUTOLOAD:=$(call AutoLoad,50,dwc_otg)
 endef
@@ -44,4 +45,18 @@ endef
 
 $(eval $(call KernelPackage,usb-dwc-otg))
 
+I2C_FALCON_MODULES:= \
+  CONFIG_I2C_FALCON:drivers/i2c/busses/i2c-falcon
+
+define KernelPackage/i2c-falcon-lantiq
+  TITLE:=Falcon I2C controller
+  $(call i2c_defaults,$(I2C_FALCON_MODULES),52)
+  DEPENDS:=kmod-i2c-core @TARGET_lantiq
+endef
+
+define KernelPackage/i2c-falcon-lantiq/description
+  Kernel support for the Falcon I2C controller
+endef
+
+$(eval $(call KernelPackage,i2c-falcon-lantiq))
 
index 81eabc6dcd11ad215a8adcf764662ed2e26a41df..1670ccb8d8508060e489d84d24b207edf1147785 100644 (file)
@@ -1,6 +1,6 @@
 --- a/arch/mips/kernel/cevt-r4k.c
 +++ b/arch/mips/kernel/cevt-r4k.c
-@@ -22,6 +22,22 @@
+@@ -23,6 +23,22 @@
  
  #ifndef CONFIG_MIPS_MT_SMTC
  
  static int mips_next_event(unsigned long delta,
                             struct clock_event_device *evt)
  {
-@@ -31,6 +47,7 @@ static int mips_next_event(unsigned long
+@@ -32,6 +48,7 @@
        cnt = read_c0_count();
        cnt += delta;
        write_c0_compare(cnt);
 +      compare_change_hazard();
-       res = ((int)(read_c0_count() - cnt) > 0) ? -ETIME : 0;
+       res = ((int)(read_c0_count() - cnt) >= 0) ? -ETIME : 0;
        return res;
  }
index 0503d0d2ace58a0a3abffb34896e4aed2f7eca69..ebb369ff54fd8ab3ae4e20468dedafe7414cddff 100644 (file)
@@ -1,12 +1,12 @@
 --- a/kernel/irq/chip.c
 +++ b/kernel/irq/chip.c
-@@ -650,6 +650,9 @@ handle_percpu_irq(unsigned int irq, stru
+@@ -678,6 +678,9 @@
  
        kstat_incr_irqs_this_cpu(irq, desc);
  
 +      if (unlikely(!desc->action || (desc->status & IRQ_DISABLED)))
 +              return;
 +
-       if (desc->chip->ack)
-               desc->chip->ack(irq);
+       if (desc->irq_data.chip->irq_ack)
+               desc->irq_data.chip->irq_ack(&desc->irq_data);
  
index 6e9d2c7ea6451e1e165d846958be06a096d41a21..d22f586e8f60002e48a4a053ad34bcaa5b52876f 100644 (file)
@@ -1,6 +1,6 @@
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -139,6 +139,9 @@
+@@ -157,6 +157,9 @@
  
          otherwise choose R3000.
  
@@ -10,7 +10,7 @@
  config MACH_JAZZ
        bool "Jazz family of machines"
        select ARC
-@@ -695,6 +698,7 @@
+@@ -729,6 +732,7 @@
  source "arch/mips/vr41xx/Kconfig"
  source "arch/mips/cavium-octeon/Kconfig"
  source "arch/mips/loongson/Kconfig"
  
  endmenu
  
---- a/arch/mips/Makefile
-+++ b/arch/mips/Makefile
-@@ -339,6 +339,17 @@
- load-$(CONFIG_MIPS_COBALT)    += 0xffffffff80080000
- #
-+# Lantiq
-+#
-+load-$(CONFIG_LANTIQ) += 0xffffffff80002000
-+core-$(CONFIG_LANTIQ) += arch/mips/lantiq/
-+cflags-$(CONFIG_LANTIQ)   += -I$(srctree)/arch/mips/include/asm/mach-lantiq
-+core-$(CONFIG_SOC_LANTIQ_FALCON) += arch/mips/lantiq/falcon/
-+cflags-$(CONFIG_SOC_LANTIQ_FALCON)   += -I$(srctree)/arch/mips/include/asm/mach-lantiq/falcon
-+core-$(CONFIG_SOC_LANTIQ_XWAY) += arch/mips/lantiq/xway/
-+cflags-$(CONFIG_SOC_LANTIQ_XWAY)   += -I$(srctree)/arch/mips/include/asm/mach-lantiq/xway
-+
-+#
- # DECstation family
- #
- core-$(CONFIG_MACH_DECSTATION)        += arch/mips/dec/
 --- /dev/null
 +++ b/arch/mips/lantiq/Kconfig
 @@ -0,0 +1,36 @@
 +endif
 --- /dev/null
 +++ b/arch/mips/lantiq/Makefile
-@@ -0,0 +1,2 @@
+@@ -0,0 +1,3 @@
 +obj-y := irq.o setup.o clk.o prom.o
 +obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
++obj-$(CONFIG_SOC_LANTIQ_XWAY) += xway/
 --- /dev/null
 +++ b/arch/mips/lantiq/irq.c
 @@ -0,0 +1,218 @@
 +void lq_soc_detect(struct lq_soc_info *i);
 +
 +#endif
+--- a/arch/mips/Kbuild.platforms
++++ b/arch/mips/Kbuild.platforms
+@@ -11,6 +11,7 @@
+ platforms += jazz
+ platforms += jz4740
+ platforms += lasat
++platforms += lantiq
+ platforms += loongson
+ platforms += mipssim
+ platforms += mti-malta
+--- /dev/null
++++ b/arch/mips/lantiq/Platform
+@@ -0,0 +1,8 @@
++#
++# Lantiq
++#
++
++platform-$(CONFIG_LANTIQ)      += lantiq/
++cflags-$(CONFIG_LANTIQ)       += -I$(srctree)/arch/mips/include/asm/mach-lantiq
++load-$(CONFIG_LANTIQ)          = 0xffffffff80002000
++cflags-$(CONFIG_SOC_LANTIQ_XWAY) += -I$(srctree)/arch/mips/include/asm/mach-lantiq/xway
index ad434aa46bc0b7e98a2c303dd1ec055be0d7a485..bc7d496d66728cd271e5f9b59515d0125b103965 100644 (file)
 +}
 --- /dev/null
 +++ b/arch/mips/lantiq/xway/devices.c
-@@ -0,0 +1,313 @@
+@@ -0,0 +1,336 @@
 +/*
 + *  This program is free software; you can redistribute it and/or modify it
 + *  under the terms of the GNU General Public License version 2 as published
 +      },
 +};
 +
++static unsigned int *cp1_base;
++unsigned int*
++lq_get_cp1_base(void)
++{
++      return cp1_base;
++}
++EXPORT_SYMBOL(lq_get_cp1_base);
++
 +void __init
 +lq_register_tapi(void)
 +{
 +#define CP1_SIZE      (1 << 20)
 +      dma_addr_t dma;
 +      mps_device.dev.platform_data =
++      cp1_base =
 +              (void*)CPHYSADDR(dma_alloc_coherent(NULL, CP1_SIZE, &dma, GFP_ATOMIC));
++      mps_device.dev.platform_data = cp1_base;
 +      platform_device_register(&mps_device);
 +      platform_device_register(&vmmc_device);
 +}
 +{
 +      platform_device_register_simple(name, 0, 0, 0);
 +}
++
++/* madwifi */
++int lantiq_emulate_madwifi_eep = 0;
++EXPORT_SYMBOL(lantiq_emulate_madwifi_eep);
++
++void __init
++lq_register_madwifi_eep(void)
++{
++      lantiq_emulate_madwifi_eep = 1;
++}
++
++
++
 --- /dev/null
 +++ b/arch/mips/lantiq/xway/devices.h
-@@ -0,0 +1,26 @@
+@@ -0,0 +1,28 @@
 +/*
 + *  This program is free software; you can redistribute it and/or modify it
 + *  under the terms of the GNU General Public License version 2 as published
 +extern void __init lq_register_gpio_leds(struct gpio_led *leds, int cnt);
 +extern void __init lq_register_pci(struct lq_pci_data *data);
 +extern void __init lq_register_nor(struct physmap_flash_data *data);
++extern void __init lq_register_tapi(void);
++extern void __init lq_register_madwifi_eep(void);
 +extern void __init lq_register_wdt(void);
 +extern void __init lq_register_ethernet(struct lq_eth_data *eth);
 +extern void __init lq_register_asc(int port);
 +      struct timer_dev_timer timer[MAX_NUM_OF_32BIT_TIMER_BLOCKS * 2];
 +};
 +
-+static int gptu_ioctl(struct inode *, struct file *, unsigned int, unsigned long);
++static long gptu_ioctl(struct file *, unsigned int, unsigned long);
 +static int gptu_open(struct inode *, struct file *);
 +static int gptu_release(struct inode *, struct file *);
 +
 +static struct file_operations gptu_fops = {
 +      .owner = THIS_MODULE,
-+      .ioctl = gptu_ioctl,
++      .unlocked_ioctl = gptu_ioctl,
 +      .open = gptu_open,
 +      .release = gptu_release
 +};
 +}
 +EXPORT_SYMBOL(lq_set_counter);
 +
-+static int gptu_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
++static long gptu_ioctl(struct file *file, unsigned int cmd,
 +      unsigned long arg)
 +{
 +      int ret;
index 34e0bdf4d22ac66689adceb5bf8efa30177c19b6..1cf402c5c576ada4969436b0c2b8c3ec96d16915 100644 (file)
@@ -1,7 +1,7 @@
 --- a/arch/mips/lantiq/Kconfig
 +++ b/arch/mips/lantiq/Kconfig
-@@ -33,4 +33,19 @@ endchoice
- source "arch/mips/lantiq/falcon/Kconfig"
+@@ -33,4 +33,19 @@
#source "arch/mips/lantiq/falcon/Kconfig"
  source "arch/mips/lantiq/xway/Kconfig"
  
 +if EARLY_PRINTK
@@ -44,7 +44,7 @@
 +#define LQ_ASC_BASE   KSEG1ADDR(LQ_ASC1_BASE)
 +#endif
 +
-+#elif CONFIG_SOC_LANTIQ_FALCON
++#elif defined(CONFIG_SOC_LANTIQ_FALCON)
 +#include <falcon/gpon_reg_base.h>
 +#ifdef CONFIG_LANTIQ_PROM_ASC0
 +#define LQ_ASC_BASE   GPON_ASC0_BASE
index 4066ac586a0421bb6b4e10c1011a977bf9854362..cf4652ec22fbdb088eb4a01de4f9ad38de4b3591 100644 (file)
@@ -1,18 +1,16 @@
 --- a/arch/mips/lantiq/setup.c
 +++ b/arch/mips/lantiq/setup.c
-@@ -12,7 +12,10 @@
+@@ -12,7 +12,8 @@
  #include <linux/ioport.h>
  
  #include <lantiq.h>
 -#include <lantiq_regs.h>
 +
 +#include <machine.h>
-+
-+static unsigned int *cp1_base;
  
  void __init
  plat_mem_setup(void)
-@@ -31,6 +34,7 @@
+@@ -31,6 +32,7 @@
        ioport_resource.end = IOPORT_RESOURCE_END;
        iomem_resource.start = IOMEM_RESOURCE_START;
        iomem_resource.end = IOMEM_RESOURCE_END;
  
        while (*envp)
        {
-@@ -42,6 +46,37 @@
-               }
-               envp++;
-       }
-+//    memsize -= 2;
+@@ -45,3 +47,25 @@
        memsize *= 1024 * 1024;
-+//    cp1_base = (unsigned int*)(KSEG1 | memsize);
        add_memory_region(0x00000000, memsize, BOOT_MEM_RAM);
  }
 +
-+unsigned int*
-+lq_get_cp1_base(void)
-+{
-+      return cp1_base;
-+}
-+EXPORT_SYMBOL(lq_get_cp1_base);
-+
 +static int __init
 +lq_machine_setup(void)
 +{
diff --git a/target/linux/lantiq/patches/150-dev-leds-gpio.patch b/target/linux/lantiq/patches/150-dev-leds-gpio.patch
new file mode 100644 (file)
index 0000000..8ef996b
--- /dev/null
@@ -0,0 +1,90 @@
+--- /dev/null
++++ b/arch/mips/include/asm/mach-lantiq/dev-leds-gpio.h
+@@ -0,0 +1,21 @@
++/*
++ *  Lantiq GPIO LED device support
++ *
++ *  Copyright (C) 2008-2009 Gabor Juhos <juhosg@openwrt.org>
++ *  Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
++ *
++ *  This program is free software; you can redistribute it and/or modify it
++ *  under the terms of the GNU General Public License version 2 as published
++ *  by the Free Software Foundation.
++ */
++
++#ifndef _LANTIQ_DEV_LEDS_GPIO_H
++#define _LANTIQ_DEV_LEDS_GPIO_H
++
++#include <linux/leds.h>
++
++void lq_add_device_leds_gpio(int id,
++                               unsigned num_leds,
++                               struct gpio_led *leds) __init;
++
++#endif /* _LANTIQ_DEV_LEDS_GPIO_H */
+--- /dev/null
++++ b/arch/mips/lantiq/dev-leds-gpio.c
+@@ -0,0 +1,57 @@
++/*
++ *  Lantiq GPIO LED device support
++ *
++ *  Copyright (C) 2008-2009 Gabor Juhos <juhosg@openwrt.org>
++ *  Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
++ *
++ *  Parts of this file are based on Atheros' 2.6.15 BSP
++ *
++ *  This program is free software; you can redistribute it and/or modify it
++ *  under the terms of the GNU General Public License version 2 as published
++ *  by the Free Software Foundation.
++ */
++
++#include <linux/init.h>
++#include <linux/slab.h>
++#include <linux/platform_device.h>
++
++#include "dev-leds-gpio.h"
++
++void __init lq_add_device_leds_gpio(int id, unsigned num_leds,
++                                      struct gpio_led *leds)
++{
++      struct platform_device *pdev;
++      struct gpio_led_platform_data pdata;
++      struct gpio_led *p;
++      int err;
++
++      p = kmalloc(num_leds * sizeof(*p), GFP_KERNEL);
++      if (!p)
++              return;
++
++      memcpy(p, leds, num_leds * sizeof(*p));
++
++      pdev = platform_device_alloc("leds-gpio", id);
++      if (!pdev)
++              goto err_free_leds;
++
++      memset(&pdata, 0, sizeof(pdata));
++      pdata.num_leds = num_leds;
++      pdata.leds = p;
++
++      err = platform_device_add_data(pdev, &pdata, sizeof(pdata));
++      if (err)
++              goto err_put_pdev;
++
++      err = platform_device_add(pdev);
++      if (err)
++              goto err_put_pdev;
++
++      return;
++
++err_put_pdev:
++      platform_device_put(pdev);
++
++err_free_leds:
++      kfree(p);
++}
+--- a/arch/mips/lantiq/Makefile
++++ b/arch/mips/lantiq/Makefile
+@@ -1,2 +1,2 @@
+-obj-y := irq.o setup.o clk.o prom.o
++obj-y := dev-leds-gpio.o irq.o setup.o clk.o prom.o
+ obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
index a13022786b04ee2d2892aab0fab65b5e145dc57c..5f2df560a45ebc4f7697de136cb32f3a05b860b3 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/serial/Kconfig
 +++ b/drivers/serial/Kconfig
-@@ -1397,6 +1397,14 @@
+@@ -1454,6 +1454,14 @@
        help
          Support for Console on the NWP serial ports.
  
        depends on QUICC_ENGINE
 --- a/drivers/serial/Makefile
 +++ b/drivers/serial/Makefile
-@@ -84,3 +84,4 @@
- obj-$(CONFIG_SERIAL_GRLIB_GAISLER_APBUART) += apbuart.o
- obj-$(CONFIG_SERIAL_ALTERA_JTAGUART) += altera_jtaguart.o
- obj-$(CONFIG_SERIAL_ALTERA_UART) += altera_uart.o
+@@ -89,3 +89,4 @@
+ obj-$(CONFIG_SERIAL_MRST_MAX3110)     += mrst_max3110.o
+ obj-$(CONFIG_SERIAL_MFD_HSU)  += mfd.o
+ obj-$(CONFIG_SERIAL_OMAP) += omap-serial.o
 +obj-$(CONFIG_SERIAL_LANTIQ) += lantiq.o
 --- /dev/null
 +++ b/drivers/serial/lantiq.c
index 510ac6bdf3354f1c937407ffc173d0fc82169907..5c46879966e625e53bcc6d0da47426a26cd05ad0 100644 (file)
@@ -1,8 +1,8 @@
 --- a/drivers/mtd/maps/Kconfig
 +++ b/drivers/mtd/maps/Kconfig
-@@ -251,6 +251,12 @@
-       help
-         Support for flash chips on NETtel/SecureEdge/SnapGear boards.
+@@ -260,6 +260,12 @@
+         Support for parsing CFE image tag and creating MTD partitions on
+         Broadcom BCM63xx boards.
  
 +config MTD_LANTIQ
 +      bool "Lantiq SoC NOR support"
 --- a/drivers/mtd/maps/Makefile
 +++ b/drivers/mtd/maps/Makefile
 @@ -59,3 +59,4 @@
- obj-$(CONFIG_MTD_RBTX4939)    += rbtx4939-flash.o
  obj-$(CONFIG_MTD_VMU)         += vmu-flash.o
  obj-$(CONFIG_MTD_GPIO_ADDR)   += gpio-addr-flash.o
-+obj-$(CONFIG_MTD_LANTIQ)  += lantiq.o
+ obj-$(CONFIG_MTD_BCM963XX)    += bcm963xx-flash.o
++obj-$(CONFIG_MTD_LANTIQ)      += lantiq.o
 --- /dev/null
 +++ b/drivers/mtd/maps/lantiq.c
-@@ -0,0 +1,169 @@
+@@ -0,0 +1,173 @@
 +/*
 + *  This program is free software; you can redistribute it and/or modify it
 + *  under the terms of the GNU General Public License version 2 as published
 +#include <lantiq.h>
 +#include <lantiq_platform.h>
 +
++#ifdef CONFIG_SOC_LANTIQ_XWAY
++#include <xway.h>
++#endif
++
 +static map_word
 +lq_read16(struct map_info *map, unsigned long adr)
 +{
 +MODULE_DESCRIPTION("Lantiq SoC NOR");
 --- a/drivers/mtd/chips/cfi_cmdset_0001.c
 +++ b/drivers/mtd/chips/cfi_cmdset_0001.c
-@@ -41,7 +41,11 @@
+@@ -40,7 +40,11 @@
  /* #define CMDSET0001_DISABLE_WRITE_SUSPEND */
  
  // debugging, turns off buffer write mode if set to 1
  
  /* Intel chips */
  #define I82802AB      0x00ad
-@@ -1491,6 +1495,9 @@
+@@ -1493,6 +1497,9 @@
        int ret=0;
  
        adr += chip->start;
        case FL_WRITING:
 --- a/drivers/mtd/chips/cfi_cmdset_0002.c
 +++ b/drivers/mtd/chips/cfi_cmdset_0002.c
-@@ -40,7 +40,11 @@
+@@ -39,7 +39,11 @@
  #include <linux/mtd/xip.h>
  
  #define AMD_BOOTLOC_BUG
  
  #define MAX_WORD_RETRIES 3
  
-@@ -1156,6 +1160,10 @@
+@@ -1167,6 +1171,10 @@
  
        adr += chip->start;
  
diff --git a/target/linux/lantiq/patches/211-nor_split.patch b/target/linux/lantiq/patches/211-nor_split.patch
deleted file mode 100644 (file)
index 2f77681..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
---- a/drivers/mtd/maps/lantiq.c
-+++ b/drivers/mtd/maps/lantiq.c
-@@ -24,6 +24,10 @@
- #include <lantiq.h>
- #include <lantiq_platform.h>
-+#ifdef CONFIG_SOC_LANTIQ_XWAY
-+#include <xway.h>
-+#endif
-+
- static map_word
- lq_read16(struct map_info *map, unsigned long adr)
- {
-@@ -77,6 +81,75 @@ lq_copy_to(struct map_info *map, unsigne
-       spin_unlock_irqrestore(&ebu_lock, flags);
- }
-+static unsigned long
-+find_uImage_size(struct map_info *map, unsigned long offset)
-+{
-+#define UBOOT_MAGIC   0x56190527
-+      unsigned long magic;
-+      unsigned long temp;
-+      map->copy_from(map, &magic, offset, 4);
-+      if (le32_to_cpu(magic) != UBOOT_MAGIC)
-+              return 0;
-+      map->copy_from(map, &temp, offset + 12, 4);
-+      return temp + 0x40;
-+}
-+
-+static int
-+detect_squashfs_partition(struct map_info *map, unsigned long offset)
-+{
-+      unsigned long temp;
-+      map->copy_from(map, &temp, offset, 4);
-+      return le32_to_cpu(temp) == SQUASHFS_MAGIC;
-+}
-+
-+static struct mtd_partition split_partitions[] = {
-+      {
-+              .name = "kernel",
-+              .offset = 0x0,
-+              .size = 0x0,
-+      }, {
-+              .name = "rootfs",
-+              .offset = 0x0,
-+              .size = 0x0,
-+      },
-+};
-+
-+static int
-+mtd_split_linux(struct map_info *map, struct mtd_info *mtd,
-+      struct mtd_partition *parts, int nr_parts)
-+{
-+      int base_part = 0;
-+      int i;
-+      for (i = 0; i < nr_parts && !base_part; i++) {
-+              if(!strcmp("linux", parts[i].name))
-+                      base_part = i;
-+      }
-+      if (!base_part)
-+              return 0;
-+      split_partitions[0].size = find_uImage_size(map, parts[base_part].offset);
-+      if (!split_partitions[0].size) {
-+              printk(KERN_INFO "lq_nor: no uImage found in linux partition");
-+              return -1;
-+      }
-+      if (!detect_squashfs_partition(map,
-+                      parts[base_part].offset + split_partitions[0].size)) {
-+              split_partitions[0].size &= ~(mtd->erasesize - 1);
-+              split_partitions[0].size += mtd->erasesize;
-+      }
-+      split_partitions[0].offset = parts[base_part].offset;
-+      split_partitions[1].offset =
-+              parts[base_part].offset + split_partitions[0].size;
-+      split_partitions[1].size =
-+              parts[base_part].size - split_partitions[0].size;
-+
-+      base_part++;
-+      add_mtd_partitions(mtd, parts, base_part);
-+      add_mtd_partitions(mtd, split_partitions, 2);
-+      if(nr_parts != base_part)
-+              add_mtd_partitions(mtd, &parts[base_part], nr_parts - base_part);
-+      return nr_parts + 2;
-+}
-+
- static const char *part_probe_types[] = { "cmdlinepart", NULL };
- static struct map_info lq_map = {
-@@ -142,7 +215,8 @@ lq_mtd_probe(struct platform_device *pde
-               parts = lq_mtd_data->parts;
-       }
--      add_mtd_partitions(lq_mtd, parts, nr_parts);
-+      if (!mtd_split_linux(&lq_map, lq_mtd, parts, nr_parts))
-+              add_mtd_partitions(lq_mtd, parts, nr_parts);
-       return 0;
- }
diff --git a/target/linux/lantiq/patches/220-mtd_uimage_split.patch b/target/linux/lantiq/patches/220-mtd_uimage_split.patch
new file mode 100644 (file)
index 0000000..8509d58
--- /dev/null
@@ -0,0 +1,116 @@
+--- a/drivers/mtd/Kconfig
++++ b/drivers/mtd/Kconfig
+@@ -63,6 +63,10 @@ config MTD_ROOTFS_SPLIT
+       depends on MTD_PARTITIONS
+       default y
++config MTD_UIMAGE_SPLIT
++      bool "Automatically split 'linux' partition into 'kernel' and 'rootfs'"
++      default y
++
+ config MTD_REDBOOT_PARTS
+       tristate "RedBoot partition table parsing"
+       depends on MTD_PARTITIONS
+--- a/drivers/mtd/mtdpart.c
++++ b/drivers/mtd/mtdpart.c
+@@ -722,6 +722,82 @@ static int refresh_rootfs_split(struct m
+ }
+ #endif /* CONFIG_MTD_ROOTFS_SPLIT */
++
++#ifdef CONFIG_MTD_UIMAGE_SPLIT
++static unsigned long find_uimage_size(struct mtd_info *mtd,
++                                    unsigned long offset)
++{
++#define UBOOT_MAGIC   0x56190527
++      unsigned long magic = 0;
++      unsigned long temp;
++      size_t len;
++      int ret;
++
++      ret = mtd->read(mtd, offset, 4, &len, (void *)&magic);
++      if (ret || len != sizeof(magic))
++              return 0;
++
++      if (le32_to_cpu(magic) != UBOOT_MAGIC)
++              return 0;
++
++      ret = mtd->read(mtd, offset + 12, 4, &len, (void *)&temp);
++      if (ret || len != sizeof(temp))
++              return 0;
++
++      return temp + 0x40;
++}
++
++static int detect_squashfs_partition(struct mtd_info *mtd, unsigned long offset)
++{
++      unsigned long temp;
++      size_t len;
++      int ret;
++
++      ret = mtd->read(mtd, offset, 4, &len, (void *)&temp);
++      if (ret || len != sizeof(temp))
++              return 0;
++
++      return le32_to_cpu(temp) == SQUASHFS_MAGIC;
++}
++
++static int split_uimage(struct mtd_info *mtd,
++                      const struct mtd_partition *part)
++{
++      static struct mtd_partition split_partitions[] = {
++              {
++                      .name = "kernel",
++                      .offset = 0x0,
++                      .size = 0x0,
++              }, {
++                      .name = "rootfs",
++                      .offset = 0x0,
++                      .size = 0x0,
++              },
++      };
++
++      split_partitions[0].size = find_uimage_size(mtd, part->offset);
++      if (!split_partitions[0].size) {
++              printk(KERN_NOTICE "no uImage found in linux partition\n");
++              return -1;
++      }
++
++      if (!detect_squashfs_partition(mtd,
++                                     part->offset
++                                     + split_partitions[0].size)) {
++              split_partitions[0].size &= ~(mtd->erasesize - 1);
++              split_partitions[0].size += mtd->erasesize;
++      }
++
++      split_partitions[0].offset = part->offset;
++      split_partitions[1].offset = part->offset + split_partitions[0].size;
++      split_partitions[1].size = part->size - split_partitions[0].size;
++
++      add_mtd_partitions(mtd, split_partitions, 2);
++
++      return 0;
++}
++#endif
++
+ /*
+  * This function, given a master MTD object and a partition table, creates
+  * and registers slave MTD objects which are bound to the master according to
+@@ -746,6 +822,17 @@ int add_mtd_partitions(struct mtd_info *
+               if (!slave)
+                       return -ENOMEM;
++#ifdef CONFIG_MTD_UIMAGE_SPLIT
++              if (!strcmp(parts[i].name, "linux")) {
++                      ret = split_uimage(master, &parts[i]);
++
++                      if (ret) {
++                              printk(KERN_WARNING
++                                     "Can't split linux partition\n");
++                      }
++              }
++#endif
++
+               if (!strcmp(parts[i].name, "rootfs")) {
+ #ifdef CONFIG_MTD_ROOTFS_ROOT_DEV
+                       if (ROOT_DEV == 0) {
index 28955cf9ad5e5563f7abb22b3f5477b38ab8b1b8..2f10a5297444deb40aa3a66af92c1662bd24647c 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/net/Kconfig
 +++ b/drivers/net/Kconfig
-@@ -343,6 +343,12 @@ config MACB
+@@ -358,6 +358,12 @@
  
  source "drivers/net/arm/Kconfig"
  
@@ -15,7 +15,7 @@
        depends on ARM || MIPS || SUPERH
 --- a/drivers/net/Makefile
 +++ b/drivers/net/Makefile
-@@ -204,6 +204,7 @@ obj-$(CONFIG_SNI_82596) += sni_82596.o
+@@ -213,6 +213,7 @@
  obj-$(CONFIG_MVME16x_NET) += 82596.o
  obj-$(CONFIG_BVME6000_NET) += 82596.o
  obj-$(CONFIG_SC92031) += sc92031.o
index f86ff71868a02ee8fe27b532b76c008ff1be2be5..6f727c4273255f5e7442cfe814e075ae5e665f83 100644 (file)
@@ -1,8 +1,8 @@
 --- a/drivers/watchdog/Kconfig
 +++ b/drivers/watchdog/Kconfig
-@@ -840,6 +840,12 @@ config TXX9_WDT
-       help
-         Hardware driver for the built-in watchdog timer on TXx9 MIPS SoCs.
+@@ -930,6 +930,12 @@
+         To compile this driver as a loadable module, choose M here.
+         The module will be called bcm63xx_wdt.
  
 +config LANTIQ_WDT
 +      bool "Lantiq SoC watchdog"
  # POWERPC Architecture
 --- a/drivers/watchdog/Makefile
 +++ b/drivers/watchdog/Makefile
-@@ -112,6 +112,7 @@ obj-$(CONFIG_PNX833X_WDT) += pnx833x_wdt
- obj-$(CONFIG_SIBYTE_WDOG) += sb_wdog.o
- obj-$(CONFIG_AR7_WDT) += ar7_wdt.o
+@@ -119,6 +119,7 @@
  obj-$(CONFIG_TXX9_WDT) += txx9wdt.o
+ obj-$(CONFIG_OCTEON_WDT) += octeon-wdt.o
+ octeon-wdt-y := octeon-wdt-main.o octeon-wdt-nmi.o
 +obj-$(CONFIG_LANTIQ_WDT) += lantiq_wdt.o
  
  # PARISC Architecture
 +static const struct file_operations lq_wdt_fops = {
 +      .owner          = THIS_MODULE,
 +      .write          = lq_wdt_write,
-+      .ioctl          = lq_wdt_ioctl,
++      .unlocked_ioctl = lq_wdt_ioctl,
 +      .open           = lq_wdt_open,
 +      .release        = lq_wdt_release,
 +};
index 38061a9b0f83fc5b884fa71632ecc3fc0183ee7d..e99cfd381c78a349753599b349939e815e5ad81f 100644 (file)
@@ -1,8 +1,8 @@
 --- a/drivers/crypto/Kconfig
 +++ b/drivers/crypto/Kconfig
-@@ -243,4 +243,75 @@
-         OMAP processors have SHA1/MD5 hw accelerator. Select this if you
-         want to use the OMAP module for SHA1/MD5 algorithms.
+@@ -252,4 +252,75 @@
+         OMAP processors have AES module accelerator. Select this if you
+         want to use the OMAP module for AES algorithms.
  
 +config CRYPTO_DEV_LANTIQ
 +      tristate "Support for Lantiq crypto engine"
 +#endif /* DEU_FALCON_H */
 --- a/arch/mips/lantiq/xway/devices.h
 +++ b/arch/mips/lantiq/xway/devices.h
-@@ -22,5 +22,6 @@
+@@ -24,5 +24,6 @@
  extern void __init lq_register_ethernet(struct lq_eth_data *eth);
  extern void __init lq_register_asc(int port);
  extern void __init lq_register_gpio_buttons(struct gpio_button *buttons, int cnt);
index 7425a3108f4bbc03d5cab7cc6cea9732a401df29..a59f6cce49ad0d5de70df257a5f5189ff91f2c47 100644 (file)
 +#endif /* CONFIG_IFX_UDP_REDIRECT* */
 --- a/net/ipv4/Makefile
 +++ b/net/ipv4/Makefile
-@@ -14,6 +14,9 @@ obj-y     := route.o inetpeer.o protocol
+@@ -14,6 +14,9 @@
             inet_fragment.o
  
  obj-$(CONFIG_SYSCTL) += sysctl_net_ipv4.o
  obj-$(CONFIG_PROC_FS) += proc.o
 --- a/net/ipv4/udp.c
 +++ b/net/ipv4/udp.c
-@@ -106,6 +106,10 @@
+@@ -107,6 +107,10 @@
  #include <net/xfrm.h>
  #include "udp_impl.h"
  
  struct udp_table udp_table __read_mostly;
  EXPORT_SYMBOL(udp_table);
  
-@@ -782,7 +786,7 @@ int udp_sendmsg(struct kiocb *iocb, stru
+@@ -784,7 +788,7 @@
        u8  tos;
        int err, is_udplite = IS_UDPLITE(sk);
        int corkreq = up->corkflag || msg->msg_flags&MSG_MORE;
  
        if (len > 0xFFFF)
                return -EMSGSIZE;
-@@ -944,6 +948,12 @@ back_from_confirm:
+@@ -946,6 +950,12 @@
  
  do_append_data:
        up->len += ulen;
        getfrag  =  is_udplite ?  udplite_getfrag : ip_generic_getfrag;
        err = ip_append_data(sk, getfrag, msg->msg_iov, ulen,
                        sizeof(struct udphdr), &ipc, &rt,
-@@ -1518,6 +1528,7 @@ int __udp4_lib_rcv(struct sk_buff *skb, 
+@@ -1573,6 +1583,7 @@
        struct rtable *rt = skb_rtable(skb);
        __be32 saddr, daddr;
        struct net *net = dev_net(skb->dev);
  
        /*
         *  Validate the packet.
-@@ -1550,7 +1561,16 @@ int __udp4_lib_rcv(struct sk_buff *skb, 
+@@ -1605,7 +1616,16 @@
        sk = __udp4_lib_lookup_skb(skb, uh->source, uh->dest, udptable);
  
        if (sk != NULL) {
                sock_put(sk);
  
                /* a return value > 0 means to resubmit the input, but
-@@ -1845,7 +1865,7 @@ struct proto udp_prot = {
- #endif
+@@ -1902,7 +1922,7 @@
+       .clear_sk          = sk_prot_clear_portaddr_nulls,
  };
  EXPORT_SYMBOL(udp_prot);
 -
  
 --- a/net/Kconfig
 +++ b/net/Kconfig
-@@ -72,6 +72,12 @@ config INET
+@@ -72,6 +72,12 @@
  
          Short answer: say Y.
  
index 55e75ce546fdb15857b1764b43f2652bc7af572b..ef19643cf0e6ee6e6187b1f4f02cb51461be1929 100644 (file)
@@ -11,7 +11,7 @@
  
 --- a/net/atm/proc.c
 +++ b/net/atm/proc.c
-@@ -153,7 +153,7 @@
+@@ -154,7 +154,7 @@
  static void pvc_info(struct seq_file *seq, struct atm_vcc *vcc)
  {
        static const char *const class_name[] = {
@@ -22,7 +22,7 @@
                "???",  "5",    "???",  "???",  /*  4- 7 */
 --- a/net/atm/common.c
 +++ b/net/atm/common.c
-@@ -60,11 +60,17 @@
+@@ -62,11 +62,17 @@
        write_unlock_irq(&vcc_sklist_lock);
  }
  
index af86355667a94e3ccf2b9bae1863d09272971f6e..2c029446446c3be34c0995792441572568503c04 100644 (file)
@@ -1,11 +1,12 @@
 --- a/arch/mips/include/asm/mach-lantiq/machine.h
 +++ b/arch/mips/include/asm/mach-lantiq/machine.h
-@@ -11,4 +11,14 @@
+@@ -11,4 +11,15 @@
        LANTIQ_MACH_EASY4010,           /* Twinpass evalkit */
        LANTIQ_MACH_EASY50712,          /* Danube evalkit */
        LANTIQ_MACH_EASY50812,          /* AR9 eval board */
 +
 +      /* Arcadyan */
++      LANTIQ_MACH_ARV3527P,           /* Arcor easybox a401 */
 +      LANTIQ_MACH_ARV4510PW,          /* Wippies Homebox */
 +      LANTIQ_MACH_ARV4518PW,          /* Airties WAV-221, SMC-7908A-ISP */
 +      LANTIQ_MACH_ARV4520PW,          /* Airties WAV-281, Arcor EasyboxA800 */
@@ -37,7 +38,7 @@
 +obj-$(CONFIG_LANTIQ_MACH_ARV45XX) += mach-arv45xx.o
 --- /dev/null
 +++ b/arch/mips/lantiq/xway/mach-arv45xx.c
-@@ -0,0 +1,514 @@
+@@ -0,0 +1,504 @@
 +/*
 + *  This program is free software; you can redistribute it and/or modify it
 + *  under the terms of the GNU General Public License version 2 as published
 +      {
 +              .name   = "uboot",
 +              .offset = 0x0,
-+              .size   = 0x20000,
-+      },
-+      {
-+              .name   = "uboot_env",
-+              .offset = 0x20000,
 +              .size   = 0x10000,
 +      },
 +      {
-+              .name   = "linux",
-+              .offset = 0x30000,
-+              .size   = 0x3c0000,
-+      },
-+      {
-+              .name   = "board_config",
-+              .offset = 0x3f0000,
-+              .size   = 0x10000,
-+      },
-+};
-+
-+static struct mtd_partition arv4518_partitions[] =
-+{
-+      {
-+              .name   = "uboot",
-+              .offset = 0x0,
-+              .size   = 0x40000,
-+      },
-+      {
 +              .name   = "uboot_env",
-+              .offset = 0x40000,
++              .offset = 0x10000,
 +              .size   = 0x10000,
 +      },
 +      {
 +              .name   = "linux",
-+              .offset = 0x50000,
-+              .size   = 0x3a0000,
++              .offset = 0x20000,
++              .size   = 0x3d0000,
 +      },
 +      {
 +              .name   = "board_config",
 +      {
 +              .name   = "uboot",
 +              .offset = 0x0,
-+              .size   = 0x40000,
++              .size   = 0x10000,
 +      },
 +      {
 +              .name   = "uboot_env",
-+              .offset = 0x40000,
++              .offset = 0x10000,
 +              .size   = 0x10000,
 +      },
 +      {
 +              .name   = "linux",
-+              .offset = 0x50000,
-+              .size   = 0x7a0000,
++              .offset = 0x20000,
++              .size   = 0x7d0000,
 +      },
 +      {
 +              .name   = "board_config",
 +#endif
 +};
 +
-+static struct physmap_flash_data arv4518_flash_data = {
-+#ifdef CONFIG_MTD_PARTITIONS
-+      .nr_parts       = ARRAY_SIZE(arv4518_partitions),
-+      .parts          = arv4518_partitions,
-+#endif
-+};
-+
 +static struct physmap_flash_data arv75xx_flash_data = {
 +#ifdef CONFIG_MTD_PARTITIONS
 +      .nr_parts       = ARRAY_SIZE(arv75xx_partitions),
 +#define ARV45XX_BRN_ATH               0x3f0478
 +      int i;
 +      unsigned char eeprom_mac[6];
-+      u16 eeprom_data[ATH5K_PLAT_EEP_MAX_WORDS];
++      static u16 eeprom_data[ATH5K_PLAT_EEP_MAX_WORDS];
 +      u32 *p = (u32*)arv45xx_ath5k_eeprom_data;
 +
 +      memcpy_fromio(eeprom_mac,
 +}
 +
 +static void __init
++arv3527p_init(void)
++{
++      lq_register_gpio();
++      lq_register_gpio_stp();
++      //lq_register_gpio_leds(arv3527p_leds_gpio, ARRAY_SIZE(arv3527p_leds_gpio));
++      lq_register_asc(0);
++      lq_register_asc(1);
++      lq_register_nor(&arv45xx_flash_data);
++      lq_register_wdt();
++      arv45xx_register_ethernet();
++}
++
++MIPS_MACHINE(LANTIQ_MACH_ARV3527P,
++                      "ARV3527P",
++                      "ARV3527P - Arcor Easybox 401",
++                      arv3527p_init);
++
++static void __init
 +arv4510pw_init(void)
 +{
 +      lq_register_gpio();
 +      lq_register_asc(0);
 +      lq_register_asc(1);
 +      lq_register_nor(&arv45xx_flash_data);
-+      lq_register_pci(&lq_pci_data);
 +      lq_pci_data.irq[15] = (INT_NUM_IM2_IRL0 + 31);
 +      lq_pci_data.gpio |= PCI_EXIN1 | PCI_REQ2;
 +      lq_register_pci(&lq_pci_data);
 +      lq_register_gpio_buttons(arv4518pw_gpio_buttons, ARRAY_SIZE(arv4518pw_gpio_buttons));
 +      lq_register_asc(0);
 +      lq_register_asc(1);
-+      lq_register_nor(&arv4518_flash_data);
++      lq_register_nor(&arv45xx_flash_data);
 +      lq_pci_data.gpio = PCI_GNT2 | PCI_REQ2;
 +      lq_register_pci(&lq_pci_data);
 +      lq_register_wdt();
++      lq_register_madwifi_eep();
 +      xway_register_dwc(ARV4518PW_USB);
 +      arv45xx_register_ethernet();
 +      arv45xx_register_ath5k();
 +      lq_register_nor(&arv45xx_flash_data);
 +      lq_register_pci(&lq_pci_data);
 +      lq_register_wdt();
++      lq_register_tapi();
 +      arv45xx_register_ethernet();
 +      xway_register_dwc(ARV4520PW_USB);
 +
 +      lq_register_gpio_leds(arv452cpw_leds_gpio, ARRAY_SIZE(arv452cpw_leds_gpio));
 +      lq_register_asc(0);
 +      lq_register_asc(1);
-+      lq_register_nor(&arv4518_flash_data);
++      lq_register_nor(&arv45xx_flash_data);
 +      lq_register_pci(&lq_pci_data);
 +      lq_register_wdt();
++      lq_register_madwifi_eep();
 +      xway_register_dwc(ARV452CPW_USB);
 +      arv45xx_register_ethernet();
 +      arv45xx_register_ath5k();
 +      lq_pci_data.clock = PCI_CLOCK_INT;
 +      lq_register_pci(&lq_pci_data);
 +      lq_register_wdt();
++      lq_register_madwifi_eep();
 +      lq_eth_data.mii_mode = MII_MODE;
 +      arv45xx_register_ethernet();
 +}
index f663062047beed88cdab8d1f360921e29a531c74..81884034c0c4fda518c90281616ad43f5e35d1c5 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/usb/Kconfig
 +++ b/drivers/usb/Kconfig
-@@ -111,6 +111,8 @@
+@@ -113,6 +113,8 @@
  
  source "drivers/usb/host/Kconfig"
  
@@ -39,9 +39,9 @@
 +        bool "HOST ONLY MODE"
 +        depends on DWC_OTG
 +
-+config DWC_OTG_DEVICE_ONLY
-+        bool "DEVICE ONLY MODE"
-+        depends on DWC_OTG
++#config DWC_OTG_DEVICE_ONLY
++#        bool "DEVICE ONLY MODE"
++#        depends on DWC_OTG
 +endchoice
 +
 +choice
index 5472d79b6d28eb2de5dcd1e429c9bd2baee2c054..ea5076178ed1956fc888101117bc2dfcbd63a3fb 100644 (file)
@@ -1,6 +1,6 @@
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -1699,6 +1699,28 @@
+@@ -1837,6 +1837,28 @@ config MIPS_VPE_LOADER
          Includes a loader for loading an elf relocatable object
          onto another VPE and running it.
  
  /* TCStatus fields (per TC) */
  #define TCSTATUS_TASID                (_ULCAST_(0xff))
  #define TCSTATUS_IXMT_SHIFT   10
-@@ -350,6 +390,14 @@
+@@ -350,6 +390,14 @@ do {                                                                      \
  #define write_vpe_c0_vpecontrol(val)  mttc0(1, 1, val)
  #define read_vpe_c0_vpeconf0()                mftc0(1, 2)
  #define write_vpe_c0_vpeconf0(val)    mttc0(1, 2, val)
  #define read_vpe_c0_count()           mftc0(9, 0)
  #define write_vpe_c0_count(val)               mttc0(9, 0, val)
  #define read_vpe_c0_status()          mftc0(12, 0)
-@@ -381,6 +429,12 @@
+@@ -381,6 +429,12 @@ do {                                                                      \
  #define write_tc_c0_tchalt(val)               mttc0(2, 4, val)
  #define read_tc_c0_tccontext()                mftc0(2, 5)
  #define write_tc_c0_tccontext(val)    mttc0(2, 5, val)
  #define read_tc_gpr_sp()              mftgpr(29)
 --- a/arch/mips/kernel/Makefile
 +++ b/arch/mips/kernel/Makefile
-@@ -84,7 +84,8 @@
+@@ -85,7 +85,8 @@ obj-$(CONFIG_MIPS32_O32)     += binfmt_elfo3
  
  obj-$(CONFIG_KGDB)            += kgdb.o
  obj-$(CONFIG_PROC_FS)         += proc.o
  obj-$(CONFIG_I8253)           += i8253.o
 --- a/arch/mips/kernel/mips-mt.c
 +++ b/arch/mips/kernel/mips-mt.c
-@@ -21,26 +21,95 @@
+@@ -21,26 +21,96 @@
  #include <asm/cacheflush.h>
  
  int vpelimit;
 +                      tlbsiz = (((config1val >> 25) & 0x3f) + 1);
 +                      if (tlbsiz > 64)
 +                              tlbsiz = 64;
-+                      cpu_data[0].tlbsize = current_cpu_data.tlbsize = tlbsiz;
++                      cpu_data[0].tlbsize = tlbsiz;
++                      current_cpu_data.tlbsize = tlbsiz;
 +              }
 +
 +      }
  
  /*
   * Dump new MIPS MT state for the core. Does not leave TCs halted.
-@@ -78,18 +147,18 @@
+@@ -78,18 +148,18 @@ void mips_mt_regdump(unsigned long mvpct
                        if ((read_tc_c0_tcbind() & TCBIND_CURVPE) == i) {
                                printk("  VPE %d\n", i);
                                printk("   VPEControl : %08lx\n",
                                break; /* Next VPE */
                        }
                }
-@@ -287,6 +356,9 @@
+@@ -287,6 +357,9 @@ void mips_mt_set_cpuoptions(void)
                printk("Mapped %ld ITC cells starting at 0x%08x\n",
                        ((itcblkgrn & 0x7fe00000) >> 20), itc_base);
        }
  #include <asm/bootinfo.h>
  #include <asm/cpu.h>
  #include <asm/cpu-features.h>
-@@ -108,3 +109,19 @@
+@@ -108,3 +109,19 @@ const struct seq_operations cpuinfo_op =
        .stop   = c_stop,
        .show   = show_cpuinfo,
  };
 +}
 --- a/arch/mips/kernel/smtc.c
 +++ b/arch/mips/kernel/smtc.c
-@@ -1336,6 +1336,13 @@
+@@ -1335,6 +1335,13 @@ void smtc_get_new_mmu_context(struct mm_
        asid = asid_cache(cpu);
  
        do {
                                flush_icache_all();
 --- a/arch/mips/kernel/vpe.c
 +++ b/arch/mips/kernel/vpe.c
-@@ -76,6 +76,58 @@
+@@ -76,6 +76,58 @@ static struct kspd_notifications kspd_ev
  static int kspd_events_reqd;
  #endif
  
  /* grab the likely amount of memory we will need. */
  #ifdef CONFIG_MIPS_VPE_LOADER_TOM
  #define P_SIZE (2 * 1024 * 1024)
-@@ -268,6 +320,13 @@
+@@ -268,6 +320,13 @@ static void *alloc_progmem(unsigned long
        void *addr;
  
  #ifdef CONFIG_MIPS_VPE_LOADER_TOM
        /*
         * This means you must tell Linux to use less memory than you
         * physically have, for example by passing a mem= boot argument.
-@@ -746,6 +805,12 @@
+@@ -746,6 +805,12 @@ static int vpe_run(struct vpe * v)
        }
  
        /* Write the address we want it to start running from in the TCPC register. */
        write_tc_c0_tcrestart((unsigned long)v->__start);
        write_tc_c0_tccontext((unsigned long)0);
  
-@@ -759,6 +824,20 @@
+@@ -759,6 +824,20 @@ static int vpe_run(struct vpe * v)
  
        write_tc_c0_tchalt(read_tc_c0_tchalt() & ~TCHALT_H);
  
        /*
         * The sde-kit passes 'memsize' to __start in $a3, so set something
         * here...  Or set $a3 to zero and define DFLT_STACK_SIZE and
-@@ -833,6 +912,9 @@
+@@ -833,6 +912,9 @@ static int find_vpe_symbols(struct vpe *
        if ( (v->__start == 0) || (v->shared_ptr == NULL))
                return -1;
  
        return 0;
  }
  
-@@ -994,6 +1076,15 @@
+@@ -994,6 +1076,15 @@ static int vpe_elfload(struct vpe * v)
                           (unsigned long)v->load_addr + v->len);
  
        if ((find_vpe_symbols(v, sechdrs, symindex, strtab, &mod)) < 0) {
                if (v->__start == 0) {
                        printk(KERN_WARNING "VPE loader: program does not contain "
                               "a __start symbol\n");
-@@ -1064,6 +1155,9 @@
+@@ -1064,6 +1155,9 @@ static int vpe_open(struct inode *inode,
        struct vpe_notifications *not;
        struct vpe *v;
        int ret;
  
        if (minor != iminor(inode)) {
                /* assume only 1 device at the moment. */
-@@ -1090,14 +1184,23 @@
+@@ -1090,6 +1184,12 @@ static int vpe_open(struct inode *inode,
                cleanup_tc(get_tc(tclimit));
        }
  
 +#else
        /* this of-course trashes what was there before... */
        v->pbuffer = vmalloc(P_SIZE);
+       if (!v->pbuffer) {
+@@ -1097,11 +1197,13 @@ static int vpe_open(struct inode *inode,
+               return -ENOMEM;
+       }
        v->plen = P_SIZE;
 +#endif
        v->load_addr = NULL;
        v->len = 0;
+-
 +#if 0
        v->uid = filp->f_cred->fsuid;
        v->gid = filp->f_cred->fsgid;
  
  #ifdef CONFIG_MIPS_APSP_KSPD
        /* get kspd to tell us when a syscall_exit happens */
-@@ -1350,6 +1453,133 @@
+@@ -1349,6 +1451,133 @@ static void kspd_sp_exit( int sp_id)
        cleanup_tc(get_tc(sp_id));
  }
  #endif
  
  static ssize_t store_kill(struct device *dev, struct device_attribute *attr,
                          const char *buf, size_t len)
-@@ -1431,6 +1661,18 @@
+@@ -1430,6 +1659,18 @@ static int __init vpe_module_init(void)
                printk("VPE loader: not a MIPS MT capable processor\n");
                return -ENODEV;
        }
  
        if (vpelimit == 0) {
                printk(KERN_WARNING "No VPEs reserved for AP/SP, not "
-@@ -1475,10 +1717,12 @@
+@@ -1474,10 +1715,12 @@ static int __init vpe_module_init(void)
        mtflags = dmt();
        vpflags = dvpe();
  
  
        val = read_c0_mvpconf0();
        hw_tcs = (val & MVPCONF0_PTC) + 1;
-@@ -1490,6 +1734,7 @@
+@@ -1489,6 +1732,7 @@ static int __init vpe_module_init(void)
                 * reschedule send IPIs or similar we might hang.
                 */
                clear_c0_mvpcontrol(MVPCONTROL_VPC);
                evpe(vpflags);
                emt(mtflags);
                local_irq_restore(flags);
-@@ -1515,6 +1760,7 @@
+@@ -1514,6 +1758,7 @@ static int __init vpe_module_init(void)
                        }
  
                        v->ntcs = hw_tcs - tclimit;
  
                        /* add the tc to the list of this vpe's tc's. */
                        list_add(&t->tc, &v->tc);
-@@ -1583,6 +1829,7 @@
+@@ -1582,6 +1827,7 @@ static int __init vpe_module_init(void)
  out_reenable:
        /* release config state */
        clear_c0_mvpcontrol(MVPCONTROL_VPC);
 + * Write to perf counter registers based on text input
 + */
 +
-+#define TXTBUFSZ 1024
++#define TXTBUFSZ 100
 +
 +static int proc_write_mtsched(struct file *file, const char *buffer,
 +                              unsigned long count, void *data)
 + * Write to perf counter registers based on text input
 + */
 +
-+#define TXTBUFSZ 1024
++#define TXTBUFSZ 100
 +
 +static int proc_write_perf(struct file *file, const char *buffer,
 +                              unsigned long count, void *data)
index 9487f6ce43c669583ffe0cb0bddacf154f515921..d04f1e9f5e4e279ed2384f4eb726c78f124c5320 100644 (file)
@@ -1,6 +1,6 @@
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -1706,6 +1706,28 @@
+@@ -1844,6 +1844,28 @@
        help
          IFX included extensions in APRP
  
        write_vpe_c0_cause(0);
 --- a/arch/mips/mm/c-r4k.c
 +++ b/arch/mips/mm/c-r4k.c
-@@ -1348,6 +1348,106 @@
+@@ -1347,6 +1347,106 @@
  __setup("coherentio", setcoherentio);
  #endif
  
  void __cpuinit r4k_cache_init(void)
  {
        extern void build_clear_page(void);
-@@ -1367,6 +1467,78 @@
+@@ -1366,6 +1466,78 @@
                break;
        }
  
diff --git a/target/linux/lantiq/patches/900-header_falcon.patch b/target/linux/lantiq/patches/900-header_falcon.patch
new file mode 100644 (file)
index 0000000..f2e6870
--- /dev/null
@@ -0,0 +1,14004 @@
+--- /dev/null
++++ b/arch/mips/include/asm/mach-lantiq/falcon/falcon_irq.h
+@@ -0,0 +1,277 @@
++/*
++ *   This program is free software; you can redistribute it and/or modify
++ *   it under the terms of the GNU General Public License as published by
++ *   the Free Software Foundation; either version 2 of the License, or
++ *   (at your option) any later version.
++ *
++ *   This program is distributed in the hope that it will be useful,
++ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *   GNU General Public License for more details.
++ *
++ *   You should have received a copy of the GNU General Public License
++ *   along with this program; if not, write to the Free Software
++ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
++ *
++ *   Copyright (C) 2010 Lantiq
++ */
++#ifndef _FALCON_IRQ__
++#define _FALCON_IRQ__
++
++#define INT_NUM_IRQ0                  8
++#define INT_NUM_IM0_IRL0              (INT_NUM_IRQ0 + 0)
++#define INT_NUM_IM1_IRL0              (INT_NUM_IM0_IRL0 + 32)
++#define INT_NUM_IM2_IRL0              (INT_NUM_IM1_IRL0 + 32)
++#define INT_NUM_IM3_IRL0              (INT_NUM_IM2_IRL0 + 32)
++#define INT_NUM_IM4_IRL0              (INT_NUM_IM3_IRL0 + 32)
++#define INT_NUM_EXTRA_START           (INT_NUM_IM4_IRL0 + 32)
++#define INT_NUM_IM_OFFSET             (INT_NUM_IM1_IRL0 - INT_NUM_IM0_IRL0)
++
++#define MIPS_CPU_TIMER_IRQ                    7
++
++/* HOST IF Event Interrupt */
++#define FALCON_IRQ_HOST                               (INT_NUM_IM0_IRL0 + 0)
++/* HOST IF Mailbox0 Receive Interrupt */
++#define FALCON_IRQ_HOST_MB0_RX                        (INT_NUM_IM0_IRL0 + 1)
++/* HOST IF Mailbox0 Transmit Interrupt */
++#define FALCON_IRQ_HOST_MB0_TX                        (INT_NUM_IM0_IRL0 + 2)
++/* HOST IF Mailbox1 Receive Interrupt */
++#define FALCON_IRQ_HOST_MB1_RX                        (INT_NUM_IM0_IRL0 + 3)
++/* HOST IF Mailbox1 Transmit Interrupt */
++#define FALCON_IRQ_HOST_MB1_TX                        (INT_NUM_IM0_IRL0 + 4)
++/* I2C Last Single Data Transfer Request */
++#define FALCON_IRQ_I2C_LSREQ                  (INT_NUM_IM0_IRL0 + 8)
++/* I2C Single Data Transfer Request */
++#define FALCON_IRQ_I2C_SREQ                   (INT_NUM_IM0_IRL0 + 9)
++/* I2C Last Burst Data Transfer Request */
++#define FALCON_IRQ_I2C_LBREQ                  (INT_NUM_IM0_IRL0 + 10)
++/* I2C Burst Data Transfer Request */
++#define FALCON_IRQ_I2C_BREQ                   (INT_NUM_IM0_IRL0 + 11)
++/* I2C Error Interrupt */
++#define FALCON_IRQ_I2C_I2C_ERR                        (INT_NUM_IM0_IRL0 + 12)
++/* I2C Protocol Interrupt */
++#define FALCON_IRQ_I2C_I2C_P                  (INT_NUM_IM0_IRL0 + 13)
++/* SSC Transmit Interrupt */
++#define FALCON_IRQ_SSC_T                      (INT_NUM_IM0_IRL0 + 14)
++/* SSC Receive Interrupt */
++#define FALCON_IRQ_SSC_R                      (INT_NUM_IM0_IRL0 + 15)
++/* SSC Error Interrupt */
++#define FALCON_IRQ_SSC_E                      (INT_NUM_IM0_IRL0 + 16)
++/* SSC Frame Interrupt */
++#define FALCON_IRQ_SSC_F                      (INT_NUM_IM0_IRL0 + 17)
++/* Advanced Encryption Standard Interrupt */
++#define FALCON_IRQ_AES_AES                    (INT_NUM_IM0_IRL0 + 27)
++/* Secure Hash Algorithm Interrupt */
++#define FALCON_IRQ_SHA_HASH                   (INT_NUM_IM0_IRL0 + 28)
++/* PCM Receive Interrupt */
++#define FALCON_IRQ_PCM_RX                     (INT_NUM_IM0_IRL0 + 29)
++/* PCM Transmit Interrupt */
++#define FALCON_IRQ_PCM_TX                     (INT_NUM_IM0_IRL0 + 30)
++/* PCM Transmit Crash Interrupt */
++#define FALCON_IRQ_PCM_HW2_CRASH              (INT_NUM_IM0_IRL0 + 31)
++
++/* EBU Serial Flash Command Error */
++#define FALCON_IRQ_EBU_SF_CMDERR              (INT_NUM_IM1_IRL0 + 0)
++/* EBU Serial Flash Command Overwrite Error */
++#define FALCON_IRQ_EBU_SF_COVERR              (INT_NUM_IM1_IRL0 + 1)
++/* EBU Serial Flash Busy */
++#define FALCON_IRQ_EBU_SF_BUSY                        (INT_NUM_IM1_IRL0 + 2)
++/* External Interrupt from GPIO P0 */
++#define FALCON_IRQ_GPIO_P0                    (INT_NUM_IM1_IRL0 + 4)
++/* External Interrupt from GPIO P1 */
++#define FALCON_IRQ_GPIO_P1                    (INT_NUM_IM1_IRL0 + 5)
++/* External Interrupt from GPIO P2 */
++#define FALCON_IRQ_GPIO_P2                    (INT_NUM_IM1_IRL0 + 6)
++/* External Interrupt from GPIO P3 */
++#define FALCON_IRQ_GPIO_P3                    (INT_NUM_IM1_IRL0 + 7)
++/* External Interrupt from GPIO P4 */
++#define FALCON_IRQ_GPIO_P4                    (INT_NUM_IM1_IRL0 + 8)
++/* 8kHz backup interrupt derived from core-PLL */
++#define FALCON_IRQ_FSC_BKP                    (INT_NUM_IM1_IRL0 + 10)
++/* FSC Timer Interrupt 0 */
++#define FALCON_IRQ_FSCT_CMP0                  (INT_NUM_IM1_IRL0 + 11)
++/* FSC Timer Interrupt 1 */
++#define FALCON_IRQ_FSCT_CMP1                  (INT_NUM_IM1_IRL0 + 12)
++/* 8kHz root interrupt derived from GPON interface */
++#define FALCON_IRQ_FSC_ROOT                   (INT_NUM_IM1_IRL0 + 13)
++/* Time of Day */
++#define FALCON_IRQ_TOD                                (INT_NUM_IM1_IRL0 + 14)
++/* PMA Interrupt from IntNode of the 200MHz Domain */
++#define FALCON_IRQ_PMA_200M                   (INT_NUM_IM1_IRL0 + 15)
++/* PMA Interrupt from IntNode of the TX Clk Domain */
++#define FALCON_IRQ_PMA_TX                     (INT_NUM_IM1_IRL0 + 16)
++/* PMA Interrupt from IntNode of the RX Clk Domain */
++#define FALCON_IRQ_PMA_RX                     (INT_NUM_IM1_IRL0 + 17)
++/* SYS1 Interrupt */
++#define FALCON_IRQ_SYS1                               (INT_NUM_IM1_IRL0 + 20)
++/* SYS GPE Interrupt */
++#define FALCON_IRQ_SYS_GPE                    (INT_NUM_IM1_IRL0 + 21)
++/* Watchdog Access Error Interrupt */
++#define FALCON_IRQ_WDT_AEIR                   (INT_NUM_IM1_IRL0 + 24)
++/* Watchdog Prewarning Interrupt */
++#define FALCON_IRQ_WDT_PIR                    (INT_NUM_IM1_IRL0 + 25)
++/* SBIU interrupt */
++#define FALCON_IRQ_SBIU0                      (INT_NUM_IM1_IRL0 + 27)
++/* FPI Bus Control Unit Interrupt */
++#define FALCON_IRQ_BCU0                               (INT_NUM_IM1_IRL0 + 29)
++/* DDR Controller Interrupt */
++#define FALCON_IRQ_DDR                                (INT_NUM_IM1_IRL0 + 30)
++/* Crossbar Error Interrupt */
++#define FALCON_IRQ_XBAR_ERROR                 (INT_NUM_IM1_IRL0 + 31)
++
++/* ICTRLL 0 Interrupt */
++#define FALCON_IRQ_ICTRLL0                    (INT_NUM_IM2_IRL0 + 0)
++/* ICTRLL 1 Interrupt */
++#define FALCON_IRQ_ICTRLL1                    (INT_NUM_IM2_IRL0 + 1)
++/* ICTRLL 2 Interrupt */
++#define FALCON_IRQ_ICTRLL2                    (INT_NUM_IM2_IRL0 + 2)
++/* ICTRLL 3 Interrupt */
++#define FALCON_IRQ_ICTRLL3                    (INT_NUM_IM2_IRL0 + 3)
++/* OCTRLL 0 Interrupt */
++#define FALCON_IRQ_OCTRLL0                    (INT_NUM_IM2_IRL0 + 4)
++/* OCTRLL 1 Interrupt */
++#define FALCON_IRQ_OCTRLL1                    (INT_NUM_IM2_IRL0 + 5)
++/* OCTRLL 2 Interrupt */
++#define FALCON_IRQ_OCTRLL2                    (INT_NUM_IM2_IRL0 + 6)
++/* OCTRLL 3 Interrupt */
++#define FALCON_IRQ_OCTRLL3                    (INT_NUM_IM2_IRL0 + 7)
++/* OCTRLG Interrupt */
++#define FALCON_IRQ_OCTRLG                     (INT_NUM_IM2_IRL0 + 9)
++/* IQM Interrupt */
++#define FALCON_IRQ_IQM                                (INT_NUM_IM2_IRL0 + 10)
++/* FSQM Interrupt */
++#define FALCON_IRQ_FSQM                               (INT_NUM_IM2_IRL0 + 11)
++/* TMU Interrupt */
++#define FALCON_IRQ_TMU                                (INT_NUM_IM2_IRL0 + 12)
++/* LINK1 Interrupt */
++#define FALCON_IRQ_LINK1                      (INT_NUM_IM2_IRL0 + 14)
++/* ICTRLC 0 Interrupt */
++#define FALCON_IRQ_ICTRLC0                    (INT_NUM_IM2_IRL0 + 16)
++/* ICTRLC 1 Interrupt */
++#define FALCON_IRQ_ICTRLC1                    (INT_NUM_IM2_IRL0 + 17)
++/* OCTRLC Interrupt */
++#define FALCON_IRQ_OCTRLC                     (INT_NUM_IM2_IRL0 + 18)
++/* CONFIG Break Interrupt */
++#define FALCON_IRQ_CONFIG_BREAK                       (INT_NUM_IM2_IRL0 + 19)
++/* CONFIG Interrupt */
++#define FALCON_IRQ_CONFIG                     (INT_NUM_IM2_IRL0 + 20)
++/* Dispatcher Interrupt */
++#define FALCON_IRQ_DISP                               (INT_NUM_IM2_IRL0 + 21)
++/* TBM Interrupt */
++#define FALCON_IRQ_TBM                                (INT_NUM_IM2_IRL0 + 22)
++/* GTC Downstream Interrupt */
++#define FALCON_IRQ_GTC_DS                     (INT_NUM_IM2_IRL0 + 29)
++/* GTC Upstream Interrupt */
++#define FALCON_IRQ_GTC_US                     (INT_NUM_IM2_IRL0 + 30)
++/* EIM Interrupt */
++#define FALCON_IRQ_EIM                                (INT_NUM_IM2_IRL0 + 31)
++
++/* ASC0 Transmit Interrupt */
++#define FALCON_IRQ_ASC0_T                     (INT_NUM_IM3_IRL0 + 0)
++/* ASC0 Receive Interrupt */
++#define FALCON_IRQ_ASC0_R                     (INT_NUM_IM3_IRL0 + 1)
++/* ASC0 Error Interrupt */
++#define FALCON_IRQ_ASC0_E                     (INT_NUM_IM3_IRL0 + 2)
++/* ASC0 Transmit Buffer Interrupt */
++#define FALCON_IRQ_ASC0_TB                    (INT_NUM_IM3_IRL0 + 3)
++/* ASC0 Autobaud Start Interrupt */
++#define FALCON_IRQ_ASC0_ABST                  (INT_NUM_IM3_IRL0 + 4)
++/* ASC0 Autobaud Detection Interrupt */
++#define FALCON_IRQ_ASC0_ABDET                 (INT_NUM_IM3_IRL0 + 5)
++/* ASC1 Modem Status Interrupt */
++#define FALCON_IRQ_ASC0_MS                    (INT_NUM_IM3_IRL0 + 6)
++/* ASC0 Soft Flow Control Interrupt */
++#define FALCON_IRQ_ASC0_SFC                   (INT_NUM_IM3_IRL0 + 7)
++/* ASC1 Transmit Interrupt */
++#define FALCON_IRQ_ASC1_T                     (INT_NUM_IM3_IRL0 + 8)
++/* ASC1 Receive Interrupt */
++#define FALCON_IRQ_ASC1_R                     (INT_NUM_IM3_IRL0 + 9)
++/* ASC1 Error Interrupt */
++#define FALCON_IRQ_ASC1_E                     (INT_NUM_IM3_IRL0 + 10)
++/* ASC1 Transmit Buffer Interrupt */
++#define FALCON_IRQ_ASC1_TB                    (INT_NUM_IM3_IRL0 + 11)
++/* ASC1 Autobaud Start Interrupt */
++#define FALCON_IRQ_ASC1_ABST                  (INT_NUM_IM3_IRL0 + 12)
++/* ASC1 Autobaud Detection Interrupt */
++#define FALCON_IRQ_ASC1_ABDET                 (INT_NUM_IM3_IRL0 + 13)
++/* ASC1 Modem Status Interrupt */
++#define FALCON_IRQ_ASC1_MS                    (INT_NUM_IM3_IRL0 + 14)
++/* ASC1 Soft Flow Control Interrupt */
++#define FALCON_IRQ_ASC1_SFC                   (INT_NUM_IM3_IRL0 + 15)
++/* GPTC Timer/Counter 1A Interrupt */
++#define FALCON_IRQ_GPTC_TC1A                  (INT_NUM_IM3_IRL0 + 16)
++/* GPTC Timer/Counter 1B Interrupt */
++#define FALCON_IRQ_GPTC_TC1B                  (INT_NUM_IM3_IRL0 + 17)
++/* GPTC Timer/Counter 2A Interrupt */
++#define FALCON_IRQ_GPTC_TC2A                  (INT_NUM_IM3_IRL0 + 18)
++/* GPTC Timer/Counter 2B Interrupt */
++#define FALCON_IRQ_GPTC_TC2B                  (INT_NUM_IM3_IRL0 + 19)
++/* GPTC Timer/Counter 3A Interrupt */
++#define FALCON_IRQ_GPTC_TC3A                  (INT_NUM_IM3_IRL0 + 20)
++/* GPTC Timer/Counter 3B Interrupt */
++#define FALCON_IRQ_GPTC_TC3B                  (INT_NUM_IM3_IRL0 + 21)
++/* DFEV0, Channel 1 Transmit Interrupt */
++#define FALCON_IRQ_DFEV0_2TX                  (INT_NUM_IM3_IRL0 + 26)
++/* DFEV0, Channel 1 Receive Interrupt */
++#define FALCON_IRQ_DFEV0_2RX                  (INT_NUM_IM3_IRL0 + 27)
++/* DFEV0, Channel 1 General Purpose Interrupt */
++#define FALCON_IRQ_DFEV0_2GP                  (INT_NUM_IM3_IRL0 + 28)
++/* DFEV0, Channel 0 Transmit Interrupt */
++#define FALCON_IRQ_DFEV0_1TX                  (INT_NUM_IM3_IRL0 + 29)
++/* DFEV0, Channel 0 Receive Interrupt */
++#define FALCON_IRQ_DFEV0_1RX                  (INT_NUM_IM3_IRL0 + 30)
++/* DFEV0, Channel 0 General Purpose Interrupt */
++#define FALCON_IRQ_DFEV0_1GP                  (INT_NUM_IM3_IRL0 + 31)
++
++/* ICTRLL 0 Error */
++#define FALCON_IRQ_ICTRLL0_ERR                        (INT_NUM_IM4_IRL0 + 0)
++/* ICTRLL 1 Error */
++#define FALCON_IRQ_ICTRLL1_ERR                        (INT_NUM_IM4_IRL0 + 1)
++/* ICTRLL 2 Error */
++#define FALCON_IRQ_ICTRLL2_ERR                        (INT_NUM_IM4_IRL0 + 2)
++/* ICTRLL 3 Error */
++#define FALCON_IRQ_ICTRLL3_ERR                        (INT_NUM_IM4_IRL0 + 3)
++/* OCTRLL 0 Error */
++#define FALCON_IRQ_OCTRLL0_ERR                        (INT_NUM_IM4_IRL0 + 4)
++/* OCTRLL 1 Error */
++#define FALCON_IRQ_OCTRLL1_ERR                        (INT_NUM_IM4_IRL0 + 5)
++/* OCTRLL 2 Error */
++#define FALCON_IRQ_OCTRLL2_ERR                        (INT_NUM_IM4_IRL0 + 6)
++/* OCTRLL 3 Error */
++#define FALCON_IRQ_OCTRLL3_ERR                        (INT_NUM_IM4_IRL0 + 7)
++/* ICTRLG Error */
++#define FALCON_IRQ_ICTRLG_ERR                 (INT_NUM_IM4_IRL0 + 8)
++/* OCTRLG Error */
++#define FALCON_IRQ_OCTRLG_ERR                 (INT_NUM_IM4_IRL0 + 9)
++/* IQM Error */
++#define FALCON_IRQ_IQM_ERR                    (INT_NUM_IM4_IRL0 + 10)
++/* FSQM Error */
++#define FALCON_IRQ_FSQM_ERR                   (INT_NUM_IM4_IRL0 + 11)
++/* TMU Error */
++#define FALCON_IRQ_TMU_ERR                    (INT_NUM_IM4_IRL0 + 12)
++/* MPS Status Interrupt #0 (VPE1 to VPE0) */
++#define FALCON_IRQ_MPS_IR0                    (INT_NUM_IM4_IRL0 + 14)
++/* MPS Status Interrupt #1 (VPE1 to VPE0) */
++#define FALCON_IRQ_MPS_IR1                    (INT_NUM_IM4_IRL0 + 15)
++/* MPS Status Interrupt #2 (VPE1 to VPE0) */
++#define FALCON_IRQ_MPS_IR2                    (INT_NUM_IM4_IRL0 + 16)
++/* MPS Status Interrupt #3 (VPE1 to VPE0) */
++#define FALCON_IRQ_MPS_IR3                    (INT_NUM_IM4_IRL0 + 17)
++/* MPS Status Interrupt #4 (VPE1 to VPE0) */
++#define FALCON_IRQ_MPS_IR4                    (INT_NUM_IM4_IRL0 + 18)
++/* MPS Status Interrupt #5 (VPE1 to VPE0) */
++#define FALCON_IRQ_MPS_IR5                    (INT_NUM_IM4_IRL0 + 19)
++/* MPS Status Interrupt #6 (VPE1 to VPE0) */
++#define FALCON_IRQ_MPS_IR6                    (INT_NUM_IM4_IRL0 + 20)
++/* MPS Status Interrupt #7 (VPE1 to VPE0) */
++#define FALCON_IRQ_MPS_IR7                    (INT_NUM_IM4_IRL0 + 21)
++/* MPS Status Interrupt #8 (VPE1 to VPE0) */
++#define FALCON_IRQ_MPS_IR8                    (INT_NUM_IM4_IRL0 + 22)
++/* VPE0 Exception Level Flag Interrupt */
++#define FALCON_IRQ_VPE0_EXL                   (INT_NUM_IM4_IRL0 + 29)
++/* VPE0 Error Level Flag Interrupt */
++#define FALCON_IRQ_VPE0_ERL                   (INT_NUM_IM4_IRL0 + 30)
++/* VPE0 Performance Monitoring Counter Interrupt */
++#define FALCON_IRQ_VPE0_PMCIR                 (INT_NUM_IM4_IRL0 + 31)
++
++#endif /* _FALCON_IRQ__ */
+--- /dev/null
++++ b/arch/mips/include/asm/mach-lantiq/falcon/gpon_reg_base.h
+@@ -0,0 +1,376 @@
++/******************************************************************************
++
++                               Copyright (c) 2010
++                            Lantiq Deutschland GmbH
++
++  For licensing information, see the file 'LICENSE' in the root folder of
++  this software module.
++
++******************************************************************************/
++
++#ifndef _gpon_reg_base_h
++#define _gpon_reg_base_h
++
++/** \addtogroup GPON_BASE
++   @{
++*/
++
++#ifndef KSEG1
++#define KSEG1 0xA0000000
++#endif
++
++/** address range for ebu
++    0x18000000--0x180000FF */
++#define GPON_EBU_BASE         (KSEG1 | 0x18000000)
++#define GPON_EBU_END          (KSEG1 | 0x180000FF)
++#define GPON_EBU_SIZE         0x00000100
++/** address range for gpearb
++    0x1D400100--0x1D4001FF */
++#define GPON_GPEARB_BASE              (KSEG1 | 0x1D400100)
++#define GPON_GPEARB_END               (KSEG1 | 0x1D4001FF)
++#define GPON_GPEARB_SIZE              0x00000100
++/** address range for tmu
++    0x1D404000--0x1D404FFF */
++#define GPON_TMU_BASE         (KSEG1 | 0x1D404000)
++#define GPON_TMU_END          (KSEG1 | 0x1D404FFF)
++#define GPON_TMU_SIZE         0x00001000
++/** address range for iqm
++    0x1D410000--0x1D41FFFF */
++#define GPON_IQM_BASE         (KSEG1 | 0x1D410000)
++#define GPON_IQM_END          (KSEG1 | 0x1D41FFFF)
++#define GPON_IQM_SIZE         0x00010000
++/** address range for octrlg
++    0x1D420000--0x1D42FFFF */
++#define GPON_OCTRLG_BASE              (KSEG1 | 0x1D420000)
++#define GPON_OCTRLG_END               (KSEG1 | 0x1D42FFFF)
++#define GPON_OCTRLG_SIZE              0x00010000
++/** address range for octrll0
++    0x1D440000--0x1D4400FF */
++#define GPON_OCTRLL0_BASE             (KSEG1 | 0x1D440000)
++#define GPON_OCTRLL0_END              (KSEG1 | 0x1D4400FF)
++#define GPON_OCTRLL0_SIZE             0x00000100
++/** address range for octrll1
++    0x1D440100--0x1D4401FF */
++#define GPON_OCTRLL1_BASE             (KSEG1 | 0x1D440100)
++#define GPON_OCTRLL1_END              (KSEG1 | 0x1D4401FF)
++#define GPON_OCTRLL1_SIZE             0x00000100
++/** address range for octrll2
++    0x1D440200--0x1D4402FF */
++#define GPON_OCTRLL2_BASE             (KSEG1 | 0x1D440200)
++#define GPON_OCTRLL2_END              (KSEG1 | 0x1D4402FF)
++#define GPON_OCTRLL2_SIZE             0x00000100
++/** address range for octrll3
++    0x1D440300--0x1D4403FF */
++#define GPON_OCTRLL3_BASE             (KSEG1 | 0x1D440300)
++#define GPON_OCTRLL3_END              (KSEG1 | 0x1D4403FF)
++#define GPON_OCTRLL3_SIZE             0x00000100
++/** address range for octrlc
++    0x1D441000--0x1D4410FF */
++#define GPON_OCTRLC_BASE              (KSEG1 | 0x1D441000)
++#define GPON_OCTRLC_END               (KSEG1 | 0x1D4410FF)
++#define GPON_OCTRLC_SIZE              0x00000100
++/** address range for ictrlg
++    0x1D450000--0x1D45FFFF */
++#define GPON_ICTRLG_BASE              (KSEG1 | 0x1D450000)
++#define GPON_ICTRLG_END               (KSEG1 | 0x1D45FFFF)
++#define GPON_ICTRLG_SIZE              0x00010000
++/** address range for ictrll0
++    0x1D460000--0x1D4601FF */
++#define GPON_ICTRLL0_BASE             (KSEG1 | 0x1D460000)
++#define GPON_ICTRLL0_END              (KSEG1 | 0x1D4601FF)
++#define GPON_ICTRLL0_SIZE             0x00000200
++/** address range for ictrll1
++    0x1D460200--0x1D4603FF */
++#define GPON_ICTRLL1_BASE             (KSEG1 | 0x1D460200)
++#define GPON_ICTRLL1_END              (KSEG1 | 0x1D4603FF)
++#define GPON_ICTRLL1_SIZE             0x00000200
++/** address range for ictrll2
++    0x1D460400--0x1D4605FF */
++#define GPON_ICTRLL2_BASE             (KSEG1 | 0x1D460400)
++#define GPON_ICTRLL2_END              (KSEG1 | 0x1D4605FF)
++#define GPON_ICTRLL2_SIZE             0x00000200
++/** address range for ictrll3
++    0x1D460600--0x1D4607FF */
++#define GPON_ICTRLL3_BASE             (KSEG1 | 0x1D460600)
++#define GPON_ICTRLL3_END              (KSEG1 | 0x1D4607FF)
++#define GPON_ICTRLL3_SIZE             0x00000200
++/** address range for ictrlc0
++    0x1D461000--0x1D4610FF */
++#define GPON_ICTRLC0_BASE             (KSEG1 | 0x1D461000)
++#define GPON_ICTRLC0_END              (KSEG1 | 0x1D4610FF)
++#define GPON_ICTRLC0_SIZE             0x00000100
++/** address range for ictrlc1
++    0x1D461100--0x1D4611FF */
++#define GPON_ICTRLC1_BASE             (KSEG1 | 0x1D461100)
++#define GPON_ICTRLC1_END              (KSEG1 | 0x1D4611FF)
++#define GPON_ICTRLC1_SIZE             0x00000100
++/** address range for fsqm
++    0x1D500000--0x1D5FFFFF */
++#define GPON_FSQM_BASE                (KSEG1 | 0x1D500000)
++#define GPON_FSQM_END         (KSEG1 | 0x1D5FFFFF)
++#define GPON_FSQM_SIZE                0x00100000
++/** address range for pctrl
++    0x1D600000--0x1D6001FF */
++#define GPON_PCTRL_BASE               (KSEG1 | 0x1D600000)
++#define GPON_PCTRL_END                (KSEG1 | 0x1D6001FF)
++#define GPON_PCTRL_SIZE               0x00000200
++/** address range for link0
++    0x1D600200--0x1D6002FF */
++#define GPON_LINK0_BASE               (KSEG1 | 0x1D600200)
++#define GPON_LINK0_END                (KSEG1 | 0x1D6002FF)
++#define GPON_LINK0_SIZE               0x00000100
++/** address range for link1
++    0x1D600300--0x1D6003FF */
++#define GPON_LINK1_BASE               (KSEG1 | 0x1D600300)
++#define GPON_LINK1_END                (KSEG1 | 0x1D6003FF)
++#define GPON_LINK1_SIZE               0x00000100
++/** address range for link2
++    0x1D600400--0x1D6004FF */
++#define GPON_LINK2_BASE               (KSEG1 | 0x1D600400)
++#define GPON_LINK2_END                (KSEG1 | 0x1D6004FF)
++#define GPON_LINK2_SIZE               0x00000100
++/** address range for disp
++    0x1D600500--0x1D6005FF */
++#define GPON_DISP_BASE                (KSEG1 | 0x1D600500)
++#define GPON_DISP_END         (KSEG1 | 0x1D6005FF)
++#define GPON_DISP_SIZE                0x00000100
++/** address range for merge
++    0x1D600600--0x1D6006FF */
++#define GPON_MERGE_BASE               (KSEG1 | 0x1D600600)
++#define GPON_MERGE_END                (KSEG1 | 0x1D6006FF)
++#define GPON_MERGE_SIZE               0x00000100
++/** address range for tbm
++    0x1D600700--0x1D6007FF */
++#define GPON_TBM_BASE         (KSEG1 | 0x1D600700)
++#define GPON_TBM_END          (KSEG1 | 0x1D6007FF)
++#define GPON_TBM_SIZE         0x00000100
++/** address range for pe0
++    0x1D610000--0x1D61FFFF */
++#define GPON_PE0_BASE         (KSEG1 | 0x1D610000)
++#define GPON_PE0_END          (KSEG1 | 0x1D61FFFF)
++#define GPON_PE0_SIZE         0x00010000
++/** address range for pe1
++    0x1D620000--0x1D62FFFF */
++#define GPON_PE1_BASE         (KSEG1 | 0x1D620000)
++#define GPON_PE1_END          (KSEG1 | 0x1D62FFFF)
++#define GPON_PE1_SIZE         0x00010000
++/** address range for pe2
++    0x1D630000--0x1D63FFFF */
++#define GPON_PE2_BASE         (KSEG1 | 0x1D630000)
++#define GPON_PE2_END          (KSEG1 | 0x1D63FFFF)
++#define GPON_PE2_SIZE         0x00010000
++/** address range for pe3
++    0x1D640000--0x1D64FFFF */
++#define GPON_PE3_BASE         (KSEG1 | 0x1D640000)
++#define GPON_PE3_END          (KSEG1 | 0x1D64FFFF)
++#define GPON_PE3_SIZE         0x00010000
++/** address range for pe4
++    0x1D650000--0x1D65FFFF */
++#define GPON_PE4_BASE         (KSEG1 | 0x1D650000)
++#define GPON_PE4_END          (KSEG1 | 0x1D65FFFF)
++#define GPON_PE4_SIZE         0x00010000
++/** address range for pe5
++    0x1D660000--0x1D66FFFF */
++#define GPON_PE5_BASE         (KSEG1 | 0x1D660000)
++#define GPON_PE5_END          (KSEG1 | 0x1D66FFFF)
++#define GPON_PE5_SIZE         0x00010000
++/** address range for sys_gpe
++    0x1D700000--0x1D7000FF */
++#define GPON_SYS_GPE_BASE             (KSEG1 | 0x1D700000)
++#define GPON_SYS_GPE_END              (KSEG1 | 0x1D7000FF)
++#define GPON_SYS_GPE_SIZE             0x00000100
++/** address range for eim
++    0x1D800000--0x1D800FFF */
++#define GPON_EIM_BASE         (KSEG1 | 0x1D800000)
++#define GPON_EIM_END          (KSEG1 | 0x1D800FFF)
++#define GPON_EIM_SIZE         0x00001000
++/** address range for sxgmii
++    0x1D808800--0x1D8088FF */
++#define GPON_SXGMII_BASE              (KSEG1 | 0x1D808800)
++#define GPON_SXGMII_END               (KSEG1 | 0x1D8088FF)
++#define GPON_SXGMII_SIZE              0x00000100
++/** address range for sgmii
++    0x1D808C00--0x1D808CFF */
++#define GPON_SGMII_BASE               (KSEG1 | 0x1D808C00)
++#define GPON_SGMII_END                (KSEG1 | 0x1D808CFF)
++#define GPON_SGMII_SIZE               0x00000100
++/** address range for gpio0
++    0x1D810000--0x1D81007F */
++#define GPON_GPIO0_BASE               (KSEG1 | 0x1D810000)
++#define GPON_GPIO0_END                (KSEG1 | 0x1D81007F)
++#define GPON_GPIO0_SIZE               0x00000080
++/** address range for gpio2
++    0x1D810100--0x1D81017F */
++#define GPON_GPIO2_BASE               (KSEG1 | 0x1D810100)
++#define GPON_GPIO2_END                (KSEG1 | 0x1D81017F)
++#define GPON_GPIO2_SIZE               0x00000080
++/** address range for sys_eth
++    0x1DB00000--0x1DB000FF */
++#define GPON_SYS_ETH_BASE             (KSEG1 | 0x1DB00000)
++#define GPON_SYS_ETH_END              (KSEG1 | 0x1DB000FF)
++#define GPON_SYS_ETH_SIZE             0x00000100
++/** address range for padctrl0
++    0x1DB01000--0x1DB010FF */
++#define GPON_PADCTRL0_BASE            (KSEG1 | 0x1DB01000)
++#define GPON_PADCTRL0_END             (KSEG1 | 0x1DB010FF)
++#define GPON_PADCTRL0_SIZE            0x00000100
++/** address range for padctrl2
++    0x1DB02000--0x1DB020FF */
++#define GPON_PADCTRL2_BASE            (KSEG1 | 0x1DB02000)
++#define GPON_PADCTRL2_END             (KSEG1 | 0x1DB020FF)
++#define GPON_PADCTRL2_SIZE            0x00000100
++/** address range for gtc
++    0x1DC05000--0x1DC052D4 */
++#define GPON_GTC_BASE         (KSEG1 | 0x1DC05000)
++#define GPON_GTC_END          (KSEG1 | 0x1DC052D4)
++#define GPON_GTC_SIZE         0x000002D5
++/** address range for pma
++    0x1DD00000--0x1DD003FF */
++#define GPON_PMA_BASE         (KSEG1 | 0x1DD00000)
++#define GPON_PMA_END          (KSEG1 | 0x1DD003FF)
++#define GPON_PMA_SIZE         0x00000400
++/** address range for fcsic
++    0x1DD00600--0x1DD0061F */
++#define GPON_FCSIC_BASE               (KSEG1 | 0x1DD00600)
++#define GPON_FCSIC_END                (KSEG1 | 0x1DD0061F)
++#define GPON_FCSIC_SIZE               0x00000020
++/** address range for pma_int200
++    0x1DD00700--0x1DD0070F */
++#define GPON_PMA_INT200_BASE          (KSEG1 | 0x1DD00700)
++#define GPON_PMA_INT200_END           (KSEG1 | 0x1DD0070F)
++#define GPON_PMA_INT200_SIZE          0x00000010
++/** address range for pma_inttx
++    0x1DD00720--0x1DD0072F */
++#define GPON_PMA_INTTX_BASE           (KSEG1 | 0x1DD00720)
++#define GPON_PMA_INTTX_END            (KSEG1 | 0x1DD0072F)
++#define GPON_PMA_INTTX_SIZE           0x00000010
++/** address range for pma_intrx
++    0x1DD00740--0x1DD0074F */
++#define GPON_PMA_INTRX_BASE           (KSEG1 | 0x1DD00740)
++#define GPON_PMA_INTRX_END            (KSEG1 | 0x1DD0074F)
++#define GPON_PMA_INTRX_SIZE           0x00000010
++/** address range for gtc_pma
++    0x1DEFFF00--0x1DEFFFFF */
++#define GPON_GTC_PMA_BASE             (KSEG1 | 0x1DEFFF00)
++#define GPON_GTC_PMA_END              (KSEG1 | 0x1DEFFFFF)
++#define GPON_GTC_PMA_SIZE             0x00000100
++/** address range for sys
++    0x1DF00000--0x1DF000FF */
++#define GPON_SYS_BASE         (KSEG1 | 0x1DF00000)
++#define GPON_SYS_END          (KSEG1 | 0x1DF000FF)
++#define GPON_SYS_SIZE         0x00000100
++/** address range for asc1
++    0x1E100B00--0x1E100BFF */
++#define GPON_ASC1_BASE                (KSEG1 | 0x1E100B00)
++#define GPON_ASC1_END         (KSEG1 | 0x1E100BFF)
++#define GPON_ASC1_SIZE                0x00000100
++/** address range for asc0
++    0x1E100C00--0x1E100CFF */
++#define GPON_ASC0_BASE                (KSEG1 | 0x1E100C00)
++#define GPON_ASC0_END         (KSEG1 | 0x1E100CFF)
++#define GPON_ASC0_SIZE                0x00000100
++/** address range for i2c
++    0x1E200000--0x1E20FFFF */
++#define GPON_I2C_BASE         (KSEG1 | 0x1E200000)
++#define GPON_I2C_END          (KSEG1 | 0x1E20FFFF)
++#define GPON_I2C_SIZE         0x00010000
++/** address range for gpio1
++    0x1E800100--0x1E80017F */
++#define GPON_GPIO1_BASE               (KSEG1 | 0x1E800100)
++#define GPON_GPIO1_END                (KSEG1 | 0x1E80017F)
++#define GPON_GPIO1_SIZE               0x00000080
++/** address range for gpio3
++    0x1E800200--0x1E80027F */
++#define GPON_GPIO3_BASE               (KSEG1 | 0x1E800200)
++#define GPON_GPIO3_END                (KSEG1 | 0x1E80027F)
++#define GPON_GPIO3_SIZE               0x00000080
++/** address range for gpio4
++    0x1E800300--0x1E80037F */
++#define GPON_GPIO4_BASE               (KSEG1 | 0x1E800300)
++#define GPON_GPIO4_END                (KSEG1 | 0x1E80037F)
++#define GPON_GPIO4_SIZE               0x00000080
++/** address range for padctrl1
++    0x1E800400--0x1E8004FF */
++#define GPON_PADCTRL1_BASE            (KSEG1 | 0x1E800400)
++#define GPON_PADCTRL1_END             (KSEG1 | 0x1E8004FF)
++#define GPON_PADCTRL1_SIZE            0x00000100
++/** address range for padctrl3
++    0x1E800500--0x1E8005FF */
++#define GPON_PADCTRL3_BASE            (KSEG1 | 0x1E800500)
++#define GPON_PADCTRL3_END             (KSEG1 | 0x1E8005FF)
++#define GPON_PADCTRL3_SIZE            0x00000100
++/** address range for padctrl4
++    0x1E800600--0x1E8006FF */
++#define GPON_PADCTRL4_BASE            (KSEG1 | 0x1E800600)
++#define GPON_PADCTRL4_END             (KSEG1 | 0x1E8006FF)
++#define GPON_PADCTRL4_SIZE            0x00000100
++/** address range for status
++    0x1E802000--0x1E80207F */
++#define GPON_STATUS_BASE              (KSEG1 | 0x1E802000)
++#define GPON_STATUS_END               (KSEG1 | 0x1E80207F)
++#define GPON_STATUS_SIZE              0x00000080
++/** address range for dcdc_1v0
++    0x1E803000--0x1E8033FF */
++#define GPON_DCDC_1V0_BASE            (KSEG1 | 0x1E803000)
++#define GPON_DCDC_1V0_END             (KSEG1 | 0x1E8033FF)
++#define GPON_DCDC_1V0_SIZE            0x00000400
++/** address range for dcdc_ddr
++    0x1E804000--0x1E8043FF */
++#define GPON_DCDC_DDR_BASE            (KSEG1 | 0x1E804000)
++#define GPON_DCDC_DDR_END             (KSEG1 | 0x1E8043FF)
++#define GPON_DCDC_DDR_SIZE            0x00000400
++/** address range for dcdc_apd
++    0x1E805000--0x1E8053FF */
++#define GPON_DCDC_APD_BASE            (KSEG1 | 0x1E805000)
++#define GPON_DCDC_APD_END             (KSEG1 | 0x1E8053FF)
++#define GPON_DCDC_APD_SIZE            0x00000400
++/** address range for sys1
++    0x1EF00000--0x1EF000FF */
++#define GPON_SYS1_BASE                (KSEG1 | 0x1EF00000)
++#define GPON_SYS1_END         (KSEG1 | 0x1EF000FF)
++#define GPON_SYS1_SIZE                0x00000100
++/** address range for sbs0ctrl
++    0x1F080000--0x1F0801FF */
++#define GPON_SBS0CTRL_BASE            (KSEG1 | 0x1F080000)
++#define GPON_SBS0CTRL_END             (KSEG1 | 0x1F0801FF)
++#define GPON_SBS0CTRL_SIZE            0x00000200
++/** address range for sbs0red
++    0x1F080200--0x1F08027F */
++#define GPON_SBS0RED_BASE             (KSEG1 | 0x1F080200)
++#define GPON_SBS0RED_END              (KSEG1 | 0x1F08027F)
++#define GPON_SBS0RED_SIZE             0x00000080
++/** address range for sbs0ram
++    0x1F200000--0x1F32FFFF */
++#define GPON_SBS0RAM_BASE             (KSEG1 | 0x1F200000)
++#define GPON_SBS0RAM_END              (KSEG1 | 0x1F32FFFF)
++#define GPON_SBS0RAM_SIZE             0x00130000
++/** address range for ddrdb
++    0x1F701000--0x1F701FFF */
++#define GPON_DDRDB_BASE               (KSEG1 | 0x1F701000)
++#define GPON_DDRDB_END                (KSEG1 | 0x1F701FFF)
++#define GPON_DDRDB_SIZE               0x00001000
++/** address range for sbiu
++    0x1F880000--0x1F8800FF */
++#define GPON_SBIU_BASE                (KSEG1 | 0x1F880000)
++#define GPON_SBIU_END         (KSEG1 | 0x1F8800FF)
++#define GPON_SBIU_SIZE                0x00000100
++/** address range for icu0
++    0x1F880200--0x1F8802DF */
++#define GPON_ICU0_BASE                (KSEG1 | 0x1F880200)
++#define GPON_ICU0_END         (KSEG1 | 0x1F8802DF)
++#define GPON_ICU0_SIZE                0x000000E0
++/** address range for icu1
++    0x1F880300--0x1F8803DF */
++#define GPON_ICU1_BASE                (KSEG1 | 0x1F880300)
++#define GPON_ICU1_END         (KSEG1 | 0x1F8803DF)
++#define GPON_ICU1_SIZE                0x000000E0
++/** address range for wdt
++    0x1F8803F0--0x1F8803FF */
++#define GPON_WDT_BASE         (KSEG1 | 0x1F8803F0)
++#define GPON_WDT_END          (KSEG1 | 0x1F8803FF)
++#define GPON_WDT_SIZE         0x00000010
++
++/*! @} */ /* GPON_BASE */
++
++#endif /* _gpon_reg_base_h */
++
+--- /dev/null
++++ b/arch/mips/include/asm/mach-lantiq/falcon/i2c_reg.h
+@@ -0,0 +1,830 @@
++/******************************************************************************
++
++                               Copyright (c) 2010
++                            Lantiq Deutschland GmbH
++
++  For licensing information, see the file 'LICENSE' in the root folder of
++  this software module.
++
++******************************************************************************/
++
++#ifndef _i2c_reg_h
++#define _i2c_reg_h
++
++/** \addtogroup I2C_REGISTER
++   @{
++*/
++/* access macros */
++#define i2c_r32(reg) reg_r32(&i2c->reg)
++#define i2c_w32(val, reg) reg_w32(val, &i2c->reg)
++#define i2c_w32_mask(clear, set, reg) reg_w32_mask(clear, set, &i2c->reg)
++#define i2c_r32_table(reg, idx) reg_r32_table(i2c->reg, idx)
++#define i2c_w32_table(val, reg, idx) reg_w32_table(val, i2c->reg, idx)
++#define i2c_w32_table_mask(clear, set, reg, idx) reg_w32_table_mask(clear, set, i2c->reg, idx)
++#define i2c_adr_table(reg, idx) adr_table(i2c->reg, idx)
++
++
++/** I2C register structure */
++struct gpon_reg_i2c
++{
++   /** I2C Kernel Clock Control Register */
++   unsigned int clc; /* 0x00000000 */
++   /** Reserved */
++   unsigned int res_0; /* 0x00000004 */
++   /** I2C Identification Register */
++   unsigned int id; /* 0x00000008 */
++   /** Reserved */
++   unsigned int res_1; /* 0x0000000C */
++   /** I2C RUN Control Register
++       This register enables and disables the I2C peripheral. Before enabling, the I2C has to be configured properly. After enabling no configuration is possible */
++   unsigned int run_ctrl; /* 0x00000010 */
++   /** I2C End Data Control Register
++       This register is used to either turn around the data transmission direction or to address another slave without sending a stop condition. Also the software can stop the slave-transmitter by sending a not-accolade when working as master-receiver or even stop data transmission immediately when operating as master-transmitter. The writing to the bits of this control register is only effective when in MASTER RECEIVES BYTES, MASTER TRANSMITS BYTES, MASTER RESTART or SLAVE RECEIVE BYTES state */
++   unsigned int endd_ctrl; /* 0x00000014 */
++   /** I2C Fractional Divider Configuration Register
++       These register is used to program the fractional divider of the I2C bus. Before the peripheral is switched on by setting the RUN-bit the two (fixed) values for the two operating frequencies are programmed into these (configuration) registers. The Register FDIV_HIGH_CFG has the same layout as I2C_FDIV_CFG. */
++   unsigned int fdiv_cfg; /* 0x00000018 */
++   /** I2C Fractional Divider (highspeed mode) Configuration Register
++       These register is used to program the fractional divider of the I2C bus. Before the peripheral is switched on by setting the RUN-bit the two (fixed) values for the two operating frequencies are programmed into these (configuration) registers. The Register FDIV_CFG has the same layout as I2C_FDIV_CFG. */
++   unsigned int fdiv_high_cfg; /* 0x0000001C */
++   /** I2C Address Configuration Register */
++   unsigned int addr_cfg; /* 0x00000020 */
++   /** I2C Bus Status Register
++       This register gives a status information of the I2C. This additional information can be used by the software to start proper actions. */
++   unsigned int bus_stat; /* 0x00000024 */
++   /** I2C FIFO Configuration Register */
++   unsigned int fifo_cfg; /* 0x00000028 */
++   /** I2C Maximum Received Packet Size Register */
++   unsigned int mrps_ctrl; /* 0x0000002C */
++   /** I2C Received Packet Size Status Register */
++   unsigned int rps_stat; /* 0x00000030 */
++   /** I2C Transmit Packet Size Register */
++   unsigned int tps_ctrl; /* 0x00000034 */
++   /** I2C Filled FIFO Stages Status Register */
++   unsigned int ffs_stat; /* 0x00000038 */
++   /** Reserved */
++   unsigned int res_2; /* 0x0000003C */
++   /** I2C Timing Configuration Register */
++   unsigned int tim_cfg; /* 0x00000040 */
++   /** Reserved */
++   unsigned int res_3[7]; /* 0x00000044 */
++   /** I2C Error Interrupt Request Source Mask Register */
++   unsigned int err_irqsm; /* 0x00000060 */
++   /** I2C Error Interrupt Request Source Status Register */
++   unsigned int err_irqss; /* 0x00000064 */
++   /** I2C Error Interrupt Request Source Clear Register */
++   unsigned int err_irqsc; /* 0x00000068 */
++   /** Reserved */
++   unsigned int res_4; /* 0x0000006C */
++   /** I2C Protocol Interrupt Request Source Mask Register */
++   unsigned int p_irqsm; /* 0x00000070 */
++   /** I2C Protocol Interrupt Request Source Status Register */
++   unsigned int p_irqss; /* 0x00000074 */
++   /** I2C Protocol Interrupt Request Source Clear Register */
++   unsigned int p_irqsc; /* 0x00000078 */
++   /** Reserved */
++   unsigned int res_5; /* 0x0000007C */
++   /** I2C Raw Interrupt Status Register */
++   unsigned int ris; /* 0x00000080 */
++   /** I2C Interrupt Mask Control Register */
++   unsigned int imsc; /* 0x00000084 */
++   /** I2C Masked Interrupt Status Register */
++   unsigned int mis; /* 0x00000088 */
++   /** I2C Interrupt Clear Register */
++   unsigned int icr; /* 0x0000008C */
++   /** I2C Interrupt Set Register */
++   unsigned int isr; /* 0x00000090 */
++   /** I2C DMA Enable Register */
++   unsigned int dmae; /* 0x00000094 */
++   /** Reserved */
++   unsigned int res_6[8154]; /* 0x00000098 */
++   /** I2C Transmit Data Register */
++   unsigned int txd; /* 0x00008000 */
++   /** Reserved */
++   unsigned int res_7[4095]; /* 0x00008004 */
++   /** I2C Receive Data Register */
++   unsigned int rxd; /* 0x0000C000 */
++   /** Reserved */
++   unsigned int res_8[4095]; /* 0x0000C004 */
++};
++
++
++/* Fields of "I2C Kernel Clock Control Register" */
++/** Clock Divider for Optional Run Mode (AHB peripherals)
++    Max 8-bit divider value. Note: As long as the new divider value ORMC is not valid, the register returns 0x0000 00xx on reading. */
++#define I2C_CLC_ORMC_MASK 0x00FF0000
++/** field offset */
++#define I2C_CLC_ORMC_OFFSET 16
++/** Clock Divider for Normal Run Mode
++    Max 8-bit divider value. IF RMC is 0 the module is disabled. Note: As long as the new divider value RMC is not valid, the register returns 0x0000 00xx on reading. */
++#define I2C_CLC_RMC_MASK 0x0000FF00
++/** field offset */
++#define I2C_CLC_RMC_OFFSET 8
++/** Fast Shut-Off Enable Bit */
++#define I2C_CLC_FSOE 0x00000020
++/* Disable
++#define I2C_CLC_FSOE_DIS 0x00000000 */
++/** Enable */
++#define I2C_CLC_FSOE_EN 0x00000020
++/** Suspend Bit Write Enable for OCDS */
++#define I2C_CLC_SBWE 0x00000010
++/* Disable
++#define I2C_CLC_SBWE_DIS 0x00000000 */
++/** Enable */
++#define I2C_CLC_SBWE_EN 0x00000010
++/** Disable External Request Disable */
++#define I2C_CLC_EDIS 0x00000008
++/* Enable
++#define I2C_CLC_EDIS_EN 0x00000000 */
++/** Disable */
++#define I2C_CLC_EDIS_DIS 0x00000008
++/** Suspend Enable Bit for OCDS */
++#define I2C_CLC_SPEN 0x00000004
++/* Disable
++#define I2C_CLC_SPEN_DIS 0x00000000 */
++/** Enable */
++#define I2C_CLC_SPEN_EN 0x00000004
++/** Disable Status Bit
++    Bit DISS can be modified only by writing to bit DISR */
++#define I2C_CLC_DISS 0x00000002
++/* Enable
++#define I2C_CLC_DISS_EN 0x00000000 */
++/** Disable */
++#define I2C_CLC_DISS_DIS 0x00000002
++/** Disable Request Bit */
++#define I2C_CLC_DISR 0x00000001
++/* Module disable not requested
++#define I2C_CLC_DISR_OFF 0x00000000 */
++/** Module disable requested */
++#define I2C_CLC_DISR_ON 0x00000001
++
++/* Fields of "I2C Identification Register" */
++/** Module ID */
++#define I2C_ID_ID_MASK 0x0000FF00
++/** field offset */
++#define I2C_ID_ID_OFFSET 8
++/** Revision */
++#define I2C_ID_REV_MASK 0x000000FF
++/** field offset */
++#define I2C_ID_REV_OFFSET 0
++
++/* Fields of "I2C RUN Control Register" */
++/** Enabling I2C Interface
++    Only when this bit is set to zero, the configuration registers of the I2C peripheral are writable by SW. */
++#define I2C_RUN_CTRL_RUN 0x00000001
++/* Disable
++#define I2C_RUN_CTRL_RUN_DIS 0x00000000 */
++/** Enable */
++#define I2C_RUN_CTRL_RUN_EN 0x00000001
++
++/* Fields of "I2C End Data Control Register" */
++/** Set End of Transmission
++    Note:Do not write '1' to this bit when bus is free. This will cause an abort after the first byte when a new transfer is started. */
++#define I2C_ENDD_CTRL_SETEND 0x00000002
++/* No-Operation
++#define I2C_ENDD_CTRL_SETEND_NOP 0x00000000 */
++/** Master Receives Bytes */
++#define I2C_ENDD_CTRL_SETEND_MRB 0x00000002
++/** Set Restart Condition */
++#define I2C_ENDD_CTRL_SETRSC 0x00000001
++/* No-Operation
++#define I2C_ENDD_CTRL_SETRSC_NOP 0x00000000 */
++/** Master Restart */
++#define I2C_ENDD_CTRL_SETRSC_RESTART 0x00000001
++
++/* Fields of "I2C Fractional Divider Configuration Register" */
++/** Decrement Value of fractional divider */
++#define I2C_FDIV_CFG_INC_MASK 0x00FF0000
++/** field offset */
++#define I2C_FDIV_CFG_INC_OFFSET 16
++/** Increment Value of fractional divider */
++#define I2C_FDIV_CFG_DEC_MASK 0x000007FF
++/** field offset */
++#define I2C_FDIV_CFG_DEC_OFFSET 0
++
++/* Fields of "I2C Fractional Divider (highspeed mode) Configuration Register" */
++/** Decrement Value of fractional divider */
++#define I2C_FDIV_HIGH_CFG_INC_MASK 0x00FF0000
++/** field offset */
++#define I2C_FDIV_HIGH_CFG_INC_OFFSET 16
++/** Increment Value of fractional divider */
++#define I2C_FDIV_HIGH_CFG_DEC_MASK 0x000007FF
++/** field offset */
++#define I2C_FDIV_HIGH_CFG_DEC_OFFSET 0
++
++/* Fields of "I2C Address Configuration Register" */
++/** Stop on Packet End
++    If device works as receiver a not acknowledge is generated in both cases. After successful transmission of a master code (during high speed mode) SOPE is not considered till a stop condition is manually generated by SETEND. */
++#define I2C_ADDR_CFG_SOPE 0x00200000
++/* Disable
++#define I2C_ADDR_CFG_SOPE_DIS 0x00000000 */
++/** Enable */
++#define I2C_ADDR_CFG_SOPE_EN 0x00200000
++/** Stop on Not Acknowledge
++    After successful transmission of a master code (during high speed mode) SONA is not considered till a stop condition is manually generated by SETEND. */
++#define I2C_ADDR_CFG_SONA 0x00100000
++/* Disable
++#define I2C_ADDR_CFG_SONA_DIS 0x00000000 */
++/** Enable */
++#define I2C_ADDR_CFG_SONA_EN 0x00100000
++/** Master Enable */
++#define I2C_ADDR_CFG_MnS 0x00080000
++/* Disable
++#define I2C_ADDR_CFG_MnS_DIS 0x00000000 */
++/** Enable */
++#define I2C_ADDR_CFG_MnS_EN 0x00080000
++/** Master Code Enable */
++#define I2C_ADDR_CFG_MCE 0x00040000
++/* Disable
++#define I2C_ADDR_CFG_MCE_DIS 0x00000000 */
++/** Enable */
++#define I2C_ADDR_CFG_MCE_EN 0x00040000
++/** General Call Enable */
++#define I2C_ADDR_CFG_GCE 0x00020000
++/* Disable
++#define I2C_ADDR_CFG_GCE_DIS 0x00000000 */
++/** Enable */
++#define I2C_ADDR_CFG_GCE_EN 0x00020000
++/** Ten Bit Address Mode */
++#define I2C_ADDR_CFG_TBAM 0x00010000
++/* 7-bit address mode enabled.
++#define I2C_ADDR_CFG_TBAM_7bit 0x00000000 */
++/** 10-bit address mode enabled. */
++#define I2C_ADDR_CFG_TBAM_10bit 0x00010000
++/** I2C Bus device address
++    This is the address of this device. (Watch out for reserved addresses by referring to Phillips Spec V2.1) This could either be a 7bit- address (bits [7:1]) or a 10bit- address (bits [9:0]). Note:The validity of the bits are in accordance with the TBAM bit. Bit-1 (Bit-0) is the LSB of the device address. */
++#define I2C_ADDR_CFG_ADR_MASK 0x000003FF
++/** field offset */
++#define I2C_ADDR_CFG_ADR_OFFSET 0
++
++/* Fields of "I2C Bus Status Register" */
++/** Read / not Write */
++#define I2C_BUS_STAT_RNW 0x00000004
++/* Write to I2C Bus.
++#define I2C_BUS_STAT_RNW_WRITE 0x00000000 */
++/** Read from I2C Bus. */
++#define I2C_BUS_STAT_RNW_READ 0x00000004
++/** Bus Status */
++#define I2C_BUS_STAT_BS_MASK 0x00000003
++/** field offset */
++#define I2C_BUS_STAT_BS_OFFSET 0
++/** I2C Bus is free. */
++#define I2C_BUS_STAT_BS_FREE 0x00000000
++/** A start condition has been detected on the bus (bus busy). */
++#define I2C_BUS_STAT_BS_SC 0x00000001
++/** The device is working as master and has claimed the control on the I2C-bus (busy master). */
++#define I2C_BUS_STAT_BS_BM 0x00000002
++/** A remote master has accessed this device as slave. */
++#define I2C_BUS_STAT_BS_RM 0x00000003
++
++/* Fields of "I2C FIFO Configuration Register" */
++/** TX FIFO Flow Control */
++#define I2C_FIFO_CFG_TXFC 0x00020000
++/* TX FIFO not as Flow Controller
++#define I2C_FIFO_CFG_TXFC_TXNFC 0x00000000 */
++/** RX FIFO Flow Control */
++#define I2C_FIFO_CFG_RXFC 0x00010000
++/* RX FIFO not as Flow Controller
++#define I2C_FIFO_CFG_RXFC_RXNFC 0x00000000 */
++/** The reset value depends on the used character sizes of the peripheral. The maximum selectable alignment depends on the maximum number of characters per stage. */
++#define I2C_FIFO_CFG_TXFA_MASK 0x00003000
++/** field offset */
++#define I2C_FIFO_CFG_TXFA_OFFSET 12
++/** Byte aligned (character alignment) */
++#define I2C_FIFO_CFG_TXFA_TXFA0 0x00000000
++/** Half word aligned (character alignment of two characters) */
++#define I2C_FIFO_CFG_TXFA_TXFA1 0x00001000
++/** Word aligned (character alignment of four characters) */
++#define I2C_FIFO_CFG_TXFA_TXFA2 0x00002000
++/** Double word aligned (character alignment of eight */
++#define I2C_FIFO_CFG_TXFA_TXFA3 0x00003000
++/** The reset value depends on the used character sizes of the peripheral. The maximum selectable alignment depends on the maximum number of characters per stage. */
++#define I2C_FIFO_CFG_RXFA_MASK 0x00000300
++/** field offset */
++#define I2C_FIFO_CFG_RXFA_OFFSET 8
++/** Byte aligned (character alignment) */
++#define I2C_FIFO_CFG_RXFA_RXFA0 0x00000000
++/** Half word aligned (character alignment of two characters) */
++#define I2C_FIFO_CFG_RXFA_RXFA1 0x00000100
++/** Word aligned (character alignment of four characters) */
++#define I2C_FIFO_CFG_RXFA_RXFA2 0x00000200
++/** Double word aligned (character alignment of eight */
++#define I2C_FIFO_CFG_RXFA_RXFA3 0x00000300
++/** DMA controller does not support a burst size of 2 words. The reset value is the half of the FIFO size. The maximum selectable burst size is smaller than the FIFO size. */
++#define I2C_FIFO_CFG_TXBS_MASK 0x00000030
++/** field offset */
++#define I2C_FIFO_CFG_TXBS_OFFSET 4
++/** 1 word */
++#define I2C_FIFO_CFG_TXBS_TXBS0 0x00000000
++/** 2 words */
++#define I2C_FIFO_CFG_TXBS_TXBS1 0x00000010
++/** 4 words */
++#define I2C_FIFO_CFG_TXBS_TXBS2 0x00000020
++/** 8 words */
++#define I2C_FIFO_CFG_TXBS_TXBS3 0x00000030
++/** DMA controller does not support a burst size of 2 words. The reset value is the half of the FIFO size. The maximum selectable burst size is smaller than the FIFO size. */
++#define I2C_FIFO_CFG_RXBS_MASK 0x00000003
++/** field offset */
++#define I2C_FIFO_CFG_RXBS_OFFSET 0
++/** 1 word */
++#define I2C_FIFO_CFG_RXBS_RXBS0 0x00000000
++/** 2 words */
++#define I2C_FIFO_CFG_RXBS_RXBS1 0x00000001
++/** 4 words */
++#define I2C_FIFO_CFG_RXBS_RXBS2 0x00000002
++/** 8 words */
++#define I2C_FIFO_CFG_RXBS_RXBS3 0x00000003
++
++/* Fields of "I2C Maximum Received Packet Size Register" */
++/** MRPS */
++#define I2C_MRPS_CTRL_MRPS_MASK 0x00003FFF
++/** field offset */
++#define I2C_MRPS_CTRL_MRPS_OFFSET 0
++
++/* Fields of "I2C Received Packet Size Status Register" */
++/** RPS */
++#define I2C_RPS_STAT_RPS_MASK 0x00003FFF
++/** field offset */
++#define I2C_RPS_STAT_RPS_OFFSET 0
++
++/* Fields of "I2C Transmit Packet Size Register" */
++/** TPS */
++#define I2C_TPS_CTRL_TPS_MASK 0x00003FFF
++/** field offset */
++#define I2C_TPS_CTRL_TPS_OFFSET 0
++
++/* Fields of "I2C Filled FIFO Stages Status Register" */
++/** FFS */
++#define I2C_FFS_STAT_FFS_MASK 0x0000000F
++/** field offset */
++#define I2C_FFS_STAT_FFS_OFFSET 0
++
++/* Fields of "I2C Timing Configuration Register" */
++/** SDA Delay Stages for Start/Stop bit in High Speed Mode
++    The actual delay is calculated as the value of this field + 3 */
++#define I2C_TIM_CFG_HS_SDA_DEL_MASK 0x00070000
++/** field offset */
++#define I2C_TIM_CFG_HS_SDA_DEL_OFFSET 16
++/** Enable Fast Mode SCL Low period timing */
++#define I2C_TIM_CFG_FS_SCL_LOW 0x00008000
++/* Disable
++#define I2C_TIM_CFG_FS_SCL_LOW_DIS 0x00000000 */
++/** Enable */
++#define I2C_TIM_CFG_FS_SCL_LOW_EN 0x00008000
++/** SCL Delay Stages for Hold Time Start (Restart) Bit.
++    The actual delay is calculated as the value of this field + 2 */
++#define I2C_TIM_CFG_SCL_DEL_HD_STA_MASK 0x00000E00
++/** field offset */
++#define I2C_TIM_CFG_SCL_DEL_HD_STA_OFFSET 9
++/** SDA Delay Stages for Start/Stop bit in High Speed Mode
++    The actual delay is calculated as the value of this field + 3 */
++#define I2C_TIM_CFG_HS_SDA_DEL_HD_DAT_MASK 0x000001C0
++/** field offset */
++#define I2C_TIM_CFG_HS_SDA_DEL_HD_DAT_OFFSET 6
++/** SDA Delay Stages for Start/Stop bit in High Speed Mode
++    The actual delay is calculated as the value of this field + 3 */
++#define I2C_TIM_CFG_SDA_DEL_HD_DAT_MASK 0x0000003F
++/** field offset */
++#define I2C_TIM_CFG_SDA_DEL_HD_DAT_OFFSET 0
++
++/* Fields of "I2C Error Interrupt Request Source Mask Register" */
++/** Enables the corresponding error interrupt. */
++#define I2C_ERR_IRQSM_TXF_OFL 0x00000008
++/* Disable
++#define I2C_ERR_IRQSM_TXF_OFL_DIS 0x00000000 */
++/** Enable */
++#define I2C_ERR_IRQSM_TXF_OFL_EN 0x00000008
++/** Enables the corresponding error interrupt. */
++#define I2C_ERR_IRQSM_TXF_UFL 0x00000004
++/* Disable
++#define I2C_ERR_IRQSM_TXF_UFL_DIS 0x00000000 */
++/** Enable */
++#define I2C_ERR_IRQSM_TXF_UFL_EN 0x00000004
++/** Enables the corresponding error interrupt. */
++#define I2C_ERR_IRQSM_RXF_OFL 0x00000002
++/* Disable
++#define I2C_ERR_IRQSM_RXF_OFL_DIS 0x00000000 */
++/** Enable */
++#define I2C_ERR_IRQSM_RXF_OFL_EN 0x00000002
++/** Enables the corresponding error interrupt. */
++#define I2C_ERR_IRQSM_RXF_UFL 0x00000001
++/* Disable
++#define I2C_ERR_IRQSM_RXF_UFL_DIS 0x00000000 */
++/** Enable */
++#define I2C_ERR_IRQSM_RXF_UFL_EN 0x00000001
++
++/* Fields of "I2C Error Interrupt Request Source Status Register" */
++/** TXF_OFL */
++#define I2C_ERR_IRQSS_TXF_OFL 0x00000008
++/* Nothing
++#define I2C_ERR_IRQSS_TXF_OFL_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define I2C_ERR_IRQSS_TXF_OFL_INTOCC 0x00000008
++/** TXF_UFL */
++#define I2C_ERR_IRQSS_TXF_UFL 0x00000004
++/* Nothing
++#define I2C_ERR_IRQSS_TXF_UFL_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define I2C_ERR_IRQSS_TXF_UFL_INTOCC 0x00000004
++/** RXF_OFL */
++#define I2C_ERR_IRQSS_RXF_OFL 0x00000002
++/* Nothing
++#define I2C_ERR_IRQSS_RXF_OFL_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define I2C_ERR_IRQSS_RXF_OFL_INTOCC 0x00000002
++/** RXF_UFL */
++#define I2C_ERR_IRQSS_RXF_UFL 0x00000001
++/* Nothing
++#define I2C_ERR_IRQSS_RXF_UFL_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define I2C_ERR_IRQSS_RXF_UFL_INTOCC 0x00000001
++
++/* Fields of "I2C Error Interrupt Request Source Clear Register" */
++/** TXF_OFL */
++#define I2C_ERR_IRQSC_TXF_OFL 0x00000008
++/* No-Operation
++#define I2C_ERR_IRQSC_TXF_OFL_NOP 0x00000000 */
++/** Clear */
++#define I2C_ERR_IRQSC_TXF_OFL_CLR 0x00000008
++/** TXF_UFL */
++#define I2C_ERR_IRQSC_TXF_UFL 0x00000004
++/* No-Operation
++#define I2C_ERR_IRQSC_TXF_UFL_NOP 0x00000000 */
++/** Clear */
++#define I2C_ERR_IRQSC_TXF_UFL_CLR 0x00000004
++/** RXF_OFL */
++#define I2C_ERR_IRQSC_RXF_OFL 0x00000002
++/* No-Operation
++#define I2C_ERR_IRQSC_RXF_OFL_NOP 0x00000000 */
++/** Clear */
++#define I2C_ERR_IRQSC_RXF_OFL_CLR 0x00000002
++/** RXF_UFL */
++#define I2C_ERR_IRQSC_RXF_UFL 0x00000001
++/* No-Operation
++#define I2C_ERR_IRQSC_RXF_UFL_NOP 0x00000000 */
++/** Clear */
++#define I2C_ERR_IRQSC_RXF_UFL_CLR 0x00000001
++
++/* Fields of "I2C Protocol Interrupt Request Source Mask Register" */
++/** Enables the corresponding interrupt. */
++#define I2C_P_IRQSM_RX 0x00000040
++/* Disable
++#define I2C_P_IRQSM_RX_DIS 0x00000000 */
++/** Enable */
++#define I2C_P_IRQSM_RX_EN 0x00000040
++/** Enables the corresponding interrupt. */
++#define I2C_P_IRQSM_TX_END 0x00000020
++/* Disable
++#define I2C_P_IRQSM_TX_END_DIS 0x00000000 */
++/** Enable */
++#define I2C_P_IRQSM_TX_END_EN 0x00000020
++/** Enables the corresponding interrupt. */
++#define I2C_P_IRQSM_NACK 0x00000010
++/* Disable
++#define I2C_P_IRQSM_NACK_DIS 0x00000000 */
++/** Enable */
++#define I2C_P_IRQSM_NACK_EN 0x00000010
++/** Enables the corresponding interrupt. */
++#define I2C_P_IRQSM_AL 0x00000008
++/* Disable
++#define I2C_P_IRQSM_AL_DIS 0x00000000 */
++/** Enable */
++#define I2C_P_IRQSM_AL_EN 0x00000008
++/** Enables the corresponding interrupt. */
++#define I2C_P_IRQSM_MC 0x00000004
++/* Disable
++#define I2C_P_IRQSM_MC_DIS 0x00000000 */
++/** Enable */
++#define I2C_P_IRQSM_MC_EN 0x00000004
++/** Enables the corresponding interrupt. */
++#define I2C_P_IRQSM_GC 0x00000002
++/* Disable
++#define I2C_P_IRQSM_GC_DIS 0x00000000 */
++/** Enable */
++#define I2C_P_IRQSM_GC_EN 0x00000002
++/** Enables the corresponding interrupt. */
++#define I2C_P_IRQSM_AM 0x00000001
++/* Disable
++#define I2C_P_IRQSM_AM_DIS 0x00000000 */
++/** Enable */
++#define I2C_P_IRQSM_AM_EN 0x00000001
++
++/* Fields of "I2C Protocol Interrupt Request Source Status Register" */
++/** RX */
++#define I2C_P_IRQSS_RX 0x00000040
++/* Nothing
++#define I2C_P_IRQSS_RX_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define I2C_P_IRQSS_RX_INTOCC 0x00000040
++/** TX_END */
++#define I2C_P_IRQSS_TX_END 0x00000020
++/* Nothing
++#define I2C_P_IRQSS_TX_END_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define I2C_P_IRQSS_TX_END_INTOCC 0x00000020
++/** NACK */
++#define I2C_P_IRQSS_NACK 0x00000010
++/* Nothing
++#define I2C_P_IRQSS_NACK_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define I2C_P_IRQSS_NACK_INTOCC 0x00000010
++/** AL */
++#define I2C_P_IRQSS_AL 0x00000008
++/* Nothing
++#define I2C_P_IRQSS_AL_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define I2C_P_IRQSS_AL_INTOCC 0x00000008
++/** MC */
++#define I2C_P_IRQSS_MC 0x00000004
++/* Nothing
++#define I2C_P_IRQSS_MC_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define I2C_P_IRQSS_MC_INTOCC 0x00000004
++/** GC */
++#define I2C_P_IRQSS_GC 0x00000002
++/* Nothing
++#define I2C_P_IRQSS_GC_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define I2C_P_IRQSS_GC_INTOCC 0x00000002
++/** AM */
++#define I2C_P_IRQSS_AM 0x00000001
++/* Nothing
++#define I2C_P_IRQSS_AM_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define I2C_P_IRQSS_AM_INTOCC 0x00000001
++
++/* Fields of "I2C Protocol Interrupt Request Source Clear Register" */
++/** RX */
++#define I2C_P_IRQSC_RX 0x00000040
++/* No-Operation
++#define I2C_P_IRQSC_RX_NOP 0x00000000 */
++/** Clear */
++#define I2C_P_IRQSC_RX_CLR 0x00000040
++/** TX_END */
++#define I2C_P_IRQSC_TX_END 0x00000020
++/* No-Operation
++#define I2C_P_IRQSC_TX_END_NOP 0x00000000 */
++/** Clear */
++#define I2C_P_IRQSC_TX_END_CLR 0x00000020
++/** NACK */
++#define I2C_P_IRQSC_NACK 0x00000010
++/* No-Operation
++#define I2C_P_IRQSC_NACK_NOP 0x00000000 */
++/** Clear */
++#define I2C_P_IRQSC_NACK_CLR 0x00000010
++/** AL */
++#define I2C_P_IRQSC_AL 0x00000008
++/* No-Operation
++#define I2C_P_IRQSC_AL_NOP 0x00000000 */
++/** Clear */
++#define I2C_P_IRQSC_AL_CLR 0x00000008
++/** MC */
++#define I2C_P_IRQSC_MC 0x00000004
++/* No-Operation
++#define I2C_P_IRQSC_MC_NOP 0x00000000 */
++/** Clear */
++#define I2C_P_IRQSC_MC_CLR 0x00000004
++/** GC */
++#define I2C_P_IRQSC_GC 0x00000002
++/* No-Operation
++#define I2C_P_IRQSC_GC_NOP 0x00000000 */
++/** Clear */
++#define I2C_P_IRQSC_GC_CLR 0x00000002
++/** AM */
++#define I2C_P_IRQSC_AM 0x00000001
++/* No-Operation
++#define I2C_P_IRQSC_AM_NOP 0x00000000 */
++/** Clear */
++#define I2C_P_IRQSC_AM_CLR 0x00000001
++
++/* Fields of "I2C Raw Interrupt Status Register" */
++/** This is the combined interrupt bit for indication of an protocol event in the I2C kernel. */
++#define I2C_RIS_I2C_P_INT 0x00000020
++/* Nothing
++#define I2C_RIS_I2C_P_INT_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define I2C_RIS_I2C_P_INT_INTOCC 0x00000020
++/** This is the combined interrupt bit for indication of FIFO errors due to overflow and underrun. */
++#define I2C_RIS_I2C_ERR_INT 0x00000010
++/* Nothing
++#define I2C_RIS_I2C_ERR_INT_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define I2C_RIS_I2C_ERR_INT_INTOCC 0x00000010
++/** BREQ_INT */
++#define I2C_RIS_BREQ_INT 0x00000008
++/* Nothing
++#define I2C_RIS_BREQ_INT_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define I2C_RIS_BREQ_INT_INTOCC 0x00000008
++/** LBREQ_INT */
++#define I2C_RIS_LBREQ_INT 0x00000004
++/* Nothing
++#define I2C_RIS_LBREQ_INT_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define I2C_RIS_LBREQ_INT_INTOCC 0x00000004
++/** SREQ_INT */
++#define I2C_RIS_SREQ_INT 0x00000002
++/* Nothing
++#define I2C_RIS_SREQ_INT_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define I2C_RIS_SREQ_INT_INTOCC 0x00000002
++/** LSREQ_INT */
++#define I2C_RIS_LSREQ_INT 0x00000001
++/* Nothing
++#define I2C_RIS_LSREQ_INT_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define I2C_RIS_LSREQ_INT_INTOCC 0x00000001
++
++/* Fields of "I2C Interrupt Mask Control Register" */
++/** This is the combined interrupt bit for indication of an protocol event in the I2C kernel. */
++#define I2C_IMSC_I2C_P_INT 0x00000020
++/* Disable
++#define I2C_IMSC_I2C_P_INT_DIS 0x00000000 */
++/** Enable */
++#define I2C_IMSC_I2C_P_INT_EN 0x00000020
++/** This is the combined interrupt bit for indication of FIFO errors due to overflow and underrun. */
++#define I2C_IMSC_I2C_ERR_INT 0x00000010
++/* Disable
++#define I2C_IMSC_I2C_ERR_INT_DIS 0x00000000 */
++/** Enable */
++#define I2C_IMSC_I2C_ERR_INT_EN 0x00000010
++/** BREQ_INT */
++#define I2C_IMSC_BREQ_INT 0x00000008
++/* Disable
++#define I2C_IMSC_BREQ_INT_DIS 0x00000000 */
++/** Enable */
++#define I2C_IMSC_BREQ_INT_EN 0x00000008
++/** LBREQ_INT */
++#define I2C_IMSC_LBREQ_INT 0x00000004
++/* Disable
++#define I2C_IMSC_LBREQ_INT_DIS 0x00000000 */
++/** Enable */
++#define I2C_IMSC_LBREQ_INT_EN 0x00000004
++/** SREQ_INT */
++#define I2C_IMSC_SREQ_INT 0x00000002
++/* Disable
++#define I2C_IMSC_SREQ_INT_DIS 0x00000000 */
++/** Enable */
++#define I2C_IMSC_SREQ_INT_EN 0x00000002
++/** LSREQ_INT */
++#define I2C_IMSC_LSREQ_INT 0x00000001
++/* Disable
++#define I2C_IMSC_LSREQ_INT_DIS 0x00000000 */
++/** Enable */
++#define I2C_IMSC_LSREQ_INT_EN 0x00000001
++
++/* Fields of "I2C Masked Interrupt Status Register" */
++/** This is the combined interrupt bit for indication of an protocol event in the I2C kernel. */
++#define I2C_MIS_I2C_P_INT 0x00000020
++/* Nothing
++#define I2C_MIS_I2C_P_INT_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define I2C_MIS_I2C_P_INT_INTOCC 0x00000020
++/** This is the combined interrupt bit for indication of FIFO errors due to overflow and underrun. */
++#define I2C_MIS_I2C_ERR_INT 0x00000010
++/* Nothing
++#define I2C_MIS_I2C_ERR_INT_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define I2C_MIS_I2C_ERR_INT_INTOCC 0x00000010
++/** BREQ_INT */
++#define I2C_MIS_BREQ_INT 0x00000008
++/* Nothing
++#define I2C_MIS_BREQ_INT_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define I2C_MIS_BREQ_INT_INTOCC 0x00000008
++/** LBREQ_INT */
++#define I2C_MIS_LBREQ_INT 0x00000004
++/* Nothing
++#define I2C_MIS_LBREQ_INT_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define I2C_MIS_LBREQ_INT_INTOCC 0x00000004
++/** SREQ_INT */
++#define I2C_MIS_SREQ_INT 0x00000002
++/* Nothing
++#define I2C_MIS_SREQ_INT_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define I2C_MIS_SREQ_INT_INTOCC 0x00000002
++/** LSREQ_INT */
++#define I2C_MIS_LSREQ_INT 0x00000001
++/* Nothing
++#define I2C_MIS_LSREQ_INT_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define I2C_MIS_LSREQ_INT_INTOCC 0x00000001
++
++/* Fields of "I2C Interrupt Clear Register" */
++/** This is the combined interrupt bit for indication of an protocol event in the I2C kernel. */
++#define I2C_ICR_I2C_P_INT 0x00000020
++/* No-Operation
++#define I2C_ICR_I2C_P_INT_NOP 0x00000000 */
++/** Clear */
++#define I2C_ICR_I2C_P_INT_CLR 0x00000020
++/** This is the combined interrupt bit for indication of FIFO errors due to overflow and underrun. */
++#define I2C_ICR_I2C_ERR_INT 0x00000010
++/* No-Operation
++#define I2C_ICR_I2C_ERR_INT_NOP 0x00000000 */
++/** Clear */
++#define I2C_ICR_I2C_ERR_INT_CLR 0x00000010
++/** BREQ_INT */
++#define I2C_ICR_BREQ_INT 0x00000008
++/* No-Operation
++#define I2C_ICR_BREQ_INT_NOP 0x00000000 */
++/** Clear */
++#define I2C_ICR_BREQ_INT_CLR 0x00000008
++/** LBREQ_INT */
++#define I2C_ICR_LBREQ_INT 0x00000004
++/* No-Operation
++#define I2C_ICR_LBREQ_INT_NOP 0x00000000 */
++/** Clear */
++#define I2C_ICR_LBREQ_INT_CLR 0x00000004
++/** SREQ_INT */
++#define I2C_ICR_SREQ_INT 0x00000002
++/* No-Operation
++#define I2C_ICR_SREQ_INT_NOP 0x00000000 */
++/** Clear */
++#define I2C_ICR_SREQ_INT_CLR 0x00000002
++/** LSREQ_INT */
++#define I2C_ICR_LSREQ_INT 0x00000001
++/* No-Operation
++#define I2C_ICR_LSREQ_INT_NOP 0x00000000 */
++/** Clear */
++#define I2C_ICR_LSREQ_INT_CLR 0x00000001
++
++/* Fields of "I2C Interrupt Set Register" */
++/** This is the combined interrupt bit for indication of an protocol event in the I2C kernel. */
++#define I2C_ISR_I2C_P_INT 0x00000020
++/* No-Operation
++#define I2C_ISR_I2C_P_INT_NOP 0x00000000 */
++/** Set */
++#define I2C_ISR_I2C_P_INT_SET 0x00000020
++/** This is the combined interrupt bit for indication of FIFO errors due to overflow and underrun. */
++#define I2C_ISR_I2C_ERR_INT 0x00000010
++/* No-Operation
++#define I2C_ISR_I2C_ERR_INT_NOP 0x00000000 */
++/** Set */
++#define I2C_ISR_I2C_ERR_INT_SET 0x00000010
++/** BREQ_INT */
++#define I2C_ISR_BREQ_INT 0x00000008
++/* No-Operation
++#define I2C_ISR_BREQ_INT_NOP 0x00000000 */
++/** Set */
++#define I2C_ISR_BREQ_INT_SET 0x00000008
++/** LBREQ_INT */
++#define I2C_ISR_LBREQ_INT 0x00000004
++/* No-Operation
++#define I2C_ISR_LBREQ_INT_NOP 0x00000000 */
++/** Set */
++#define I2C_ISR_LBREQ_INT_SET 0x00000004
++/** SREQ_INT */
++#define I2C_ISR_SREQ_INT 0x00000002
++/* No-Operation
++#define I2C_ISR_SREQ_INT_NOP 0x00000000 */
++/** Set */
++#define I2C_ISR_SREQ_INT_SET 0x00000002
++/** LSREQ_INT */
++#define I2C_ISR_LSREQ_INT 0x00000001
++/* No-Operation
++#define I2C_ISR_LSREQ_INT_NOP 0x00000000 */
++/** Set */
++#define I2C_ISR_LSREQ_INT_SET 0x00000001
++
++/* Fields of "I2C DMA Enable Register" */
++/** BREQ_INT */
++#define I2C_DMAE_BREQ_INT 0x00000008
++/* Disable
++#define I2C_DMAE_BREQ_INT_DIS 0x00000000 */
++/** Enable */
++#define I2C_DMAE_BREQ_INT_EN 0x00000008
++/** LBREQ_INT */
++#define I2C_DMAE_LBREQ_INT 0x00000004
++/* Disable
++#define I2C_DMAE_LBREQ_INT_DIS 0x00000000 */
++/** Enable */
++#define I2C_DMAE_LBREQ_INT_EN 0x00000004
++/** SREQ_INT */
++#define I2C_DMAE_SREQ_INT 0x00000002
++/* Disable
++#define I2C_DMAE_SREQ_INT_DIS 0x00000000 */
++/** Enable */
++#define I2C_DMAE_SREQ_INT_EN 0x00000002
++/** LSREQ_INT */
++#define I2C_DMAE_LSREQ_INT 0x00000001
++/* Disable
++#define I2C_DMAE_LSREQ_INT_DIS 0x00000000 */
++/** Enable */
++#define I2C_DMAE_LSREQ_INT_EN 0x00000001
++
++/* Fields of "I2C Transmit Data Register" */
++/** Characters to be transmitted */
++#define I2C_TXD_TXD_MASK 0xFFFFFFFF
++/** field offset */
++#define I2C_TXD_TXD_OFFSET 0
++
++/* Fields of "I2C Receive Data Register" */
++/** Received characters */
++#define I2C_RXD_RXD_MASK 0xFFFFFFFF
++/** field offset */
++#define I2C_RXD_RXD_OFFSET 0
++
++/*! @} */ /* I2C_REGISTER */
++
++#endif /* _i2c_reg_h */
+--- /dev/null
++++ b/arch/mips/include/asm/mach-lantiq/falcon/icu0_reg.h
+@@ -0,0 +1,4324 @@
++/******************************************************************************
++
++                               Copyright (c) 2010
++                            Lantiq Deutschland GmbH
++
++  For licensing information, see the file 'LICENSE' in the root folder of
++  this software module.
++
++******************************************************************************/
++
++#ifndef _icu0_reg_h
++#define _icu0_reg_h
++
++/** \addtogroup ICU0_REGISTER
++   @{
++*/
++/* access macros */
++#define icu0_r32(reg) reg_r32(&icu0->reg)
++#define icu0_w32(val, reg) reg_w32(val, &icu0->reg)
++#define icu0_w32_mask(clear, set, reg) reg_w32_mask(clear, set, &icu0->reg)
++#define icu0_r32_table(reg, idx) reg_r32_table(icu0->reg, idx)
++#define icu0_w32_table(val, reg, idx) reg_w32_table(val, icu0->reg, idx)
++#define icu0_w32_table_mask(clear, set, reg, idx) reg_w32_table_mask(clear, set, icu0->reg, idx)
++#define icu0_adr_table(reg, idx) adr_table(icu0->reg, idx)
++
++
++/** ICU0 register structure */
++struct gpon_reg_icu0
++{
++   /** IM0 Interrupt Status Register
++       A read action to this register delivers the unmasked captured status of the interrupt request lines. Each bit can be cleared by a write operation. */
++   unsigned int im0_isr; /* 0x00000000 */
++   /** Reserved */
++   unsigned int res_0; /* 0x00000004 */
++   /** IM0 Interrupt Enable Register
++       This register contains the enable (or mask) bits for the interrupts. Disabled interrupts are not visible in the IM0_IOSR register and are not signalled via the interrupt line towards the controller. */
++   unsigned int im0_ier; /* 0x00000008 */
++   /** Reserved */
++   unsigned int res_1; /* 0x0000000C */
++   /** IM0 Interrupt Output Status Register
++       This register shows the currently active interrupt requests masked with the corresponding enable bits of the IM0_IER register. */
++   unsigned int im0_iosr; /* 0x00000010 */
++   /** Reserved */
++   unsigned int res_2; /* 0x00000014 */
++   /** IM0 Interrupt Request Set Register
++       A write operation directly effects the interrupts. This can be used to trigger events under software control for testing purposes. A read operation returns the unmasked interrupt events. */
++   unsigned int im0_irsr; /* 0x00000018 */
++   /** Reserved */
++   unsigned int res_3; /* 0x0000001C */
++   /** IM0 Interrupt Mode Register
++       This register shows the type of interrupt for each bit. */
++   unsigned int im0_imr; /* 0x00000020 */
++   /** Reserved */
++   unsigned int res_4; /* 0x00000024 */
++   /** IM1 Interrupt Status Register
++       A read action to this register delivers the unmasked captured status of the interrupt request lines. Each bit can be cleared by a write operation. */
++   unsigned int im1_isr; /* 0x00000028 */
++   /** Reserved */
++   unsigned int res_5; /* 0x0000002C */
++   /** IM1 Interrupt Enable Register
++       This register contains the enable (or mask) bits for the interrupts. Disabled interrupts are not visible in the IM1_IOSR register and are not signalled via the interrupt line towards the controller. */
++   unsigned int im1_ier; /* 0x00000030 */
++   /** Reserved */
++   unsigned int res_6; /* 0x00000034 */
++   /** IM1 Interrupt Output Status Register
++       This register shows the currently active interrupt requests masked with the corresponding enable bits of the IM1_IER register. */
++   unsigned int im1_iosr; /* 0x00000038 */
++   /** Reserved */
++   unsigned int res_7; /* 0x0000003C */
++   /** IM1 Interrupt Request Set Register
++       A write operation directly effects the interrupts. This can be used to trigger events under software control for testing purposes. A read operation returns the unmasked interrupt events. */
++   unsigned int im1_irsr; /* 0x00000040 */
++   /** Reserved */
++   unsigned int res_8; /* 0x00000044 */
++   /** IM1 Interrupt Mode Register
++       This register shows the type of interrupt for each bit. */
++   unsigned int im1_imr; /* 0x00000048 */
++   /** Reserved */
++   unsigned int res_9; /* 0x0000004C */
++   /** IM2 Interrupt Status Register
++       A read action to this register delivers the unmasked captured status of the interrupt request lines. Each bit can be cleared by a write operation. */
++   unsigned int im2_isr; /* 0x00000050 */
++   /** Reserved */
++   unsigned int res_10; /* 0x00000054 */
++   /** IM2 Interrupt Enable Register
++       This register contains the enable (or mask) bits for the interrupts. Disabled interrupts are not visible in the IM2_IOSR register and are not signalled via the interrupt line towards the controller. */
++   unsigned int im2_ier; /* 0x00000058 */
++   /** Reserved */
++   unsigned int res_11; /* 0x0000005C */
++   /** IM2 Interrupt Output Status Register
++       This register shows the currently active interrupt requests masked with the corresponding enable bits of the IM2_IER register. */
++   unsigned int im2_iosr; /* 0x00000060 */
++   /** Reserved */
++   unsigned int res_12; /* 0x00000064 */
++   /** IM2 Interrupt Request Set Register
++       A write operation directly effects the interrupts. This can be used to trigger events under software control for testing purposes. A read operation returns the unmasked interrupt events. */
++   unsigned int im2_irsr; /* 0x00000068 */
++   /** Reserved */
++   unsigned int res_13; /* 0x0000006C */
++   /** IM2 Interrupt Mode Register
++       This register shows the type of interrupt for each bit. */
++   unsigned int im2_imr; /* 0x00000070 */
++   /** Reserved */
++   unsigned int res_14; /* 0x00000074 */
++   /** IM3 Interrupt Status Register
++       A read action to this register delivers the unmasked captured status of the interrupt request lines. Each bit can be cleared by a write operation. */
++   unsigned int im3_isr; /* 0x00000078 */
++   /** Reserved */
++   unsigned int res_15; /* 0x0000007C */
++   /** IM3 Interrupt Enable Register
++       This register contains the enable (or mask) bits for the interrupts. Disabled interrupts are not visible in the IM3_IOSR register and are not signalled via the interrupt line towards the controller. */
++   unsigned int im3_ier; /* 0x00000080 */
++   /** Reserved */
++   unsigned int res_16; /* 0x00000084 */
++   /** IM3 Interrupt Output Status Register
++       This register shows the currently active interrupt requests masked with the corresponding enable bits of the IM3_IER register. */
++   unsigned int im3_iosr; /* 0x00000088 */
++   /** Reserved */
++   unsigned int res_17; /* 0x0000008C */
++   /** IM3 Interrupt Request Set Register
++       A write operation directly effects the interrupts. This can be used to trigger events under software control for testing purposes. A read operation returns the unmasked interrupt events. */
++   unsigned int im3_irsr; /* 0x00000090 */
++   /** Reserved */
++   unsigned int res_18; /* 0x00000094 */
++   /** IM3 Interrupt Mode Register
++       This register shows the type of interrupt for each bit. */
++   unsigned int im3_imr; /* 0x00000098 */
++   /** Reserved */
++   unsigned int res_19; /* 0x0000009C */
++   /** IM4 Interrupt Status Register
++       A read action to this register delivers the unmasked captured status of the interrupt request lines. Each bit can be cleared by a write operation. */
++   unsigned int im4_isr; /* 0x000000A0 */
++   /** Reserved */
++   unsigned int res_20; /* 0x000000A4 */
++   /** IM4 Interrupt Enable Register
++       This register contains the enable (or mask) bits for the interrupts. Disabled interrupts are not visible in the IM4_IOSR register and are not signalled via the interrupt line towards the controller. */
++   unsigned int im4_ier; /* 0x000000A8 */
++   /** Reserved */
++   unsigned int res_21; /* 0x000000AC */
++   /** IM4 Interrupt Output Status Register
++       This register shows the currently active interrupt requests masked with the corresponding enable bits of the IM4_IER register. */
++   unsigned int im4_iosr; /* 0x000000B0 */
++   /** Reserved */
++   unsigned int res_22; /* 0x000000B4 */
++   /** IM4 Interrupt Request Set Register
++       A write operation directly effects the interrupts. This can be used to trigger events under software control for testing purposes. A read operation returns the unmasked interrupt events. */
++   unsigned int im4_irsr; /* 0x000000B8 */
++   /** Reserved */
++   unsigned int res_23; /* 0x000000BC */
++   /** IM4 Interrupt Mode Register
++       This register shows the type of interrupt for each bit. */
++   unsigned int im4_imr; /* 0x000000C0 */
++   /** Reserved */
++   unsigned int res_24; /* 0x000000C4 */
++   /** ICU Interrupt Vector Register (5 bit variant)
++       Shows the leftmost pending interrupt request. If e.g. bit 14 of the IOSR register is set, 15 is reported, because the 15th interrupt request is active. */
++   unsigned int icu_ivec; /* 0x000000C8 */
++   /** Reserved */
++   unsigned int res_25; /* 0x000000CC */
++   /** ICU Interrupt Vector Register (6 bit variant)
++       Shows the leftmost pending interrupt request. If e.g. bit 14 of the IOSR register is set, 15 is reported, because the 15th interrupt request is active. */
++   unsigned int icu_ivec_6; /* 0x000000D0 */
++   /** Reserved */
++   unsigned int res_26[3]; /* 0x000000D4 */
++};
++
++
++/* Fields of "IM0 Interrupt Status Register" */
++/** PCM Transmit Crash Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM0_ISR_PCM_HW2_CRASH 0x80000000
++/* Nothing
++#define ICU0_IM0_ISR_PCM_HW2_CRASH_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM0_ISR_PCM_HW2_CRASH_INTACK 0x80000000
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_ISR_PCM_HW2_CRASH_INTOCC 0x80000000
++/** PCM Transmit Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM0_ISR_PCM_TX 0x40000000
++/* Nothing
++#define ICU0_IM0_ISR_PCM_TX_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM0_ISR_PCM_TX_INTACK 0x40000000
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_ISR_PCM_TX_INTOCC 0x40000000
++/** PCM Receive Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM0_ISR_PCM_RX 0x20000000
++/* Nothing
++#define ICU0_IM0_ISR_PCM_RX_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM0_ISR_PCM_RX_INTACK 0x20000000
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_ISR_PCM_RX_INTOCC 0x20000000
++/** Secure Hash Algorithm Interrupt
++    This bit is a direct interrupt. */
++#define ICU0_IM0_ISR_SHA1_HASH 0x10000000
++/* Nothing
++#define ICU0_IM0_ISR_SHA1_HASH_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM0_ISR_SHA1_HASH_INTACK 0x10000000
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_ISR_SHA1_HASH_INTOCC 0x10000000
++/** Advanced Encryption Standard Interrupt
++    This bit is a direct interrupt. */
++#define ICU0_IM0_ISR_AES_AES 0x08000000
++/* Nothing
++#define ICU0_IM0_ISR_AES_AES_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM0_ISR_AES_AES_INTACK 0x08000000
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_ISR_AES_AES_INTOCC 0x08000000
++/** SSC Frame Interrupt
++    This bit is a direct interrupt. */
++#define ICU0_IM0_ISR_SSC0_F 0x00020000
++/* Nothing
++#define ICU0_IM0_ISR_SSC0_F_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM0_ISR_SSC0_F_INTACK 0x00020000
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_ISR_SSC0_F_INTOCC 0x00020000
++/** SSC Error Interrupt
++    This bit is a direct interrupt. */
++#define ICU0_IM0_ISR_SSC0_E 0x00010000
++/* Nothing
++#define ICU0_IM0_ISR_SSC0_E_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM0_ISR_SSC0_E_INTACK 0x00010000
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_ISR_SSC0_E_INTOCC 0x00010000
++/** SSC Receive Interrupt
++    This bit is a direct interrupt. */
++#define ICU0_IM0_ISR_SSC0_R 0x00008000
++/* Nothing
++#define ICU0_IM0_ISR_SSC0_R_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM0_ISR_SSC0_R_INTACK 0x00008000
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_ISR_SSC0_R_INTOCC 0x00008000
++/** SSC Transmit Interrupt
++    This bit is a direct interrupt. */
++#define ICU0_IM0_ISR_SSC0_T 0x00004000
++/* Nothing
++#define ICU0_IM0_ISR_SSC0_T_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM0_ISR_SSC0_T_INTACK 0x00004000
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_ISR_SSC0_T_INTOCC 0x00004000
++/** I2C Peripheral Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM0_ISR_I2C_I2C_P_INT 0x00002000
++/* Nothing
++#define ICU0_IM0_ISR_I2C_I2C_P_INT_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM0_ISR_I2C_I2C_P_INT_INTACK 0x00002000
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_ISR_I2C_I2C_P_INT_INTOCC 0x00002000
++/** I2C Error Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM0_ISR_I2C_I2C_ERR_INT 0x00001000
++/* Nothing
++#define ICU0_IM0_ISR_I2C_I2C_ERR_INT_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM0_ISR_I2C_I2C_ERR_INT_INTACK 0x00001000
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_ISR_I2C_I2C_ERR_INT_INTOCC 0x00001000
++/** I2C Burst Data Transfer Request
++    This bit is an indirect interrupt. */
++#define ICU0_IM0_ISR_I2C_BREQ_INT 0x00000800
++/* Nothing
++#define ICU0_IM0_ISR_I2C_BREQ_INT_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM0_ISR_I2C_BREQ_INT_INTACK 0x00000800
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_ISR_I2C_BREQ_INT_INTOCC 0x00000800
++/** I2C Last Burst Data Transfer Request
++    This bit is an indirect interrupt. */
++#define ICU0_IM0_ISR_I2C_LBREQ_INT 0x00000400
++/* Nothing
++#define ICU0_IM0_ISR_I2C_LBREQ_INT_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM0_ISR_I2C_LBREQ_INT_INTACK 0x00000400
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_ISR_I2C_LBREQ_INT_INTOCC 0x00000400
++/** I2C Single Data Transfer Request
++    This bit is an indirect interrupt. */
++#define ICU0_IM0_ISR_I2C_SREQ_INT 0x00000200
++/* Nothing
++#define ICU0_IM0_ISR_I2C_SREQ_INT_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM0_ISR_I2C_SREQ_INT_INTACK 0x00000200
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_ISR_I2C_SREQ_INT_INTOCC 0x00000200
++/** I2C Last Single Data Transfer Request
++    This bit is an indirect interrupt. */
++#define ICU0_IM0_ISR_I2C_LSREQ_INT 0x00000100
++/* Nothing
++#define ICU0_IM0_ISR_I2C_LSREQ_INT_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM0_ISR_I2C_LSREQ_INT_INTACK 0x00000100
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_ISR_I2C_LSREQ_INT_INTOCC 0x00000100
++/** HOST IF Mailbox1 Transmit Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM0_ISR_HOST_MB1_TIR 0x00000010
++/* Nothing
++#define ICU0_IM0_ISR_HOST_MB1_TIR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM0_ISR_HOST_MB1_TIR_INTACK 0x00000010
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_ISR_HOST_MB1_TIR_INTOCC 0x00000010
++/** HOST IF Mailbox1 Receive Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM0_ISR_HOST_MB1_RIR 0x00000008
++/* Nothing
++#define ICU0_IM0_ISR_HOST_MB1_RIR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM0_ISR_HOST_MB1_RIR_INTACK 0x00000008
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_ISR_HOST_MB1_RIR_INTOCC 0x00000008
++/** HOST IF Mailbox0 Transmit Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM0_ISR_HOST_MB0_TIR 0x00000004
++/* Nothing
++#define ICU0_IM0_ISR_HOST_MB0_TIR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM0_ISR_HOST_MB0_TIR_INTACK 0x00000004
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_ISR_HOST_MB0_TIR_INTOCC 0x00000004
++/** HOST IF Mailbox0 Receive Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM0_ISR_HOST_MB0_RIR 0x00000002
++/* Nothing
++#define ICU0_IM0_ISR_HOST_MB0_RIR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM0_ISR_HOST_MB0_RIR_INTACK 0x00000002
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_ISR_HOST_MB0_RIR_INTOCC 0x00000002
++/** HOST IF Event Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM0_ISR_HOST_EIR 0x00000001
++/* Nothing
++#define ICU0_IM0_ISR_HOST_EIR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM0_ISR_HOST_EIR_INTACK 0x00000001
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_ISR_HOST_EIR_INTOCC 0x00000001
++
++/* Fields of "IM0 Interrupt Enable Register" */
++/** PCM Transmit Crash Interrupt
++    Interrupt enable bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IER_PCM_HW2_CRASH 0x80000000
++/* Disable
++#define ICU0_IM0_IER_PCM_HW2_CRASH_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM0_IER_PCM_HW2_CRASH_EN 0x80000000
++/** PCM Transmit Interrupt
++    Interrupt enable bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IER_PCM_TX 0x40000000
++/* Disable
++#define ICU0_IM0_IER_PCM_TX_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM0_IER_PCM_TX_EN 0x40000000
++/** PCM Receive Interrupt
++    Interrupt enable bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IER_PCM_RX 0x20000000
++/* Disable
++#define ICU0_IM0_IER_PCM_RX_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM0_IER_PCM_RX_EN 0x20000000
++/** Secure Hash Algorithm Interrupt
++    Interrupt enable bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IER_SHA1_HASH 0x10000000
++/* Disable
++#define ICU0_IM0_IER_SHA1_HASH_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM0_IER_SHA1_HASH_EN 0x10000000
++/** Advanced Encryption Standard Interrupt
++    Interrupt enable bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IER_AES_AES 0x08000000
++/* Disable
++#define ICU0_IM0_IER_AES_AES_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM0_IER_AES_AES_EN 0x08000000
++/** SSC Frame Interrupt
++    Interrupt enable bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IER_SSC0_F 0x00020000
++/* Disable
++#define ICU0_IM0_IER_SSC0_F_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM0_IER_SSC0_F_EN 0x00020000
++/** SSC Error Interrupt
++    Interrupt enable bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IER_SSC0_E 0x00010000
++/* Disable
++#define ICU0_IM0_IER_SSC0_E_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM0_IER_SSC0_E_EN 0x00010000
++/** SSC Receive Interrupt
++    Interrupt enable bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IER_SSC0_R 0x00008000
++/* Disable
++#define ICU0_IM0_IER_SSC0_R_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM0_IER_SSC0_R_EN 0x00008000
++/** SSC Transmit Interrupt
++    Interrupt enable bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IER_SSC0_T 0x00004000
++/* Disable
++#define ICU0_IM0_IER_SSC0_T_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM0_IER_SSC0_T_EN 0x00004000
++/** I2C Peripheral Interrupt
++    Interrupt enable bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IER_I2C_I2C_P_INT 0x00002000
++/* Disable
++#define ICU0_IM0_IER_I2C_I2C_P_INT_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM0_IER_I2C_I2C_P_INT_EN 0x00002000
++/** I2C Error Interrupt
++    Interrupt enable bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IER_I2C_I2C_ERR_INT 0x00001000
++/* Disable
++#define ICU0_IM0_IER_I2C_I2C_ERR_INT_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM0_IER_I2C_I2C_ERR_INT_EN 0x00001000
++/** I2C Burst Data Transfer Request
++    Interrupt enable bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IER_I2C_BREQ_INT 0x00000800
++/* Disable
++#define ICU0_IM0_IER_I2C_BREQ_INT_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM0_IER_I2C_BREQ_INT_EN 0x00000800
++/** I2C Last Burst Data Transfer Request
++    Interrupt enable bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IER_I2C_LBREQ_INT 0x00000400
++/* Disable
++#define ICU0_IM0_IER_I2C_LBREQ_INT_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM0_IER_I2C_LBREQ_INT_EN 0x00000400
++/** I2C Single Data Transfer Request
++    Interrupt enable bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IER_I2C_SREQ_INT 0x00000200
++/* Disable
++#define ICU0_IM0_IER_I2C_SREQ_INT_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM0_IER_I2C_SREQ_INT_EN 0x00000200
++/** I2C Last Single Data Transfer Request
++    Interrupt enable bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IER_I2C_LSREQ_INT 0x00000100
++/* Disable
++#define ICU0_IM0_IER_I2C_LSREQ_INT_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM0_IER_I2C_LSREQ_INT_EN 0x00000100
++/** HOST IF Mailbox1 Transmit Interrupt
++    Interrupt enable bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IER_HOST_MB1_TIR 0x00000010
++/* Disable
++#define ICU0_IM0_IER_HOST_MB1_TIR_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM0_IER_HOST_MB1_TIR_EN 0x00000010
++/** HOST IF Mailbox1 Receive Interrupt
++    Interrupt enable bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IER_HOST_MB1_RIR 0x00000008
++/* Disable
++#define ICU0_IM0_IER_HOST_MB1_RIR_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM0_IER_HOST_MB1_RIR_EN 0x00000008
++/** HOST IF Mailbox0 Transmit Interrupt
++    Interrupt enable bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IER_HOST_MB0_TIR 0x00000004
++/* Disable
++#define ICU0_IM0_IER_HOST_MB0_TIR_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM0_IER_HOST_MB0_TIR_EN 0x00000004
++/** HOST IF Mailbox0 Receive Interrupt
++    Interrupt enable bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IER_HOST_MB0_RIR 0x00000002
++/* Disable
++#define ICU0_IM0_IER_HOST_MB0_RIR_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM0_IER_HOST_MB0_RIR_EN 0x00000002
++/** HOST IF Event Interrupt
++    Interrupt enable bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IER_HOST_EIR 0x00000001
++/* Disable
++#define ICU0_IM0_IER_HOST_EIR_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM0_IER_HOST_EIR_EN 0x00000001
++
++/* Fields of "IM0 Interrupt Output Status Register" */
++/** PCM Transmit Crash Interrupt
++    Masked interrupt bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IOSR_PCM_HW2_CRASH 0x80000000
++/* Nothing
++#define ICU0_IM0_IOSR_PCM_HW2_CRASH_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_IOSR_PCM_HW2_CRASH_INTOCC 0x80000000
++/** PCM Transmit Interrupt
++    Masked interrupt bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IOSR_PCM_TX 0x40000000
++/* Nothing
++#define ICU0_IM0_IOSR_PCM_TX_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_IOSR_PCM_TX_INTOCC 0x40000000
++/** PCM Receive Interrupt
++    Masked interrupt bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IOSR_PCM_RX 0x20000000
++/* Nothing
++#define ICU0_IM0_IOSR_PCM_RX_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_IOSR_PCM_RX_INTOCC 0x20000000
++/** Secure Hash Algorithm Interrupt
++    Masked interrupt bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IOSR_SHA1_HASH 0x10000000
++/* Nothing
++#define ICU0_IM0_IOSR_SHA1_HASH_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_IOSR_SHA1_HASH_INTOCC 0x10000000
++/** Advanced Encryption Standard Interrupt
++    Masked interrupt bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IOSR_AES_AES 0x08000000
++/* Nothing
++#define ICU0_IM0_IOSR_AES_AES_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_IOSR_AES_AES_INTOCC 0x08000000
++/** SSC Frame Interrupt
++    Masked interrupt bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IOSR_SSC0_F 0x00020000
++/* Nothing
++#define ICU0_IM0_IOSR_SSC0_F_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_IOSR_SSC0_F_INTOCC 0x00020000
++/** SSC Error Interrupt
++    Masked interrupt bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IOSR_SSC0_E 0x00010000
++/* Nothing
++#define ICU0_IM0_IOSR_SSC0_E_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_IOSR_SSC0_E_INTOCC 0x00010000
++/** SSC Receive Interrupt
++    Masked interrupt bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IOSR_SSC0_R 0x00008000
++/* Nothing
++#define ICU0_IM0_IOSR_SSC0_R_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_IOSR_SSC0_R_INTOCC 0x00008000
++/** SSC Transmit Interrupt
++    Masked interrupt bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IOSR_SSC0_T 0x00004000
++/* Nothing
++#define ICU0_IM0_IOSR_SSC0_T_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_IOSR_SSC0_T_INTOCC 0x00004000
++/** I2C Peripheral Interrupt
++    Masked interrupt bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IOSR_I2C_I2C_P_INT 0x00002000
++/* Nothing
++#define ICU0_IM0_IOSR_I2C_I2C_P_INT_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_IOSR_I2C_I2C_P_INT_INTOCC 0x00002000
++/** I2C Error Interrupt
++    Masked interrupt bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IOSR_I2C_I2C_ERR_INT 0x00001000
++/* Nothing
++#define ICU0_IM0_IOSR_I2C_I2C_ERR_INT_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_IOSR_I2C_I2C_ERR_INT_INTOCC 0x00001000
++/** I2C Burst Data Transfer Request
++    Masked interrupt bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IOSR_I2C_BREQ_INT 0x00000800
++/* Nothing
++#define ICU0_IM0_IOSR_I2C_BREQ_INT_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_IOSR_I2C_BREQ_INT_INTOCC 0x00000800
++/** I2C Last Burst Data Transfer Request
++    Masked interrupt bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IOSR_I2C_LBREQ_INT 0x00000400
++/* Nothing
++#define ICU0_IM0_IOSR_I2C_LBREQ_INT_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_IOSR_I2C_LBREQ_INT_INTOCC 0x00000400
++/** I2C Single Data Transfer Request
++    Masked interrupt bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IOSR_I2C_SREQ_INT 0x00000200
++/* Nothing
++#define ICU0_IM0_IOSR_I2C_SREQ_INT_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_IOSR_I2C_SREQ_INT_INTOCC 0x00000200
++/** I2C Last Single Data Transfer Request
++    Masked interrupt bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IOSR_I2C_LSREQ_INT 0x00000100
++/* Nothing
++#define ICU0_IM0_IOSR_I2C_LSREQ_INT_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_IOSR_I2C_LSREQ_INT_INTOCC 0x00000100
++/** HOST IF Mailbox1 Transmit Interrupt
++    Masked interrupt bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IOSR_HOST_MB1_TIR 0x00000010
++/* Nothing
++#define ICU0_IM0_IOSR_HOST_MB1_TIR_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_IOSR_HOST_MB1_TIR_INTOCC 0x00000010
++/** HOST IF Mailbox1 Receive Interrupt
++    Masked interrupt bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IOSR_HOST_MB1_RIR 0x00000008
++/* Nothing
++#define ICU0_IM0_IOSR_HOST_MB1_RIR_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_IOSR_HOST_MB1_RIR_INTOCC 0x00000008
++/** HOST IF Mailbox0 Transmit Interrupt
++    Masked interrupt bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IOSR_HOST_MB0_TIR 0x00000004
++/* Nothing
++#define ICU0_IM0_IOSR_HOST_MB0_TIR_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_IOSR_HOST_MB0_TIR_INTOCC 0x00000004
++/** HOST IF Mailbox0 Receive Interrupt
++    Masked interrupt bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IOSR_HOST_MB0_RIR 0x00000002
++/* Nothing
++#define ICU0_IM0_IOSR_HOST_MB0_RIR_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_IOSR_HOST_MB0_RIR_INTOCC 0x00000002
++/** HOST IF Event Interrupt
++    Masked interrupt bit for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IOSR_HOST_EIR 0x00000001
++/* Nothing
++#define ICU0_IM0_IOSR_HOST_EIR_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM0_IOSR_HOST_EIR_INTOCC 0x00000001
++
++/* Fields of "IM0 Interrupt Request Set Register" */
++/** PCM Transmit Crash Interrupt
++    Software control for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IRSR_PCM_HW2_CRASH 0x80000000
++/** PCM Transmit Interrupt
++    Software control for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IRSR_PCM_TX 0x40000000
++/** PCM Receive Interrupt
++    Software control for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IRSR_PCM_RX 0x20000000
++/** Secure Hash Algorithm Interrupt
++    Software control for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IRSR_SHA1_HASH 0x10000000
++/** Advanced Encryption Standard Interrupt
++    Software control for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IRSR_AES_AES 0x08000000
++/** SSC Frame Interrupt
++    Software control for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IRSR_SSC0_F 0x00020000
++/** SSC Error Interrupt
++    Software control for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IRSR_SSC0_E 0x00010000
++/** SSC Receive Interrupt
++    Software control for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IRSR_SSC0_R 0x00008000
++/** SSC Transmit Interrupt
++    Software control for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IRSR_SSC0_T 0x00004000
++/** I2C Peripheral Interrupt
++    Software control for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IRSR_I2C_I2C_P_INT 0x00002000
++/** I2C Error Interrupt
++    Software control for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IRSR_I2C_I2C_ERR_INT 0x00001000
++/** I2C Burst Data Transfer Request
++    Software control for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IRSR_I2C_BREQ_INT 0x00000800
++/** I2C Last Burst Data Transfer Request
++    Software control for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IRSR_I2C_LBREQ_INT 0x00000400
++/** I2C Single Data Transfer Request
++    Software control for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IRSR_I2C_SREQ_INT 0x00000200
++/** I2C Last Single Data Transfer Request
++    Software control for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IRSR_I2C_LSREQ_INT 0x00000100
++/** HOST IF Mailbox1 Transmit Interrupt
++    Software control for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IRSR_HOST_MB1_TIR 0x00000010
++/** HOST IF Mailbox1 Receive Interrupt
++    Software control for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IRSR_HOST_MB1_RIR 0x00000008
++/** HOST IF Mailbox0 Transmit Interrupt
++    Software control for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IRSR_HOST_MB0_TIR 0x00000004
++/** HOST IF Mailbox0 Receive Interrupt
++    Software control for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IRSR_HOST_MB0_RIR 0x00000002
++/** HOST IF Event Interrupt
++    Software control for the corresponding bit in the IM0_ISR register. */
++#define ICU0_IM0_IRSR_HOST_EIR 0x00000001
++
++/* Fields of "IM0 Interrupt Mode Register" */
++/** PCM Transmit Crash Interrupt
++    Type of interrupt. */
++#define ICU0_IM0_IMR_PCM_HW2_CRASH 0x80000000
++/* Indirect Interrupt.
++#define ICU0_IM0_IMR_PCM_HW2_CRASH_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM0_IMR_PCM_HW2_CRASH_DIR 0x80000000
++/** PCM Transmit Interrupt
++    Type of interrupt. */
++#define ICU0_IM0_IMR_PCM_TX 0x40000000
++/* Indirect Interrupt.
++#define ICU0_IM0_IMR_PCM_TX_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM0_IMR_PCM_TX_DIR 0x40000000
++/** PCM Receive Interrupt
++    Type of interrupt. */
++#define ICU0_IM0_IMR_PCM_RX 0x20000000
++/* Indirect Interrupt.
++#define ICU0_IM0_IMR_PCM_RX_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM0_IMR_PCM_RX_DIR 0x20000000
++/** Secure Hash Algorithm Interrupt
++    Type of interrupt. */
++#define ICU0_IM0_IMR_SHA1_HASH 0x10000000
++/* Indirect Interrupt.
++#define ICU0_IM0_IMR_SHA1_HASH_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM0_IMR_SHA1_HASH_DIR 0x10000000
++/** Advanced Encryption Standard Interrupt
++    Type of interrupt. */
++#define ICU0_IM0_IMR_AES_AES 0x08000000
++/* Indirect Interrupt.
++#define ICU0_IM0_IMR_AES_AES_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM0_IMR_AES_AES_DIR 0x08000000
++/** SSC Frame Interrupt
++    Type of interrupt. */
++#define ICU0_IM0_IMR_SSC0_F 0x00020000
++/* Indirect Interrupt.
++#define ICU0_IM0_IMR_SSC0_F_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM0_IMR_SSC0_F_DIR 0x00020000
++/** SSC Error Interrupt
++    Type of interrupt. */
++#define ICU0_IM0_IMR_SSC0_E 0x00010000
++/* Indirect Interrupt.
++#define ICU0_IM0_IMR_SSC0_E_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM0_IMR_SSC0_E_DIR 0x00010000
++/** SSC Receive Interrupt
++    Type of interrupt. */
++#define ICU0_IM0_IMR_SSC0_R 0x00008000
++/* Indirect Interrupt.
++#define ICU0_IM0_IMR_SSC0_R_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM0_IMR_SSC0_R_DIR 0x00008000
++/** SSC Transmit Interrupt
++    Type of interrupt. */
++#define ICU0_IM0_IMR_SSC0_T 0x00004000
++/* Indirect Interrupt.
++#define ICU0_IM0_IMR_SSC0_T_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM0_IMR_SSC0_T_DIR 0x00004000
++/** I2C Peripheral Interrupt
++    Type of interrupt. */
++#define ICU0_IM0_IMR_I2C_I2C_P_INT 0x00002000
++/* Indirect Interrupt.
++#define ICU0_IM0_IMR_I2C_I2C_P_INT_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM0_IMR_I2C_I2C_P_INT_DIR 0x00002000
++/** I2C Error Interrupt
++    Type of interrupt. */
++#define ICU0_IM0_IMR_I2C_I2C_ERR_INT 0x00001000
++/* Indirect Interrupt.
++#define ICU0_IM0_IMR_I2C_I2C_ERR_INT_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM0_IMR_I2C_I2C_ERR_INT_DIR 0x00001000
++/** I2C Burst Data Transfer Request
++    Type of interrupt. */
++#define ICU0_IM0_IMR_I2C_BREQ_INT 0x00000800
++/* Indirect Interrupt.
++#define ICU0_IM0_IMR_I2C_BREQ_INT_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM0_IMR_I2C_BREQ_INT_DIR 0x00000800
++/** I2C Last Burst Data Transfer Request
++    Type of interrupt. */
++#define ICU0_IM0_IMR_I2C_LBREQ_INT 0x00000400
++/* Indirect Interrupt.
++#define ICU0_IM0_IMR_I2C_LBREQ_INT_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM0_IMR_I2C_LBREQ_INT_DIR 0x00000400
++/** I2C Single Data Transfer Request
++    Type of interrupt. */
++#define ICU0_IM0_IMR_I2C_SREQ_INT 0x00000200
++/* Indirect Interrupt.
++#define ICU0_IM0_IMR_I2C_SREQ_INT_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM0_IMR_I2C_SREQ_INT_DIR 0x00000200
++/** I2C Last Single Data Transfer Request
++    Type of interrupt. */
++#define ICU0_IM0_IMR_I2C_LSREQ_INT 0x00000100
++/* Indirect Interrupt.
++#define ICU0_IM0_IMR_I2C_LSREQ_INT_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM0_IMR_I2C_LSREQ_INT_DIR 0x00000100
++/** HOST IF Mailbox1 Transmit Interrupt
++    Type of interrupt. */
++#define ICU0_IM0_IMR_HOST_MB1_TIR 0x00000010
++/* Indirect Interrupt.
++#define ICU0_IM0_IMR_HOST_MB1_TIR_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM0_IMR_HOST_MB1_TIR_DIR 0x00000010
++/** HOST IF Mailbox1 Receive Interrupt
++    Type of interrupt. */
++#define ICU0_IM0_IMR_HOST_MB1_RIR 0x00000008
++/* Indirect Interrupt.
++#define ICU0_IM0_IMR_HOST_MB1_RIR_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM0_IMR_HOST_MB1_RIR_DIR 0x00000008
++/** HOST IF Mailbox0 Transmit Interrupt
++    Type of interrupt. */
++#define ICU0_IM0_IMR_HOST_MB0_TIR 0x00000004
++/* Indirect Interrupt.
++#define ICU0_IM0_IMR_HOST_MB0_TIR_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM0_IMR_HOST_MB0_TIR_DIR 0x00000004
++/** HOST IF Mailbox0 Receive Interrupt
++    Type of interrupt. */
++#define ICU0_IM0_IMR_HOST_MB0_RIR 0x00000002
++/* Indirect Interrupt.
++#define ICU0_IM0_IMR_HOST_MB0_RIR_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM0_IMR_HOST_MB0_RIR_DIR 0x00000002
++/** HOST IF Event Interrupt
++    Type of interrupt. */
++#define ICU0_IM0_IMR_HOST_EIR 0x00000001
++/* Indirect Interrupt.
++#define ICU0_IM0_IMR_HOST_EIR_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM0_IMR_HOST_EIR_DIR 0x00000001
++
++/* Fields of "IM1 Interrupt Status Register" */
++/** Crossbar Error Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM1_ISR_XBAR_ERROR 0x80000000
++/* Nothing
++#define ICU0_IM1_ISR_XBAR_ERROR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM1_ISR_XBAR_ERROR_INTACK 0x80000000
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_ISR_XBAR_ERROR_INTOCC 0x80000000
++/** DDR Controller Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM1_ISR_DDR 0x40000000
++/* Nothing
++#define ICU0_IM1_ISR_DDR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM1_ISR_DDR_INTACK 0x40000000
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_ISR_DDR_INTOCC 0x40000000
++/** FPI Bus Control Unit Interrupt
++    This bit is a direct interrupt. */
++#define ICU0_IM1_ISR_BCU0 0x20000000
++/* Nothing
++#define ICU0_IM1_ISR_BCU0_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM1_ISR_BCU0_INTACK 0x20000000
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_ISR_BCU0_INTOCC 0x20000000
++/** SBIU interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM1_ISR_SBIU0 0x08000000
++/* Nothing
++#define ICU0_IM1_ISR_SBIU0_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM1_ISR_SBIU0_INTACK 0x08000000
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_ISR_SBIU0_INTOCC 0x08000000
++/** Watchdog Prewarning Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM1_ISR_WDT_PIR 0x02000000
++/* Nothing
++#define ICU0_IM1_ISR_WDT_PIR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM1_ISR_WDT_PIR_INTACK 0x02000000
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_ISR_WDT_PIR_INTOCC 0x02000000
++/** Watchdog Access Error Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM1_ISR_WDT_AEIR 0x01000000
++/* Nothing
++#define ICU0_IM1_ISR_WDT_AEIR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM1_ISR_WDT_AEIR_INTACK 0x01000000
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_ISR_WDT_AEIR_INTOCC 0x01000000
++/** SYS GPE Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM1_ISR_SYS_GPE 0x00200000
++/* Nothing
++#define ICU0_IM1_ISR_SYS_GPE_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM1_ISR_SYS_GPE_INTACK 0x00200000
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_ISR_SYS_GPE_INTOCC 0x00200000
++/** SYS1 Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM1_ISR_SYS1 0x00100000
++/* Nothing
++#define ICU0_IM1_ISR_SYS1_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM1_ISR_SYS1_INTACK 0x00100000
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_ISR_SYS1_INTOCC 0x00100000
++/** PMA Interrupt from IntNode of the RX Clk Domain
++    This bit is an indirect interrupt. */
++#define ICU0_IM1_ISR_PMA_RX 0x00020000
++/* Nothing
++#define ICU0_IM1_ISR_PMA_RX_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM1_ISR_PMA_RX_INTACK 0x00020000
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_ISR_PMA_RX_INTOCC 0x00020000
++/** PMA Interrupt from IntNode of the TX Clk Domain
++    This bit is an indirect interrupt. */
++#define ICU0_IM1_ISR_PMA_TX 0x00010000
++/* Nothing
++#define ICU0_IM1_ISR_PMA_TX_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM1_ISR_PMA_TX_INTACK 0x00010000
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_ISR_PMA_TX_INTOCC 0x00010000
++/** PMA Interrupt from IntNode of the 200MHz Domain
++    This bit is an indirect interrupt. */
++#define ICU0_IM1_ISR_PMA_200M 0x00008000
++/* Nothing
++#define ICU0_IM1_ISR_PMA_200M_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM1_ISR_PMA_200M_INTACK 0x00008000
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_ISR_PMA_200M_INTOCC 0x00008000
++/** Time of Day
++    This bit is an indirect interrupt. */
++#define ICU0_IM1_ISR_TOD 0x00004000
++/* Nothing
++#define ICU0_IM1_ISR_TOD_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM1_ISR_TOD_INTACK 0x00004000
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_ISR_TOD_INTOCC 0x00004000
++/** 8kHz root interrupt derived from GPON interface
++    This bit is a direct interrupt. */
++#define ICU0_IM1_ISR_FSC_ROOT 0x00002000
++/* Nothing
++#define ICU0_IM1_ISR_FSC_ROOT_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM1_ISR_FSC_ROOT_INTACK 0x00002000
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_ISR_FSC_ROOT_INTOCC 0x00002000
++/** FSC Timer Interrupt 1
++    Delayed version of FSCROOT. This bit is a direct interrupt. */
++#define ICU0_IM1_ISR_FSCT_CMP1 0x00001000
++/* Nothing
++#define ICU0_IM1_ISR_FSCT_CMP1_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM1_ISR_FSCT_CMP1_INTACK 0x00001000
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_ISR_FSCT_CMP1_INTOCC 0x00001000
++/** FSC Timer Interrupt 0
++    Delayed version of FSCROOT. This bit is a direct interrupt. */
++#define ICU0_IM1_ISR_FSCT_CMP0 0x00000800
++/* Nothing
++#define ICU0_IM1_ISR_FSCT_CMP0_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM1_ISR_FSCT_CMP0_INTACK 0x00000800
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_ISR_FSCT_CMP0_INTOCC 0x00000800
++/** 8kHz backup interrupt derived from core-PLL
++    This bit is an indirect interrupt. */
++#define ICU0_IM1_ISR_FSC_BKP 0x00000400
++/* Nothing
++#define ICU0_IM1_ISR_FSC_BKP_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM1_ISR_FSC_BKP_INTACK 0x00000400
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_ISR_FSC_BKP_INTOCC 0x00000400
++/** External Interrupt from GPIO P4
++    This bit is an indirect interrupt. */
++#define ICU0_IM1_ISR_P4 0x00000100
++/* Nothing
++#define ICU0_IM1_ISR_P4_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM1_ISR_P4_INTACK 0x00000100
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_ISR_P4_INTOCC 0x00000100
++/** External Interrupt from GPIO P3
++    This bit is an indirect interrupt. */
++#define ICU0_IM1_ISR_P3 0x00000080
++/* Nothing
++#define ICU0_IM1_ISR_P3_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM1_ISR_P3_INTACK 0x00000080
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_ISR_P3_INTOCC 0x00000080
++/** External Interrupt from GPIO P2
++    This bit is an indirect interrupt. */
++#define ICU0_IM1_ISR_P2 0x00000040
++/* Nothing
++#define ICU0_IM1_ISR_P2_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM1_ISR_P2_INTACK 0x00000040
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_ISR_P2_INTOCC 0x00000040
++/** External Interrupt from GPIO P1
++    This bit is an indirect interrupt. */
++#define ICU0_IM1_ISR_P1 0x00000020
++/* Nothing
++#define ICU0_IM1_ISR_P1_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM1_ISR_P1_INTACK 0x00000020
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_ISR_P1_INTOCC 0x00000020
++/** External Interrupt from GPIO P0
++    This bit is an indirect interrupt. */
++#define ICU0_IM1_ISR_P0 0x00000010
++/* Nothing
++#define ICU0_IM1_ISR_P0_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM1_ISR_P0_INTACK 0x00000010
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_ISR_P0_INTOCC 0x00000010
++/** EBU Serial Flash Busy
++    This bit is an indirect interrupt. */
++#define ICU0_IM1_ISR_EBU_SF_BUSY 0x00000004
++/* Nothing
++#define ICU0_IM1_ISR_EBU_SF_BUSY_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM1_ISR_EBU_SF_BUSY_INTACK 0x00000004
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_ISR_EBU_SF_BUSY_INTOCC 0x00000004
++/** EBU Serial Flash Command Overwrite Error
++    This bit is an indirect interrupt. */
++#define ICU0_IM1_ISR_EBU_SF_COVERR 0x00000002
++/* Nothing
++#define ICU0_IM1_ISR_EBU_SF_COVERR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM1_ISR_EBU_SF_COVERR_INTACK 0x00000002
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_ISR_EBU_SF_COVERR_INTOCC 0x00000002
++/** EBU Serial Flash Command Error
++    This bit is an indirect interrupt. */
++#define ICU0_IM1_ISR_EBU_SF_CMDERR 0x00000001
++/* Nothing
++#define ICU0_IM1_ISR_EBU_SF_CMDERR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM1_ISR_EBU_SF_CMDERR_INTACK 0x00000001
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_ISR_EBU_SF_CMDERR_INTOCC 0x00000001
++
++/* Fields of "IM1 Interrupt Enable Register" */
++/** Crossbar Error Interrupt
++    Interrupt enable bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IER_XBAR_ERROR 0x80000000
++/* Disable
++#define ICU0_IM1_IER_XBAR_ERROR_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM1_IER_XBAR_ERROR_EN 0x80000000
++/** DDR Controller Interrupt
++    Interrupt enable bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IER_DDR 0x40000000
++/* Disable
++#define ICU0_IM1_IER_DDR_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM1_IER_DDR_EN 0x40000000
++/** FPI Bus Control Unit Interrupt
++    Interrupt enable bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IER_BCU0 0x20000000
++/* Disable
++#define ICU0_IM1_IER_BCU0_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM1_IER_BCU0_EN 0x20000000
++/** SBIU interrupt
++    Interrupt enable bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IER_SBIU0 0x08000000
++/* Disable
++#define ICU0_IM1_IER_SBIU0_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM1_IER_SBIU0_EN 0x08000000
++/** Watchdog Prewarning Interrupt
++    Interrupt enable bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IER_WDT_PIR 0x02000000
++/* Disable
++#define ICU0_IM1_IER_WDT_PIR_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM1_IER_WDT_PIR_EN 0x02000000
++/** Watchdog Access Error Interrupt
++    Interrupt enable bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IER_WDT_AEIR 0x01000000
++/* Disable
++#define ICU0_IM1_IER_WDT_AEIR_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM1_IER_WDT_AEIR_EN 0x01000000
++/** SYS GPE Interrupt
++    Interrupt enable bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IER_SYS_GPE 0x00200000
++/* Disable
++#define ICU0_IM1_IER_SYS_GPE_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM1_IER_SYS_GPE_EN 0x00200000
++/** SYS1 Interrupt
++    Interrupt enable bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IER_SYS1 0x00100000
++/* Disable
++#define ICU0_IM1_IER_SYS1_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM1_IER_SYS1_EN 0x00100000
++/** PMA Interrupt from IntNode of the RX Clk Domain
++    Interrupt enable bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IER_PMA_RX 0x00020000
++/* Disable
++#define ICU0_IM1_IER_PMA_RX_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM1_IER_PMA_RX_EN 0x00020000
++/** PMA Interrupt from IntNode of the TX Clk Domain
++    Interrupt enable bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IER_PMA_TX 0x00010000
++/* Disable
++#define ICU0_IM1_IER_PMA_TX_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM1_IER_PMA_TX_EN 0x00010000
++/** PMA Interrupt from IntNode of the 200MHz Domain
++    Interrupt enable bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IER_PMA_200M 0x00008000
++/* Disable
++#define ICU0_IM1_IER_PMA_200M_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM1_IER_PMA_200M_EN 0x00008000
++/** Time of Day
++    Interrupt enable bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IER_TOD 0x00004000
++/* Disable
++#define ICU0_IM1_IER_TOD_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM1_IER_TOD_EN 0x00004000
++/** 8kHz root interrupt derived from GPON interface
++    Interrupt enable bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IER_FSC_ROOT 0x00002000
++/* Disable
++#define ICU0_IM1_IER_FSC_ROOT_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM1_IER_FSC_ROOT_EN 0x00002000
++/** FSC Timer Interrupt 1
++    Interrupt enable bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IER_FSCT_CMP1 0x00001000
++/* Disable
++#define ICU0_IM1_IER_FSCT_CMP1_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM1_IER_FSCT_CMP1_EN 0x00001000
++/** FSC Timer Interrupt 0
++    Interrupt enable bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IER_FSCT_CMP0 0x00000800
++/* Disable
++#define ICU0_IM1_IER_FSCT_CMP0_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM1_IER_FSCT_CMP0_EN 0x00000800
++/** 8kHz backup interrupt derived from core-PLL
++    Interrupt enable bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IER_FSC_BKP 0x00000400
++/* Disable
++#define ICU0_IM1_IER_FSC_BKP_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM1_IER_FSC_BKP_EN 0x00000400
++/** External Interrupt from GPIO P4
++    Interrupt enable bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IER_P4 0x00000100
++/* Disable
++#define ICU0_IM1_IER_P4_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM1_IER_P4_EN 0x00000100
++/** External Interrupt from GPIO P3
++    Interrupt enable bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IER_P3 0x00000080
++/* Disable
++#define ICU0_IM1_IER_P3_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM1_IER_P3_EN 0x00000080
++/** External Interrupt from GPIO P2
++    Interrupt enable bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IER_P2 0x00000040
++/* Disable
++#define ICU0_IM1_IER_P2_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM1_IER_P2_EN 0x00000040
++/** External Interrupt from GPIO P1
++    Interrupt enable bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IER_P1 0x00000020
++/* Disable
++#define ICU0_IM1_IER_P1_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM1_IER_P1_EN 0x00000020
++/** External Interrupt from GPIO P0
++    Interrupt enable bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IER_P0 0x00000010
++/* Disable
++#define ICU0_IM1_IER_P0_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM1_IER_P0_EN 0x00000010
++/** EBU Serial Flash Busy
++    Interrupt enable bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IER_EBU_SF_BUSY 0x00000004
++/* Disable
++#define ICU0_IM1_IER_EBU_SF_BUSY_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM1_IER_EBU_SF_BUSY_EN 0x00000004
++/** EBU Serial Flash Command Overwrite Error
++    Interrupt enable bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IER_EBU_SF_COVERR 0x00000002
++/* Disable
++#define ICU0_IM1_IER_EBU_SF_COVERR_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM1_IER_EBU_SF_COVERR_EN 0x00000002
++/** EBU Serial Flash Command Error
++    Interrupt enable bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IER_EBU_SF_CMDERR 0x00000001
++/* Disable
++#define ICU0_IM1_IER_EBU_SF_CMDERR_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM1_IER_EBU_SF_CMDERR_EN 0x00000001
++
++/* Fields of "IM1 Interrupt Output Status Register" */
++/** Crossbar Error Interrupt
++    Masked interrupt bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IOSR_XBAR_ERROR 0x80000000
++/* Nothing
++#define ICU0_IM1_IOSR_XBAR_ERROR_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_IOSR_XBAR_ERROR_INTOCC 0x80000000
++/** DDR Controller Interrupt
++    Masked interrupt bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IOSR_DDR 0x40000000
++/* Nothing
++#define ICU0_IM1_IOSR_DDR_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_IOSR_DDR_INTOCC 0x40000000
++/** FPI Bus Control Unit Interrupt
++    Masked interrupt bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IOSR_BCU0 0x20000000
++/* Nothing
++#define ICU0_IM1_IOSR_BCU0_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_IOSR_BCU0_INTOCC 0x20000000
++/** SBIU interrupt
++    Masked interrupt bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IOSR_SBIU0 0x08000000
++/* Nothing
++#define ICU0_IM1_IOSR_SBIU0_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_IOSR_SBIU0_INTOCC 0x08000000
++/** Watchdog Prewarning Interrupt
++    Masked interrupt bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IOSR_WDT_PIR 0x02000000
++/* Nothing
++#define ICU0_IM1_IOSR_WDT_PIR_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_IOSR_WDT_PIR_INTOCC 0x02000000
++/** Watchdog Access Error Interrupt
++    Masked interrupt bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IOSR_WDT_AEIR 0x01000000
++/* Nothing
++#define ICU0_IM1_IOSR_WDT_AEIR_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_IOSR_WDT_AEIR_INTOCC 0x01000000
++/** SYS GPE Interrupt
++    Masked interrupt bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IOSR_SYS_GPE 0x00200000
++/* Nothing
++#define ICU0_IM1_IOSR_SYS_GPE_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_IOSR_SYS_GPE_INTOCC 0x00200000
++/** SYS1 Interrupt
++    Masked interrupt bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IOSR_SYS1 0x00100000
++/* Nothing
++#define ICU0_IM1_IOSR_SYS1_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_IOSR_SYS1_INTOCC 0x00100000
++/** PMA Interrupt from IntNode of the RX Clk Domain
++    Masked interrupt bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IOSR_PMA_RX 0x00020000
++/* Nothing
++#define ICU0_IM1_IOSR_PMA_RX_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_IOSR_PMA_RX_INTOCC 0x00020000
++/** PMA Interrupt from IntNode of the TX Clk Domain
++    Masked interrupt bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IOSR_PMA_TX 0x00010000
++/* Nothing
++#define ICU0_IM1_IOSR_PMA_TX_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_IOSR_PMA_TX_INTOCC 0x00010000
++/** PMA Interrupt from IntNode of the 200MHz Domain
++    Masked interrupt bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IOSR_PMA_200M 0x00008000
++/* Nothing
++#define ICU0_IM1_IOSR_PMA_200M_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_IOSR_PMA_200M_INTOCC 0x00008000
++/** Time of Day
++    Masked interrupt bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IOSR_TOD 0x00004000
++/* Nothing
++#define ICU0_IM1_IOSR_TOD_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_IOSR_TOD_INTOCC 0x00004000
++/** 8kHz root interrupt derived from GPON interface
++    Masked interrupt bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IOSR_FSC_ROOT 0x00002000
++/* Nothing
++#define ICU0_IM1_IOSR_FSC_ROOT_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_IOSR_FSC_ROOT_INTOCC 0x00002000
++/** FSC Timer Interrupt 1
++    Masked interrupt bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IOSR_FSCT_CMP1 0x00001000
++/* Nothing
++#define ICU0_IM1_IOSR_FSCT_CMP1_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_IOSR_FSCT_CMP1_INTOCC 0x00001000
++/** FSC Timer Interrupt 0
++    Masked interrupt bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IOSR_FSCT_CMP0 0x00000800
++/* Nothing
++#define ICU0_IM1_IOSR_FSCT_CMP0_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_IOSR_FSCT_CMP0_INTOCC 0x00000800
++/** 8kHz backup interrupt derived from core-PLL
++    Masked interrupt bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IOSR_FSC_BKP 0x00000400
++/* Nothing
++#define ICU0_IM1_IOSR_FSC_BKP_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_IOSR_FSC_BKP_INTOCC 0x00000400
++/** External Interrupt from GPIO P4
++    Masked interrupt bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IOSR_P4 0x00000100
++/* Nothing
++#define ICU0_IM1_IOSR_P4_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_IOSR_P4_INTOCC 0x00000100
++/** External Interrupt from GPIO P3
++    Masked interrupt bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IOSR_P3 0x00000080
++/* Nothing
++#define ICU0_IM1_IOSR_P3_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_IOSR_P3_INTOCC 0x00000080
++/** External Interrupt from GPIO P2
++    Masked interrupt bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IOSR_P2 0x00000040
++/* Nothing
++#define ICU0_IM1_IOSR_P2_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_IOSR_P2_INTOCC 0x00000040
++/** External Interrupt from GPIO P1
++    Masked interrupt bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IOSR_P1 0x00000020
++/* Nothing
++#define ICU0_IM1_IOSR_P1_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_IOSR_P1_INTOCC 0x00000020
++/** External Interrupt from GPIO P0
++    Masked interrupt bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IOSR_P0 0x00000010
++/* Nothing
++#define ICU0_IM1_IOSR_P0_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_IOSR_P0_INTOCC 0x00000010
++/** EBU Serial Flash Busy
++    Masked interrupt bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IOSR_EBU_SF_BUSY 0x00000004
++/* Nothing
++#define ICU0_IM1_IOSR_EBU_SF_BUSY_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_IOSR_EBU_SF_BUSY_INTOCC 0x00000004
++/** EBU Serial Flash Command Overwrite Error
++    Masked interrupt bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IOSR_EBU_SF_COVERR 0x00000002
++/* Nothing
++#define ICU0_IM1_IOSR_EBU_SF_COVERR_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_IOSR_EBU_SF_COVERR_INTOCC 0x00000002
++/** EBU Serial Flash Command Error
++    Masked interrupt bit for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IOSR_EBU_SF_CMDERR 0x00000001
++/* Nothing
++#define ICU0_IM1_IOSR_EBU_SF_CMDERR_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM1_IOSR_EBU_SF_CMDERR_INTOCC 0x00000001
++
++/* Fields of "IM1 Interrupt Request Set Register" */
++/** Crossbar Error Interrupt
++    Software control for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IRSR_XBAR_ERROR 0x80000000
++/** DDR Controller Interrupt
++    Software control for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IRSR_DDR 0x40000000
++/** FPI Bus Control Unit Interrupt
++    Software control for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IRSR_BCU0 0x20000000
++/** SBIU interrupt
++    Software control for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IRSR_SBIU0 0x08000000
++/** Watchdog Prewarning Interrupt
++    Software control for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IRSR_WDT_PIR 0x02000000
++/** Watchdog Access Error Interrupt
++    Software control for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IRSR_WDT_AEIR 0x01000000
++/** SYS GPE Interrupt
++    Software control for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IRSR_SYS_GPE 0x00200000
++/** SYS1 Interrupt
++    Software control for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IRSR_SYS1 0x00100000
++/** PMA Interrupt from IntNode of the RX Clk Domain
++    Software control for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IRSR_PMA_RX 0x00020000
++/** PMA Interrupt from IntNode of the TX Clk Domain
++    Software control for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IRSR_PMA_TX 0x00010000
++/** PMA Interrupt from IntNode of the 200MHz Domain
++    Software control for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IRSR_PMA_200M 0x00008000
++/** Time of Day
++    Software control for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IRSR_TOD 0x00004000
++/** 8kHz root interrupt derived from GPON interface
++    Software control for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IRSR_FSC_ROOT 0x00002000
++/** FSC Timer Interrupt 1
++    Software control for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IRSR_FSCT_CMP1 0x00001000
++/** FSC Timer Interrupt 0
++    Software control for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IRSR_FSCT_CMP0 0x00000800
++/** 8kHz backup interrupt derived from core-PLL
++    Software control for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IRSR_FSC_BKP 0x00000400
++/** External Interrupt from GPIO P4
++    Software control for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IRSR_P4 0x00000100
++/** External Interrupt from GPIO P3
++    Software control for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IRSR_P3 0x00000080
++/** External Interrupt from GPIO P2
++    Software control for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IRSR_P2 0x00000040
++/** External Interrupt from GPIO P1
++    Software control for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IRSR_P1 0x00000020
++/** External Interrupt from GPIO P0
++    Software control for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IRSR_P0 0x00000010
++/** EBU Serial Flash Busy
++    Software control for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IRSR_EBU_SF_BUSY 0x00000004
++/** EBU Serial Flash Command Overwrite Error
++    Software control for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IRSR_EBU_SF_COVERR 0x00000002
++/** EBU Serial Flash Command Error
++    Software control for the corresponding bit in the IM1_ISR register. */
++#define ICU0_IM1_IRSR_EBU_SF_CMDERR 0x00000001
++
++/* Fields of "IM1 Interrupt Mode Register" */
++/** Crossbar Error Interrupt
++    Type of interrupt. */
++#define ICU0_IM1_IMR_XBAR_ERROR 0x80000000
++/* Indirect Interrupt.
++#define ICU0_IM1_IMR_XBAR_ERROR_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM1_IMR_XBAR_ERROR_DIR 0x80000000
++/** DDR Controller Interrupt
++    Type of interrupt. */
++#define ICU0_IM1_IMR_DDR 0x40000000
++/* Indirect Interrupt.
++#define ICU0_IM1_IMR_DDR_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM1_IMR_DDR_DIR 0x40000000
++/** FPI Bus Control Unit Interrupt
++    Type of interrupt. */
++#define ICU0_IM1_IMR_BCU0 0x20000000
++/* Indirect Interrupt.
++#define ICU0_IM1_IMR_BCU0_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM1_IMR_BCU0_DIR 0x20000000
++/** SBIU interrupt
++    Type of interrupt. */
++#define ICU0_IM1_IMR_SBIU0 0x08000000
++/* Indirect Interrupt.
++#define ICU0_IM1_IMR_SBIU0_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM1_IMR_SBIU0_DIR 0x08000000
++/** Watchdog Prewarning Interrupt
++    Type of interrupt. */
++#define ICU0_IM1_IMR_WDT_PIR 0x02000000
++/* Indirect Interrupt.
++#define ICU0_IM1_IMR_WDT_PIR_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM1_IMR_WDT_PIR_DIR 0x02000000
++/** Watchdog Access Error Interrupt
++    Type of interrupt. */
++#define ICU0_IM1_IMR_WDT_AEIR 0x01000000
++/* Indirect Interrupt.
++#define ICU0_IM1_IMR_WDT_AEIR_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM1_IMR_WDT_AEIR_DIR 0x01000000
++/** SYS GPE Interrupt
++    Type of interrupt. */
++#define ICU0_IM1_IMR_SYS_GPE 0x00200000
++/* Indirect Interrupt.
++#define ICU0_IM1_IMR_SYS_GPE_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM1_IMR_SYS_GPE_DIR 0x00200000
++/** SYS1 Interrupt
++    Type of interrupt. */
++#define ICU0_IM1_IMR_SYS1 0x00100000
++/* Indirect Interrupt.
++#define ICU0_IM1_IMR_SYS1_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM1_IMR_SYS1_DIR 0x00100000
++/** PMA Interrupt from IntNode of the RX Clk Domain
++    Type of interrupt. */
++#define ICU0_IM1_IMR_PMA_RX 0x00020000
++/* Indirect Interrupt.
++#define ICU0_IM1_IMR_PMA_RX_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM1_IMR_PMA_RX_DIR 0x00020000
++/** PMA Interrupt from IntNode of the TX Clk Domain
++    Type of interrupt. */
++#define ICU0_IM1_IMR_PMA_TX 0x00010000
++/* Indirect Interrupt.
++#define ICU0_IM1_IMR_PMA_TX_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM1_IMR_PMA_TX_DIR 0x00010000
++/** PMA Interrupt from IntNode of the 200MHz Domain
++    Type of interrupt. */
++#define ICU0_IM1_IMR_PMA_200M 0x00008000
++/* Indirect Interrupt.
++#define ICU0_IM1_IMR_PMA_200M_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM1_IMR_PMA_200M_DIR 0x00008000
++/** Time of Day
++    Type of interrupt. */
++#define ICU0_IM1_IMR_TOD 0x00004000
++/* Indirect Interrupt.
++#define ICU0_IM1_IMR_TOD_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM1_IMR_TOD_DIR 0x00004000
++/** 8kHz root interrupt derived from GPON interface
++    Type of interrupt. */
++#define ICU0_IM1_IMR_FSC_ROOT 0x00002000
++/* Indirect Interrupt.
++#define ICU0_IM1_IMR_FSC_ROOT_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM1_IMR_FSC_ROOT_DIR 0x00002000
++/** FSC Timer Interrupt 1
++    Type of interrupt. */
++#define ICU0_IM1_IMR_FSCT_CMP1 0x00001000
++/* Indirect Interrupt.
++#define ICU0_IM1_IMR_FSCT_CMP1_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM1_IMR_FSCT_CMP1_DIR 0x00001000
++/** FSC Timer Interrupt 0
++    Type of interrupt. */
++#define ICU0_IM1_IMR_FSCT_CMP0 0x00000800
++/* Indirect Interrupt.
++#define ICU0_IM1_IMR_FSCT_CMP0_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM1_IMR_FSCT_CMP0_DIR 0x00000800
++/** 8kHz backup interrupt derived from core-PLL
++    Type of interrupt. */
++#define ICU0_IM1_IMR_FSC_BKP 0x00000400
++/* Indirect Interrupt.
++#define ICU0_IM1_IMR_FSC_BKP_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM1_IMR_FSC_BKP_DIR 0x00000400
++/** External Interrupt from GPIO P4
++    Type of interrupt. */
++#define ICU0_IM1_IMR_P4 0x00000100
++/* Indirect Interrupt.
++#define ICU0_IM1_IMR_P4_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM1_IMR_P4_DIR 0x00000100
++/** External Interrupt from GPIO P3
++    Type of interrupt. */
++#define ICU0_IM1_IMR_P3 0x00000080
++/* Indirect Interrupt.
++#define ICU0_IM1_IMR_P3_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM1_IMR_P3_DIR 0x00000080
++/** External Interrupt from GPIO P2
++    Type of interrupt. */
++#define ICU0_IM1_IMR_P2 0x00000040
++/* Indirect Interrupt.
++#define ICU0_IM1_IMR_P2_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM1_IMR_P2_DIR 0x00000040
++/** External Interrupt from GPIO P1
++    Type of interrupt. */
++#define ICU0_IM1_IMR_P1 0x00000020
++/* Indirect Interrupt.
++#define ICU0_IM1_IMR_P1_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM1_IMR_P1_DIR 0x00000020
++/** External Interrupt from GPIO P0
++    Type of interrupt. */
++#define ICU0_IM1_IMR_P0 0x00000010
++/* Indirect Interrupt.
++#define ICU0_IM1_IMR_P0_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM1_IMR_P0_DIR 0x00000010
++/** EBU Serial Flash Busy
++    Type of interrupt. */
++#define ICU0_IM1_IMR_EBU_SF_BUSY 0x00000004
++/* Indirect Interrupt.
++#define ICU0_IM1_IMR_EBU_SF_BUSY_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM1_IMR_EBU_SF_BUSY_DIR 0x00000004
++/** EBU Serial Flash Command Overwrite Error
++    Type of interrupt. */
++#define ICU0_IM1_IMR_EBU_SF_COVERR 0x00000002
++/* Indirect Interrupt.
++#define ICU0_IM1_IMR_EBU_SF_COVERR_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM1_IMR_EBU_SF_COVERR_DIR 0x00000002
++/** EBU Serial Flash Command Error
++    Type of interrupt. */
++#define ICU0_IM1_IMR_EBU_SF_CMDERR 0x00000001
++/* Indirect Interrupt.
++#define ICU0_IM1_IMR_EBU_SF_CMDERR_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM1_IMR_EBU_SF_CMDERR_DIR 0x00000001
++
++/* Fields of "IM2 Interrupt Status Register" */
++/** EIM Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM2_ISR_EIM 0x80000000
++/* Nothing
++#define ICU0_IM2_ISR_EIM_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM2_ISR_EIM_INTACK 0x80000000
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_ISR_EIM_INTOCC 0x80000000
++/** GTC Upstream Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM2_ISR_GTC_US 0x40000000
++/* Nothing
++#define ICU0_IM2_ISR_GTC_US_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM2_ISR_GTC_US_INTACK 0x40000000
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_ISR_GTC_US_INTOCC 0x40000000
++/** GTC Downstream Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM2_ISR_GTC_DS 0x20000000
++/* Nothing
++#define ICU0_IM2_ISR_GTC_DS_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM2_ISR_GTC_DS_INTACK 0x20000000
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_ISR_GTC_DS_INTOCC 0x20000000
++/** TBM Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM2_ISR_TBM 0x00400000
++/* Nothing
++#define ICU0_IM2_ISR_TBM_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM2_ISR_TBM_INTACK 0x00400000
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_ISR_TBM_INTOCC 0x00400000
++/** Dispatcher Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM2_ISR_DISP 0x00200000
++/* Nothing
++#define ICU0_IM2_ISR_DISP_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM2_ISR_DISP_INTACK 0x00200000
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_ISR_DISP_INTOCC 0x00200000
++/** CONFIG Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM2_ISR_CONFIG 0x00100000
++/* Nothing
++#define ICU0_IM2_ISR_CONFIG_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM2_ISR_CONFIG_INTACK 0x00100000
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_ISR_CONFIG_INTOCC 0x00100000
++/** CONFIG Break Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM2_ISR_CONFIG_BREAK 0x00080000
++/* Nothing
++#define ICU0_IM2_ISR_CONFIG_BREAK_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM2_ISR_CONFIG_BREAK_INTACK 0x00080000
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_ISR_CONFIG_BREAK_INTOCC 0x00080000
++/** OCTRLC Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM2_ISR_OCTRLC 0x00040000
++/* Nothing
++#define ICU0_IM2_ISR_OCTRLC_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM2_ISR_OCTRLC_INTACK 0x00040000
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_ISR_OCTRLC_INTOCC 0x00040000
++/** ICTRLC 1 Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM2_ISR_ICTRLC1 0x00020000
++/* Nothing
++#define ICU0_IM2_ISR_ICTRLC1_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM2_ISR_ICTRLC1_INTACK 0x00020000
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_ISR_ICTRLC1_INTOCC 0x00020000
++/** ICTRLC 0 Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM2_ISR_ICTRLC0 0x00010000
++/* Nothing
++#define ICU0_IM2_ISR_ICTRLC0_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM2_ISR_ICTRLC0_INTACK 0x00010000
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_ISR_ICTRLC0_INTOCC 0x00010000
++/** LINK 1 Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM2_ISR_LINK1 0x00004000
++/* Nothing
++#define ICU0_IM2_ISR_LINK1_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM2_ISR_LINK1_INTACK 0x00004000
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_ISR_LINK1_INTOCC 0x00004000
++/** TMU Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM2_ISR_TMU 0x00001000
++/* Nothing
++#define ICU0_IM2_ISR_TMU_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM2_ISR_TMU_INTACK 0x00001000
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_ISR_TMU_INTOCC 0x00001000
++/** FSQM Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM2_ISR_FSQM 0x00000800
++/* Nothing
++#define ICU0_IM2_ISR_FSQM_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM2_ISR_FSQM_INTACK 0x00000800
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_ISR_FSQM_INTOCC 0x00000800
++/** IQM Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM2_ISR_IQM 0x00000400
++/* Nothing
++#define ICU0_IM2_ISR_IQM_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM2_ISR_IQM_INTACK 0x00000400
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_ISR_IQM_INTOCC 0x00000400
++/** OCTRLG Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM2_ISR_OCTRLG 0x00000200
++/* Nothing
++#define ICU0_IM2_ISR_OCTRLG_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM2_ISR_OCTRLG_INTACK 0x00000200
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_ISR_OCTRLG_INTOCC 0x00000200
++/** OCTRLL 3 Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM2_ISR_OCTRLL3 0x00000080
++/* Nothing
++#define ICU0_IM2_ISR_OCTRLL3_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM2_ISR_OCTRLL3_INTACK 0x00000080
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_ISR_OCTRLL3_INTOCC 0x00000080
++/** OCTRLL 2 Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM2_ISR_OCTRLL2 0x00000040
++/* Nothing
++#define ICU0_IM2_ISR_OCTRLL2_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM2_ISR_OCTRLL2_INTACK 0x00000040
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_ISR_OCTRLL2_INTOCC 0x00000040
++/** OCTRLL 1 Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM2_ISR_OCTRLL1 0x00000020
++/* Nothing
++#define ICU0_IM2_ISR_OCTRLL1_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM2_ISR_OCTRLL1_INTACK 0x00000020
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_ISR_OCTRLL1_INTOCC 0x00000020
++/** OCTRLL 0 Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM2_ISR_OCTRLL0 0x00000010
++/* Nothing
++#define ICU0_IM2_ISR_OCTRLL0_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM2_ISR_OCTRLL0_INTACK 0x00000010
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_ISR_OCTRLL0_INTOCC 0x00000010
++/** ICTRLL 3 Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM2_ISR_ICTRLL3 0x00000008
++/* Nothing
++#define ICU0_IM2_ISR_ICTRLL3_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM2_ISR_ICTRLL3_INTACK 0x00000008
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_ISR_ICTRLL3_INTOCC 0x00000008
++/** ICTRLL 2 Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM2_ISR_ICTRLL2 0x00000004
++/* Nothing
++#define ICU0_IM2_ISR_ICTRLL2_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM2_ISR_ICTRLL2_INTACK 0x00000004
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_ISR_ICTRLL2_INTOCC 0x00000004
++/** ICTRLL 1 Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM2_ISR_ICTRLL1 0x00000002
++/* Nothing
++#define ICU0_IM2_ISR_ICTRLL1_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM2_ISR_ICTRLL1_INTACK 0x00000002
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_ISR_ICTRLL1_INTOCC 0x00000002
++/** ICTRLL 0 Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM2_ISR_ICTRLL0 0x00000001
++/* Nothing
++#define ICU0_IM2_ISR_ICTRLL0_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM2_ISR_ICTRLL0_INTACK 0x00000001
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_ISR_ICTRLL0_INTOCC 0x00000001
++
++/* Fields of "IM2 Interrupt Enable Register" */
++/** EIM Interrupt
++    Interrupt enable bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IER_EIM 0x80000000
++/* Disable
++#define ICU0_IM2_IER_EIM_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM2_IER_EIM_EN 0x80000000
++/** GTC Upstream Interrupt
++    Interrupt enable bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IER_GTC_US 0x40000000
++/* Disable
++#define ICU0_IM2_IER_GTC_US_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM2_IER_GTC_US_EN 0x40000000
++/** GTC Downstream Interrupt
++    Interrupt enable bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IER_GTC_DS 0x20000000
++/* Disable
++#define ICU0_IM2_IER_GTC_DS_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM2_IER_GTC_DS_EN 0x20000000
++/** TBM Interrupt
++    Interrupt enable bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IER_TBM 0x00400000
++/* Disable
++#define ICU0_IM2_IER_TBM_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM2_IER_TBM_EN 0x00400000
++/** Dispatcher Interrupt
++    Interrupt enable bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IER_DISP 0x00200000
++/* Disable
++#define ICU0_IM2_IER_DISP_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM2_IER_DISP_EN 0x00200000
++/** CONFIG Interrupt
++    Interrupt enable bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IER_CONFIG 0x00100000
++/* Disable
++#define ICU0_IM2_IER_CONFIG_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM2_IER_CONFIG_EN 0x00100000
++/** CONFIG Break Interrupt
++    Interrupt enable bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IER_CONFIG_BREAK 0x00080000
++/* Disable
++#define ICU0_IM2_IER_CONFIG_BREAK_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM2_IER_CONFIG_BREAK_EN 0x00080000
++/** OCTRLC Interrupt
++    Interrupt enable bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IER_OCTRLC 0x00040000
++/* Disable
++#define ICU0_IM2_IER_OCTRLC_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM2_IER_OCTRLC_EN 0x00040000
++/** ICTRLC 1 Interrupt
++    Interrupt enable bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IER_ICTRLC1 0x00020000
++/* Disable
++#define ICU0_IM2_IER_ICTRLC1_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM2_IER_ICTRLC1_EN 0x00020000
++/** ICTRLC 0 Interrupt
++    Interrupt enable bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IER_ICTRLC0 0x00010000
++/* Disable
++#define ICU0_IM2_IER_ICTRLC0_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM2_IER_ICTRLC0_EN 0x00010000
++/** LINK 1 Interrupt
++    Interrupt enable bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IER_LINK1 0x00004000
++/* Disable
++#define ICU0_IM2_IER_LINK1_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM2_IER_LINK1_EN 0x00004000
++/** TMU Interrupt
++    Interrupt enable bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IER_TMU 0x00001000
++/* Disable
++#define ICU0_IM2_IER_TMU_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM2_IER_TMU_EN 0x00001000
++/** FSQM Interrupt
++    Interrupt enable bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IER_FSQM 0x00000800
++/* Disable
++#define ICU0_IM2_IER_FSQM_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM2_IER_FSQM_EN 0x00000800
++/** IQM Interrupt
++    Interrupt enable bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IER_IQM 0x00000400
++/* Disable
++#define ICU0_IM2_IER_IQM_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM2_IER_IQM_EN 0x00000400
++/** OCTRLG Interrupt
++    Interrupt enable bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IER_OCTRLG 0x00000200
++/* Disable
++#define ICU0_IM2_IER_OCTRLG_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM2_IER_OCTRLG_EN 0x00000200
++/** OCTRLL 3 Interrupt
++    Interrupt enable bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IER_OCTRLL3 0x00000080
++/* Disable
++#define ICU0_IM2_IER_OCTRLL3_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM2_IER_OCTRLL3_EN 0x00000080
++/** OCTRLL 2 Interrupt
++    Interrupt enable bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IER_OCTRLL2 0x00000040
++/* Disable
++#define ICU0_IM2_IER_OCTRLL2_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM2_IER_OCTRLL2_EN 0x00000040
++/** OCTRLL 1 Interrupt
++    Interrupt enable bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IER_OCTRLL1 0x00000020
++/* Disable
++#define ICU0_IM2_IER_OCTRLL1_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM2_IER_OCTRLL1_EN 0x00000020
++/** OCTRLL 0 Interrupt
++    Interrupt enable bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IER_OCTRLL0 0x00000010
++/* Disable
++#define ICU0_IM2_IER_OCTRLL0_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM2_IER_OCTRLL0_EN 0x00000010
++/** ICTRLL 3 Interrupt
++    Interrupt enable bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IER_ICTRLL3 0x00000008
++/* Disable
++#define ICU0_IM2_IER_ICTRLL3_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM2_IER_ICTRLL3_EN 0x00000008
++/** ICTRLL 2 Interrupt
++    Interrupt enable bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IER_ICTRLL2 0x00000004
++/* Disable
++#define ICU0_IM2_IER_ICTRLL2_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM2_IER_ICTRLL2_EN 0x00000004
++/** ICTRLL 1 Interrupt
++    Interrupt enable bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IER_ICTRLL1 0x00000002
++/* Disable
++#define ICU0_IM2_IER_ICTRLL1_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM2_IER_ICTRLL1_EN 0x00000002
++/** ICTRLL 0 Interrupt
++    Interrupt enable bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IER_ICTRLL0 0x00000001
++/* Disable
++#define ICU0_IM2_IER_ICTRLL0_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM2_IER_ICTRLL0_EN 0x00000001
++
++/* Fields of "IM2 Interrupt Output Status Register" */
++/** EIM Interrupt
++    Masked interrupt bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IOSR_EIM 0x80000000
++/* Nothing
++#define ICU0_IM2_IOSR_EIM_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_IOSR_EIM_INTOCC 0x80000000
++/** GTC Upstream Interrupt
++    Masked interrupt bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IOSR_GTC_US 0x40000000
++/* Nothing
++#define ICU0_IM2_IOSR_GTC_US_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_IOSR_GTC_US_INTOCC 0x40000000
++/** GTC Downstream Interrupt
++    Masked interrupt bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IOSR_GTC_DS 0x20000000
++/* Nothing
++#define ICU0_IM2_IOSR_GTC_DS_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_IOSR_GTC_DS_INTOCC 0x20000000
++/** TBM Interrupt
++    Masked interrupt bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IOSR_TBM 0x00400000
++/* Nothing
++#define ICU0_IM2_IOSR_TBM_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_IOSR_TBM_INTOCC 0x00400000
++/** Dispatcher Interrupt
++    Masked interrupt bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IOSR_DISP 0x00200000
++/* Nothing
++#define ICU0_IM2_IOSR_DISP_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_IOSR_DISP_INTOCC 0x00200000
++/** CONFIG Interrupt
++    Masked interrupt bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IOSR_CONFIG 0x00100000
++/* Nothing
++#define ICU0_IM2_IOSR_CONFIG_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_IOSR_CONFIG_INTOCC 0x00100000
++/** CONFIG Break Interrupt
++    Masked interrupt bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IOSR_CONFIG_BREAK 0x00080000
++/* Nothing
++#define ICU0_IM2_IOSR_CONFIG_BREAK_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_IOSR_CONFIG_BREAK_INTOCC 0x00080000
++/** OCTRLC Interrupt
++    Masked interrupt bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IOSR_OCTRLC 0x00040000
++/* Nothing
++#define ICU0_IM2_IOSR_OCTRLC_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_IOSR_OCTRLC_INTOCC 0x00040000
++/** ICTRLC 1 Interrupt
++    Masked interrupt bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IOSR_ICTRLC1 0x00020000
++/* Nothing
++#define ICU0_IM2_IOSR_ICTRLC1_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_IOSR_ICTRLC1_INTOCC 0x00020000
++/** ICTRLC 0 Interrupt
++    Masked interrupt bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IOSR_ICTRLC0 0x00010000
++/* Nothing
++#define ICU0_IM2_IOSR_ICTRLC0_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_IOSR_ICTRLC0_INTOCC 0x00010000
++/** LINK 1 Interrupt
++    Masked interrupt bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IOSR_LINK1 0x00004000
++/* Nothing
++#define ICU0_IM2_IOSR_LINK1_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_IOSR_LINK1_INTOCC 0x00004000
++/** TMU Interrupt
++    Masked interrupt bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IOSR_TMU 0x00001000
++/* Nothing
++#define ICU0_IM2_IOSR_TMU_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_IOSR_TMU_INTOCC 0x00001000
++/** FSQM Interrupt
++    Masked interrupt bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IOSR_FSQM 0x00000800
++/* Nothing
++#define ICU0_IM2_IOSR_FSQM_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_IOSR_FSQM_INTOCC 0x00000800
++/** IQM Interrupt
++    Masked interrupt bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IOSR_IQM 0x00000400
++/* Nothing
++#define ICU0_IM2_IOSR_IQM_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_IOSR_IQM_INTOCC 0x00000400
++/** OCTRLG Interrupt
++    Masked interrupt bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IOSR_OCTRLG 0x00000200
++/* Nothing
++#define ICU0_IM2_IOSR_OCTRLG_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_IOSR_OCTRLG_INTOCC 0x00000200
++/** OCTRLL 3 Interrupt
++    Masked interrupt bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IOSR_OCTRLL3 0x00000080
++/* Nothing
++#define ICU0_IM2_IOSR_OCTRLL3_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_IOSR_OCTRLL3_INTOCC 0x00000080
++/** OCTRLL 2 Interrupt
++    Masked interrupt bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IOSR_OCTRLL2 0x00000040
++/* Nothing
++#define ICU0_IM2_IOSR_OCTRLL2_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_IOSR_OCTRLL2_INTOCC 0x00000040
++/** OCTRLL 1 Interrupt
++    Masked interrupt bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IOSR_OCTRLL1 0x00000020
++/* Nothing
++#define ICU0_IM2_IOSR_OCTRLL1_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_IOSR_OCTRLL1_INTOCC 0x00000020
++/** OCTRLL 0 Interrupt
++    Masked interrupt bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IOSR_OCTRLL0 0x00000010
++/* Nothing
++#define ICU0_IM2_IOSR_OCTRLL0_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_IOSR_OCTRLL0_INTOCC 0x00000010
++/** ICTRLL 3 Interrupt
++    Masked interrupt bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IOSR_ICTRLL3 0x00000008
++/* Nothing
++#define ICU0_IM2_IOSR_ICTRLL3_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_IOSR_ICTRLL3_INTOCC 0x00000008
++/** ICTRLL 2 Interrupt
++    Masked interrupt bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IOSR_ICTRLL2 0x00000004
++/* Nothing
++#define ICU0_IM2_IOSR_ICTRLL2_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_IOSR_ICTRLL2_INTOCC 0x00000004
++/** ICTRLL 1 Interrupt
++    Masked interrupt bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IOSR_ICTRLL1 0x00000002
++/* Nothing
++#define ICU0_IM2_IOSR_ICTRLL1_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_IOSR_ICTRLL1_INTOCC 0x00000002
++/** ICTRLL 0 Interrupt
++    Masked interrupt bit for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IOSR_ICTRLL0 0x00000001
++/* Nothing
++#define ICU0_IM2_IOSR_ICTRLL0_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM2_IOSR_ICTRLL0_INTOCC 0x00000001
++
++/* Fields of "IM2 Interrupt Request Set Register" */
++/** EIM Interrupt
++    Software control for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IRSR_EIM 0x80000000
++/** GTC Upstream Interrupt
++    Software control for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IRSR_GTC_US 0x40000000
++/** GTC Downstream Interrupt
++    Software control for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IRSR_GTC_DS 0x20000000
++/** TBM Interrupt
++    Software control for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IRSR_TBM 0x00400000
++/** Dispatcher Interrupt
++    Software control for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IRSR_DISP 0x00200000
++/** CONFIG Interrupt
++    Software control for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IRSR_CONFIG 0x00100000
++/** CONFIG Break Interrupt
++    Software control for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IRSR_CONFIG_BREAK 0x00080000
++/** OCTRLC Interrupt
++    Software control for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IRSR_OCTRLC 0x00040000
++/** ICTRLC 1 Interrupt
++    Software control for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IRSR_ICTRLC1 0x00020000
++/** ICTRLC 0 Interrupt
++    Software control for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IRSR_ICTRLC0 0x00010000
++/** LINK 1 Interrupt
++    Software control for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IRSR_LINK1 0x00004000
++/** TMU Interrupt
++    Software control for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IRSR_TMU 0x00001000
++/** FSQM Interrupt
++    Software control for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IRSR_FSQM 0x00000800
++/** IQM Interrupt
++    Software control for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IRSR_IQM 0x00000400
++/** OCTRLG Interrupt
++    Software control for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IRSR_OCTRLG 0x00000200
++/** OCTRLL 3 Interrupt
++    Software control for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IRSR_OCTRLL3 0x00000080
++/** OCTRLL 2 Interrupt
++    Software control for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IRSR_OCTRLL2 0x00000040
++/** OCTRLL 1 Interrupt
++    Software control for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IRSR_OCTRLL1 0x00000020
++/** OCTRLL 0 Interrupt
++    Software control for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IRSR_OCTRLL0 0x00000010
++/** ICTRLL 3 Interrupt
++    Software control for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IRSR_ICTRLL3 0x00000008
++/** ICTRLL 2 Interrupt
++    Software control for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IRSR_ICTRLL2 0x00000004
++/** ICTRLL 1 Interrupt
++    Software control for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IRSR_ICTRLL1 0x00000002
++/** ICTRLL 0 Interrupt
++    Software control for the corresponding bit in the IM2_ISR register. */
++#define ICU0_IM2_IRSR_ICTRLL0 0x00000001
++
++/* Fields of "IM2 Interrupt Mode Register" */
++/** EIM Interrupt
++    Type of interrupt. */
++#define ICU0_IM2_IMR_EIM 0x80000000
++/* Indirect Interrupt.
++#define ICU0_IM2_IMR_EIM_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM2_IMR_EIM_DIR 0x80000000
++/** GTC Upstream Interrupt
++    Type of interrupt. */
++#define ICU0_IM2_IMR_GTC_US 0x40000000
++/* Indirect Interrupt.
++#define ICU0_IM2_IMR_GTC_US_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM2_IMR_GTC_US_DIR 0x40000000
++/** GTC Downstream Interrupt
++    Type of interrupt. */
++#define ICU0_IM2_IMR_GTC_DS 0x20000000
++/* Indirect Interrupt.
++#define ICU0_IM2_IMR_GTC_DS_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM2_IMR_GTC_DS_DIR 0x20000000
++/** TBM Interrupt
++    Type of interrupt. */
++#define ICU0_IM2_IMR_TBM 0x00400000
++/* Indirect Interrupt.
++#define ICU0_IM2_IMR_TBM_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM2_IMR_TBM_DIR 0x00400000
++/** Dispatcher Interrupt
++    Type of interrupt. */
++#define ICU0_IM2_IMR_DISP 0x00200000
++/* Indirect Interrupt.
++#define ICU0_IM2_IMR_DISP_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM2_IMR_DISP_DIR 0x00200000
++/** CONFIG Interrupt
++    Type of interrupt. */
++#define ICU0_IM2_IMR_CONFIG 0x00100000
++/* Indirect Interrupt.
++#define ICU0_IM2_IMR_CONFIG_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM2_IMR_CONFIG_DIR 0x00100000
++/** CONFIG Break Interrupt
++    Type of interrupt. */
++#define ICU0_IM2_IMR_CONFIG_BREAK 0x00080000
++/* Indirect Interrupt.
++#define ICU0_IM2_IMR_CONFIG_BREAK_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM2_IMR_CONFIG_BREAK_DIR 0x00080000
++/** OCTRLC Interrupt
++    Type of interrupt. */
++#define ICU0_IM2_IMR_OCTRLC 0x00040000
++/* Indirect Interrupt.
++#define ICU0_IM2_IMR_OCTRLC_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM2_IMR_OCTRLC_DIR 0x00040000
++/** ICTRLC 1 Interrupt
++    Type of interrupt. */
++#define ICU0_IM2_IMR_ICTRLC1 0x00020000
++/* Indirect Interrupt.
++#define ICU0_IM2_IMR_ICTRLC1_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM2_IMR_ICTRLC1_DIR 0x00020000
++/** ICTRLC 0 Interrupt
++    Type of interrupt. */
++#define ICU0_IM2_IMR_ICTRLC0 0x00010000
++/* Indirect Interrupt.
++#define ICU0_IM2_IMR_ICTRLC0_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM2_IMR_ICTRLC0_DIR 0x00010000
++/** LINK 1 Interrupt
++    Type of interrupt. */
++#define ICU0_IM2_IMR_LINK1 0x00004000
++/* Indirect Interrupt.
++#define ICU0_IM2_IMR_LINK1_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM2_IMR_LINK1_DIR 0x00004000
++/** TMU Interrupt
++    Type of interrupt. */
++#define ICU0_IM2_IMR_TMU 0x00001000
++/* Indirect Interrupt.
++#define ICU0_IM2_IMR_TMU_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM2_IMR_TMU_DIR 0x00001000
++/** FSQM Interrupt
++    Type of interrupt. */
++#define ICU0_IM2_IMR_FSQM 0x00000800
++/* Indirect Interrupt.
++#define ICU0_IM2_IMR_FSQM_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM2_IMR_FSQM_DIR 0x00000800
++/** IQM Interrupt
++    Type of interrupt. */
++#define ICU0_IM2_IMR_IQM 0x00000400
++/* Indirect Interrupt.
++#define ICU0_IM2_IMR_IQM_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM2_IMR_IQM_DIR 0x00000400
++/** OCTRLG Interrupt
++    Type of interrupt. */
++#define ICU0_IM2_IMR_OCTRLG 0x00000200
++/* Indirect Interrupt.
++#define ICU0_IM2_IMR_OCTRLG_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM2_IMR_OCTRLG_DIR 0x00000200
++/** OCTRLL 3 Interrupt
++    Type of interrupt. */
++#define ICU0_IM2_IMR_OCTRLL3 0x00000080
++/* Indirect Interrupt.
++#define ICU0_IM2_IMR_OCTRLL3_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM2_IMR_OCTRLL3_DIR 0x00000080
++/** OCTRLL 2 Interrupt
++    Type of interrupt. */
++#define ICU0_IM2_IMR_OCTRLL2 0x00000040
++/* Indirect Interrupt.
++#define ICU0_IM2_IMR_OCTRLL2_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM2_IMR_OCTRLL2_DIR 0x00000040
++/** OCTRLL 1 Interrupt
++    Type of interrupt. */
++#define ICU0_IM2_IMR_OCTRLL1 0x00000020
++/* Indirect Interrupt.
++#define ICU0_IM2_IMR_OCTRLL1_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM2_IMR_OCTRLL1_DIR 0x00000020
++/** OCTRLL 0 Interrupt
++    Type of interrupt. */
++#define ICU0_IM2_IMR_OCTRLL0 0x00000010
++/* Indirect Interrupt.
++#define ICU0_IM2_IMR_OCTRLL0_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM2_IMR_OCTRLL0_DIR 0x00000010
++/** ICTRLL 3 Interrupt
++    Type of interrupt. */
++#define ICU0_IM2_IMR_ICTRLL3 0x00000008
++/* Indirect Interrupt.
++#define ICU0_IM2_IMR_ICTRLL3_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM2_IMR_ICTRLL3_DIR 0x00000008
++/** ICTRLL 2 Interrupt
++    Type of interrupt. */
++#define ICU0_IM2_IMR_ICTRLL2 0x00000004
++/* Indirect Interrupt.
++#define ICU0_IM2_IMR_ICTRLL2_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM2_IMR_ICTRLL2_DIR 0x00000004
++/** ICTRLL 1 Interrupt
++    Type of interrupt. */
++#define ICU0_IM2_IMR_ICTRLL1 0x00000002
++/* Indirect Interrupt.
++#define ICU0_IM2_IMR_ICTRLL1_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM2_IMR_ICTRLL1_DIR 0x00000002
++/** ICTRLL 0 Interrupt
++    Type of interrupt. */
++#define ICU0_IM2_IMR_ICTRLL0 0x00000001
++/* Indirect Interrupt.
++#define ICU0_IM2_IMR_ICTRLL0_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM2_IMR_ICTRLL0_DIR 0x00000001
++
++/* Fields of "IM3 Interrupt Status Register" */
++/** DFEV0, Channel 0 General Purpose Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM3_ISR_DFEV0_1GP 0x80000000
++/* Nothing
++#define ICU0_IM3_ISR_DFEV0_1GP_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM3_ISR_DFEV0_1GP_INTACK 0x80000000
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_ISR_DFEV0_1GP_INTOCC 0x80000000
++/** DFEV0, Channel 0 Receive Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM3_ISR_DFEV0_1RX 0x40000000
++/* Nothing
++#define ICU0_IM3_ISR_DFEV0_1RX_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM3_ISR_DFEV0_1RX_INTACK 0x40000000
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_ISR_DFEV0_1RX_INTOCC 0x40000000
++/** DFEV0, Channel 0 Transmit Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM3_ISR_DFEV0_1TX 0x20000000
++/* Nothing
++#define ICU0_IM3_ISR_DFEV0_1TX_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM3_ISR_DFEV0_1TX_INTACK 0x20000000
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_ISR_DFEV0_1TX_INTOCC 0x20000000
++/** DFEV0, Channel 1 General Purpose Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM3_ISR_DFEV0_2GP 0x10000000
++/* Nothing
++#define ICU0_IM3_ISR_DFEV0_2GP_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM3_ISR_DFEV0_2GP_INTACK 0x10000000
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_ISR_DFEV0_2GP_INTOCC 0x10000000
++/** DFEV0, Channel 1 Receive Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM3_ISR_DFEV0_2RX 0x08000000
++/* Nothing
++#define ICU0_IM3_ISR_DFEV0_2RX_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM3_ISR_DFEV0_2RX_INTACK 0x08000000
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_ISR_DFEV0_2RX_INTOCC 0x08000000
++/** DFEV0, Channel 1 Transmit Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM3_ISR_DFEV0_2TX 0x04000000
++/* Nothing
++#define ICU0_IM3_ISR_DFEV0_2TX_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM3_ISR_DFEV0_2TX_INTACK 0x04000000
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_ISR_DFEV0_2TX_INTOCC 0x04000000
++/** GPTC Timer/Counter 3B Interrupt
++    This bit is a direct interrupt. */
++#define ICU0_IM3_ISR_GPTC_TC3B 0x00200000
++/* Nothing
++#define ICU0_IM3_ISR_GPTC_TC3B_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM3_ISR_GPTC_TC3B_INTACK 0x00200000
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_ISR_GPTC_TC3B_INTOCC 0x00200000
++/** GPTC Timer/Counter 3A Interrupt
++    This bit is a direct interrupt. */
++#define ICU0_IM3_ISR_GPTC_TC3A 0x00100000
++/* Nothing
++#define ICU0_IM3_ISR_GPTC_TC3A_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM3_ISR_GPTC_TC3A_INTACK 0x00100000
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_ISR_GPTC_TC3A_INTOCC 0x00100000
++/** GPTC Timer/Counter 2B Interrupt
++    This bit is a direct interrupt. */
++#define ICU0_IM3_ISR_GPTC_TC2B 0x00080000
++/* Nothing
++#define ICU0_IM3_ISR_GPTC_TC2B_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM3_ISR_GPTC_TC2B_INTACK 0x00080000
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_ISR_GPTC_TC2B_INTOCC 0x00080000
++/** GPTC Timer/Counter 2A Interrupt
++    This bit is a direct interrupt. */
++#define ICU0_IM3_ISR_GPTC_TC2A 0x00040000
++/* Nothing
++#define ICU0_IM3_ISR_GPTC_TC2A_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM3_ISR_GPTC_TC2A_INTACK 0x00040000
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_ISR_GPTC_TC2A_INTOCC 0x00040000
++/** GPTC Timer/Counter 1B Interrupt
++    This bit is a direct interrupt. */
++#define ICU0_IM3_ISR_GPTC_TC1B 0x00020000
++/* Nothing
++#define ICU0_IM3_ISR_GPTC_TC1B_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM3_ISR_GPTC_TC1B_INTACK 0x00020000
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_ISR_GPTC_TC1B_INTOCC 0x00020000
++/** GPTC Timer/Counter 1A Interrupt
++    This bit is a direct interrupt. */
++#define ICU0_IM3_ISR_GPTC_TC1A 0x00010000
++/* Nothing
++#define ICU0_IM3_ISR_GPTC_TC1A_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM3_ISR_GPTC_TC1A_INTACK 0x00010000
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_ISR_GPTC_TC1A_INTOCC 0x00010000
++/** ASC1 Soft Flow Control Interrupt
++    This bit is a direct interrupt. */
++#define ICU0_IM3_ISR_ASC1_SFC 0x00008000
++/* Nothing
++#define ICU0_IM3_ISR_ASC1_SFC_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM3_ISR_ASC1_SFC_INTACK 0x00008000
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_ISR_ASC1_SFC_INTOCC 0x00008000
++/** ASC1 Modem Status Interrupt
++    This bit is a direct interrupt. */
++#define ICU0_IM3_ISR_ASC1_MS 0x00004000
++/* Nothing
++#define ICU0_IM3_ISR_ASC1_MS_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM3_ISR_ASC1_MS_INTACK 0x00004000
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_ISR_ASC1_MS_INTOCC 0x00004000
++/** ASC1 Autobaud Detection Interrupt
++    This bit is a direct interrupt. */
++#define ICU0_IM3_ISR_ASC1_ABDET 0x00002000
++/* Nothing
++#define ICU0_IM3_ISR_ASC1_ABDET_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM3_ISR_ASC1_ABDET_INTACK 0x00002000
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_ISR_ASC1_ABDET_INTOCC 0x00002000
++/** ASC1 Autobaud Start Interrupt
++    This bit is a direct interrupt. */
++#define ICU0_IM3_ISR_ASC1_ABST 0x00001000
++/* Nothing
++#define ICU0_IM3_ISR_ASC1_ABST_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM3_ISR_ASC1_ABST_INTACK 0x00001000
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_ISR_ASC1_ABST_INTOCC 0x00001000
++/** ASC1 Transmit Buffer Interrupt
++    This bit is a direct interrupt. */
++#define ICU0_IM3_ISR_ASC1_TB 0x00000800
++/* Nothing
++#define ICU0_IM3_ISR_ASC1_TB_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM3_ISR_ASC1_TB_INTACK 0x00000800
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_ISR_ASC1_TB_INTOCC 0x00000800
++/** ASC1 Error Interrupt
++    This bit is a direct interrupt. */
++#define ICU0_IM3_ISR_ASC1_E 0x00000400
++/* Nothing
++#define ICU0_IM3_ISR_ASC1_E_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM3_ISR_ASC1_E_INTACK 0x00000400
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_ISR_ASC1_E_INTOCC 0x00000400
++/** ASC1 Receive Interrupt
++    This bit is a direct interrupt. */
++#define ICU0_IM3_ISR_ASC1_R 0x00000200
++/* Nothing
++#define ICU0_IM3_ISR_ASC1_R_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM3_ISR_ASC1_R_INTACK 0x00000200
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_ISR_ASC1_R_INTOCC 0x00000200
++/** ASC1 Transmit Interrupt
++    This bit is a direct interrupt. */
++#define ICU0_IM3_ISR_ASC1_T 0x00000100
++/* Nothing
++#define ICU0_IM3_ISR_ASC1_T_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM3_ISR_ASC1_T_INTACK 0x00000100
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_ISR_ASC1_T_INTOCC 0x00000100
++/** ASC0 Soft Flow Control Interrupt
++    This bit is a direct interrupt. */
++#define ICU0_IM3_ISR_ASC0_SFC 0x00000080
++/* Nothing
++#define ICU0_IM3_ISR_ASC0_SFC_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM3_ISR_ASC0_SFC_INTACK 0x00000080
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_ISR_ASC0_SFC_INTOCC 0x00000080
++/** ASC1 Modem Status Interrupt
++    This bit is a direct interrupt. */
++#define ICU0_IM3_ISR_ASC0_MS 0x00000040
++/* Nothing
++#define ICU0_IM3_ISR_ASC0_MS_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM3_ISR_ASC0_MS_INTACK 0x00000040
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_ISR_ASC0_MS_INTOCC 0x00000040
++/** ASC0 Autobaud Detection Interrupt
++    This bit is a direct interrupt. */
++#define ICU0_IM3_ISR_ASC0_ABDET 0x00000020
++/* Nothing
++#define ICU0_IM3_ISR_ASC0_ABDET_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM3_ISR_ASC0_ABDET_INTACK 0x00000020
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_ISR_ASC0_ABDET_INTOCC 0x00000020
++/** ASC0 Autobaud Start Interrupt
++    This bit is a direct interrupt. */
++#define ICU0_IM3_ISR_ASC0_ABST 0x00000010
++/* Nothing
++#define ICU0_IM3_ISR_ASC0_ABST_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM3_ISR_ASC0_ABST_INTACK 0x00000010
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_ISR_ASC0_ABST_INTOCC 0x00000010
++/** ASC0 Transmit Buffer Interrupt
++    This bit is a direct interrupt. */
++#define ICU0_IM3_ISR_ASC0_TB 0x00000008
++/* Nothing
++#define ICU0_IM3_ISR_ASC0_TB_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM3_ISR_ASC0_TB_INTACK 0x00000008
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_ISR_ASC0_TB_INTOCC 0x00000008
++/** ASC0 Error Interrupt
++    This bit is a direct interrupt. */
++#define ICU0_IM3_ISR_ASC0_E 0x00000004
++/* Nothing
++#define ICU0_IM3_ISR_ASC0_E_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM3_ISR_ASC0_E_INTACK 0x00000004
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_ISR_ASC0_E_INTOCC 0x00000004
++/** ASC0 Receive Interrupt
++    This bit is a direct interrupt. */
++#define ICU0_IM3_ISR_ASC0_R 0x00000002
++/* Nothing
++#define ICU0_IM3_ISR_ASC0_R_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM3_ISR_ASC0_R_INTACK 0x00000002
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_ISR_ASC0_R_INTOCC 0x00000002
++/** ASC0 Transmit Interrupt
++    This bit is a direct interrupt. */
++#define ICU0_IM3_ISR_ASC0_T 0x00000001
++/* Nothing
++#define ICU0_IM3_ISR_ASC0_T_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM3_ISR_ASC0_T_INTACK 0x00000001
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_ISR_ASC0_T_INTOCC 0x00000001
++
++/* Fields of "IM3 Interrupt Enable Register" */
++/** DFEV0, Channel 0 General Purpose Interrupt
++    Interrupt enable bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IER_DFEV0_1GP 0x80000000
++/* Disable
++#define ICU0_IM3_IER_DFEV0_1GP_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM3_IER_DFEV0_1GP_EN 0x80000000
++/** DFEV0, Channel 0 Receive Interrupt
++    Interrupt enable bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IER_DFEV0_1RX 0x40000000
++/* Disable
++#define ICU0_IM3_IER_DFEV0_1RX_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM3_IER_DFEV0_1RX_EN 0x40000000
++/** DFEV0, Channel 0 Transmit Interrupt
++    Interrupt enable bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IER_DFEV0_1TX 0x20000000
++/* Disable
++#define ICU0_IM3_IER_DFEV0_1TX_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM3_IER_DFEV0_1TX_EN 0x20000000
++/** DFEV0, Channel 1 General Purpose Interrupt
++    Interrupt enable bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IER_DFEV0_2GP 0x10000000
++/* Disable
++#define ICU0_IM3_IER_DFEV0_2GP_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM3_IER_DFEV0_2GP_EN 0x10000000
++/** DFEV0, Channel 1 Receive Interrupt
++    Interrupt enable bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IER_DFEV0_2RX 0x08000000
++/* Disable
++#define ICU0_IM3_IER_DFEV0_2RX_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM3_IER_DFEV0_2RX_EN 0x08000000
++/** DFEV0, Channel 1 Transmit Interrupt
++    Interrupt enable bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IER_DFEV0_2TX 0x04000000
++/* Disable
++#define ICU0_IM3_IER_DFEV0_2TX_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM3_IER_DFEV0_2TX_EN 0x04000000
++/** GPTC Timer/Counter 3B Interrupt
++    Interrupt enable bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IER_GPTC_TC3B 0x00200000
++/* Disable
++#define ICU0_IM3_IER_GPTC_TC3B_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM3_IER_GPTC_TC3B_EN 0x00200000
++/** GPTC Timer/Counter 3A Interrupt
++    Interrupt enable bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IER_GPTC_TC3A 0x00100000
++/* Disable
++#define ICU0_IM3_IER_GPTC_TC3A_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM3_IER_GPTC_TC3A_EN 0x00100000
++/** GPTC Timer/Counter 2B Interrupt
++    Interrupt enable bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IER_GPTC_TC2B 0x00080000
++/* Disable
++#define ICU0_IM3_IER_GPTC_TC2B_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM3_IER_GPTC_TC2B_EN 0x00080000
++/** GPTC Timer/Counter 2A Interrupt
++    Interrupt enable bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IER_GPTC_TC2A 0x00040000
++/* Disable
++#define ICU0_IM3_IER_GPTC_TC2A_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM3_IER_GPTC_TC2A_EN 0x00040000
++/** GPTC Timer/Counter 1B Interrupt
++    Interrupt enable bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IER_GPTC_TC1B 0x00020000
++/* Disable
++#define ICU0_IM3_IER_GPTC_TC1B_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM3_IER_GPTC_TC1B_EN 0x00020000
++/** GPTC Timer/Counter 1A Interrupt
++    Interrupt enable bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IER_GPTC_TC1A 0x00010000
++/* Disable
++#define ICU0_IM3_IER_GPTC_TC1A_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM3_IER_GPTC_TC1A_EN 0x00010000
++/** ASC1 Soft Flow Control Interrupt
++    Interrupt enable bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IER_ASC1_SFC 0x00008000
++/* Disable
++#define ICU0_IM3_IER_ASC1_SFC_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM3_IER_ASC1_SFC_EN 0x00008000
++/** ASC1 Modem Status Interrupt
++    Interrupt enable bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IER_ASC1_MS 0x00004000
++/* Disable
++#define ICU0_IM3_IER_ASC1_MS_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM3_IER_ASC1_MS_EN 0x00004000
++/** ASC1 Autobaud Detection Interrupt
++    Interrupt enable bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IER_ASC1_ABDET 0x00002000
++/* Disable
++#define ICU0_IM3_IER_ASC1_ABDET_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM3_IER_ASC1_ABDET_EN 0x00002000
++/** ASC1 Autobaud Start Interrupt
++    Interrupt enable bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IER_ASC1_ABST 0x00001000
++/* Disable
++#define ICU0_IM3_IER_ASC1_ABST_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM3_IER_ASC1_ABST_EN 0x00001000
++/** ASC1 Transmit Buffer Interrupt
++    Interrupt enable bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IER_ASC1_TB 0x00000800
++/* Disable
++#define ICU0_IM3_IER_ASC1_TB_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM3_IER_ASC1_TB_EN 0x00000800
++/** ASC1 Error Interrupt
++    Interrupt enable bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IER_ASC1_E 0x00000400
++/* Disable
++#define ICU0_IM3_IER_ASC1_E_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM3_IER_ASC1_E_EN 0x00000400
++/** ASC1 Receive Interrupt
++    Interrupt enable bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IER_ASC1_R 0x00000200
++/* Disable
++#define ICU0_IM3_IER_ASC1_R_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM3_IER_ASC1_R_EN 0x00000200
++/** ASC1 Transmit Interrupt
++    Interrupt enable bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IER_ASC1_T 0x00000100
++/* Disable
++#define ICU0_IM3_IER_ASC1_T_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM3_IER_ASC1_T_EN 0x00000100
++/** ASC0 Soft Flow Control Interrupt
++    Interrupt enable bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IER_ASC0_SFC 0x00000080
++/* Disable
++#define ICU0_IM3_IER_ASC0_SFC_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM3_IER_ASC0_SFC_EN 0x00000080
++/** ASC1 Modem Status Interrupt
++    Interrupt enable bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IER_ASC0_MS 0x00000040
++/* Disable
++#define ICU0_IM3_IER_ASC0_MS_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM3_IER_ASC0_MS_EN 0x00000040
++/** ASC0 Autobaud Detection Interrupt
++    Interrupt enable bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IER_ASC0_ABDET 0x00000020
++/* Disable
++#define ICU0_IM3_IER_ASC0_ABDET_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM3_IER_ASC0_ABDET_EN 0x00000020
++/** ASC0 Autobaud Start Interrupt
++    Interrupt enable bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IER_ASC0_ABST 0x00000010
++/* Disable
++#define ICU0_IM3_IER_ASC0_ABST_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM3_IER_ASC0_ABST_EN 0x00000010
++/** ASC0 Transmit Buffer Interrupt
++    Interrupt enable bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IER_ASC0_TB 0x00000008
++/* Disable
++#define ICU0_IM3_IER_ASC0_TB_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM3_IER_ASC0_TB_EN 0x00000008
++/** ASC0 Error Interrupt
++    Interrupt enable bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IER_ASC0_E 0x00000004
++/* Disable
++#define ICU0_IM3_IER_ASC0_E_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM3_IER_ASC0_E_EN 0x00000004
++/** ASC0 Receive Interrupt
++    Interrupt enable bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IER_ASC0_R 0x00000002
++/* Disable
++#define ICU0_IM3_IER_ASC0_R_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM3_IER_ASC0_R_EN 0x00000002
++/** ASC0 Transmit Interrupt
++    Interrupt enable bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IER_ASC0_T 0x00000001
++/* Disable
++#define ICU0_IM3_IER_ASC0_T_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM3_IER_ASC0_T_EN 0x00000001
++
++/* Fields of "IM3 Interrupt Output Status Register" */
++/** DFEV0, Channel 0 General Purpose Interrupt
++    Masked interrupt bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IOSR_DFEV0_1GP 0x80000000
++/* Nothing
++#define ICU0_IM3_IOSR_DFEV0_1GP_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_IOSR_DFEV0_1GP_INTOCC 0x80000000
++/** DFEV0, Channel 0 Receive Interrupt
++    Masked interrupt bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IOSR_DFEV0_1RX 0x40000000
++/* Nothing
++#define ICU0_IM3_IOSR_DFEV0_1RX_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_IOSR_DFEV0_1RX_INTOCC 0x40000000
++/** DFEV0, Channel 0 Transmit Interrupt
++    Masked interrupt bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IOSR_DFEV0_1TX 0x20000000
++/* Nothing
++#define ICU0_IM3_IOSR_DFEV0_1TX_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_IOSR_DFEV0_1TX_INTOCC 0x20000000
++/** DFEV0, Channel 1 General Purpose Interrupt
++    Masked interrupt bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IOSR_DFEV0_2GP 0x10000000
++/* Nothing
++#define ICU0_IM3_IOSR_DFEV0_2GP_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_IOSR_DFEV0_2GP_INTOCC 0x10000000
++/** DFEV0, Channel 1 Receive Interrupt
++    Masked interrupt bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IOSR_DFEV0_2RX 0x08000000
++/* Nothing
++#define ICU0_IM3_IOSR_DFEV0_2RX_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_IOSR_DFEV0_2RX_INTOCC 0x08000000
++/** DFEV0, Channel 1 Transmit Interrupt
++    Masked interrupt bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IOSR_DFEV0_2TX 0x04000000
++/* Nothing
++#define ICU0_IM3_IOSR_DFEV0_2TX_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_IOSR_DFEV0_2TX_INTOCC 0x04000000
++/** GPTC Timer/Counter 3B Interrupt
++    Masked interrupt bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IOSR_GPTC_TC3B 0x00200000
++/* Nothing
++#define ICU0_IM3_IOSR_GPTC_TC3B_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_IOSR_GPTC_TC3B_INTOCC 0x00200000
++/** GPTC Timer/Counter 3A Interrupt
++    Masked interrupt bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IOSR_GPTC_TC3A 0x00100000
++/* Nothing
++#define ICU0_IM3_IOSR_GPTC_TC3A_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_IOSR_GPTC_TC3A_INTOCC 0x00100000
++/** GPTC Timer/Counter 2B Interrupt
++    Masked interrupt bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IOSR_GPTC_TC2B 0x00080000
++/* Nothing
++#define ICU0_IM3_IOSR_GPTC_TC2B_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_IOSR_GPTC_TC2B_INTOCC 0x00080000
++/** GPTC Timer/Counter 2A Interrupt
++    Masked interrupt bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IOSR_GPTC_TC2A 0x00040000
++/* Nothing
++#define ICU0_IM3_IOSR_GPTC_TC2A_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_IOSR_GPTC_TC2A_INTOCC 0x00040000
++/** GPTC Timer/Counter 1B Interrupt
++    Masked interrupt bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IOSR_GPTC_TC1B 0x00020000
++/* Nothing
++#define ICU0_IM3_IOSR_GPTC_TC1B_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_IOSR_GPTC_TC1B_INTOCC 0x00020000
++/** GPTC Timer/Counter 1A Interrupt
++    Masked interrupt bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IOSR_GPTC_TC1A 0x00010000
++/* Nothing
++#define ICU0_IM3_IOSR_GPTC_TC1A_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_IOSR_GPTC_TC1A_INTOCC 0x00010000
++/** ASC1 Soft Flow Control Interrupt
++    Masked interrupt bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IOSR_ASC1_SFC 0x00008000
++/* Nothing
++#define ICU0_IM3_IOSR_ASC1_SFC_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_IOSR_ASC1_SFC_INTOCC 0x00008000
++/** ASC1 Modem Status Interrupt
++    Masked interrupt bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IOSR_ASC1_MS 0x00004000
++/* Nothing
++#define ICU0_IM3_IOSR_ASC1_MS_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_IOSR_ASC1_MS_INTOCC 0x00004000
++/** ASC1 Autobaud Detection Interrupt
++    Masked interrupt bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IOSR_ASC1_ABDET 0x00002000
++/* Nothing
++#define ICU0_IM3_IOSR_ASC1_ABDET_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_IOSR_ASC1_ABDET_INTOCC 0x00002000
++/** ASC1 Autobaud Start Interrupt
++    Masked interrupt bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IOSR_ASC1_ABST 0x00001000
++/* Nothing
++#define ICU0_IM3_IOSR_ASC1_ABST_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_IOSR_ASC1_ABST_INTOCC 0x00001000
++/** ASC1 Transmit Buffer Interrupt
++    Masked interrupt bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IOSR_ASC1_TB 0x00000800
++/* Nothing
++#define ICU0_IM3_IOSR_ASC1_TB_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_IOSR_ASC1_TB_INTOCC 0x00000800
++/** ASC1 Error Interrupt
++    Masked interrupt bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IOSR_ASC1_E 0x00000400
++/* Nothing
++#define ICU0_IM3_IOSR_ASC1_E_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_IOSR_ASC1_E_INTOCC 0x00000400
++/** ASC1 Receive Interrupt
++    Masked interrupt bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IOSR_ASC1_R 0x00000200
++/* Nothing
++#define ICU0_IM3_IOSR_ASC1_R_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_IOSR_ASC1_R_INTOCC 0x00000200
++/** ASC1 Transmit Interrupt
++    Masked interrupt bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IOSR_ASC1_T 0x00000100
++/* Nothing
++#define ICU0_IM3_IOSR_ASC1_T_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_IOSR_ASC1_T_INTOCC 0x00000100
++/** ASC0 Soft Flow Control Interrupt
++    Masked interrupt bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IOSR_ASC0_SFC 0x00000080
++/* Nothing
++#define ICU0_IM3_IOSR_ASC0_SFC_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_IOSR_ASC0_SFC_INTOCC 0x00000080
++/** ASC1 Modem Status Interrupt
++    Masked interrupt bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IOSR_ASC0_MS 0x00000040
++/* Nothing
++#define ICU0_IM3_IOSR_ASC0_MS_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_IOSR_ASC0_MS_INTOCC 0x00000040
++/** ASC0 Autobaud Detection Interrupt
++    Masked interrupt bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IOSR_ASC0_ABDET 0x00000020
++/* Nothing
++#define ICU0_IM3_IOSR_ASC0_ABDET_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_IOSR_ASC0_ABDET_INTOCC 0x00000020
++/** ASC0 Autobaud Start Interrupt
++    Masked interrupt bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IOSR_ASC0_ABST 0x00000010
++/* Nothing
++#define ICU0_IM3_IOSR_ASC0_ABST_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_IOSR_ASC0_ABST_INTOCC 0x00000010
++/** ASC0 Transmit Buffer Interrupt
++    Masked interrupt bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IOSR_ASC0_TB 0x00000008
++/* Nothing
++#define ICU0_IM3_IOSR_ASC0_TB_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_IOSR_ASC0_TB_INTOCC 0x00000008
++/** ASC0 Error Interrupt
++    Masked interrupt bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IOSR_ASC0_E 0x00000004
++/* Nothing
++#define ICU0_IM3_IOSR_ASC0_E_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_IOSR_ASC0_E_INTOCC 0x00000004
++/** ASC0 Receive Interrupt
++    Masked interrupt bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IOSR_ASC0_R 0x00000002
++/* Nothing
++#define ICU0_IM3_IOSR_ASC0_R_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_IOSR_ASC0_R_INTOCC 0x00000002
++/** ASC0 Transmit Interrupt
++    Masked interrupt bit for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IOSR_ASC0_T 0x00000001
++/* Nothing
++#define ICU0_IM3_IOSR_ASC0_T_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM3_IOSR_ASC0_T_INTOCC 0x00000001
++
++/* Fields of "IM3 Interrupt Request Set Register" */
++/** DFEV0, Channel 0 General Purpose Interrupt
++    Software control for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IRSR_DFEV0_1GP 0x80000000
++/** DFEV0, Channel 0 Receive Interrupt
++    Software control for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IRSR_DFEV0_1RX 0x40000000
++/** DFEV0, Channel 0 Transmit Interrupt
++    Software control for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IRSR_DFEV0_1TX 0x20000000
++/** DFEV0, Channel 1 General Purpose Interrupt
++    Software control for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IRSR_DFEV0_2GP 0x10000000
++/** DFEV0, Channel 1 Receive Interrupt
++    Software control for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IRSR_DFEV0_2RX 0x08000000
++/** DFEV0, Channel 1 Transmit Interrupt
++    Software control for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IRSR_DFEV0_2TX 0x04000000
++/** GPTC Timer/Counter 3B Interrupt
++    Software control for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IRSR_GPTC_TC3B 0x00200000
++/** GPTC Timer/Counter 3A Interrupt
++    Software control for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IRSR_GPTC_TC3A 0x00100000
++/** GPTC Timer/Counter 2B Interrupt
++    Software control for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IRSR_GPTC_TC2B 0x00080000
++/** GPTC Timer/Counter 2A Interrupt
++    Software control for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IRSR_GPTC_TC2A 0x00040000
++/** GPTC Timer/Counter 1B Interrupt
++    Software control for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IRSR_GPTC_TC1B 0x00020000
++/** GPTC Timer/Counter 1A Interrupt
++    Software control for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IRSR_GPTC_TC1A 0x00010000
++/** ASC1 Soft Flow Control Interrupt
++    Software control for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IRSR_ASC1_SFC 0x00008000
++/** ASC1 Modem Status Interrupt
++    Software control for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IRSR_ASC1_MS 0x00004000
++/** ASC1 Autobaud Detection Interrupt
++    Software control for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IRSR_ASC1_ABDET 0x00002000
++/** ASC1 Autobaud Start Interrupt
++    Software control for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IRSR_ASC1_ABST 0x00001000
++/** ASC1 Transmit Buffer Interrupt
++    Software control for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IRSR_ASC1_TB 0x00000800
++/** ASC1 Error Interrupt
++    Software control for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IRSR_ASC1_E 0x00000400
++/** ASC1 Receive Interrupt
++    Software control for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IRSR_ASC1_R 0x00000200
++/** ASC1 Transmit Interrupt
++    Software control for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IRSR_ASC1_T 0x00000100
++/** ASC0 Soft Flow Control Interrupt
++    Software control for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IRSR_ASC0_SFC 0x00000080
++/** ASC1 Modem Status Interrupt
++    Software control for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IRSR_ASC0_MS 0x00000040
++/** ASC0 Autobaud Detection Interrupt
++    Software control for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IRSR_ASC0_ABDET 0x00000020
++/** ASC0 Autobaud Start Interrupt
++    Software control for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IRSR_ASC0_ABST 0x00000010
++/** ASC0 Transmit Buffer Interrupt
++    Software control for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IRSR_ASC0_TB 0x00000008
++/** ASC0 Error Interrupt
++    Software control for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IRSR_ASC0_E 0x00000004
++/** ASC0 Receive Interrupt
++    Software control for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IRSR_ASC0_R 0x00000002
++/** ASC0 Transmit Interrupt
++    Software control for the corresponding bit in the IM3_ISR register. */
++#define ICU0_IM3_IRSR_ASC0_T 0x00000001
++
++/* Fields of "IM3 Interrupt Mode Register" */
++/** DFEV0, Channel 0 General Purpose Interrupt
++    Type of interrupt. */
++#define ICU0_IM3_IMR_DFEV0_1GP 0x80000000
++/* Indirect Interrupt.
++#define ICU0_IM3_IMR_DFEV0_1GP_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM3_IMR_DFEV0_1GP_DIR 0x80000000
++/** DFEV0, Channel 0 Receive Interrupt
++    Type of interrupt. */
++#define ICU0_IM3_IMR_DFEV0_1RX 0x40000000
++/* Indirect Interrupt.
++#define ICU0_IM3_IMR_DFEV0_1RX_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM3_IMR_DFEV0_1RX_DIR 0x40000000
++/** DFEV0, Channel 0 Transmit Interrupt
++    Type of interrupt. */
++#define ICU0_IM3_IMR_DFEV0_1TX 0x20000000
++/* Indirect Interrupt.
++#define ICU0_IM3_IMR_DFEV0_1TX_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM3_IMR_DFEV0_1TX_DIR 0x20000000
++/** DFEV0, Channel 1 General Purpose Interrupt
++    Type of interrupt. */
++#define ICU0_IM3_IMR_DFEV0_2GP 0x10000000
++/* Indirect Interrupt.
++#define ICU0_IM3_IMR_DFEV0_2GP_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM3_IMR_DFEV0_2GP_DIR 0x10000000
++/** DFEV0, Channel 1 Receive Interrupt
++    Type of interrupt. */
++#define ICU0_IM3_IMR_DFEV0_2RX 0x08000000
++/* Indirect Interrupt.
++#define ICU0_IM3_IMR_DFEV0_2RX_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM3_IMR_DFEV0_2RX_DIR 0x08000000
++/** DFEV0, Channel 1 Transmit Interrupt
++    Type of interrupt. */
++#define ICU0_IM3_IMR_DFEV0_2TX 0x04000000
++/* Indirect Interrupt.
++#define ICU0_IM3_IMR_DFEV0_2TX_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM3_IMR_DFEV0_2TX_DIR 0x04000000
++/** GPTC Timer/Counter 3B Interrupt
++    Type of interrupt. */
++#define ICU0_IM3_IMR_GPTC_TC3B 0x00200000
++/* Indirect Interrupt.
++#define ICU0_IM3_IMR_GPTC_TC3B_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM3_IMR_GPTC_TC3B_DIR 0x00200000
++/** GPTC Timer/Counter 3A Interrupt
++    Type of interrupt. */
++#define ICU0_IM3_IMR_GPTC_TC3A 0x00100000
++/* Indirect Interrupt.
++#define ICU0_IM3_IMR_GPTC_TC3A_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM3_IMR_GPTC_TC3A_DIR 0x00100000
++/** GPTC Timer/Counter 2B Interrupt
++    Type of interrupt. */
++#define ICU0_IM3_IMR_GPTC_TC2B 0x00080000
++/* Indirect Interrupt.
++#define ICU0_IM3_IMR_GPTC_TC2B_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM3_IMR_GPTC_TC2B_DIR 0x00080000
++/** GPTC Timer/Counter 2A Interrupt
++    Type of interrupt. */
++#define ICU0_IM3_IMR_GPTC_TC2A 0x00040000
++/* Indirect Interrupt.
++#define ICU0_IM3_IMR_GPTC_TC2A_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM3_IMR_GPTC_TC2A_DIR 0x00040000
++/** GPTC Timer/Counter 1B Interrupt
++    Type of interrupt. */
++#define ICU0_IM3_IMR_GPTC_TC1B 0x00020000
++/* Indirect Interrupt.
++#define ICU0_IM3_IMR_GPTC_TC1B_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM3_IMR_GPTC_TC1B_DIR 0x00020000
++/** GPTC Timer/Counter 1A Interrupt
++    Type of interrupt. */
++#define ICU0_IM3_IMR_GPTC_TC1A 0x00010000
++/* Indirect Interrupt.
++#define ICU0_IM3_IMR_GPTC_TC1A_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM3_IMR_GPTC_TC1A_DIR 0x00010000
++/** ASC1 Soft Flow Control Interrupt
++    Type of interrupt. */
++#define ICU0_IM3_IMR_ASC1_SFC 0x00008000
++/* Indirect Interrupt.
++#define ICU0_IM3_IMR_ASC1_SFC_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM3_IMR_ASC1_SFC_DIR 0x00008000
++/** ASC1 Modem Status Interrupt
++    Type of interrupt. */
++#define ICU0_IM3_IMR_ASC1_MS 0x00004000
++/* Indirect Interrupt.
++#define ICU0_IM3_IMR_ASC1_MS_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM3_IMR_ASC1_MS_DIR 0x00004000
++/** ASC1 Autobaud Detection Interrupt
++    Type of interrupt. */
++#define ICU0_IM3_IMR_ASC1_ABDET 0x00002000
++/* Indirect Interrupt.
++#define ICU0_IM3_IMR_ASC1_ABDET_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM3_IMR_ASC1_ABDET_DIR 0x00002000
++/** ASC1 Autobaud Start Interrupt
++    Type of interrupt. */
++#define ICU0_IM3_IMR_ASC1_ABST 0x00001000
++/* Indirect Interrupt.
++#define ICU0_IM3_IMR_ASC1_ABST_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM3_IMR_ASC1_ABST_DIR 0x00001000
++/** ASC1 Transmit Buffer Interrupt
++    Type of interrupt. */
++#define ICU0_IM3_IMR_ASC1_TB 0x00000800
++/* Indirect Interrupt.
++#define ICU0_IM3_IMR_ASC1_TB_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM3_IMR_ASC1_TB_DIR 0x00000800
++/** ASC1 Error Interrupt
++    Type of interrupt. */
++#define ICU0_IM3_IMR_ASC1_E 0x00000400
++/* Indirect Interrupt.
++#define ICU0_IM3_IMR_ASC1_E_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM3_IMR_ASC1_E_DIR 0x00000400
++/** ASC1 Receive Interrupt
++    Type of interrupt. */
++#define ICU0_IM3_IMR_ASC1_R 0x00000200
++/* Indirect Interrupt.
++#define ICU0_IM3_IMR_ASC1_R_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM3_IMR_ASC1_R_DIR 0x00000200
++/** ASC1 Transmit Interrupt
++    Type of interrupt. */
++#define ICU0_IM3_IMR_ASC1_T 0x00000100
++/* Indirect Interrupt.
++#define ICU0_IM3_IMR_ASC1_T_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM3_IMR_ASC1_T_DIR 0x00000100
++/** ASC0 Soft Flow Control Interrupt
++    Type of interrupt. */
++#define ICU0_IM3_IMR_ASC0_SFC 0x00000080
++/* Indirect Interrupt.
++#define ICU0_IM3_IMR_ASC0_SFC_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM3_IMR_ASC0_SFC_DIR 0x00000080
++/** ASC1 Modem Status Interrupt
++    Type of interrupt. */
++#define ICU0_IM3_IMR_ASC0_MS 0x00000040
++/* Indirect Interrupt.
++#define ICU0_IM3_IMR_ASC0_MS_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM3_IMR_ASC0_MS_DIR 0x00000040
++/** ASC0 Autobaud Detection Interrupt
++    Type of interrupt. */
++#define ICU0_IM3_IMR_ASC0_ABDET 0x00000020
++/* Indirect Interrupt.
++#define ICU0_IM3_IMR_ASC0_ABDET_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM3_IMR_ASC0_ABDET_DIR 0x00000020
++/** ASC0 Autobaud Start Interrupt
++    Type of interrupt. */
++#define ICU0_IM3_IMR_ASC0_ABST 0x00000010
++/* Indirect Interrupt.
++#define ICU0_IM3_IMR_ASC0_ABST_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM3_IMR_ASC0_ABST_DIR 0x00000010
++/** ASC0 Transmit Buffer Interrupt
++    Type of interrupt. */
++#define ICU0_IM3_IMR_ASC0_TB 0x00000008
++/* Indirect Interrupt.
++#define ICU0_IM3_IMR_ASC0_TB_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM3_IMR_ASC0_TB_DIR 0x00000008
++/** ASC0 Error Interrupt
++    Type of interrupt. */
++#define ICU0_IM3_IMR_ASC0_E 0x00000004
++/* Indirect Interrupt.
++#define ICU0_IM3_IMR_ASC0_E_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM3_IMR_ASC0_E_DIR 0x00000004
++/** ASC0 Receive Interrupt
++    Type of interrupt. */
++#define ICU0_IM3_IMR_ASC0_R 0x00000002
++/* Indirect Interrupt.
++#define ICU0_IM3_IMR_ASC0_R_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM3_IMR_ASC0_R_DIR 0x00000002
++/** ASC0 Transmit Interrupt
++    Type of interrupt. */
++#define ICU0_IM3_IMR_ASC0_T 0x00000001
++/* Indirect Interrupt.
++#define ICU0_IM3_IMR_ASC0_T_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM3_IMR_ASC0_T_DIR 0x00000001
++
++/* Fields of "IM4 Interrupt Status Register" */
++/** VPE0 Performance Monitoring Counter Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM4_ISR_VPE0_PMCIR 0x80000000
++/* Nothing
++#define ICU0_IM4_ISR_VPE0_PMCIR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM4_ISR_VPE0_PMCIR_INTACK 0x80000000
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_ISR_VPE0_PMCIR_INTOCC 0x80000000
++/** VPE0 Error Level Flag Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM4_ISR_VPE0_ERL 0x40000000
++/* Nothing
++#define ICU0_IM4_ISR_VPE0_ERL_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM4_ISR_VPE0_ERL_INTACK 0x40000000
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_ISR_VPE0_ERL_INTOCC 0x40000000
++/** VPE0 Exception Level Flag Interrupt
++    This bit is an indirect interrupt. */
++#define ICU0_IM4_ISR_VPE0_EXL 0x20000000
++/* Nothing
++#define ICU0_IM4_ISR_VPE0_EXL_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM4_ISR_VPE0_EXL_INTACK 0x20000000
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_ISR_VPE0_EXL_INTOCC 0x20000000
++/** MPS Bin. Sem Interrupt to VPE0
++    This bit is an indirect interrupt. */
++#define ICU0_IM4_ISR_MPS_IR8 0x00400000
++/* Nothing
++#define ICU0_IM4_ISR_MPS_IR8_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM4_ISR_MPS_IR8_INTACK 0x00400000
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_ISR_MPS_IR8_INTOCC 0x00400000
++/** MPS Global Interrupt to VPE0
++    This bit is an indirect interrupt. */
++#define ICU0_IM4_ISR_MPS_IR7 0x00200000
++/* Nothing
++#define ICU0_IM4_ISR_MPS_IR7_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM4_ISR_MPS_IR7_INTACK 0x00200000
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_ISR_MPS_IR7_INTOCC 0x00200000
++/** MPS Status Interrupt #6 (VPE1 to VPE0)
++    This bit is an indirect interrupt. */
++#define ICU0_IM4_ISR_MPS_IR6 0x00100000
++/* Nothing
++#define ICU0_IM4_ISR_MPS_IR6_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM4_ISR_MPS_IR6_INTACK 0x00100000
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_ISR_MPS_IR6_INTOCC 0x00100000
++/** MPS Status Interrupt #5 (VPE1 to VPE0)
++    This bit is an indirect interrupt. */
++#define ICU0_IM4_ISR_MPS_IR5 0x00080000
++/* Nothing
++#define ICU0_IM4_ISR_MPS_IR5_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM4_ISR_MPS_IR5_INTACK 0x00080000
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_ISR_MPS_IR5_INTOCC 0x00080000
++/** MPS Status Interrupt #4 (VPE1 to VPE0)
++    This bit is an indirect interrupt. */
++#define ICU0_IM4_ISR_MPS_IR4 0x00040000
++/* Nothing
++#define ICU0_IM4_ISR_MPS_IR4_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM4_ISR_MPS_IR4_INTACK 0x00040000
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_ISR_MPS_IR4_INTOCC 0x00040000
++/** MPS Status Interrupt #3 (VPE1 to VPE0)
++    This bit is an indirect interrupt. */
++#define ICU0_IM4_ISR_MPS_IR3 0x00020000
++/* Nothing
++#define ICU0_IM4_ISR_MPS_IR3_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM4_ISR_MPS_IR3_INTACK 0x00020000
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_ISR_MPS_IR3_INTOCC 0x00020000
++/** MPS Status Interrupt #2 (VPE1 to VPE0)
++    This bit is an indirect interrupt. */
++#define ICU0_IM4_ISR_MPS_IR2 0x00010000
++/* Nothing
++#define ICU0_IM4_ISR_MPS_IR2_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM4_ISR_MPS_IR2_INTACK 0x00010000
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_ISR_MPS_IR2_INTOCC 0x00010000
++/** MPS Status Interrupt #1 (VPE1 to VPE0)
++    This bit is an indirect interrupt. */
++#define ICU0_IM4_ISR_MPS_IR1 0x00008000
++/* Nothing
++#define ICU0_IM4_ISR_MPS_IR1_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM4_ISR_MPS_IR1_INTACK 0x00008000
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_ISR_MPS_IR1_INTOCC 0x00008000
++/** MPS Status Interrupt #0 (VPE1 to VPE0)
++    This bit is an indirect interrupt. */
++#define ICU0_IM4_ISR_MPS_IR0 0x00004000
++/* Nothing
++#define ICU0_IM4_ISR_MPS_IR0_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM4_ISR_MPS_IR0_INTACK 0x00004000
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_ISR_MPS_IR0_INTOCC 0x00004000
++/** TMU Error
++    This bit is an indirect interrupt. */
++#define ICU0_IM4_ISR_TMU_ERR 0x00001000
++/* Nothing
++#define ICU0_IM4_ISR_TMU_ERR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM4_ISR_TMU_ERR_INTACK 0x00001000
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_ISR_TMU_ERR_INTOCC 0x00001000
++/** FSQM Error
++    This bit is an indirect interrupt. */
++#define ICU0_IM4_ISR_FSQM_ERR 0x00000800
++/* Nothing
++#define ICU0_IM4_ISR_FSQM_ERR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM4_ISR_FSQM_ERR_INTACK 0x00000800
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_ISR_FSQM_ERR_INTOCC 0x00000800
++/** IQM Error
++    This bit is an indirect interrupt. */
++#define ICU0_IM4_ISR_IQM_ERR 0x00000400
++/* Nothing
++#define ICU0_IM4_ISR_IQM_ERR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM4_ISR_IQM_ERR_INTACK 0x00000400
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_ISR_IQM_ERR_INTOCC 0x00000400
++/** OCTRLG Error
++    This bit is an indirect interrupt. */
++#define ICU0_IM4_ISR_OCTRLG_ERR 0x00000200
++/* Nothing
++#define ICU0_IM4_ISR_OCTRLG_ERR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM4_ISR_OCTRLG_ERR_INTACK 0x00000200
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_ISR_OCTRLG_ERR_INTOCC 0x00000200
++/** ICTRLG Error
++    This bit is an indirect interrupt. */
++#define ICU0_IM4_ISR_ICTRLG_ERR 0x00000100
++/* Nothing
++#define ICU0_IM4_ISR_ICTRLG_ERR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM4_ISR_ICTRLG_ERR_INTACK 0x00000100
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_ISR_ICTRLG_ERR_INTOCC 0x00000100
++/** OCTRLL 3 Error
++    This bit is an indirect interrupt. */
++#define ICU0_IM4_ISR_OCTRLL3_ERR 0x00000080
++/* Nothing
++#define ICU0_IM4_ISR_OCTRLL3_ERR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM4_ISR_OCTRLL3_ERR_INTACK 0x00000080
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_ISR_OCTRLL3_ERR_INTOCC 0x00000080
++/** OCTRLL 2 Error
++    This bit is an indirect interrupt. */
++#define ICU0_IM4_ISR_OCTRLL2_ERR 0x00000040
++/* Nothing
++#define ICU0_IM4_ISR_OCTRLL2_ERR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM4_ISR_OCTRLL2_ERR_INTACK 0x00000040
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_ISR_OCTRLL2_ERR_INTOCC 0x00000040
++/** OCTRLL 1 Error
++    This bit is an indirect interrupt. */
++#define ICU0_IM4_ISR_OCTRLL1_ERR 0x00000020
++/* Nothing
++#define ICU0_IM4_ISR_OCTRLL1_ERR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM4_ISR_OCTRLL1_ERR_INTACK 0x00000020
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_ISR_OCTRLL1_ERR_INTOCC 0x00000020
++/** OCTRLL 0 Error
++    This bit is an indirect interrupt. */
++#define ICU0_IM4_ISR_OCTRLL0_ERR 0x00000010
++/* Nothing
++#define ICU0_IM4_ISR_OCTRLL0_ERR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM4_ISR_OCTRLL0_ERR_INTACK 0x00000010
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_ISR_OCTRLL0_ERR_INTOCC 0x00000010
++/** ICTRLL 3 Error
++    This bit is an indirect interrupt. */
++#define ICU0_IM4_ISR_ICTRLL3_ERR 0x00000008
++/* Nothing
++#define ICU0_IM4_ISR_ICTRLL3_ERR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM4_ISR_ICTRLL3_ERR_INTACK 0x00000008
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_ISR_ICTRLL3_ERR_INTOCC 0x00000008
++/** ICTRLL 2 Error
++    This bit is an indirect interrupt. */
++#define ICU0_IM4_ISR_ICTRLL2_ERR 0x00000004
++/* Nothing
++#define ICU0_IM4_ISR_ICTRLL2_ERR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM4_ISR_ICTRLL2_ERR_INTACK 0x00000004
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_ISR_ICTRLL2_ERR_INTOCC 0x00000004
++/** ICTRLL 1 Error
++    This bit is an indirect interrupt. */
++#define ICU0_IM4_ISR_ICTRLL1_ERR 0x00000002
++/* Nothing
++#define ICU0_IM4_ISR_ICTRLL1_ERR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM4_ISR_ICTRLL1_ERR_INTACK 0x00000002
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_ISR_ICTRLL1_ERR_INTOCC 0x00000002
++/** ICTRLL 0 Error
++    This bit is an indirect interrupt. */
++#define ICU0_IM4_ISR_ICTRLL0_ERR 0x00000001
++/* Nothing
++#define ICU0_IM4_ISR_ICTRLL0_ERR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define ICU0_IM4_ISR_ICTRLL0_ERR_INTACK 0x00000001
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_ISR_ICTRLL0_ERR_INTOCC 0x00000001
++
++/* Fields of "IM4 Interrupt Enable Register" */
++/** VPE0 Performance Monitoring Counter Interrupt
++    Interrupt enable bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IER_VPE0_PMCIR 0x80000000
++/* Disable
++#define ICU0_IM4_IER_VPE0_PMCIR_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM4_IER_VPE0_PMCIR_EN 0x80000000
++/** VPE0 Error Level Flag Interrupt
++    Interrupt enable bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IER_VPE0_ERL 0x40000000
++/* Disable
++#define ICU0_IM4_IER_VPE0_ERL_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM4_IER_VPE0_ERL_EN 0x40000000
++/** VPE0 Exception Level Flag Interrupt
++    Interrupt enable bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IER_VPE0_EXL 0x20000000
++/* Disable
++#define ICU0_IM4_IER_VPE0_EXL_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM4_IER_VPE0_EXL_EN 0x20000000
++/** MPS Bin. Sem Interrupt to VPE0
++    Interrupt enable bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IER_MPS_IR8 0x00400000
++/* Disable
++#define ICU0_IM4_IER_MPS_IR8_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM4_IER_MPS_IR8_EN 0x00400000
++/** MPS Global Interrupt to VPE0
++    Interrupt enable bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IER_MPS_IR7 0x00200000
++/* Disable
++#define ICU0_IM4_IER_MPS_IR7_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM4_IER_MPS_IR7_EN 0x00200000
++/** MPS Status Interrupt #6 (VPE1 to VPE0)
++    Interrupt enable bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IER_MPS_IR6 0x00100000
++/* Disable
++#define ICU0_IM4_IER_MPS_IR6_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM4_IER_MPS_IR6_EN 0x00100000
++/** MPS Status Interrupt #5 (VPE1 to VPE0)
++    Interrupt enable bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IER_MPS_IR5 0x00080000
++/* Disable
++#define ICU0_IM4_IER_MPS_IR5_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM4_IER_MPS_IR5_EN 0x00080000
++/** MPS Status Interrupt #4 (VPE1 to VPE0)
++    Interrupt enable bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IER_MPS_IR4 0x00040000
++/* Disable
++#define ICU0_IM4_IER_MPS_IR4_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM4_IER_MPS_IR4_EN 0x00040000
++/** MPS Status Interrupt #3 (VPE1 to VPE0)
++    Interrupt enable bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IER_MPS_IR3 0x00020000
++/* Disable
++#define ICU0_IM4_IER_MPS_IR3_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM4_IER_MPS_IR3_EN 0x00020000
++/** MPS Status Interrupt #2 (VPE1 to VPE0)
++    Interrupt enable bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IER_MPS_IR2 0x00010000
++/* Disable
++#define ICU0_IM4_IER_MPS_IR2_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM4_IER_MPS_IR2_EN 0x00010000
++/** MPS Status Interrupt #1 (VPE1 to VPE0)
++    Interrupt enable bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IER_MPS_IR1 0x00008000
++/* Disable
++#define ICU0_IM4_IER_MPS_IR1_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM4_IER_MPS_IR1_EN 0x00008000
++/** MPS Status Interrupt #0 (VPE1 to VPE0)
++    Interrupt enable bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IER_MPS_IR0 0x00004000
++/* Disable
++#define ICU0_IM4_IER_MPS_IR0_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM4_IER_MPS_IR0_EN 0x00004000
++/** TMU Error
++    Interrupt enable bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IER_TMU_ERR 0x00001000
++/* Disable
++#define ICU0_IM4_IER_TMU_ERR_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM4_IER_TMU_ERR_EN 0x00001000
++/** FSQM Error
++    Interrupt enable bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IER_FSQM_ERR 0x00000800
++/* Disable
++#define ICU0_IM4_IER_FSQM_ERR_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM4_IER_FSQM_ERR_EN 0x00000800
++/** IQM Error
++    Interrupt enable bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IER_IQM_ERR 0x00000400
++/* Disable
++#define ICU0_IM4_IER_IQM_ERR_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM4_IER_IQM_ERR_EN 0x00000400
++/** OCTRLG Error
++    Interrupt enable bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IER_OCTRLG_ERR 0x00000200
++/* Disable
++#define ICU0_IM4_IER_OCTRLG_ERR_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM4_IER_OCTRLG_ERR_EN 0x00000200
++/** ICTRLG Error
++    Interrupt enable bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IER_ICTRLG_ERR 0x00000100
++/* Disable
++#define ICU0_IM4_IER_ICTRLG_ERR_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM4_IER_ICTRLG_ERR_EN 0x00000100
++/** OCTRLL 3 Error
++    Interrupt enable bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IER_OCTRLL3_ERR 0x00000080
++/* Disable
++#define ICU0_IM4_IER_OCTRLL3_ERR_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM4_IER_OCTRLL3_ERR_EN 0x00000080
++/** OCTRLL 2 Error
++    Interrupt enable bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IER_OCTRLL2_ERR 0x00000040
++/* Disable
++#define ICU0_IM4_IER_OCTRLL2_ERR_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM4_IER_OCTRLL2_ERR_EN 0x00000040
++/** OCTRLL 1 Error
++    Interrupt enable bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IER_OCTRLL1_ERR 0x00000020
++/* Disable
++#define ICU0_IM4_IER_OCTRLL1_ERR_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM4_IER_OCTRLL1_ERR_EN 0x00000020
++/** OCTRLL 0 Error
++    Interrupt enable bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IER_OCTRLL0_ERR 0x00000010
++/* Disable
++#define ICU0_IM4_IER_OCTRLL0_ERR_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM4_IER_OCTRLL0_ERR_EN 0x00000010
++/** ICTRLL 3 Error
++    Interrupt enable bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IER_ICTRLL3_ERR 0x00000008
++/* Disable
++#define ICU0_IM4_IER_ICTRLL3_ERR_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM4_IER_ICTRLL3_ERR_EN 0x00000008
++/** ICTRLL 2 Error
++    Interrupt enable bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IER_ICTRLL2_ERR 0x00000004
++/* Disable
++#define ICU0_IM4_IER_ICTRLL2_ERR_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM4_IER_ICTRLL2_ERR_EN 0x00000004
++/** ICTRLL 1 Error
++    Interrupt enable bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IER_ICTRLL1_ERR 0x00000002
++/* Disable
++#define ICU0_IM4_IER_ICTRLL1_ERR_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM4_IER_ICTRLL1_ERR_EN 0x00000002
++/** ICTRLL 0 Error
++    Interrupt enable bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IER_ICTRLL0_ERR 0x00000001
++/* Disable
++#define ICU0_IM4_IER_ICTRLL0_ERR_DIS 0x00000000 */
++/** Enable */
++#define ICU0_IM4_IER_ICTRLL0_ERR_EN 0x00000001
++
++/* Fields of "IM4 Interrupt Output Status Register" */
++/** VPE0 Performance Monitoring Counter Interrupt
++    Masked interrupt bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IOSR_VPE0_PMCIR 0x80000000
++/* Nothing
++#define ICU0_IM4_IOSR_VPE0_PMCIR_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_IOSR_VPE0_PMCIR_INTOCC 0x80000000
++/** VPE0 Error Level Flag Interrupt
++    Masked interrupt bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IOSR_VPE0_ERL 0x40000000
++/* Nothing
++#define ICU0_IM4_IOSR_VPE0_ERL_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_IOSR_VPE0_ERL_INTOCC 0x40000000
++/** VPE0 Exception Level Flag Interrupt
++    Masked interrupt bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IOSR_VPE0_EXL 0x20000000
++/* Nothing
++#define ICU0_IM4_IOSR_VPE0_EXL_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_IOSR_VPE0_EXL_INTOCC 0x20000000
++/** MPS Bin. Sem Interrupt to VPE0
++    Masked interrupt bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IOSR_MPS_IR8 0x00400000
++/* Nothing
++#define ICU0_IM4_IOSR_MPS_IR8_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_IOSR_MPS_IR8_INTOCC 0x00400000
++/** MPS Global Interrupt to VPE0
++    Masked interrupt bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IOSR_MPS_IR7 0x00200000
++/* Nothing
++#define ICU0_IM4_IOSR_MPS_IR7_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_IOSR_MPS_IR7_INTOCC 0x00200000
++/** MPS Status Interrupt #6 (VPE1 to VPE0)
++    Masked interrupt bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IOSR_MPS_IR6 0x00100000
++/* Nothing
++#define ICU0_IM4_IOSR_MPS_IR6_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_IOSR_MPS_IR6_INTOCC 0x00100000
++/** MPS Status Interrupt #5 (VPE1 to VPE0)
++    Masked interrupt bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IOSR_MPS_IR5 0x00080000
++/* Nothing
++#define ICU0_IM4_IOSR_MPS_IR5_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_IOSR_MPS_IR5_INTOCC 0x00080000
++/** MPS Status Interrupt #4 (VPE1 to VPE0)
++    Masked interrupt bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IOSR_MPS_IR4 0x00040000
++/* Nothing
++#define ICU0_IM4_IOSR_MPS_IR4_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_IOSR_MPS_IR4_INTOCC 0x00040000
++/** MPS Status Interrupt #3 (VPE1 to VPE0)
++    Masked interrupt bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IOSR_MPS_IR3 0x00020000
++/* Nothing
++#define ICU0_IM4_IOSR_MPS_IR3_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_IOSR_MPS_IR3_INTOCC 0x00020000
++/** MPS Status Interrupt #2 (VPE1 to VPE0)
++    Masked interrupt bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IOSR_MPS_IR2 0x00010000
++/* Nothing
++#define ICU0_IM4_IOSR_MPS_IR2_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_IOSR_MPS_IR2_INTOCC 0x00010000
++/** MPS Status Interrupt #1 (VPE1 to VPE0)
++    Masked interrupt bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IOSR_MPS_IR1 0x00008000
++/* Nothing
++#define ICU0_IM4_IOSR_MPS_IR1_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_IOSR_MPS_IR1_INTOCC 0x00008000
++/** MPS Status Interrupt #0 (VPE1 to VPE0)
++    Masked interrupt bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IOSR_MPS_IR0 0x00004000
++/* Nothing
++#define ICU0_IM4_IOSR_MPS_IR0_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_IOSR_MPS_IR0_INTOCC 0x00004000
++/** TMU Error
++    Masked interrupt bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IOSR_TMU_ERR 0x00001000
++/* Nothing
++#define ICU0_IM4_IOSR_TMU_ERR_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_IOSR_TMU_ERR_INTOCC 0x00001000
++/** FSQM Error
++    Masked interrupt bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IOSR_FSQM_ERR 0x00000800
++/* Nothing
++#define ICU0_IM4_IOSR_FSQM_ERR_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_IOSR_FSQM_ERR_INTOCC 0x00000800
++/** IQM Error
++    Masked interrupt bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IOSR_IQM_ERR 0x00000400
++/* Nothing
++#define ICU0_IM4_IOSR_IQM_ERR_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_IOSR_IQM_ERR_INTOCC 0x00000400
++/** OCTRLG Error
++    Masked interrupt bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IOSR_OCTRLG_ERR 0x00000200
++/* Nothing
++#define ICU0_IM4_IOSR_OCTRLG_ERR_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_IOSR_OCTRLG_ERR_INTOCC 0x00000200
++/** ICTRLG Error
++    Masked interrupt bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IOSR_ICTRLG_ERR 0x00000100
++/* Nothing
++#define ICU0_IM4_IOSR_ICTRLG_ERR_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_IOSR_ICTRLG_ERR_INTOCC 0x00000100
++/** OCTRLL 3 Error
++    Masked interrupt bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IOSR_OCTRLL3_ERR 0x00000080
++/* Nothing
++#define ICU0_IM4_IOSR_OCTRLL3_ERR_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_IOSR_OCTRLL3_ERR_INTOCC 0x00000080
++/** OCTRLL 2 Error
++    Masked interrupt bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IOSR_OCTRLL2_ERR 0x00000040
++/* Nothing
++#define ICU0_IM4_IOSR_OCTRLL2_ERR_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_IOSR_OCTRLL2_ERR_INTOCC 0x00000040
++/** OCTRLL 1 Error
++    Masked interrupt bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IOSR_OCTRLL1_ERR 0x00000020
++/* Nothing
++#define ICU0_IM4_IOSR_OCTRLL1_ERR_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_IOSR_OCTRLL1_ERR_INTOCC 0x00000020
++/** OCTRLL 0 Error
++    Masked interrupt bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IOSR_OCTRLL0_ERR 0x00000010
++/* Nothing
++#define ICU0_IM4_IOSR_OCTRLL0_ERR_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_IOSR_OCTRLL0_ERR_INTOCC 0x00000010
++/** ICTRLL 3 Error
++    Masked interrupt bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IOSR_ICTRLL3_ERR 0x00000008
++/* Nothing
++#define ICU0_IM4_IOSR_ICTRLL3_ERR_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_IOSR_ICTRLL3_ERR_INTOCC 0x00000008
++/** ICTRLL 2 Error
++    Masked interrupt bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IOSR_ICTRLL2_ERR 0x00000004
++/* Nothing
++#define ICU0_IM4_IOSR_ICTRLL2_ERR_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_IOSR_ICTRLL2_ERR_INTOCC 0x00000004
++/** ICTRLL 1 Error
++    Masked interrupt bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IOSR_ICTRLL1_ERR 0x00000002
++/* Nothing
++#define ICU0_IM4_IOSR_ICTRLL1_ERR_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_IOSR_ICTRLL1_ERR_INTOCC 0x00000002
++/** ICTRLL 0 Error
++    Masked interrupt bit for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IOSR_ICTRLL0_ERR 0x00000001
++/* Nothing
++#define ICU0_IM4_IOSR_ICTRLL0_ERR_NULL 0x00000000 */
++/** Read: Interrupt occurred. */
++#define ICU0_IM4_IOSR_ICTRLL0_ERR_INTOCC 0x00000001
++
++/* Fields of "IM4 Interrupt Request Set Register" */
++/** VPE0 Performance Monitoring Counter Interrupt
++    Software control for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IRSR_VPE0_PMCIR 0x80000000
++/** VPE0 Error Level Flag Interrupt
++    Software control for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IRSR_VPE0_ERL 0x40000000
++/** VPE0 Exception Level Flag Interrupt
++    Software control for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IRSR_VPE0_EXL 0x20000000
++/** MPS Bin. Sem Interrupt to VPE0
++    Software control for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IRSR_MPS_IR8 0x00400000
++/** MPS Global Interrupt to VPE0
++    Software control for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IRSR_MPS_IR7 0x00200000
++/** MPS Status Interrupt #6 (VPE1 to VPE0)
++    Software control for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IRSR_MPS_IR6 0x00100000
++/** MPS Status Interrupt #5 (VPE1 to VPE0)
++    Software control for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IRSR_MPS_IR5 0x00080000
++/** MPS Status Interrupt #4 (VPE1 to VPE0)
++    Software control for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IRSR_MPS_IR4 0x00040000
++/** MPS Status Interrupt #3 (VPE1 to VPE0)
++    Software control for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IRSR_MPS_IR3 0x00020000
++/** MPS Status Interrupt #2 (VPE1 to VPE0)
++    Software control for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IRSR_MPS_IR2 0x00010000
++/** MPS Status Interrupt #1 (VPE1 to VPE0)
++    Software control for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IRSR_MPS_IR1 0x00008000
++/** MPS Status Interrupt #0 (VPE1 to VPE0)
++    Software control for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IRSR_MPS_IR0 0x00004000
++/** TMU Error
++    Software control for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IRSR_TMU_ERR 0x00001000
++/** FSQM Error
++    Software control for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IRSR_FSQM_ERR 0x00000800
++/** IQM Error
++    Software control for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IRSR_IQM_ERR 0x00000400
++/** OCTRLG Error
++    Software control for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IRSR_OCTRLG_ERR 0x00000200
++/** ICTRLG Error
++    Software control for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IRSR_ICTRLG_ERR 0x00000100
++/** OCTRLL 3 Error
++    Software control for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IRSR_OCTRLL3_ERR 0x00000080
++/** OCTRLL 2 Error
++    Software control for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IRSR_OCTRLL2_ERR 0x00000040
++/** OCTRLL 1 Error
++    Software control for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IRSR_OCTRLL1_ERR 0x00000020
++/** OCTRLL 0 Error
++    Software control for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IRSR_OCTRLL0_ERR 0x00000010
++/** ICTRLL 3 Error
++    Software control for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IRSR_ICTRLL3_ERR 0x00000008
++/** ICTRLL 2 Error
++    Software control for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IRSR_ICTRLL2_ERR 0x00000004
++/** ICTRLL 1 Error
++    Software control for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IRSR_ICTRLL1_ERR 0x00000002
++/** ICTRLL 0 Error
++    Software control for the corresponding bit in the IM4_ISR register. */
++#define ICU0_IM4_IRSR_ICTRLL0_ERR 0x00000001
++
++/* Fields of "IM4 Interrupt Mode Register" */
++/** VPE0 Performance Monitoring Counter Interrupt
++    Type of interrupt. */
++#define ICU0_IM4_IMR_VPE0_PMCIR 0x80000000
++/* Indirect Interrupt.
++#define ICU0_IM4_IMR_VPE0_PMCIR_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM4_IMR_VPE0_PMCIR_DIR 0x80000000
++/** VPE0 Error Level Flag Interrupt
++    Type of interrupt. */
++#define ICU0_IM4_IMR_VPE0_ERL 0x40000000
++/* Indirect Interrupt.
++#define ICU0_IM4_IMR_VPE0_ERL_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM4_IMR_VPE0_ERL_DIR 0x40000000
++/** VPE0 Exception Level Flag Interrupt
++    Type of interrupt. */
++#define ICU0_IM4_IMR_VPE0_EXL 0x20000000
++/* Indirect Interrupt.
++#define ICU0_IM4_IMR_VPE0_EXL_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM4_IMR_VPE0_EXL_DIR 0x20000000
++/** MPS Bin. Sem Interrupt to VPE0
++    Type of interrupt. */
++#define ICU0_IM4_IMR_MPS_IR8 0x00400000
++/* Indirect Interrupt.
++#define ICU0_IM4_IMR_MPS_IR8_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM4_IMR_MPS_IR8_DIR 0x00400000
++/** MPS Global Interrupt to VPE0
++    Type of interrupt. */
++#define ICU0_IM4_IMR_MPS_IR7 0x00200000
++/* Indirect Interrupt.
++#define ICU0_IM4_IMR_MPS_IR7_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM4_IMR_MPS_IR7_DIR 0x00200000
++/** MPS Status Interrupt #6 (VPE1 to VPE0)
++    Type of interrupt. */
++#define ICU0_IM4_IMR_MPS_IR6 0x00100000
++/* Indirect Interrupt.
++#define ICU0_IM4_IMR_MPS_IR6_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM4_IMR_MPS_IR6_DIR 0x00100000
++/** MPS Status Interrupt #5 (VPE1 to VPE0)
++    Type of interrupt. */
++#define ICU0_IM4_IMR_MPS_IR5 0x00080000
++/* Indirect Interrupt.
++#define ICU0_IM4_IMR_MPS_IR5_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM4_IMR_MPS_IR5_DIR 0x00080000
++/** MPS Status Interrupt #4 (VPE1 to VPE0)
++    Type of interrupt. */
++#define ICU0_IM4_IMR_MPS_IR4 0x00040000
++/* Indirect Interrupt.
++#define ICU0_IM4_IMR_MPS_IR4_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM4_IMR_MPS_IR4_DIR 0x00040000
++/** MPS Status Interrupt #3 (VPE1 to VPE0)
++    Type of interrupt. */
++#define ICU0_IM4_IMR_MPS_IR3 0x00020000
++/* Indirect Interrupt.
++#define ICU0_IM4_IMR_MPS_IR3_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM4_IMR_MPS_IR3_DIR 0x00020000
++/** MPS Status Interrupt #2 (VPE1 to VPE0)
++    Type of interrupt. */
++#define ICU0_IM4_IMR_MPS_IR2 0x00010000
++/* Indirect Interrupt.
++#define ICU0_IM4_IMR_MPS_IR2_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM4_IMR_MPS_IR2_DIR 0x00010000
++/** MPS Status Interrupt #1 (VPE1 to VPE0)
++    Type of interrupt. */
++#define ICU0_IM4_IMR_MPS_IR1 0x00008000
++/* Indirect Interrupt.
++#define ICU0_IM4_IMR_MPS_IR1_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM4_IMR_MPS_IR1_DIR 0x00008000
++/** MPS Status Interrupt #0 (VPE1 to VPE0)
++    Type of interrupt. */
++#define ICU0_IM4_IMR_MPS_IR0 0x00004000
++/* Indirect Interrupt.
++#define ICU0_IM4_IMR_MPS_IR0_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM4_IMR_MPS_IR0_DIR 0x00004000
++/** TMU Error
++    Type of interrupt. */
++#define ICU0_IM4_IMR_TMU_ERR 0x00001000
++/* Indirect Interrupt.
++#define ICU0_IM4_IMR_TMU_ERR_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM4_IMR_TMU_ERR_DIR 0x00001000
++/** FSQM Error
++    Type of interrupt. */
++#define ICU0_IM4_IMR_FSQM_ERR 0x00000800
++/* Indirect Interrupt.
++#define ICU0_IM4_IMR_FSQM_ERR_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM4_IMR_FSQM_ERR_DIR 0x00000800
++/** IQM Error
++    Type of interrupt. */
++#define ICU0_IM4_IMR_IQM_ERR 0x00000400
++/* Indirect Interrupt.
++#define ICU0_IM4_IMR_IQM_ERR_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM4_IMR_IQM_ERR_DIR 0x00000400
++/** OCTRLG Error
++    Type of interrupt. */
++#define ICU0_IM4_IMR_OCTRLG_ERR 0x00000200
++/* Indirect Interrupt.
++#define ICU0_IM4_IMR_OCTRLG_ERR_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM4_IMR_OCTRLG_ERR_DIR 0x00000200
++/** ICTRLG Error
++    Type of interrupt. */
++#define ICU0_IM4_IMR_ICTRLG_ERR 0x00000100
++/* Indirect Interrupt.
++#define ICU0_IM4_IMR_ICTRLG_ERR_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM4_IMR_ICTRLG_ERR_DIR 0x00000100
++/** OCTRLL 3 Error
++    Type of interrupt. */
++#define ICU0_IM4_IMR_OCTRLL3_ERR 0x00000080
++/* Indirect Interrupt.
++#define ICU0_IM4_IMR_OCTRLL3_ERR_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM4_IMR_OCTRLL3_ERR_DIR 0x00000080
++/** OCTRLL 2 Error
++    Type of interrupt. */
++#define ICU0_IM4_IMR_OCTRLL2_ERR 0x00000040
++/* Indirect Interrupt.
++#define ICU0_IM4_IMR_OCTRLL2_ERR_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM4_IMR_OCTRLL2_ERR_DIR 0x00000040
++/** OCTRLL 1 Error
++    Type of interrupt. */
++#define ICU0_IM4_IMR_OCTRLL1_ERR 0x00000020
++/* Indirect Interrupt.
++#define ICU0_IM4_IMR_OCTRLL1_ERR_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM4_IMR_OCTRLL1_ERR_DIR 0x00000020
++/** OCTRLL 0 Error
++    Type of interrupt. */
++#define ICU0_IM4_IMR_OCTRLL0_ERR 0x00000010
++/* Indirect Interrupt.
++#define ICU0_IM4_IMR_OCTRLL0_ERR_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM4_IMR_OCTRLL0_ERR_DIR 0x00000010
++/** ICTRLL 3 Error
++    Type of interrupt. */
++#define ICU0_IM4_IMR_ICTRLL3_ERR 0x00000008
++/* Indirect Interrupt.
++#define ICU0_IM4_IMR_ICTRLL3_ERR_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM4_IMR_ICTRLL3_ERR_DIR 0x00000008
++/** ICTRLL 2 Error
++    Type of interrupt. */
++#define ICU0_IM4_IMR_ICTRLL2_ERR 0x00000004
++/* Indirect Interrupt.
++#define ICU0_IM4_IMR_ICTRLL2_ERR_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM4_IMR_ICTRLL2_ERR_DIR 0x00000004
++/** ICTRLL 1 Error
++    Type of interrupt. */
++#define ICU0_IM4_IMR_ICTRLL1_ERR 0x00000002
++/* Indirect Interrupt.
++#define ICU0_IM4_IMR_ICTRLL1_ERR_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM4_IMR_ICTRLL1_ERR_DIR 0x00000002
++/** ICTRLL 0 Error
++    Type of interrupt. */
++#define ICU0_IM4_IMR_ICTRLL0_ERR 0x00000001
++/* Indirect Interrupt.
++#define ICU0_IM4_IMR_ICTRLL0_ERR_IND 0x00000000 */
++/** Direct Interrupt. */
++#define ICU0_IM4_IMR_ICTRLL0_ERR_DIR 0x00000001
++
++/* Fields of "ICU Interrupt Vector Register (5 bit variant)" */
++/** IM4 Interrupt Vector Value
++    Returns the highest priority pending interrupt vector. */
++#define ICU0_ICU_IVEC_IM4_vec_MASK 0x01F00000
++/** field offset */
++#define ICU0_ICU_IVEC_IM4_vec_OFFSET 20
++/** Interrupt pending at bit 31 or no pending interrupt */
++#define ICU0_ICU_IVEC_IM4_vec_NOINTorBit31 0x00000000
++/** Interrupt pending at bit 0. */
++#define ICU0_ICU_IVEC_IM4_vec_BIT0 0x00100000
++/** Interrupt pending at bit 1. */
++#define ICU0_ICU_IVEC_IM4_vec_BIT1 0x00200000
++/** Interrupt pending at bit 30. */
++#define ICU0_ICU_IVEC_IM4_vec_BIT30 0x01F00000
++/** IM3 Interrupt Vector Value
++    Returns the highest priority pending interrupt vector. */
++#define ICU0_ICU_IVEC_IM3_vec_MASK 0x000F8000
++/** field offset */
++#define ICU0_ICU_IVEC_IM3_vec_OFFSET 15
++/** Interrupt pending at bit 31 or no pending interrupt */
++#define ICU0_ICU_IVEC_IM3_vec_NOINTorBit31 0x00000000
++/** Interrupt pending at bit 0. */
++#define ICU0_ICU_IVEC_IM3_vec_BIT0 0x00008000
++/** Interrupt pending at bit 1. */
++#define ICU0_ICU_IVEC_IM3_vec_BIT1 0x00010000
++/** Interrupt pending at bit 30. */
++#define ICU0_ICU_IVEC_IM3_vec_BIT30 0x000F8000
++/** IM2 Interrupt Vector Value
++    Returns the highest priority pending interrupt vector. */
++#define ICU0_ICU_IVEC_IM2_vec_MASK 0x00007C00
++/** field offset */
++#define ICU0_ICU_IVEC_IM2_vec_OFFSET 10
++/** Interrupt pending at bit 31 or no pending interrupt */
++#define ICU0_ICU_IVEC_IM2_vec_NOINTorBit31 0x00000000
++/** Interrupt pending at bit 0. */
++#define ICU0_ICU_IVEC_IM2_vec_BIT0 0x00000400
++/** Interrupt pending at bit 1. */
++#define ICU0_ICU_IVEC_IM2_vec_BIT1 0x00000800
++/** Interrupt pending at bit 30. */
++#define ICU0_ICU_IVEC_IM2_vec_BIT30 0x00007C00
++/** IM1 Interrupt Vector Value
++    Returns the highest priority pending interrupt vector. */
++#define ICU0_ICU_IVEC_IM1_vec_MASK 0x000003E0
++/** field offset */
++#define ICU0_ICU_IVEC_IM1_vec_OFFSET 5
++/** Interrupt pending at bit 31 or no pending interrupt */
++#define ICU0_ICU_IVEC_IM1_vec_NOINTorBit31 0x00000000
++/** Interrupt pending at bit 0. */
++#define ICU0_ICU_IVEC_IM1_vec_BIT0 0x00000020
++/** Interrupt pending at bit 1. */
++#define ICU0_ICU_IVEC_IM1_vec_BIT1 0x00000040
++/** Interrupt pending at bit 30. */
++#define ICU0_ICU_IVEC_IM1_vec_BIT30 0x000003E0
++/** IM0 Interrupt Vector Value
++    Returns the highest priority pending interrupt vector. */
++#define ICU0_ICU_IVEC_IM0_vec_MASK 0x0000001F
++/** field offset */
++#define ICU0_ICU_IVEC_IM0_vec_OFFSET 0
++/** Interrupt pending at bit 31 or no pending interrupt */
++#define ICU0_ICU_IVEC_IM0_vec_NOINTorBit31 0x00000000
++/** Interrupt pending at bit 0. */
++#define ICU0_ICU_IVEC_IM0_vec_BIT0 0x00000001
++/** Interrupt pending at bit 1. */
++#define ICU0_ICU_IVEC_IM0_vec_BIT1 0x00000002
++/** Interrupt pending at bit 30. */
++#define ICU0_ICU_IVEC_IM0_vec_BIT30 0x0000001F
++
++/* Fields of "ICU Interrupt Vector Register (6 bit variant)" */
++/** IM4 Interrupt Vector Value
++    Returns the highest priority pending interrupt vector. */
++#define ICU0_ICU_IVEC_6_IM4_vec_MASK 0x3F000000
++/** field offset */
++#define ICU0_ICU_IVEC_6_IM4_vec_OFFSET 24
++/** No pending interrupt */
++#define ICU0_ICU_IVEC_6_IM4_vec_NOINT 0x00000000
++/** Interrupt pending at bit 0. */
++#define ICU0_ICU_IVEC_6_IM4_vec_BIT0 0x01000000
++/** Interrupt pending at bit 1. */
++#define ICU0_ICU_IVEC_6_IM4_vec_BIT1 0x02000000
++/** Interrupt pending at bit 30. */
++#define ICU0_ICU_IVEC_6_IM4_vec_BIT30 0x1F000000
++/** Interrupt pending at bit 31. */
++#define ICU0_ICU_IVEC_6_IM4_vec_BIT31 0x20000000
++/** IM3 Interrupt Vector Value
++    Returns the highest priority pending interrupt vector. */
++#define ICU0_ICU_IVEC_6_IM3_vec_MASK 0x00FC0000
++/** field offset */
++#define ICU0_ICU_IVEC_6_IM3_vec_OFFSET 18
++/** No pending interrupt */
++#define ICU0_ICU_IVEC_6_IM3_vec_NOINT 0x00000000
++/** Interrupt pending at bit 0. */
++#define ICU0_ICU_IVEC_6_IM3_vec_BIT0 0x00040000
++/** Interrupt pending at bit 1. */
++#define ICU0_ICU_IVEC_6_IM3_vec_BIT1 0x00080000
++/** Interrupt pending at bit 30. */
++#define ICU0_ICU_IVEC_6_IM3_vec_BIT30 0x007C0000
++/** Interrupt pending at bit 31. */
++#define ICU0_ICU_IVEC_6_IM3_vec_BIT31 0x00800000
++/** IM2 Interrupt Vector Value
++    Returns the highest priority pending interrupt vector. */
++#define ICU0_ICU_IVEC_6_IM2_vec_MASK 0x0003F000
++/** field offset */
++#define ICU0_ICU_IVEC_6_IM2_vec_OFFSET 12
++/** No pending interrupt */
++#define ICU0_ICU_IVEC_6_IM2_vec_NOINT 0x00000000
++/** Interrupt pending at bit 0. */
++#define ICU0_ICU_IVEC_6_IM2_vec_BIT0 0x00001000
++/** Interrupt pending at bit 1. */
++#define ICU0_ICU_IVEC_6_IM2_vec_BIT1 0x00002000
++/** Interrupt pending at bit 30. */
++#define ICU0_ICU_IVEC_6_IM2_vec_BIT30 0x0001F000
++/** Interrupt pending at bit 31. */
++#define ICU0_ICU_IVEC_6_IM2_vec_BIT31 0x00020000
++/** IM1 Interrupt Vector Value
++    Returns the highest priority pending interrupt vector. */
++#define ICU0_ICU_IVEC_6_IM1_vec_MASK 0x00000FC0
++/** field offset */
++#define ICU0_ICU_IVEC_6_IM1_vec_OFFSET 6
++/** No pending interrupt */
++#define ICU0_ICU_IVEC_6_IM1_vec_NOINT 0x00000000
++/** Interrupt pending at bit 0. */
++#define ICU0_ICU_IVEC_6_IM1_vec_BIT0 0x00000040
++/** Interrupt pending at bit 1. */
++#define ICU0_ICU_IVEC_6_IM1_vec_BIT1 0x00000080
++/** Interrupt pending at bit 30. */
++#define ICU0_ICU_IVEC_6_IM1_vec_BIT30 0x000007C0
++/** Interrupt pending at bit 31. */
++#define ICU0_ICU_IVEC_6_IM1_vec_BIT31 0x00000800
++/** IM0 Interrupt Vector Value
++    Returns the highest priority pending interrupt vector. */
++#define ICU0_ICU_IVEC_6_IM0_vec_MASK 0x0000003F
++/** field offset */
++#define ICU0_ICU_IVEC_6_IM0_vec_OFFSET 0
++/** No pending interrupt */
++#define ICU0_ICU_IVEC_6_IM0_vec_NOINT 0x00000000
++/** Interrupt pending at bit 0. */
++#define ICU0_ICU_IVEC_6_IM0_vec_BIT0 0x00000001
++/** Interrupt pending at bit 1. */
++#define ICU0_ICU_IVEC_6_IM0_vec_BIT1 0x00000002
++/** Interrupt pending at bit 30. */
++#define ICU0_ICU_IVEC_6_IM0_vec_BIT30 0x0000001F
++/** Interrupt pending at bit 31. */
++#define ICU0_ICU_IVEC_6_IM0_vec_BIT31 0x00000020
++
++/*! @} */ /* ICU0_REGISTER */
++
++#endif /* _icu0_reg_h */
+--- /dev/null
++++ b/arch/mips/include/asm/mach-lantiq/falcon/irq.h
+@@ -0,0 +1,31 @@
++/*
++ *   arch/mips/include/asm/mach-ifxmips/falcon/irq.h
++ *
++ *   This program is free software; you can redistribute it and/or modify
++ *   it under the terms of the GNU General Public License as published by
++ *   the Free Software Foundation; either version 2 of the License, or
++ *   (at your option) any later version.
++ *
++ *   This program is distributed in the hope that it will be useful,
++ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *   GNU General Public License for more details.
++ *
++ *   You should have received a copy of the GNU General Public License
++ *   along with this program; if not, write to the Free Software
++ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
++ *
++ *   Copyright (C) 2010 Lantiq
++ *
++ */
++
++#ifndef __FALCON_IRQ_H
++#define __FALCON_IRQ_H
++
++#include <falcon_irq.h>
++
++#define NR_IRQS 264
++
++#include_next <irq.h>
++
++#endif
+--- /dev/null
++++ b/arch/mips/include/asm/mach-lantiq/falcon/status_reg.h
+@@ -0,0 +1,529 @@
++/******************************************************************************
++
++                               Copyright (c) 2010
++                            Lantiq Deutschland GmbH
++
++  For licensing information, see the file 'LICENSE' in the root folder of
++  this software module.
++
++******************************************************************************/
++
++#ifndef _status_reg_h
++#define _status_reg_h
++
++/** \addtogroup STATUS_REGISTER
++   @{
++*/
++/* access macros */
++#define status_r32(reg) reg_r32(&status->reg)
++#define status_w32(val, reg) reg_w32(val, &status->reg)
++#define status_w32_mask(clear, set, reg) reg_w32_mask(clear, set, &status->reg)
++#define status_r32_table(reg, idx) reg_r32_table(status->reg, idx)
++#define status_w32_table(val, reg, idx) reg_w32_table(val, status->reg, idx)
++#define status_w32_table_mask(clear, set, reg, idx) reg_w32_table_mask(clear, set, status->reg, idx)
++#define status_adr_table(reg, idx) adr_table(status->reg, idx)
++
++
++/** STATUS register structure */
++struct gpon_reg_status
++{
++   /** Reserved */
++   unsigned int res_0[3]; /* 0x00000000 */
++   /** Chip Identification Register */
++   unsigned int chipid; /* 0x0000000C */
++   /** Chip Location Register
++       Note: All fuse-bits have a default value of 0 that can be changed to 1 during production test (unfused = 0, fused = 1).The reset-values stated for these bits is 0 even though SW will never be able to read 0 if it was set to 1 during production test. */
++   unsigned int chiploc; /* 0x00000010 */
++   /** Redundancy register
++       Note: All fuse-bits have a default value of 0 that can be changed to 1 during production test (unfused = 0, fused = 1).The reset-values stated for these bits is 0 even though SW will never be able to read 0 if it was set to 1 during production test. */
++   unsigned int red0; /* 0x00000014 */
++   /** Redundancy register
++       Note: All fuse-bits have a default value of 0 that can be changed to 1 during production test (unfused = 0, fused = 1).The reset-values stated for these bits is 0 even though SW will never be able to read 0 if it was set to 1 during production test. */
++   unsigned int red1; /* 0x00000018 */
++   /** Redundancy register
++       Note: All fuse-bits have a default value of 0 that can be changed to 1 during production test (unfused = 0, fused = 1).The reset-values stated for these bits is 0 even though SW will never be able to read 0 if it was set to 1 during production test. */
++   unsigned int red2; /* 0x0000001C */
++   /** Redundancy register
++       Note: All fuse-bits have a default value of 0 that can be changed to 1 during production test (unfused = 0, fused = 1).The reset-values stated for these bits is 0 even though SW will never be able to read 0 if it was set to 1 during production test. */
++   unsigned int red3; /* 0x00000020 */
++   /** Redundancy register
++       Note: All fuse-bits have a default value of 0 that can be changed to 1 during production test (unfused = 0, fused = 1).The reset-values stated for these bits is 0 even though SW will never be able to read 0 if it was set to 1 during production test. */
++   unsigned int red4; /* 0x00000024 */
++   /** Redundancy register
++       Note: All fuse-bits have a default value of 0 that can be changed to 1 during production test (unfused = 0, fused = 1).The reset-values stated for these bits is 0 even though SW will never be able to read 0 if it was set to 1 during production test. */
++   unsigned int red5; /* 0x00000028 */
++   /** Redundancy register
++       Note: All fuse-bits have a default value of 0 that can be changed to 1 during production test (unfused = 0, fused = 1).The reset-values stated for these bits is 0 even though SW will never be able to read 0 if it was set to 1 during production test. */
++   unsigned int red6; /* 0x0000002C */
++   /** Redundancy register
++       Note: All fuse-bits have a default value of 0 that can be changed to 1 during production test (unfused = 0, fused = 1).The reset-values stated for these bits is 0 even though SW will never be able to read 0 if it was set to 1 during production test. */
++   unsigned int red7; /* 0x00000030 */
++   /** Redundancy register
++       Note: All fuse-bits have a default value of 0 that can be changed to 1 during production test (unfused = 0, fused = 1).The reset-values stated for these bits is 0 even though SW will never be able to read 0 if it was set to 1 during production test. */
++   unsigned int red8; /* 0x00000034 */
++   /** SPARE fuse register 0
++       Note: All fuse-bits have a default value of 0 that can be changed to 1 during production test (unfused = 0, fused = 1).The reset-values stated for these bits is 0 even though SW will never be able to read 0 if it was set to 1 during production test. */
++   unsigned int fuse0; /* 0x00000038 */
++   /** Fuses for Analog modules
++       Note: All fuse-bits have a default value of 0 that can be changed to 1 during production test (unfused = 0, fused = 1).The reset-values stated for these bits is 0 even though SW will never be able to read 0 if it was set to 1 during production test. */
++   unsigned int analog; /* 0x0000003C */
++   /** Configuration fuses for drivers and pll
++       Note: All fuse-bits have a default value of 0 that can be changed to 1 during production test (unfused = 0, fused = 1).The reset-values stated for these bits is 0 even though SW will never be able to read 0 if it was set to 1 during production test. */
++   unsigned int config; /* 0x00000040 */
++   /** SPARE fuse register 1
++       Note: All fuse-bits have a default value of 0 that can be changed to 1 during production test (unfused = 0, fused = 1).The reset-values stated for these bits is 0 even though SW will never be able to read 0 if it was set to 1 during production test. */
++   unsigned int fuse1; /* 0x00000044 */
++   /** Configuration for sbs0 rambist */
++   unsigned int mbcfg; /* 0x00000048 */
++   /** sbs0 bist result and debug data */
++   unsigned int mbdata; /* 0x0000004C */
++   /** Reserved */
++   unsigned int res_1[12]; /* 0x00000050 */
++};
++
++
++/* Fields of "Chip Identification Register" */
++/** Chip Version Number
++    Version number */
++#define STATUS_CHIPID_VERSION_MASK 0xF0000000
++/** field offset */
++#define STATUS_CHIPID_VERSION_OFFSET 28
++/** Part Number, Constant Part
++    The Part Number is fixed to 016Bhex. */
++#define STATUS_CHIPID_PARTNR_MASK 0x0FFFF000
++/** field offset */
++#define STATUS_CHIPID_PARTNR_OFFSET 12
++/** Manufacturer ID
++    The value of bit field MANID is fixed to 41hex as configured in the JTAG ID register. The JEDEC normalized manufacturer code for Infineon Technologies is C1hex */
++#define STATUS_CHIPID_MANID_MASK 0x00000FFE
++/** field offset */
++#define STATUS_CHIPID_MANID_OFFSET 1
++/** Constant bit
++    The value of bit field CONST1 is fixed to 1hex */
++#define STATUS_CHIPID_CONST1 0x00000001
++
++/* Fields of "Chip Location Register" */
++/** Chip Lot ID */
++#define STATUS_CHIPLOC_CHIPLOT_MASK 0xFFFF0000
++/** field offset */
++#define STATUS_CHIPLOC_CHIPLOT_OFFSET 16
++/** Chip X Coordinate */
++#define STATUS_CHIPLOC_CHIPX_MASK 0x0000FF00
++/** field offset */
++#define STATUS_CHIPLOC_CHIPX_OFFSET 8
++/** Chip Y Coordinate */
++#define STATUS_CHIPLOC_CHIPY_MASK 0x000000FF
++/** field offset */
++#define STATUS_CHIPLOC_CHIPY_OFFSET 0
++
++/* Fields of "Redundancy register" */
++/** Redundancy
++    redundancy information stored in eFuses. MSB + MEM_ADDR - MSB = 1 defines a valid address */
++#define STATUS_RED0_REDUNDANCY_MASK 0x0003FFFF
++/** field offset */
++#define STATUS_RED0_REDUNDANCY_OFFSET 0
++
++/* Fields of "Redundancy register" */
++/** Redundancy
++    redundancy information stored in eFuses. MSB + MEM_ADDR - MSB = 1 defines a valid address */
++#define STATUS_RED1_REDUNDANCY_MASK 0x0003FFFF
++/** field offset */
++#define STATUS_RED1_REDUNDANCY_OFFSET 0
++
++/* Fields of "Redundancy register" */
++/** Redundancy
++    redundancy information stored in eFuses. MSB + MEM_ADDR - MSB = 1 defines a valid address */
++#define STATUS_RED2_REDUNDANCY_MASK 0x0003FFFF
++/** field offset */
++#define STATUS_RED2_REDUNDANCY_OFFSET 0
++
++/* Fields of "Redundancy register" */
++/** Redundancy
++    redundancy information stored in eFuses. MSB + MEM_ADDR - MSB = 1 defines a valid address */
++#define STATUS_RED3_REDUNDANCY_MASK 0x0003FFFF
++/** field offset */
++#define STATUS_RED3_REDUNDANCY_OFFSET 0
++
++/* Fields of "Redundancy register" */
++/** Redundancy
++    redundancy information stored in eFuses. MSB + MEM_ADDR - MSB = 1 defines a valid address */
++#define STATUS_RED4_REDUNDANCY_MASK 0x0003FFFF
++/** field offset */
++#define STATUS_RED4_REDUNDANCY_OFFSET 0
++
++/* Fields of "Redundancy register" */
++/** Redundancy
++    redundancy information stored in eFuses. MSB + MEM_ADDR - MSB = 1 defines a valid address */
++#define STATUS_RED5_REDUNDANCY_MASK 0x0003FFFF
++/** field offset */
++#define STATUS_RED5_REDUNDANCY_OFFSET 0
++
++/* Fields of "Redundancy register" */
++/** Redundancy
++    redundancy information stored in eFuses. MSB + MEM_ADDR - MSB = 1 defines a valid address */
++#define STATUS_RED6_REDUNDANCY_MASK 0x0003FFFF
++/** field offset */
++#define STATUS_RED6_REDUNDANCY_OFFSET 0
++
++/* Fields of "Redundancy register" */
++/** Redundancy
++    redundancy information stored in eFuses. MSB + MEM_ADDR - MSB = 1 defines a valid address */
++#define STATUS_RED7_REDUNDANCY_MASK 0x0003FFFF
++/** field offset */
++#define STATUS_RED7_REDUNDANCY_OFFSET 0
++
++/* Fields of "Redundancy register" */
++/** Redundancy
++    redundancy information stored in eFuses. MSB + MEM_ADDR - MSB = 1 defines a valid address */
++#define STATUS_RED8_REDUNDANCY_MASK 0x0003FFFF
++/** field offset */
++#define STATUS_RED8_REDUNDANCY_OFFSET 0
++
++/* Fields of "SPARE fuse register 0" */
++/** Soft fuse control
++    Controls whether the status block is in its softfused state or not. In the softfused state the values written via software are active effective. */
++#define STATUS_FUSE0_SFC 0x80000000
++/* Not selected
++#define STATUS_FUSE0_SFC_NSEL 0x00000000 */
++/** Selected */
++#define STATUS_FUSE0_SFC_SEL 0x80000000
++/** Soft control MBCFG
++    Controls whether mbist configuration can be overwritten or not from subsystem. If not selected jtag mbcfg register is source for software mbist configuration */
++#define STATUS_FUSE0_SC_MBCFG 0x40000000
++/* Not selected
++#define STATUS_FUSE0_SC_MBCFG_NSEL 0x00000000 */
++/** Selected */
++#define STATUS_FUSE0_SC_MBCFG_SEL 0x40000000
++/** spare fuse0
++    eFuses not assigned to hw/sw, can be used for future applications */
++#define STATUS_FUSE0_F0_MASK 0x3C000000
++/** field offset */
++#define STATUS_FUSE0_F0_OFFSET 26
++/** VCALMM20 Voltage Reference
++    Voltage Reference for calibration via R and constant current (20 uA) */
++#define STATUS_FUSE0_VCALMM20_MASK 0x03F00000
++/** field offset */
++#define STATUS_FUSE0_VCALMM20_OFFSET 20
++/** VCALMM100 Voltage Reference
++    Voltage Reference for calibration via R and constant current (100 uA) */
++#define STATUS_FUSE0_VCALMM100_MASK 0x000FC000
++/** field offset */
++#define STATUS_FUSE0_VCALMM100_OFFSET 14
++/** VCALMM400 Voltage Reference
++    Voltage Reference for calibration via R and constant current (400 uA) */
++#define STATUS_FUSE0_VCALMM400_MASK 0x00003F00
++/** field offset */
++#define STATUS_FUSE0_VCALMM400_OFFSET 8
++/** RCALMM R error correction
++    The resistance deviation from ideal R (1000 Ohm) */
++#define STATUS_FUSE0_RCALMM_MASK 0x000000FF
++/** field offset */
++#define STATUS_FUSE0_RCALMM_OFFSET 0
++
++/* Fields of "Fuses for Analog modules" */
++/** reserved Analog eFuses
++    Reserved Register contains information stored in eFuses needed for the analog modules */
++#define STATUS_ANALOG_A0_MASK 0xFF000000
++/** field offset */
++#define STATUS_ANALOG_A0_OFFSET 24
++/** Absolut Temperature
++    Temperature ERROR */
++#define STATUS_ANALOG_TEMPMM_MASK 0x00FC0000
++/** field offset */
++#define STATUS_ANALOG_TEMPMM_OFFSET 18
++/** Bias Voltage Generation
++    temperature dependency */
++#define STATUS_ANALOG_TBGP_MASK 0x00038000
++/** field offset */
++#define STATUS_ANALOG_TBGP_OFFSET 15
++/** Bias Voltage Generation
++    voltage dependency */
++#define STATUS_ANALOG_VBGP_MASK 0x00007000
++/** field offset */
++#define STATUS_ANALOG_VBGP_OFFSET 12
++/** Bias Current Generation */
++#define STATUS_ANALOG_IREFBGP_MASK 0x00000F00
++/** field offset */
++#define STATUS_ANALOG_IREFBGP_OFFSET 8
++/** Drive DAC Gain */
++#define STATUS_ANALOG_GAINDRIVEDAC_MASK 0x000000F0
++/** field offset */
++#define STATUS_ANALOG_GAINDRIVEDAC_OFFSET 4
++/** BIAS DAC Gain */
++#define STATUS_ANALOG_GAINBIASDAC_MASK 0x0000000F
++/** field offset */
++#define STATUS_ANALOG_GAINBIASDAC_OFFSET 0
++
++/* Fields of "Configuration fuses for drivers and pll" */
++/** ddr PU driver
++    ddr pullup driver strength adjustment */
++#define STATUS_CONFIG_DDRPU_MASK 0xC0000000
++/** field offset */
++#define STATUS_CONFIG_DDRPU_OFFSET 30
++/** ddr PD driver
++    ddr pulldown driver strength adjustment */
++#define STATUS_CONFIG_DDRPD_MASK 0x30000000
++/** field offset */
++#define STATUS_CONFIG_DDRPD_OFFSET 28
++/** Authentification Unit enable
++    This bit can only be set via eFuse and enables the authentification unit. */
++#define STATUS_CONFIG_SHA1EN 0x08000000
++/* Not selected
++#define STATUS_CONFIG_SHA1EN_NSEL 0x00000000 */
++/** Selected */
++#define STATUS_CONFIG_SHA1EN_SEL 0x08000000
++/** Encryption Unit enable
++    This bit can only be set via eFuse and enables the encryption unit. */
++#define STATUS_CONFIG_AESEN 0x04000000
++/* Not selected
++#define STATUS_CONFIG_AESEN_NSEL 0x00000000 */
++/** Selected */
++#define STATUS_CONFIG_AESEN_SEL 0x04000000
++/** Subversion Number
++    The subversion number has no direct effect on hardware functions. It is used to provide another chip version number that is fixed in hardware and can be read out by software. In this way different product packages consisting of GPON_MODEM and software can be defined for example */
++#define STATUS_CONFIG_SUBVERS_MASK 0x03C00000
++/** field offset */
++#define STATUS_CONFIG_SUBVERS_OFFSET 22
++/** PLL settings
++    PLL settings for infrastructure block */
++#define STATUS_CONFIG_PLLINFRA_MASK 0x003FF000
++/** field offset */
++#define STATUS_CONFIG_PLLINFRA_OFFSET 12
++/** GPE frequency selection
++    Scaling down the GPE frequency for debugging purpose */
++#define STATUS_CONFIG_GPEFREQ_MASK 0x00000C00
++/** field offset */
++#define STATUS_CONFIG_GPEFREQ_OFFSET 10
++/** RM enable
++    Activates the Read Margin Settings defined in the RM Field, for all VIRAGE Memories except GPE */
++#define STATUS_CONFIG_RME 0x00000200
++/* Not selected
++#define STATUS_CONFIG_RME_NSEL 0x00000000 */
++/** Selected */
++#define STATUS_CONFIG_RME_SEL 0x00000200
++/** RM settings
++    Read Marging Settings for all VIRAGE Memories except GPE */
++#define STATUS_CONFIG_RM_MASK 0x000001E0
++/** field offset */
++#define STATUS_CONFIG_RM_OFFSET 5
++/** RM enable for GPE Memories
++    Activates the Read Margin Settings defined in the RM Field */
++#define STATUS_CONFIG_RMEGPE 0x00000010
++/* Not selected
++#define STATUS_CONFIG_RMEGPE_NSEL 0x00000000 */
++/** Selected */
++#define STATUS_CONFIG_RMEGPE_SEL 0x00000010
++/** RM settings for GPE Memories
++    Read Marging Settings for VIRAGE Memories in GPE module */
++#define STATUS_CONFIG_RMGPE_MASK 0x0000000F
++/** field offset */
++#define STATUS_CONFIG_RMGPE_OFFSET 0
++
++/* Fields of "SPARE fuse register 1" */
++/** spare fuse1
++    eFuses not assigned to hw/sw, can be used for future applications */
++#define STATUS_FUSE1_F1_MASK 0xFFF00000
++/** field offset */
++#define STATUS_FUSE1_F1_OFFSET 20
++/** DCDC DDR OFFSET
++    offset error sense path */
++#define STATUS_FUSE1_OFFSETDDRDCDC_MASK 0x000F0000
++/** field offset */
++#define STATUS_FUSE1_OFFSETDDRDCDC_OFFSET 16
++/** DCDC DDR GAIN
++    gain error sense path */
++#define STATUS_FUSE1_GAINDDRDCDC_MASK 0x0000FC00
++/** field offset */
++#define STATUS_FUSE1_GAINDDRDCDC_OFFSET 10
++/** DCDC APD OFFSET
++    offset error sense path */
++#define STATUS_FUSE1_OFFSETAPDDCDC_MASK 0x000003C0
++/** field offset */
++#define STATUS_FUSE1_OFFSETAPDDCDC_OFFSET 6
++/** DCDC APD GAIN
++    gain error sense path */
++#define STATUS_FUSE1_GAINAPDDCDC_MASK 0x0000003F
++/** field offset */
++#define STATUS_FUSE1_GAINAPDDCDC_OFFSET 0
++
++/* Fields of "Configuration for sbs0 rambist" */
++/** Disable asc monitoring during boot-up
++    Bit is used to avoid asc output for reducing pattern count on testsystem */
++#define STATUS_MBCFG_ASC_DBGDIS 0x01000000
++/* Disable
++#define STATUS_MBCFG_ASC_DBGDIS_DIS 0x00000000 */
++/** Enable */
++#define STATUS_MBCFG_ASC_DBGDIS_EN 0x01000000
++/** Descrambling Enable/Disable
++    Enables Address and Data Descrambling for internal Memory Test */
++#define STATUS_MBCFG_DSC 0x00800000
++/* Disable
++#define STATUS_MBCFG_DSC_DIS 0x00000000 */
++/** Enable */
++#define STATUS_MBCFG_DSC_EN 0x00800000
++/** Enable repair mode
++    When bit is set redundancy repair mode is activated */
++#define STATUS_MBCFG_REPAIR 0x00400000
++/* Disable
++#define STATUS_MBCFG_REPAIR_DIS 0x00000000 */
++/** Enable */
++#define STATUS_MBCFG_REPAIR_EN 0x00400000
++/** DEBUG Mode */
++#define STATUS_MBCFG_DBG 0x00200000
++/* Disable
++#define STATUS_MBCFG_DBG_DIS 0x00000000 */
++/** Enable */
++#define STATUS_MBCFG_DBG_EN 0x00200000
++/** Retention Time
++    Length oft the Retention Time */
++#define STATUS_MBCFG_RTIME_MASK 0x001C0000
++/** field offset */
++#define STATUS_MBCFG_RTIME_OFFSET 18
++/** retention mode is switched off */
++#define STATUS_MBCFG_RTIME_RET0 0x00000000
++/** Retention time 50 ms */
++#define STATUS_MBCFG_RTIME_RET50 0x00040000
++/** Retention time 60 ms */
++#define STATUS_MBCFG_RTIME_RET60 0x00080000
++/** Retention time 70 ms */
++#define STATUS_MBCFG_RTIME_RET70 0x000C0000
++/** Retention time 80 ms */
++#define STATUS_MBCFG_RTIME_RET80 0x00100000
++/** Retention time 90 ms */
++#define STATUS_MBCFG_RTIME_RET90 0x00140000
++/** Retention time 1000 ms */
++#define STATUS_MBCFG_RTIME_RET1000 0x00180000
++/** Test ID
++    Defines the test to execute. In which order the tests are executed can be defined via TID_n (TID_1 1st execution, TID_2 2nd execution ..) */
++#define STATUS_MBCFG_TID_5_MASK 0x00038000
++/** field offset */
++#define STATUS_MBCFG_TID_5_OFFSET 15
++/** No test is performed */
++#define STATUS_MBCFG_TID_5_NONE 0x00000000
++/** March test */
++#define STATUS_MBCFG_TID_5_MARCH 0x00008000
++/** Checkerboard test */
++#define STATUS_MBCFG_TID_5_CHCK 0x00010000
++/** Hammer test */
++#define STATUS_MBCFG_TID_5_HAM 0x00018000
++/** Address decoder test */
++#define STATUS_MBCFG_TID_5_ADEC 0x00020000
++/** Write mask byte test */
++#define STATUS_MBCFG_TID_5_WMBYTE 0x00028000
++/** Reserved */
++#define STATUS_MBCFG_TID_5_RES 0x00030000
++/** Test ID
++    Defines the test to execute. In which order the tests are executed can be defined via TID_n (TID_1 1st execution, TID_2 2nd execution ..) */
++#define STATUS_MBCFG_TID_4_MASK 0x00007000
++/** field offset */
++#define STATUS_MBCFG_TID_4_OFFSET 12
++/** No test is performed */
++#define STATUS_MBCFG_TID_4_NONE 0x00000000
++/** March test */
++#define STATUS_MBCFG_TID_4_MARCH 0x00001000
++/** Checkerboard test */
++#define STATUS_MBCFG_TID_4_CHCK 0x00002000
++/** Hammer test */
++#define STATUS_MBCFG_TID_4_HAM 0x00003000
++/** Address decoder test */
++#define STATUS_MBCFG_TID_4_ADEC 0x00004000
++/** Write mask byte test */
++#define STATUS_MBCFG_TID_4_WMBYTE 0x00005000
++/** Reserved */
++#define STATUS_MBCFG_TID_4_RES 0x00006000
++/** Test ID
++    Defines the test to execute. In which order the tests are executed can be defined via TID_n (TID_1 1st execution, TID_2 2nd execution ..) */
++#define STATUS_MBCFG_TID_3_MASK 0x00000E00
++/** field offset */
++#define STATUS_MBCFG_TID_3_OFFSET 9
++/** No test is performed */
++#define STATUS_MBCFG_TID_3_NONE 0x00000000
++/** March test */
++#define STATUS_MBCFG_TID_3_MARCH 0x00000200
++/** Checkerboard test */
++#define STATUS_MBCFG_TID_3_CHCK 0x00000400
++/** Hammer test */
++#define STATUS_MBCFG_TID_3_HAM 0x00000600
++/** Address decoder test */
++#define STATUS_MBCFG_TID_3_ADEC 0x00000800
++/** Write mask byte test */
++#define STATUS_MBCFG_TID_3_WMBYTE 0x00000A00
++/** Reserved */
++#define STATUS_MBCFG_TID_3_RES 0x00000C00
++/** Test ID
++    Defines the test to execute. In which order the tests are executed can be defined via TID_n (TID_1 1st execution, TID_2 2nd execution ..) */
++#define STATUS_MBCFG_TID_2_MASK 0x000001C0
++/** field offset */
++#define STATUS_MBCFG_TID_2_OFFSET 6
++/** No test is performed */
++#define STATUS_MBCFG_TID_2_NONE 0x00000000
++/** March test */
++#define STATUS_MBCFG_TID_2_MARCH 0x00000040
++/** Checkerboard test */
++#define STATUS_MBCFG_TID_2_CHCK 0x00000080
++/** Hammer test */
++#define STATUS_MBCFG_TID_2_HAM 0x000000C0
++/** Address decoder test */
++#define STATUS_MBCFG_TID_2_ADEC 0x00000100
++/** Write mask byte test */
++#define STATUS_MBCFG_TID_2_WMBYTE 0x00000140
++/** Reserved */
++#define STATUS_MBCFG_TID_2_RES 0x00000180
++/** Test ID
++    Defines the test to execute. In which order the tests are executed can be defined via TID_n (TID_1 1st execution, TID_2 2nd execution ..) */
++#define STATUS_MBCFG_TID_1_MASK 0x00000038
++/** field offset */
++#define STATUS_MBCFG_TID_1_OFFSET 3
++/** No test is performed */
++#define STATUS_MBCFG_TID_1_NONE 0x00000000
++/** March test */
++#define STATUS_MBCFG_TID_1_MARCH 0x00000008
++/** Checkerboard test */
++#define STATUS_MBCFG_TID_1_CHCK 0x00000010
++/** Hammer test */
++#define STATUS_MBCFG_TID_1_HAM 0x00000018
++/** Address decoder test */
++#define STATUS_MBCFG_TID_1_ADEC 0x00000020
++/** Write mask byte test */
++#define STATUS_MBCFG_TID_1_WMBYTE 0x00000028
++/** Reserved */
++#define STATUS_MBCFG_TID_1_RES 0x00000030
++/** Test ID
++    Defines the test to execute. In which order the tests are executed can be defined via TID_n (TID_1 1st execution, TID_2 2nd execution ..) */
++#define STATUS_MBCFG_TID_0_MASK 0x00000007
++/** field offset */
++#define STATUS_MBCFG_TID_0_OFFSET 0
++/** No test is performed */
++#define STATUS_MBCFG_TID_0_NONE 0x00000000
++/** March test */
++#define STATUS_MBCFG_TID_0_MARCH 0x00000001
++/** Checkerboard test */
++#define STATUS_MBCFG_TID_0_CHCK 0x00000002
++/** Hammer test */
++#define STATUS_MBCFG_TID_0_HAM 0x00000003
++/** Address decoder test */
++#define STATUS_MBCFG_TID_0_ADEC 0x00000004
++/** Write mask byte test */
++#define STATUS_MBCFG_TID_0_WMBYTE 0x00000005
++/** Reserved */
++#define STATUS_MBCFG_TID_0_RES 0x00000006
++
++/* Fields of "sbs0 bist result and debug data" */
++/** BIST result and debug data
++    Stores additional debug information */
++#define STATUS_MBDATA_DATA_MASK 0xFFFFFFF8
++/** field offset */
++#define STATUS_MBDATA_DATA_OFFSET 3
++/** MBIST NOGO
++    The BIST failed and cannot be repaired due to many failure locations */
++#define STATUS_MBDATA_MBNOGO 0x00000004
++/** MBIST FAILED
++    The BIST failed but can be repaired */
++#define STATUS_MBDATA_MBFAIL 0x00000002
++/** MBIST PASSED
++    The BIST passed without any Failures */
++#define STATUS_MBDATA_MBPASS 0x00000001
++
++/*! @} */ /* STATUS_REGISTER */
++
++#endif /* _status_reg_h */
+--- /dev/null
++++ b/arch/mips/include/asm/mach-lantiq/falcon/sys1_reg.h
+@@ -0,0 +1,2008 @@
++/******************************************************************************
++
++                               Copyright (c) 2010
++                            Lantiq Deutschland GmbH
++
++  For licensing information, see the file 'LICENSE' in the root folder of
++  this software module.
++
++******************************************************************************/
++
++#ifndef _sys1_reg_h
++#define _sys1_reg_h
++
++/** \addtogroup SYS1_REGISTER
++   @{
++*/
++/* access macros */
++#define sys1_r32(reg) reg_r32(&sys1->reg)
++#define sys1_w32(val, reg) reg_w32(val, &sys1->reg)
++#define sys1_w32_mask(clear, set, reg) reg_w32_mask(clear, set, &sys1->reg)
++#define sys1_r32_table(reg, idx) reg_r32_table(sys1->reg, idx)
++#define sys1_w32_table(val, reg, idx) reg_w32_table(val, sys1->reg, idx)
++#define sys1_w32_table_mask(clear, set, reg, idx) reg_w32_table_mask(clear, set, sys1->reg, idx)
++#define sys1_adr_table(reg, idx) adr_table(sys1->reg, idx)
++
++
++/** SYS1 register structure */
++struct gpon_reg_sys1
++{
++   /** Clock Status Register */
++   unsigned int clks; /* 0x00000000 */
++   /** Clock Enable Register
++       Via this register the clocks for the domains can be enabled. */
++   unsigned int clken; /* 0x00000004 */
++   /** Clock Clear Register
++       Via this register the clocks for the domains can be disabled. */
++   unsigned int clkclr; /* 0x00000008 */
++   /** Reserved */
++   unsigned int res_0[5]; /* 0x0000000C */
++   /** Activation Status Register */
++   unsigned int acts; /* 0x00000020 */
++   /** Activation Register
++       Via this register the domains can be activated. */
++   unsigned int act; /* 0x00000024 */
++   /** Deactivation Register
++       Via this register the domains can be deactivated. */
++   unsigned int deact; /* 0x00000028 */
++   /** Reboot Trigger Register
++       Via this register the domains can be rebooted (sent through reset). */
++   unsigned int rbt; /* 0x0000002C */
++   /** Reserved */
++   unsigned int res_1[4]; /* 0x00000030 */
++   /** CPU0 Clock Control Register
++       Clock control register for CPU0 */
++   unsigned int cpu0cc; /* 0x00000040 */
++   /** Reserved */
++   unsigned int res_2[7]; /* 0x00000044 */
++   /** CPU0 Reset Source Register
++       Via this register the CPU can find the the root cause for the boot it currently goes through, and take the appropriate measures. */
++   unsigned int cpu0rs; /* 0x00000060 */
++   /** Reserved */
++   unsigned int res_3[7]; /* 0x00000064 */
++   /** CPU0 Wakeup Configuration Register
++       Controls the wakeup condition for CPU0. Note: The upper 16 bit of this register have to be set to the same value as the mask bits within the yield-resume interface block. If the yield-resume interface is not used at all, set the upper 16 bit to 0. */
++   unsigned int cpu0wcfg; /* 0x00000080 */
++   /** Reserved */
++   unsigned int res_4[7]; /* 0x00000084 */
++   /** Bootmode Control Register
++       Reflects the bootmode for the CPU and provides means to manipulate it. */
++   unsigned int bmc; /* 0x000000A0 */
++   /** Reserved */
++   unsigned int res_5[3]; /* 0x000000A4 */
++   /** Sleep Configuration Register */
++   unsigned int scfg; /* 0x000000B0 */
++   /** Power Down Configuration Register
++       Via this register the configuration is done whether in case of deactivation the power supply of the domain shall be switched off. */
++   unsigned int pdcfg; /* 0x000000B4 */
++   /** CLKO Pad Control Register
++       Controls the behaviour of the CLKO pad/ball. */
++   unsigned int clkoc; /* 0x000000B8 */
++   /** Infrastructure Control Register
++       Controls the behaviour of the components of the infrastructure block. */
++   unsigned int infrac; /* 0x000000BC */
++   /** HRST_OUT_N Control Register
++       Controls the behaviour of the HRST_OUT_N pin. */
++   unsigned int hrstoutc; /* 0x000000C0 */
++   /** EBU Clock Control Register
++       Clock control register for the EBU. */
++   unsigned int ebucc; /* 0x000000C4 */
++   /** Reserved */
++   unsigned int res_6[2]; /* 0x000000C8 */
++   /** NMI Status Register
++       The Test NMI source is the GPTC counter 1A overflow bit. */
++   unsigned int nmis; /* 0x000000D0 */
++   /** NMI Set Register */
++   unsigned int nmiset; /* 0x000000D4 */
++   /** NMI Clear Register */
++   unsigned int nmiclr; /* 0x000000D8 */
++   /** NMI Test Configuration Register */
++   unsigned int nmitcfg; /* 0x000000DC */
++   /** NMI VPE1 Control Register */
++   unsigned int nmivpe1c; /* 0x000000E0 */
++   /** Reserved */
++   unsigned int res_7[3]; /* 0x000000E4 */
++   /** IRN Capture Register
++       This register shows the currently active interrupt events masked with the corresponding enable bits of the IRNEN register. The interrupts can be acknowledged by a write operation. */
++   unsigned int irncr; /* 0x000000F0 */
++   /** IRN Interrupt Control Register
++       A write operation directly effects the interrupts. This can be used to trigger events under software control for testing purposes. A read operation returns the unmasked interrupt events. */
++   unsigned int irnicr; /* 0x000000F4 */
++   /** IRN Interrupt Enable Register
++       This register contains the enable (or mask) bits for the interrupts. Disabled interrupts are not visible in the IRNCR register and are not signalled via the interrupt line towards the controller. */
++   unsigned int irnen; /* 0x000000F8 */
++   /** Reserved */
++   unsigned int res_8; /* 0x000000FC */
++};
++
++
++/* Fields of "Clock Status Register" */
++/** STATUS Clock Enable
++    Shows the clock enable bit for the STATUS domain. This domain contains the STATUS block. */
++#define CLKS_STATUS 0x80000000
++/* Disable
++#define CLKS_STATUS_DIS 0x00000000 */
++/** Enable */
++#define CLKS_STATUS_EN 0x80000000
++/** SHA1 Clock Enable
++    Shows the clock enable bit for the SHA1 domain. This domain contains the SHA1 block. */
++#define CLKS_SHA1 0x40000000
++/* Disable
++#define CLKS_SHA1_DIS 0x00000000 */
++/** Enable */
++#define CLKS_SHA1_EN 0x40000000
++/** AES Clock Enable
++    Shows the clock enable bit for the AES domain. This domain contains the AES block. */
++#define CLKS_AES 0x20000000
++/* Disable
++#define CLKS_AES_DIS 0x00000000 */
++/** Enable */
++#define CLKS_AES_EN 0x20000000
++/** PCM Clock Enable
++    Shows the clock enable bit for the PCM domain. This domain contains the PCM interface block. */
++#define CLKS_PCM 0x10000000
++/* Disable
++#define CLKS_PCM_DIS 0x00000000 */
++/** Enable */
++#define CLKS_PCM_EN 0x10000000
++/** FSCT Clock Enable
++    Shows the clock enable bit for the FSCT domain. This domain contains the FSCT block. */
++#define CLKS_FSCT 0x08000000
++/* Disable
++#define CLKS_FSCT_DIS 0x00000000 */
++/** Enable */
++#define CLKS_FSCT_EN 0x08000000
++/** GPTC Clock Enable
++    Shows the clock enable bit for the GPTC domain. This domain contains the GPTC block. */
++#define CLKS_GPTC 0x04000000
++/* Disable
++#define CLKS_GPTC_DIS 0x00000000 */
++/** Enable */
++#define CLKS_GPTC_EN 0x04000000
++/** MPS Clock Enable
++    Shows the clock enable bit for the MPS domain. This domain contains the MPS block. */
++#define CLKS_MPS 0x02000000
++/* Disable
++#define CLKS_MPS_DIS 0x00000000 */
++/** Enable */
++#define CLKS_MPS_EN 0x02000000
++/** DFEV0 Clock Enable
++    Shows the clock enable bit for the DFEV0 domain. This domain contains the DFEV0 block. */
++#define CLKS_DFEV0 0x01000000
++/* Disable
++#define CLKS_DFEV0_DIS 0x00000000 */
++/** Enable */
++#define CLKS_DFEV0_EN 0x01000000
++/** PADCTRL4 Clock Enable
++    Shows the clock enable bit for the PADCTRL4 domain. This domain contains the PADCTRL4 block. */
++#define CLKS_PADCTRL4 0x00400000
++/* Disable
++#define CLKS_PADCTRL4_DIS 0x00000000 */
++/** Enable */
++#define CLKS_PADCTRL4_EN 0x00400000
++/** PADCTRL3 Clock Enable
++    Shows the clock enable bit for the PADCTRL3 domain. This domain contains the PADCTRL3 block. */
++#define CLKS_PADCTRL3 0x00200000
++/* Disable
++#define CLKS_PADCTRL3_DIS 0x00000000 */
++/** Enable */
++#define CLKS_PADCTRL3_EN 0x00200000
++/** PADCTRL1 Clock Enable
++    Shows the clock enable bit for the PADCTRL1 domain. This domain contains the PADCTRL1 block. */
++#define CLKS_PADCTRL1 0x00100000
++/* Disable
++#define CLKS_PADCTRL1_DIS 0x00000000 */
++/** Enable */
++#define CLKS_PADCTRL1_EN 0x00100000
++/** P4 Clock Enable
++    Shows the clock enable bit for the P4 domain. This domain contains the P4 instance of the GPIO block. */
++#define CLKS_P4 0x00040000
++/* Disable
++#define CLKS_P4_DIS 0x00000000 */
++/** Enable */
++#define CLKS_P4_EN 0x00040000
++/** P3 Clock Enable
++    Shows the clock enable bit for the P3 domain. This domain contains the P3 instance of the GPIO block. */
++#define CLKS_P3 0x00020000
++/* Disable
++#define CLKS_P3_DIS 0x00000000 */
++/** Enable */
++#define CLKS_P3_EN 0x00020000
++/** P1 Clock Enable
++    Shows the clock enable bit for the P1 domain. This domain contains the P1 instance of the GPIO block. */
++#define CLKS_P1 0x00010000
++/* Disable
++#define CLKS_P1_DIS 0x00000000 */
++/** Enable */
++#define CLKS_P1_EN 0x00010000
++/** HOST Clock Enable
++    Shows the clock enable bit for the HOST domain. This domain contains the HOST interface block. */
++#define CLKS_HOST 0x00008000
++/* Disable
++#define CLKS_HOST_DIS 0x00000000 */
++/** Enable */
++#define CLKS_HOST_EN 0x00008000
++/** I2C Clock Enable
++    Shows the clock enable bit for the I2C domain. This domain contains the I2C interface block. */
++#define CLKS_I2C 0x00004000
++/* Disable
++#define CLKS_I2C_DIS 0x00000000 */
++/** Enable */
++#define CLKS_I2C_EN 0x00004000
++/** SSC0 Clock Enable
++    Shows the clock enable bit for the SSC0 domain. This domain contains the SSC0 interface block. */
++#define CLKS_SSC0 0x00002000
++/* Disable
++#define CLKS_SSC0_DIS 0x00000000 */
++/** Enable */
++#define CLKS_SSC0_EN 0x00002000
++/** ASC0 Clock Enable
++    Shows the clock enable bit for the ASC0 domain. This domain contains the ASC0 interface block. */
++#define CLKS_ASC0 0x00001000
++/* Disable
++#define CLKS_ASC0_DIS 0x00000000 */
++/** Enable */
++#define CLKS_ASC0_EN 0x00001000
++/** ASC1 Clock Enable
++    Shows the clock enable bit for the ASC1 domain. This domain contains the ASC1 block. */
++#define CLKS_ASC1 0x00000800
++/* Disable
++#define CLKS_ASC1_DIS 0x00000000 */
++/** Enable */
++#define CLKS_ASC1_EN 0x00000800
++/** DCDCAPD Clock Enable
++    Shows the clock enable bit for the DCDCAPD domain. This domain contains the digital part of the 60 volts DCDC converter. */
++#define CLKS_DCDCAPD 0x00000400
++/* Disable
++#define CLKS_DCDCAPD_DIS 0x00000000 */
++/** Enable */
++#define CLKS_DCDCAPD_EN 0x00000400
++/** DCDCDDR Clock Enable
++    Shows the clock enable bit for the DCDCDDR domain. This domain contains the digital part of the DCDC converter dedicated to the DDR interface. */
++#define CLKS_DCDCDDR 0x00000200
++/* Disable
++#define CLKS_DCDCDDR_DIS 0x00000000 */
++/** Enable */
++#define CLKS_DCDCDDR_EN 0x00000200
++/** DCDC1V0 Clock Enable
++    Shows the clock enable bit for the DCDC1V0 domain. This domain contains the digital part of the 1.0 volts DCDC converter. */
++#define CLKS_DCDC1V0 0x00000100
++/* Disable
++#define CLKS_DCDC1V0_DIS 0x00000000 */
++/** Enable */
++#define CLKS_DCDC1V0_EN 0x00000100
++/** TRC2MEM Clock Enable
++    Shows the clock enable bit for the TRC2MEM domain. This domain contains the TRC2MEM block. */
++#define CLKS_TRC2MEM 0x00000040
++/* Disable
++#define CLKS_TRC2MEM_DIS 0x00000000 */
++/** Enable */
++#define CLKS_TRC2MEM_EN 0x00000040
++/** DDR Clock Enable
++    Shows the clock enable bit for the DDR domain. This domain contains the DDR interface block. */
++#define CLKS_DDR 0x00000020
++/* Disable
++#define CLKS_DDR_DIS 0x00000000 */
++/** Enable */
++#define CLKS_DDR_EN 0x00000020
++/** EBU Clock Enable
++    Shows the clock enable bit for the EBU domain. This domain contains the EBU interface block. */
++#define CLKS_EBU 0x00000010
++/* Disable
++#define CLKS_EBU_DIS 0x00000000 */
++/** Enable */
++#define CLKS_EBU_EN 0x00000010
++
++/* Fields of "Clock Enable Register" */
++/** Set Clock Enable STATUS
++    Sets the clock enable bit of the STATUS domain. This domain contains the STATUS block. */
++#define CLKEN_STATUS 0x80000000
++/* No-Operation
++#define CLKEN_STATUS_NOP 0x00000000 */
++/** Set */
++#define CLKEN_STATUS_SET 0x80000000
++/** Set Clock Enable SHA1
++    Sets the clock enable bit of the SHA1 domain. This domain contains the SHA1 block. */
++#define CLKEN_SHA1 0x40000000
++/* No-Operation
++#define CLKEN_SHA1_NOP 0x00000000 */
++/** Set */
++#define CLKEN_SHA1_SET 0x40000000
++/** Set Clock Enable AES
++    Sets the clock enable bit of the AES domain. This domain contains the AES block. */
++#define CLKEN_AES 0x20000000
++/* No-Operation
++#define CLKEN_AES_NOP 0x00000000 */
++/** Set */
++#define CLKEN_AES_SET 0x20000000
++/** Set Clock Enable PCM
++    Sets the clock enable bit of the PCM domain. This domain contains the PCM interface block. */
++#define CLKEN_PCM 0x10000000
++/* No-Operation
++#define CLKEN_PCM_NOP 0x00000000 */
++/** Set */
++#define CLKEN_PCM_SET 0x10000000
++/** Set Clock Enable FSCT
++    Sets the clock enable bit of the FSCT domain. This domain contains the FSCT block. */
++#define CLKEN_FSCT 0x08000000
++/* No-Operation
++#define CLKEN_FSCT_NOP 0x00000000 */
++/** Set */
++#define CLKEN_FSCT_SET 0x08000000
++/** Set Clock Enable GPTC
++    Sets the clock enable bit of the GPTC domain. This domain contains the GPTC block. */
++#define CLKEN_GPTC 0x04000000
++/* No-Operation
++#define CLKEN_GPTC_NOP 0x00000000 */
++/** Set */
++#define CLKEN_GPTC_SET 0x04000000
++/** Set Clock Enable MPS
++    Sets the clock enable bit of the MPS domain. This domain contains the MPS block. */
++#define CLKEN_MPS 0x02000000
++/* No-Operation
++#define CLKEN_MPS_NOP 0x00000000 */
++/** Set */
++#define CLKEN_MPS_SET 0x02000000
++/** Set Clock Enable DFEV0
++    Sets the clock enable bit of the DFEV0 domain. This domain contains the DFEV0 block. */
++#define CLKEN_DFEV0 0x01000000
++/* No-Operation
++#define CLKEN_DFEV0_NOP 0x00000000 */
++/** Set */
++#define CLKEN_DFEV0_SET 0x01000000
++/** Set Clock Enable PADCTRL4
++    Sets the clock enable bit of the PADCTRL4 domain. This domain contains the PADCTRL4 block. */
++#define CLKEN_PADCTRL4 0x00400000
++/* No-Operation
++#define CLKEN_PADCTRL4_NOP 0x00000000 */
++/** Set */
++#define CLKEN_PADCTRL4_SET 0x00400000
++/** Set Clock Enable PADCTRL3
++    Sets the clock enable bit of the PADCTRL3 domain. This domain contains the PADCTRL3 block. */
++#define CLKEN_PADCTRL3 0x00200000
++/* No-Operation
++#define CLKEN_PADCTRL3_NOP 0x00000000 */
++/** Set */
++#define CLKEN_PADCTRL3_SET 0x00200000
++/** Set Clock Enable PADCTRL1
++    Sets the clock enable bit of the PADCTRL1 domain. This domain contains the PADCTRL1 block. */
++#define CLKEN_PADCTRL1 0x00100000
++/* No-Operation
++#define CLKEN_PADCTRL1_NOP 0x00000000 */
++/** Set */
++#define CLKEN_PADCTRL1_SET 0x00100000
++/** Set Clock Enable P4
++    Sets the clock enable bit of the P4 domain. This domain contains the P4 instance of the GPIO block. */
++#define CLKEN_P4 0x00040000
++/* No-Operation
++#define CLKEN_P4_NOP 0x00000000 */
++/** Set */
++#define CLKEN_P4_SET 0x00040000
++/** Set Clock Enable P3
++    Sets the clock enable bit of the P3 domain. This domain contains the P3 instance of the GPIO block. */
++#define CLKEN_P3 0x00020000
++/* No-Operation
++#define CLKEN_P3_NOP 0x00000000 */
++/** Set */
++#define CLKEN_P3_SET 0x00020000
++/** Set Clock Enable P1
++    Sets the clock enable bit of the P1 domain. This domain contains the P1 instance of the GPIO block. */
++#define CLKEN_P1 0x00010000
++/* No-Operation
++#define CLKEN_P1_NOP 0x00000000 */
++/** Set */
++#define CLKEN_P1_SET 0x00010000
++/** Set Clock Enable HOST
++    Sets the clock enable bit of the HOST domain. This domain contains the HOST interface block. */
++#define CLKEN_HOST 0x00008000
++/* No-Operation
++#define CLKEN_HOST_NOP 0x00000000 */
++/** Set */
++#define CLKEN_HOST_SET 0x00008000
++/** Set Clock Enable I2C
++    Sets the clock enable bit of the I2C domain. This domain contains the I2C interface block. */
++#define CLKEN_I2C 0x00004000
++/* No-Operation
++#define CLKEN_I2C_NOP 0x00000000 */
++/** Set */
++#define CLKEN_I2C_SET 0x00004000
++/** Set Clock Enable SSC0
++    Sets the clock enable bit of the SSC0 domain. This domain contains the SSC0 interface block. */
++#define CLKEN_SSC0 0x00002000
++/* No-Operation
++#define CLKEN_SSC0_NOP 0x00000000 */
++/** Set */
++#define CLKEN_SSC0_SET 0x00002000
++/** Set Clock Enable ASC0
++    Sets the clock enable bit of the ASC0 domain. This domain contains the ASC0 interface block. */
++#define CLKEN_ASC0 0x00001000
++/* No-Operation
++#define CLKEN_ASC0_NOP 0x00000000 */
++/** Set */
++#define CLKEN_ASC0_SET 0x00001000
++/** Set Clock Enable ASC1
++    Sets the clock enable bit of the ASC1 domain. This domain contains the ASC1 block. */
++#define CLKEN_ASC1 0x00000800
++/* No-Operation
++#define CLKEN_ASC1_NOP 0x00000000 */
++/** Set */
++#define CLKEN_ASC1_SET 0x00000800
++/** Set Clock Enable DCDCAPD
++    Sets the clock enable bit of the DCDCAPD domain. This domain contains the digital part of the 60 volts DCDC converter. */
++#define CLKEN_DCDCAPD 0x00000400
++/* No-Operation
++#define CLKEN_DCDCAPD_NOP 0x00000000 */
++/** Set */
++#define CLKEN_DCDCAPD_SET 0x00000400
++/** Set Clock Enable DCDCDDR
++    Sets the clock enable bit of the DCDCDDR domain. This domain contains the digital part of the DCDC converter dedicated to the DDR interface. */
++#define CLKEN_DCDCDDR 0x00000200
++/* No-Operation
++#define CLKEN_DCDCDDR_NOP 0x00000000 */
++/** Set */
++#define CLKEN_DCDCDDR_SET 0x00000200
++/** Set Clock Enable DCDC1V0
++    Sets the clock enable bit of the DCDC1V0 domain. This domain contains the digital part of the 1.0 volts DCDC converter. */
++#define CLKEN_DCDC1V0 0x00000100
++/* No-Operation
++#define CLKEN_DCDC1V0_NOP 0x00000000 */
++/** Set */
++#define CLKEN_DCDC1V0_SET 0x00000100
++/** Set Clock Enable TRC2MEM
++    Sets the clock enable bit of the TRC2MEM domain. This domain contains the TRC2MEM block. */
++#define CLKEN_TRC2MEM 0x00000040
++/* No-Operation
++#define CLKEN_TRC2MEM_NOP 0x00000000 */
++/** Set */
++#define CLKEN_TRC2MEM_SET 0x00000040
++/** Set Clock Enable DDR
++    Sets the clock enable bit of the DDR domain. This domain contains the DDR interface block. */
++#define CLKEN_DDR 0x00000020
++/* No-Operation
++#define CLKEN_DDR_NOP 0x00000000 */
++/** Set */
++#define CLKEN_DDR_SET 0x00000020
++/** Set Clock Enable EBU
++    Sets the clock enable bit of the EBU domain. This domain contains the EBU interface block. */
++#define CLKEN_EBU 0x00000010
++/* No-Operation
++#define CLKEN_EBU_NOP 0x00000000 */
++/** Set */
++#define CLKEN_EBU_SET 0x00000010
++
++/* Fields of "Clock Clear Register" */
++/** Clear Clock Enable STATUS
++    Clears the clock enable bit of the STATUS domain. This domain contains the STATUS block. */
++#define CLKCLR_STATUS 0x80000000
++/* No-Operation
++#define CLKCLR_STATUS_NOP 0x00000000 */
++/** Clear */
++#define CLKCLR_STATUS_CLR 0x80000000
++/** Clear Clock Enable SHA1
++    Clears the clock enable bit of the SHA1 domain. This domain contains the SHA1 block. */
++#define CLKCLR_SHA1 0x40000000
++/* No-Operation
++#define CLKCLR_SHA1_NOP 0x00000000 */
++/** Clear */
++#define CLKCLR_SHA1_CLR 0x40000000
++/** Clear Clock Enable AES
++    Clears the clock enable bit of the AES domain. This domain contains the AES block. */
++#define CLKCLR_AES 0x20000000
++/* No-Operation
++#define CLKCLR_AES_NOP 0x00000000 */
++/** Clear */
++#define CLKCLR_AES_CLR 0x20000000
++/** Clear Clock Enable PCM
++    Clears the clock enable bit of the PCM domain. This domain contains the PCM interface block. */
++#define CLKCLR_PCM 0x10000000
++/* No-Operation
++#define CLKCLR_PCM_NOP 0x00000000 */
++/** Clear */
++#define CLKCLR_PCM_CLR 0x10000000
++/** Clear Clock Enable FSCT
++    Clears the clock enable bit of the FSCT domain. This domain contains the FSCT block. */
++#define CLKCLR_FSCT 0x08000000
++/* No-Operation
++#define CLKCLR_FSCT_NOP 0x00000000 */
++/** Clear */
++#define CLKCLR_FSCT_CLR 0x08000000
++/** Clear Clock Enable GPTC
++    Clears the clock enable bit of the GPTC domain. This domain contains the GPTC block. */
++#define CLKCLR_GPTC 0x04000000
++/* No-Operation
++#define CLKCLR_GPTC_NOP 0x00000000 */
++/** Clear */
++#define CLKCLR_GPTC_CLR 0x04000000
++/** Clear Clock Enable MPS
++    Clears the clock enable bit of the MPS domain. This domain contains the MPS block. */
++#define CLKCLR_MPS 0x02000000
++/* No-Operation
++#define CLKCLR_MPS_NOP 0x00000000 */
++/** Clear */
++#define CLKCLR_MPS_CLR 0x02000000
++/** Clear Clock Enable DFEV0
++    Clears the clock enable bit of the DFEV0 domain. This domain contains the DFEV0 block. */
++#define CLKCLR_DFEV0 0x01000000
++/* No-Operation
++#define CLKCLR_DFEV0_NOP 0x00000000 */
++/** Clear */
++#define CLKCLR_DFEV0_CLR 0x01000000
++/** Clear Clock Enable PADCTRL4
++    Clears the clock enable bit of the PADCTRL4 domain. This domain contains the PADCTRL4 block. */
++#define CLKCLR_PADCTRL4 0x00400000
++/* No-Operation
++#define CLKCLR_PADCTRL4_NOP 0x00000000 */
++/** Clear */
++#define CLKCLR_PADCTRL4_CLR 0x00400000
++/** Clear Clock Enable PADCTRL3
++    Clears the clock enable bit of the PADCTRL3 domain. This domain contains the PADCTRL3 block. */
++#define CLKCLR_PADCTRL3 0x00200000
++/* No-Operation
++#define CLKCLR_PADCTRL3_NOP 0x00000000 */
++/** Clear */
++#define CLKCLR_PADCTRL3_CLR 0x00200000
++/** Clear Clock Enable PADCTRL1
++    Clears the clock enable bit of the PADCTRL1 domain. This domain contains the PADCTRL1 block. */
++#define CLKCLR_PADCTRL1 0x00100000
++/* No-Operation
++#define CLKCLR_PADCTRL1_NOP 0x00000000 */
++/** Clear */
++#define CLKCLR_PADCTRL1_CLR 0x00100000
++/** Clear Clock Enable P4
++    Clears the clock enable bit of the P4 domain. This domain contains the P4 instance of the GPIO block. */
++#define CLKCLR_P4 0x00040000
++/* No-Operation
++#define CLKCLR_P4_NOP 0x00000000 */
++/** Clear */
++#define CLKCLR_P4_CLR 0x00040000
++/** Clear Clock Enable P3
++    Clears the clock enable bit of the P3 domain. This domain contains the P3 instance of the GPIO block. */
++#define CLKCLR_P3 0x00020000
++/* No-Operation
++#define CLKCLR_P3_NOP 0x00000000 */
++/** Clear */
++#define CLKCLR_P3_CLR 0x00020000
++/** Clear Clock Enable P1
++    Clears the clock enable bit of the P1 domain. This domain contains the P1 instance of the GPIO block. */
++#define CLKCLR_P1 0x00010000
++/* No-Operation
++#define CLKCLR_P1_NOP 0x00000000 */
++/** Clear */
++#define CLKCLR_P1_CLR 0x00010000
++/** Clear Clock Enable HOST
++    Clears the clock enable bit of the HOST domain. This domain contains the HOST interface block. */
++#define CLKCLR_HOST 0x00008000
++/* No-Operation
++#define CLKCLR_HOST_NOP 0x00000000 */
++/** Clear */
++#define CLKCLR_HOST_CLR 0x00008000
++/** Clear Clock Enable I2C
++    Clears the clock enable bit of the I2C domain. This domain contains the I2C interface block. */
++#define CLKCLR_I2C 0x00004000
++/* No-Operation
++#define CLKCLR_I2C_NOP 0x00000000 */
++/** Clear */
++#define CLKCLR_I2C_CLR 0x00004000
++/** Clear Clock Enable SSC0
++    Clears the clock enable bit of the SSC0 domain. This domain contains the SSC0 interface block. */
++#define CLKCLR_SSC0 0x00002000
++/* No-Operation
++#define CLKCLR_SSC0_NOP 0x00000000 */
++/** Clear */
++#define CLKCLR_SSC0_CLR 0x00002000
++/** Clear Clock Enable ASC0
++    Clears the clock enable bit of the ASC0 domain. This domain contains the ASC0 interface block. */
++#define CLKCLR_ASC0 0x00001000
++/* No-Operation
++#define CLKCLR_ASC0_NOP 0x00000000 */
++/** Clear */
++#define CLKCLR_ASC0_CLR 0x00001000
++/** Clear Clock Enable ASC1
++    Clears the clock enable bit of the ASC1 domain. This domain contains the ASC1 block. */
++#define CLKCLR_ASC1 0x00000800
++/* No-Operation
++#define CLKCLR_ASC1_NOP 0x00000000 */
++/** Clear */
++#define CLKCLR_ASC1_CLR 0x00000800
++/** Clear Clock Enable DCDCAPD
++    Clears the clock enable bit of the DCDCAPD domain. This domain contains the digital part of the 60 volts DCDC converter. */
++#define CLKCLR_DCDCAPD 0x00000400
++/* No-Operation
++#define CLKCLR_DCDCAPD_NOP 0x00000000 */
++/** Clear */
++#define CLKCLR_DCDCAPD_CLR 0x00000400
++/** Clear Clock Enable DCDCDDR
++    Clears the clock enable bit of the DCDCDDR domain. This domain contains the digital part of the DCDC converter dedicated to the DDR interface. */
++#define CLKCLR_DCDCDDR 0x00000200
++/* No-Operation
++#define CLKCLR_DCDCDDR_NOP 0x00000000 */
++/** Clear */
++#define CLKCLR_DCDCDDR_CLR 0x00000200
++/** Clear Clock Enable DCDC1V0
++    Clears the clock enable bit of the DCDC1V0 domain. This domain contains the digital part of the 1.0 volts DCDC converter. */
++#define CLKCLR_DCDC1V0 0x00000100
++/* No-Operation
++#define CLKCLR_DCDC1V0_NOP 0x00000000 */
++/** Clear */
++#define CLKCLR_DCDC1V0_CLR 0x00000100
++/** Clear Clock Enable TRC2MEM
++    Clears the clock enable bit of the TRC2MEM domain. This domain contains the TRC2MEM block. */
++#define CLKCLR_TRC2MEM 0x00000040
++/* No-Operation
++#define CLKCLR_TRC2MEM_NOP 0x00000000 */
++/** Clear */
++#define CLKCLR_TRC2MEM_CLR 0x00000040
++/** Clear Clock Enable DDR
++    Clears the clock enable bit of the DDR domain. This domain contains the DDR interface block. */
++#define CLKCLR_DDR 0x00000020
++/* No-Operation
++#define CLKCLR_DDR_NOP 0x00000000 */
++/** Clear */
++#define CLKCLR_DDR_CLR 0x00000020
++/** Clear Clock Enable EBU
++    Clears the clock enable bit of the EBU domain. This domain contains the EBU interface block. */
++#define CLKCLR_EBU 0x00000010
++/* No-Operation
++#define CLKCLR_EBU_NOP 0x00000000 */
++/** Clear */
++#define CLKCLR_EBU_CLR 0x00000010
++
++/* Fields of "Activation Status Register" */
++/** STATUS Status
++    Shows the activation status of the STATUS domain. This domain contains the STATUS block. */
++#define ACTS_STATUS 0x80000000
++/* The block is inactive.
++#define ACTS_STATUS_INACT 0x00000000 */
++/** The block is active. */
++#define ACTS_STATUS_ACT 0x80000000
++/** SHA1 Status
++    Shows the activation status of the SHA1 domain. This domain contains the SHA1 block. */
++#define ACTS_SHA1 0x40000000
++/* The block is inactive.
++#define ACTS_SHA1_INACT 0x00000000 */
++/** The block is active. */
++#define ACTS_SHA1_ACT 0x40000000
++/** AES Status
++    Shows the activation status of the AES domain. This domain contains the AES block. */
++#define ACTS_AES 0x20000000
++/* The block is inactive.
++#define ACTS_AES_INACT 0x00000000 */
++/** The block is active. */
++#define ACTS_AES_ACT 0x20000000
++/** PCM Status
++    Shows the activation status of the PCM domain. This domain contains the PCM interface block. */
++#define ACTS_PCM 0x10000000
++/* The block is inactive.
++#define ACTS_PCM_INACT 0x00000000 */
++/** The block is active. */
++#define ACTS_PCM_ACT 0x10000000
++/** FSCT Status
++    Shows the activation status of the FSCT domain. This domain contains the FSCT block. */
++#define ACTS_FSCT 0x08000000
++/* The block is inactive.
++#define ACTS_FSCT_INACT 0x00000000 */
++/** The block is active. */
++#define ACTS_FSCT_ACT 0x08000000
++/** GPTC Status
++    Shows the activation status of the GPTC domain. This domain contains the GPTC block. */
++#define ACTS_GPTC 0x04000000
++/* The block is inactive.
++#define ACTS_GPTC_INACT 0x00000000 */
++/** The block is active. */
++#define ACTS_GPTC_ACT 0x04000000
++/** MPS Status
++    Shows the activation status of the MPS domain. This domain contains the MPS block. */
++#define ACTS_MPS 0x02000000
++/* The block is inactive.
++#define ACTS_MPS_INACT 0x00000000 */
++/** The block is active. */
++#define ACTS_MPS_ACT 0x02000000
++/** DFEV0 Status
++    Shows the activation status of the DFEV0 domain. This domain contains the DFEV0 block. */
++#define ACTS_DFEV0 0x01000000
++/* The block is inactive.
++#define ACTS_DFEV0_INACT 0x00000000 */
++/** The block is active. */
++#define ACTS_DFEV0_ACT 0x01000000
++/** PADCTRL4 Status
++    Shows the activation status of the PADCTRL4 domain. This domain contains the PADCTRL4 block. */
++#define ACTS_PADCTRL4 0x00400000
++/* The block is inactive.
++#define ACTS_PADCTRL4_INACT 0x00000000 */
++/** The block is active. */
++#define ACTS_PADCTRL4_ACT 0x00400000
++/** PADCTRL3 Status
++    Shows the activation status of the PADCTRL3 domain. This domain contains the PADCTRL3 block. */
++#define ACTS_PADCTRL3 0x00200000
++/* The block is inactive.
++#define ACTS_PADCTRL3_INACT 0x00000000 */
++/** The block is active. */
++#define ACTS_PADCTRL3_ACT 0x00200000
++/** PADCTRL1 Status
++    Shows the activation status of the PADCTRL1 domain. This domain contains the PADCTRL1 block. */
++#define ACTS_PADCTRL1 0x00100000
++/* The block is inactive.
++#define ACTS_PADCTRL1_INACT 0x00000000 */
++/** The block is active. */
++#define ACTS_PADCTRL1_ACT 0x00100000
++/** P4 Status
++    Shows the activation status of the P4 domain. This domain contains the P4 instance of the GPIO block. */
++#define ACTS_P4 0x00040000
++/* The block is inactive.
++#define ACTS_P4_INACT 0x00000000 */
++/** The block is active. */
++#define ACTS_P4_ACT 0x00040000
++/** P3 Status
++    Shows the activation status of the P3 domain. This domain contains the P3 instance of the GPIO block. */
++#define ACTS_P3 0x00020000
++/* The block is inactive.
++#define ACTS_P3_INACT 0x00000000 */
++/** The block is active. */
++#define ACTS_P3_ACT 0x00020000
++/** P1 Status
++    Shows the activation status of the P1 domain. This domain contains the P1 instance of the GPIO block. */
++#define ACTS_P1 0x00010000
++/* The block is inactive.
++#define ACTS_P1_INACT 0x00000000 */
++/** The block is active. */
++#define ACTS_P1_ACT 0x00010000
++/** HOST Status
++    Shows the activation status of the HOST domain. This domain contains the HOST interface block. */
++#define ACTS_HOST 0x00008000
++/* The block is inactive.
++#define ACTS_HOST_INACT 0x00000000 */
++/** The block is active. */
++#define ACTS_HOST_ACT 0x00008000
++/** I2C Status
++    Shows the activation status of the I2C domain. This domain contains the I2C interface block. */
++#define ACTS_I2C 0x00004000
++/* The block is inactive.
++#define ACTS_I2C_INACT 0x00000000 */
++/** The block is active. */
++#define ACTS_I2C_ACT 0x00004000
++/** SSC0 Status
++    Shows the activation status of the SSC0 domain. This domain contains the SSC0 interface block. */
++#define ACTS_SSC0 0x00002000
++/* The block is inactive.
++#define ACTS_SSC0_INACT 0x00000000 */
++/** The block is active. */
++#define ACTS_SSC0_ACT 0x00002000
++/** ASC0 Status
++    Shows the activation status of the ASC0 domain. This domain contains the ASC0 interface block. */
++#define ACTS_ASC0 0x00001000
++/* The block is inactive.
++#define ACTS_ASC0_INACT 0x00000000 */
++/** The block is active. */
++#define ACTS_ASC0_ACT 0x00001000
++/** ASC1 Status
++    Shows the activation status of the ASC1 domain. This domain contains the ASC1 block. */
++#define ACTS_ASC1 0x00000800
++/* The block is inactive.
++#define ACTS_ASC1_INACT 0x00000000 */
++/** The block is active. */
++#define ACTS_ASC1_ACT 0x00000800
++/** DCDCAPD Status
++    Shows the activation status of the DCDCAPD domain. This domain contains the digital part of the 60 volts DCDC converter. */
++#define ACTS_DCDCAPD 0x00000400
++/* The block is inactive.
++#define ACTS_DCDCAPD_INACT 0x00000000 */
++/** The block is active. */
++#define ACTS_DCDCAPD_ACT 0x00000400
++/** DCDCDDR Status
++    Shows the activation status of the DCDCDDR domain. This domain contains the digital part of the DCDC converter dedicated to the DDR interface. */
++#define ACTS_DCDCDDR 0x00000200
++/* The block is inactive.
++#define ACTS_DCDCDDR_INACT 0x00000000 */
++/** The block is active. */
++#define ACTS_DCDCDDR_ACT 0x00000200
++/** DCDC1V0 Status
++    Shows the activation status of the DCDC1V0 domain. This domain contains the digital part of the 1.0 volts DCDC converter. */
++#define ACTS_DCDC1V0 0x00000100
++/* The block is inactive.
++#define ACTS_DCDC1V0_INACT 0x00000000 */
++/** The block is active. */
++#define ACTS_DCDC1V0_ACT 0x00000100
++/** TRC2MEM Status
++    Shows the activation status of the TRC2MEM domain. This domain contains the TRC2MEM block. */
++#define ACTS_TRC2MEM 0x00000040
++/* The block is inactive.
++#define ACTS_TRC2MEM_INACT 0x00000000 */
++/** The block is active. */
++#define ACTS_TRC2MEM_ACT 0x00000040
++/** DDR Status
++    Shows the activation status of the DDR domain. This domain contains the DDR interface block. */
++#define ACTS_DDR 0x00000020
++/* The block is inactive.
++#define ACTS_DDR_INACT 0x00000000 */
++/** The block is active. */
++#define ACTS_DDR_ACT 0x00000020
++/** EBU Status
++    Shows the activation status of the EBU domain. This domain contains the EBU interface block. */
++#define ACTS_EBU 0x00000010
++/* The block is inactive.
++#define ACTS_EBU_INACT 0x00000000 */
++/** The block is active. */
++#define ACTS_EBU_ACT 0x00000010
++
++/* Fields of "Activation Register" */
++/** Activate STATUS
++    Sets the activation flag of the STATUS domain. This domain contains the STATUS block. */
++#define ACT_STATUS 0x80000000
++/* No-Operation
++#define ACT_STATUS_NOP 0x00000000 */
++/** Set */
++#define ACT_STATUS_SET 0x80000000
++/** Activate SHA1
++    Sets the activation flag of the SHA1 domain. This domain contains the SHA1 block. */
++#define ACT_SHA1 0x40000000
++/* No-Operation
++#define ACT_SHA1_NOP 0x00000000 */
++/** Set */
++#define ACT_SHA1_SET 0x40000000
++/** Activate AES
++    Sets the activation flag of the AES domain. This domain contains the AES block. */
++#define ACT_AES 0x20000000
++/* No-Operation
++#define ACT_AES_NOP 0x00000000 */
++/** Set */
++#define ACT_AES_SET 0x20000000
++/** Activate PCM
++    Sets the activation flag of the PCM domain. This domain contains the PCM interface block. */
++#define ACT_PCM 0x10000000
++/* No-Operation
++#define ACT_PCM_NOP 0x00000000 */
++/** Set */
++#define ACT_PCM_SET 0x10000000
++/** Activate FSCT
++    Sets the activation flag of the FSCT domain. This domain contains the FSCT block. */
++#define ACT_FSCT 0x08000000
++/* No-Operation
++#define ACT_FSCT_NOP 0x00000000 */
++/** Set */
++#define ACT_FSCT_SET 0x08000000
++/** Activate GPTC
++    Sets the activation flag of the GPTC domain. This domain contains the GPTC block. */
++#define ACT_GPTC 0x04000000
++/* No-Operation
++#define ACT_GPTC_NOP 0x00000000 */
++/** Set */
++#define ACT_GPTC_SET 0x04000000
++/** Activate MPS
++    Sets the activation flag of the MPS domain. This domain contains the MPS block. */
++#define ACT_MPS 0x02000000
++/* No-Operation
++#define ACT_MPS_NOP 0x00000000 */
++/** Set */
++#define ACT_MPS_SET 0x02000000
++/** Activate DFEV0
++    Sets the activation flag of the DFEV0 domain. This domain contains the DFEV0 block. */
++#define ACT_DFEV0 0x01000000
++/* No-Operation
++#define ACT_DFEV0_NOP 0x00000000 */
++/** Set */
++#define ACT_DFEV0_SET 0x01000000
++/** Activate PADCTRL4
++    Sets the activation flag of the PADCTRL4 domain. This domain contains the PADCTRL4 block. */
++#define ACT_PADCTRL4 0x00400000
++/* No-Operation
++#define ACT_PADCTRL4_NOP 0x00000000 */
++/** Set */
++#define ACT_PADCTRL4_SET 0x00400000
++/** Activate PADCTRL3
++    Sets the activation flag of the PADCTRL3 domain. This domain contains the PADCTRL3 block. */
++#define ACT_PADCTRL3 0x00200000
++/* No-Operation
++#define ACT_PADCTRL3_NOP 0x00000000 */
++/** Set */
++#define ACT_PADCTRL3_SET 0x00200000
++/** Activate PADCTRL1
++    Sets the activation flag of the PADCTRL1 domain. This domain contains the PADCTRL1 block. */
++#define ACT_PADCTRL1 0x00100000
++/* No-Operation
++#define ACT_PADCTRL1_NOP 0x00000000 */
++/** Set */
++#define ACT_PADCTRL1_SET 0x00100000
++/** Activate P4
++    Sets the activation flag of the P4 domain. This domain contains the P4 instance of the GPIO block. */
++#define ACT_P4 0x00040000
++/* No-Operation
++#define ACT_P4_NOP 0x00000000 */
++/** Set */
++#define ACT_P4_SET 0x00040000
++/** Activate P3
++    Sets the activation flag of the P3 domain. This domain contains the P3 instance of the GPIO block. */
++#define ACT_P3 0x00020000
++/* No-Operation
++#define ACT_P3_NOP 0x00000000 */
++/** Set */
++#define ACT_P3_SET 0x00020000
++/** Activate P1
++    Sets the activation flag of the P1 domain. This domain contains the P1 instance of the GPIO block. */
++#define ACT_P1 0x00010000
++/* No-Operation
++#define ACT_P1_NOP 0x00000000 */
++/** Set */
++#define ACT_P1_SET 0x00010000
++/** Activate HOST
++    Sets the activation flag of the HOST domain. This domain contains the HOST interface block. */
++#define ACT_HOST 0x00008000
++/* No-Operation
++#define ACT_HOST_NOP 0x00000000 */
++/** Set */
++#define ACT_HOST_SET 0x00008000
++/** Activate I2C
++    Sets the activation flag of the I2C domain. This domain contains the I2C interface block. */
++#define ACT_I2C 0x00004000
++/* No-Operation
++#define ACT_I2C_NOP 0x00000000 */
++/** Set */
++#define ACT_I2C_SET 0x00004000
++/** Activate SSC0
++    Sets the activation flag of the SSC0 domain. This domain contains the SSC0 interface block. */
++#define ACT_SSC0 0x00002000
++/* No-Operation
++#define ACT_SSC0_NOP 0x00000000 */
++/** Set */
++#define ACT_SSC0_SET 0x00002000
++/** Activate ASC0
++    Sets the activation flag of the ASC0 domain. This domain contains the ASC0 interface block. */
++#define ACT_ASC0 0x00001000
++/* No-Operation
++#define ACT_ASC0_NOP 0x00000000 */
++/** Set */
++#define ACT_ASC0_SET 0x00001000
++/** Activate ASC1
++    Sets the activation flag of the ASC1 domain. This domain contains the ASC1 block. */
++#define ACT_ASC1 0x00000800
++/* No-Operation
++#define ACT_ASC1_NOP 0x00000000 */
++/** Set */
++#define ACT_ASC1_SET 0x00000800
++/** Activate DCDCAPD
++    Sets the activation flag of the DCDCAPD domain. This domain contains the digital part of the 60 volts DCDC converter. */
++#define ACT_DCDCAPD 0x00000400
++/* No-Operation
++#define ACT_DCDCAPD_NOP 0x00000000 */
++/** Set */
++#define ACT_DCDCAPD_SET 0x00000400
++/** Activate DCDCDDR
++    Sets the activation flag of the DCDCDDR domain. This domain contains the digital part of the DCDC converter dedicated to the DDR interface. */
++#define ACT_DCDCDDR 0x00000200
++/* No-Operation
++#define ACT_DCDCDDR_NOP 0x00000000 */
++/** Set */
++#define ACT_DCDCDDR_SET 0x00000200
++/** Activate DCDC1V0
++    Sets the activation flag of the DCDC1V0 domain. This domain contains the digital part of the 1.0 volts DCDC converter. */
++#define ACT_DCDC1V0 0x00000100
++/* No-Operation
++#define ACT_DCDC1V0_NOP 0x00000000 */
++/** Set */
++#define ACT_DCDC1V0_SET 0x00000100
++/** Activate TRC2MEM
++    Sets the activation flag of the TRC2MEM domain. This domain contains the TRC2MEM block. */
++#define ACT_TRC2MEM 0x00000040
++/* No-Operation
++#define ACT_TRC2MEM_NOP 0x00000000 */
++/** Set */
++#define ACT_TRC2MEM_SET 0x00000040
++/** Activate DDR
++    Sets the activation flag of the DDR domain. This domain contains the DDR interface block. */
++#define ACT_DDR 0x00000020
++/* No-Operation
++#define ACT_DDR_NOP 0x00000000 */
++/** Set */
++#define ACT_DDR_SET 0x00000020
++/** Activate EBU
++    Sets the activation flag of the EBU domain. This domain contains the EBU interface block. */
++#define ACT_EBU 0x00000010
++/* No-Operation
++#define ACT_EBU_NOP 0x00000000 */
++/** Set */
++#define ACT_EBU_SET 0x00000010
++
++/* Fields of "Deactivation Register" */
++/** Deactivate STATUS
++    Clears the activation flag of the STATUS domain. This domain contains the STATUS block. */
++#define DEACT_STATUS 0x80000000
++/* No-Operation
++#define DEACT_STATUS_NOP 0x00000000 */
++/** Clear */
++#define DEACT_STATUS_CLR 0x80000000
++/** Deactivate SHA1
++    Clears the activation flag of the SHA1 domain. This domain contains the SHA1 block. */
++#define DEACT_SHA1 0x40000000
++/* No-Operation
++#define DEACT_SHA1_NOP 0x00000000 */
++/** Clear */
++#define DEACT_SHA1_CLR 0x40000000
++/** Deactivate AES
++    Clears the activation flag of the AES domain. This domain contains the AES block. */
++#define DEACT_AES 0x20000000
++/* No-Operation
++#define DEACT_AES_NOP 0x00000000 */
++/** Clear */
++#define DEACT_AES_CLR 0x20000000
++/** Deactivate PCM
++    Clears the activation flag of the PCM domain. This domain contains the PCM interface block. */
++#define DEACT_PCM 0x10000000
++/* No-Operation
++#define DEACT_PCM_NOP 0x00000000 */
++/** Clear */
++#define DEACT_PCM_CLR 0x10000000
++/** Deactivate FSCT
++    Clears the activation flag of the FSCT domain. This domain contains the FSCT block. */
++#define DEACT_FSCT 0x08000000
++/* No-Operation
++#define DEACT_FSCT_NOP 0x00000000 */
++/** Clear */
++#define DEACT_FSCT_CLR 0x08000000
++/** Deactivate GPTC
++    Clears the activation flag of the GPTC domain. This domain contains the GPTC block. */
++#define DEACT_GPTC 0x04000000
++/* No-Operation
++#define DEACT_GPTC_NOP 0x00000000 */
++/** Clear */
++#define DEACT_GPTC_CLR 0x04000000
++/** Deactivate MPS
++    Clears the activation flag of the MPS domain. This domain contains the MPS block. */
++#define DEACT_MPS 0x02000000
++/* No-Operation
++#define DEACT_MPS_NOP 0x00000000 */
++/** Clear */
++#define DEACT_MPS_CLR 0x02000000
++/** Deactivate DFEV0
++    Clears the activation flag of the DFEV0 domain. This domain contains the DFEV0 block. */
++#define DEACT_DFEV0 0x01000000
++/* No-Operation
++#define DEACT_DFEV0_NOP 0x00000000 */
++/** Clear */
++#define DEACT_DFEV0_CLR 0x01000000
++/** Deactivate PADCTRL4
++    Clears the activation flag of the PADCTRL4 domain. This domain contains the PADCTRL4 block. */
++#define DEACT_PADCTRL4 0x00400000
++/* No-Operation
++#define DEACT_PADCTRL4_NOP 0x00000000 */
++/** Clear */
++#define DEACT_PADCTRL4_CLR 0x00400000
++/** Deactivate PADCTRL3
++    Clears the activation flag of the PADCTRL3 domain. This domain contains the PADCTRL3 block. */
++#define DEACT_PADCTRL3 0x00200000
++/* No-Operation
++#define DEACT_PADCTRL3_NOP 0x00000000 */
++/** Clear */
++#define DEACT_PADCTRL3_CLR 0x00200000
++/** Deactivate PADCTRL1
++    Clears the activation flag of the PADCTRL1 domain. This domain contains the PADCTRL1 block. */
++#define DEACT_PADCTRL1 0x00100000
++/* No-Operation
++#define DEACT_PADCTRL1_NOP 0x00000000 */
++/** Clear */
++#define DEACT_PADCTRL1_CLR 0x00100000
++/** Deactivate P4
++    Clears the activation flag of the P4 domain. This domain contains the P4 instance of the GPIO block. */
++#define DEACT_P4 0x00040000
++/* No-Operation
++#define DEACT_P4_NOP 0x00000000 */
++/** Clear */
++#define DEACT_P4_CLR 0x00040000
++/** Deactivate P3
++    Clears the activation flag of the P3 domain. This domain contains the P3 instance of the GPIO block. */
++#define DEACT_P3 0x00020000
++/* No-Operation
++#define DEACT_P3_NOP 0x00000000 */
++/** Clear */
++#define DEACT_P3_CLR 0x00020000
++/** Deactivate P1
++    Clears the activation flag of the P1 domain. This domain contains the P1 instance of the GPIO block. */
++#define DEACT_P1 0x00010000
++/* No-Operation
++#define DEACT_P1_NOP 0x00000000 */
++/** Clear */
++#define DEACT_P1_CLR 0x00010000
++/** Deactivate HOST
++    Clears the activation flag of the HOST domain. This domain contains the HOST interface block. */
++#define DEACT_HOST 0x00008000
++/* No-Operation
++#define DEACT_HOST_NOP 0x00000000 */
++/** Clear */
++#define DEACT_HOST_CLR 0x00008000
++/** Deactivate I2C
++    Clears the activation flag of the I2C domain. This domain contains the I2C interface block. */
++#define DEACT_I2C 0x00004000
++/* No-Operation
++#define DEACT_I2C_NOP 0x00000000 */
++/** Clear */
++#define DEACT_I2C_CLR 0x00004000
++/** Deactivate SSC0
++    Clears the activation flag of the SSC0 domain. This domain contains the SSC0 interface block. */
++#define DEACT_SSC0 0x00002000
++/* No-Operation
++#define DEACT_SSC0_NOP 0x00000000 */
++/** Clear */
++#define DEACT_SSC0_CLR 0x00002000
++/** Deactivate ASC0
++    Clears the activation flag of the ASC0 domain. This domain contains the ASC0 interface block. */
++#define DEACT_ASC0 0x00001000
++/* No-Operation
++#define DEACT_ASC0_NOP 0x00000000 */
++/** Clear */
++#define DEACT_ASC0_CLR 0x00001000
++/** Deactivate ASC1
++    Clears the activation flag of the ASC1 domain. This domain contains the ASC1 block. */
++#define DEACT_ASC1 0x00000800
++/* No-Operation
++#define DEACT_ASC1_NOP 0x00000000 */
++/** Clear */
++#define DEACT_ASC1_CLR 0x00000800
++/** Deactivate DCDCAPD
++    Clears the activation flag of the DCDCAPD domain. This domain contains the digital part of the 60 volts DCDC converter. */
++#define DEACT_DCDCAPD 0x00000400
++/* No-Operation
++#define DEACT_DCDCAPD_NOP 0x00000000 */
++/** Clear */
++#define DEACT_DCDCAPD_CLR 0x00000400
++/** Deactivate DCDCDDR
++    Clears the activation flag of the DCDCDDR domain. This domain contains the digital part of the DCDC converter dedicated to the DDR interface. */
++#define DEACT_DCDCDDR 0x00000200
++/* No-Operation
++#define DEACT_DCDCDDR_NOP 0x00000000 */
++/** Clear */
++#define DEACT_DCDCDDR_CLR 0x00000200
++/** Deactivate DCDC1V0
++    Clears the activation flag of the DCDC1V0 domain. This domain contains the digital part of the 1.0 volts DCDC converter. */
++#define DEACT_DCDC1V0 0x00000100
++/* No-Operation
++#define DEACT_DCDC1V0_NOP 0x00000000 */
++/** Clear */
++#define DEACT_DCDC1V0_CLR 0x00000100
++/** Deactivate TRC2MEM
++    Clears the activation flag of the TRC2MEM domain. This domain contains the TRC2MEM block. */
++#define DEACT_TRC2MEM 0x00000040
++/* No-Operation
++#define DEACT_TRC2MEM_NOP 0x00000000 */
++/** Clear */
++#define DEACT_TRC2MEM_CLR 0x00000040
++/** Deactivate DDR
++    Clears the activation flag of the DDR domain. This domain contains the DDR interface block. */
++#define DEACT_DDR 0x00000020
++/* No-Operation
++#define DEACT_DDR_NOP 0x00000000 */
++/** Clear */
++#define DEACT_DDR_CLR 0x00000020
++/** Deactivate EBU
++    Clears the activation flag of the EBU domain. This domain contains the EBU interface block. */
++#define DEACT_EBU 0x00000010
++/* No-Operation
++#define DEACT_EBU_NOP 0x00000000 */
++/** Clear */
++#define DEACT_EBU_CLR 0x00000010
++
++/* Fields of "Reboot Trigger Register" */
++/** Reboot STATUS
++    Triggers a reboot of the STATUS domain. This domain contains the STATUS block. */
++#define RBT_STATUS 0x80000000
++/* No-Operation
++#define RBT_STATUS_NOP 0x00000000 */
++/** Trigger */
++#define RBT_STATUS_TRIG 0x80000000
++/** Reboot SHA1
++    Triggers a reboot of the SHA1 domain. This domain contains the SHA1 block. */
++#define RBT_SHA1 0x40000000
++/* No-Operation
++#define RBT_SHA1_NOP 0x00000000 */
++/** Trigger */
++#define RBT_SHA1_TRIG 0x40000000
++/** Reboot AES
++    Triggers a reboot of the AES domain. This domain contains the AES block. */
++#define RBT_AES 0x20000000
++/* No-Operation
++#define RBT_AES_NOP 0x00000000 */
++/** Trigger */
++#define RBT_AES_TRIG 0x20000000
++/** Reboot PCM
++    Triggers a reboot of the PCM domain. This domain contains the PCM interface block. */
++#define RBT_PCM 0x10000000
++/* No-Operation
++#define RBT_PCM_NOP 0x00000000 */
++/** Trigger */
++#define RBT_PCM_TRIG 0x10000000
++/** Reboot FSCT
++    Triggers a reboot of the FSCT domain. This domain contains the FSCT block. */
++#define RBT_FSCT 0x08000000
++/* No-Operation
++#define RBT_FSCT_NOP 0x00000000 */
++/** Trigger */
++#define RBT_FSCT_TRIG 0x08000000
++/** Reboot GPTC
++    Triggers a reboot of the GPTC domain. This domain contains the GPTC block. */
++#define RBT_GPTC 0x04000000
++/* No-Operation
++#define RBT_GPTC_NOP 0x00000000 */
++/** Trigger */
++#define RBT_GPTC_TRIG 0x04000000
++/** Reboot MPS
++    Triggers a reboot of the MPS domain. This domain contains the MPS block. */
++#define RBT_MPS 0x02000000
++/* No-Operation
++#define RBT_MPS_NOP 0x00000000 */
++/** Trigger */
++#define RBT_MPS_TRIG 0x02000000
++/** Reboot DFEV0
++    Triggers a reboot of the DFEV0 domain. This domain contains the DFEV0 block. */
++#define RBT_DFEV0 0x01000000
++/* No-Operation
++#define RBT_DFEV0_NOP 0x00000000 */
++/** Trigger */
++#define RBT_DFEV0_TRIG 0x01000000
++/** Reboot PADCTRL4
++    Triggers a reboot of the PADCTRL4 domain. This domain contains the PADCTRL4 block. */
++#define RBT_PADCTRL4 0x00400000
++/* No-Operation
++#define RBT_PADCTRL4_NOP 0x00000000 */
++/** Trigger */
++#define RBT_PADCTRL4_TRIG 0x00400000
++/** Reboot PADCTRL3
++    Triggers a reboot of the PADCTRL3 domain. This domain contains the PADCTRL3 block. */
++#define RBT_PADCTRL3 0x00200000
++/* No-Operation
++#define RBT_PADCTRL3_NOP 0x00000000 */
++/** Trigger */
++#define RBT_PADCTRL3_TRIG 0x00200000
++/** Reboot PADCTRL1
++    Triggers a reboot of the PADCTRL1 domain. This domain contains the PADCTRL1 block. */
++#define RBT_PADCTRL1 0x00100000
++/* No-Operation
++#define RBT_PADCTRL1_NOP 0x00000000 */
++/** Trigger */
++#define RBT_PADCTRL1_TRIG 0x00100000
++/** Reboot P4
++    Triggers a reboot of the P4 domain. This domain contains the P4 instance of the GPIO block. */
++#define RBT_P4 0x00040000
++/* No-Operation
++#define RBT_P4_NOP 0x00000000 */
++/** Trigger */
++#define RBT_P4_TRIG 0x00040000
++/** Reboot P3
++    Triggers a reboot of the P3 domain. This domain contains the P3 instance of the GPIO block. */
++#define RBT_P3 0x00020000
++/* No-Operation
++#define RBT_P3_NOP 0x00000000 */
++/** Trigger */
++#define RBT_P3_TRIG 0x00020000
++/** Reboot P1
++    Triggers a reboot of the P1 domain. This domain contains the P1 instance of the GPIO block. */
++#define RBT_P1 0x00010000
++/* No-Operation
++#define RBT_P1_NOP 0x00000000 */
++/** Trigger */
++#define RBT_P1_TRIG 0x00010000
++/** Reboot HOST
++    Triggers a reboot of the HOST domain. This domain contains the HOST interface block. */
++#define RBT_HOST 0x00008000
++/* No-Operation
++#define RBT_HOST_NOP 0x00000000 */
++/** Trigger */
++#define RBT_HOST_TRIG 0x00008000
++/** Reboot I2C
++    Triggers a reboot of the I2C domain. This domain contains the I2C interface block. */
++#define RBT_I2C 0x00004000
++/* No-Operation
++#define RBT_I2C_NOP 0x00000000 */
++/** Trigger */
++#define RBT_I2C_TRIG 0x00004000
++/** Reboot SSC0
++    Triggers a reboot of the SSC0 domain. This domain contains the SSC0 interface block. */
++#define RBT_SSC0 0x00002000
++/* No-Operation
++#define RBT_SSC0_NOP 0x00000000 */
++/** Trigger */
++#define RBT_SSC0_TRIG 0x00002000
++/** Reboot ASC0
++    Triggers a reboot of the ASC0 domain. This domain contains the ASC0 interface block. */
++#define RBT_ASC0 0x00001000
++/* No-Operation
++#define RBT_ASC0_NOP 0x00000000 */
++/** Trigger */
++#define RBT_ASC0_TRIG 0x00001000
++/** Reboot ASC1
++    Triggers a reboot of the ASC1 domain. This domain contains the ASC1 block. */
++#define RBT_ASC1 0x00000800
++/* No-Operation
++#define RBT_ASC1_NOP 0x00000000 */
++/** Trigger */
++#define RBT_ASC1_TRIG 0x00000800
++/** Reboot DCDCAPD
++    Triggers a reboot of the DCDCAPD domain. This domain contains the digital part of the 60 volts DCDC converter. */
++#define RBT_DCDCAPD 0x00000400
++/* No-Operation
++#define RBT_DCDCAPD_NOP 0x00000000 */
++/** Trigger */
++#define RBT_DCDCAPD_TRIG 0x00000400
++/** Reboot DCDCDDR
++    Triggers a reboot of the DCDCDDR domain. This domain contains the digital part of the DCDC converter dedicated to the DDR interface. */
++#define RBT_DCDCDDR 0x00000200
++/* No-Operation
++#define RBT_DCDCDDR_NOP 0x00000000 */
++/** Trigger */
++#define RBT_DCDCDDR_TRIG 0x00000200
++/** Reboot DCDC1V0
++    Triggers a reboot of the DCDC1V0 domain. This domain contains the digital part of the 1.0 volts DCDC converter. */
++#define RBT_DCDC1V0 0x00000100
++/* No-Operation
++#define RBT_DCDC1V0_NOP 0x00000000 */
++/** Trigger */
++#define RBT_DCDC1V0_TRIG 0x00000100
++/** Reboot TRC2MEM
++    Triggers a reboot of the TRC2MEM domain. This domain contains the TRC2MEM block. */
++#define RBT_TRC2MEM 0x00000040
++/* No-Operation
++#define RBT_TRC2MEM_NOP 0x00000000 */
++/** Trigger */
++#define RBT_TRC2MEM_TRIG 0x00000040
++/** Reboot DDR
++    Triggers a reboot of the DDR domain. This domain contains the DDR interface block. */
++#define RBT_DDR 0x00000020
++/* No-Operation
++#define RBT_DDR_NOP 0x00000000 */
++/** Trigger */
++#define RBT_DDR_TRIG 0x00000020
++/** Reboot EBU
++    Triggers a reboot of the EBU domain. This domain contains the EBU interface block. */
++#define RBT_EBU 0x00000010
++/* No-Operation
++#define RBT_EBU_NOP 0x00000000 */
++/** Trigger */
++#define RBT_EBU_TRIG 0x00000010
++/** Reboot XBAR
++    Triggers a reboot of the XBAR. */
++#define RBT_XBAR 0x00000002
++/* No-Operation
++#define RBT_XBAR_NOP 0x00000000 */
++/** Trigger */
++#define RBT_XBAR_TRIG 0x00000002
++/** Reboot CPU
++    Triggers a reboot of the CPU. */
++#define RBT_CPU 0x00000001
++/* No-Operation
++#define RBT_CPU_NOP 0x00000000 */
++/** Trigger */
++#define RBT_CPU_TRIG 0x00000001
++
++/* Fields of "CPU0 Clock Control Register" */
++/** CPU Clock Divider
++    Via this bit the divider and therefore the frequency of the clock of CPU0 can be selected. */
++#define CPU0CC_CPUDIV 0x00000001
++/* Frequency set to the nominal value.
++#define CPU0CC_CPUDIV_SELFNOM 0x00000000 */
++/** Frequency set to half of its nominal value. */
++#define CPU0CC_CPUDIV_SELFHALF 0x00000001
++
++/* Fields of "CPU0 Reset Source Register" */
++/** Software Reboot Request Occurred
++    This bit can be acknowledged by a write operation. */
++#define CPU0RS_SWRRO 0x00000004
++/* Nothing
++#define CPU0RS_SWRRO_NULL 0x00000000 */
++/** Write: Acknowledge the event. */
++#define CPU0RS_SWRRO_EVACK 0x00000004
++/** Read: Event occurred. */
++#define CPU0RS_SWRRO_EVOCC 0x00000004
++/** Hardware Reset Source
++    Reflects the root cause for the last hardware reset. The infrastructure-block is only reset in case of POR. For all other blocks there is no difference between the three HW-reset sources. */
++#define CPU0RS_HWRS_MASK 0x00000003
++/** field offset */
++#define CPU0RS_HWRS_OFFSET 0
++/** Power-on reset. */
++#define CPU0RS_HWRS_POR 0x00000000
++/** RST pin. */
++#define CPU0RS_HWRS_RST 0x00000001
++/** Watchdog reset request. */
++#define CPU0RS_HWRS_WDT 0x00000002
++
++/* Fields of "CPU0 Wakeup Configuration Register" */
++/** Wakeup Request Source Yield Resume 15
++    Select the signal connected to the yield/resume interface pin 15 as source for wakeup from sleep state. */
++#define CPU0WCFG_WRSYR15 0x80000000
++/* Not selected
++#define CPU0WCFG_WRSYR15_NSEL 0x00000000 */
++/** Selected */
++#define CPU0WCFG_WRSYR15_SEL 0x80000000
++/** Wakeup Request Source Yield Resume 14
++    Select the signal connected to the yield/resume interface pin 14 as source for wakeup from sleep state. */
++#define CPU0WCFG_WRSYR14 0x40000000
++/* Not selected
++#define CPU0WCFG_WRSYR14_NSEL 0x00000000 */
++/** Selected */
++#define CPU0WCFG_WRSYR14_SEL 0x40000000
++/** Wakeup Request Source Yield Resume 13
++    Select the signal connected to the yield/resume interface pin 13 as source for wakeup from sleep state. */
++#define CPU0WCFG_WRSYR13 0x20000000
++/* Not selected
++#define CPU0WCFG_WRSYR13_NSEL 0x00000000 */
++/** Selected */
++#define CPU0WCFG_WRSYR13_SEL 0x20000000
++/** Wakeup Request Source Yield Resume 12
++    Select the signal connected to the yield/resume interface pin 12 as source for wakeup from sleep state. */
++#define CPU0WCFG_WRSYR12 0x10000000
++/* Not selected
++#define CPU0WCFG_WRSYR12_NSEL 0x00000000 */
++/** Selected */
++#define CPU0WCFG_WRSYR12_SEL 0x10000000
++/** Wakeup Request Source Yield Resume 11
++    Select the signal connected to the yield/resume interface pin 11 as source for wakeup from sleep state. */
++#define CPU0WCFG_WRSYR11 0x08000000
++/* Not selected
++#define CPU0WCFG_WRSYR11_NSEL 0x00000000 */
++/** Selected */
++#define CPU0WCFG_WRSYR11_SEL 0x08000000
++/** Wakeup Request Source Yield Resume 10
++    Select the signal connected to the yield/resume interface pin 10 as source for wakeup from sleep state. */
++#define CPU0WCFG_WRSYR10 0x04000000
++/* Not selected
++#define CPU0WCFG_WRSYR10_NSEL 0x00000000 */
++/** Selected */
++#define CPU0WCFG_WRSYR10_SEL 0x04000000
++/** Wakeup Request Source Yield Resume 9
++    Select the signal connected to the yield/resume interface pin 9 as source for wakeup from sleep state. */
++#define CPU0WCFG_WRSYR9 0x02000000
++/* Not selected
++#define CPU0WCFG_WRSYR9_NSEL 0x00000000 */
++/** Selected */
++#define CPU0WCFG_WRSYR9_SEL 0x02000000
++/** Wakeup Request Source Yield Resume 8
++    Select the signal connected to the yield/resume interface pin 8 as source for wakeup from sleep state. */
++#define CPU0WCFG_WRSYR8 0x01000000
++/* Not selected
++#define CPU0WCFG_WRSYR8_NSEL 0x00000000 */
++/** Selected */
++#define CPU0WCFG_WRSYR8_SEL 0x01000000
++/** Wakeup Request Source Yield Resume 7
++    Select the signal connected to the yield/resume interface pin 7 as source for wakeup from sleep state. */
++#define CPU0WCFG_WRSYR7 0x00800000
++/* Not selected
++#define CPU0WCFG_WRSYR7_NSEL 0x00000000 */
++/** Selected */
++#define CPU0WCFG_WRSYR7_SEL 0x00800000
++/** Wakeup Request Source Yield Resume 6
++    Select the signal connected to the yield/resume interface pin 6 as source for wakeup from sleep state. */
++#define CPU0WCFG_WRSYR6 0x00400000
++/* Not selected
++#define CPU0WCFG_WRSYR6_NSEL 0x00000000 */
++/** Selected */
++#define CPU0WCFG_WRSYR6_SEL 0x00400000
++/** Wakeup Request Source Yield Resume 5
++    Select the signal connected to the yield/resume interface pin 5 as source for wakeup from sleep state. */
++#define CPU0WCFG_WRSYR5 0x00200000
++/* Not selected
++#define CPU0WCFG_WRSYR5_NSEL 0x00000000 */
++/** Selected */
++#define CPU0WCFG_WRSYR5_SEL 0x00200000
++/** Wakeup Request Source Yield Resume 4
++    Select the signal connected to the yield/resume interface pin 4 as source for wakeup from sleep state. */
++#define CPU0WCFG_WRSYR4 0x00100000
++/* Not selected
++#define CPU0WCFG_WRSYR4_NSEL 0x00000000 */
++/** Selected */
++#define CPU0WCFG_WRSYR4_SEL 0x00100000
++/** Wakeup Request Source Yield Resume 3
++    Select the signal connected to the yield/resume interface pin 3 as source for wakeup from sleep state. */
++#define CPU0WCFG_WRSYR3 0x00080000
++/* Not selected
++#define CPU0WCFG_WRSYR3_NSEL 0x00000000 */
++/** Selected */
++#define CPU0WCFG_WRSYR3_SEL 0x00080000
++/** Wakeup Request Source Yield Resume 2
++    Select the signal connected to the yield/resume interface pin 2 as source for wakeup from sleep state. */
++#define CPU0WCFG_WRSYR2 0x00040000
++/* Not selected
++#define CPU0WCFG_WRSYR2_NSEL 0x00000000 */
++/** Selected */
++#define CPU0WCFG_WRSYR2_SEL 0x00040000
++/** Wakeup Request Source Yield Resume 1
++    Select the signal connected to the yield/resume interface pin 1 as source for wakeup from sleep state. */
++#define CPU0WCFG_WRSYR1 0x00020000
++/* Not selected
++#define CPU0WCFG_WRSYR1_NSEL 0x00000000 */
++/** Selected */
++#define CPU0WCFG_WRSYR1_SEL 0x00020000
++/** Wakeup Request Source Yield Resume 0
++    Select the signal connected to the yield/resume interface pin 0 as source for wakeup from sleep state. */
++#define CPU0WCFG_WRSYR0 0x00010000
++/* Not selected
++#define CPU0WCFG_WRSYR0_NSEL 0x00000000 */
++/** Selected */
++#define CPU0WCFG_WRSYR0_SEL 0x00010000
++/** Wakeup Request Source Debug
++    Select signal EJ_DINT as source for wakeup from sleep state. */
++#define CPU0WCFG_WRSDBG 0x00000100
++/* Not selected
++#define CPU0WCFG_WRSDBG_NSEL 0x00000000 */
++/** Selected */
++#define CPU0WCFG_WRSDBG_SEL 0x00000100
++/** Wakeup Request Source ICU of VPE1
++    Select signal ICU_IRQ of VPE1 as source for wakeup from sleep state. */
++#define CPU0WCFG_WRSICUVPE1 0x00000002
++/* Not selected
++#define CPU0WCFG_WRSICUVPE1_NSEL 0x00000000 */
++/** Selected */
++#define CPU0WCFG_WRSICUVPE1_SEL 0x00000002
++/** Wakeup Request Source ICU of VPE0
++    Select signal ICU_IRQ of VPE0 as source for wakeup from sleep state. */
++#define CPU0WCFG_WRSICUVPE0 0x00000001
++/* Not selected
++#define CPU0WCFG_WRSICUVPE0_NSEL 0x00000000 */
++/** Selected */
++#define CPU0WCFG_WRSICUVPE0_SEL 0x00000001
++
++/* Fields of "Bootmode Control Register" */
++/** Software Bootmode Select
++    Enables SW writing of Bootmode and shows whether or not the SW-programmed bootmode is reflected in field Bootmode instead of the hardware given value. */
++#define BMC_BMSW 0x80000000
++/* Disable
++#define BMC_BMSW_DIS 0x00000000 */
++/** Enable */
++#define BMC_BMSW_EN 0x80000000
++/** Bootmode
++    Initially this field holds the value of the pinstraps LED_BMODEx on positions 5:0, and the value of the corresponding JTAG register bit on position 6. Writing is enabled by setting Software Bootmode Select to 1 during the write cycle. */
++#define BMC_BM_MASK 0x0000007F
++/** field offset */
++#define BMC_BM_OFFSET 0
++
++/* Fields of "Sleep Configuration Register" */
++/** Enable XBAR Clockoff When All XBAR masters Clockoff
++    Enable XBAR clock shutdown in case all XBAR masters are in clockoff mode. This bit has no effect if bit CPU0 is not enabled. */
++#define SCFG_XBAR 0x00010000
++/* Disable
++#define SCFG_XBAR_DIS 0x00000000 */
++/** Enable */
++#define SCFG_XBAR_EN 0x00010000
++/** CPU0 Clockoff On Sleep
++    Enable CPU0 clock shutdown in case its SI_SLEEP signal becomes active. */
++#define SCFG_CPU0 0x00000001
++/* Disable
++#define SCFG_CPU0_DIS 0x00000000 */
++/** Enable */
++#define SCFG_CPU0_EN 0x00000001
++
++/* Fields of "Power Down Configuration Register" */
++/** Enable Power Down STATUS
++    Ignore this bit as power-gating is not supported for this chip. */
++#define PDCFG_STATUS 0x80000000
++/* Disable
++#define PDCFG_STATUS_DIS 0x00000000 */
++/** Enable */
++#define PDCFG_STATUS_EN 0x80000000
++/** Enable Power Down SHA1
++    Ignore this bit as power-gating is not supported for this chip. */
++#define PDCFG_SHA1 0x40000000
++/* Disable
++#define PDCFG_SHA1_DIS 0x00000000 */
++/** Enable */
++#define PDCFG_SHA1_EN 0x40000000
++/** Enable Power Down AES
++    Ignore this bit as power-gating is not supported for this chip. */
++#define PDCFG_AES 0x20000000
++/* Disable
++#define PDCFG_AES_DIS 0x00000000 */
++/** Enable */
++#define PDCFG_AES_EN 0x20000000
++/** Enable Power Down PCM
++    Ignore this bit as power-gating is not supported for this chip. */
++#define PDCFG_PCM 0x10000000
++/* Disable
++#define PDCFG_PCM_DIS 0x00000000 */
++/** Enable */
++#define PDCFG_PCM_EN 0x10000000
++/** Enable Power Down FSCT
++    Ignore this bit as power-gating is not supported for this chip. */
++#define PDCFG_FSCT 0x08000000
++/* Disable
++#define PDCFG_FSCT_DIS 0x00000000 */
++/** Enable */
++#define PDCFG_FSCT_EN 0x08000000
++/** Enable Power Down GPTC
++    Ignore this bit as power-gating is not supported for this chip. */
++#define PDCFG_GPTC 0x04000000
++/* Disable
++#define PDCFG_GPTC_DIS 0x00000000 */
++/** Enable */
++#define PDCFG_GPTC_EN 0x04000000
++/** Enable Power Down MPS
++    Ignore this bit as power-gating is not supported for this chip. */
++#define PDCFG_MPS 0x02000000
++/* Disable
++#define PDCFG_MPS_DIS 0x00000000 */
++/** Enable */
++#define PDCFG_MPS_EN 0x02000000
++/** Enable Power Down DFEV0
++    Ignore this bit as power-gating is not supported for this chip. */
++#define PDCFG_DFEV0 0x01000000
++/* Disable
++#define PDCFG_DFEV0_DIS 0x00000000 */
++/** Enable */
++#define PDCFG_DFEV0_EN 0x01000000
++/** Enable Power Down PADCTRL4
++    Ignore this bit as power-gating is not supported for this chip. */
++#define PDCFG_PADCTRL4 0x00400000
++/* Disable
++#define PDCFG_PADCTRL4_DIS 0x00000000 */
++/** Enable */
++#define PDCFG_PADCTRL4_EN 0x00400000
++/** Enable Power Down PADCTRL3
++    Ignore this bit as power-gating is not supported for this chip. */
++#define PDCFG_PADCTRL3 0x00200000
++/* Disable
++#define PDCFG_PADCTRL3_DIS 0x00000000 */
++/** Enable */
++#define PDCFG_PADCTRL3_EN 0x00200000
++/** Enable Power Down PADCTRL1
++    Ignore this bit as power-gating is not supported for this chip. */
++#define PDCFG_PADCTRL1 0x00100000
++/* Disable
++#define PDCFG_PADCTRL1_DIS 0x00000000 */
++/** Enable */
++#define PDCFG_PADCTRL1_EN 0x00100000
++/** Enable Power Down P4
++    Ignore this bit as power-gating is not supported for this chip. */
++#define PDCFG_P4 0x00040000
++/* Disable
++#define PDCFG_P4_DIS 0x00000000 */
++/** Enable */
++#define PDCFG_P4_EN 0x00040000
++/** Enable Power Down P3
++    Ignore this bit as power-gating is not supported for this chip. */
++#define PDCFG_P3 0x00020000
++/* Disable
++#define PDCFG_P3_DIS 0x00000000 */
++/** Enable */
++#define PDCFG_P3_EN 0x00020000
++/** Enable Power Down P1
++    Ignore this bit as power-gating is not supported for this chip. */
++#define PDCFG_P1 0x00010000
++/* Disable
++#define PDCFG_P1_DIS 0x00000000 */
++/** Enable */
++#define PDCFG_P1_EN 0x00010000
++/** Enable Power Down HOST
++    Ignore this bit as power-gating is not supported for this chip. */
++#define PDCFG_HOST 0x00008000
++/* Disable
++#define PDCFG_HOST_DIS 0x00000000 */
++/** Enable */
++#define PDCFG_HOST_EN 0x00008000
++/** Enable Power Down I2C
++    Ignore this bit as power-gating is not supported for this chip. */
++#define PDCFG_I2C 0x00004000
++/* Disable
++#define PDCFG_I2C_DIS 0x00000000 */
++/** Enable */
++#define PDCFG_I2C_EN 0x00004000
++/** Enable Power Down SSC0
++    Ignore this bit as power-gating is not supported for this chip. */
++#define PDCFG_SSC0 0x00002000
++/* Disable
++#define PDCFG_SSC0_DIS 0x00000000 */
++/** Enable */
++#define PDCFG_SSC0_EN 0x00002000
++/** Enable Power Down ASC0
++    Ignore this bit as power-gating is not supported for this chip. */
++#define PDCFG_ASC0 0x00001000
++/* Disable
++#define PDCFG_ASC0_DIS 0x00000000 */
++/** Enable */
++#define PDCFG_ASC0_EN 0x00001000
++/** Enable Power Down ASC1
++    Ignore this bit as power-gating is not supported for this chip. */
++#define PDCFG_ASC1 0x00000800
++/* Disable
++#define PDCFG_ASC1_DIS 0x00000000 */
++/** Enable */
++#define PDCFG_ASC1_EN 0x00000800
++/** Enable Power Down DCDCAPD
++    Ignore this bit as power-gating is not supported for this chip. */
++#define PDCFG_DCDCAPD 0x00000400
++/* Disable
++#define PDCFG_DCDCAPD_DIS 0x00000000 */
++/** Enable */
++#define PDCFG_DCDCAPD_EN 0x00000400
++/** Enable Power Down DCDCDDR
++    Ignore this bit as power-gating is not supported for this chip. */
++#define PDCFG_DCDCDDR 0x00000200
++/* Disable
++#define PDCFG_DCDCDDR_DIS 0x00000000 */
++/** Enable */
++#define PDCFG_DCDCDDR_EN 0x00000200
++/** Enable Power Down DCDC1V0
++    Ignore this bit as power-gating is not supported for this chip. */
++#define PDCFG_DCDC1V0 0x00000100
++/* Disable
++#define PDCFG_DCDC1V0_DIS 0x00000000 */
++/** Enable */
++#define PDCFG_DCDC1V0_EN 0x00000100
++/** Enable Power Down TRC2MEM
++    Ignore this bit as power-gating is not supported for this chip. */
++#define PDCFG_TRC2MEM 0x00000040
++/* Disable
++#define PDCFG_TRC2MEM_DIS 0x00000000 */
++/** Enable */
++#define PDCFG_TRC2MEM_EN 0x00000040
++/** Enable Power Down DDR
++    Ignore this bit as power-gating is not supported for this chip. */
++#define PDCFG_DDR 0x00000020
++/* Disable
++#define PDCFG_DDR_DIS 0x00000000 */
++/** Enable */
++#define PDCFG_DDR_EN 0x00000020
++/** Enable Power Down EBU
++    Ignore this bit as power-gating is not supported for this chip. */
++#define PDCFG_EBU 0x00000010
++/* Disable
++#define PDCFG_EBU_DIS 0x00000000 */
++/** Enable */
++#define PDCFG_EBU_EN 0x00000010
++
++/* Fields of "CLKO Pad Control Register" */
++/** Ethernet Reference Clock CLKO Select
++    Selects the CLKO pad's input as source for the GPHY, SGMII PLLs. */
++#define CLKOC_ETHREF 0x00000002
++/* Not selected
++#define CLKOC_ETHREF_NSEL 0x00000000 */
++/** Selected */
++#define CLKOC_ETHREF_SEL 0x00000002
++/** Output Enable
++    Enables the output driver of the CLKO pad. */
++#define CLKOC_OEN 0x00000001
++/* Disable
++#define CLKOC_OEN_DIS 0x00000000 */
++/** Enable */
++#define CLKOC_OEN_EN 0x00000001
++
++/* Fields of "Infrastructure Control Register" */
++/** General Purpose Control
++    Backup bits. Currently they are connected as: bit 0 : connected to the configmode_on pin of the pinstrapping block. bit 1 : clock enable of the GPE primary clock. bits 3:2 : frequency select of the GPE primary clock. 00 = 769.2MHz, 01 = 625MHz, 10 = 555.6MHz, 11 = 500MHz All other bits are unconnected. */
++#define INFRAC_GP_MASK 0x1F000000
++/** field offset */
++#define INFRAC_GP_OFFSET 24
++/** CMOS2CML Ethernet Control
++    CMOS2CML Ethernet Control. */
++#define INFRAC_CMOS2CML_GPON_MASK 0x0000F000
++/** field offset */
++#define INFRAC_CMOS2CML_GPON_OFFSET 12
++/** CMOS2CML Ethernet Control
++    CMOS2CML Ethernet Control. */
++#define INFRAC_CMOS2CML_ETH_MASK 0x00000F00
++/** field offset */
++#define INFRAC_CMOS2CML_ETH_OFFSET 8
++/** Dying Gasp Enable
++    Enables the dying gasp detector. */
++#define INFRAC_DGASPEN 0x00000040
++/* Disable
++#define INFRAC_DGASPEN_DIS 0x00000000 */
++/** Enable */
++#define INFRAC_DGASPEN_EN 0x00000040
++/** Dying Gasp Hysteresis Control
++    Dying Gasp Hysteresis Control. */
++#define INFRAC_DGASPHYS_MASK 0x00000030
++/** field offset */
++#define INFRAC_DGASPHYS_OFFSET 4
++/** Linear Regulator 1.5V Enable
++    Enables 1.5V linear regulator. */
++#define INFRAC_LIN1V5EN 0x00000008
++/* Disable
++#define INFRAC_LIN1V5EN_DIS 0x00000000 */
++/** Enable */
++#define INFRAC_LIN1V5EN_EN 0x00000008
++/** Linear Regulator 1.5V Control
++    Linear regulator 1.5V control. */
++#define INFRAC_LIN1V5C_MASK 0x00000007
++/** field offset */
++#define INFRAC_LIN1V5C_OFFSET 0
++
++/* Fields of "HRST_OUT_N Control Register" */
++/** HRST_OUT_N Pin Value
++    Controls the value of the HRST_OUT_N pin. */
++#define HRSTOUTC_VALUE 0x00000001
++
++/* Fields of "EBU Clock Control Register" */
++/** EBU Clock Divider
++    Via this bit the frequency of the clock of the EBU can be selected. */
++#define EBUCC_EBUDIV 0x00000001
++/* Frequency set to 50MHz.
++#define EBUCC_EBUDIV_SELF50 0x00000000 */
++/** Frequency set to 100MHz. */
++#define EBUCC_EBUDIV_SELF100 0x00000001
++
++/* Fields of "NMI Status Register" */
++/** NMI Status Flag TEST
++    Shows whether the event NMI TEST occurred. */
++#define NMIS_TEST 0x00000100
++/* Nothing
++#define NMIS_TEST_NULL 0x00000000 */
++/** Read: Event occurred. */
++#define NMIS_TEST_EVOCC 0x00000100
++/** NMI Status Flag DGASP
++    Shows whether the event NMI DGASP occurred. */
++#define NMIS_DGASP 0x00000004
++/* Nothing
++#define NMIS_DGASP_NULL 0x00000000 */
++/** Read: Event occurred. */
++#define NMIS_DGASP_EVOCC 0x00000004
++/** NMI Status Flag HOST
++    Shows whether the event NMI HOST occurred. */
++#define NMIS_HOST 0x00000002
++/* Nothing
++#define NMIS_HOST_NULL 0x00000000 */
++/** Read: Event occurred. */
++#define NMIS_HOST_EVOCC 0x00000002
++/** NMI Status Flag PIN
++    Shows whether the event NMI PIN occurred. */
++#define NMIS_PIN 0x00000001
++/* Nothing
++#define NMIS_PIN_NULL 0x00000000 */
++/** Read: Event occurred. */
++#define NMIS_PIN_EVOCC 0x00000001
++
++/* Fields of "NMI Set Register" */
++/** Set NMI Status Flag TEST
++    Sets the corresponding NMI status flag. */
++#define NMISET_TEST 0x00000100
++/* Nothing
++#define NMISET_TEST_NULL 0x00000000 */
++/** Set */
++#define NMISET_TEST_SET 0x00000100
++/** Set NMI Status Flag DGASP
++    Sets the corresponding NMI status flag. */
++#define NMISET_DGASP 0x00000004
++/* Nothing
++#define NMISET_DGASP_NULL 0x00000000 */
++/** Set */
++#define NMISET_DGASP_SET 0x00000004
++/** Set NMI Status Flag HOST
++    Sets the corresponding NMI status flag. */
++#define NMISET_HOST 0x00000002
++/* Nothing
++#define NMISET_HOST_NULL 0x00000000 */
++/** Set */
++#define NMISET_HOST_SET 0x00000002
++/** Set NMI Status Flag PIN
++    Sets the corresponding NMI status flag. */
++#define NMISET_PIN 0x00000001
++/* Nothing
++#define NMISET_PIN_NULL 0x00000000 */
++/** Set */
++#define NMISET_PIN_SET 0x00000001
++
++/* Fields of "NMI Clear Register" */
++/** Clear NMI Status Flag TEST
++    Clears the corresponding NMI status flag. */
++#define NMICLR_TEST 0x00000100
++/* Nothing
++#define NMICLR_TEST_NULL 0x00000000 */
++/** Clear */
++#define NMICLR_TEST_CLR 0x00000100
++/** Clear NMI Status Flag DGASP
++    Clears the corresponding NMI status flag. */
++#define NMICLR_DGASP 0x00000004
++/* Nothing
++#define NMICLR_DGASP_NULL 0x00000000 */
++/** Clear */
++#define NMICLR_DGASP_CLR 0x00000004
++/** Clear NMI Status Flag HOST
++    Clears the corresponding NMI status flag. */
++#define NMICLR_HOST 0x00000002
++/* Nothing
++#define NMICLR_HOST_NULL 0x00000000 */
++/** Clear */
++#define NMICLR_HOST_CLR 0x00000002
++/** Clear NMI Status Flag PIN
++    Clears the corresponding NMI status flag. */
++#define NMICLR_PIN 0x00000001
++/* Nothing
++#define NMICLR_PIN_NULL 0x00000000 */
++/** Clear */
++#define NMICLR_PIN_CLR 0x00000001
++
++/* Fields of "NMI Test Configuration Register" */
++/** Enable NMI Test Feature
++    Enables the operation of the NMI TEST flag. This is the mask for the Non-Maskable-Interrupt dedicated to SW tests. All others cannot be masked. */
++#define NMITCFG_TEN 0x00000100
++/* Disable
++#define NMITCFG_TEN_DIS 0x00000000 */
++/** Enable */
++#define NMITCFG_TEN_EN 0x00000100
++
++/* Fields of "NMI VPE1 Control Register" */
++/** NMI VPE1 State
++    Reflects the state of the NMI signal towards VPE1. This bit is controlled by software only, there is no hardware NMI source dedicated to VPE1. So VPE0 could trigger an NMI at VPE1 using this bit in its own NMI-routine. */
++#define NMIVPE1C_NMI 0x00000001
++/* False
++#define NMIVPE1C_NMI_FALSE 0x00000000 */
++/** True */
++#define NMIVPE1C_NMI_TRUE 0x00000001
++
++/* Fields of "IRN Capture Register" */
++/** DCDCAPD Alarm
++    The DCDC Converter for the APD Supply submitted an alarm. This bit is edge-sensitive. This bit contributes to the indirect interrupt. */
++#define IRNCR_DCDCAPD 0x00400000
++/* Nothing
++#define IRNCR_DCDCAPD_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define IRNCR_DCDCAPD_INTACK 0x00400000
++/** Read: Interrupt occurred. */
++#define IRNCR_DCDCAPD_INTOCC 0x00400000
++/** DCDCDDR Alarm
++    The DCDC Converter for the DDR Supply submitted an alarm. This bit is edge-sensitive. This bit contributes to the indirect interrupt. */
++#define IRNCR_DCDCDDR 0x00200000
++/* Nothing
++#define IRNCR_DCDCDDR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define IRNCR_DCDCDDR_INTACK 0x00200000
++/** Read: Interrupt occurred. */
++#define IRNCR_DCDCDDR_INTOCC 0x00200000
++/** DCDC1V0 Alarm
++    The DCDC Converter for the 1.0 Volts submitted an alarm. This bit is edge-sensitive. This bit contributes to the indirect interrupt. */
++#define IRNCR_DCDC1V0 0x00100000
++/* Nothing
++#define IRNCR_DCDC1V0_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define IRNCR_DCDC1V0_INTACK 0x00100000
++/** Read: Interrupt occurred. */
++#define IRNCR_DCDC1V0_INTOCC 0x00100000
++/** SIF0 wakeup request
++    SmartSlic Interface 0 submitted a wakeup request. This bit is edge-sensitive. This bit contributes to the indirect interrupt. */
++#define IRNCR_SIF0 0x00010000
++/* Nothing
++#define IRNCR_SIF0_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define IRNCR_SIF0_INTACK 0x00010000
++/** Read: Interrupt occurred. */
++#define IRNCR_SIF0_INTOCC 0x00010000
++
++/* Fields of "IRN Interrupt Control Register" */
++/** DCDCAPD Alarm
++    Interrupt control bit for the corresponding bit in the IRNCR register. */
++#define IRNICR_DCDCAPD 0x00400000
++/** DCDCDDR Alarm
++    Interrupt control bit for the corresponding bit in the IRNCR register. */
++#define IRNICR_DCDCDDR 0x00200000
++/** DCDC1V0 Alarm
++    Interrupt control bit for the corresponding bit in the IRNCR register. */
++#define IRNICR_DCDC1V0 0x00100000
++/** SIF0 wakeup request
++    Interrupt control bit for the corresponding bit in the IRNCR register. */
++#define IRNICR_SIF0 0x00010000
++
++/* Fields of "IRN Interrupt Enable Register" */
++/** DCDCAPD Alarm
++    Interrupt enable bit for the corresponding bit in the IRNCR register. */
++#define IRNEN_DCDCAPD 0x00400000
++/* Disable
++#define IRNEN_DCDCAPD_DIS 0x00000000 */
++/** Enable */
++#define IRNEN_DCDCAPD_EN 0x00400000
++/** DCDCDDR Alarm
++    Interrupt enable bit for the corresponding bit in the IRNCR register. */
++#define IRNEN_DCDCDDR 0x00200000
++/* Disable
++#define IRNEN_DCDCDDR_DIS 0x00000000 */
++/** Enable */
++#define IRNEN_DCDCDDR_EN 0x00200000
++/** DCDC1V0 Alarm
++    Interrupt enable bit for the corresponding bit in the IRNCR register. */
++#define IRNEN_DCDC1V0 0x00100000
++/* Disable
++#define IRNEN_DCDC1V0_DIS 0x00000000 */
++/** Enable */
++#define IRNEN_DCDC1V0_EN 0x00100000
++/** SIF0 wakeup request
++    Interrupt enable bit for the corresponding bit in the IRNCR register. */
++#define IRNEN_SIF0 0x00010000
++/* Disable
++#define IRNEN_SIF0_DIS 0x00000000 */
++/** Enable */
++#define IRNEN_SIF0_EN 0x00010000
++
++/*! @} */ /* SYS1_REGISTER */
++
++#endif /* _sys1_reg_h */
+--- /dev/null
++++ b/arch/mips/include/asm/mach-lantiq/falcon/sys_eth_reg.h
+@@ -0,0 +1,1132 @@
++/******************************************************************************
++
++                               Copyright (c) 2010
++                            Lantiq Deutschland GmbH
++
++  For licensing information, see the file 'LICENSE' in the root folder of
++  this software module.
++
++******************************************************************************/
++
++#ifndef _sys_eth_reg_h
++#define _sys_eth_reg_h
++
++/** \addtogroup SYS_ETH_REGISTER
++   @{
++*/
++/* access macros */
++#define sys_eth_r32(reg) reg_r32(&sys_eth->reg)
++#define sys_eth_w32(val, reg) reg_w32(val, &sys_eth->reg)
++#define sys_eth_w32_mask(clear, set, reg) reg_w32_mask(clear, set, &sys_eth->reg)
++#define sys_eth_r32_table(reg, idx) reg_r32_table(sys_eth->reg, idx)
++#define sys_eth_w32_table(val, reg, idx) reg_w32_table(val, sys_eth->reg, idx)
++#define sys_eth_w32_table_mask(clear, set, reg, idx) reg_w32_table_mask(clear, set, sys_eth->reg, idx)
++#define sys_eth_adr_table(reg, idx) adr_table(sys_eth->reg, idx)
++
++
++/** SYS_ETH register structure */
++struct gpon_reg_sys_eth
++{
++   /** Clock Status Register */
++   unsigned int clks; /* 0x00000000 */
++   /** Clock Enable Register
++       Via this register the clocks for the domains can be enabled. */
++   unsigned int clken; /* 0x00000004 */
++   /** Clock Clear Register
++       Via this register the clocks for the domains can be disabled. */
++   unsigned int clkclr; /* 0x00000008 */
++   /** Reserved */
++   unsigned int res_0[5]; /* 0x0000000C */
++   /** Activation Status Register */
++   unsigned int acts; /* 0x00000020 */
++   /** Activation Register
++       Via this register the domains can be activated. */
++   unsigned int act; /* 0x00000024 */
++   /** Deactivation Register
++       Via this register the domains can be deactivated. */
++   unsigned int deact; /* 0x00000028 */
++   /** Reboot Trigger Register
++       Via this register the domains can be rebooted (sent through reset). */
++   unsigned int rbt; /* 0x0000002C */
++   /** Reserved */
++   unsigned int res_1[32]; /* 0x00000030 */
++   /** External PHY Control Register */
++   unsigned int extphyc; /* 0x000000B0 */
++   /** Power Down Configuration Register
++       Via this register the configuration is done whether in case of deactivation the power supply of the domain shall be removed. */
++   unsigned int pdcfg; /* 0x000000B4 */
++   /** Datarate Control Register
++       Controls the datarate of the various physical layers. The contents of the writeable fields of this register shall not be changed during operation. */
++   unsigned int drc; /* 0x000000B8 */
++   /** GMAC Multiplexer Control Register
++       Controls the interconnect between GMACs and the various physical layers. All fields need to have a different content. If two GMACs are muxed to the same PHY unpredictable results may occur. The contents of this register shall not be changed during operation. */
++   unsigned int gmuxc; /* 0x000000BC */
++   /** Datarate Status Register
++       Shows the datarate of the GMACs. The datarate of a GMAC is derived from the datarate of the physical layer it is multiplexed to. This register is for debugging only. */
++   unsigned int drs; /* 0x000000C0 */
++   /** SGMII Control Register */
++   unsigned int sgmiic; /* 0x000000C4 */
++   /** Reserved */
++   unsigned int res_2[14]; /* 0x000000C8 */
++};
++
++
++/* Fields of "Clock Status Register" */
++/** GPHY1MII2 Clock Enable
++    Shows the clock enable bit for GPHY1MII2. */
++#define SYS_ETH_CLKS_GPHY1MII2 0x02000000
++/* Disable
++#define SYS_ETH_CLKS_GPHY1MII2_DIS 0x00000000 */
++/** Enable */
++#define SYS_ETH_CLKS_GPHY1MII2_EN 0x02000000
++/** GPHY0MII2 Clock Enable
++    Shows the clock enable bit for GPHY0MII2. */
++#define SYS_ETH_CLKS_GPHY0MII2 0x01000000
++/* Disable
++#define SYS_ETH_CLKS_GPHY0MII2_DIS 0x00000000 */
++/** Enable */
++#define SYS_ETH_CLKS_GPHY0MII2_EN 0x01000000
++/** PADCTRL2 Clock Enable
++    Shows the clock enable bit for the PADCTRL2 domain. This domain contains the PADCTRL2 block. */
++#define SYS_ETH_CLKS_PADCTRL2 0x00200000
++/* Disable
++#define SYS_ETH_CLKS_PADCTRL2_DIS 0x00000000 */
++/** Enable */
++#define SYS_ETH_CLKS_PADCTRL2_EN 0x00200000
++/** PADCTRL0 Clock Enable
++    Shows the clock enable bit for the PADCTRL0 domain. This domain contains the PADCTRL0 block. */
++#define SYS_ETH_CLKS_PADCTRL0 0x00100000
++/* Disable
++#define SYS_ETH_CLKS_PADCTRL0_DIS 0x00000000 */
++/** Enable */
++#define SYS_ETH_CLKS_PADCTRL0_EN 0x00100000
++/** P2 Clock Enable
++    Shows the clock enable bit for the P2 domain. This domain contains the P2 instance of the GPIO block. */
++#define SYS_ETH_CLKS_P2 0x00020000
++/* Disable
++#define SYS_ETH_CLKS_P2_DIS 0x00000000 */
++/** Enable */
++#define SYS_ETH_CLKS_P2_EN 0x00020000
++/** P0 Clock Enable
++    Shows the clock enable bit for the P0 domain. This domain contains the P0 instance of the GPIO block. */
++#define SYS_ETH_CLKS_P0 0x00010000
++/* Disable
++#define SYS_ETH_CLKS_P0_DIS 0x00000000 */
++/** Enable */
++#define SYS_ETH_CLKS_P0_EN 0x00010000
++/** xMII Clock Enable
++    Shows the clock enable bit for the xMII domain. This domain contains the XMII block. If any of the digital LAN interfaces shall be used, this domain has to be active. */
++#define SYS_ETH_CLKS_xMII 0x00000800
++/* Disable
++#define SYS_ETH_CLKS_xMII_DIS 0x00000000 */
++/** Enable */
++#define SYS_ETH_CLKS_xMII_EN 0x00000800
++/** SGMII Clock Enable
++    Shows the clock enable bit for the SGMII domain. This domain contains all parts of the EIM related to the SGMII block. The SGMII block itself is not contained, as it has its own clock/reset/power management. */
++#define SYS_ETH_CLKS_SGMII 0x00000400
++/* Disable
++#define SYS_ETH_CLKS_SGMII_DIS 0x00000000 */
++/** Enable */
++#define SYS_ETH_CLKS_SGMII_EN 0x00000400
++/** GPHY1 Clock Enable
++    Shows the clock enable bit for the GPHY1 domain. This domain contains all parts of the EIM related to GPHY1. The GPHY1 itself is not contained, as it has its own clock/reset/power management. */
++#define SYS_ETH_CLKS_GPHY1 0x00000200
++/* Disable
++#define SYS_ETH_CLKS_GPHY1_DIS 0x00000000 */
++/** Enable */
++#define SYS_ETH_CLKS_GPHY1_EN 0x00000200
++/** GPHY0 Clock Enable
++    Shows the clock enable bit for the GPHY0 domain. This domain contains all parts of the EIM related to GPHY0. The GPHY0 itself is not contained, as it has its own clock/reset/power management. */
++#define SYS_ETH_CLKS_GPHY0 0x00000100
++/* Disable
++#define SYS_ETH_CLKS_GPHY0_DIS 0x00000000 */
++/** Enable */
++#define SYS_ETH_CLKS_GPHY0_EN 0x00000100
++/** MDIO Clock Enable
++    Shows the clock enable bit for the MDIO domain. This domain contains the MDIO block. */
++#define SYS_ETH_CLKS_MDIO 0x00000080
++/* Disable
++#define SYS_ETH_CLKS_MDIO_DIS 0x00000000 */
++/** Enable */
++#define SYS_ETH_CLKS_MDIO_EN 0x00000080
++/** GMAC3 Clock Enable
++    Shows the clock enable bit for the GMAC3 domain. This domain contains the GMAC3 block. */
++#define SYS_ETH_CLKS_GMAC3 0x00000008
++/* Disable
++#define SYS_ETH_CLKS_GMAC3_DIS 0x00000000 */
++/** Enable */
++#define SYS_ETH_CLKS_GMAC3_EN 0x00000008
++/** GMAC2 Clock Enable
++    Shows the clock enable bit for the GMAC2 domain. This domain contains the GMAC2 block. */
++#define SYS_ETH_CLKS_GMAC2 0x00000004
++/* Disable
++#define SYS_ETH_CLKS_GMAC2_DIS 0x00000000 */
++/** Enable */
++#define SYS_ETH_CLKS_GMAC2_EN 0x00000004
++/** GMAC1 Clock Enable
++    Shows the clock enable bit for the GMAC1 domain. This domain contains the GMAC1 block. */
++#define SYS_ETH_CLKS_GMAC1 0x00000002
++/* Disable
++#define SYS_ETH_CLKS_GMAC1_DIS 0x00000000 */
++/** Enable */
++#define SYS_ETH_CLKS_GMAC1_EN 0x00000002
++/** GMAC0 Clock Enable
++    Shows the clock enable bit for the GMAC0 domain. This domain contains the GMAC0 block. */
++#define SYS_ETH_CLKS_GMAC0 0x00000001
++/* Disable
++#define SYS_ETH_CLKS_GMAC0_DIS 0x00000000 */
++/** Enable */
++#define SYS_ETH_CLKS_GMAC0_EN 0x00000001
++
++/* Fields of "Clock Enable Register" */
++/** Set Clock Enable GPHY1MII2
++    Sets the clock enable bit of the GPHY1MII2. */
++#define SYS_ETH_CLKEN_GPHY1MII2 0x02000000
++/* No-Operation
++#define SYS_ETH_CLKEN_GPHY1MII2_NOP 0x00000000 */
++/** Set */
++#define SYS_ETH_CLKEN_GPHY1MII2_SET 0x02000000
++/** Set Clock Enable GPHY0MII2
++    Sets the clock enable bit of the GPHY0MII2. */
++#define SYS_ETH_CLKEN_GPHY0MII2 0x01000000
++/* No-Operation
++#define SYS_ETH_CLKEN_GPHY0MII2_NOP 0x00000000 */
++/** Set */
++#define SYS_ETH_CLKEN_GPHY0MII2_SET 0x01000000
++/** Set Clock Enable PADCTRL2
++    Sets the clock enable bit of the PADCTRL2 domain. This domain contains the PADCTRL2 block. */
++#define SYS_ETH_CLKEN_PADCTRL2 0x00200000
++/* No-Operation
++#define SYS_ETH_CLKEN_PADCTRL2_NOP 0x00000000 */
++/** Set */
++#define SYS_ETH_CLKEN_PADCTRL2_SET 0x00200000
++/** Set Clock Enable PADCTRL0
++    Sets the clock enable bit of the PADCTRL0 domain. This domain contains the PADCTRL0 block. */
++#define SYS_ETH_CLKEN_PADCTRL0 0x00100000
++/* No-Operation
++#define SYS_ETH_CLKEN_PADCTRL0_NOP 0x00000000 */
++/** Set */
++#define SYS_ETH_CLKEN_PADCTRL0_SET 0x00100000
++/** Set Clock Enable P2
++    Sets the clock enable bit of the P2 domain. This domain contains the P2 instance of the GPIO block. */
++#define SYS_ETH_CLKEN_P2 0x00020000
++/* No-Operation
++#define SYS_ETH_CLKEN_P2_NOP 0x00000000 */
++/** Set */
++#define SYS_ETH_CLKEN_P2_SET 0x00020000
++/** Set Clock Enable P0
++    Sets the clock enable bit of the P0 domain. This domain contains the P0 instance of the GPIO block. */
++#define SYS_ETH_CLKEN_P0 0x00010000
++/* No-Operation
++#define SYS_ETH_CLKEN_P0_NOP 0x00000000 */
++/** Set */
++#define SYS_ETH_CLKEN_P0_SET 0x00010000
++/** Set Clock Enable xMII
++    Sets the clock enable bit of the xMII domain. This domain contains the XMII block. If any of the digital LAN interfaces shall be used, this domain has to be active. */
++#define SYS_ETH_CLKEN_xMII 0x00000800
++/* No-Operation
++#define SYS_ETH_CLKEN_xMII_NOP 0x00000000 */
++/** Set */
++#define SYS_ETH_CLKEN_xMII_SET 0x00000800
++/** Set Clock Enable SGMII
++    Sets the clock enable bit of the SGMII domain. This domain contains all parts of the EIM related to the SGMII block. The SGMII block itself is not contained, as it has its own clock/reset/power management. */
++#define SYS_ETH_CLKEN_SGMII 0x00000400
++/* No-Operation
++#define SYS_ETH_CLKEN_SGMII_NOP 0x00000000 */
++/** Set */
++#define SYS_ETH_CLKEN_SGMII_SET 0x00000400
++/** Set Clock Enable GPHY1
++    Sets the clock enable bit of the GPHY1 domain. This domain contains all parts of the EIM related to GPHY1. The GPHY1 itself is not contained, as it has its own clock/reset/power management. */
++#define SYS_ETH_CLKEN_GPHY1 0x00000200
++/* No-Operation
++#define SYS_ETH_CLKEN_GPHY1_NOP 0x00000000 */
++/** Set */
++#define SYS_ETH_CLKEN_GPHY1_SET 0x00000200
++/** Set Clock Enable GPHY0
++    Sets the clock enable bit of the GPHY0 domain. This domain contains all parts of the EIM related to GPHY0. The GPHY0 itself is not contained, as it has its own clock/reset/power management. */
++#define SYS_ETH_CLKEN_GPHY0 0x00000100
++/* No-Operation
++#define SYS_ETH_CLKEN_GPHY0_NOP 0x00000000 */
++/** Set */
++#define SYS_ETH_CLKEN_GPHY0_SET 0x00000100
++/** Set Clock Enable MDIO
++    Sets the clock enable bit of the MDIO domain. This domain contains the MDIO block. */
++#define SYS_ETH_CLKEN_MDIO 0x00000080
++/* No-Operation
++#define SYS_ETH_CLKEN_MDIO_NOP 0x00000000 */
++/** Set */
++#define SYS_ETH_CLKEN_MDIO_SET 0x00000080
++/** Set Clock Enable GMAC3
++    Sets the clock enable bit of the GMAC3 domain. This domain contains the GMAC3 block. */
++#define SYS_ETH_CLKEN_GMAC3 0x00000008
++/* No-Operation
++#define SYS_ETH_CLKEN_GMAC3_NOP 0x00000000 */
++/** Set */
++#define SYS_ETH_CLKEN_GMAC3_SET 0x00000008
++/** Set Clock Enable GMAC2
++    Sets the clock enable bit of the GMAC2 domain. This domain contains the GMAC2 block. */
++#define SYS_ETH_CLKEN_GMAC2 0x00000004
++/* No-Operation
++#define SYS_ETH_CLKEN_GMAC2_NOP 0x00000000 */
++/** Set */
++#define SYS_ETH_CLKEN_GMAC2_SET 0x00000004
++/** Set Clock Enable GMAC1
++    Sets the clock enable bit of the GMAC1 domain. This domain contains the GMAC1 block. */
++#define SYS_ETH_CLKEN_GMAC1 0x00000002
++/* No-Operation
++#define SYS_ETH_CLKEN_GMAC1_NOP 0x00000000 */
++/** Set */
++#define SYS_ETH_CLKEN_GMAC1_SET 0x00000002
++/** Set Clock Enable GMAC0
++    Sets the clock enable bit of the GMAC0 domain. This domain contains the GMAC0 block. */
++#define SYS_ETH_CLKEN_GMAC0 0x00000001
++/* No-Operation
++#define SYS_ETH_CLKEN_GMAC0_NOP 0x00000000 */
++/** Set */
++#define SYS_ETH_CLKEN_GMAC0_SET 0x00000001
++
++/* Fields of "Clock Clear Register" */
++/** Clear Clock Enable GPHY1MII2
++    Clears the clock enable bit of the GPHY1MII2. */
++#define SYS_ETH_CLKCLR_GPHY1MII2 0x02000000
++/* No-Operation
++#define SYS_ETH_CLKCLR_GPHY1MII2_NOP 0x00000000 */
++/** Clear */
++#define SYS_ETH_CLKCLR_GPHY1MII2_CLR 0x02000000
++/** Clear Clock Enable GPHY0MII2
++    Clears the clock enable bit of the GPHY0MII2. */
++#define SYS_ETH_CLKCLR_GPHY0MII2 0x01000000
++/* No-Operation
++#define SYS_ETH_CLKCLR_GPHY0MII2_NOP 0x00000000 */
++/** Clear */
++#define SYS_ETH_CLKCLR_GPHY0MII2_CLR 0x01000000
++/** Clear Clock Enable PADCTRL2
++    Clears the clock enable bit of the PADCTRL2 domain. This domain contains the PADCTRL2 block. */
++#define SYS_ETH_CLKCLR_PADCTRL2 0x00200000
++/* No-Operation
++#define SYS_ETH_CLKCLR_PADCTRL2_NOP 0x00000000 */
++/** Clear */
++#define SYS_ETH_CLKCLR_PADCTRL2_CLR 0x00200000
++/** Clear Clock Enable PADCTRL0
++    Clears the clock enable bit of the PADCTRL0 domain. This domain contains the PADCTRL0 block. */
++#define SYS_ETH_CLKCLR_PADCTRL0 0x00100000
++/* No-Operation
++#define SYS_ETH_CLKCLR_PADCTRL0_NOP 0x00000000 */
++/** Clear */
++#define SYS_ETH_CLKCLR_PADCTRL0_CLR 0x00100000
++/** Clear Clock Enable P2
++    Clears the clock enable bit of the P2 domain. This domain contains the P2 instance of the GPIO block. */
++#define SYS_ETH_CLKCLR_P2 0x00020000
++/* No-Operation
++#define SYS_ETH_CLKCLR_P2_NOP 0x00000000 */
++/** Clear */
++#define SYS_ETH_CLKCLR_P2_CLR 0x00020000
++/** Clear Clock Enable P0
++    Clears the clock enable bit of the P0 domain. This domain contains the P0 instance of the GPIO block. */
++#define SYS_ETH_CLKCLR_P0 0x00010000
++/* No-Operation
++#define SYS_ETH_CLKCLR_P0_NOP 0x00000000 */
++/** Clear */
++#define SYS_ETH_CLKCLR_P0_CLR 0x00010000
++/** Clear Clock Enable xMII
++    Clears the clock enable bit of the xMII domain. This domain contains the XMII block. If any of the digital LAN interfaces shall be used, this domain has to be active. */
++#define SYS_ETH_CLKCLR_xMII 0x00000800
++/* No-Operation
++#define SYS_ETH_CLKCLR_xMII_NOP 0x00000000 */
++/** Clear */
++#define SYS_ETH_CLKCLR_xMII_CLR 0x00000800
++/** Clear Clock Enable SGMII
++    Clears the clock enable bit of the SGMII domain. This domain contains all parts of the EIM related to the SGMII block. The SGMII block itself is not contained, as it has its own clock/reset/power management. */
++#define SYS_ETH_CLKCLR_SGMII 0x00000400
++/* No-Operation
++#define SYS_ETH_CLKCLR_SGMII_NOP 0x00000000 */
++/** Clear */
++#define SYS_ETH_CLKCLR_SGMII_CLR 0x00000400
++/** Clear Clock Enable GPHY1
++    Clears the clock enable bit of the GPHY1 domain. This domain contains all parts of the EIM related to GPHY1. The GPHY1 itself is not contained, as it has its own clock/reset/power management. */
++#define SYS_ETH_CLKCLR_GPHY1 0x00000200
++/* No-Operation
++#define SYS_ETH_CLKCLR_GPHY1_NOP 0x00000000 */
++/** Clear */
++#define SYS_ETH_CLKCLR_GPHY1_CLR 0x00000200
++/** Clear Clock Enable GPHY0
++    Clears the clock enable bit of the GPHY0 domain. This domain contains all parts of the EIM related to GPHY0. The GPHY0 itself is not contained, as it has its own clock/reset/power management. */
++#define SYS_ETH_CLKCLR_GPHY0 0x00000100
++/* No-Operation
++#define SYS_ETH_CLKCLR_GPHY0_NOP 0x00000000 */
++/** Clear */
++#define SYS_ETH_CLKCLR_GPHY0_CLR 0x00000100
++/** Clear Clock Enable MDIO
++    Clears the clock enable bit of the MDIO domain. This domain contains the MDIO block. */
++#define SYS_ETH_CLKCLR_MDIO 0x00000080
++/* No-Operation
++#define SYS_ETH_CLKCLR_MDIO_NOP 0x00000000 */
++/** Clear */
++#define SYS_ETH_CLKCLR_MDIO_CLR 0x00000080
++/** Clear Clock Enable GMAC3
++    Clears the clock enable bit of the GMAC3 domain. This domain contains the GMAC3 block. */
++#define SYS_ETH_CLKCLR_GMAC3 0x00000008
++/* No-Operation
++#define SYS_ETH_CLKCLR_GMAC3_NOP 0x00000000 */
++/** Clear */
++#define SYS_ETH_CLKCLR_GMAC3_CLR 0x00000008
++/** Clear Clock Enable GMAC2
++    Clears the clock enable bit of the GMAC2 domain. This domain contains the GMAC2 block. */
++#define SYS_ETH_CLKCLR_GMAC2 0x00000004
++/* No-Operation
++#define SYS_ETH_CLKCLR_GMAC2_NOP 0x00000000 */
++/** Clear */
++#define SYS_ETH_CLKCLR_GMAC2_CLR 0x00000004
++/** Clear Clock Enable GMAC1
++    Clears the clock enable bit of the GMAC1 domain. This domain contains the GMAC1 block. */
++#define SYS_ETH_CLKCLR_GMAC1 0x00000002
++/* No-Operation
++#define SYS_ETH_CLKCLR_GMAC1_NOP 0x00000000 */
++/** Clear */
++#define SYS_ETH_CLKCLR_GMAC1_CLR 0x00000002
++/** Clear Clock Enable GMAC0
++    Clears the clock enable bit of the GMAC0 domain. This domain contains the GMAC0 block. */
++#define SYS_ETH_CLKCLR_GMAC0 0x00000001
++/* No-Operation
++#define SYS_ETH_CLKCLR_GMAC0_NOP 0x00000000 */
++/** Clear */
++#define SYS_ETH_CLKCLR_GMAC0_CLR 0x00000001
++
++/* Fields of "Activation Status Register" */
++/** PADCTRL2 Status
++    Shows the activation status of the PADCTRL2 domain. This domain contains the PADCTRL2 block. */
++#define SYS_ETH_ACTS_PADCTRL2 0x00200000
++/* The block is inactive.
++#define SYS_ETH_ACTS_PADCTRL2_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_ETH_ACTS_PADCTRL2_ACT 0x00200000
++/** PADCTRL0 Status
++    Shows the activation status of the PADCTRL0 domain. This domain contains the PADCTRL0 block. */
++#define SYS_ETH_ACTS_PADCTRL0 0x00100000
++/* The block is inactive.
++#define SYS_ETH_ACTS_PADCTRL0_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_ETH_ACTS_PADCTRL0_ACT 0x00100000
++/** P2 Status
++    Shows the activation status of the P2 domain. This domain contains the P2 instance of the GPIO block. */
++#define SYS_ETH_ACTS_P2 0x00020000
++/* The block is inactive.
++#define SYS_ETH_ACTS_P2_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_ETH_ACTS_P2_ACT 0x00020000
++/** P0 Status
++    Shows the activation status of the P0 domain. This domain contains the P0 instance of the GPIO block. */
++#define SYS_ETH_ACTS_P0 0x00010000
++/* The block is inactive.
++#define SYS_ETH_ACTS_P0_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_ETH_ACTS_P0_ACT 0x00010000
++/** xMII Status
++    Shows the activation status of the xMII domain. This domain contains the XMII block. If any of the digital LAN interfaces shall be used, this domain has to be active. */
++#define SYS_ETH_ACTS_xMII 0x00000800
++/* The block is inactive.
++#define SYS_ETH_ACTS_xMII_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_ETH_ACTS_xMII_ACT 0x00000800
++/** SGMII Status
++    Shows the activation status of the SGMII domain. This domain contains all parts of the EIM related to the SGMII block. The SGMII block itself is not contained, as it has its own clock/reset/power management. */
++#define SYS_ETH_ACTS_SGMII 0x00000400
++/* The block is inactive.
++#define SYS_ETH_ACTS_SGMII_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_ETH_ACTS_SGMII_ACT 0x00000400
++/** GPHY1 Status
++    Shows the activation status of the GPHY1 domain. This domain contains all parts of the EIM related to GPHY1. The GPHY1 itself is not contained, as it has its own clock/reset/power management. */
++#define SYS_ETH_ACTS_GPHY1 0x00000200
++/* The block is inactive.
++#define SYS_ETH_ACTS_GPHY1_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_ETH_ACTS_GPHY1_ACT 0x00000200
++/** GPHY0 Status
++    Shows the activation status of the GPHY0 domain. This domain contains all parts of the EIM related to GPHY0. The GPHY0 itself is not contained, as it has its own clock/reset/power management. */
++#define SYS_ETH_ACTS_GPHY0 0x00000100
++/* The block is inactive.
++#define SYS_ETH_ACTS_GPHY0_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_ETH_ACTS_GPHY0_ACT 0x00000100
++/** MDIO Status
++    Shows the activation status of the MDIO domain. This domain contains the MDIO block. */
++#define SYS_ETH_ACTS_MDIO 0x00000080
++/* The block is inactive.
++#define SYS_ETH_ACTS_MDIO_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_ETH_ACTS_MDIO_ACT 0x00000080
++/** GMAC3 Status
++    Shows the activation status of the GMAC3 domain. This domain contains the GMAC3 block. */
++#define SYS_ETH_ACTS_GMAC3 0x00000008
++/* The block is inactive.
++#define SYS_ETH_ACTS_GMAC3_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_ETH_ACTS_GMAC3_ACT 0x00000008
++/** GMAC2 Status
++    Shows the activation status of the GMAC2 domain. This domain contains the GMAC2 block. */
++#define SYS_ETH_ACTS_GMAC2 0x00000004
++/* The block is inactive.
++#define SYS_ETH_ACTS_GMAC2_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_ETH_ACTS_GMAC2_ACT 0x00000004
++/** GMAC1 Status
++    Shows the activation status of the GMAC1 domain. This domain contains the GMAC1 block. */
++#define SYS_ETH_ACTS_GMAC1 0x00000002
++/* The block is inactive.
++#define SYS_ETH_ACTS_GMAC1_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_ETH_ACTS_GMAC1_ACT 0x00000002
++/** GMAC0 Status
++    Shows the activation status of the GMAC0 domain. This domain contains the GMAC0 block. */
++#define SYS_ETH_ACTS_GMAC0 0x00000001
++/* The block is inactive.
++#define SYS_ETH_ACTS_GMAC0_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_ETH_ACTS_GMAC0_ACT 0x00000001
++
++/* Fields of "Activation Register" */
++/** Activate PADCTRL2
++    Sets the activation flag of the PADCTRL2 domain. This domain contains the PADCTRL2 block. */
++#define SYS_ETH_ACT_PADCTRL2 0x00200000
++/* No-Operation
++#define SYS_ETH_ACT_PADCTRL2_NOP 0x00000000 */
++/** Set */
++#define SYS_ETH_ACT_PADCTRL2_SET 0x00200000
++/** Activate PADCTRL0
++    Sets the activation flag of the PADCTRL0 domain. This domain contains the PADCTRL0 block. */
++#define SYS_ETH_ACT_PADCTRL0 0x00100000
++/* No-Operation
++#define SYS_ETH_ACT_PADCTRL0_NOP 0x00000000 */
++/** Set */
++#define SYS_ETH_ACT_PADCTRL0_SET 0x00100000
++/** Activate P2
++    Sets the activation flag of the P2 domain. This domain contains the P2 instance of the GPIO block. */
++#define SYS_ETH_ACT_P2 0x00020000
++/* No-Operation
++#define SYS_ETH_ACT_P2_NOP 0x00000000 */
++/** Set */
++#define SYS_ETH_ACT_P2_SET 0x00020000
++/** Activate P0
++    Sets the activation flag of the P0 domain. This domain contains the P0 instance of the GPIO block. */
++#define SYS_ETH_ACT_P0 0x00010000
++/* No-Operation
++#define SYS_ETH_ACT_P0_NOP 0x00000000 */
++/** Set */
++#define SYS_ETH_ACT_P0_SET 0x00010000
++/** Activate xMII
++    Sets the activation flag of the xMII domain. This domain contains the XMII block. If any of the digital LAN interfaces shall be used, this domain has to be active. */
++#define SYS_ETH_ACT_xMII 0x00000800
++/* No-Operation
++#define SYS_ETH_ACT_xMII_NOP 0x00000000 */
++/** Set */
++#define SYS_ETH_ACT_xMII_SET 0x00000800
++/** Activate SGMII
++    Sets the activation flag of the SGMII domain. This domain contains all parts of the EIM related to the SGMII block. The SGMII block itself is not contained, as it has its own clock/reset/power management. */
++#define SYS_ETH_ACT_SGMII 0x00000400
++/* No-Operation
++#define SYS_ETH_ACT_SGMII_NOP 0x00000000 */
++/** Set */
++#define SYS_ETH_ACT_SGMII_SET 0x00000400
++/** Activate GPHY1
++    Sets the activation flag of the GPHY1 domain. This domain contains all parts of the EIM related to GPHY1. The GPHY1 itself is not contained, as it has its own clock/reset/power management. */
++#define SYS_ETH_ACT_GPHY1 0x00000200
++/* No-Operation
++#define SYS_ETH_ACT_GPHY1_NOP 0x00000000 */
++/** Set */
++#define SYS_ETH_ACT_GPHY1_SET 0x00000200
++/** Activate GPHY0
++    Sets the activation flag of the GPHY0 domain. This domain contains all parts of the EIM related to GPHY0. The GPHY0 itself is not contained, as it has its own clock/reset/power management. */
++#define SYS_ETH_ACT_GPHY0 0x00000100
++/* No-Operation
++#define SYS_ETH_ACT_GPHY0_NOP 0x00000000 */
++/** Set */
++#define SYS_ETH_ACT_GPHY0_SET 0x00000100
++/** Activate MDIO
++    Sets the activation flag of the MDIO domain. This domain contains the MDIO block. */
++#define SYS_ETH_ACT_MDIO 0x00000080
++/* No-Operation
++#define SYS_ETH_ACT_MDIO_NOP 0x00000000 */
++/** Set */
++#define SYS_ETH_ACT_MDIO_SET 0x00000080
++/** Activate GMAC3
++    Sets the activation flag of the GMAC3 domain. This domain contains the GMAC3 block. */
++#define SYS_ETH_ACT_GMAC3 0x00000008
++/* No-Operation
++#define SYS_ETH_ACT_GMAC3_NOP 0x00000000 */
++/** Set */
++#define SYS_ETH_ACT_GMAC3_SET 0x00000008
++/** Activate GMAC2
++    Sets the activation flag of the GMAC2 domain. This domain contains the GMAC2 block. */
++#define SYS_ETH_ACT_GMAC2 0x00000004
++/* No-Operation
++#define SYS_ETH_ACT_GMAC2_NOP 0x00000000 */
++/** Set */
++#define SYS_ETH_ACT_GMAC2_SET 0x00000004
++/** Activate GMAC1
++    Sets the activation flag of the GMAC1 domain. This domain contains the GMAC1 block. */
++#define SYS_ETH_ACT_GMAC1 0x00000002
++/* No-Operation
++#define SYS_ETH_ACT_GMAC1_NOP 0x00000000 */
++/** Set */
++#define SYS_ETH_ACT_GMAC1_SET 0x00000002
++/** Activate GMAC0
++    Sets the activation flag of the GMAC0 domain. This domain contains the GMAC0 block. */
++#define SYS_ETH_ACT_GMAC0 0x00000001
++/* No-Operation
++#define SYS_ETH_ACT_GMAC0_NOP 0x00000000 */
++/** Set */
++#define SYS_ETH_ACT_GMAC0_SET 0x00000001
++
++/* Fields of "Deactivation Register" */
++/** Deactivate PADCTRL2
++    Clears the activation flag of the PADCTRL2 domain. This domain contains the PADCTRL2 block. */
++#define SYS_ETH_DEACT_PADCTRL2 0x00200000
++/* No-Operation
++#define SYS_ETH_DEACT_PADCTRL2_NOP 0x00000000 */
++/** Clear */
++#define SYS_ETH_DEACT_PADCTRL2_CLR 0x00200000
++/** Deactivate PADCTRL0
++    Clears the activation flag of the PADCTRL0 domain. This domain contains the PADCTRL0 block. */
++#define SYS_ETH_DEACT_PADCTRL0 0x00100000
++/* No-Operation
++#define SYS_ETH_DEACT_PADCTRL0_NOP 0x00000000 */
++/** Clear */
++#define SYS_ETH_DEACT_PADCTRL0_CLR 0x00100000
++/** Deactivate P2
++    Clears the activation flag of the P2 domain. This domain contains the P2 instance of the GPIO block. */
++#define SYS_ETH_DEACT_P2 0x00020000
++/* No-Operation
++#define SYS_ETH_DEACT_P2_NOP 0x00000000 */
++/** Clear */
++#define SYS_ETH_DEACT_P2_CLR 0x00020000
++/** Deactivate P0
++    Clears the activation flag of the P0 domain. This domain contains the P0 instance of the GPIO block. */
++#define SYS_ETH_DEACT_P0 0x00010000
++/* No-Operation
++#define SYS_ETH_DEACT_P0_NOP 0x00000000 */
++/** Clear */
++#define SYS_ETH_DEACT_P0_CLR 0x00010000
++/** Deactivate xMII
++    Clears the activation flag of the xMII domain. This domain contains the XMII block. If any of the digital LAN interfaces shall be used, this domain has to be active. */
++#define SYS_ETH_DEACT_xMII 0x00000800
++/* No-Operation
++#define SYS_ETH_DEACT_xMII_NOP 0x00000000 */
++/** Clear */
++#define SYS_ETH_DEACT_xMII_CLR 0x00000800
++/** Deactivate SGMII
++    Clears the activation flag of the SGMII domain. This domain contains all parts of the EIM related to the SGMII block. The SGMII block itself is not contained, as it has its own clock/reset/power management. */
++#define SYS_ETH_DEACT_SGMII 0x00000400
++/* No-Operation
++#define SYS_ETH_DEACT_SGMII_NOP 0x00000000 */
++/** Clear */
++#define SYS_ETH_DEACT_SGMII_CLR 0x00000400
++/** Deactivate GPHY1
++    Clears the activation flag of the GPHY1 domain. This domain contains all parts of the EIM related to GPHY1. The GPHY1 itself is not contained, as it has its own clock/reset/power management. */
++#define SYS_ETH_DEACT_GPHY1 0x00000200
++/* No-Operation
++#define SYS_ETH_DEACT_GPHY1_NOP 0x00000000 */
++/** Clear */
++#define SYS_ETH_DEACT_GPHY1_CLR 0x00000200
++/** Deactivate GPHY0
++    Clears the activation flag of the GPHY0 domain. This domain contains all parts of the EIM related to GPHY0. The GPHY0 itself is not contained, as it has its own clock/reset/power management. */
++#define SYS_ETH_DEACT_GPHY0 0x00000100
++/* No-Operation
++#define SYS_ETH_DEACT_GPHY0_NOP 0x00000000 */
++/** Clear */
++#define SYS_ETH_DEACT_GPHY0_CLR 0x00000100
++/** Deactivate MDIO
++    Clears the activation flag of the MDIO domain. This domain contains the MDIO block. */
++#define SYS_ETH_DEACT_MDIO 0x00000080
++/* No-Operation
++#define SYS_ETH_DEACT_MDIO_NOP 0x00000000 */
++/** Clear */
++#define SYS_ETH_DEACT_MDIO_CLR 0x00000080
++/** Deactivate GMAC3
++    Clears the activation flag of the GMAC3 domain. This domain contains the GMAC3 block. */
++#define SYS_ETH_DEACT_GMAC3 0x00000008
++/* No-Operation
++#define SYS_ETH_DEACT_GMAC3_NOP 0x00000000 */
++/** Clear */
++#define SYS_ETH_DEACT_GMAC3_CLR 0x00000008
++/** Deactivate GMAC2
++    Clears the activation flag of the GMAC2 domain. This domain contains the GMAC2 block. */
++#define SYS_ETH_DEACT_GMAC2 0x00000004
++/* No-Operation
++#define SYS_ETH_DEACT_GMAC2_NOP 0x00000000 */
++/** Clear */
++#define SYS_ETH_DEACT_GMAC2_CLR 0x00000004
++/** Deactivate GMAC1
++    Clears the activation flag of the GMAC1 domain. This domain contains the GMAC1 block. */
++#define SYS_ETH_DEACT_GMAC1 0x00000002
++/* No-Operation
++#define SYS_ETH_DEACT_GMAC1_NOP 0x00000000 */
++/** Clear */
++#define SYS_ETH_DEACT_GMAC1_CLR 0x00000002
++/** Deactivate GMAC0
++    Clears the activation flag of the GMAC0 domain. This domain contains the GMAC0 block. */
++#define SYS_ETH_DEACT_GMAC0 0x00000001
++/* No-Operation
++#define SYS_ETH_DEACT_GMAC0_NOP 0x00000000 */
++/** Clear */
++#define SYS_ETH_DEACT_GMAC0_CLR 0x00000001
++
++/* Fields of "Reboot Trigger Register" */
++/** Reboot PADCTRL2
++    Triggers a reboot of the PADCTRL2 domain. This domain contains the PADCTRL2 block. */
++#define SYS_ETH_RBT_PADCTRL2 0x00200000
++/* No-Operation
++#define SYS_ETH_RBT_PADCTRL2_NOP 0x00000000 */
++/** Trigger */
++#define SYS_ETH_RBT_PADCTRL2_TRIG 0x00200000
++/** Reboot PADCTRL0
++    Triggers a reboot of the PADCTRL0 domain. This domain contains the PADCTRL0 block. */
++#define SYS_ETH_RBT_PADCTRL0 0x00100000
++/* No-Operation
++#define SYS_ETH_RBT_PADCTRL0_NOP 0x00000000 */
++/** Trigger */
++#define SYS_ETH_RBT_PADCTRL0_TRIG 0x00100000
++/** Reboot P2
++    Triggers a reboot of the P2 domain. This domain contains the P2 instance of the GPIO block. */
++#define SYS_ETH_RBT_P2 0x00020000
++/* No-Operation
++#define SYS_ETH_RBT_P2_NOP 0x00000000 */
++/** Trigger */
++#define SYS_ETH_RBT_P2_TRIG 0x00020000
++/** Reboot P0
++    Triggers a reboot of the P0 domain. This domain contains the P0 instance of the GPIO block. */
++#define SYS_ETH_RBT_P0 0x00010000
++/* No-Operation
++#define SYS_ETH_RBT_P0_NOP 0x00000000 */
++/** Trigger */
++#define SYS_ETH_RBT_P0_TRIG 0x00010000
++/** Reboot xMII
++    Triggers a reboot of the xMII domain. This domain contains the XMII block. If any of the digital LAN interfaces shall be used, this domain has to be active. */
++#define SYS_ETH_RBT_xMII 0x00000800
++/* No-Operation
++#define SYS_ETH_RBT_xMII_NOP 0x00000000 */
++/** Trigger */
++#define SYS_ETH_RBT_xMII_TRIG 0x00000800
++/** Reboot SGMII
++    Triggers a reboot of the SGMII domain. This domain contains all parts of the EIM related to the SGMII block. The SGMII block itself is not contained, as it has its own clock/reset/power management. */
++#define SYS_ETH_RBT_SGMII 0x00000400
++/* No-Operation
++#define SYS_ETH_RBT_SGMII_NOP 0x00000000 */
++/** Trigger */
++#define SYS_ETH_RBT_SGMII_TRIG 0x00000400
++/** Reboot GPHY1
++    Triggers a reboot of the GPHY1 domain. This domain contains all parts of the EIM related to GPHY1. The GPHY1 itself is not contained, as it has its own clock/reset/power management. */
++#define SYS_ETH_RBT_GPHY1 0x00000200
++/* No-Operation
++#define SYS_ETH_RBT_GPHY1_NOP 0x00000000 */
++/** Trigger */
++#define SYS_ETH_RBT_GPHY1_TRIG 0x00000200
++/** Reboot GPHY0
++    Triggers a reboot of the GPHY0 domain. This domain contains all parts of the EIM related to GPHY0. The GPHY0 itself is not contained, as it has its own clock/reset/power management. */
++#define SYS_ETH_RBT_GPHY0 0x00000100
++/* No-Operation
++#define SYS_ETH_RBT_GPHY0_NOP 0x00000000 */
++/** Trigger */
++#define SYS_ETH_RBT_GPHY0_TRIG 0x00000100
++/** Reboot MDIO
++    Triggers a reboot of the MDIO domain. This domain contains the MDIO block. */
++#define SYS_ETH_RBT_MDIO 0x00000080
++/* No-Operation
++#define SYS_ETH_RBT_MDIO_NOP 0x00000000 */
++/** Trigger */
++#define SYS_ETH_RBT_MDIO_TRIG 0x00000080
++/** Reboot GMAC3
++    Triggers a reboot of the GMAC3 domain. This domain contains the GMAC3 block. */
++#define SYS_ETH_RBT_GMAC3 0x00000008
++/* No-Operation
++#define SYS_ETH_RBT_GMAC3_NOP 0x00000000 */
++/** Trigger */
++#define SYS_ETH_RBT_GMAC3_TRIG 0x00000008
++/** Reboot GMAC2
++    Triggers a reboot of the GMAC2 domain. This domain contains the GMAC2 block. */
++#define SYS_ETH_RBT_GMAC2 0x00000004
++/* No-Operation
++#define SYS_ETH_RBT_GMAC2_NOP 0x00000000 */
++/** Trigger */
++#define SYS_ETH_RBT_GMAC2_TRIG 0x00000004
++/** Reboot GMAC1
++    Triggers a reboot of the GMAC1 domain. This domain contains the GMAC1 block. */
++#define SYS_ETH_RBT_GMAC1 0x00000002
++/* No-Operation
++#define SYS_ETH_RBT_GMAC1_NOP 0x00000000 */
++/** Trigger */
++#define SYS_ETH_RBT_GMAC1_TRIG 0x00000002
++/** Reboot GMAC0
++    Triggers a reboot of the GMAC0 domain. This domain contains the GMAC0 block. */
++#define SYS_ETH_RBT_GMAC0 0x00000001
++/* No-Operation
++#define SYS_ETH_RBT_GMAC0_NOP 0x00000000 */
++/** Trigger */
++#define SYS_ETH_RBT_GMAC0_TRIG 0x00000001
++
++/* Fields of "External PHY Control Register" */
++/** PHY_CLKO Output Enable
++    Enables the output driver of the PHY_CLKO pin. */
++#define SYS_ETH_EXTPHYC_CLKEN 0x80000000
++/* Disable
++#define SYS_ETH_EXTPHYC_CLKEN_DIS 0x00000000 */
++/** Enable */
++#define SYS_ETH_EXTPHYC_CLKEN_EN 0x80000000
++/** PHY_CLKO Frequency Select
++    Selects the frequency of the PHY_CLKO pin. */
++#define SYS_ETH_EXTPHYC_CLKSEL_MASK 0x00000007
++/** field offset */
++#define SYS_ETH_EXTPHYC_CLKSEL_OFFSET 0
++/** 25 MHz. */
++#define SYS_ETH_EXTPHYC_CLKSEL_F25 0x00000001
++/** 125 MHz. */
++#define SYS_ETH_EXTPHYC_CLKSEL_F125 0x00000002
++/** 50 MHz. */
++#define SYS_ETH_EXTPHYC_CLKSEL_F50 0x00000005
++
++/* Fields of "Power Down Configuration Register" */
++/** Enable Power Down PADCTRL2
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_ETH_PDCFG_PADCTRL2 0x00200000
++/* Disable
++#define SYS_ETH_PDCFG_PADCTRL2_DIS 0x00000000 */
++/** Enable */
++#define SYS_ETH_PDCFG_PADCTRL2_EN 0x00200000
++/** Enable Power Down PADCTRL0
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_ETH_PDCFG_PADCTRL0 0x00100000
++/* Disable
++#define SYS_ETH_PDCFG_PADCTRL0_DIS 0x00000000 */
++/** Enable */
++#define SYS_ETH_PDCFG_PADCTRL0_EN 0x00100000
++/** Enable Power Down P2
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_ETH_PDCFG_P2 0x00020000
++/* Disable
++#define SYS_ETH_PDCFG_P2_DIS 0x00000000 */
++/** Enable */
++#define SYS_ETH_PDCFG_P2_EN 0x00020000
++/** Enable Power Down P0
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_ETH_PDCFG_P0 0x00010000
++/* Disable
++#define SYS_ETH_PDCFG_P0_DIS 0x00000000 */
++/** Enable */
++#define SYS_ETH_PDCFG_P0_EN 0x00010000
++/** Enable Power Down xMII
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_ETH_PDCFG_xMII 0x00000800
++/* Disable
++#define SYS_ETH_PDCFG_xMII_DIS 0x00000000 */
++/** Enable */
++#define SYS_ETH_PDCFG_xMII_EN 0x00000800
++/** Enable Power Down SGMII
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_ETH_PDCFG_SGMII 0x00000400
++/* Disable
++#define SYS_ETH_PDCFG_SGMII_DIS 0x00000000 */
++/** Enable */
++#define SYS_ETH_PDCFG_SGMII_EN 0x00000400
++/** Enable Power Down GPHY1
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_ETH_PDCFG_GPHY1 0x00000200
++/* Disable
++#define SYS_ETH_PDCFG_GPHY1_DIS 0x00000000 */
++/** Enable */
++#define SYS_ETH_PDCFG_GPHY1_EN 0x00000200
++/** Enable Power Down GPHY0
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_ETH_PDCFG_GPHY0 0x00000100
++/* Disable
++#define SYS_ETH_PDCFG_GPHY0_DIS 0x00000000 */
++/** Enable */
++#define SYS_ETH_PDCFG_GPHY0_EN 0x00000100
++/** Enable Power Down MDIO
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_ETH_PDCFG_MDIO 0x00000080
++/* Disable
++#define SYS_ETH_PDCFG_MDIO_DIS 0x00000000 */
++/** Enable */
++#define SYS_ETH_PDCFG_MDIO_EN 0x00000080
++/** Enable Power Down GMAC3
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_ETH_PDCFG_GMAC3 0x00000008
++/* Disable
++#define SYS_ETH_PDCFG_GMAC3_DIS 0x00000000 */
++/** Enable */
++#define SYS_ETH_PDCFG_GMAC3_EN 0x00000008
++/** Enable Power Down GMAC2
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_ETH_PDCFG_GMAC2 0x00000004
++/* Disable
++#define SYS_ETH_PDCFG_GMAC2_DIS 0x00000000 */
++/** Enable */
++#define SYS_ETH_PDCFG_GMAC2_EN 0x00000004
++/** Enable Power Down GMAC1
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_ETH_PDCFG_GMAC1 0x00000002
++/* Disable
++#define SYS_ETH_PDCFG_GMAC1_DIS 0x00000000 */
++/** Enable */
++#define SYS_ETH_PDCFG_GMAC1_EN 0x00000002
++/** Enable Power Down GMAC0
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_ETH_PDCFG_GMAC0 0x00000001
++/* Disable
++#define SYS_ETH_PDCFG_GMAC0_DIS 0x00000000 */
++/** Enable */
++#define SYS_ETH_PDCFG_GMAC0_EN 0x00000001
++
++/* Fields of "Datarate Control Register" */
++/** MDC Clockrate
++    Selects the clockrate of the MDIO interface. */
++#define SYS_ETH_DRC_MDC_MASK 0x30000000
++/** field offset */
++#define SYS_ETH_DRC_MDC_OFFSET 28
++/** 312.5/128 = appr. 2.44 MHz. */
++#define SYS_ETH_DRC_MDC_F2M44 0x00000000
++/** 312.5/64 = appr. 4.88 MHz. */
++#define SYS_ETH_DRC_MDC_F4M88 0x10000000
++/** 312.5/32 = appr. 9.77 MHz. */
++#define SYS_ETH_DRC_MDC_F9M77 0x20000000
++/** 312.5/16 = appr. 19.5 MHz. */
++#define SYS_ETH_DRC_MDC_F19M5 0x30000000
++/** xMII1 Datarate
++    Selects the datarate of the xMII1 interface. */
++#define SYS_ETH_DRC_xMII1_MASK 0x07000000
++/** field offset */
++#define SYS_ETH_DRC_xMII1_OFFSET 24
++/** 10 MBit/s. */
++#define SYS_ETH_DRC_xMII1_DR10 0x00000000
++/** 100 MBit/s. */
++#define SYS_ETH_DRC_xMII1_DR100 0x01000000
++/** 1000 MBit/s. */
++#define SYS_ETH_DRC_xMII1_DR1000 0x02000000
++/** 200 MBit/s. */
++#define SYS_ETH_DRC_xMII1_DR200 0x05000000
++/** xMII0 Datarate
++    Selects the datarate of the xMII0 interface. */
++#define SYS_ETH_DRC_xMII0_MASK 0x00700000
++/** field offset */
++#define SYS_ETH_DRC_xMII0_OFFSET 20
++/** 10 MBit/s. */
++#define SYS_ETH_DRC_xMII0_DR10 0x00000000
++/** 100 MBit/s. */
++#define SYS_ETH_DRC_xMII0_DR100 0x00100000
++/** 1000 MBit/s. */
++#define SYS_ETH_DRC_xMII0_DR1000 0x00200000
++/** 200 MBit/s. */
++#define SYS_ETH_DRC_xMII0_DR200 0x00500000
++/** SGMII Datarate
++    Selects the datarate of the SGMII interface. */
++#define SYS_ETH_DRC_SGMII_MASK 0x00070000
++/** field offset */
++#define SYS_ETH_DRC_SGMII_OFFSET 16
++/** 10 MBit/s. */
++#define SYS_ETH_DRC_SGMII_DR10 0x00000000
++/** 100 MBit/s. */
++#define SYS_ETH_DRC_SGMII_DR100 0x00010000
++/** 1000 MBit/s. */
++#define SYS_ETH_DRC_SGMII_DR1000 0x00020000
++/** 2500 MBit/s. */
++#define SYS_ETH_DRC_SGMII_DR2500 0x00040000
++/** GPHY1_MII2 Datarate
++    Shows the datarate of the GPHY1_MII2 interface. */
++#define SYS_ETH_DRC_GPHY1_MII2_MASK 0x00007000
++/** field offset */
++#define SYS_ETH_DRC_GPHY1_MII2_OFFSET 12
++/** 10 MBit/s. */
++#define SYS_ETH_DRC_GPHY1_MII2_DR10 0x00000000
++/** 100 MBit/s. */
++#define SYS_ETH_DRC_GPHY1_MII2_DR100 0x00001000
++/** GPHY1_GMII Datarate
++    Shows the datarate of the GPHY1_GMII interface. */
++#define SYS_ETH_DRC_GPHY1_GMII_MASK 0x00000700
++/** field offset */
++#define SYS_ETH_DRC_GPHY1_GMII_OFFSET 8
++/** 10 MBit/s. */
++#define SYS_ETH_DRC_GPHY1_GMII_DR10 0x00000000
++/** 100 MBit/s. */
++#define SYS_ETH_DRC_GPHY1_GMII_DR100 0x00000100
++/** 1000 MBit/s. */
++#define SYS_ETH_DRC_GPHY1_GMII_DR1000 0x00000200
++/** GPHY0_MII2 Datarate
++    Shows the datarate of the GPHY0_MII2 interface. */
++#define SYS_ETH_DRC_GPHY0_MII2_MASK 0x00000070
++/** field offset */
++#define SYS_ETH_DRC_GPHY0_MII2_OFFSET 4
++/** 10 MBit/s. */
++#define SYS_ETH_DRC_GPHY0_MII2_DR10 0x00000000
++/** 100 MBit/s. */
++#define SYS_ETH_DRC_GPHY0_MII2_DR100 0x00000010
++/** GPHY0_GMII Datarate
++    Shows the datarate of the GPHY0_GMII interface. */
++#define SYS_ETH_DRC_GPHY0_GMII_MASK 0x00000007
++/** field offset */
++#define SYS_ETH_DRC_GPHY0_GMII_OFFSET 0
++/** 10 MBit/s. */
++#define SYS_ETH_DRC_GPHY0_GMII_DR10 0x00000000
++/** 100 MBit/s. */
++#define SYS_ETH_DRC_GPHY0_GMII_DR100 0x00000001
++/** 1000 MBit/s. */
++#define SYS_ETH_DRC_GPHY0_GMII_DR1000 0x00000002
++
++/* Fields of "GMAC Multiplexer Control Register" */
++/** GMAC 3 MUX setting
++    Selects the physical layer to be connected to GMAC3 */
++#define SYS_ETH_GMUXC_GMAC3_MASK 0x00007000
++/** field offset */
++#define SYS_ETH_GMUXC_GMAC3_OFFSET 12
++/** GMAC connects to GPHY0_GMII interface */
++#define SYS_ETH_GMUXC_GMAC3_GPHY0_GMII 0x00000000
++/** GMAC connects to GPHY0_MII2 interface */
++#define SYS_ETH_GMUXC_GMAC3_GPHY0_MII2 0x00001000
++/** GMAC connects to GPHY1_GMII interface */
++#define SYS_ETH_GMUXC_GMAC3_GPHY1_GMII 0x00002000
++/** GMAC connects to GPHY1_MII2 interface */
++#define SYS_ETH_GMUXC_GMAC3_GPHY1_MII2 0x00003000
++/** GMAC connects to SGMII interface */
++#define SYS_ETH_GMUXC_GMAC3_SGMII 0x00004000
++/** GMAC connects to xMII0 interface */
++#define SYS_ETH_GMUXC_GMAC3_xMII0 0x00005000
++/** GMAC connects to xMII1 interface */
++#define SYS_ETH_GMUXC_GMAC3_xMII1 0x00006000
++/** GMAC 2 MUX setting
++    Selects the physical layer to be connected to GMAC2 */
++#define SYS_ETH_GMUXC_GMAC2_MASK 0x00000700
++/** field offset */
++#define SYS_ETH_GMUXC_GMAC2_OFFSET 8
++/** GMAC connects to GPHY0_GMII interface */
++#define SYS_ETH_GMUXC_GMAC2_GPHY0_GMII 0x00000000
++/** GMAC connects to GPHY0_MII2 interface */
++#define SYS_ETH_GMUXC_GMAC2_GPHY0_MII2 0x00000100
++/** GMAC connects to GPHY1_GMII interface */
++#define SYS_ETH_GMUXC_GMAC2_GPHY1_GMII 0x00000200
++/** GMAC connects to GPHY1_MII2 interface */
++#define SYS_ETH_GMUXC_GMAC2_GPHY1_MII2 0x00000300
++/** GMAC connects to SGMII interface */
++#define SYS_ETH_GMUXC_GMAC2_SGMII 0x00000400
++/** GMAC connects to xMII0 interface */
++#define SYS_ETH_GMUXC_GMAC2_xMII0 0x00000500
++/** GMAC connects to xMII1 interface */
++#define SYS_ETH_GMUXC_GMAC2_xMII1 0x00000600
++/** GMAC 1 MUX setting
++    Selects the physical layer to be connected to GMAC1 */
++#define SYS_ETH_GMUXC_GMAC1_MASK 0x00000070
++/** field offset */
++#define SYS_ETH_GMUXC_GMAC1_OFFSET 4
++/** GMAC connects to GPHY0_GMII interface */
++#define SYS_ETH_GMUXC_GMAC1_GPHY0_GMII 0x00000000
++/** GMAC connects to GPHY0_MII2 interface */
++#define SYS_ETH_GMUXC_GMAC1_GPHY0_MII2 0x00000010
++/** GMAC connects to GPHY1_GMII interface */
++#define SYS_ETH_GMUXC_GMAC1_GPHY1_GMII 0x00000020
++/** GMAC connects to GPHY1_MII2 interface */
++#define SYS_ETH_GMUXC_GMAC1_GPHY1_MII2 0x00000030
++/** GMAC connects to SGMII interface */
++#define SYS_ETH_GMUXC_GMAC1_SGMII 0x00000040
++/** GMAC connects to xMII0 interface */
++#define SYS_ETH_GMUXC_GMAC1_xMII0 0x00000050
++/** GMAC connects to xMII1 interface */
++#define SYS_ETH_GMUXC_GMAC1_xMII1 0x00000060
++/** GMAC 0 MUX setting
++    Selects the physical layer to be connected to GMAC0 */
++#define SYS_ETH_GMUXC_GMAC0_MASK 0x00000007
++/** field offset */
++#define SYS_ETH_GMUXC_GMAC0_OFFSET 0
++/** GMAC connects to GPHY0_GMII interface */
++#define SYS_ETH_GMUXC_GMAC0_GPHY0_GMII 0x00000000
++/** GMAC connects to GPHY0_MII2 interface */
++#define SYS_ETH_GMUXC_GMAC0_GPHY0_MII2 0x00000001
++/** GMAC connects to GPHY1_GMII interface */
++#define SYS_ETH_GMUXC_GMAC0_GPHY1_GMII 0x00000002
++/** GMAC connects to GPHY1_MII2 interface */
++#define SYS_ETH_GMUXC_GMAC0_GPHY1_MII2 0x00000003
++/** GMAC connects to SGMII interface */
++#define SYS_ETH_GMUXC_GMAC0_SGMII 0x00000004
++/** GMAC connects to xMII0 interface */
++#define SYS_ETH_GMUXC_GMAC0_xMII0 0x00000005
++/** GMAC connects to xMII1 interface */
++#define SYS_ETH_GMUXC_GMAC0_xMII1 0x00000006
++
++/* Fields of "Datarate Status Register" */
++/** GMAC 3 datarate
++    Shows the datarate of GMAC3 */
++#define SYS_ETH_DRS_GMAC3_MASK 0x00007000
++/** field offset */
++#define SYS_ETH_DRS_GMAC3_OFFSET 12
++/** 10 MBit/s. */
++#define SYS_ETH_DRS_GMAC3_DR10 0x00000000
++/** 100 MBit/s. */
++#define SYS_ETH_DRS_GMAC3_DR100 0x00001000
++/** 1000 MBit/s. */
++#define SYS_ETH_DRS_GMAC3_DR1000 0x00002000
++/** 2500 MBit/s. */
++#define SYS_ETH_DRS_GMAC3_DR2500 0x00004000
++/** 200 MBit/s. */
++#define SYS_ETH_DRS_GMAC3_DR200 0x00005000
++/** GMAC 2 datarate
++    Shows the datarate of GMAC2 */
++#define SYS_ETH_DRS_GMAC2_MASK 0x00000700
++/** field offset */
++#define SYS_ETH_DRS_GMAC2_OFFSET 8
++/** 10 MBit/s. */
++#define SYS_ETH_DRS_GMAC2_DR10 0x00000000
++/** 100 MBit/s. */
++#define SYS_ETH_DRS_GMAC2_DR100 0x00000100
++/** 1000 MBit/s. */
++#define SYS_ETH_DRS_GMAC2_DR1000 0x00000200
++/** 2500 MBit/s. */
++#define SYS_ETH_DRS_GMAC2_DR2500 0x00000400
++/** 200 MBit/s. */
++#define SYS_ETH_DRS_GMAC2_DR200 0x00000500
++/** GMAC 1 datarate
++    Shows the datarate of GMAC1 */
++#define SYS_ETH_DRS_GMAC1_MASK 0x00000070
++/** field offset */
++#define SYS_ETH_DRS_GMAC1_OFFSET 4
++/** 10 MBit/s. */
++#define SYS_ETH_DRS_GMAC1_DR10 0x00000000
++/** 100 MBit/s. */
++#define SYS_ETH_DRS_GMAC1_DR100 0x00000010
++/** 1000 MBit/s. */
++#define SYS_ETH_DRS_GMAC1_DR1000 0x00000020
++/** 2500 MBit/s. */
++#define SYS_ETH_DRS_GMAC1_DR2500 0x00000040
++/** 200 MBit/s. */
++#define SYS_ETH_DRS_GMAC1_DR200 0x00000050
++/** GMAC 0 datarate
++    Shows the datarate of GMAC0 */
++#define SYS_ETH_DRS_GMAC0_MASK 0x00000007
++/** field offset */
++#define SYS_ETH_DRS_GMAC0_OFFSET 0
++/** 10 MBit/s. */
++#define SYS_ETH_DRS_GMAC0_DR10 0x00000000
++/** 100 MBit/s. */
++#define SYS_ETH_DRS_GMAC0_DR100 0x00000001
++/** 1000 MBit/s. */
++#define SYS_ETH_DRS_GMAC0_DR1000 0x00000002
++/** 2500 MBit/s. */
++#define SYS_ETH_DRS_GMAC0_DR2500 0x00000004
++/** 200 MBit/s. */
++#define SYS_ETH_DRS_GMAC0_DR200 0x00000005
++
++/* Fields of "SGMII Control Register" */
++/** Auto Negotiation Protocol
++    Selects the TBX/SGMII mode for the autonegotiation of the SGMII interface. */
++#define SYS_ETH_SGMIIC_ANP 0x00000002
++/* TBX Mode (IEEE 802.3 Clause 37 ANEG)
++#define SYS_ETH_SGMIIC_ANP_TBXM 0x00000000 */
++/** SGMII Mode (Cisco Aneg) */
++#define SYS_ETH_SGMIIC_ANP_SGMIIM 0x00000002
++/** Auto Negotiation MAC/PHY
++    Selects the MAC/PHY mode for the autonegotiation of the SGMII interface. */
++#define SYS_ETH_SGMIIC_ANMP 0x00000001
++/* MAC Mode
++#define SYS_ETH_SGMIIC_ANMP_MAC 0x00000000 */
++/** PHY Mode */
++#define SYS_ETH_SGMIIC_ANMP_PHY 0x00000001
++
++/*! @} */ /* SYS_ETH_REGISTER */
++
++#endif /* _sys_eth_reg_h */
+--- /dev/null
++++ b/arch/mips/include/asm/mach-lantiq/falcon/sys_gpe_reg.h
+@@ -0,0 +1,2829 @@
++/******************************************************************************
++
++                               Copyright (c) 2010
++                            Lantiq Deutschland GmbH
++
++  For licensing information, see the file 'LICENSE' in the root folder of
++  this software module.
++
++******************************************************************************/
++
++#ifndef _sys_gpe_reg_h
++#define _sys_gpe_reg_h
++
++/** \addtogroup SYS_GPE_REGISTER
++   @{
++*/
++/* access macros */
++#define sys_gpe_r32(reg) reg_r32(&sys_gpe->reg)
++#define sys_gpe_w32(val, reg) reg_w32(val, &sys_gpe->reg)
++#define sys_gpe_w32_mask(clear, set, reg) reg_w32_mask(clear, set, &sys_gpe->reg)
++#define sys_gpe_r32_table(reg, idx) reg_r32_table(sys_gpe->reg, idx)
++#define sys_gpe_w32_table(val, reg, idx) reg_w32_table(val, sys_gpe->reg, idx)
++#define sys_gpe_w32_table_mask(clear, set, reg, idx) reg_w32_table_mask(clear, set, sys_gpe->reg, idx)
++#define sys_gpe_adr_table(reg, idx) adr_table(sys_gpe->reg, idx)
++
++
++/** SYS_GPE register structure */
++struct gpon_reg_sys_gpe
++{
++   /** Clock Status Register
++       The clock status reflects the actual clocking mode as a function of the SW settings and the hardware sleep mode. */
++   unsigned int clks; /* 0x00000000 */
++   /** Clock Enable Register
++       Via this register the clocks for the domains can be enabled. */
++   unsigned int clken; /* 0x00000004 */
++   /** Clock Clear Register
++       Via this register the clocks for the domains can be disabled. */
++   unsigned int clkclr; /* 0x00000008 */
++   /** Reserved */
++   unsigned int res_0[5]; /* 0x0000000C */
++   /** Activation Status Register */
++   unsigned int acts; /* 0x00000020 */
++   /** Activation Register
++       Via this register the domains can be activated. */
++   unsigned int act; /* 0x00000024 */
++   /** Deactivation Register
++       Via this register the domains can be deactivated. */
++   unsigned int deact; /* 0x00000028 */
++   /** Reboot Trigger Register
++       Via this register the domains can be rebooted (sent through reset). */
++   unsigned int rbt; /* 0x0000002C */
++   /** Reserved */
++   unsigned int res_1[33]; /* 0x00000030 */
++   /** Power Down Configuration Register
++       Via this register the configuration is done whether in case of deactivation the power supply of the domain shall be removed. */
++   unsigned int pdcfg; /* 0x000000B4 */
++   /** Sleep Source Configuration Register
++       All sleep/wakeup conditions selected in this register contribute to the generation of the hardware sleep/wakeup request. Unselected conditions are ignored for sleep and wakeup. If no bit is selected, HW sleep is disabled. */
++   unsigned int sscfg; /* 0x000000B8 */
++   /** Sleep Source Timer Register */
++   unsigned int sst; /* 0x000000BC */
++   /** Sleep Destination Status Register
++       Shows the status of the sleep destination vector. All clock domains selected in this register will be shutoff in case of a hardware sleep request. These clocks will be automatically reenabled in case of a hardware wakeup request. */
++   unsigned int sds; /* 0x000000C0 */
++   /** Sleep Destination Set Register
++       Via this register the the domains to be shutoff in case of a hardware sleep request can be selected. */
++   unsigned int sdset; /* 0x000000C4 */
++   /** Sleep Destination Clear Register
++       Via this register the the domains to be shutoff in case of a hardware sleep request can be deselected. */
++   unsigned int sdclr; /* 0x000000C8 */
++   /** Reserved */
++   unsigned int res_2[9]; /* 0x000000CC */
++   /** IRNCS Capture Register
++       This register shows the currently active interrupt events masked with the corresponding enable bits of the IRNCSEN register. The interrupts can be acknowledged by a write operation. */
++   unsigned int irncscr; /* 0x000000F0 */
++   /** IRNCS Interrupt Control Register
++       A write operation directly effects the interrupts. This can be used to trigger events under software control for testing purposes. A read operation returns the unmasked interrupt events. */
++   unsigned int irncsicr; /* 0x000000F4 */
++   /** IRNCS Interrupt Enable Register
++       This register contains the enable (or mask) bits for the interrupts. Disabled interrupts are not visible in the IRNCSCR register and are not signalled via the interrupt line towards the controller. */
++   unsigned int irncsen; /* 0x000000F8 */
++   /** Reserved */
++   unsigned int res_3; /* 0x000000FC */
++};
++
++
++/* Fields of "Clock Status Register" */
++/** COP7 Clock Enable
++    Shows the clock enable bit for the COP7 domain. This domain contains the Coprocessor 7 of the SCE. */
++#define SYS_GPE_CLKS_COP7 0x80000000
++/* Disable
++#define SYS_GPE_CLKS_COP7_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_CLKS_COP7_EN 0x80000000
++/** COP6 Clock Enable
++    Shows the clock enable bit for the COP6 domain. This domain contains the Coprocessor 6 of the SCE. */
++#define SYS_GPE_CLKS_COP6 0x40000000
++/* Disable
++#define SYS_GPE_CLKS_COP6_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_CLKS_COP6_EN 0x40000000
++/** COP5 Clock Enable
++    Shows the clock enable bit for the COP5 domain. This domain contains the Coprocessor 5 of the SCE. */
++#define SYS_GPE_CLKS_COP5 0x20000000
++/* Disable
++#define SYS_GPE_CLKS_COP5_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_CLKS_COP5_EN 0x20000000
++/** COP4 Clock Enable
++    Shows the clock enable bit for the COP4 domain. This domain contains the Coprocessor 4 of the SCE. */
++#define SYS_GPE_CLKS_COP4 0x10000000
++/* Disable
++#define SYS_GPE_CLKS_COP4_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_CLKS_COP4_EN 0x10000000
++/** COP3 Clock Enable
++    Shows the clock enable bit for the COP3 domain. This domain contains the Coprocessor 3 of the SCE. */
++#define SYS_GPE_CLKS_COP3 0x08000000
++/* Disable
++#define SYS_GPE_CLKS_COP3_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_CLKS_COP3_EN 0x08000000
++/** COP2 Clock Enable
++    Shows the clock enable bit for the COP2 domain. This domain contains the Coprocessor 2 of the SCE. */
++#define SYS_GPE_CLKS_COP2 0x04000000
++/* Disable
++#define SYS_GPE_CLKS_COP2_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_CLKS_COP2_EN 0x04000000
++/** COP1 Clock Enable
++    Shows the clock enable bit for the COP1 domain. This domain contains the Coprocessor 1 of the SCE. */
++#define SYS_GPE_CLKS_COP1 0x02000000
++/* Disable
++#define SYS_GPE_CLKS_COP1_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_CLKS_COP1_EN 0x02000000
++/** COP0 Clock Enable
++    Shows the clock enable bit for the COP0 domain. This domain contains the Coprocessor 0 of the SCE. */
++#define SYS_GPE_CLKS_COP0 0x01000000
++/* Disable
++#define SYS_GPE_CLKS_COP0_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_CLKS_COP0_EN 0x01000000
++/** PE5 Clock Enable
++    Shows the clock enable bit for the PE5 domain. This domain contains the Processing Element 5 of the SCE. */
++#define SYS_GPE_CLKS_PE5 0x00200000
++/* Disable
++#define SYS_GPE_CLKS_PE5_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_CLKS_PE5_EN 0x00200000
++/** PE4 Clock Enable
++    Shows the clock enable bit for the PE4 domain. This domain contains the Processing Element 4 of the SCE. */
++#define SYS_GPE_CLKS_PE4 0x00100000
++/* Disable
++#define SYS_GPE_CLKS_PE4_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_CLKS_PE4_EN 0x00100000
++/** PE3 Clock Enable
++    Shows the clock enable bit for the PE3 domain. This domain contains the Processing Element 3 of the SCE. */
++#define SYS_GPE_CLKS_PE3 0x00080000
++/* Disable
++#define SYS_GPE_CLKS_PE3_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_CLKS_PE3_EN 0x00080000
++/** PE2 Clock Enable
++    Shows the clock enable bit for the PE2 domain. This domain contains the Processing Element 2 of the SCE. */
++#define SYS_GPE_CLKS_PE2 0x00040000
++/* Disable
++#define SYS_GPE_CLKS_PE2_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_CLKS_PE2_EN 0x00040000
++/** PE1 Clock Enable
++    Shows the clock enable bit for the PE1 domain. This domain contains the Processing Element 1 of the SCE. */
++#define SYS_GPE_CLKS_PE1 0x00020000
++/* Disable
++#define SYS_GPE_CLKS_PE1_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_CLKS_PE1_EN 0x00020000
++/** PE0 Clock Enable
++    Shows the clock enable bit for the PE0 domain. This domain contains the Processing Element 0 of the SCE. */
++#define SYS_GPE_CLKS_PE0 0x00010000
++/* Disable
++#define SYS_GPE_CLKS_PE0_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_CLKS_PE0_EN 0x00010000
++/** ARB Clock Enable
++    Shows the clock enable bit for the ARB domain. This domain contains the Arbiter. */
++#define SYS_GPE_CLKS_ARB 0x00002000
++/* Disable
++#define SYS_GPE_CLKS_ARB_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_CLKS_ARB_EN 0x00002000
++/** FSQM Clock Enable
++    Shows the clock enable bit for the FSQM domain. This domain contains the FSQM. */
++#define SYS_GPE_CLKS_FSQM 0x00001000
++/* Disable
++#define SYS_GPE_CLKS_FSQM_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_CLKS_FSQM_EN 0x00001000
++/** TMU Clock Enable
++    Shows the clock enable bit for the TMU domain. This domain contains the TMU. */
++#define SYS_GPE_CLKS_TMU 0x00000800
++/* Disable
++#define SYS_GPE_CLKS_TMU_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_CLKS_TMU_EN 0x00000800
++/** MRG Clock Enable
++    Shows the clock enable bit for the MRG domain. This domain contains the Merger. */
++#define SYS_GPE_CLKS_MRG 0x00000400
++/* Disable
++#define SYS_GPE_CLKS_MRG_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_CLKS_MRG_EN 0x00000400
++/** DISP Clock Enable
++    Shows the clock enable bit for the DISP domain. This domain contains the Dispatcher. */
++#define SYS_GPE_CLKS_DISP 0x00000200
++/* Disable
++#define SYS_GPE_CLKS_DISP_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_CLKS_DISP_EN 0x00000200
++/** IQM Clock Enable
++    Shows the clock enable bit for the IQM domain. This domain contains the IQM. */
++#define SYS_GPE_CLKS_IQM 0x00000100
++/* Disable
++#define SYS_GPE_CLKS_IQM_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_CLKS_IQM_EN 0x00000100
++/** CPUE Clock Enable
++    Shows the clock enable bit for the CPUE domain. This domain contains all parts related to the CPU EGRESS interface. */
++#define SYS_GPE_CLKS_CPUE 0x00000080
++/* Disable
++#define SYS_GPE_CLKS_CPUE_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_CLKS_CPUE_EN 0x00000080
++/** CPUI Clock Enable
++    Shows the clock enable bit for the CPUI domain. This domain contains all parts related to the CPU INGRESS interface. */
++#define SYS_GPE_CLKS_CPUI 0x00000040
++/* Disable
++#define SYS_GPE_CLKS_CPUI_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_CLKS_CPUI_EN 0x00000040
++/** GPONE Clock Enable
++    Shows the clock enable bit for the GPONE domain. This domain contains all parts related to the GPON (GTC) EGRESS interface. */
++#define SYS_GPE_CLKS_GPONE 0x00000020
++/* Disable
++#define SYS_GPE_CLKS_GPONE_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_CLKS_GPONE_EN 0x00000020
++/** GPONI Clock Enable
++    Shows the clock enable bit for the GPONI domain. This domain contains all parts related to the GPON (GTC) INGRESS interface. */
++#define SYS_GPE_CLKS_GPONI 0x00000010
++/* Disable
++#define SYS_GPE_CLKS_GPONI_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_CLKS_GPONI_EN 0x00000010
++/** LAN3 Clock Enable
++    Shows the clock enable bit for the LAN3 domain. This domain contains all parts related to the LAN3 interface. */
++#define SYS_GPE_CLKS_LAN3 0x00000008
++/* Disable
++#define SYS_GPE_CLKS_LAN3_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_CLKS_LAN3_EN 0x00000008
++/** LAN2 Clock Enable
++    Shows the clock enable bit for the LAN2 domain. This domain contains all parts related to the LAN2 interface. */
++#define SYS_GPE_CLKS_LAN2 0x00000004
++/* Disable
++#define SYS_GPE_CLKS_LAN2_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_CLKS_LAN2_EN 0x00000004
++/** LAN1 Clock Enable
++    Shows the clock enable bit for the LAN1 domain. This domain contains all parts related to the LAN1 interface. */
++#define SYS_GPE_CLKS_LAN1 0x00000002
++/* Disable
++#define SYS_GPE_CLKS_LAN1_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_CLKS_LAN1_EN 0x00000002
++/** LAN0 Clock Enable
++    Shows the clock enable bit for the LAN0 domain. This domain contains all parts related to the LAN0 interface. */
++#define SYS_GPE_CLKS_LAN0 0x00000001
++/* Disable
++#define SYS_GPE_CLKS_LAN0_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_CLKS_LAN0_EN 0x00000001
++
++/* Fields of "Clock Enable Register" */
++/** Set Clock Enable COP7
++    Sets the clock enable bit of the COP7 domain. This domain contains the Coprocessor 7 of the SCE. */
++#define SYS_GPE_CLKEN_COP7 0x80000000
++/* No-Operation
++#define SYS_GPE_CLKEN_COP7_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_CLKEN_COP7_SET 0x80000000
++/** Set Clock Enable COP6
++    Sets the clock enable bit of the COP6 domain. This domain contains the Coprocessor 6 of the SCE. */
++#define SYS_GPE_CLKEN_COP6 0x40000000
++/* No-Operation
++#define SYS_GPE_CLKEN_COP6_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_CLKEN_COP6_SET 0x40000000
++/** Set Clock Enable COP5
++    Sets the clock enable bit of the COP5 domain. This domain contains the Coprocessor 5 of the SCE. */
++#define SYS_GPE_CLKEN_COP5 0x20000000
++/* No-Operation
++#define SYS_GPE_CLKEN_COP5_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_CLKEN_COP5_SET 0x20000000
++/** Set Clock Enable COP4
++    Sets the clock enable bit of the COP4 domain. This domain contains the Coprocessor 4 of the SCE. */
++#define SYS_GPE_CLKEN_COP4 0x10000000
++/* No-Operation
++#define SYS_GPE_CLKEN_COP4_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_CLKEN_COP4_SET 0x10000000
++/** Set Clock Enable COP3
++    Sets the clock enable bit of the COP3 domain. This domain contains the Coprocessor 3 of the SCE. */
++#define SYS_GPE_CLKEN_COP3 0x08000000
++/* No-Operation
++#define SYS_GPE_CLKEN_COP3_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_CLKEN_COP3_SET 0x08000000
++/** Set Clock Enable COP2
++    Sets the clock enable bit of the COP2 domain. This domain contains the Coprocessor 2 of the SCE. */
++#define SYS_GPE_CLKEN_COP2 0x04000000
++/* No-Operation
++#define SYS_GPE_CLKEN_COP2_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_CLKEN_COP2_SET 0x04000000
++/** Set Clock Enable COP1
++    Sets the clock enable bit of the COP1 domain. This domain contains the Coprocessor 1 of the SCE. */
++#define SYS_GPE_CLKEN_COP1 0x02000000
++/* No-Operation
++#define SYS_GPE_CLKEN_COP1_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_CLKEN_COP1_SET 0x02000000
++/** Set Clock Enable COP0
++    Sets the clock enable bit of the COP0 domain. This domain contains the Coprocessor 0 of the SCE. */
++#define SYS_GPE_CLKEN_COP0 0x01000000
++/* No-Operation
++#define SYS_GPE_CLKEN_COP0_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_CLKEN_COP0_SET 0x01000000
++/** Set Clock Enable PE5
++    Sets the clock enable bit of the PE5 domain. This domain contains the Processing Element 5 of the SCE. */
++#define SYS_GPE_CLKEN_PE5 0x00200000
++/* No-Operation
++#define SYS_GPE_CLKEN_PE5_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_CLKEN_PE5_SET 0x00200000
++/** Set Clock Enable PE4
++    Sets the clock enable bit of the PE4 domain. This domain contains the Processing Element 4 of the SCE. */
++#define SYS_GPE_CLKEN_PE4 0x00100000
++/* No-Operation
++#define SYS_GPE_CLKEN_PE4_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_CLKEN_PE4_SET 0x00100000
++/** Set Clock Enable PE3
++    Sets the clock enable bit of the PE3 domain. This domain contains the Processing Element 3 of the SCE. */
++#define SYS_GPE_CLKEN_PE3 0x00080000
++/* No-Operation
++#define SYS_GPE_CLKEN_PE3_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_CLKEN_PE3_SET 0x00080000
++/** Set Clock Enable PE2
++    Sets the clock enable bit of the PE2 domain. This domain contains the Processing Element 2 of the SCE. */
++#define SYS_GPE_CLKEN_PE2 0x00040000
++/* No-Operation
++#define SYS_GPE_CLKEN_PE2_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_CLKEN_PE2_SET 0x00040000
++/** Set Clock Enable PE1
++    Sets the clock enable bit of the PE1 domain. This domain contains the Processing Element 1 of the SCE. */
++#define SYS_GPE_CLKEN_PE1 0x00020000
++/* No-Operation
++#define SYS_GPE_CLKEN_PE1_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_CLKEN_PE1_SET 0x00020000
++/** Set Clock Enable PE0
++    Sets the clock enable bit of the PE0 domain. This domain contains the Processing Element 0 of the SCE. */
++#define SYS_GPE_CLKEN_PE0 0x00010000
++/* No-Operation
++#define SYS_GPE_CLKEN_PE0_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_CLKEN_PE0_SET 0x00010000
++/** Set Clock Enable ARB
++    Sets the clock enable bit of the ARB domain. This domain contains the Arbiter. */
++#define SYS_GPE_CLKEN_ARB 0x00002000
++/* No-Operation
++#define SYS_GPE_CLKEN_ARB_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_CLKEN_ARB_SET 0x00002000
++/** Set Clock Enable FSQM
++    Sets the clock enable bit of the FSQM domain. This domain contains the FSQM. */
++#define SYS_GPE_CLKEN_FSQM 0x00001000
++/* No-Operation
++#define SYS_GPE_CLKEN_FSQM_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_CLKEN_FSQM_SET 0x00001000
++/** Set Clock Enable TMU
++    Sets the clock enable bit of the TMU domain. This domain contains the TMU. */
++#define SYS_GPE_CLKEN_TMU 0x00000800
++/* No-Operation
++#define SYS_GPE_CLKEN_TMU_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_CLKEN_TMU_SET 0x00000800
++/** Set Clock Enable MRG
++    Sets the clock enable bit of the MRG domain. This domain contains the Merger. */
++#define SYS_GPE_CLKEN_MRG 0x00000400
++/* No-Operation
++#define SYS_GPE_CLKEN_MRG_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_CLKEN_MRG_SET 0x00000400
++/** Set Clock Enable DISP
++    Sets the clock enable bit of the DISP domain. This domain contains the Dispatcher. */
++#define SYS_GPE_CLKEN_DISP 0x00000200
++/* No-Operation
++#define SYS_GPE_CLKEN_DISP_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_CLKEN_DISP_SET 0x00000200
++/** Set Clock Enable IQM
++    Sets the clock enable bit of the IQM domain. This domain contains the IQM. */
++#define SYS_GPE_CLKEN_IQM 0x00000100
++/* No-Operation
++#define SYS_GPE_CLKEN_IQM_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_CLKEN_IQM_SET 0x00000100
++/** Set Clock Enable CPUE
++    Sets the clock enable bit of the CPUE domain. This domain contains all parts related to the CPU EGRESS interface. */
++#define SYS_GPE_CLKEN_CPUE 0x00000080
++/* No-Operation
++#define SYS_GPE_CLKEN_CPUE_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_CLKEN_CPUE_SET 0x00000080
++/** Set Clock Enable CPUI
++    Sets the clock enable bit of the CPUI domain. This domain contains all parts related to the CPU INGRESS interface. */
++#define SYS_GPE_CLKEN_CPUI 0x00000040
++/* No-Operation
++#define SYS_GPE_CLKEN_CPUI_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_CLKEN_CPUI_SET 0x00000040
++/** Set Clock Enable GPONE
++    Sets the clock enable bit of the GPONE domain. This domain contains all parts related to the GPON (GTC) EGRESS interface. */
++#define SYS_GPE_CLKEN_GPONE 0x00000020
++/* No-Operation
++#define SYS_GPE_CLKEN_GPONE_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_CLKEN_GPONE_SET 0x00000020
++/** Set Clock Enable GPONI
++    Sets the clock enable bit of the GPONI domain. This domain contains all parts related to the GPON (GTC) INGRESS interface. */
++#define SYS_GPE_CLKEN_GPONI 0x00000010
++/* No-Operation
++#define SYS_GPE_CLKEN_GPONI_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_CLKEN_GPONI_SET 0x00000010
++/** Set Clock Enable LAN3
++    Sets the clock enable bit of the LAN3 domain. This domain contains all parts related to the LAN3 interface. */
++#define SYS_GPE_CLKEN_LAN3 0x00000008
++/* No-Operation
++#define SYS_GPE_CLKEN_LAN3_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_CLKEN_LAN3_SET 0x00000008
++/** Set Clock Enable LAN2
++    Sets the clock enable bit of the LAN2 domain. This domain contains all parts related to the LAN2 interface. */
++#define SYS_GPE_CLKEN_LAN2 0x00000004
++/* No-Operation
++#define SYS_GPE_CLKEN_LAN2_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_CLKEN_LAN2_SET 0x00000004
++/** Set Clock Enable LAN1
++    Sets the clock enable bit of the LAN1 domain. This domain contains all parts related to the LAN1 interface. */
++#define SYS_GPE_CLKEN_LAN1 0x00000002
++/* No-Operation
++#define SYS_GPE_CLKEN_LAN1_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_CLKEN_LAN1_SET 0x00000002
++/** Set Clock Enable LAN0
++    Sets the clock enable bit of the LAN0 domain. This domain contains all parts related to the LAN0 interface. */
++#define SYS_GPE_CLKEN_LAN0 0x00000001
++/* No-Operation
++#define SYS_GPE_CLKEN_LAN0_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_CLKEN_LAN0_SET 0x00000001
++
++/* Fields of "Clock Clear Register" */
++/** Clear Clock Enable COP7
++    Clears the clock enable bit of the COP7 domain. This domain contains the Coprocessor 7 of the SCE. */
++#define SYS_GPE_CLKCLR_COP7 0x80000000
++/* No-Operation
++#define SYS_GPE_CLKCLR_COP7_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_CLKCLR_COP7_CLR 0x80000000
++/** Clear Clock Enable COP6
++    Clears the clock enable bit of the COP6 domain. This domain contains the Coprocessor 6 of the SCE. */
++#define SYS_GPE_CLKCLR_COP6 0x40000000
++/* No-Operation
++#define SYS_GPE_CLKCLR_COP6_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_CLKCLR_COP6_CLR 0x40000000
++/** Clear Clock Enable COP5
++    Clears the clock enable bit of the COP5 domain. This domain contains the Coprocessor 5 of the SCE. */
++#define SYS_GPE_CLKCLR_COP5 0x20000000
++/* No-Operation
++#define SYS_GPE_CLKCLR_COP5_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_CLKCLR_COP5_CLR 0x20000000
++/** Clear Clock Enable COP4
++    Clears the clock enable bit of the COP4 domain. This domain contains the Coprocessor 4 of the SCE. */
++#define SYS_GPE_CLKCLR_COP4 0x10000000
++/* No-Operation
++#define SYS_GPE_CLKCLR_COP4_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_CLKCLR_COP4_CLR 0x10000000
++/** Clear Clock Enable COP3
++    Clears the clock enable bit of the COP3 domain. This domain contains the Coprocessor 3 of the SCE. */
++#define SYS_GPE_CLKCLR_COP3 0x08000000
++/* No-Operation
++#define SYS_GPE_CLKCLR_COP3_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_CLKCLR_COP3_CLR 0x08000000
++/** Clear Clock Enable COP2
++    Clears the clock enable bit of the COP2 domain. This domain contains the Coprocessor 2 of the SCE. */
++#define SYS_GPE_CLKCLR_COP2 0x04000000
++/* No-Operation
++#define SYS_GPE_CLKCLR_COP2_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_CLKCLR_COP2_CLR 0x04000000
++/** Clear Clock Enable COP1
++    Clears the clock enable bit of the COP1 domain. This domain contains the Coprocessor 1 of the SCE. */
++#define SYS_GPE_CLKCLR_COP1 0x02000000
++/* No-Operation
++#define SYS_GPE_CLKCLR_COP1_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_CLKCLR_COP1_CLR 0x02000000
++/** Clear Clock Enable COP0
++    Clears the clock enable bit of the COP0 domain. This domain contains the Coprocessor 0 of the SCE. */
++#define SYS_GPE_CLKCLR_COP0 0x01000000
++/* No-Operation
++#define SYS_GPE_CLKCLR_COP0_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_CLKCLR_COP0_CLR 0x01000000
++/** Clear Clock Enable PE5
++    Clears the clock enable bit of the PE5 domain. This domain contains the Processing Element 5 of the SCE. */
++#define SYS_GPE_CLKCLR_PE5 0x00200000
++/* No-Operation
++#define SYS_GPE_CLKCLR_PE5_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_CLKCLR_PE5_CLR 0x00200000
++/** Clear Clock Enable PE4
++    Clears the clock enable bit of the PE4 domain. This domain contains the Processing Element 4 of the SCE. */
++#define SYS_GPE_CLKCLR_PE4 0x00100000
++/* No-Operation
++#define SYS_GPE_CLKCLR_PE4_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_CLKCLR_PE4_CLR 0x00100000
++/** Clear Clock Enable PE3
++    Clears the clock enable bit of the PE3 domain. This domain contains the Processing Element 3 of the SCE. */
++#define SYS_GPE_CLKCLR_PE3 0x00080000
++/* No-Operation
++#define SYS_GPE_CLKCLR_PE3_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_CLKCLR_PE3_CLR 0x00080000
++/** Clear Clock Enable PE2
++    Clears the clock enable bit of the PE2 domain. This domain contains the Processing Element 2 of the SCE. */
++#define SYS_GPE_CLKCLR_PE2 0x00040000
++/* No-Operation
++#define SYS_GPE_CLKCLR_PE2_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_CLKCLR_PE2_CLR 0x00040000
++/** Clear Clock Enable PE1
++    Clears the clock enable bit of the PE1 domain. This domain contains the Processing Element 1 of the SCE. */
++#define SYS_GPE_CLKCLR_PE1 0x00020000
++/* No-Operation
++#define SYS_GPE_CLKCLR_PE1_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_CLKCLR_PE1_CLR 0x00020000
++/** Clear Clock Enable PE0
++    Clears the clock enable bit of the PE0 domain. This domain contains the Processing Element 0 of the SCE. */
++#define SYS_GPE_CLKCLR_PE0 0x00010000
++/* No-Operation
++#define SYS_GPE_CLKCLR_PE0_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_CLKCLR_PE0_CLR 0x00010000
++/** Clear Clock Enable ARB
++    Clears the clock enable bit of the ARB domain. This domain contains the Arbiter. */
++#define SYS_GPE_CLKCLR_ARB 0x00002000
++/* No-Operation
++#define SYS_GPE_CLKCLR_ARB_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_CLKCLR_ARB_CLR 0x00002000
++/** Clear Clock Enable FSQM
++    Clears the clock enable bit of the FSQM domain. This domain contains the FSQM. */
++#define SYS_GPE_CLKCLR_FSQM 0x00001000
++/* No-Operation
++#define SYS_GPE_CLKCLR_FSQM_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_CLKCLR_FSQM_CLR 0x00001000
++/** Clear Clock Enable TMU
++    Clears the clock enable bit of the TMU domain. This domain contains the TMU. */
++#define SYS_GPE_CLKCLR_TMU 0x00000800
++/* No-Operation
++#define SYS_GPE_CLKCLR_TMU_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_CLKCLR_TMU_CLR 0x00000800
++/** Clear Clock Enable MRG
++    Clears the clock enable bit of the MRG domain. This domain contains the Merger. */
++#define SYS_GPE_CLKCLR_MRG 0x00000400
++/* No-Operation
++#define SYS_GPE_CLKCLR_MRG_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_CLKCLR_MRG_CLR 0x00000400
++/** Clear Clock Enable DISP
++    Clears the clock enable bit of the DISP domain. This domain contains the Dispatcher. */
++#define SYS_GPE_CLKCLR_DISP 0x00000200
++/* No-Operation
++#define SYS_GPE_CLKCLR_DISP_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_CLKCLR_DISP_CLR 0x00000200
++/** Clear Clock Enable IQM
++    Clears the clock enable bit of the IQM domain. This domain contains the IQM. */
++#define SYS_GPE_CLKCLR_IQM 0x00000100
++/* No-Operation
++#define SYS_GPE_CLKCLR_IQM_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_CLKCLR_IQM_CLR 0x00000100
++/** Clear Clock Enable CPUE
++    Clears the clock enable bit of the CPUE domain. This domain contains all parts related to the CPU EGRESS interface. */
++#define SYS_GPE_CLKCLR_CPUE 0x00000080
++/* No-Operation
++#define SYS_GPE_CLKCLR_CPUE_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_CLKCLR_CPUE_CLR 0x00000080
++/** Clear Clock Enable CPUI
++    Clears the clock enable bit of the CPUI domain. This domain contains all parts related to the CPU INGRESS interface. */
++#define SYS_GPE_CLKCLR_CPUI 0x00000040
++/* No-Operation
++#define SYS_GPE_CLKCLR_CPUI_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_CLKCLR_CPUI_CLR 0x00000040
++/** Clear Clock Enable GPONE
++    Clears the clock enable bit of the GPONE domain. This domain contains all parts related to the GPON (GTC) EGRESS interface. */
++#define SYS_GPE_CLKCLR_GPONE 0x00000020
++/* No-Operation
++#define SYS_GPE_CLKCLR_GPONE_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_CLKCLR_GPONE_CLR 0x00000020
++/** Clear Clock Enable GPONI
++    Clears the clock enable bit of the GPONI domain. This domain contains all parts related to the GPON (GTC) INGRESS interface. */
++#define SYS_GPE_CLKCLR_GPONI 0x00000010
++/* No-Operation
++#define SYS_GPE_CLKCLR_GPONI_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_CLKCLR_GPONI_CLR 0x00000010
++/** Clear Clock Enable LAN3
++    Clears the clock enable bit of the LAN3 domain. This domain contains all parts related to the LAN3 interface. */
++#define SYS_GPE_CLKCLR_LAN3 0x00000008
++/* No-Operation
++#define SYS_GPE_CLKCLR_LAN3_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_CLKCLR_LAN3_CLR 0x00000008
++/** Clear Clock Enable LAN2
++    Clears the clock enable bit of the LAN2 domain. This domain contains all parts related to the LAN2 interface. */
++#define SYS_GPE_CLKCLR_LAN2 0x00000004
++/* No-Operation
++#define SYS_GPE_CLKCLR_LAN2_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_CLKCLR_LAN2_CLR 0x00000004
++/** Clear Clock Enable LAN1
++    Clears the clock enable bit of the LAN1 domain. This domain contains all parts related to the LAN1 interface. */
++#define SYS_GPE_CLKCLR_LAN1 0x00000002
++/* No-Operation
++#define SYS_GPE_CLKCLR_LAN1_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_CLKCLR_LAN1_CLR 0x00000002
++/** Clear Clock Enable LAN0
++    Clears the clock enable bit of the LAN0 domain. This domain contains all parts related to the LAN0 interface. */
++#define SYS_GPE_CLKCLR_LAN0 0x00000001
++/* No-Operation
++#define SYS_GPE_CLKCLR_LAN0_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_CLKCLR_LAN0_CLR 0x00000001
++
++/* Fields of "Activation Status Register" */
++/** COP7 Status
++    Shows the activation status of the COP7 domain. This domain contains the Coprocessor 7 of the SCE. */
++#define SYS_GPE_ACTS_COP7 0x80000000
++/* The block is inactive.
++#define SYS_GPE_ACTS_COP7_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_GPE_ACTS_COP7_ACT 0x80000000
++/** COP6 Status
++    Shows the activation status of the COP6 domain. This domain contains the Coprocessor 6 of the SCE. */
++#define SYS_GPE_ACTS_COP6 0x40000000
++/* The block is inactive.
++#define SYS_GPE_ACTS_COP6_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_GPE_ACTS_COP6_ACT 0x40000000
++/** COP5 Status
++    Shows the activation status of the COP5 domain. This domain contains the Coprocessor 5 of the SCE. */
++#define SYS_GPE_ACTS_COP5 0x20000000
++/* The block is inactive.
++#define SYS_GPE_ACTS_COP5_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_GPE_ACTS_COP5_ACT 0x20000000
++/** COP4 Status
++    Shows the activation status of the COP4 domain. This domain contains the Coprocessor 4 of the SCE. */
++#define SYS_GPE_ACTS_COP4 0x10000000
++/* The block is inactive.
++#define SYS_GPE_ACTS_COP4_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_GPE_ACTS_COP4_ACT 0x10000000
++/** COP3 Status
++    Shows the activation status of the COP3 domain. This domain contains the Coprocessor 3 of the SCE. */
++#define SYS_GPE_ACTS_COP3 0x08000000
++/* The block is inactive.
++#define SYS_GPE_ACTS_COP3_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_GPE_ACTS_COP3_ACT 0x08000000
++/** COP2 Status
++    Shows the activation status of the COP2 domain. This domain contains the Coprocessor 2 of the SCE. */
++#define SYS_GPE_ACTS_COP2 0x04000000
++/* The block is inactive.
++#define SYS_GPE_ACTS_COP2_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_GPE_ACTS_COP2_ACT 0x04000000
++/** COP1 Status
++    Shows the activation status of the COP1 domain. This domain contains the Coprocessor 1 of the SCE. */
++#define SYS_GPE_ACTS_COP1 0x02000000
++/* The block is inactive.
++#define SYS_GPE_ACTS_COP1_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_GPE_ACTS_COP1_ACT 0x02000000
++/** COP0 Status
++    Shows the activation status of the COP0 domain. This domain contains the Coprocessor 0 of the SCE. */
++#define SYS_GPE_ACTS_COP0 0x01000000
++/* The block is inactive.
++#define SYS_GPE_ACTS_COP0_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_GPE_ACTS_COP0_ACT 0x01000000
++/** PE5 Status
++    Shows the activation status of the PE5 domain. This domain contains the Processing Element 5 of the SCE. */
++#define SYS_GPE_ACTS_PE5 0x00200000
++/* The block is inactive.
++#define SYS_GPE_ACTS_PE5_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_GPE_ACTS_PE5_ACT 0x00200000
++/** PE4 Status
++    Shows the activation status of the PE4 domain. This domain contains the Processing Element 4 of the SCE. */
++#define SYS_GPE_ACTS_PE4 0x00100000
++/* The block is inactive.
++#define SYS_GPE_ACTS_PE4_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_GPE_ACTS_PE4_ACT 0x00100000
++/** PE3 Status
++    Shows the activation status of the PE3 domain. This domain contains the Processing Element 3 of the SCE. */
++#define SYS_GPE_ACTS_PE3 0x00080000
++/* The block is inactive.
++#define SYS_GPE_ACTS_PE3_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_GPE_ACTS_PE3_ACT 0x00080000
++/** PE2 Status
++    Shows the activation status of the PE2 domain. This domain contains the Processing Element 2 of the SCE. */
++#define SYS_GPE_ACTS_PE2 0x00040000
++/* The block is inactive.
++#define SYS_GPE_ACTS_PE2_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_GPE_ACTS_PE2_ACT 0x00040000
++/** PE1 Status
++    Shows the activation status of the PE1 domain. This domain contains the Processing Element 1 of the SCE. */
++#define SYS_GPE_ACTS_PE1 0x00020000
++/* The block is inactive.
++#define SYS_GPE_ACTS_PE1_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_GPE_ACTS_PE1_ACT 0x00020000
++/** PE0 Status
++    Shows the activation status of the PE0 domain. This domain contains the Processing Element 0 of the SCE. */
++#define SYS_GPE_ACTS_PE0 0x00010000
++/* The block is inactive.
++#define SYS_GPE_ACTS_PE0_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_GPE_ACTS_PE0_ACT 0x00010000
++/** ARB Status
++    Shows the activation status of the ARB domain. This domain contains the Arbiter. */
++#define SYS_GPE_ACTS_ARB 0x00002000
++/* The block is inactive.
++#define SYS_GPE_ACTS_ARB_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_GPE_ACTS_ARB_ACT 0x00002000
++/** FSQM Status
++    Shows the activation status of the FSQM domain. This domain contains the FSQM. */
++#define SYS_GPE_ACTS_FSQM 0x00001000
++/* The block is inactive.
++#define SYS_GPE_ACTS_FSQM_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_GPE_ACTS_FSQM_ACT 0x00001000
++/** TMU Status
++    Shows the activation status of the TMU domain. This domain contains the TMU. */
++#define SYS_GPE_ACTS_TMU 0x00000800
++/* The block is inactive.
++#define SYS_GPE_ACTS_TMU_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_GPE_ACTS_TMU_ACT 0x00000800
++/** MRG Status
++    Shows the activation status of the MRG domain. This domain contains the Merger. */
++#define SYS_GPE_ACTS_MRG 0x00000400
++/* The block is inactive.
++#define SYS_GPE_ACTS_MRG_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_GPE_ACTS_MRG_ACT 0x00000400
++/** DISP Status
++    Shows the activation status of the DISP domain. This domain contains the Dispatcher. */
++#define SYS_GPE_ACTS_DISP 0x00000200
++/* The block is inactive.
++#define SYS_GPE_ACTS_DISP_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_GPE_ACTS_DISP_ACT 0x00000200
++/** IQM Status
++    Shows the activation status of the IQM domain. This domain contains the IQM. */
++#define SYS_GPE_ACTS_IQM 0x00000100
++/* The block is inactive.
++#define SYS_GPE_ACTS_IQM_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_GPE_ACTS_IQM_ACT 0x00000100
++/** CPUE Status
++    Shows the activation status of the CPUE domain. This domain contains all parts related to the CPU EGRESS interface. */
++#define SYS_GPE_ACTS_CPUE 0x00000080
++/* The block is inactive.
++#define SYS_GPE_ACTS_CPUE_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_GPE_ACTS_CPUE_ACT 0x00000080
++/** CPUI Status
++    Shows the activation status of the CPUI domain. This domain contains all parts related to the CPU INGRESS interface. */
++#define SYS_GPE_ACTS_CPUI 0x00000040
++/* The block is inactive.
++#define SYS_GPE_ACTS_CPUI_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_GPE_ACTS_CPUI_ACT 0x00000040
++/** GPONE Status
++    Shows the activation status of the GPONE domain. This domain contains all parts related to the GPON (GTC) EGRESS interface. */
++#define SYS_GPE_ACTS_GPONE 0x00000020
++/* The block is inactive.
++#define SYS_GPE_ACTS_GPONE_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_GPE_ACTS_GPONE_ACT 0x00000020
++/** GPONI Status
++    Shows the activation status of the GPONI domain. This domain contains all parts related to the GPON (GTC) INGRESS interface. */
++#define SYS_GPE_ACTS_GPONI 0x00000010
++/* The block is inactive.
++#define SYS_GPE_ACTS_GPONI_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_GPE_ACTS_GPONI_ACT 0x00000010
++/** LAN3 Status
++    Shows the activation status of the LAN3 domain. This domain contains all parts related to the LAN3 interface. */
++#define SYS_GPE_ACTS_LAN3 0x00000008
++/* The block is inactive.
++#define SYS_GPE_ACTS_LAN3_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_GPE_ACTS_LAN3_ACT 0x00000008
++/** LAN2 Status
++    Shows the activation status of the LAN2 domain. This domain contains all parts related to the LAN2 interface. */
++#define SYS_GPE_ACTS_LAN2 0x00000004
++/* The block is inactive.
++#define SYS_GPE_ACTS_LAN2_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_GPE_ACTS_LAN2_ACT 0x00000004
++/** LAN1 Status
++    Shows the activation status of the LAN1 domain. This domain contains all parts related to the LAN1 interface. */
++#define SYS_GPE_ACTS_LAN1 0x00000002
++/* The block is inactive.
++#define SYS_GPE_ACTS_LAN1_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_GPE_ACTS_LAN1_ACT 0x00000002
++/** LAN0 Status
++    Shows the activation status of the LAN0 domain. This domain contains all parts related to the LAN0 interface. */
++#define SYS_GPE_ACTS_LAN0 0x00000001
++/* The block is inactive.
++#define SYS_GPE_ACTS_LAN0_INACT 0x00000000 */
++/** The block is active. */
++#define SYS_GPE_ACTS_LAN0_ACT 0x00000001
++
++/* Fields of "Activation Register" */
++/** Activate COP7
++    Sets the activation flag of the COP7 domain. This domain contains the Coprocessor 7 of the SCE. */
++#define SYS_GPE_ACT_COP7 0x80000000
++/* No-Operation
++#define SYS_GPE_ACT_COP7_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_ACT_COP7_SET 0x80000000
++/** Activate COP6
++    Sets the activation flag of the COP6 domain. This domain contains the Coprocessor 6 of the SCE. */
++#define SYS_GPE_ACT_COP6 0x40000000
++/* No-Operation
++#define SYS_GPE_ACT_COP6_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_ACT_COP6_SET 0x40000000
++/** Activate COP5
++    Sets the activation flag of the COP5 domain. This domain contains the Coprocessor 5 of the SCE. */
++#define SYS_GPE_ACT_COP5 0x20000000
++/* No-Operation
++#define SYS_GPE_ACT_COP5_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_ACT_COP5_SET 0x20000000
++/** Activate COP4
++    Sets the activation flag of the COP4 domain. This domain contains the Coprocessor 4 of the SCE. */
++#define SYS_GPE_ACT_COP4 0x10000000
++/* No-Operation
++#define SYS_GPE_ACT_COP4_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_ACT_COP4_SET 0x10000000
++/** Activate COP3
++    Sets the activation flag of the COP3 domain. This domain contains the Coprocessor 3 of the SCE. */
++#define SYS_GPE_ACT_COP3 0x08000000
++/* No-Operation
++#define SYS_GPE_ACT_COP3_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_ACT_COP3_SET 0x08000000
++/** Activate COP2
++    Sets the activation flag of the COP2 domain. This domain contains the Coprocessor 2 of the SCE. */
++#define SYS_GPE_ACT_COP2 0x04000000
++/* No-Operation
++#define SYS_GPE_ACT_COP2_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_ACT_COP2_SET 0x04000000
++/** Activate COP1
++    Sets the activation flag of the COP1 domain. This domain contains the Coprocessor 1 of the SCE. */
++#define SYS_GPE_ACT_COP1 0x02000000
++/* No-Operation
++#define SYS_GPE_ACT_COP1_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_ACT_COP1_SET 0x02000000
++/** Activate COP0
++    Sets the activation flag of the COP0 domain. This domain contains the Coprocessor 0 of the SCE. */
++#define SYS_GPE_ACT_COP0 0x01000000
++/* No-Operation
++#define SYS_GPE_ACT_COP0_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_ACT_COP0_SET 0x01000000
++/** Activate PE5
++    Sets the activation flag of the PE5 domain. This domain contains the Processing Element 5 of the SCE. */
++#define SYS_GPE_ACT_PE5 0x00200000
++/* No-Operation
++#define SYS_GPE_ACT_PE5_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_ACT_PE5_SET 0x00200000
++/** Activate PE4
++    Sets the activation flag of the PE4 domain. This domain contains the Processing Element 4 of the SCE. */
++#define SYS_GPE_ACT_PE4 0x00100000
++/* No-Operation
++#define SYS_GPE_ACT_PE4_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_ACT_PE4_SET 0x00100000
++/** Activate PE3
++    Sets the activation flag of the PE3 domain. This domain contains the Processing Element 3 of the SCE. */
++#define SYS_GPE_ACT_PE3 0x00080000
++/* No-Operation
++#define SYS_GPE_ACT_PE3_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_ACT_PE3_SET 0x00080000
++/** Activate PE2
++    Sets the activation flag of the PE2 domain. This domain contains the Processing Element 2 of the SCE. */
++#define SYS_GPE_ACT_PE2 0x00040000
++/* No-Operation
++#define SYS_GPE_ACT_PE2_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_ACT_PE2_SET 0x00040000
++/** Activate PE1
++    Sets the activation flag of the PE1 domain. This domain contains the Processing Element 1 of the SCE. */
++#define SYS_GPE_ACT_PE1 0x00020000
++/* No-Operation
++#define SYS_GPE_ACT_PE1_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_ACT_PE1_SET 0x00020000
++/** Activate PE0
++    Sets the activation flag of the PE0 domain. This domain contains the Processing Element 0 of the SCE. */
++#define SYS_GPE_ACT_PE0 0x00010000
++/* No-Operation
++#define SYS_GPE_ACT_PE0_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_ACT_PE0_SET 0x00010000
++/** Activate ARB
++    Sets the activation flag of the ARB domain. This domain contains the Arbiter. */
++#define SYS_GPE_ACT_ARB 0x00002000
++/* No-Operation
++#define SYS_GPE_ACT_ARB_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_ACT_ARB_SET 0x00002000
++/** Activate FSQM
++    Sets the activation flag of the FSQM domain. This domain contains the FSQM. */
++#define SYS_GPE_ACT_FSQM 0x00001000
++/* No-Operation
++#define SYS_GPE_ACT_FSQM_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_ACT_FSQM_SET 0x00001000
++/** Activate TMU
++    Sets the activation flag of the TMU domain. This domain contains the TMU. */
++#define SYS_GPE_ACT_TMU 0x00000800
++/* No-Operation
++#define SYS_GPE_ACT_TMU_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_ACT_TMU_SET 0x00000800
++/** Activate MRG
++    Sets the activation flag of the MRG domain. This domain contains the Merger. */
++#define SYS_GPE_ACT_MRG 0x00000400
++/* No-Operation
++#define SYS_GPE_ACT_MRG_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_ACT_MRG_SET 0x00000400
++/** Activate DISP
++    Sets the activation flag of the DISP domain. This domain contains the Dispatcher. */
++#define SYS_GPE_ACT_DISP 0x00000200
++/* No-Operation
++#define SYS_GPE_ACT_DISP_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_ACT_DISP_SET 0x00000200
++/** Activate IQM
++    Sets the activation flag of the IQM domain. This domain contains the IQM. */
++#define SYS_GPE_ACT_IQM 0x00000100
++/* No-Operation
++#define SYS_GPE_ACT_IQM_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_ACT_IQM_SET 0x00000100
++/** Activate CPUE
++    Sets the activation flag of the CPUE domain. This domain contains all parts related to the CPU EGRESS interface. */
++#define SYS_GPE_ACT_CPUE 0x00000080
++/* No-Operation
++#define SYS_GPE_ACT_CPUE_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_ACT_CPUE_SET 0x00000080
++/** Activate CPUI
++    Sets the activation flag of the CPUI domain. This domain contains all parts related to the CPU INGRESS interface. */
++#define SYS_GPE_ACT_CPUI 0x00000040
++/* No-Operation
++#define SYS_GPE_ACT_CPUI_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_ACT_CPUI_SET 0x00000040
++/** Activate GPONE
++    Sets the activation flag of the GPONE domain. This domain contains all parts related to the GPON (GTC) EGRESS interface. */
++#define SYS_GPE_ACT_GPONE 0x00000020
++/* No-Operation
++#define SYS_GPE_ACT_GPONE_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_ACT_GPONE_SET 0x00000020
++/** Activate GPONI
++    Sets the activation flag of the GPONI domain. This domain contains all parts related to the GPON (GTC) INGRESS interface. */
++#define SYS_GPE_ACT_GPONI 0x00000010
++/* No-Operation
++#define SYS_GPE_ACT_GPONI_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_ACT_GPONI_SET 0x00000010
++/** Activate LAN3
++    Sets the activation flag of the LAN3 domain. This domain contains all parts related to the LAN3 interface. */
++#define SYS_GPE_ACT_LAN3 0x00000008
++/* No-Operation
++#define SYS_GPE_ACT_LAN3_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_ACT_LAN3_SET 0x00000008
++/** Activate LAN2
++    Sets the activation flag of the LAN2 domain. This domain contains all parts related to the LAN2 interface. */
++#define SYS_GPE_ACT_LAN2 0x00000004
++/* No-Operation
++#define SYS_GPE_ACT_LAN2_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_ACT_LAN2_SET 0x00000004
++/** Activate LAN1
++    Sets the activation flag of the LAN1 domain. This domain contains all parts related to the LAN1 interface. */
++#define SYS_GPE_ACT_LAN1 0x00000002
++/* No-Operation
++#define SYS_GPE_ACT_LAN1_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_ACT_LAN1_SET 0x00000002
++/** Activate LAN0
++    Sets the activation flag of the LAN0 domain. This domain contains all parts related to the LAN0 interface. */
++#define SYS_GPE_ACT_LAN0 0x00000001
++/* No-Operation
++#define SYS_GPE_ACT_LAN0_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_ACT_LAN0_SET 0x00000001
++
++/* Fields of "Deactivation Register" */
++/** Deactivate COP7
++    Clears the activation flag of the COP7 domain. This domain contains the Coprocessor 7 of the SCE. */
++#define SYS_GPE_DEACT_COP7 0x80000000
++/* No-Operation
++#define SYS_GPE_DEACT_COP7_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_DEACT_COP7_CLR 0x80000000
++/** Deactivate COP6
++    Clears the activation flag of the COP6 domain. This domain contains the Coprocessor 6 of the SCE. */
++#define SYS_GPE_DEACT_COP6 0x40000000
++/* No-Operation
++#define SYS_GPE_DEACT_COP6_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_DEACT_COP6_CLR 0x40000000
++/** Deactivate COP5
++    Clears the activation flag of the COP5 domain. This domain contains the Coprocessor 5 of the SCE. */
++#define SYS_GPE_DEACT_COP5 0x20000000
++/* No-Operation
++#define SYS_GPE_DEACT_COP5_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_DEACT_COP5_CLR 0x20000000
++/** Deactivate COP4
++    Clears the activation flag of the COP4 domain. This domain contains the Coprocessor 4 of the SCE. */
++#define SYS_GPE_DEACT_COP4 0x10000000
++/* No-Operation
++#define SYS_GPE_DEACT_COP4_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_DEACT_COP4_CLR 0x10000000
++/** Deactivate COP3
++    Clears the activation flag of the COP3 domain. This domain contains the Coprocessor 3 of the SCE. */
++#define SYS_GPE_DEACT_COP3 0x08000000
++/* No-Operation
++#define SYS_GPE_DEACT_COP3_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_DEACT_COP3_CLR 0x08000000
++/** Deactivate COP2
++    Clears the activation flag of the COP2 domain. This domain contains the Coprocessor 2 of the SCE. */
++#define SYS_GPE_DEACT_COP2 0x04000000
++/* No-Operation
++#define SYS_GPE_DEACT_COP2_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_DEACT_COP2_CLR 0x04000000
++/** Deactivate COP1
++    Clears the activation flag of the COP1 domain. This domain contains the Coprocessor 1 of the SCE. */
++#define SYS_GPE_DEACT_COP1 0x02000000
++/* No-Operation
++#define SYS_GPE_DEACT_COP1_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_DEACT_COP1_CLR 0x02000000
++/** Deactivate COP0
++    Clears the activation flag of the COP0 domain. This domain contains the Coprocessor 0 of the SCE. */
++#define SYS_GPE_DEACT_COP0 0x01000000
++/* No-Operation
++#define SYS_GPE_DEACT_COP0_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_DEACT_COP0_CLR 0x01000000
++/** Deactivate PE5
++    Clears the activation flag of the PE5 domain. This domain contains the Processing Element 5 of the SCE. */
++#define SYS_GPE_DEACT_PE5 0x00200000
++/* No-Operation
++#define SYS_GPE_DEACT_PE5_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_DEACT_PE5_CLR 0x00200000
++/** Deactivate PE4
++    Clears the activation flag of the PE4 domain. This domain contains the Processing Element 4 of the SCE. */
++#define SYS_GPE_DEACT_PE4 0x00100000
++/* No-Operation
++#define SYS_GPE_DEACT_PE4_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_DEACT_PE4_CLR 0x00100000
++/** Deactivate PE3
++    Clears the activation flag of the PE3 domain. This domain contains the Processing Element 3 of the SCE. */
++#define SYS_GPE_DEACT_PE3 0x00080000
++/* No-Operation
++#define SYS_GPE_DEACT_PE3_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_DEACT_PE3_CLR 0x00080000
++/** Deactivate PE2
++    Clears the activation flag of the PE2 domain. This domain contains the Processing Element 2 of the SCE. */
++#define SYS_GPE_DEACT_PE2 0x00040000
++/* No-Operation
++#define SYS_GPE_DEACT_PE2_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_DEACT_PE2_CLR 0x00040000
++/** Deactivate PE1
++    Clears the activation flag of the PE1 domain. This domain contains the Processing Element 1 of the SCE. */
++#define SYS_GPE_DEACT_PE1 0x00020000
++/* No-Operation
++#define SYS_GPE_DEACT_PE1_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_DEACT_PE1_CLR 0x00020000
++/** Deactivate PE0
++    Clears the activation flag of the PE0 domain. This domain contains the Processing Element 0 of the SCE. */
++#define SYS_GPE_DEACT_PE0 0x00010000
++/* No-Operation
++#define SYS_GPE_DEACT_PE0_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_DEACT_PE0_CLR 0x00010000
++/** Deactivate ARB
++    Clears the activation flag of the ARB domain. This domain contains the Arbiter. */
++#define SYS_GPE_DEACT_ARB 0x00002000
++/* No-Operation
++#define SYS_GPE_DEACT_ARB_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_DEACT_ARB_CLR 0x00002000
++/** Deactivate FSQM
++    Clears the activation flag of the FSQM domain. This domain contains the FSQM. */
++#define SYS_GPE_DEACT_FSQM 0x00001000
++/* No-Operation
++#define SYS_GPE_DEACT_FSQM_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_DEACT_FSQM_CLR 0x00001000
++/** Deactivate TMU
++    Clears the activation flag of the TMU domain. This domain contains the TMU. */
++#define SYS_GPE_DEACT_TMU 0x00000800
++/* No-Operation
++#define SYS_GPE_DEACT_TMU_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_DEACT_TMU_CLR 0x00000800
++/** Deactivate MRG
++    Clears the activation flag of the MRG domain. This domain contains the Merger. */
++#define SYS_GPE_DEACT_MRG 0x00000400
++/* No-Operation
++#define SYS_GPE_DEACT_MRG_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_DEACT_MRG_CLR 0x00000400
++/** Deactivate DISP
++    Clears the activation flag of the DISP domain. This domain contains the Dispatcher. */
++#define SYS_GPE_DEACT_DISP 0x00000200
++/* No-Operation
++#define SYS_GPE_DEACT_DISP_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_DEACT_DISP_CLR 0x00000200
++/** Deactivate IQM
++    Clears the activation flag of the IQM domain. This domain contains the IQM. */
++#define SYS_GPE_DEACT_IQM 0x00000100
++/* No-Operation
++#define SYS_GPE_DEACT_IQM_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_DEACT_IQM_CLR 0x00000100
++/** Deactivate CPUE
++    Clears the activation flag of the CPUE domain. This domain contains all parts related to the CPU EGRESS interface. */
++#define SYS_GPE_DEACT_CPUE 0x00000080
++/* No-Operation
++#define SYS_GPE_DEACT_CPUE_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_DEACT_CPUE_CLR 0x00000080
++/** Deactivate CPUI
++    Clears the activation flag of the CPUI domain. This domain contains all parts related to the CPU INGRESS interface. */
++#define SYS_GPE_DEACT_CPUI 0x00000040
++/* No-Operation
++#define SYS_GPE_DEACT_CPUI_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_DEACT_CPUI_CLR 0x00000040
++/** Deactivate GPONE
++    Clears the activation flag of the GPONE domain. This domain contains all parts related to the GPON (GTC) EGRESS interface. */
++#define SYS_GPE_DEACT_GPONE 0x00000020
++/* No-Operation
++#define SYS_GPE_DEACT_GPONE_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_DEACT_GPONE_CLR 0x00000020
++/** Deactivate GPONI
++    Clears the activation flag of the GPONI domain. This domain contains all parts related to the GPON (GTC) INGRESS interface. */
++#define SYS_GPE_DEACT_GPONI 0x00000010
++/* No-Operation
++#define SYS_GPE_DEACT_GPONI_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_DEACT_GPONI_CLR 0x00000010
++/** Deactivate LAN3
++    Clears the activation flag of the LAN3 domain. This domain contains all parts related to the LAN3 interface. */
++#define SYS_GPE_DEACT_LAN3 0x00000008
++/* No-Operation
++#define SYS_GPE_DEACT_LAN3_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_DEACT_LAN3_CLR 0x00000008
++/** Deactivate LAN2
++    Clears the activation flag of the LAN2 domain. This domain contains all parts related to the LAN2 interface. */
++#define SYS_GPE_DEACT_LAN2 0x00000004
++/* No-Operation
++#define SYS_GPE_DEACT_LAN2_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_DEACT_LAN2_CLR 0x00000004
++/** Deactivate LAN1
++    Clears the activation flag of the LAN1 domain. This domain contains all parts related to the LAN1 interface. */
++#define SYS_GPE_DEACT_LAN1 0x00000002
++/* No-Operation
++#define SYS_GPE_DEACT_LAN1_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_DEACT_LAN1_CLR 0x00000002
++/** Deactivate LAN0
++    Clears the activation flag of the LAN0 domain. This domain contains all parts related to the LAN0 interface. */
++#define SYS_GPE_DEACT_LAN0 0x00000001
++/* No-Operation
++#define SYS_GPE_DEACT_LAN0_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_DEACT_LAN0_CLR 0x00000001
++
++/* Fields of "Reboot Trigger Register" */
++/** Reboot COP7
++    Triggers a reboot of the COP7 domain. This domain contains the Coprocessor 7 of the SCE. */
++#define SYS_GPE_RBT_COP7 0x80000000
++/* No-Operation
++#define SYS_GPE_RBT_COP7_NOP 0x00000000 */
++/** Trigger */
++#define SYS_GPE_RBT_COP7_TRIG 0x80000000
++/** Reboot COP6
++    Triggers a reboot of the COP6 domain. This domain contains the Coprocessor 6 of the SCE. */
++#define SYS_GPE_RBT_COP6 0x40000000
++/* No-Operation
++#define SYS_GPE_RBT_COP6_NOP 0x00000000 */
++/** Trigger */
++#define SYS_GPE_RBT_COP6_TRIG 0x40000000
++/** Reboot COP5
++    Triggers a reboot of the COP5 domain. This domain contains the Coprocessor 5 of the SCE. */
++#define SYS_GPE_RBT_COP5 0x20000000
++/* No-Operation
++#define SYS_GPE_RBT_COP5_NOP 0x00000000 */
++/** Trigger */
++#define SYS_GPE_RBT_COP5_TRIG 0x20000000
++/** Reboot COP4
++    Triggers a reboot of the COP4 domain. This domain contains the Coprocessor 4 of the SCE. */
++#define SYS_GPE_RBT_COP4 0x10000000
++/* No-Operation
++#define SYS_GPE_RBT_COP4_NOP 0x00000000 */
++/** Trigger */
++#define SYS_GPE_RBT_COP4_TRIG 0x10000000
++/** Reboot COP3
++    Triggers a reboot of the COP3 domain. This domain contains the Coprocessor 3 of the SCE. */
++#define SYS_GPE_RBT_COP3 0x08000000
++/* No-Operation
++#define SYS_GPE_RBT_COP3_NOP 0x00000000 */
++/** Trigger */
++#define SYS_GPE_RBT_COP3_TRIG 0x08000000
++/** Reboot COP2
++    Triggers a reboot of the COP2 domain. This domain contains the Coprocessor 2 of the SCE. */
++#define SYS_GPE_RBT_COP2 0x04000000
++/* No-Operation
++#define SYS_GPE_RBT_COP2_NOP 0x00000000 */
++/** Trigger */
++#define SYS_GPE_RBT_COP2_TRIG 0x04000000
++/** Reboot COP1
++    Triggers a reboot of the COP1 domain. This domain contains the Coprocessor 1 of the SCE. */
++#define SYS_GPE_RBT_COP1 0x02000000
++/* No-Operation
++#define SYS_GPE_RBT_COP1_NOP 0x00000000 */
++/** Trigger */
++#define SYS_GPE_RBT_COP1_TRIG 0x02000000
++/** Reboot COP0
++    Triggers a reboot of the COP0 domain. This domain contains the Coprocessor 0 of the SCE. */
++#define SYS_GPE_RBT_COP0 0x01000000
++/* No-Operation
++#define SYS_GPE_RBT_COP0_NOP 0x00000000 */
++/** Trigger */
++#define SYS_GPE_RBT_COP0_TRIG 0x01000000
++/** Reboot PE5
++    Triggers a reboot of the PE5 domain. This domain contains the Processing Element 5 of the SCE. */
++#define SYS_GPE_RBT_PE5 0x00200000
++/* No-Operation
++#define SYS_GPE_RBT_PE5_NOP 0x00000000 */
++/** Trigger */
++#define SYS_GPE_RBT_PE5_TRIG 0x00200000
++/** Reboot PE4
++    Triggers a reboot of the PE4 domain. This domain contains the Processing Element 4 of the SCE. */
++#define SYS_GPE_RBT_PE4 0x00100000
++/* No-Operation
++#define SYS_GPE_RBT_PE4_NOP 0x00000000 */
++/** Trigger */
++#define SYS_GPE_RBT_PE4_TRIG 0x00100000
++/** Reboot PE3
++    Triggers a reboot of the PE3 domain. This domain contains the Processing Element 3 of the SCE. */
++#define SYS_GPE_RBT_PE3 0x00080000
++/* No-Operation
++#define SYS_GPE_RBT_PE3_NOP 0x00000000 */
++/** Trigger */
++#define SYS_GPE_RBT_PE3_TRIG 0x00080000
++/** Reboot PE2
++    Triggers a reboot of the PE2 domain. This domain contains the Processing Element 2 of the SCE. */
++#define SYS_GPE_RBT_PE2 0x00040000
++/* No-Operation
++#define SYS_GPE_RBT_PE2_NOP 0x00000000 */
++/** Trigger */
++#define SYS_GPE_RBT_PE2_TRIG 0x00040000
++/** Reboot PE1
++    Triggers a reboot of the PE1 domain. This domain contains the Processing Element 1 of the SCE. */
++#define SYS_GPE_RBT_PE1 0x00020000
++/* No-Operation
++#define SYS_GPE_RBT_PE1_NOP 0x00000000 */
++/** Trigger */
++#define SYS_GPE_RBT_PE1_TRIG 0x00020000
++/** Reboot PE0
++    Triggers a reboot of the PE0 domain. This domain contains the Processing Element 0 of the SCE. */
++#define SYS_GPE_RBT_PE0 0x00010000
++/* No-Operation
++#define SYS_GPE_RBT_PE0_NOP 0x00000000 */
++/** Trigger */
++#define SYS_GPE_RBT_PE0_TRIG 0x00010000
++/** Reboot ARB
++    Triggers a reboot of the ARB domain. This domain contains the Arbiter. */
++#define SYS_GPE_RBT_ARB 0x00002000
++/* No-Operation
++#define SYS_GPE_RBT_ARB_NOP 0x00000000 */
++/** Trigger */
++#define SYS_GPE_RBT_ARB_TRIG 0x00002000
++/** Reboot FSQM
++    Triggers a reboot of the FSQM domain. This domain contains the FSQM. */
++#define SYS_GPE_RBT_FSQM 0x00001000
++/* No-Operation
++#define SYS_GPE_RBT_FSQM_NOP 0x00000000 */
++/** Trigger */
++#define SYS_GPE_RBT_FSQM_TRIG 0x00001000
++/** Reboot TMU
++    Triggers a reboot of the TMU domain. This domain contains the TMU. */
++#define SYS_GPE_RBT_TMU 0x00000800
++/* No-Operation
++#define SYS_GPE_RBT_TMU_NOP 0x00000000 */
++/** Trigger */
++#define SYS_GPE_RBT_TMU_TRIG 0x00000800
++/** Reboot MRG
++    Triggers a reboot of the MRG domain. This domain contains the Merger. */
++#define SYS_GPE_RBT_MRG 0x00000400
++/* No-Operation
++#define SYS_GPE_RBT_MRG_NOP 0x00000000 */
++/** Trigger */
++#define SYS_GPE_RBT_MRG_TRIG 0x00000400
++/** Reboot DISP
++    Triggers a reboot of the DISP domain. This domain contains the Dispatcher. */
++#define SYS_GPE_RBT_DISP 0x00000200
++/* No-Operation
++#define SYS_GPE_RBT_DISP_NOP 0x00000000 */
++/** Trigger */
++#define SYS_GPE_RBT_DISP_TRIG 0x00000200
++/** Reboot IQM
++    Triggers a reboot of the IQM domain. This domain contains the IQM. */
++#define SYS_GPE_RBT_IQM 0x00000100
++/* No-Operation
++#define SYS_GPE_RBT_IQM_NOP 0x00000000 */
++/** Trigger */
++#define SYS_GPE_RBT_IQM_TRIG 0x00000100
++/** Reboot CPUE
++    Triggers a reboot of the CPUE domain. This domain contains all parts related to the CPU EGRESS interface. */
++#define SYS_GPE_RBT_CPUE 0x00000080
++/* No-Operation
++#define SYS_GPE_RBT_CPUE_NOP 0x00000000 */
++/** Trigger */
++#define SYS_GPE_RBT_CPUE_TRIG 0x00000080
++/** Reboot CPUI
++    Triggers a reboot of the CPUI domain. This domain contains all parts related to the CPU INGRESS interface. */
++#define SYS_GPE_RBT_CPUI 0x00000040
++/* No-Operation
++#define SYS_GPE_RBT_CPUI_NOP 0x00000000 */
++/** Trigger */
++#define SYS_GPE_RBT_CPUI_TRIG 0x00000040
++/** Reboot GPONE
++    Triggers a reboot of the GPONE domain. This domain contains all parts related to the GPON (GTC) EGRESS interface. */
++#define SYS_GPE_RBT_GPONE 0x00000020
++/* No-Operation
++#define SYS_GPE_RBT_GPONE_NOP 0x00000000 */
++/** Trigger */
++#define SYS_GPE_RBT_GPONE_TRIG 0x00000020
++/** Reboot GPONI
++    Triggers a reboot of the GPONI domain. This domain contains all parts related to the GPON (GTC) INGRESS interface. */
++#define SYS_GPE_RBT_GPONI 0x00000010
++/* No-Operation
++#define SYS_GPE_RBT_GPONI_NOP 0x00000000 */
++/** Trigger */
++#define SYS_GPE_RBT_GPONI_TRIG 0x00000010
++/** Reboot LAN3
++    Triggers a reboot of the LAN3 domain. This domain contains all parts related to the LAN3 interface. */
++#define SYS_GPE_RBT_LAN3 0x00000008
++/* No-Operation
++#define SYS_GPE_RBT_LAN3_NOP 0x00000000 */
++/** Trigger */
++#define SYS_GPE_RBT_LAN3_TRIG 0x00000008
++/** Reboot LAN2
++    Triggers a reboot of the LAN2 domain. This domain contains all parts related to the LAN2 interface. */
++#define SYS_GPE_RBT_LAN2 0x00000004
++/* No-Operation
++#define SYS_GPE_RBT_LAN2_NOP 0x00000000 */
++/** Trigger */
++#define SYS_GPE_RBT_LAN2_TRIG 0x00000004
++/** Reboot LAN1
++    Triggers a reboot of the LAN1 domain. This domain contains all parts related to the LAN1 interface. */
++#define SYS_GPE_RBT_LAN1 0x00000002
++/* No-Operation
++#define SYS_GPE_RBT_LAN1_NOP 0x00000000 */
++/** Trigger */
++#define SYS_GPE_RBT_LAN1_TRIG 0x00000002
++/** Reboot LAN0
++    Triggers a reboot of the LAN0 domain. This domain contains all parts related to the LAN0 interface. */
++#define SYS_GPE_RBT_LAN0 0x00000001
++/* No-Operation
++#define SYS_GPE_RBT_LAN0_NOP 0x00000000 */
++/** Trigger */
++#define SYS_GPE_RBT_LAN0_TRIG 0x00000001
++
++/* Fields of "Power Down Configuration Register" */
++/** Enable Power Down COP7
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_GPE_PDCFG_COP7 0x80000000
++/* Disable
++#define SYS_GPE_PDCFG_COP7_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_PDCFG_COP7_EN 0x80000000
++/** Enable Power Down COP6
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_GPE_PDCFG_COP6 0x40000000
++/* Disable
++#define SYS_GPE_PDCFG_COP6_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_PDCFG_COP6_EN 0x40000000
++/** Enable Power Down COP5
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_GPE_PDCFG_COP5 0x20000000
++/* Disable
++#define SYS_GPE_PDCFG_COP5_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_PDCFG_COP5_EN 0x20000000
++/** Enable Power Down COP4
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_GPE_PDCFG_COP4 0x10000000
++/* Disable
++#define SYS_GPE_PDCFG_COP4_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_PDCFG_COP4_EN 0x10000000
++/** Enable Power Down COP3
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_GPE_PDCFG_COP3 0x08000000
++/* Disable
++#define SYS_GPE_PDCFG_COP3_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_PDCFG_COP3_EN 0x08000000
++/** Enable Power Down COP2
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_GPE_PDCFG_COP2 0x04000000
++/* Disable
++#define SYS_GPE_PDCFG_COP2_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_PDCFG_COP2_EN 0x04000000
++/** Enable Power Down COP1
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_GPE_PDCFG_COP1 0x02000000
++/* Disable
++#define SYS_GPE_PDCFG_COP1_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_PDCFG_COP1_EN 0x02000000
++/** Enable Power Down COP0
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_GPE_PDCFG_COP0 0x01000000
++/* Disable
++#define SYS_GPE_PDCFG_COP0_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_PDCFG_COP0_EN 0x01000000
++/** Enable Power Down PE5
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_GPE_PDCFG_PE5 0x00200000
++/* Disable
++#define SYS_GPE_PDCFG_PE5_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_PDCFG_PE5_EN 0x00200000
++/** Enable Power Down PE4
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_GPE_PDCFG_PE4 0x00100000
++/* Disable
++#define SYS_GPE_PDCFG_PE4_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_PDCFG_PE4_EN 0x00100000
++/** Enable Power Down PE3
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_GPE_PDCFG_PE3 0x00080000
++/* Disable
++#define SYS_GPE_PDCFG_PE3_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_PDCFG_PE3_EN 0x00080000
++/** Enable Power Down PE2
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_GPE_PDCFG_PE2 0x00040000
++/* Disable
++#define SYS_GPE_PDCFG_PE2_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_PDCFG_PE2_EN 0x00040000
++/** Enable Power Down PE1
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_GPE_PDCFG_PE1 0x00020000
++/* Disable
++#define SYS_GPE_PDCFG_PE1_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_PDCFG_PE1_EN 0x00020000
++/** Enable Power Down PE0
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_GPE_PDCFG_PE0 0x00010000
++/* Disable
++#define SYS_GPE_PDCFG_PE0_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_PDCFG_PE0_EN 0x00010000
++/** Enable Power Down ARB
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_GPE_PDCFG_ARB 0x00002000
++/* Disable
++#define SYS_GPE_PDCFG_ARB_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_PDCFG_ARB_EN 0x00002000
++/** Enable Power Down FSQM
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_GPE_PDCFG_FSQM 0x00001000
++/* Disable
++#define SYS_GPE_PDCFG_FSQM_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_PDCFG_FSQM_EN 0x00001000
++/** Enable Power Down TMU
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_GPE_PDCFG_TMU 0x00000800
++/* Disable
++#define SYS_GPE_PDCFG_TMU_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_PDCFG_TMU_EN 0x00000800
++/** Enable Power Down MRG
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_GPE_PDCFG_MRG 0x00000400
++/* Disable
++#define SYS_GPE_PDCFG_MRG_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_PDCFG_MRG_EN 0x00000400
++/** Enable Power Down DISP
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_GPE_PDCFG_DISP 0x00000200
++/* Disable
++#define SYS_GPE_PDCFG_DISP_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_PDCFG_DISP_EN 0x00000200
++/** Enable Power Down IQM
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_GPE_PDCFG_IQM 0x00000100
++/* Disable
++#define SYS_GPE_PDCFG_IQM_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_PDCFG_IQM_EN 0x00000100
++/** Enable Power Down CPUE
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_GPE_PDCFG_CPUE 0x00000080
++/* Disable
++#define SYS_GPE_PDCFG_CPUE_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_PDCFG_CPUE_EN 0x00000080
++/** Enable Power Down CPUI
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_GPE_PDCFG_CPUI 0x00000040
++/* Disable
++#define SYS_GPE_PDCFG_CPUI_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_PDCFG_CPUI_EN 0x00000040
++/** Enable Power Down GPONE
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_GPE_PDCFG_GPONE 0x00000020
++/* Disable
++#define SYS_GPE_PDCFG_GPONE_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_PDCFG_GPONE_EN 0x00000020
++/** Enable Power Down GPONI
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_GPE_PDCFG_GPONI 0x00000010
++/* Disable
++#define SYS_GPE_PDCFG_GPONI_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_PDCFG_GPONI_EN 0x00000010
++/** Enable Power Down LAN3
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_GPE_PDCFG_LAN3 0x00000008
++/* Disable
++#define SYS_GPE_PDCFG_LAN3_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_PDCFG_LAN3_EN 0x00000008
++/** Enable Power Down LAN2
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_GPE_PDCFG_LAN2 0x00000004
++/* Disable
++#define SYS_GPE_PDCFG_LAN2_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_PDCFG_LAN2_EN 0x00000004
++/** Enable Power Down LAN1
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_GPE_PDCFG_LAN1 0x00000002
++/* Disable
++#define SYS_GPE_PDCFG_LAN1_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_PDCFG_LAN1_EN 0x00000002
++/** Enable Power Down LAN0
++    Ignore this bit as power-gating is not supported for this chip. */
++#define SYS_GPE_PDCFG_LAN0 0x00000001
++/* Disable
++#define SYS_GPE_PDCFG_LAN0_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_PDCFG_LAN0_EN 0x00000001
++
++/* Fields of "Sleep Source Configuration Register" */
++/** Sleep/Wakeup Source CPU
++    Selects the CPU access signal as sleep/wakeup source. */
++#define SYS_GPE_SSCFG_CPU 0x00020000
++/* Not selected
++#define SYS_GPE_SSCFG_CPU_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SSCFG_CPU_SEL 0x00020000
++/** Sleep/Wakeup Source FSQM
++    Selects the FSQM signal as sleep/wakeup source. */
++#define SYS_GPE_SSCFG_FSQM 0x00008000
++/* Not selected
++#define SYS_GPE_SSCFG_FSQM_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SSCFG_FSQM_SEL 0x00008000
++/** Sleep/Wakeup Source GPONT
++    Selects the FIFO empty signal of the TCONT Request FIFO of port GPON as sleep/wakeup source. */
++#define SYS_GPE_SSCFG_GPONT 0x00002000
++/* Not selected
++#define SYS_GPE_SSCFG_GPONT_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SSCFG_GPONT_SEL 0x00002000
++/** Sleep/Wakeup Source GPONE
++    Selects the FIFO empty signal of the EGRESS FIFO of port GPON as sleep/wakeup source. */
++#define SYS_GPE_SSCFG_GPONE 0x00001000
++/* Not selected
++#define SYS_GPE_SSCFG_GPONE_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SSCFG_GPONE_SEL 0x00001000
++/** Sleep/Wakeup Source LAN3E
++    Selects the FIFO empty signal of the EGRESS FIFO of port LAN3 as sleep/wakeup source. */
++#define SYS_GPE_SSCFG_LAN3E 0x00000800
++/* Not selected
++#define SYS_GPE_SSCFG_LAN3E_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SSCFG_LAN3E_SEL 0x00000800
++/** Sleep/Wakeup Source LAN2E
++    Selects the FIFO empty signal of the EGRESS FIFO of port LAN2 as sleep/wakeup source. */
++#define SYS_GPE_SSCFG_LAN2E 0x00000400
++/* Not selected
++#define SYS_GPE_SSCFG_LAN2E_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SSCFG_LAN2E_SEL 0x00000400
++/** Sleep/Wakeup Source LAN1E
++    Selects the FIFO empty signal of the EGRESS FIFO of port LAN1 as sleep/wakeup source. */
++#define SYS_GPE_SSCFG_LAN1E 0x00000200
++/* Not selected
++#define SYS_GPE_SSCFG_LAN1E_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SSCFG_LAN1E_SEL 0x00000200
++/** Sleep/Wakeup Source LAN0E
++    Selects the FIFO empty signal of the EGRESS FIFO of port LAN0 as sleep/wakeup source. */
++#define SYS_GPE_SSCFG_LAN0E 0x00000100
++/* Not selected
++#define SYS_GPE_SSCFG_LAN0E_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SSCFG_LAN0E_SEL 0x00000100
++/** Sleep/Wakeup Source GPONI
++    Selects the FIFO empty signal of the INGRESS FIFO of port GPON as sleep/wakeup source. */
++#define SYS_GPE_SSCFG_GPONI 0x00000010
++/* Not selected
++#define SYS_GPE_SSCFG_GPONI_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SSCFG_GPONI_SEL 0x00000010
++/** Sleep/Wakeup Source LAN3I
++    Selects the FIFO empty signal of the INGRESS FIFO of port LAN3 as sleep/wakeup source. */
++#define SYS_GPE_SSCFG_LAN3I 0x00000008
++/* Not selected
++#define SYS_GPE_SSCFG_LAN3I_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SSCFG_LAN3I_SEL 0x00000008
++/** Sleep/Wakeup Source LAN2I
++    Selects the FIFO empty signal of the INGRESS FIFO of port LAN2 as sleep/wakeup source. */
++#define SYS_GPE_SSCFG_LAN2I 0x00000004
++/* Not selected
++#define SYS_GPE_SSCFG_LAN2I_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SSCFG_LAN2I_SEL 0x00000004
++/** Sleep/Wakeup Source LAN1I
++    Selects the FIFO empty signal of the INGRESS FIFO of port LAN1 as sleep/wakeup source. */
++#define SYS_GPE_SSCFG_LAN1I 0x00000002
++/* Not selected
++#define SYS_GPE_SSCFG_LAN1I_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SSCFG_LAN1I_SEL 0x00000002
++/** Sleep/Wakeup Source LAN0I
++    Selects the FIFO empty signal of the INGRESS FIFO of port LAN0 as sleep/wakeup source. */
++#define SYS_GPE_SSCFG_LAN0I 0x00000001
++/* Not selected
++#define SYS_GPE_SSCFG_LAN0I_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SSCFG_LAN0I_SEL 0x00000001
++
++/* Fields of "Sleep Source Timer Register" */
++/** Sleep Delay Value
++    A HW sleep request is delayed by this value multiplied by 3.2ns before it takes effect. A wakeup request is not delayed but takes effect immediately. Values lower than 256 are limited to 256. */
++#define SYS_GPE_SST_SDV_MASK 0x7FFFFFFF
++/** field offset */
++#define SYS_GPE_SST_SDV_OFFSET 0
++
++/* Fields of "Sleep Destination Status Register" */
++/** Shutoff COP7 on HW Sleep
++    If selected the domain COP7 is shutoff on a hardware sleep request. This domain contains the Coprocessor 7 of the SCE. */
++#define SYS_GPE_SDS_COP7 0x80000000
++/* Not selected
++#define SYS_GPE_SDS_COP7_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SDS_COP7_SEL 0x80000000
++/** Shutoff COP6 on HW Sleep
++    If selected the domain COP6 is shutoff on a hardware sleep request. This domain contains the Coprocessor 6 of the SCE. */
++#define SYS_GPE_SDS_COP6 0x40000000
++/* Not selected
++#define SYS_GPE_SDS_COP6_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SDS_COP6_SEL 0x40000000
++/** Shutoff COP5 on HW Sleep
++    If selected the domain COP5 is shutoff on a hardware sleep request. This domain contains the Coprocessor 5 of the SCE. */
++#define SYS_GPE_SDS_COP5 0x20000000
++/* Not selected
++#define SYS_GPE_SDS_COP5_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SDS_COP5_SEL 0x20000000
++/** Shutoff COP4 on HW Sleep
++    If selected the domain COP4 is shutoff on a hardware sleep request. This domain contains the Coprocessor 4 of the SCE. */
++#define SYS_GPE_SDS_COP4 0x10000000
++/* Not selected
++#define SYS_GPE_SDS_COP4_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SDS_COP4_SEL 0x10000000
++/** Shutoff COP3 on HW Sleep
++    If selected the domain COP3 is shutoff on a hardware sleep request. This domain contains the Coprocessor 3 of the SCE. */
++#define SYS_GPE_SDS_COP3 0x08000000
++/* Not selected
++#define SYS_GPE_SDS_COP3_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SDS_COP3_SEL 0x08000000
++/** Shutoff COP2 on HW Sleep
++    If selected the domain COP2 is shutoff on a hardware sleep request. This domain contains the Coprocessor 2 of the SCE. */
++#define SYS_GPE_SDS_COP2 0x04000000
++/* Not selected
++#define SYS_GPE_SDS_COP2_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SDS_COP2_SEL 0x04000000
++/** Shutoff COP1 on HW Sleep
++    If selected the domain COP1 is shutoff on a hardware sleep request. This domain contains the Coprocessor 1 of the SCE. */
++#define SYS_GPE_SDS_COP1 0x02000000
++/* Not selected
++#define SYS_GPE_SDS_COP1_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SDS_COP1_SEL 0x02000000
++/** Shutoff COP0 on HW Sleep
++    If selected the domain COP0 is shutoff on a hardware sleep request. This domain contains the Coprocessor 0 of the SCE. */
++#define SYS_GPE_SDS_COP0 0x01000000
++/* Not selected
++#define SYS_GPE_SDS_COP0_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SDS_COP0_SEL 0x01000000
++/** Shutoff PE5 on HW Sleep
++    If selected the domain PE5 is shutoff on a hardware sleep request. This domain contains the Processing Element 5 of the SCE. */
++#define SYS_GPE_SDS_PE5 0x00200000
++/* Not selected
++#define SYS_GPE_SDS_PE5_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SDS_PE5_SEL 0x00200000
++/** Shutoff PE4 on HW Sleep
++    If selected the domain PE4 is shutoff on a hardware sleep request. This domain contains the Processing Element 4 of the SCE. */
++#define SYS_GPE_SDS_PE4 0x00100000
++/* Not selected
++#define SYS_GPE_SDS_PE4_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SDS_PE4_SEL 0x00100000
++/** Shutoff PE3 on HW Sleep
++    If selected the domain PE3 is shutoff on a hardware sleep request. This domain contains the Processing Element 3 of the SCE. */
++#define SYS_GPE_SDS_PE3 0x00080000
++/* Not selected
++#define SYS_GPE_SDS_PE3_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SDS_PE3_SEL 0x00080000
++/** Shutoff PE2 on HW Sleep
++    If selected the domain PE2 is shutoff on a hardware sleep request. This domain contains the Processing Element 2 of the SCE. */
++#define SYS_GPE_SDS_PE2 0x00040000
++/* Not selected
++#define SYS_GPE_SDS_PE2_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SDS_PE2_SEL 0x00040000
++/** Shutoff PE1 on HW Sleep
++    If selected the domain PE1 is shutoff on a hardware sleep request. This domain contains the Processing Element 1 of the SCE. */
++#define SYS_GPE_SDS_PE1 0x00020000
++/* Not selected
++#define SYS_GPE_SDS_PE1_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SDS_PE1_SEL 0x00020000
++/** Shutoff PE0 on HW Sleep
++    If selected the domain PE0 is shutoff on a hardware sleep request. This domain contains the Processing Element 0 of the SCE. */
++#define SYS_GPE_SDS_PE0 0x00010000
++/* Not selected
++#define SYS_GPE_SDS_PE0_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SDS_PE0_SEL 0x00010000
++/** Shutoff ARB on HW Sleep
++    If selected the domain ARB is shutoff on a hardware sleep request. This domain contains the Arbiter. */
++#define SYS_GPE_SDS_ARB 0x00002000
++/* Not selected
++#define SYS_GPE_SDS_ARB_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SDS_ARB_SEL 0x00002000
++/** Shutoff FSQM on HW Sleep
++    If selected the domain FSQM is shutoff on a hardware sleep request. This domain contains the FSQM. */
++#define SYS_GPE_SDS_FSQM 0x00001000
++/* Not selected
++#define SYS_GPE_SDS_FSQM_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SDS_FSQM_SEL 0x00001000
++/** Shutoff TMU on HW Sleep
++    If selected the domain TMU is shutoff on a hardware sleep request. This domain contains the TMU. */
++#define SYS_GPE_SDS_TMU 0x00000800
++/* Not selected
++#define SYS_GPE_SDS_TMU_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SDS_TMU_SEL 0x00000800
++/** Shutoff MRG on HW Sleep
++    If selected the domain MRG is shutoff on a hardware sleep request. This domain contains the Merger. */
++#define SYS_GPE_SDS_MRG 0x00000400
++/* Not selected
++#define SYS_GPE_SDS_MRG_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SDS_MRG_SEL 0x00000400
++/** Shutoff DISP on HW Sleep
++    If selected the domain DISP is shutoff on a hardware sleep request. This domain contains the Dispatcher. */
++#define SYS_GPE_SDS_DISP 0x00000200
++/* Not selected
++#define SYS_GPE_SDS_DISP_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SDS_DISP_SEL 0x00000200
++/** Shutoff IQM on HW Sleep
++    If selected the domain IQM is shutoff on a hardware sleep request. This domain contains the IQM. */
++#define SYS_GPE_SDS_IQM 0x00000100
++/* Not selected
++#define SYS_GPE_SDS_IQM_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SDS_IQM_SEL 0x00000100
++/** Shutoff CPUE on HW Sleep
++    If selected the domain CPUE is shutoff on a hardware sleep request. This domain contains all parts related to the CPU EGRESS interface. */
++#define SYS_GPE_SDS_CPUE 0x00000080
++/* Not selected
++#define SYS_GPE_SDS_CPUE_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SDS_CPUE_SEL 0x00000080
++/** Shutoff CPUI on HW Sleep
++    If selected the domain CPUI is shutoff on a hardware sleep request. This domain contains all parts related to the CPU INGRESS interface. */
++#define SYS_GPE_SDS_CPUI 0x00000040
++/* Not selected
++#define SYS_GPE_SDS_CPUI_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SDS_CPUI_SEL 0x00000040
++/** Shutoff GPONE on HW Sleep
++    If selected the domain GPONE is shutoff on a hardware sleep request. This domain contains all parts related to the GPON (GTC) EGRESS interface. */
++#define SYS_GPE_SDS_GPONE 0x00000020
++/* Not selected
++#define SYS_GPE_SDS_GPONE_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SDS_GPONE_SEL 0x00000020
++/** Shutoff GPONI on HW Sleep
++    If selected the domain GPONI is shutoff on a hardware sleep request. This domain contains all parts related to the GPON (GTC) INGRESS interface. */
++#define SYS_GPE_SDS_GPONI 0x00000010
++/* Not selected
++#define SYS_GPE_SDS_GPONI_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SDS_GPONI_SEL 0x00000010
++/** Shutoff LAN3 on HW Sleep
++    If selected the domain LAN3 is shutoff on a hardware sleep request. This domain contains all parts related to the LAN3 interface. */
++#define SYS_GPE_SDS_LAN3 0x00000008
++/* Not selected
++#define SYS_GPE_SDS_LAN3_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SDS_LAN3_SEL 0x00000008
++/** Shutoff LAN2 on HW Sleep
++    If selected the domain LAN2 is shutoff on a hardware sleep request. This domain contains all parts related to the LAN2 interface. */
++#define SYS_GPE_SDS_LAN2 0x00000004
++/* Not selected
++#define SYS_GPE_SDS_LAN2_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SDS_LAN2_SEL 0x00000004
++/** Shutoff LAN1 on HW Sleep
++    If selected the domain LAN1 is shutoff on a hardware sleep request. This domain contains all parts related to the LAN1 interface. */
++#define SYS_GPE_SDS_LAN1 0x00000002
++/* Not selected
++#define SYS_GPE_SDS_LAN1_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SDS_LAN1_SEL 0x00000002
++/** Shutoff LAN0 on HW Sleep
++    If selected the domain LAN0 is shutoff on a hardware sleep request. This domain contains all parts related to the LAN0 interface. */
++#define SYS_GPE_SDS_LAN0 0x00000001
++/* Not selected
++#define SYS_GPE_SDS_LAN0_NSEL 0x00000000 */
++/** Selected */
++#define SYS_GPE_SDS_LAN0_SEL 0x00000001
++
++/* Fields of "Sleep Destination Set Register" */
++/** Set Sleep Selection COP7
++    Sets the selection bit for domain COP7This domain contains the Coprocessor 7 of the SCE. */
++#define SYS_GPE_SDSET_COP7 0x80000000
++/* No-Operation
++#define SYS_GPE_SDSET_COP7_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_SDSET_COP7_SET 0x80000000
++/** Set Sleep Selection COP6
++    Sets the selection bit for domain COP6This domain contains the Coprocessor 6 of the SCE. */
++#define SYS_GPE_SDSET_COP6 0x40000000
++/* No-Operation
++#define SYS_GPE_SDSET_COP6_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_SDSET_COP6_SET 0x40000000
++/** Set Sleep Selection COP5
++    Sets the selection bit for domain COP5This domain contains the Coprocessor 5 of the SCE. */
++#define SYS_GPE_SDSET_COP5 0x20000000
++/* No-Operation
++#define SYS_GPE_SDSET_COP5_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_SDSET_COP5_SET 0x20000000
++/** Set Sleep Selection COP4
++    Sets the selection bit for domain COP4This domain contains the Coprocessor 4 of the SCE. */
++#define SYS_GPE_SDSET_COP4 0x10000000
++/* No-Operation
++#define SYS_GPE_SDSET_COP4_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_SDSET_COP4_SET 0x10000000
++/** Set Sleep Selection COP3
++    Sets the selection bit for domain COP3This domain contains the Coprocessor 3 of the SCE. */
++#define SYS_GPE_SDSET_COP3 0x08000000
++/* No-Operation
++#define SYS_GPE_SDSET_COP3_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_SDSET_COP3_SET 0x08000000
++/** Set Sleep Selection COP2
++    Sets the selection bit for domain COP2This domain contains the Coprocessor 2 of the SCE. */
++#define SYS_GPE_SDSET_COP2 0x04000000
++/* No-Operation
++#define SYS_GPE_SDSET_COP2_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_SDSET_COP2_SET 0x04000000
++/** Set Sleep Selection COP1
++    Sets the selection bit for domain COP1This domain contains the Coprocessor 1 of the SCE. */
++#define SYS_GPE_SDSET_COP1 0x02000000
++/* No-Operation
++#define SYS_GPE_SDSET_COP1_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_SDSET_COP1_SET 0x02000000
++/** Set Sleep Selection COP0
++    Sets the selection bit for domain COP0This domain contains the Coprocessor 0 of the SCE. */
++#define SYS_GPE_SDSET_COP0 0x01000000
++/* No-Operation
++#define SYS_GPE_SDSET_COP0_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_SDSET_COP0_SET 0x01000000
++/** Set Sleep Selection PE5
++    Sets the selection bit for domain PE5This domain contains the Processing Element 5 of the SCE. */
++#define SYS_GPE_SDSET_PE5 0x00200000
++/* No-Operation
++#define SYS_GPE_SDSET_PE5_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_SDSET_PE5_SET 0x00200000
++/** Set Sleep Selection PE4
++    Sets the selection bit for domain PE4This domain contains the Processing Element 4 of the SCE. */
++#define SYS_GPE_SDSET_PE4 0x00100000
++/* No-Operation
++#define SYS_GPE_SDSET_PE4_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_SDSET_PE4_SET 0x00100000
++/** Set Sleep Selection PE3
++    Sets the selection bit for domain PE3This domain contains the Processing Element 3 of the SCE. */
++#define SYS_GPE_SDSET_PE3 0x00080000
++/* No-Operation
++#define SYS_GPE_SDSET_PE3_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_SDSET_PE3_SET 0x00080000
++/** Set Sleep Selection PE2
++    Sets the selection bit for domain PE2This domain contains the Processing Element 2 of the SCE. */
++#define SYS_GPE_SDSET_PE2 0x00040000
++/* No-Operation
++#define SYS_GPE_SDSET_PE2_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_SDSET_PE2_SET 0x00040000
++/** Set Sleep Selection PE1
++    Sets the selection bit for domain PE1This domain contains the Processing Element 1 of the SCE. */
++#define SYS_GPE_SDSET_PE1 0x00020000
++/* No-Operation
++#define SYS_GPE_SDSET_PE1_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_SDSET_PE1_SET 0x00020000
++/** Set Sleep Selection PE0
++    Sets the selection bit for domain PE0This domain contains the Processing Element 0 of the SCE. */
++#define SYS_GPE_SDSET_PE0 0x00010000
++/* No-Operation
++#define SYS_GPE_SDSET_PE0_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_SDSET_PE0_SET 0x00010000
++/** Set Sleep Selection ARB
++    Sets the selection bit for domain ARBThis domain contains the Arbiter. */
++#define SYS_GPE_SDSET_ARB 0x00002000
++/* No-Operation
++#define SYS_GPE_SDSET_ARB_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_SDSET_ARB_SET 0x00002000
++/** Set Sleep Selection FSQM
++    Sets the selection bit for domain FSQMThis domain contains the FSQM. */
++#define SYS_GPE_SDSET_FSQM 0x00001000
++/* No-Operation
++#define SYS_GPE_SDSET_FSQM_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_SDSET_FSQM_SET 0x00001000
++/** Set Sleep Selection TMU
++    Sets the selection bit for domain TMUThis domain contains the TMU. */
++#define SYS_GPE_SDSET_TMU 0x00000800
++/* No-Operation
++#define SYS_GPE_SDSET_TMU_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_SDSET_TMU_SET 0x00000800
++/** Set Sleep Selection MRG
++    Sets the selection bit for domain MRGThis domain contains the Merger. */
++#define SYS_GPE_SDSET_MRG 0x00000400
++/* No-Operation
++#define SYS_GPE_SDSET_MRG_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_SDSET_MRG_SET 0x00000400
++/** Set Sleep Selection DISP
++    Sets the selection bit for domain DISPThis domain contains the Dispatcher. */
++#define SYS_GPE_SDSET_DISP 0x00000200
++/* No-Operation
++#define SYS_GPE_SDSET_DISP_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_SDSET_DISP_SET 0x00000200
++/** Set Sleep Selection IQM
++    Sets the selection bit for domain IQMThis domain contains the IQM. */
++#define SYS_GPE_SDSET_IQM 0x00000100
++/* No-Operation
++#define SYS_GPE_SDSET_IQM_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_SDSET_IQM_SET 0x00000100
++/** Set Sleep Selection CPUE
++    Sets the selection bit for domain CPUEThis domain contains all parts related to the CPU EGRESS interface. */
++#define SYS_GPE_SDSET_CPUE 0x00000080
++/* No-Operation
++#define SYS_GPE_SDSET_CPUE_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_SDSET_CPUE_SET 0x00000080
++/** Set Sleep Selection CPUI
++    Sets the selection bit for domain CPUIThis domain contains all parts related to the CPU INGRESS interface. */
++#define SYS_GPE_SDSET_CPUI 0x00000040
++/* No-Operation
++#define SYS_GPE_SDSET_CPUI_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_SDSET_CPUI_SET 0x00000040
++/** Set Sleep Selection GPONE
++    Sets the selection bit for domain GPONEThis domain contains all parts related to the GPON (GTC) EGRESS interface. */
++#define SYS_GPE_SDSET_GPONE 0x00000020
++/* No-Operation
++#define SYS_GPE_SDSET_GPONE_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_SDSET_GPONE_SET 0x00000020
++/** Set Sleep Selection GPONI
++    Sets the selection bit for domain GPONIThis domain contains all parts related to the GPON (GTC) INGRESS interface. */
++#define SYS_GPE_SDSET_GPONI 0x00000010
++/* No-Operation
++#define SYS_GPE_SDSET_GPONI_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_SDSET_GPONI_SET 0x00000010
++/** Set Sleep Selection LAN3
++    Sets the selection bit for domain LAN3This domain contains all parts related to the LAN3 interface. */
++#define SYS_GPE_SDSET_LAN3 0x00000008
++/* No-Operation
++#define SYS_GPE_SDSET_LAN3_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_SDSET_LAN3_SET 0x00000008
++/** Set Sleep Selection LAN2
++    Sets the selection bit for domain LAN2This domain contains all parts related to the LAN2 interface. */
++#define SYS_GPE_SDSET_LAN2 0x00000004
++/* No-Operation
++#define SYS_GPE_SDSET_LAN2_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_SDSET_LAN2_SET 0x00000004
++/** Set Sleep Selection LAN1
++    Sets the selection bit for domain LAN1This domain contains all parts related to the LAN1 interface. */
++#define SYS_GPE_SDSET_LAN1 0x00000002
++/* No-Operation
++#define SYS_GPE_SDSET_LAN1_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_SDSET_LAN1_SET 0x00000002
++/** Set Sleep Selection LAN0
++    Sets the selection bit for domain LAN0This domain contains all parts related to the LAN0 interface. */
++#define SYS_GPE_SDSET_LAN0 0x00000001
++/* No-Operation
++#define SYS_GPE_SDSET_LAN0_NOP 0x00000000 */
++/** Set */
++#define SYS_GPE_SDSET_LAN0_SET 0x00000001
++
++/* Fields of "Sleep Destination Clear Register" */
++/** Clear Sleep Selection COP7
++    Clears the selection bit for domain COP7This domain contains the Coprocessor 7 of the SCE. */
++#define SYS_GPE_SDCLR_COP7 0x80000000
++/* No-Operation
++#define SYS_GPE_SDCLR_COP7_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_SDCLR_COP7_CLR 0x80000000
++/** Clear Sleep Selection COP6
++    Clears the selection bit for domain COP6This domain contains the Coprocessor 6 of the SCE. */
++#define SYS_GPE_SDCLR_COP6 0x40000000
++/* No-Operation
++#define SYS_GPE_SDCLR_COP6_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_SDCLR_COP6_CLR 0x40000000
++/** Clear Sleep Selection COP5
++    Clears the selection bit for domain COP5This domain contains the Coprocessor 5 of the SCE. */
++#define SYS_GPE_SDCLR_COP5 0x20000000
++/* No-Operation
++#define SYS_GPE_SDCLR_COP5_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_SDCLR_COP5_CLR 0x20000000
++/** Clear Sleep Selection COP4
++    Clears the selection bit for domain COP4This domain contains the Coprocessor 4 of the SCE. */
++#define SYS_GPE_SDCLR_COP4 0x10000000
++/* No-Operation
++#define SYS_GPE_SDCLR_COP4_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_SDCLR_COP4_CLR 0x10000000
++/** Clear Sleep Selection COP3
++    Clears the selection bit for domain COP3This domain contains the Coprocessor 3 of the SCE. */
++#define SYS_GPE_SDCLR_COP3 0x08000000
++/* No-Operation
++#define SYS_GPE_SDCLR_COP3_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_SDCLR_COP3_CLR 0x08000000
++/** Clear Sleep Selection COP2
++    Clears the selection bit for domain COP2This domain contains the Coprocessor 2 of the SCE. */
++#define SYS_GPE_SDCLR_COP2 0x04000000
++/* No-Operation
++#define SYS_GPE_SDCLR_COP2_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_SDCLR_COP2_CLR 0x04000000
++/** Clear Sleep Selection COP1
++    Clears the selection bit for domain COP1This domain contains the Coprocessor 1 of the SCE. */
++#define SYS_GPE_SDCLR_COP1 0x02000000
++/* No-Operation
++#define SYS_GPE_SDCLR_COP1_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_SDCLR_COP1_CLR 0x02000000
++/** Clear Sleep Selection COP0
++    Clears the selection bit for domain COP0This domain contains the Coprocessor 0 of the SCE. */
++#define SYS_GPE_SDCLR_COP0 0x01000000
++/* No-Operation
++#define SYS_GPE_SDCLR_COP0_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_SDCLR_COP0_CLR 0x01000000
++/** Clear Sleep Selection PE5
++    Clears the selection bit for domain PE5This domain contains the Processing Element 5 of the SCE. */
++#define SYS_GPE_SDCLR_PE5 0x00200000
++/* No-Operation
++#define SYS_GPE_SDCLR_PE5_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_SDCLR_PE5_CLR 0x00200000
++/** Clear Sleep Selection PE4
++    Clears the selection bit for domain PE4This domain contains the Processing Element 4 of the SCE. */
++#define SYS_GPE_SDCLR_PE4 0x00100000
++/* No-Operation
++#define SYS_GPE_SDCLR_PE4_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_SDCLR_PE4_CLR 0x00100000
++/** Clear Sleep Selection PE3
++    Clears the selection bit for domain PE3This domain contains the Processing Element 3 of the SCE. */
++#define SYS_GPE_SDCLR_PE3 0x00080000
++/* No-Operation
++#define SYS_GPE_SDCLR_PE3_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_SDCLR_PE3_CLR 0x00080000
++/** Clear Sleep Selection PE2
++    Clears the selection bit for domain PE2This domain contains the Processing Element 2 of the SCE. */
++#define SYS_GPE_SDCLR_PE2 0x00040000
++/* No-Operation
++#define SYS_GPE_SDCLR_PE2_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_SDCLR_PE2_CLR 0x00040000
++/** Clear Sleep Selection PE1
++    Clears the selection bit for domain PE1This domain contains the Processing Element 1 of the SCE. */
++#define SYS_GPE_SDCLR_PE1 0x00020000
++/* No-Operation
++#define SYS_GPE_SDCLR_PE1_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_SDCLR_PE1_CLR 0x00020000
++/** Clear Sleep Selection PE0
++    Clears the selection bit for domain PE0This domain contains the Processing Element 0 of the SCE. */
++#define SYS_GPE_SDCLR_PE0 0x00010000
++/* No-Operation
++#define SYS_GPE_SDCLR_PE0_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_SDCLR_PE0_CLR 0x00010000
++/** Clear Sleep Selection ARB
++    Clears the selection bit for domain ARBThis domain contains the Arbiter. */
++#define SYS_GPE_SDCLR_ARB 0x00002000
++/* No-Operation
++#define SYS_GPE_SDCLR_ARB_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_SDCLR_ARB_CLR 0x00002000
++/** Clear Sleep Selection FSQM
++    Clears the selection bit for domain FSQMThis domain contains the FSQM. */
++#define SYS_GPE_SDCLR_FSQM 0x00001000
++/* No-Operation
++#define SYS_GPE_SDCLR_FSQM_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_SDCLR_FSQM_CLR 0x00001000
++/** Clear Sleep Selection TMU
++    Clears the selection bit for domain TMUThis domain contains the TMU. */
++#define SYS_GPE_SDCLR_TMU 0x00000800
++/* No-Operation
++#define SYS_GPE_SDCLR_TMU_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_SDCLR_TMU_CLR 0x00000800
++/** Clear Sleep Selection MRG
++    Clears the selection bit for domain MRGThis domain contains the Merger. */
++#define SYS_GPE_SDCLR_MRG 0x00000400
++/* No-Operation
++#define SYS_GPE_SDCLR_MRG_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_SDCLR_MRG_CLR 0x00000400
++/** Clear Sleep Selection DISP
++    Clears the selection bit for domain DISPThis domain contains the Dispatcher. */
++#define SYS_GPE_SDCLR_DISP 0x00000200
++/* No-Operation
++#define SYS_GPE_SDCLR_DISP_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_SDCLR_DISP_CLR 0x00000200
++/** Clear Sleep Selection IQM
++    Clears the selection bit for domain IQMThis domain contains the IQM. */
++#define SYS_GPE_SDCLR_IQM 0x00000100
++/* No-Operation
++#define SYS_GPE_SDCLR_IQM_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_SDCLR_IQM_CLR 0x00000100
++/** Clear Sleep Selection CPUE
++    Clears the selection bit for domain CPUEThis domain contains all parts related to the CPU EGRESS interface. */
++#define SYS_GPE_SDCLR_CPUE 0x00000080
++/* No-Operation
++#define SYS_GPE_SDCLR_CPUE_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_SDCLR_CPUE_CLR 0x00000080
++/** Clear Sleep Selection CPUI
++    Clears the selection bit for domain CPUIThis domain contains all parts related to the CPU INGRESS interface. */
++#define SYS_GPE_SDCLR_CPUI 0x00000040
++/* No-Operation
++#define SYS_GPE_SDCLR_CPUI_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_SDCLR_CPUI_CLR 0x00000040
++/** Clear Sleep Selection GPONE
++    Clears the selection bit for domain GPONEThis domain contains all parts related to the GPON (GTC) EGRESS interface. */
++#define SYS_GPE_SDCLR_GPONE 0x00000020
++/* No-Operation
++#define SYS_GPE_SDCLR_GPONE_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_SDCLR_GPONE_CLR 0x00000020
++/** Clear Sleep Selection GPONI
++    Clears the selection bit for domain GPONIThis domain contains all parts related to the GPON (GTC) INGRESS interface. */
++#define SYS_GPE_SDCLR_GPONI 0x00000010
++/* No-Operation
++#define SYS_GPE_SDCLR_GPONI_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_SDCLR_GPONI_CLR 0x00000010
++/** Clear Sleep Selection LAN3
++    Clears the selection bit for domain LAN3This domain contains all parts related to the LAN3 interface. */
++#define SYS_GPE_SDCLR_LAN3 0x00000008
++/* No-Operation
++#define SYS_GPE_SDCLR_LAN3_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_SDCLR_LAN3_CLR 0x00000008
++/** Clear Sleep Selection LAN2
++    Clears the selection bit for domain LAN2This domain contains all parts related to the LAN2 interface. */
++#define SYS_GPE_SDCLR_LAN2 0x00000004
++/* No-Operation
++#define SYS_GPE_SDCLR_LAN2_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_SDCLR_LAN2_CLR 0x00000004
++/** Clear Sleep Selection LAN1
++    Clears the selection bit for domain LAN1This domain contains all parts related to the LAN1 interface. */
++#define SYS_GPE_SDCLR_LAN1 0x00000002
++/* No-Operation
++#define SYS_GPE_SDCLR_LAN1_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_SDCLR_LAN1_CLR 0x00000002
++/** Clear Sleep Selection LAN0
++    Clears the selection bit for domain LAN0This domain contains all parts related to the LAN0 interface. */
++#define SYS_GPE_SDCLR_LAN0 0x00000001
++/* No-Operation
++#define SYS_GPE_SDCLR_LAN0_NOP 0x00000000 */
++/** Clear */
++#define SYS_GPE_SDCLR_LAN0_CLR 0x00000001
++
++/* Fields of "IRNCS Capture Register" */
++/** FSQM wakeup request
++    The FSQM submitted a wakeup request. This bit is edge-sensitive. This bit contributes to the indirect interrupt. */
++#define SYS_GPE_IRNCSCR_FSQMWR 0x80000000
++/* Nothing
++#define SYS_GPE_IRNCSCR_FSQMWR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define SYS_GPE_IRNCSCR_FSQMWR_INTACK 0x80000000
++/** Read: Interrupt occurred. */
++#define SYS_GPE_IRNCSCR_FSQMWR_INTOCC 0x80000000
++/** GPONT wakeup request
++    The TCONT Request FIFO of port GPON submitted a wakeup request. This bit is edge-sensitive. This bit contributes to the indirect interrupt. */
++#define SYS_GPE_IRNCSCR_GPONTWR 0x20000000
++/* Nothing
++#define SYS_GPE_IRNCSCR_GPONTWR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define SYS_GPE_IRNCSCR_GPONTWR_INTACK 0x20000000
++/** Read: Interrupt occurred. */
++#define SYS_GPE_IRNCSCR_GPONTWR_INTOCC 0x20000000
++/** GPONE wakeup request
++    The EGRESS FIFO of port GPON submitted a wakeup request. This bit is edge-sensitive. This bit contributes to the indirect interrupt. */
++#define SYS_GPE_IRNCSCR_GPONEWR 0x10000000
++/* Nothing
++#define SYS_GPE_IRNCSCR_GPONEWR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define SYS_GPE_IRNCSCR_GPONEWR_INTACK 0x10000000
++/** Read: Interrupt occurred. */
++#define SYS_GPE_IRNCSCR_GPONEWR_INTOCC 0x10000000
++/** LAN3E wakeup request
++    The EGRESS FIFO of port LAN3 submitted a wakeup request. This bit is edge-sensitive. This bit contributes to the indirect interrupt. */
++#define SYS_GPE_IRNCSCR_LAN3EWR 0x08000000
++/* Nothing
++#define SYS_GPE_IRNCSCR_LAN3EWR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define SYS_GPE_IRNCSCR_LAN3EWR_INTACK 0x08000000
++/** Read: Interrupt occurred. */
++#define SYS_GPE_IRNCSCR_LAN3EWR_INTOCC 0x08000000
++/** LAN2E wakeup requestThe ENGRESS FIFO of port LAN2 submitted a wakeup request.
++    This bit is edge-sensitive. This bit contributes to the indirect interrupt. */
++#define SYS_GPE_IRNCSCR_LAN2EWR 0x04000000
++/* Nothing
++#define SYS_GPE_IRNCSCR_LAN2EWR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define SYS_GPE_IRNCSCR_LAN2EWR_INTACK 0x04000000
++/** Read: Interrupt occurred. */
++#define SYS_GPE_IRNCSCR_LAN2EWR_INTOCC 0x04000000
++/** LAN1E wakeup request
++    The EGRESS FIFO of port LAN1 submitted a wakeup request. This bit is edge-sensitive. This bit contributes to the indirect interrupt. */
++#define SYS_GPE_IRNCSCR_LAN1EWR 0x02000000
++/* Nothing
++#define SYS_GPE_IRNCSCR_LAN1EWR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define SYS_GPE_IRNCSCR_LAN1EWR_INTACK 0x02000000
++/** Read: Interrupt occurred. */
++#define SYS_GPE_IRNCSCR_LAN1EWR_INTOCC 0x02000000
++/** LAN0E wakeup request
++    The EGRESS FIFO of port LAN0 submitted a wakeup request. This bit is edge-sensitive. This bit contributes to the indirect interrupt. */
++#define SYS_GPE_IRNCSCR_LAN0EWR 0x01000000
++/* Nothing
++#define SYS_GPE_IRNCSCR_LAN0EWR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define SYS_GPE_IRNCSCR_LAN0EWR_INTACK 0x01000000
++/** Read: Interrupt occurred. */
++#define SYS_GPE_IRNCSCR_LAN0EWR_INTOCC 0x01000000
++/** GPONI wakeup request
++    The INGRESS FIFO of port GPON submitted a wakeup request. This bit is edge-sensitive. This bit contributes to the indirect interrupt. */
++#define SYS_GPE_IRNCSCR_GPONIWR 0x00100000
++/* Nothing
++#define SYS_GPE_IRNCSCR_GPONIWR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define SYS_GPE_IRNCSCR_GPONIWR_INTACK 0x00100000
++/** Read: Interrupt occurred. */
++#define SYS_GPE_IRNCSCR_GPONIWR_INTOCC 0x00100000
++/** LAN3I wakeup request
++    The INGRESS FIFO of port LAN3 submitted a wakeup request. This bit is edge-sensitive. This bit contributes to the indirect interrupt. */
++#define SYS_GPE_IRNCSCR_LAN3IWR 0x00080000
++/* Nothing
++#define SYS_GPE_IRNCSCR_LAN3IWR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define SYS_GPE_IRNCSCR_LAN3IWR_INTACK 0x00080000
++/** Read: Interrupt occurred. */
++#define SYS_GPE_IRNCSCR_LAN3IWR_INTOCC 0x00080000
++/** LAN2I wakeup request
++    The INGRESS FIFO of port LAN2 submitted a wakeup request. This bit is edge-sensitive. This bit contributes to the indirect interrupt. */
++#define SYS_GPE_IRNCSCR_LAN2IWR 0x00040000
++/* Nothing
++#define SYS_GPE_IRNCSCR_LAN2IWR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define SYS_GPE_IRNCSCR_LAN2IWR_INTACK 0x00040000
++/** Read: Interrupt occurred. */
++#define SYS_GPE_IRNCSCR_LAN2IWR_INTOCC 0x00040000
++/** LAN1I wakeup request
++    The INGRESS FIFO of port LAN1 submitted a wakeup request. This bit is edge-sensitive. This bit contributes to the indirect interrupt. */
++#define SYS_GPE_IRNCSCR_LAN1IWR 0x00020000
++/* Nothing
++#define SYS_GPE_IRNCSCR_LAN1IWR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define SYS_GPE_IRNCSCR_LAN1IWR_INTACK 0x00020000
++/** Read: Interrupt occurred. */
++#define SYS_GPE_IRNCSCR_LAN1IWR_INTOCC 0x00020000
++/** LAN0I wakeup request
++    The INGRESS FIFO of port LAN0 submitted a wakeup request. This bit is edge-sensitive. This bit contributes to the indirect interrupt. */
++#define SYS_GPE_IRNCSCR_LAN0IWR 0x00010000
++/* Nothing
++#define SYS_GPE_IRNCSCR_LAN0IWR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define SYS_GPE_IRNCSCR_LAN0IWR_INTACK 0x00010000
++/** Read: Interrupt occurred. */
++#define SYS_GPE_IRNCSCR_LAN0IWR_INTOCC 0x00010000
++/** FSQM sleep request
++    The FSQM submitted a sleep request. This bit is edge-sensitive. This bit contributes to the indirect interrupt. */
++#define SYS_GPE_IRNCSCR_FSQMSR 0x00008000
++/* Nothing
++#define SYS_GPE_IRNCSCR_FSQMSR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define SYS_GPE_IRNCSCR_FSQMSR_INTACK 0x00008000
++/** Read: Interrupt occurred. */
++#define SYS_GPE_IRNCSCR_FSQMSR_INTOCC 0x00008000
++/** GPONT sleep request
++    The TCONT Request FIFO of port GPON submitted a sleep request. This bit is edge-sensitive. This bit contributes to the indirect interrupt. */
++#define SYS_GPE_IRNCSCR_GPONTSR 0x00002000
++/* Nothing
++#define SYS_GPE_IRNCSCR_GPONTSR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define SYS_GPE_IRNCSCR_GPONTSR_INTACK 0x00002000
++/** Read: Interrupt occurred. */
++#define SYS_GPE_IRNCSCR_GPONTSR_INTOCC 0x00002000
++/** GPONE sleep request
++    The EGRESS FIFO of port GPON submitted a sleep request. This bit is edge-sensitive. This bit contributes to the indirect interrupt. */
++#define SYS_GPE_IRNCSCR_GPONESR 0x00001000
++/* Nothing
++#define SYS_GPE_IRNCSCR_GPONESR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define SYS_GPE_IRNCSCR_GPONESR_INTACK 0x00001000
++/** Read: Interrupt occurred. */
++#define SYS_GPE_IRNCSCR_GPONESR_INTOCC 0x00001000
++/** LAN3E sleep request
++    The EGRESS FIFO of port LAN3 submitted a sleep request. This bit is edge-sensitive. This bit contributes to the indirect interrupt. */
++#define SYS_GPE_IRNCSCR_LAN3ESR 0x00000800
++/* Nothing
++#define SYS_GPE_IRNCSCR_LAN3ESR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define SYS_GPE_IRNCSCR_LAN3ESR_INTACK 0x00000800
++/** Read: Interrupt occurred. */
++#define SYS_GPE_IRNCSCR_LAN3ESR_INTOCC 0x00000800
++/** LAN2E sleep requestThe ENGRESS FIFO of port LAN2 submitted a sleep request.
++    This bit is edge-sensitive. This bit contributes to the indirect interrupt. */
++#define SYS_GPE_IRNCSCR_LAN2ESR 0x00000400
++/* Nothing
++#define SYS_GPE_IRNCSCR_LAN2ESR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define SYS_GPE_IRNCSCR_LAN2ESR_INTACK 0x00000400
++/** Read: Interrupt occurred. */
++#define SYS_GPE_IRNCSCR_LAN2ESR_INTOCC 0x00000400
++/** LAN1E sleep request
++    The EGRESS FIFO of port LAN1 submitted a sleep request. This bit is edge-sensitive. This bit contributes to the indirect interrupt. */
++#define SYS_GPE_IRNCSCR_LAN1ESR 0x00000200
++/* Nothing
++#define SYS_GPE_IRNCSCR_LAN1ESR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define SYS_GPE_IRNCSCR_LAN1ESR_INTACK 0x00000200
++/** Read: Interrupt occurred. */
++#define SYS_GPE_IRNCSCR_LAN1ESR_INTOCC 0x00000200
++/** LAN0E sleep request
++    The EGRESS FIFO of port LAN0 submitted a sleep request. This bit is edge-sensitive. This bit contributes to the indirect interrupt. */
++#define SYS_GPE_IRNCSCR_LAN0ESR 0x00000100
++/* Nothing
++#define SYS_GPE_IRNCSCR_LAN0ESR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define SYS_GPE_IRNCSCR_LAN0ESR_INTACK 0x00000100
++/** Read: Interrupt occurred. */
++#define SYS_GPE_IRNCSCR_LAN0ESR_INTOCC 0x00000100
++/** GPONI sleep request
++    The INGRESS FIFO of port GPON submitted a sleep request. This bit is edge-sensitive. This bit contributes to the indirect interrupt. */
++#define SYS_GPE_IRNCSCR_GPONISR 0x00000010
++/* Nothing
++#define SYS_GPE_IRNCSCR_GPONISR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define SYS_GPE_IRNCSCR_GPONISR_INTACK 0x00000010
++/** Read: Interrupt occurred. */
++#define SYS_GPE_IRNCSCR_GPONISR_INTOCC 0x00000010
++/** LAN3I sleep request
++    The INGRESS FIFO of port LAN3 submitted a sleep request. This bit is edge-sensitive. This bit contributes to the indirect interrupt. */
++#define SYS_GPE_IRNCSCR_LAN3ISR 0x00000008
++/* Nothing
++#define SYS_GPE_IRNCSCR_LAN3ISR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define SYS_GPE_IRNCSCR_LAN3ISR_INTACK 0x00000008
++/** Read: Interrupt occurred. */
++#define SYS_GPE_IRNCSCR_LAN3ISR_INTOCC 0x00000008
++/** LAN2I sleep request
++    The INGRESS FIFO of port LAN2 submitted a sleep request. This bit is edge-sensitive. This bit contributes to the indirect interrupt. */
++#define SYS_GPE_IRNCSCR_LAN2ISR 0x00000004
++/* Nothing
++#define SYS_GPE_IRNCSCR_LAN2ISR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define SYS_GPE_IRNCSCR_LAN2ISR_INTACK 0x00000004
++/** Read: Interrupt occurred. */
++#define SYS_GPE_IRNCSCR_LAN2ISR_INTOCC 0x00000004
++/** LAN1I sleep request
++    The INGRESS FIFO of port LAN1 submitted a sleep request. This bit is edge-sensitive. This bit contributes to the indirect interrupt. */
++#define SYS_GPE_IRNCSCR_LAN1ISR 0x00000002
++/* Nothing
++#define SYS_GPE_IRNCSCR_LAN1ISR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define SYS_GPE_IRNCSCR_LAN1ISR_INTACK 0x00000002
++/** Read: Interrupt occurred. */
++#define SYS_GPE_IRNCSCR_LAN1ISR_INTOCC 0x00000002
++/** LAN0I sleep request
++    The INGRESS FIFO of port LAN0 submitted a sleep request. This bit is edge-sensitive. This bit contributes to the indirect interrupt. */
++#define SYS_GPE_IRNCSCR_LAN0ISR 0x00000001
++/* Nothing
++#define SYS_GPE_IRNCSCR_LAN0ISR_NULL 0x00000000 */
++/** Write: Acknowledge the interrupt. */
++#define SYS_GPE_IRNCSCR_LAN0ISR_INTACK 0x00000001
++/** Read: Interrupt occurred. */
++#define SYS_GPE_IRNCSCR_LAN0ISR_INTOCC 0x00000001
++
++/* Fields of "IRNCS Interrupt Control Register" */
++/** FSQM wakeup request
++    Interrupt control bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSICR_FSQMWR 0x80000000
++/** GPONT wakeup request
++    Interrupt control bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSICR_GPONTWR 0x20000000
++/** GPONE wakeup request
++    Interrupt control bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSICR_GPONEWR 0x10000000
++/** LAN3E wakeup request
++    Interrupt control bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSICR_LAN3EWR 0x08000000
++/** LAN2E wakeup requestThe ENGRESS FIFO of port LAN2 submitted a wakeup request.
++    Interrupt control bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSICR_LAN2EWR 0x04000000
++/** LAN1E wakeup request
++    Interrupt control bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSICR_LAN1EWR 0x02000000
++/** LAN0E wakeup request
++    Interrupt control bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSICR_LAN0EWR 0x01000000
++/** GPONI wakeup request
++    Interrupt control bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSICR_GPONIWR 0x00100000
++/** LAN3I wakeup request
++    Interrupt control bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSICR_LAN3IWR 0x00080000
++/** LAN2I wakeup request
++    Interrupt control bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSICR_LAN2IWR 0x00040000
++/** LAN1I wakeup request
++    Interrupt control bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSICR_LAN1IWR 0x00020000
++/** LAN0I wakeup request
++    Interrupt control bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSICR_LAN0IWR 0x00010000
++/** FSQM sleep request
++    Interrupt control bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSICR_FSQMSR 0x00008000
++/** GPONT sleep request
++    Interrupt control bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSICR_GPONTSR 0x00002000
++/** GPONE sleep request
++    Interrupt control bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSICR_GPONESR 0x00001000
++/** LAN3E sleep request
++    Interrupt control bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSICR_LAN3ESR 0x00000800
++/** LAN2E sleep requestThe ENGRESS FIFO of port LAN2 submitted a sleep request.
++    Interrupt control bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSICR_LAN2ESR 0x00000400
++/** LAN1E sleep request
++    Interrupt control bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSICR_LAN1ESR 0x00000200
++/** LAN0E sleep request
++    Interrupt control bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSICR_LAN0ESR 0x00000100
++/** GPONI sleep request
++    Interrupt control bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSICR_GPONISR 0x00000010
++/** LAN3I sleep request
++    Interrupt control bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSICR_LAN3ISR 0x00000008
++/** LAN2I sleep request
++    Interrupt control bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSICR_LAN2ISR 0x00000004
++/** LAN1I sleep request
++    Interrupt control bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSICR_LAN1ISR 0x00000002
++/** LAN0I sleep request
++    Interrupt control bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSICR_LAN0ISR 0x00000001
++
++/* Fields of "IRNCS Interrupt Enable Register" */
++/** FSQM wakeup request
++    Interrupt enable bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSEN_FSQMWR 0x80000000
++/* Disable
++#define SYS_GPE_IRNCSEN_FSQMWR_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_IRNCSEN_FSQMWR_EN 0x80000000
++/** GPONT wakeup request
++    Interrupt enable bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSEN_GPONTWR 0x20000000
++/* Disable
++#define SYS_GPE_IRNCSEN_GPONTWR_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_IRNCSEN_GPONTWR_EN 0x20000000
++/** GPONE wakeup request
++    Interrupt enable bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSEN_GPONEWR 0x10000000
++/* Disable
++#define SYS_GPE_IRNCSEN_GPONEWR_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_IRNCSEN_GPONEWR_EN 0x10000000
++/** LAN3E wakeup request
++    Interrupt enable bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSEN_LAN3EWR 0x08000000
++/* Disable
++#define SYS_GPE_IRNCSEN_LAN3EWR_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_IRNCSEN_LAN3EWR_EN 0x08000000
++/** LAN2E wakeup requestThe ENGRESS FIFO of port LAN2 submitted a wakeup request.
++    Interrupt enable bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSEN_LAN2EWR 0x04000000
++/* Disable
++#define SYS_GPE_IRNCSEN_LAN2EWR_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_IRNCSEN_LAN2EWR_EN 0x04000000
++/** LAN1E wakeup request
++    Interrupt enable bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSEN_LAN1EWR 0x02000000
++/* Disable
++#define SYS_GPE_IRNCSEN_LAN1EWR_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_IRNCSEN_LAN1EWR_EN 0x02000000
++/** LAN0E wakeup request
++    Interrupt enable bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSEN_LAN0EWR 0x01000000
++/* Disable
++#define SYS_GPE_IRNCSEN_LAN0EWR_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_IRNCSEN_LAN0EWR_EN 0x01000000
++/** GPONI wakeup request
++    Interrupt enable bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSEN_GPONIWR 0x00100000
++/* Disable
++#define SYS_GPE_IRNCSEN_GPONIWR_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_IRNCSEN_GPONIWR_EN 0x00100000
++/** LAN3I wakeup request
++    Interrupt enable bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSEN_LAN3IWR 0x00080000
++/* Disable
++#define SYS_GPE_IRNCSEN_LAN3IWR_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_IRNCSEN_LAN3IWR_EN 0x00080000
++/** LAN2I wakeup request
++    Interrupt enable bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSEN_LAN2IWR 0x00040000
++/* Disable
++#define SYS_GPE_IRNCSEN_LAN2IWR_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_IRNCSEN_LAN2IWR_EN 0x00040000
++/** LAN1I wakeup request
++    Interrupt enable bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSEN_LAN1IWR 0x00020000
++/* Disable
++#define SYS_GPE_IRNCSEN_LAN1IWR_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_IRNCSEN_LAN1IWR_EN 0x00020000
++/** LAN0I wakeup request
++    Interrupt enable bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSEN_LAN0IWR 0x00010000
++/* Disable
++#define SYS_GPE_IRNCSEN_LAN0IWR_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_IRNCSEN_LAN0IWR_EN 0x00010000
++/** FSQM sleep request
++    Interrupt enable bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSEN_FSQMSR 0x00008000
++/* Disable
++#define SYS_GPE_IRNCSEN_FSQMSR_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_IRNCSEN_FSQMSR_EN 0x00008000
++/** GPONT sleep request
++    Interrupt enable bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSEN_GPONTSR 0x00002000
++/* Disable
++#define SYS_GPE_IRNCSEN_GPONTSR_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_IRNCSEN_GPONTSR_EN 0x00002000
++/** GPONE sleep request
++    Interrupt enable bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSEN_GPONESR 0x00001000
++/* Disable
++#define SYS_GPE_IRNCSEN_GPONESR_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_IRNCSEN_GPONESR_EN 0x00001000
++/** LAN3E sleep request
++    Interrupt enable bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSEN_LAN3ESR 0x00000800
++/* Disable
++#define SYS_GPE_IRNCSEN_LAN3ESR_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_IRNCSEN_LAN3ESR_EN 0x00000800
++/** LAN2E sleep requestThe ENGRESS FIFO of port LAN2 submitted a sleep request.
++    Interrupt enable bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSEN_LAN2ESR 0x00000400
++/* Disable
++#define SYS_GPE_IRNCSEN_LAN2ESR_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_IRNCSEN_LAN2ESR_EN 0x00000400
++/** LAN1E sleep request
++    Interrupt enable bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSEN_LAN1ESR 0x00000200
++/* Disable
++#define SYS_GPE_IRNCSEN_LAN1ESR_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_IRNCSEN_LAN1ESR_EN 0x00000200
++/** LAN0E sleep request
++    Interrupt enable bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSEN_LAN0ESR 0x00000100
++/* Disable
++#define SYS_GPE_IRNCSEN_LAN0ESR_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_IRNCSEN_LAN0ESR_EN 0x00000100
++/** GPONI sleep request
++    Interrupt enable bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSEN_GPONISR 0x00000010
++/* Disable
++#define SYS_GPE_IRNCSEN_GPONISR_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_IRNCSEN_GPONISR_EN 0x00000010
++/** LAN3I sleep request
++    Interrupt enable bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSEN_LAN3ISR 0x00000008
++/* Disable
++#define SYS_GPE_IRNCSEN_LAN3ISR_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_IRNCSEN_LAN3ISR_EN 0x00000008
++/** LAN2I sleep request
++    Interrupt enable bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSEN_LAN2ISR 0x00000004
++/* Disable
++#define SYS_GPE_IRNCSEN_LAN2ISR_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_IRNCSEN_LAN2ISR_EN 0x00000004
++/** LAN1I sleep request
++    Interrupt enable bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSEN_LAN1ISR 0x00000002
++/* Disable
++#define SYS_GPE_IRNCSEN_LAN1ISR_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_IRNCSEN_LAN1ISR_EN 0x00000002
++/** LAN0I sleep request
++    Interrupt enable bit for the corresponding bit in the IRNCSCR register. */
++#define SYS_GPE_IRNCSEN_LAN0ISR 0x00000001
++/* Disable
++#define SYS_GPE_IRNCSEN_LAN0ISR_DIS 0x00000000 */
++/** Enable */
++#define SYS_GPE_IRNCSEN_LAN0ISR_EN 0x00000001
++
++/*! @} */ /* SYS_GPE_REGISTER */
++
++#endif /* _sys_gpe_reg_h */
+--- /dev/null
++++ b/arch/mips/include/asm/mach-lantiq/falcon/sysctrl.h
+@@ -0,0 +1,42 @@
++/*
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 of
++ * the License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ *
++ * Copyright (C) 2010 Thomas Langer, Lantiq Deutschland
++ */
++
++#ifndef __FALCON_SYSCTRL_H
++#define __FALCON_SYSCTRL_H
++
++extern void sys1_hw_activate(u32 mask);
++extern void sys1_hw_deactivate(u32 mask);
++extern void sys1_hw_clk_enable(u32 mask);
++extern void sys1_hw_clk_disable(u32 mask);
++extern void sys1_hw_activate_or_reboot(u32 mask);
++
++extern void sys_eth_hw_activate(u32 mask);
++extern void sys_eth_hw_deactivate(u32 mask);
++extern void sys_eth_hw_clk_enable(u32 mask);
++extern void sys_eth_hw_clk_disable(u32 mask);
++extern void sys_eth_hw_activate_or_reboot(u32 mask);
++
++extern void sys_gpe_hw_activate(u32 mask);
++extern void sys_gpe_hw_deactivate(u32 mask);
++extern void sys_gpe_hw_clk_enable(u32 mask);
++extern void sys_gpe_hw_clk_disable(u32 mask);
++extern void sys_gpe_hw_activate_or_reboot(u32 mask);
++extern int sys_gpe_hw_is_activated(u32 mask);
++
++#endif /* __FALCON_SYSCTRL_H */
+--- a/arch/mips/include/asm/mach-lantiq/lantiq_regs.h
++++ b/arch/mips/include/asm/mach-lantiq/lantiq_regs.h
+@@ -12,6 +12,9 @@
+ #ifdef CONFIG_SOC_LANTIQ_XWAY
+ #include <xway.h>
+ #include <xway_irq.h>
++#elif defined(CONFIG_SOC_LANTIQ_FALCON)
++#include <lantiq_falcon.h>
++#include <lantiq_falcon_irq.h>
+ #endif
+ #endif
+--- /dev/null
++++ b/arch/mips/include/asm/mach-lantiq/falcon/cpu-feature-overrides.h
+@@ -0,0 +1,58 @@
++/*
++ *  Lantiq FALCON specific CPU feature overrides
++ *
++ *  Copyright (C) 2010 Thomas Langer, Lantiq Deutschland
++ *
++ *  This file was derived from: include/asm-mips/cpu-features.h
++ *    Copyright (C) 2003, 2004 Ralf Baechle
++ *    Copyright (C) 2004 Maciej W. Rozycki
++ *
++ *  This program is free software; you can redistribute it and/or modify it
++ *  under the terms of the GNU General Public License version 2 as published
++ *  by the Free Software Foundation.
++ *
++ */
++#ifndef __ASM_MACH_FALCON_CPU_FEATURE_OVERRIDES_H
++#define __ASM_MACH_FALCON_CPU_FEATURE_OVERRIDES_H
++
++#define cpu_has_tlb           1
++#define cpu_has_4kex          1
++#define cpu_has_3k_cache      0
++#define cpu_has_4k_cache      1
++#define cpu_has_tx39_cache    0
++#define cpu_has_sb1_cache     0
++#define cpu_has_fpu           0
++#define cpu_has_32fpr         0
++#define cpu_has_counter               1
++#define cpu_has_watch         1
++#define cpu_has_divec         1
++
++#define cpu_has_prefetch      1
++#define cpu_has_ejtag         1
++#define cpu_has_llsc          1
++
++#define cpu_has_mips16                1
++#define cpu_has_mdmx          0
++#define cpu_has_mips3d                0
++#define cpu_has_smartmips     0
++
++#define cpu_has_mips32r1      1
++#define cpu_has_mips32r2      1
++#define cpu_has_mips64r1      0
++#define cpu_has_mips64r2      0
++
++#define cpu_has_dsp           1
++#define cpu_has_mipsmt                1
++
++#define cpu_has_vint          1
++#define cpu_has_veic          1
++
++#define cpu_has_64bits                0
++#define cpu_has_64bit_zero_reg        0
++#define cpu_has_64bit_gp_regs 0
++#define cpu_has_64bit_addresses       0
++
++#define cpu_dcache_line_size()        32
++#define cpu_icache_line_size()        32
++
++#endif /* __ASM_MACH_FALCON_CPU_FEATURE_OVERRIDES_H */
+--- /dev/null
++++ b/arch/mips/include/asm/mach-lantiq/falcon/ebu_reg.h
+@@ -0,0 +1,1520 @@
++/******************************************************************************
++
++                               Copyright (c) 2010
++                            Lantiq Deutschland GmbH
++
++  For licensing information, see the file 'LICENSE' in the root folder of
++  this software module.
++
++******************************************************************************/
++
++#ifndef _ebu_reg_h
++#define _ebu_reg_h
++
++/** \addtogroup EBU_REGISTER
++   @{
++*/
++/* access macros */
++#define ebu_r32(reg) reg_r32(&ebu->reg)
++#define ebu_w32(val, reg) reg_w32(val, &ebu->reg)
++#define ebu_w32_mask(clear, set, reg) reg_w32_mask(clear, set, &ebu->reg)
++#define ebu_r32_table(reg, idx) reg_r32_table(ebu->reg, idx)
++#define ebu_w32_table(val, reg, idx) reg_w32_table(val, ebu->reg, idx)
++#define ebu_w32_table_mask(clear, set, reg, idx) reg_w32_table_mask(clear, set, ebu->reg, idx)
++#define ebu_adr_table(reg, idx) adr_table(ebu->reg, idx)
++
++
++/** EBU register structure */
++struct gpon_reg_ebu
++{
++   /** Reserved */
++   unsigned int res_0[2]; /* 0x00000000 */
++   /** Module ID Register
++       Module type and version identifier */
++   unsigned int modid; /* 0x00000008 */
++   /** Module Control Register
++       This register contains general configuration information observed for all CS regions or dealing with EBU functionality that is not directly related to external memory access. */
++   unsigned int modcon; /* 0x0000000C */
++   /** Bus Read Configuration Register0
++       Note: The actual length of field enable depends on the number of bus ports connected to the EBU. For the GPON it is a single port (the bridge to the Asynchronous Xbar) so only bit 0 is implemented with all other bits tied to '0'. */
++   unsigned int busrcon0; /* 0x00000010 */
++   /** Bus Read Parameters Register0 */
++   unsigned int busrp0; /* 0x00000014 */
++   /** Bus Write Configuration Register0
++       Note: The actual length of field enable depends on the number of bus ports connected to the EBU. For the GPON it is a single port (the bridge to the Asynchronous Xbar) so only bit 0 is implemented with all other bits tied to '0'. */
++   unsigned int buswcon0; /* 0x00000018 */
++   /** Bus Write Parameters Register0 */
++   unsigned int buswp0; /* 0x0000001C */
++   /** Bus Read Configuration Register1
++       Note: The actual length of field enable depends on the number of bus ports connected to the EBU. For the GPON it is a single port (the bridge to the Asynchronous Xbar) so only bit 0 is implemented with all other bits tied to '0'. */
++   unsigned int busrcon1; /* 0x00000020 */
++   /** Bus Read Parameters Register1 */
++   unsigned int busrp1; /* 0x00000024 */
++   /** Bus Write Configuration Register1
++       Note: The actual length of field enable depends on the number of bus ports connected to the EBU. For the GPON it is a single port (the bridge to the Asynchronous Xbar) so only bit 0 is implemented with all other bits tied to '0'. */
++   unsigned int buswcon1; /* 0x00000028 */
++   /** Bus Write Parameters Register1 */
++   unsigned int buswp1; /* 0x0000002C */
++   /** Reserved */
++   unsigned int res_1[8]; /* 0x00000030 */
++   /** Bus Protocol Configuration Extension Register 0 */
++   unsigned int busconext0; /* 0x00000050 */
++   /** Bus Protocol Configuration Extension Register 1 */
++   unsigned int busconext1; /* 0x00000054 */
++   /** Reserved */
++   unsigned int res_2[10]; /* 0x00000058 */
++   /** Serial Flash Configuration Register
++       The content of this register configures the EBU's Serial Flash protocol engine. */
++   unsigned int sfcon; /* 0x00000080 */
++   /** Serial Flash Timing Register
++       This register defines the signal timing for the Serial Flash Access. See Section 3.18.3 on page 112 for details. */
++   unsigned int sftime; /* 0x00000084 */
++   /** Serial Flash Status Register
++       This register holds status information on the Serial Flash device(s) attached and the EBU's Serial Flash protocol engine. */
++   unsigned int sfstat; /* 0x00000088 */
++   /** Serial Flash Command Register
++       When writing to this register's opcode field, a command is started in the EBU's Serial Flash controller. */
++   unsigned int sfcmd; /* 0x0000008C */
++   /** Serial Flash Address Register
++       This register holds the address to be sent (if any) with accesses to/from a Serial Flash started by writing to EBU_SFCMD (Indirect Access Mode, see Section 3.18.2.4.1 on page 103). */
++   unsigned int sfaddr; /* 0x00000090 */
++   /** Serial Flash Data Register
++       This register holds the data being transferred (if any) with accesses to/from a Serial Flash started by writing to EBU_SFCMD (Indirect Access Mode, see Section 4.18.2.4.1 on page 116). */
++   unsigned int sfdata; /* 0x00000094 */
++   /** Serial Flash I/O Control Register
++       This register provides additional configuration for controlling the IO pads of the Serial Flash interface. */
++   unsigned int sfio; /* 0x00000098 */
++   /** Reserved */
++   unsigned int res_3[25]; /* 0x0000009C */
++};
++
++
++/* Fields of "Module ID Register" */
++/** Feature Select
++    This field indicates the types of external devices/protocols supported by the GPON version of the EBU. */
++#define MODID_FSEL_MASK 0xE0000000
++/** field offset */
++#define MODID_FSEL_OFFSET 29
++/** Support for SRAM, NAND/NOR/OneNand Flash and Cellular RAM is implemented. */
++#define MODID_FSEL_SRAM_FLASH_CRAM 0x00000000
++/** Support for SRAM, NAND/NOR/OneNand Flash, Cellular RAM and SDR SDRAM is implemented. */
++#define MODID_FSEL_SRAM_FLASH_CRAM_SDR 0x20000000
++/** Support for SRAM, NAND/NOR/OneNand Flash, Cellular RAM and SDR/DDR SDRAM is implemented. */
++#define MODID_FSEL_SRAM_FLASH_CRAM_DDR 0x40000000
++/** Support for SRAM, NAND/NOR/OneNand Flash, Cellular RAM, SDR/DDR SDRAM 0nd LPDDR-Flash is implemented. */
++#define MODID_FSEL_SRAM_FLASH_CRAM_DDR_LPNVM 0x60000000
++/** Serial Flash Support
++    Indicates whether or not the support of Serial Flash devices is available. */
++#define MODID_SF 0x10000000
++/* Not Available
++#define MODID_SF_NAV 0x00000000 */
++/** Available */
++#define MODID_SF_AV 0x10000000
++/** AAD-mux Support
++    Indicates whether or not the GPON EBU supports AAD-mux protocol for Burst Flash and Cellular RAM. */
++#define MODID_AAD 0x08000000
++/* Not Available
++#define MODID_AAD_NAV 0x00000000 */
++/** Available */
++#define MODID_AAD_AV 0x08000000
++/** Indicates whether or not the GPON EBU implements a DLL which is e.g. used for 50% duty cycle external clock generation. Note that a DLL is always implemented if DDR-SDRAM support is selected. */
++#define MODID_DLL 0x04000000
++/* Not Available
++#define MODID_DLL_NAV 0x00000000 */
++/** Available */
++#define MODID_DLL_AV 0x04000000
++/** Pad Multiplexing Scheme */
++#define MODID_PMS_MASK 0x03000000
++/** field offset */
++#define MODID_PMS_OFFSET 24
++/** The EBU comprises of dedicated address pins A[EXTAW-1=:16]. */
++#define MODID_PMS_PMS_CLASSIC 0x00000000
++/** Revision
++    Revision Number */
++#define MODID_REV_MASK 0x000F0000
++/** field offset */
++#define MODID_REV_OFFSET 16
++/** Module ID
++    This field contains the EBU's unique peripheral ID. */
++#define MODID_ID_MASK 0x0000FF00
++/** field offset */
++#define MODID_ID_OFFSET 8
++/** Version
++    This field gives the EBU version number. */
++#define MODID_VERSION_MASK 0x000000FF
++/** field offset */
++#define MODID_VERSION_OFFSET 0
++
++/* Fields of "Module Control Register" */
++/** Reserved */
++#define MODCON_DLLUPDINT_MASK 0xC0000000
++/** field offset */
++#define MODCON_DLLUPDINT_OFFSET 30
++/** Access Inhibit Acknowledge
++    After suspension of all accesses to the External Bus has been requested by setting bit acc_inh, acc_inh_ack acknowledges the request and inidcates that access suspension is now in effect. The bit is cleared when acc_inh gets deasserted. */
++#define MODCON_AIA 0x02000000
++/* no access restriction are active in the EBU subsystem
++#define MODCON_AIA_NO_INHIBIT 0x00000000 */
++/** accesses are restricted to selected (configuration) system bus port(s) */
++#define MODCON_AIA_INHIBIT 0x02000000
++/** Access Inhibit request
++    Setting this bit will suspend all non-CPU system bus ports and the EBU itself from accessing the External Bus. This feature is usually used when the CPU needs to reconfigure protocol parameters in the EBU in order to avoid external accesses with invalid settings. The EBU acknowledges that the access suspension is in effect by asserting acc_inh_ack. */
++#define MODCON_AI 0x01000000
++/* no access restriction are active in the EBU subsystem
++#define MODCON_AI_NO_INHIBIT 0x00000000 */
++/** accesses are restricted to selected (configuration) system bus port(s) */
++#define MODCON_AI_INHIBIT 0x01000000
++/** Lock Timeout */
++#define MODCON_LTO_MASK 0x00FF0000
++/** field offset */
++#define MODCON_LTO_OFFSET 16
++/** Reserved */
++#define MODCON_DDREN 0x00008000
++/** Pad Drive Control
++    Intended to be used to control the EBU pad''s drive strength. Refer to the GPON chip specification to see which drive strnegth options are available and whether they are actually controlled by the EBU's register bit. The value stored in this register bit is directly connected to the corresponding output of the EBU module and takes no functional effect within the EBU itself. */
++#define MODCON_PEXT 0x00004000
++/* Normal drive
++#define MODCON_PEXT_NORMAL 0x00000000 */
++/** Strong drive */
++#define MODCON_PEXT_STRONG 0x00004000
++/** Pad Slew Falling Edge Control
++    Intended to be used to trim the External Bus pad's falling edge slew rate. Refer to the GPON chip specification to see which slew rate options are available and whether they are actually controlled by the EBU's register bit. The value stored in this register bit is directly connected to the corresponding output of the EBU module and takes no functional effect within the EBU itself. */
++#define MODCON_SLF 0x00002000
++/* Slow slew rate
++#define MODCON_SLF_SLOW 0x00000000 */
++/** Fast slew rate */
++#define MODCON_SLF_FAST 0x00002000
++/** Pad Slew Rising Edge Control
++    Intended to be used to trim the External Bus pad's rising edge slew rate. Refer to the GPON chip specification to see which slew rate options are available and whether they are actually controlled by the EBU's register bit. The value stored in this register bit is directly connected to the corresponding output of the EBU module and takes no functional effect within the EBU itself. */
++#define MODCON_SLR 0x00001000
++/* Slow slew rate
++#define MODCON_SLR_SLOW 0x00000000 */
++/** Fast slew rate */
++#define MODCON_SLR_FAST 0x00001000
++/** Write Buffering Mode
++    This bit controls when the EBU starts a new write burst transaction from the Memport interface. */
++#define MODCON_WBM 0x00000040
++/* The EBU starts a write transaction on the External Bus as early as possible, expecting that the n beats of the write burst will be transferred within n or n+1 clock cycles over the EBU's Memport interface. Use this mode if the EBU is clocked at the same or a slower frequency than the system bus interconnect.
++#define MODCON_WBM_START_WRITE_EARLY 0x00000000 */
++/** The EBU start a write transaction only after all data of a write burst have been received over the EBU's Memport interface. Use this mode if the EBU is clocked at a higher frequency than the system bus interrconnect. */
++#define MODCON_WBM_START_WRITE_LATE 0x00000040
++/** Reserved */
++#define MODCON_SDCLKEN 0x00000020
++/** Standby Mode Enable
++    When set allows the EBU subsystem to enter standby mode in response to a rising edge on input signal standby_req_i. See Section 3.9.3 for details. */
++#define MODCON_STBYEN 0x00000010
++/* Disable
++#define MODCON_STBYEN_DIS 0x00000000 */
++/** Enable */
++#define MODCON_STBYEN_EN 0x00000010
++/** Enable BFCLK1
++    This field will enables or disables mirroring the clock that is output on BFCLKO_0 also on pad BFCLKO_1 to double the drive strength. See also Section 3.17.3) */
++#define MODCON_BFCLK1EN 0x00000008
++/* Disable
++#define MODCON_BFCLK1EN_DIS 0x00000000 */
++/** Enable */
++#define MODCON_BFCLK1EN_EN 0x00000008
++/** Ready/Busy Status Edge
++    This is a read-only bit which shows a change of the logic level shown in the sts field since last read. It is reset by a read access. */
++#define MODCON_STSEDGE 0x00000004
++/** Ready/Busy Status
++    This is a read-only bit which reflects the current logic level present on the RDY/BSY or STS input pin which is (optionally) fed-in from a General Purpose I/O pad which is not part of the EBU via the EBU's input pin signal gpio_nand_rdy_ */
++#define MODCON_STS 0x00000002
++/** External Bus Arbitration Mode
++    This bit allows to disconnect the EBU from the External Bus. While EBU_MODCON.acc_inh_ack is 0, the value of arb_mode is forced to OWN_BUS. */
++#define MODCON_AM 0x00000001
++/* The EBU does not own the bus (multi-master)
++#define MODCON_AM_SHAREDBUS 0x00000000 */
++/** The EBU owns the external bus. */
++#define MODCON_AM_OWNBUS 0x00000001
++
++/* Fields of "Bus Read Configuration Register0" */
++/** Device Type For Region
++    After reset, the CS region is configured for a slow Asynchronous access protocol which is compatible with read access from an external multiplexed or demultiplexed 16-Bit Burst Flash in asynchronous mode. Reset: 0000B */
++#define BUSRCON0_AGEN_MASK 0xF0000000
++/** field offset */
++#define BUSRCON0_AGEN_OFFSET 28
++/** Muxed Asynchronous Type External Memory */
++#define BUSRCON0_AGEN_MUXED_ASYNC_TYPE_EXT_MEM 0x00000000
++/** Muxed Burst Type External Memory */
++#define BUSRCON0_AGEN_MUXED_BURST_TYPE_EXT_MEM 0x10000000
++/** NAND Flash (page optimised) */
++#define BUSRCON0_AGEN_NAND_FLASH 0x20000000
++/** Muxed Cellular RAM External Memory */
++#define BUSRCON0_AGEN_MUXED_CELLULAR_RAM_EXT_MEM 0x30000000
++/** Demuxed Asynchronous Type External Memory */
++#define BUSRCON0_AGEN_DEMUXED_ASYNC_TYPE_EXT_MEM 0x40000000
++/** Demuxed Burst Type External Memory */
++#define BUSRCON0_AGEN_DEMUXED_BURST_TYPE_EXT_MEM 0x50000000
++/** Demuxed Page Mode External Memory */
++#define BUSRCON0_AGEN_DEMUXED_PAGE_MODE_EXT_MEM 0x60000000
++/** Demuxed Cellular RAM External Memory */
++#define BUSRCON0_AGEN_DEMUXED_CELLULAR_RAM_EXT_MEM 0x70000000
++/** Serial Flash */
++#define BUSRCON0_AGEN_SERIAL_FLASH 0xF0000000
++/** Device Addressing Mode
++    t.b.d. */
++#define BUSRCON0_PORTW_MASK 0x0C000000
++/** field offset */
++#define BUSRCON0_PORTW_OFFSET 26
++/** 8-bit multiplexed */
++#define BUSRCON0_PORTW_8_BIT_MUX 0x00000000
++/** 16-bit multiplexed */
++#define BUSRCON0_PORTW_16_BIT_MUX 0x04000000
++/** Twin, 16-bit multiplexed */
++#define BUSRCON0_PORTW_TWIN_16_BIT_MUX 0x08000000
++/** 32-bit multiplexed */
++#define BUSRCON0_PORTW_32_BIT_MUX 0x0C000000
++/** External Wait Control
++    Function of the WAIT input. This is specific to the device type (i.e. the agen field). */
++#define BUSRCON0_WAIT_MASK 0x03000000
++/** field offset */
++#define BUSRCON0_WAIT_OFFSET 24
++/** WAIT is ignored (default after reset). */
++#define BUSRCON0_WAIT_OFF 0x00000000
++/** Synchronous Burst Devices: WAIT signal is provided one cycle ahead of the data cycle it applies to. */
++#define BUSRCON0_WAIT_EARLY_WAIT 0x01000000
++/** Asynchronous Devices: WAIT input passes through a two-stage synchronizer before being evaluated. */
++#define BUSRCON0_WAIT_TWO_STAGE_SYNC 0x01000000
++/** Synchronous Burst Devices: WAIT signal is provided in the same data cycle it applies to. */
++#define BUSRCON0_WAIT_WAIT_WITH_DATA 0x02000000
++/** Asynchronous Devices: WAIT input passes through a single-stage synchronizer before being evaluated. */
++#define BUSRCON0_WAIT_SINGLE_STAGE_SYNC 0x02000000
++/** Synchronous Burst Devices: Abort and retry access if WAIT asserted */
++#define BUSRCON0_WAIT_ABORT_AND_RETRY 0x03000000
++/** Disable Burst Address Wrapping */
++#define BUSRCON0_DBA 0x00800000
++/** Reversed polarity at wait */
++#define BUSRCON0_WAITINV 0x00400000
++/* Low active.
++#define BUSRCON0_WAITINV_ACTLOW 0x00000000 */
++/** High active */
++#define BUSRCON0_WAITINV_ACTHI 0x00400000
++/** Early ADV Enable for Synchronous Bursts */
++#define BUSRCON0_EBSE 0x00200000
++/* Low active.
++#define BUSRCON0_EBSE_DELAYED 0x00000000 */
++/** High active */
++#define BUSRCON0_EBSE_NOT_DELAYED 0x00200000
++/** Early Control Signals for Synchronous Bursts */
++#define BUSRCON0_ECSE 0x00100000
++/* Low active.
++#define BUSRCON0_ECSE_DELAYED 0x00000000 */
++/** High active */
++#define BUSRCON0_ECSE_NOT_DELAYED 0x00100000
++/** Synchronous Burst Buffer Mode Select */
++#define BUSRCON0_FBBMSEL 0x00080000
++/* FIXED_LENGTH
++#define BUSRCON0_FBBMSEL_FIXED_LENGTH 0x00000000 */
++/** CONTINUOUS */
++#define BUSRCON0_FBBMSEL_CONTINUOUS 0x00080000
++/** Burst Length for Synchronous Burst */
++#define BUSRCON0_FETBLEN_MASK 0x00070000
++/** field offset */
++#define BUSRCON0_FETBLEN_OFFSET 16
++/** Up to 1 data cycle (default after reset). */
++#define BUSRCON0_FETBLEN_SINGLE 0x00000000
++/** Up to 2 data cycles. */
++#define BUSRCON0_FETBLEN_BURST2 0x00010000
++/** Up to 4 data cycles. */
++#define BUSRCON0_FETBLEN_BURST4 0x00020000
++/** Up to 8 data cycles. */
++#define BUSRCON0_FETBLEN_BURST8 0x00030000
++/** Up to 16 data cycles. */
++#define BUSRCON0_FETBLEN_BURST16 0x00040000
++/** Reserved
++    This field allows to configure how the EBU generates the CLE and ALE signals for a NAND Flash device. The following options are available */
++#define BUSRCON0_NANDAMAP_MASK 0x0000C000
++/** field offset */
++#define BUSRCON0_NANDAMAP_OFFSET 14
++/** is taken from AMemport[18] and ALE from AMemport[17] and are output on pins A[17:16] on the External Bus (default after reset). */
++#define BUSRCON0_NANDAMAP_NAND_A17_16 0x00000000
++/** is taken from AMemport[18] and ALE from AMemport[17] and are output on pins A[17:16] on the External Bus (default after reset). */
++#define BUSRCON0_NANDAMAP_NAND_WAIT_ADV 0x00004000
++/** CLE is taken from AMemport[18] and ALE from AMemport[17] and are output on pins AD[9:8] and A[9:8] on the External Bus. This mode may only be used with a 8-Bit NAND-Flash device. */
++#define BUSRCON0_NANDAMAP_NAND_AD9_8 0x00008000
++/** Reserved for future use. Do not use or unpredictable results may occur. */
++#define BUSRCON0_NANDAMAP_NAND_RFU 0x0000C000
++/** AAD-mux Protocol
++    If this bit is set and the device is configured for a multiplexed access protocol in agen then the device is accessed in read mode using the AAD-mux protocol. If a non-multiplexed device type is selected in agen, field aadmux is ignored. */
++#define BUSRCON0_AADMUX 0x00002000
++/* Muxed device is write accessed in AD-mux mode.
++#define BUSRCON0_AADMUX_AD_MUX 0x00000000 */
++/** Muxed device is write accessed in AAD-mux mode. */
++#define BUSRCON0_AADMUX_AAD_MUX 0x00002000
++/** Asynchronous Address Phase */
++#define BUSRCON0_AAP 0x00001000
++/* Clock is enabled at beginning of access.
++#define BUSRCON0_AAP_EARLY 0x00000000 */
++/** Clock is enabled after address phase. */
++#define BUSRCON0_AAP_LATE 0x00001000
++/** Burst Flash Read Single Stage Synchronisation */
++#define BUSRCON0_BFSSS 0x00000800
++/* Two stages of synchronisation used.
++#define BUSRCON0_BFSSS_TWO_STAGE 0x00000000 */
++/** Single stage of synchronisation used. */
++#define BUSRCON0_BFSSS_SINGLE_STAGE 0x00000800
++/** Burst Flash Clock Feedback Enable */
++#define BUSRCON0_FDBKEN 0x00000400
++/* Disable
++#define BUSRCON0_FDBKEN_DIS 0x00000000 */
++/** Enable */
++#define BUSRCON0_FDBKEN_EN 0x00000400
++/** Auxiliary Chip Select Enable
++    Not supported in GPON-EBU, field must be set to 0. */
++#define BUSRCON0_CSA 0x00000200
++/* Disable
++#define BUSRCON0_CSA_DIS 0x00000000 */
++/** Enable */
++#define BUSRCON0_CSA_EN 0x00000200
++/** Flash Non-Array Access Enable
++    Set to logic one to enable workaround when region is accessed with internal address bit 28 set. See Section 3.17.13 on page 90 for details. */
++#define BUSRCON0_NAA 0x00000100
++/* Disable
++#define BUSRCON0_NAA_DIS 0x00000000 */
++/** Enable */
++#define BUSRCON0_NAA_EN 0x00000100
++/** Module Enable */
++#define BUSRCON0_ENABLE 0x00000001
++/* Disable
++#define BUSRCON0_ENABLE_DIS 0x00000000 */
++/** Enable */
++#define BUSRCON0_ENABLE_EN 0x00000001
++
++/* Fields of "Bus Read Parameters Register0" */
++/** Address Cycles
++    Number of cycles for address phase. */
++#define BUSRP0_ADDRC_MASK 0xF0000000
++/** field offset */
++#define BUSRP0_ADDRC_OFFSET 28
++/** Address Hold Cycles For Multiplexed Address
++    Number of address hold cycles during multiplexed accesses. */
++#define BUSRP0_ADHOLC_MASK 0x0F000000
++/** field offset */
++#define BUSRP0_ADHOLC_OFFSET 24
++/** Programmed Command Delay Cycles
++    Number of delay cycles during command delay phase. */
++#define BUSRP0_CMDDELAY_MASK 0x00F00000
++/** field offset */
++#define BUSRP0_CMDDELAY_OFFSET 20
++/** Extended Data */
++#define BUSRP0_EXTDATA_MASK 0x000C0000
++/** field offset */
++#define BUSRP0_EXTDATA_OFFSET 18
++/** External device outputs data every BFCLK cycle */
++#define BUSRP0_EXTDATA_ONE 0x00000000
++/** External device outputs data every 2nd BFCLK cycles */
++#define BUSRP0_EXTDATA_TWO 0x00040000
++/** External device outputs data every 4th BFCLK cycles */
++#define BUSRP0_EXTDATA_FOUR 0x00080000
++/** External device outputs data every 8th BFCLK cycles */
++#define BUSRP0_EXTDATA_EIGHT 0x000C0000
++/** Frequency of external clock at pin BFCLKO */
++#define BUSRP0_EXTCLOCK_MASK 0x00030000
++/** field offset */
++#define BUSRP0_EXTCLOCK_OFFSET 16
++/** Equal to ebu_clk frequency. */
++#define BUSRP0_EXTCLOCK_ONE_TO_ONE 0x00000000
++/** 1/2 of ebu_clk frequency. */
++#define BUSRP0_EXTCLOCK_ONE_TO_TWO 0x00010000
++/** 1/3 of ebu_clk frequency. */
++#define BUSRP0_EXTCLOCK_ONE_TO_THREE 0x00020000
++/** 1/4 of ebu_clk frequency (default after reset). */
++#define BUSRP0_EXTCLOCK_ONE_TO_FOUR 0x00030000
++/** Data Hold Cycles For read Accesses
++    Number of data hold cycles during read accesses. Applies to spinner support only where the address is guaranteed stable for datac clocks after RD high */
++#define BUSRP0_DATAC_MASK 0x0000F000
++/** field offset */
++#define BUSRP0_DATAC_OFFSET 12
++/** Programmed Wait States for read accesses
++    Number of programmed wait states for read accesses. For synchronous accesses, this will always be adjusted so that the phase exits on a rising edge of the external clock. */
++#define BUSRP0_WAITRDC_MASK 0x00000F80
++/** field offset */
++#define BUSRP0_WAITRDC_OFFSET 7
++/** Recovery Cycles After read Accesses, same CS
++    Number of idle cycles after read accesses when the next access is to the same chip select. For synchronous accesses, this will always be adjusted so that the phase exits on a rising clock edge. Note that at least one recovery cycle must be programmed in case the region is configured for delayed control signals in field ecse of register EBU_BUSRCON. */
++#define BUSRP0_RECOVC_MASK 0x00000070
++/** field offset */
++#define BUSRP0_RECOVC_OFFSET 4
++/** Recovery Cycles After read Accesses, other CS
++    Number of idle cycles after read accesses when the next access is to a different chip select. For synchronous accesses, this will always be adjusted so that the phase exits on a rising clock edge. Note that at least one recovery cycle must be programmed in case the region is configured for delayed control signals in field ecse of register EBU_BUSRCON. */
++#define BUSRP0_DTACS_MASK 0x0000000F
++/** field offset */
++#define BUSRP0_DTACS_OFFSET 0
++
++/* Fields of "Bus Write Configuration Register0" */
++/** Device Type For Region
++    After reset, the CS region is configured for a slow Asynchronous access protocol which is compatible with read access from an external multiplexed or demultiplexed 16-Bit Burst Flash in asynchronous mode. Reset: 0000B */
++#define BUSWCON0_AGEN_MASK 0xF0000000
++/** field offset */
++#define BUSWCON0_AGEN_OFFSET 28
++/** Muxed Asynchronous Type External Memory */
++#define BUSWCON0_AGEN_MUXED_ASYNC_TYPE_EXT_MEM 0x00000000
++/** Muxed Burst Type External Memory */
++#define BUSWCON0_AGEN_MUXED_BURST_TYPE_EXT_MEM 0x10000000
++/** NAND Flash (page optimised) */
++#define BUSWCON0_AGEN_NAND_FLASH 0x20000000
++/** Muxed Cellular RAM External Memory */
++#define BUSWCON0_AGEN_MUXED_CELLULAR_RAM_EXT_MEM 0x30000000
++/** Demuxed Asynchronous Type External Memory */
++#define BUSWCON0_AGEN_DEMUXED_ASYNC_TYPE_EXT_MEM 0x40000000
++/** Demuxed Burst Type External Memory */
++#define BUSWCON0_AGEN_DEMUXED_BURST_TYPE_EXT_MEM 0x50000000
++/** Demuxed Page Mode External Memory */
++#define BUSWCON0_AGEN_DEMUXED_PAGE_MODE_EXT_MEM 0x60000000
++/** Demuxed Cellular RAM External Memory */
++#define BUSWCON0_AGEN_DEMUXED_CELLULAR_RAM_EXT_MEM 0x70000000
++/** Serial Flash */
++#define BUSWCON0_AGEN_SERIAL_FLASH 0xF0000000
++/** Device Addressing Mode
++    t.b.d. */
++#define BUSWCON0_PORTW_MASK 0x0C000000
++/** field offset */
++#define BUSWCON0_PORTW_OFFSET 26
++/** External Wait Control
++    Function of the WAIT input. This is specific to the device type (i.e. the agen field). */
++#define BUSWCON0_WAIT_MASK 0x03000000
++/** field offset */
++#define BUSWCON0_WAIT_OFFSET 24
++/** WAIT is ignored (default after reset). */
++#define BUSWCON0_WAIT_OFF 0x00000000
++/** Synchronous Burst Devices: WAIT signal is provided one cycle ahead of the data cycle it applies to. */
++#define BUSWCON0_WAIT_EARLY_WAIT 0x01000000
++/** Asynchronous Devices: WAIT input passes through a two-stage synchronizer before being evaluated. */
++#define BUSWCON0_WAIT_TWO_STAGE_SYNC 0x01000000
++/** Synchronous Burst Devices: WAIT signal is provided in the same data cycle it applies to. */
++#define BUSWCON0_WAIT_WAIT_WITH_DATA 0x02000000
++/** Asynchronous Devices: WAIT input passes through a single-stage synchronizer before being evaluated. */
++#define BUSWCON0_WAIT_SINGLE_STAGE_SYNC 0x02000000
++/** Synchronous Burst Devices: Abort and retry access if WAIT asserted */
++#define BUSWCON0_WAIT_ABORT_AND_RETRY 0x03000000
++/** Reserved */
++#define BUSWCON0_LOCKCS 0x00800000
++/** Reversed polarity at wait */
++#define BUSWCON0_WAITINV 0x00400000
++/* Low active.
++#define BUSWCON0_WAITINV_ACTLOW 0x00000000 */
++/** High active */
++#define BUSWCON0_WAITINV_ACTHI 0x00400000
++/** Early ADV Enable for Synchronous Bursts */
++#define BUSWCON0_EBSE 0x00200000
++/* Low active.
++#define BUSWCON0_EBSE_DELAYED 0x00000000 */
++/** High active */
++#define BUSWCON0_EBSE_NOT_DELAYED 0x00200000
++/** Early Control Signals for Synchronous Bursts */
++#define BUSWCON0_ECSE 0x00100000
++/* Low active.
++#define BUSWCON0_ECSE_DELAYED 0x00000000 */
++/** High active */
++#define BUSWCON0_ECSE_NOT_DELAYED 0x00100000
++/** Synchronous Burst Buffer Mode Select */
++#define BUSWCON0_FBBMSEL 0x00080000
++/* FIXED_LENGTH
++#define BUSWCON0_FBBMSEL_FIXED_LENGTH 0x00000000 */
++/** CONTINUOUS */
++#define BUSWCON0_FBBMSEL_CONTINUOUS 0x00080000
++/** Burst Length for Synchronous Burst */
++#define BUSWCON0_FETBLEN_MASK 0x00070000
++/** field offset */
++#define BUSWCON0_FETBLEN_OFFSET 16
++/** Up to 1 data cycle (default after reset). */
++#define BUSWCON0_FETBLEN_SINGLE 0x00000000
++/** Up to 2 data cycles. */
++#define BUSWCON0_FETBLEN_BURST2 0x00010000
++/** Up to 4 data cycles. */
++#define BUSWCON0_FETBLEN_BURST4 0x00020000
++/** Up to 8 data cycles. */
++#define BUSWCON0_FETBLEN_BURST8 0x00030000
++/** Up to 16 data cycles. */
++#define BUSWCON0_FETBLEN_BURST16 0x00040000
++/** Reserved
++    This field allows to configure how the EBU generates the CLE and ALE signals for a NAND Flash device. The following options are available */
++#define BUSWCON0_NANDAMAP_MASK 0x0000C000
++/** field offset */
++#define BUSWCON0_NANDAMAP_OFFSET 14
++/** is taken from AMemport[18] and ALE from AMemport[17] and are output on pins A[17:16] on the External Bus (default after reset). */
++#define BUSWCON0_NANDAMAP_NAND_A17_16 0x00000000
++/** is taken from AMemport[18] and ALE from AMemport[17] and are output on pins A[17:16] on the External Bus (default after reset). */
++#define BUSWCON0_NANDAMAP_NAND_WAIT_ADV 0x00004000
++/** CLE is taken from AMemport[18] and ALE from AMemport[17] and are output on pins AD[9:8] and A[9:8] on the External Bus. This mode may only be used with a 8-Bit NAND-Flash device. */
++#define BUSWCON0_NANDAMAP_NAND_AD9_8 0x00008000
++/** Reserved for future use. Do not use or unpredictable results may occur. */
++#define BUSWCON0_NANDAMAP_NAND_RFU 0x0000C000
++/** AAD-mux Protocol
++    If this bit is set and the device is configured for a multiplexed access protocol in agen then the device is accessed in read mode using the AAD-mux protocol. If a non-multiplexed device type is selected in agen, field aadmux is ignored. */
++#define BUSWCON0_AADMUX 0x00002000
++/* Muxed device is write accessed in AD-mux mode.
++#define BUSWCON0_AADMUX_AD_MUX 0x00000000 */
++/** Muxed device is write accessed in AAD-mux mode. */
++#define BUSWCON0_AADMUX_AAD_MUX 0x00002000
++/** Asynchronous Address Phase */
++#define BUSWCON0_AAP 0x00001000
++/* Clock is enabled at beginning of access.
++#define BUSWCON0_AAP_EARLY 0x00000000 */
++/** Clock is enabled after address phase. */
++#define BUSWCON0_AAP_LATE 0x00001000
++/** Auxiliary Chip Select Enable
++    Not supported in GPON-EBU, field must be set to 0. */
++#define BUSWCON0_CSA 0x00000200
++/* Disable
++#define BUSWCON0_CSA_DIS 0x00000000 */
++/** Enable */
++#define BUSWCON0_CSA_EN 0x00000200
++/** Flash Non-Array Access Enable
++    Set to logic one to enable workaround when region is accessed with internal address bit 28 set. See Section 3.17.13 on page 90 for details. */
++#define BUSWCON0_NAA 0x00000100
++/* Disable
++#define BUSWCON0_NAA_DIS 0x00000000 */
++/** Enable */
++#define BUSWCON0_NAA_EN 0x00000100
++/** Module Enable */
++#define BUSWCON0_ENABLE 0x00000001
++/* Disable
++#define BUSWCON0_ENABLE_DIS 0x00000000 */
++/** Enable */
++#define BUSWCON0_ENABLE_EN 0x00000001
++
++/* Fields of "Bus Write Parameters Register0" */
++/** Address Cycles
++    Number of cycles for address phase. */
++#define BUSWP0_ADDRC_MASK 0xF0000000
++/** field offset */
++#define BUSWP0_ADDRC_OFFSET 28
++/** Address Hold Cycles For Multiplexed Address
++    Number of address hold cycles during multiplexed accesses. */
++#define BUSWP0_ADHOLC_MASK 0x0F000000
++/** field offset */
++#define BUSWP0_ADHOLC_OFFSET 24
++/** Programmed Command Delay Cycles
++    Number of delay cycles during command delay phase. */
++#define BUSWP0_CMDDELAY_MASK 0x00F00000
++/** field offset */
++#define BUSWP0_CMDDELAY_OFFSET 20
++/** Extended Data */
++#define BUSWP0_EXTDATA_MASK 0x000C0000
++/** field offset */
++#define BUSWP0_EXTDATA_OFFSET 18
++/** External device outputs data every BFCLK cycle */
++#define BUSWP0_EXTDATA_ONE 0x00000000
++/** External device outputs data every 2nd BFCLK cycles */
++#define BUSWP0_EXTDATA_TWO 0x00040000
++/** External device outputs data every 4th BFCLK cycles */
++#define BUSWP0_EXTDATA_FOUR 0x00080000
++/** External device outputs data every 8th BFCLK cycles */
++#define BUSWP0_EXTDATA_EIGHT 0x000C0000
++/** Frequency of external clock at pin BFCLKO */
++#define BUSWP0_EXTCLOCK_MASK 0x00030000
++/** field offset */
++#define BUSWP0_EXTCLOCK_OFFSET 16
++/** Equal to ebu_clk frequency. */
++#define BUSWP0_EXTCLOCK_ONE_TO_ONE 0x00000000
++/** 1/2 of ebu_clk frequency. */
++#define BUSWP0_EXTCLOCK_ONE_TO_TWO 0x00010000
++/** 1/3 of ebu_clk frequency. */
++#define BUSWP0_EXTCLOCK_ONE_TO_THREE 0x00020000
++/** 1/4 of ebu_clk frequency (default after reset). */
++#define BUSWP0_EXTCLOCK_ONE_TO_FOUR 0x00030000
++/** Data Hold Cycles For write Accesses
++    Number of data hold cycles during write accesses. */
++#define BUSWP0_DATAC_MASK 0x0000F000
++/** field offset */
++#define BUSWP0_DATAC_OFFSET 12
++/** Programmed Wait States For write Accesses
++    Number of programmed wait states for write accesses. For synchronous accesses, this will always be adjusted so that the phase exits on a rising edge of the external clock. */
++#define BUSWP0_WAITWDC_MASK 0x00000F80
++/** field offset */
++#define BUSWP0_WAITWDC_OFFSET 7
++/** Recovery Cycles After write Accesses, same CS
++    Number of idle cycles after write accesses when following access is to the same chip select. For synchronous accesses, this will always be adjusted so that the phase exits on a rising clock edge. phase exits on a rising clock edge. Note that at least one recovery cycle must be programmed in case the region is configured for delayed control signals in field ecse of register EBU_BUSWCON. */
++#define BUSWP0_RECOVC_MASK 0x00000070
++/** field offset */
++#define BUSWP0_RECOVC_OFFSET 4
++/** Recovery Cycles After write Accesses, other CS
++    Number of idle cycles after write accesses when the following access is to a different chip select. For synchronous accesses, this will always be adjusted so that the phase exits on a rising clock edge. Note that at least one recovery cycle must be programmed in case the region is configured for delayed control signals in field ecse of register EBU_BUSWCON. */
++#define BUSWP0_DTACS_MASK 0x0000000F
++/** field offset */
++#define BUSWP0_DTACS_OFFSET 0
++
++/* Fields of "Bus Read Configuration Register1" */
++/** Device Type For Region
++    After reset, the CS region is configured for a slow Asynchronous access protocol which is compatible with read access from an external multiplexed or demultiplexed 16-Bit Burst Flash in asynchronous mode. Reset: 0000B */
++#define BUSRCON1_AGEN_MASK 0xF0000000
++/** field offset */
++#define BUSRCON1_AGEN_OFFSET 28
++/** Muxed Asynchronous Type External Memory */
++#define BUSRCON1_AGEN_MUXED_ASYNC_TYPE_EXT_MEM 0x00000000
++/** Muxed Burst Type External Memory */
++#define BUSRCON1_AGEN_MUXED_BURST_TYPE_EXT_MEM 0x10000000
++/** NAND Flash (page optimised) */
++#define BUSRCON1_AGEN_NAND_FLASH 0x20000000
++/** Muxed Cellular RAM External Memory */
++#define BUSRCON1_AGEN_MUXED_CELLULAR_RAM_EXT_MEM 0x30000000
++/** Demuxed Asynchronous Type External Memory */
++#define BUSRCON1_AGEN_DEMUXED_ASYNC_TYPE_EXT_MEM 0x40000000
++/** Demuxed Burst Type External Memory */
++#define BUSRCON1_AGEN_DEMUXED_BURST_TYPE_EXT_MEM 0x50000000
++/** Demuxed Page Mode External Memory */
++#define BUSRCON1_AGEN_DEMUXED_PAGE_MODE_EXT_MEM 0x60000000
++/** Demuxed Cellular RAM External Memory */
++#define BUSRCON1_AGEN_DEMUXED_CELLULAR_RAM_EXT_MEM 0x70000000
++/** Serial Flash */
++#define BUSRCON1_AGEN_SERIAL_FLASH 0xF0000000
++/** Device Addressing Mode
++    t.b.d. */
++#define BUSRCON1_PORTW_MASK 0x0C000000
++/** field offset */
++#define BUSRCON1_PORTW_OFFSET 26
++/** 8-bit multiplexed */
++#define BUSRCON1_PORTW_8_BIT_MUX 0x00000000
++/** 16-bit multiplexed */
++#define BUSRCON1_PORTW_16_BIT_MUX 0x04000000
++/** Twin, 16-bit multiplexed */
++#define BUSRCON1_PORTW_TWIN_16_BIT_MUX 0x08000000
++/** 32-bit multiplexed */
++#define BUSRCON1_PORTW_32_BIT_MUX 0x0C000000
++/** External Wait Control
++    Function of the WAIT input. This is specific to the device type (i.e. the agen field). */
++#define BUSRCON1_WAIT_MASK 0x03000000
++/** field offset */
++#define BUSRCON1_WAIT_OFFSET 24
++/** WAIT is ignored (default after reset). */
++#define BUSRCON1_WAIT_OFF 0x00000000
++/** Synchronous Burst Devices: WAIT signal is provided one cycle ahead of the data cycle it applies to. */
++#define BUSRCON1_WAIT_EARLY_WAIT 0x01000000
++/** Asynchronous Devices: WAIT input passes through a two-stage synchronizer before being evaluated. */
++#define BUSRCON1_WAIT_TWO_STAGE_SYNC 0x01000000
++/** Synchronous Burst Devices: WAIT signal is provided in the same data cycle it applies to. */
++#define BUSRCON1_WAIT_WAIT_WITH_DATA 0x02000000
++/** Asynchronous Devices: WAIT input passes through a single-stage synchronizer before being evaluated. */
++#define BUSRCON1_WAIT_SINGLE_STAGE_SYNC 0x02000000
++/** Synchronous Burst Devices: Abort and retry access if WAIT asserted */
++#define BUSRCON1_WAIT_ABORT_AND_RETRY 0x03000000
++/** Disable Burst Address Wrapping */
++#define BUSRCON1_DBA 0x00800000
++/** Reversed polarity at wait */
++#define BUSRCON1_WAITINV 0x00400000
++/* Low active.
++#define BUSRCON1_WAITINV_ACTLOW 0x00000000 */
++/** High active */
++#define BUSRCON1_WAITINV_ACTHI 0x00400000
++/** Early ADV Enable for Synchronous Bursts */
++#define BUSRCON1_EBSE 0x00200000
++/* Low active.
++#define BUSRCON1_EBSE_DELAYED 0x00000000 */
++/** High active */
++#define BUSRCON1_EBSE_NOT_DELAYED 0x00200000
++/** Early Control Signals for Synchronous Bursts */
++#define BUSRCON1_ECSE 0x00100000
++/* Low active.
++#define BUSRCON1_ECSE_DELAYED 0x00000000 */
++/** High active */
++#define BUSRCON1_ECSE_NOT_DELAYED 0x00100000
++/** Synchronous Burst Buffer Mode Select */
++#define BUSRCON1_FBBMSEL 0x00080000
++/* FIXED_LENGTH
++#define BUSRCON1_FBBMSEL_FIXED_LENGTH 0x00000000 */
++/** CONTINUOUS */
++#define BUSRCON1_FBBMSEL_CONTINUOUS 0x00080000
++/** Burst Length for Synchronous Burst */
++#define BUSRCON1_FETBLEN_MASK 0x00070000
++/** field offset */
++#define BUSRCON1_FETBLEN_OFFSET 16
++/** Up to 1 data cycle (default after reset). */
++#define BUSRCON1_FETBLEN_SINGLE 0x00000000
++/** Up to 2 data cycles. */
++#define BUSRCON1_FETBLEN_BURST2 0x00010000
++/** Up to 4 data cycles. */
++#define BUSRCON1_FETBLEN_BURST4 0x00020000
++/** Up to 8 data cycles. */
++#define BUSRCON1_FETBLEN_BURST8 0x00030000
++/** Up to 16 data cycles. */
++#define BUSRCON1_FETBLEN_BURST16 0x00040000
++/** Reserved
++    This field allows to configure how the EBU generates the CLE and ALE signals for a NAND Flash device. The following options are available */
++#define BUSRCON1_NANDAMAP_MASK 0x0000C000
++/** field offset */
++#define BUSRCON1_NANDAMAP_OFFSET 14
++/** is taken from AMemport[18] and ALE from AMemport[17] and are output on pins A[17:16] on the External Bus (default after reset). */
++#define BUSRCON1_NANDAMAP_NAND_A17_16 0x00000000
++/** is taken from AMemport[18] and ALE from AMemport[17] and are output on pins A[17:16] on the External Bus (default after reset). */
++#define BUSRCON1_NANDAMAP_NAND_WAIT_ADV 0x00004000
++/** CLE is taken from AMemport[18] and ALE from AMemport[17] and are output on pins AD[9:8] and A[9:8] on the External Bus. This mode may only be used with a 8-Bit NAND-Flash device. */
++#define BUSRCON1_NANDAMAP_NAND_AD9_8 0x00008000
++/** Reserved for future use. Do not use or unpredictable results may occur. */
++#define BUSRCON1_NANDAMAP_NAND_RFU 0x0000C000
++/** AAD-mux Protocol
++    If this bit is set and the device is configured for a multiplexed access protocol in agen then the device is accessed in read mode using the AAD-mux protocol. If a non-multiplexed device type is selected in agen, field aadmux is ignored. */
++#define BUSRCON1_AADMUX 0x00002000
++/* Muxed device is write accessed in AD-mux mode.
++#define BUSRCON1_AADMUX_AD_MUX 0x00000000 */
++/** Muxed device is write accessed in AAD-mux mode. */
++#define BUSRCON1_AADMUX_AAD_MUX 0x00002000
++/** Asynchronous Address Phase */
++#define BUSRCON1_AAP 0x00001000
++/* Clock is enabled at beginning of access.
++#define BUSRCON1_AAP_EARLY 0x00000000 */
++/** Clock is enabled after address phase. */
++#define BUSRCON1_AAP_LATE 0x00001000
++/** Burst Flash Read Single Stage Synchronisation */
++#define BUSRCON1_BFSSS 0x00000800
++/* Two stages of synchronisation used.
++#define BUSRCON1_BFSSS_TWO_STAGE 0x00000000 */
++/** Single stage of synchronisation used. */
++#define BUSRCON1_BFSSS_SINGLE_STAGE 0x00000800
++/** Burst Flash Clock Feedback Enable */
++#define BUSRCON1_FDBKEN 0x00000400
++/* Disable
++#define BUSRCON1_FDBKEN_DIS 0x00000000 */
++/** Enable */
++#define BUSRCON1_FDBKEN_EN 0x00000400
++/** Auxiliary Chip Select Enable
++    Not supported in GPON-EBU, field must be set to 0. */
++#define BUSRCON1_CSA 0x00000200
++/* Disable
++#define BUSRCON1_CSA_DIS 0x00000000 */
++/** Enable */
++#define BUSRCON1_CSA_EN 0x00000200
++/** Flash Non-Array Access Enable
++    Set to logic one to enable workaround when region is accessed with internal address bit 28 set. See Section 3.17.13 on page 90 for details. */
++#define BUSRCON1_NAA 0x00000100
++/* Disable
++#define BUSRCON1_NAA_DIS 0x00000000 */
++/** Enable */
++#define BUSRCON1_NAA_EN 0x00000100
++/** Module Enable */
++#define BUSRCON1_ENABLE 0x00000001
++/* Disable
++#define BUSRCON1_ENABLE_DIS 0x00000000 */
++/** Enable */
++#define BUSRCON1_ENABLE_EN 0x00000001
++
++/* Fields of "Bus Read Parameters Register1" */
++/** Address Cycles
++    Number of cycles for address phase. */
++#define BUSRP1_ADDRC_MASK 0xF0000000
++/** field offset */
++#define BUSRP1_ADDRC_OFFSET 28
++/** Address Hold Cycles For Multiplexed Address
++    Number of address hold cycles during multiplexed accesses. */
++#define BUSRP1_ADHOLC_MASK 0x0F000000
++/** field offset */
++#define BUSRP1_ADHOLC_OFFSET 24
++/** Programmed Command Delay Cycles
++    Number of delay cycles during command delay phase. */
++#define BUSRP1_CMDDELAY_MASK 0x00F00000
++/** field offset */
++#define BUSRP1_CMDDELAY_OFFSET 20
++/** Extended Data */
++#define BUSRP1_EXTDATA_MASK 0x000C0000
++/** field offset */
++#define BUSRP1_EXTDATA_OFFSET 18
++/** External device outputs data every BFCLK cycle */
++#define BUSRP1_EXTDATA_ONE 0x00000000
++/** External device outputs data every 2nd BFCLK cycles */
++#define BUSRP1_EXTDATA_TWO 0x00040000
++/** External device outputs data every 4th BFCLK cycles */
++#define BUSRP1_EXTDATA_FOUR 0x00080000
++/** External device outputs data every 8th BFCLK cycles */
++#define BUSRP1_EXTDATA_EIGHT 0x000C0000
++/** Frequency of external clock at pin BFCLKO */
++#define BUSRP1_EXTCLOCK_MASK 0x00030000
++/** field offset */
++#define BUSRP1_EXTCLOCK_OFFSET 16
++/** Equal to ebu_clk frequency. */
++#define BUSRP1_EXTCLOCK_ONE_TO_ONE 0x00000000
++/** 1/2 of ebu_clk frequency. */
++#define BUSRP1_EXTCLOCK_ONE_TO_TWO 0x00010000
++/** 1/3 of ebu_clk frequency. */
++#define BUSRP1_EXTCLOCK_ONE_TO_THREE 0x00020000
++/** 1/4 of ebu_clk frequency (default after reset). */
++#define BUSRP1_EXTCLOCK_ONE_TO_FOUR 0x00030000
++/** Data Hold Cycles For read Accesses
++    Number of data hold cycles during read accesses. Applies to spinner support only where the address is guaranteed stable for datac clocks after RD high */
++#define BUSRP1_DATAC_MASK 0x0000F000
++/** field offset */
++#define BUSRP1_DATAC_OFFSET 12
++/** Programmed Wait States for read accesses
++    Number of programmed wait states for read accesses. For synchronous accesses, this will always be adjusted so that the phase exits on a rising edge of the external clock. */
++#define BUSRP1_WAITRDC_MASK 0x00000F80
++/** field offset */
++#define BUSRP1_WAITRDC_OFFSET 7
++/** Recovery Cycles After read Accesses, same CS
++    Number of idle cycles after read accesses when the next access is to the same chip select. For synchronous accesses, this will always be adjusted so that the phase exits on a rising clock edge. Note that at least one recovery cycle must be programmed in case the region is configured for delayed control signals in field ecse of register EBU_BUSRCON. */
++#define BUSRP1_RECOVC_MASK 0x00000070
++/** field offset */
++#define BUSRP1_RECOVC_OFFSET 4
++/** Recovery Cycles After read Accesses, other CS
++    Number of idle cycles after read accesses when the next access is to a different chip select. For synchronous accesses, this will always be adjusted so that the phase exits on a rising clock edge. Note that at least one recovery cycle must be programmed in case the region is configured for delayed control signals in field ecse of register EBU_BUSRCON. */
++#define BUSRP1_DTACS_MASK 0x0000000F
++/** field offset */
++#define BUSRP1_DTACS_OFFSET 0
++
++/* Fields of "Bus Write Configuration Register1" */
++/** Device Type For Region
++    After reset, the CS region is configured for a slow Asynchronous access protocol which is compatible with read access from an external multiplexed or demultiplexed 16-Bit Burst Flash in asynchronous mode. Reset: 0000B */
++#define BUSWCON1_AGEN_MASK 0xF0000000
++/** field offset */
++#define BUSWCON1_AGEN_OFFSET 28
++/** Muxed Asynchronous Type External Memory */
++#define BUSWCON1_AGEN_MUXED_ASYNC_TYPE_EXT_MEM 0x00000000
++/** Muxed Burst Type External Memory */
++#define BUSWCON1_AGEN_MUXED_BURST_TYPE_EXT_MEM 0x10000000
++/** NAND Flash (page optimised) */
++#define BUSWCON1_AGEN_NAND_FLASH 0x20000000
++/** Muxed Cellular RAM External Memory */
++#define BUSWCON1_AGEN_MUXED_CELLULAR_RAM_EXT_MEM 0x30000000
++/** Demuxed Asynchronous Type External Memory */
++#define BUSWCON1_AGEN_DEMUXED_ASYNC_TYPE_EXT_MEM 0x40000000
++/** Demuxed Burst Type External Memory */
++#define BUSWCON1_AGEN_DEMUXED_BURST_TYPE_EXT_MEM 0x50000000
++/** Demuxed Page Mode External Memory */
++#define BUSWCON1_AGEN_DEMUXED_PAGE_MODE_EXT_MEM 0x60000000
++/** Demuxed Cellular RAM External Memory */
++#define BUSWCON1_AGEN_DEMUXED_CELLULAR_RAM_EXT_MEM 0x70000000
++/** Serial Flash */
++#define BUSWCON1_AGEN_SERIAL_FLASH 0xF0000000
++/** Device Addressing Mode
++    t.b.d. */
++#define BUSWCON1_PORTW_MASK 0x0C000000
++/** field offset */
++#define BUSWCON1_PORTW_OFFSET 26
++/** External Wait Control
++    Function of the WAIT input. This is specific to the device type (i.e. the agen field). */
++#define BUSWCON1_WAIT_MASK 0x03000000
++/** field offset */
++#define BUSWCON1_WAIT_OFFSET 24
++/** WAIT is ignored (default after reset). */
++#define BUSWCON1_WAIT_OFF 0x00000000
++/** Synchronous Burst Devices: WAIT signal is provided one cycle ahead of the data cycle it applies to. */
++#define BUSWCON1_WAIT_EARLY_WAIT 0x01000000
++/** Asynchronous Devices: WAIT input passes through a two-stage synchronizer before being evaluated. */
++#define BUSWCON1_WAIT_TWO_STAGE_SYNC 0x01000000
++/** Synchronous Burst Devices: WAIT signal is provided in the same data cycle it applies to. */
++#define BUSWCON1_WAIT_WAIT_WITH_DATA 0x02000000
++/** Asynchronous Devices: WAIT input passes through a single-stage synchronizer before being evaluated. */
++#define BUSWCON1_WAIT_SINGLE_STAGE_SYNC 0x02000000
++/** Synchronous Burst Devices: Abort and retry access if WAIT asserted */
++#define BUSWCON1_WAIT_ABORT_AND_RETRY 0x03000000
++/** Reserved */
++#define BUSWCON1_LOCKCS 0x00800000
++/** Reversed polarity at wait */
++#define BUSWCON1_WAITINV 0x00400000
++/* Low active.
++#define BUSWCON1_WAITINV_ACTLOW 0x00000000 */
++/** High active */
++#define BUSWCON1_WAITINV_ACTHI 0x00400000
++/** Early ADV Enable for Synchronous Bursts */
++#define BUSWCON1_EBSE 0x00200000
++/* Low active.
++#define BUSWCON1_EBSE_DELAYED 0x00000000 */
++/** High active */
++#define BUSWCON1_EBSE_NOT_DELAYED 0x00200000
++/** Early Control Signals for Synchronous Bursts */
++#define BUSWCON1_ECSE 0x00100000
++/* Low active.
++#define BUSWCON1_ECSE_DELAYED 0x00000000 */
++/** High active */
++#define BUSWCON1_ECSE_NOT_DELAYED 0x00100000
++/** Synchronous Burst Buffer Mode Select */
++#define BUSWCON1_FBBMSEL 0x00080000
++/* FIXED_LENGTH
++#define BUSWCON1_FBBMSEL_FIXED_LENGTH 0x00000000 */
++/** CONTINUOUS */
++#define BUSWCON1_FBBMSEL_CONTINUOUS 0x00080000
++/** Burst Length for Synchronous Burst */
++#define BUSWCON1_FETBLEN_MASK 0x00070000
++/** field offset */
++#define BUSWCON1_FETBLEN_OFFSET 16
++/** Up to 1 data cycle (default after reset). */
++#define BUSWCON1_FETBLEN_SINGLE 0x00000000
++/** Up to 2 data cycles. */
++#define BUSWCON1_FETBLEN_BURST2 0x00010000
++/** Up to 4 data cycles. */
++#define BUSWCON1_FETBLEN_BURST4 0x00020000
++/** Up to 8 data cycles. */
++#define BUSWCON1_FETBLEN_BURST8 0x00030000
++/** Up to 16 data cycles. */
++#define BUSWCON1_FETBLEN_BURST16 0x00040000
++/** Reserved
++    This field allows to configure how the EBU generates the CLE and ALE signals for a NAND Flash device. The following options are available */
++#define BUSWCON1_NANDAMAP_MASK 0x0000C000
++/** field offset */
++#define BUSWCON1_NANDAMAP_OFFSET 14
++/** is taken from AMemport[18] and ALE from AMemport[17] and are output on pins A[17:16] on the External Bus (default after reset). */
++#define BUSWCON1_NANDAMAP_NAND_A17_16 0x00000000
++/** is taken from AMemport[18] and ALE from AMemport[17] and are output on pins A[17:16] on the External Bus (default after reset). */
++#define BUSWCON1_NANDAMAP_NAND_WAIT_ADV 0x00004000
++/** CLE is taken from AMemport[18] and ALE from AMemport[17] and are output on pins AD[9:8] and A[9:8] on the External Bus. This mode may only be used with a 8-Bit NAND-Flash device. */
++#define BUSWCON1_NANDAMAP_NAND_AD9_8 0x00008000
++/** Reserved for future use. Do not use or unpredictable results may occur. */
++#define BUSWCON1_NANDAMAP_NAND_RFU 0x0000C000
++/** AAD-mux Protocol
++    If this bit is set and the device is configured for a multiplexed access protocol in agen then the device is accessed in read mode using the AAD-mux protocol. If a non-multiplexed device type is selected in agen, field aadmux is ignored. */
++#define BUSWCON1_AADMUX 0x00002000
++/* Muxed device is write accessed in AD-mux mode.
++#define BUSWCON1_AADMUX_AD_MUX 0x00000000 */
++/** Muxed device is write accessed in AAD-mux mode. */
++#define BUSWCON1_AADMUX_AAD_MUX 0x00002000
++/** Asynchronous Address Phase */
++#define BUSWCON1_AAP 0x00001000
++/* Clock is enabled at beginning of access.
++#define BUSWCON1_AAP_EARLY 0x00000000 */
++/** Clock is enabled after address phase. */
++#define BUSWCON1_AAP_LATE 0x00001000
++/** Auxiliary Chip Select Enable
++    Not supported in GPON-EBU, field must be set to 0. */
++#define BUSWCON1_CSA 0x00000200
++/* Disable
++#define BUSWCON1_CSA_DIS 0x00000000 */
++/** Enable */
++#define BUSWCON1_CSA_EN 0x00000200
++/** Flash Non-Array Access Enable
++    Set to logic one to enable workaround when region is accessed with internal address bit 28 set. See Section 3.17.13 on page 90 for details. */
++#define BUSWCON1_NAA 0x00000100
++/* Disable
++#define BUSWCON1_NAA_DIS 0x00000000 */
++/** Enable */
++#define BUSWCON1_NAA_EN 0x00000100
++/** Module Enable */
++#define BUSWCON1_ENABLE 0x00000001
++/* Disable
++#define BUSWCON1_ENABLE_DIS 0x00000000 */
++/** Enable */
++#define BUSWCON1_ENABLE_EN 0x00000001
++
++/* Fields of "Bus Write Parameters Register1" */
++/** Address Cycles
++    Number of cycles for address phase. */
++#define BUSWP1_ADDRC_MASK 0xF0000000
++/** field offset */
++#define BUSWP1_ADDRC_OFFSET 28
++/** Address Hold Cycles For Multiplexed Address
++    Number of address hold cycles during multiplexed accesses. */
++#define BUSWP1_ADHOLC_MASK 0x0F000000
++/** field offset */
++#define BUSWP1_ADHOLC_OFFSET 24
++/** Programmed Command Delay Cycles
++    Number of delay cycles during command delay phase. */
++#define BUSWP1_CMDDELAY_MASK 0x00F00000
++/** field offset */
++#define BUSWP1_CMDDELAY_OFFSET 20
++/** Extended Data */
++#define BUSWP1_EXTDATA_MASK 0x000C0000
++/** field offset */
++#define BUSWP1_EXTDATA_OFFSET 18
++/** External device outputs data every BFCLK cycle */
++#define BUSWP1_EXTDATA_ONE 0x00000000
++/** External device outputs data every 2nd BFCLK cycles */
++#define BUSWP1_EXTDATA_TWO 0x00040000
++/** External device outputs data every 4th BFCLK cycles */
++#define BUSWP1_EXTDATA_FOUR 0x00080000
++/** External device outputs data every 8th BFCLK cycles */
++#define BUSWP1_EXTDATA_EIGHT 0x000C0000
++/** Frequency of external clock at pin BFCLKO */
++#define BUSWP1_EXTCLOCK_MASK 0x00030000
++/** field offset */
++#define BUSWP1_EXTCLOCK_OFFSET 16
++/** Equal to ebu_clk frequency. */
++#define BUSWP1_EXTCLOCK_ONE_TO_ONE 0x00000000
++/** 1/2 of ebu_clk frequency. */
++#define BUSWP1_EXTCLOCK_ONE_TO_TWO 0x00010000
++/** 1/3 of ebu_clk frequency. */
++#define BUSWP1_EXTCLOCK_ONE_TO_THREE 0x00020000
++/** 1/4 of ebu_clk frequency (default after reset). */
++#define BUSWP1_EXTCLOCK_ONE_TO_FOUR 0x00030000
++/** Data Hold Cycles For write Accesses
++    Number of data hold cycles during write accesses. */
++#define BUSWP1_DATAC_MASK 0x0000F000
++/** field offset */
++#define BUSWP1_DATAC_OFFSET 12
++/** Programmed Wait States For write Accesses
++    Number of programmed wait states for write accesses. For synchronous accesses, this will always be adjusted so that the phase exits on a rising edge of the external clock. */
++#define BUSWP1_WAITWDC_MASK 0x00000F80
++/** field offset */
++#define BUSWP1_WAITWDC_OFFSET 7
++/** Recovery Cycles After write Accesses, same CS
++    Number of idle cycles after write accesses when following access is to the same chip select. For synchronous accesses, this will always be adjusted so that the phase exits on a rising clock edge. phase exits on a rising clock edge. Note that at least one recovery cycle must be programmed in case the region is configured for delayed control signals in field ecse of register EBU_BUSWCON. */
++#define BUSWP1_RECOVC_MASK 0x00000070
++/** field offset */
++#define BUSWP1_RECOVC_OFFSET 4
++/** Recovery Cycles After write Accesses, other CS
++    Number of idle cycles after write accesses when the following access is to a different chip select. For synchronous accesses, this will always be adjusted so that the phase exits on a rising clock edge. Note that at least one recovery cycle must be programmed in case the region is configured for delayed control signals in field ecse of register EBU_BUSWCON. */
++#define BUSWP1_DTACS_MASK 0x0000000F
++/** field offset */
++#define BUSWP1_DTACS_OFFSET 0
++
++/* Fields of "Bus Protocol Configuration Extension Register 0" */
++/** Byte Control Mapping
++    Remapping of byte enable signals on address lines is not supported in the GPON-EBU. */
++#define BUSCONEXT0_BCMAP_MASK 0x00030000
++/** field offset */
++#define BUSCONEXT0_BCMAP_OFFSET 16
++/** No mirroring of byte enables. */
++#define BUSCONEXT0_BCMAP_NOBCMAP 0x00000000
++/** Asynchronous Early Write
++    This bit is obsolete and must be set to 0 or unpredictable results may result. */
++#define BUSCONEXT0_AEW 0x00008000
++/** AAD-mux Consecutive Address Cycles
++    This bit selects whether ADV gets deasserted between the high and the low address phase of a synchronous AAD-mux access or the two address cycles are consecutive. See Figure 32 for a waveform example that results when acac is set. acac only takes effect if the CS region is configured for synchronous AADmux access (agen = 1 or 3, aadmux = 1) and is ignored otherwise. */
++#define BUSCONEXT0_ACAC 0x00004000
++/* ADV is deasserted between high and low address phase.
++#define BUSCONEXT0_ACAC_SEPERATED 0x00000000 */
++/** ADV is not deasserted between high and low address phase. */
++#define BUSCONEXT0_ACAC_CONSECUTIVE 0x00004000
++/** AAD-mux Write Address-to-Address Delay
++    Gives the length of the AA-Phase (in multiples of the ebu_clk cycle) to be used when writing to the CS region. The parameter is only observed if the CS region is configured for use of the AAD-mux protocol in register EBU_BUSWCON, fields agen and aadmux. */
++#define BUSCONEXT0_WAAC_MASK 0x00003800
++/** field offset */
++#define BUSCONEXT0_WAAC_OFFSET 11
++/** AAD-mux Read Address-to-Address Delay
++    Gives the length of the AA-Phase (in multiples of the ebu_clk cycle) to be used when reading from the CS region. The parameter is only observed if the CS region is configured for use of the AAD-mux protocol in register EBU_BUSRCON, fields agen and aadmux. */
++#define BUSCONEXT0_RAAC_MASK 0x00000700
++/** field offset */
++#define BUSCONEXT0_RAAC_OFFSET 8
++/** AAD-mux Paging Enable for CS0
++    If the external device is configured for AAD-mux protocol in register EBU_BUSRCON, then this field selects whether or not to use paging. If paging is enabled, the EBU skips the high address cycle in case the upper address that would be sent are the same as in the most recent access to the device.configures how to set the AD[15:14] in the high address cycle of an access with the following encoding: */
++#define BUSCONEXT0_PAGE_EN 0x00000080
++/* Disable
++#define BUSCONEXT0_PAGE_EN_DIS 0x00000000 */
++/** Enable */
++#define BUSCONEXT0_PAGE_EN_EN 0x00000080
++/** AAD-mux Address Extension Bit Generation Mode
++    If the external device is configured for AAD-mux protocol in register EBU_BUSRCON, then this field configures how to set the AD[15:14] in the high address cycle of an access with the following encoding: */
++#define BUSCONEXT0_AEBM_MASK 0x00000070
++/** field offset */
++#define BUSCONEXT0_AEBM_OFFSET 4
++/** A[15] in the high address cycle is set to AMemport[amsb+17], A[14] is set to 0 */
++#define BUSCONEXT0_AEBM_AMAP_CRE_RFU0 0x00000000
++/** A[15] in the high address cycle is set to AMemport[amsb+17], A[14] is set to 1 */
++#define BUSCONEXT0_AEBM_AMAP_CRE_RFU1 0x00000010
++/** A[15] in the high address cycle is set to AMemport[amsb+18], A[14] is set to AMemport[amsb+17] */
++#define BUSCONEXT0_AEBM_AMAP_CRE_AND_RFU 0x00000020
++/** Do not use */
++#define BUSCONEXT0_AEBM_reserved 0x00000030
++/** A[15:14] in the high address cycle is set to 00B. */
++#define BUSCONEXT0_AEBM_DIRECT_00 0x00000040
++/** A[15:14] in the high address cycle is set to 01B */
++#define BUSCONEXT0_AEBM_DIRECT_01 0x00000050
++/** A[15:14] in the high address cycle is set to 10B */
++#define BUSCONEXT0_AEBM_DIRECT_10 0x00000060
++/** A[15:14] in the high address cycle is set to 11B. */
++#define BUSCONEXT0_AEBM_DIRECT_11 0x00000070
++/** Most Significant Address Bit of External Device
++    If the external device is configured for AAD-mux protocol in register EBU_BUSRCON, then for amsb < 14 the EBU always sets A[13:amsb] = 0 in the high address cycle of an access. The value of A[15:14] is defined in field aebm. A value of amsb > 13 therefore has no effect. It is recommended to set amsb that it matches the addressable range of the external device according to the following formula: amsb = n - 16 for a device with 2n addressable words. */
++#define BUSCONEXT0_AMSB_MASK 0x0000000F
++/** field offset */
++#define BUSCONEXT0_AMSB_OFFSET 0
++
++/* Fields of "Bus Protocol Configuration Extension Register 1" */
++/** Byte Control Mapping
++    Remapping of byte enable signals on address lines is not supported in the GPON-EBU. */
++#define BUSCONEXT1_BCMAP_MASK 0x00030000
++/** field offset */
++#define BUSCONEXT1_BCMAP_OFFSET 16
++/** No mirroring of byte enables. */
++#define BUSCONEXT1_BCMAP_NOBCMAP 0x00000000
++/** Asynchronous Early Write
++    This bit is obsolete and must be set to 0 or unpredictable results may result. */
++#define BUSCONEXT1_AEW 0x00008000
++/** AAD-mux Consecutive Address Cycles
++    This bit selects whether ADV gets deasserted between the high and the low address phase of a synchronous AAD-mux access or the two address cycles are consecutive. See Figure 32 for a waveform example that results when acac is set. acac only takes effect if the CS region is configured for synchronous AADmux access (agen = 1 or 3, aadmux = 1) and is ignored otherwise. */
++#define BUSCONEXT1_ACAC 0x00004000
++/* ADV is deasserted between high and low address phase.
++#define BUSCONEXT1_ACAC_SEPERATED 0x00000000 */
++/** ADV is not deasserted between high and low address phase. */
++#define BUSCONEXT1_ACAC_CONSECUTIVE 0x00004000
++/** AAD-mux Write Address-to-Address Delay
++    Gives the length of the AA-Phase (in multiples of the ebu_clk cycle) to be used when writing to the CS region. The parameter is only observed if the CS region is configured for use of the AAD-mux protocol in register EBU_BUSWCON, fields agen and aadmux. */
++#define BUSCONEXT1_WAAC_MASK 0x00003800
++/** field offset */
++#define BUSCONEXT1_WAAC_OFFSET 11
++/** AAD-mux Read Address-to-Address Delay
++    Gives the length of the AA-Phase (in multiples of the ebu_clk cycle) to be used when reading from the CS region. The parameter is only observed if the CS region is configured for use of the AAD-mux protocol in register EBU_BUSRCON, fields agen and aadmux. */
++#define BUSCONEXT1_RAAC_MASK 0x00000700
++/** field offset */
++#define BUSCONEXT1_RAAC_OFFSET 8
++/** AAD-mux Paging Enable for CS0
++    If the external device is configured for AAD-mux protocol in register EBU_BUSRCON, then this field selects whether or not to use paging. If paging is enabled, the EBU skips the high address cycle in case the upper address that would be sent are the same as in the most recent access to the device.configures how to set the AD[15:14] in the high address cycle of an access with the following encoding: */
++#define BUSCONEXT1_PAGE_EN 0x00000080
++/* Disable
++#define BUSCONEXT1_PAGE_EN_DIS 0x00000000 */
++/** Enable */
++#define BUSCONEXT1_PAGE_EN_EN 0x00000080
++/** AAD-mux Address Extension Bit Generation Mode
++    If the external device is configured for AAD-mux protocol in register EBU_BUSRCON, then this field configures how to set the AD[15:14] in the high address cycle of an access with the following encoding: */
++#define BUSCONEXT1_AEBM_MASK 0x00000070
++/** field offset */
++#define BUSCONEXT1_AEBM_OFFSET 4
++/** A[15] in the high address cycle is set to AMemport[amsb+17], A[14] is set to 0 */
++#define BUSCONEXT1_AEBM_AMAP_CRE_RFU0 0x00000000
++/** A[15] in the high address cycle is set to AMemport[amsb+17], A[14] is set to 1 */
++#define BUSCONEXT1_AEBM_AMAP_CRE_RFU1 0x00000010
++/** A[15] in the high address cycle is set to AMemport[amsb+18], A[14] is set to AMemport[amsb+17] */
++#define BUSCONEXT1_AEBM_AMAP_CRE_AND_RFU 0x00000020
++/** Do not use */
++#define BUSCONEXT1_AEBM_reserved 0x00000030
++/** A[15:14] in the high address cycle is set to 00B. */
++#define BUSCONEXT1_AEBM_DIRECT_00 0x00000040
++/** A[15:14] in the high address cycle is set to 01B */
++#define BUSCONEXT1_AEBM_DIRECT_01 0x00000050
++/** A[15:14] in the high address cycle is set to 10B */
++#define BUSCONEXT1_AEBM_DIRECT_10 0x00000060
++/** A[15:14] in the high address cycle is set to 11B. */
++#define BUSCONEXT1_AEBM_DIRECT_11 0x00000070
++/** Most Significant Address Bit of External Device
++    If the external device is configured for AAD-mux protocol in register EBU_BUSRCON, then for amsb < 14 the EBU always sets A[13:amsb] = 0 in the high address cycle of an access. The value of A[15:14] is defined in field aebm. A value of amsb > 13 therefore has no effect. It is recommended to set amsb that it matches the addressable range of the external device according to the following formula: amsb = n - 16 for a device with 2n addressable words. */
++#define BUSCONEXT1_AMSB_MASK 0x0000000F
++/** field offset */
++#define BUSCONEXT1_AMSB_OFFSET 0
++
++/* Fields of "Serial Flash Configuration Register" */
++/** Direct Access Device Port Width
++    DA_PORTW Defines the number of signal lines to be used with direct read access from a Serial Flash as defined for the command with opcode rd_opc. Depending on thedevice type and/or command, the number of used signal lines might differbetween command, address, and data phase of the transaction. */
++#define SFCON_DA_PORTW_MASK 0xE0000000
++/** field offset */
++#define SFCON_DA_PORTW_OFFSET 29
++/** One signal line used in all phases of the transaction. */
++#define SFCON_DA_PORTW_WIDTH_1_1_1 0x00000000
++/** One signal line used in the COMMAND and ADDRESS phase of the transaction and two signal lines used in the DATA phase. */
++#define SFCON_DA_PORTW_WIDTH_1_1_2 0x20000000
++/** One signal used in the COMMAND phase of the transaction and two signal lines used in the ADDRESS/DUMMY phase and the DATA phase. */
++#define SFCON_DA_PORTW_WIDTH_1_2_2 0x40000000
++/** Two signal lines used in all phases of the transaction. */
++#define SFCON_DA_PORTW_WIDTH_2_2_2 0x60000000
++/** One signal line used in the COMMAND and ADDRESS phase of the transaction and four signal lines used in the DATA phase. */
++#define SFCON_DA_PORTW_WIDTH_1_1_4 0x80000000
++/** One signal used in the COMMAND phase of the transaction and four signal lines used in the ADDRESS/DUMMY phase and the DATA phase. */
++#define SFCON_DA_PORTW_WIDTH_1_4_4 0xA0000000
++/** Four signal lines used in all phases of the transaction. */
++#define SFCON_DA_PORTW_WIDTH_4_4_4 0xC0000000
++/** for future use. */
++#define SFCON_DA_PORTW_WIDTH_reserved 0xE0000000
++/** Read Abort Enable
++    If set, a read access from the external device can be aborted via signal sf_rd_abort_i. See Section 3.18.2.9 for details. */
++#define SFCON_RD_ABORT_EN 0x10000000
++/** Device Size
++    Defines the number of significant address bits for the Serial Flash device(s). All address bits above the MSB are forced to 0. The configuration in this field also defines for the address auto-increment feature when to wrap around from the upper most address to 0. */
++#define SFCON_DEV_SIZE_MASK 0x0F000000
++/** field offset */
++#define SFCON_DEV_SIZE_OFFSET 24
++/** 16 MBit device */
++#define SFCON_DEV_SIZE_A20_0 0x00000000
++/** 32 MBit device */
++#define SFCON_DEV_SIZE_A21_0 0x01000000
++/** 64 MBit device */
++#define SFCON_DEV_SIZE_A22_0 0x02000000
++/** 128 MBit device */
++#define SFCON_DEV_SIZE_A23_0 0x03000000
++/** 256 MBit device */
++#define SFCON_DEV_SIZE_A24_0 0x04000000
++/** 512 MBit device */
++#define SFCON_DEV_SIZE_A25_0 0x05000000
++/** 1 GBit device */
++#define SFCON_DEV_SIZE_A26_0 0x06000000
++/** 2 GBit device */
++#define SFCON_DEV_SIZE_A27_0 0x07000000
++/** 4 GBit device */
++#define SFCON_DEV_SIZE_A28_0 0x08000000
++/** 8 GBit device */
++#define SFCON_DEV_SIZE_A29_0 0x09000000
++/** 16 GBit device */
++#define SFCON_DEV_SIZE_A30_0 0x0A000000
++/** 32 GBit device */
++#define SFCON_DEV_SIZE_A31_0 0x0B000000
++/** Device Page Size
++    Defines the page size employed by all connected Serial Flash devices. The device page size is used to determine the address wrap-around for the write address auto-increment feature. */
++#define SFCON_DPS_MASK 0x00C00000
++/** field offset */
++#define SFCON_DPS_OFFSET 22
++/** Device page size is 256 Bytes */
++#define SFCON_DPS_DPS_256 0x00000000
++/** Device page size is 512 Bytes */
++#define SFCON_DPS_DPS_512 0x00400000
++/** Page Buffer Size
++    Defines the size of the EBU's page buffer used in Buffered Access. Page buffer size configured here must be less than or equal to the maximum page buffer size which is a built option of the EBU (256 Bytes for GPON). */
++#define SFCON_PB_SIZE_MASK 0x00300000
++/** field offset */
++#define SFCON_PB_SIZE_OFFSET 20
++/** No read buffer is available/used. */
++#define SFCON_PB_SIZE_NONE 0x00000000
++/** 128 Bytes */
++#define SFCON_PB_SIZE_SIZE_128 0x00100000
++/** 256 Bytes */
++#define SFCON_PB_SIZE_SIZE_256 0x00200000
++/** Bidirectional Data Bus
++    Defines whether the Serial Flash uses a unidirectional or a bidirectional data bus. */
++#define SFCON_BIDIR 0x00080000
++/* The Serial Flash interface uses a pair of two unidirectional busses (one for write, one for read)
++#define SFCON_BIDIR_UNIDIRECTIONAL 0x00000000 */
++/** The Serial Flash interface uses a bidirectional data bus. */
++#define SFCON_BIDIR_BIDIRECTIONAL 0x00080000
++/** No Busy Error termination
++    By default, the EBU error-terminates all direct access to a Serial Flash while EBU_SFSTAT.busy is set. By setting NO_BUSY_ERR, the EBU can be configured to permit direct accesses to proceed to the Serial Flash, e.g. for devices that support a read-while-write functionality. */
++#define SFCON_NO_BUSY_ERR 0x00040000
++/** End-of-Busy Detection Mode
++    Defines how the EBU detects the end of a busy phase in the Serial Flash device. The current version of the EBU requires the software to explicitly poll the device's status register and then inform the EBU on the end of the busy status by clearing the corresponding bit in register EBU_SF_STAT. */
++#define SFCON_EOBDM_MASK 0x00030000
++/** field offset */
++#define SFCON_EOBDM_OFFSET 16
++/** No read buffer is available/used. */
++#define SFCON_EOBDM_SOFTWARE 0x00000000
++/** Poll device status register (not supported yet) */
++#define SFCON_EOBDM_POLL_SR 0x00010000
++/** Poll devices busy/ready pin fed into EBU via WAIT pin (not supported yet). */
++#define SFCON_EOBDM_POLL_RDY 0x00020000
++/** Same as POLL_RDY, but CS must be asserted to have the device output its busy/ready status (not supported yet). */
++#define SFCON_EOBDM_POLL_RDY_WITH_CS 0x00030000
++/** Direct Access Keep Chip Select
++    Defines whether the Serial Flash remains selected after a direct access transaction has been finished. */
++#define SFCON_DA_KEEP_CS 0x00008000
++/* After a direct read access, the Serial Flash device is always deselected (CS deasserted). Follow-up read accesses always require sending command opcode and address.
++#define SFCON_DA_KEEP_CS_DESELECT 0x00000000 */
++/** Chip Select of device is kept active after direct read access so that device is ready for follow-up read of next sequential byte without the need to send command and address. If the next command is to another Chip Select, is a different command or accesses a different address, the EBU first deactivates the kept Chip Select before it starts the new transaction with sending the command opcode and address. */
++#define SFCON_DA_KEEP_CS_KEEP_SELECTED 0x00008000
++/** Early Read Abort Enable
++    When aborting a Serial Flash Read is enabled in bit EBU_SFCON.rd_abort_en, bit early_abort selects at what point in the protocol an external access might be aborted. Datasheets of many Serial Flash devices are not explicit on what happens (and whether it is allowed) when a read access is cut-short by deselecting the device during the CMD, ADDR or DUMMY phase of the protocol. */
++#define SFCON_EARLY_ABORT 0x00004000
++/* DISABLE Early abortion is disabled (default after reset). Once the EBU has started the access on the External Bus (first bit time slot), the EBU continues the external transfer until the first data byte has been received. After a direct read access, the Serial Flash device is always deselected (CS deasserted). Follow-up read accesses always require sending command opcode and address.
++#define SFCON_EARLY_ABORT_DISABLE 0x00000000 */
++/** Early abortion is not yet supported in the current version of the EBU. Do not use. The feature is a late improvement to the EBU and could not be verified completely before the final release. After proven to work, it should be made officially available to reduce access latency after aborted Serial Flash reads. Setting early_abort to ENABLE alters the read abort handling in the following way: Once the EBU has started the access on the External Bus, the transfer is cut-short after transferring the CMD byte, the three address bytes, any DUMMY bits or at the end of the next data byte - whatever comes first. */
++#define SFCON_EARLY_ABORT_ENABLE 0x00004000
++/** Direct Access Address Length
++    Defines the number of address bytes to be sent (MSB first) to the device with a direct read access transaction. Other values than listed below are not supported and have unpredictable results. */
++#define SFCON_DA_ALEN_MASK 0x00003000
++/** field offset */
++#define SFCON_DA_ALEN_OFFSET 12
++/** 3 address bytes (bits 23:0 of the internal address) */
++#define SFCON_DA_ALEN_THREE 0x00000000
++/** Read Access Dummy Bytes
++    This field defines the number of dummy bytes to send between the last address byte before the EBU starts capturing read data from the bus for a direct read access. The number of dummy bytes depends on the data access command being used (see field), the clock frequency and the type of device being used. */
++#define SFCON_RD_DUMLEN_MASK 0x00000F00
++/** field offset */
++#define SFCON_RD_DUMLEN_OFFSET 8
++/** Direct Read Access Command Opcode
++    This byte defines the command opcode to send when performing a data read from the Serial Flash in Direct Access Mode. Any value can be set (the EBU does not interpret the value, but directly uses the contents of this register field in the command phase of the transaction). Common opcodes to be used and understood by most devices are READ (03H) and FAST_READ (0BH), but some devices might provide additional opcodes, e.g. to support higher clock frequencies requiring additional dummy bytes or to define a wider interface bus. */
++#define SFCON_RD_OPC_MASK 0x000000FF
++/** field offset */
++#define SFCON_RD_OPC_OFFSET 0
++/** READ */
++#define SFCON_RD_OPC_READ 0x00000003
++/** FAST_READ */
++#define SFCON_RD_OPC_FAST_READ 0x0000000B
++
++/* Fields of "Serial Flash Timing Register" */
++/** CS Idle time
++    This field defines the minimum time the device's Chip Select has to be deasserted in between accesses. Most devices require a minimum deselect time between 50 and 100 ns. See Table 43 for the encoding used in this field. */
++#define SFTIME_CS_IDLE_MASK 0xF0000000
++/** field offset */
++#define SFTIME_CS_IDLE_OFFSET 28
++/** 1 EBU clock cycles */
++#define SFTIME_CS_IDLE_CLKC_0 0x00000000
++/** 2 EBU clock cycles */
++#define SFTIME_CS_IDLE_CLKC_1 0x10000000
++/** 3 EBU clock cycles */
++#define SFTIME_CS_IDLE_CLKC_2 0x20000000
++/** 4 EBU clock cycles */
++#define SFTIME_CS_IDLE_CLKC_3 0x30000000
++/** 6 EBU clock cycles */
++#define SFTIME_CS_IDLE_CLKC_4 0x40000000
++/** 8 EBU clock cycles */
++#define SFTIME_CS_IDLE_CLKC_5 0x50000000
++/** 10 EBU clock cycles */
++#define SFTIME_CS_IDLE_CLKC_6 0x60000000
++/** 12 EBU clock cycles */
++#define SFTIME_CS_IDLE_CLKC_7 0x70000000
++/** 14 EBU clock cycles */
++#define SFTIME_CS_IDLE_CLKC_8 0x80000000
++/** 16 EBU clock cycles */
++#define SFTIME_CS_IDLE_CLKC_9 0x90000000
++/** 20 EBU clock cycles */
++#define SFTIME_CS_IDLE_CLKC_10 0xA0000000
++/** 24 EBU clock cycles */
++#define SFTIME_CS_IDLE_CLKC_11 0xB0000000
++/** 32 EBU clock cycles */
++#define SFTIME_CS_IDLE_CLKC_12 0xC0000000
++/** 40 EBU clock cycles */
++#define SFTIME_CS_IDLE_CLKC_13 0xD0000000
++/** 48 EBU clock cycles */
++#define SFTIME_CS_IDLE_CLKC_14 0xE0000000
++/** 64 EBU clock cycles */
++#define SFTIME_CS_IDLE_CLKC_15 0xF0000000
++/** CS Hold time
++    This field defines (in multiples of the EBU internal clock's period) the minimum time the device's Chip Select must remain asserted after transfer of the last bit of a write transaction. This CS hold time does not apply to read accesses */
++#define SFTIME_CS_HOLD_MASK 0x0C000000
++/** field offset */
++#define SFTIME_CS_HOLD_OFFSET 26
++/** CS Setup time
++    This field defines (in multiples of the EBU internal clock's period) when to assert the device's Chip Select before the first SCK clock period for transferring the command is started on the External Bus */
++#define SFTIME_CS_SETUP_MASK 0x03000000
++/** field offset */
++#define SFTIME_CS_SETUP_OFFSET 24
++/** Write-to-Read Pause
++    This field defines the length of the optional pause when switching from write to read direction in the transaction. During this pause, SCK is held stable. */
++#define SFTIME_WR2RD_PAUSE_MASK 0x00300000
++/** field offset */
++#define SFTIME_WR2RD_PAUSE_OFFSET 20
++/** Read Data Position
++    This field defines when to capture valid read data bit(s) (in multiples of half of the EBU internal clock's period) relative to the beginning of the SCK clock's period defined in EBU_SFTIME.sck_per. RD_POS must be less than or equal to EBU_SFTIME.sck_per (not checked in hardware) or unpredictable results may occur. */
++#define SFTIME_RD_POS_MASK 0x000F0000
++/** field offset */
++#define SFTIME_RD_POS_OFFSET 16
++/** SCK Fall-edge Position
++    This field defines the positioning of the SCK fall edge (in multiples of half of the EBU internal clock's period) with respect to the beginning of the SCK clock's period defined in EBU_SFTIME.sck_per. SCKF_POS must be less than or equal to SCK_PER (not checked in hardware) or unpredictable results may occur. If EBU_SFTIME.sck_inv is set, SCKF_POS defines the positioning of the falling instead of the rising edge of SCK. In the current version of the EBU, SCKF_POS must be set 0 or unpredictable results may occur. */
++#define SFTIME_SCKF_POS_MASK 0x0000F000
++/** field offset */
++#define SFTIME_SCKF_POS_OFFSET 12
++/** SCK Rise-edge Position
++    This field defines the positioning of the SCK rise edge (in multiples of half of the EBU internal clock's period) with respect to the beginning of the SCK clock's period defined in EBU_SFTIME.sck_per. SCKR_POS must be less than EBU_SFTIME.sck_per (not checked in hardware) or unpredictable results may occur. If EBU_SFTIME.sck_inv is set, SCKR_POS defines the positioning of the falling instead of the rising edge of SCK. */
++#define SFTIME_SCKR_POS_MASK 0x00000F00
++/** field offset */
++#define SFTIME_SCKR_POS_OFFSET 8
++/** SCK Feedback Clock Inversion
++    If set, read data gets captured with the falling instead of the rising edge of SCK if clock feedback is enabled in EBU_SFTIME.sck_fdbk_en. */
++#define SFTIME_SCK_FDBK_INV 0x00000040
++/** SCK Clock Feedback
++    If set, read data is captured using the external SCK clock feedback into the chip instead of the EBU's internal clock. Using the feedback clock compensate for the high delay over the pads and its use is required at higher frequencies. A penalty for synchronizing the read data from the SCK into the ebu_clk domain applies to the read access latency. */
++#define SFTIME_SCK_FDBK_EN 0x00000020
++/** Inverted SCK
++    If set, the clock to the Serial Flash devices is inverted. This also results in SCK high while a Serial Flash remains selected between transactions (keep_cs feature). In the current version of the EBU, clock inversion is not supported. SCK_INV must be set to 0 or unpredictable results may occur. */
++#define SFTIME_SCK_INV 0x00000010
++/** SCK Period
++    This field defines the period of the SCK clock in multiples of half of the EBU clock period. The EBU supports values between 2 and 14, corresponding to a frequency ratio range from 1:1. to 1:7 between SCK and the internal clock. Other values are prohibited and result in unpredictable behaviour. In the current version of the EBU, odd values for SCK_PER are not supported. */
++#define SFTIME_SCK_PER_MASK 0x0000000F
++/** field offset */
++#define SFTIME_SCK_PER_OFFSET 0
++
++/* Fields of "Serial Flash Status Register" */
++/** Command Overwrite Error
++    This bit is set on an attempt to start an indirect access while a previous indirect access has not finished. The bit remains unaltered when the software writes a '0' and is toggled when a '1' is written. This toggle-by-write-1 behavior allows to also set the bit for testing purposes. In normal operation, the software is supposed to only write a '1' to this bit to clear after it has been set by the Serial Flash protocol engine. */
++#define SFSTAT_CMD_OVWRT_ERR 0x40000000
++/** Command Error
++    This bit is set when the EBU discards an indirect or direct access to/from a Serial Flash. The bit remains unaltered when the software writes a '0' and is toggled when a '1' is written. This toggle-by-write-1 behavior allows to also set the bit for testing purposes. In normal operation, the software is supposed to only write a '1' to this bit to clear after it has been set by the Serial Flash protocol engine. */
++#define SFSTAT_CMD_ERR 0x20000000
++/** Access Command Pending
++    If set, indicates that access from/to a Serial Flash device has not finished yet. */
++#define SFSTAT_CMD_PEND 0x00400000
++/** External Device Selected
++    If set, indicates that the Chip Select of a Serial Flash device is currently active on the External Bus. */
++#define SFSTAT_SELECTED 0x00200000
++/** Protocol Engine Active
++    If set, indicates that the EBU's Serial Flash protocol engine is active. */
++#define SFSTAT_ACTIVE 0x00100000
++/** Page Buffer Invalidate
++    When writing a one to this bit, bits PB_VALID and PB_UPDATE are both cleared, thereby invalidating the page buffer for access to/from the Serial Flash device. After invalidating the buffer, PB_INVALID is automatically cleared so that it always reads as 0. */
++#define SFSTAT_PB_INVALID 0x00010000
++/** Page Buffer Update
++    This bit is set when data in the page buffer gets modified. It is cleared when new data gets loaded to the page buffer, when it is written back to the device (WRITE_PAGE command) or when PB_VALID gets cleared. */
++#define SFSTAT_PB_UPDATE 0x00002000
++/** Page Buffer Valid
++    This bit is set after the last data byte of a LOAD_PAGE command has been stored in the page buffer or when the page buffer is explicitely validated via a VALIDATE_PAGE special command. It remains set until the page buffer gets invalidated by writing a 1 to PB_INVALID or any of the LOAD_PAGE special commands. While PB_VALID is set, all accesses to the buffered address range are diverted to the page buffer with no access being performed on the External Bus. */
++#define SFSTAT_PB_VALID 0x00001000
++/** Page Buffer Busy
++    The bit is set when the EBU starts executing a LOAD_PAGE or a WRITE_PAGE command and cleared when the last byte of the requested page has been transferred from/to the external device. The inverted value of PB_BUSY is output on the EBU interface and may trigger a system interrupt. */
++#define SFSTAT_PB_BUSY 0x00000100
++/** Device Busy
++    This bit is set by the Serial Flash protocol engine when an indirect access is performed via register EBU_SFCMD with SET_BUSY being set. While busy is set, access to the Serial Flash is very limited and all transactions are error-terminated except when explicitly marked to ignore the busy status. If the EBU is configured in EBU_SFCON.EOBDM to automatically poll the busy status of the device, busy is cleared as soon as the device is found to be idle again. On a software write, busy remains unaltered when written with a '0' and is toggled when written with a '1', respectively.This toggle-by-write-1 behaviour allows to also set the bit for testing purposes. In normal operation, the software is supposed to only write a '1' to this bit after it got set by the Serial Flash protocol engine and no automatic busy detection is configured in EBU_SFCON.EOBDM Then the software has to clear busy when it finds the device to be no longer busy by either polling the device's status register via the EBU or by waiting for the maximum busy time of the operation started in the device. */
++#define SFSTAT_BUSY 0x00000001
++
++/* Fields of "Serial Flash Command Register" */
++/** Command Type
++    This field is a qualifier of the command opcode in EBU_SFCMD.opc. Two types */
++#define SFCMD_CMDTYPE 0x80000000
++/* The opcode in EBU_SFCMD.opc is directly used in the command phase of a single transaction to the Serial Flash device.
++#define SFCMD_CMDTYPE_ACCESS_CMD 0x00000000 */
++/** The opcode in EBU_SFCMD.opc is used to start a special command in the Serial Flash Controller which might include any number of external transactions to/from the Serial Flash device. */
++#define SFCMD_CMDTYPE_SPECIAL_CMD 0x80000000
++/** Device Port Width
++    Defines the number of signal lines to be used with direct read access from a Serial Flash as defined for the command with opcode opc. The encoding of this field is the same as forDA_PORTW. */
++#define SFCMD_PORTW_MASK 0x70000000
++/** field offset */
++#define SFCMD_PORTW_OFFSET 28
++/** Bidirectional Signal Lines
++    If set selects bidirectional signal lines to be used for the data transfer. */
++#define SFCMD_BIDIR 0x08000000
++/** Chip Select
++    This field selects which of the EBU's Chip Selects to activated for the command that is written to EBU_SFCMD.opc. A value between 0 and 3 selects one of the EBU's main CSs while 4 to 7 chooses one of the Auxiliary Chip Selects CSA[3:0], respectively. */
++#define SFCMD_CS_MASK 0x07000000
++/** field offset */
++#define SFCMD_CS_OFFSET 24
++/** Disable Auto Address Increment
++    By default, the address in register EBU_SFADDR is automatically incremented with each data byte being transferred. By setting this bit, the auto-increment can be disabled. */
++#define SFCMD_DIS_AAI 0x00800000
++/** Address Length
++    Defines the number of address bytes from register EBU_SFADDR to sent in the address phase of the transaction to/from the Serial Flash. Note: Address bytes are also sent when the command has no data. */
++#define SFCMD_ALEN_MASK 0x00700000
++/** field offset */
++#define SFCMD_ALEN_OFFSET 20
++/** Dummy Phase Length
++    Defines the number of dummy bytes to send to the device between the command/address phase and the data phase of a transaction. Note:Dummy bytes are also sent when the command has no address and/or no data. */
++#define SFCMD_DUMLEN_MASK 0x000F0000
++/** field offset */
++#define SFCMD_DUMLEN_OFFSET 16
++/** Keep Chip Select
++    Defines whether the Serial Flash remains selected after the indirect access transaction has been finished. */
++#define SFCMD_KEEP_CS 0x00008000
++/* After a direct read access, the Serial Flash device is always deselected (CS deasserted). Follow-up read accesses always require sending command opcode and address.
++#define SFCMD_KEEP_CS_DESELECT 0x00000000 */
++/** Chip Select of device is kept active after direct read access so that device is ready for follow-up read of next sequential byte without the need to send command and address. If the next command is to another Chip Select, is a different command or accesses a different address, the EBU first deactivates the kept Chip Select before it starts the new transaction with sending the command opcode and address. */
++#define SFCMD_KEEP_CS_KEEP_SELECTED 0x00008000
++/** Set Busy Flag
++    If set, starting the command sets EBU_SFSTAT.busy. */
++#define SFCMD_SET_BUSY 0x00004000
++/** Ignore Busy
++    By default, the EBU error terminates all attempts to access a Serial Flash while EBU_SFSTAT.busy is set. Setting this bit overrules this error termination and permits the command written to EBU_SFCMD.opc to proceed to the External Bus. Normally, this bit is only set to execute a Read Status Register command to the Serial Flash, but may also be used for any other type of access the device is able to handle while it is busy. */
++#define SFCMD_IGNORE_BUSY 0x00002000
++/** Skip Opcode
++    If this bit is set, the opcode in field OPC is not sent to the External Bus, but the external transaction starts with sending the first address byte (if ALEN 0), the first dummy byte (if alen = 0 and DUMLEN 0), or directly with transferring the data bytes (if ALEN = DUMLEN = 0 and DLEN 0). Limiting the external transfer to just the data phase - together with the keep_cs feature - allow to transfer any number of data bytes for a device command sent via EBU_SFCMD by keeping the device selected between accesses and chaining multiple indirect access commands each transferring up to 4 data bytes from/to register EBU_SFDATA. */
++#define SFCMD_SKIP_OPC 0x00001000
++/** Data Length
++    This field defines the number of data bytes to transfer in the data phase of the command. For a read command, the data bytes are stored in register EBU_SFDATA, for a write transfer they are taken from that register. As the data register can hold at most 4 bytes, DLEN is restricted to the range [0..4]. */
++#define SFCMD_DLEN_MASK 0x00000E00
++/** field offset */
++#define SFCMD_DLEN_OFFSET 9
++/** Direction
++    Defines the direction of the data transfer (if any) in the data phase of the transaction to/from the serial bus. */
++#define SFCMD_DIR 0x00000100
++/* dlen bytes of data are read from the Serial Flash during the data phase of the transaction and stored in register EBU_SFDATA.
++#define SFCMD_DIR_READ 0x00000000 */
++/** dlen bytes of data are read from register EBU_SFDATA and written to the Serial Flash during the data phase of the transactione */
++#define SFCMD_DIR_WRITE 0x00000100
++/** Command Opcode
++    A write access to this field starts an Indirect Access command in the EBU's Serial Flash controller. Two types of commands are supported (selected in EBU_SFCMD.cmdtype) and determine how the EBU interprets the opcode:- - For a ACCESS_CMD, a single transaction is executed to/from the Serial Flash device and the OPC is sent to the device in the command phase of the protocol. The number of address, dummy and data bytes to transfer with the command are given in fields ALEN, DUMLEN, and DLEN of register EBU_SFCMD, respectively. - For a SPECIAL_CMD, the EBU starts a complex operation that usually involves multiple transactions to/from the Serial Flash device. See Section 3.18.2.5 for an overview of the complex commands currently supported. */
++#define SFCMD_OPC_MASK 0x000000FF
++/** field offset */
++#define SFCMD_OPC_OFFSET 0
++
++/* Fields of "Serial Flash Address Register" */
++/** Address
++    Before writing to register EBU_SFCMD to start a command that requires the transfer of an address, the address to use must be stored in this register. If not disabled in EBU_SFCMD.dis_aai, ADDR is incremented automatically with each data byte transferred between the EBU and the Serial Flash for an indirect access. Note:Register EBU_SFADDR is only used for access in Indirect Access Mode and is ignored/remains unaltered for all accesses in Direct Access Mode. */
++#define SFADDR_ADDR_MASK 0xFFFFFFFF
++/** field offset */
++#define SFADDR_ADDR_OFFSET 0
++
++/* Fields of "Serial Flash Data Register" */
++/** Data Bytes
++    Before writing to register EBU_SFCMD to start a command that requires the transfer of data from the EBU to the Serial Flash device (write access), the data to send must be stored in this register. The data bytes have to be right-aligned in this register, that is, the last byte to send must be placed in bits DATA[7:0], the second-to-last byte in bits DATA[15:8], etc.. Similarly, for a read access with data being transferred from the Serial Flash to the EBU, this register collects the read data received from the device. The read data is right-aligned, that is, the last byte received gets placed in bits DATA[7:0], the second-to-last byte in bits DATA[15:8], etc... The number of data bytes to be transferred between EBU and the Serial Flash is defined in EBU_SFCMD.DLEN. Note:Register EBU_SFDATA is only used for accesses in Indirect Access Mode and is ignored/remains unaltered for all accesses in Direct Access Mode. */
++#define SFDATA_DATA_MASK 0xFFFFFFFF
++/** field offset */
++#define SFDATA_DATA_OFFSET 0
++
++/* Fields of "Serial Flash I/O Control Register" */
++/** Start of Write Delay
++    By default, the EBU starts driving to AD[3:0] two EBU clock cycles before asserting the CS for an external Serial Flash access. For write accesses, this delay can be increased via field SOWD. */
++#define SFIO_SOWD_MASK 0x0000F000
++/** field offset */
++#define SFIO_SOWD_OFFSET 12
++/** End of Write Delay
++    This field defines the time (in number of EBU clock cycles) for which the EBU keeps driving the External Bus AD[3:0] after deassertion of the device's CS. */
++#define SFIO_EOWD_MASK 0x00000F00
++/** field offset */
++#define SFIO_EOWD_OFFSET 8
++/** Data Output
++    The EBU always controls the AD[3:0] pins while a CS for a Serial Flash device is asserted. Field UNUSED_WD defines the values being driven to these pins while the Serial Flash controller is not writing data to or is reading data from the device via the respective line. See Section 3.18.6 for details. */
++#define SFIO_UNUSED_WD_MASK 0x0000000F
++/** field offset */
++#define SFIO_UNUSED_WD_OFFSET 0
++
++/*! @} */ /* EBU_REGISTER */
++
++#endif /* _ebu_reg_h */
diff --git a/target/linux/lantiq/patches/901-board_falcon.patch b/target/linux/lantiq/patches/901-board_falcon.patch
new file mode 100644 (file)
index 0000000..630ac10
--- /dev/null
@@ -0,0 +1,1737 @@
+--- /dev/null
++++ b/arch/mips/lantiq/falcon/Kconfig
+@@ -0,0 +1,11 @@
++if SOC_LANTIQ_FALCON
++
++menu "Mips Machine"
++
++config LANTIQ_MACH_EASY98000
++      bool "Easy98000"
++      default y
++
++endmenu
++
++endif
+--- /dev/null
++++ b/arch/mips/lantiq/falcon/Makefile
+@@ -0,0 +1,3 @@
++obj-y := clk-falcon.o devices.o gpio.o prom.o sysctrl.o reset.o
++obj-y += softdog_vpe.o
++obj-$(CONFIG_LANTIQ_MACH_EASY98000) += mach-easy98000.o
+--- /dev/null
++++ b/arch/mips/lantiq/falcon/clk-falcon.c
+@@ -0,0 +1,46 @@
++/*
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * Copyright (C) 2010 John Crispin <blogic@openwrt.org>
++ */
++
++#include <linux/io.h>
++#include <linux/module.h>
++#include <linux/init.h>
++
++#include <asm/time.h>
++#include <asm/irq.h>
++#include <asm/div64.h>
++
++#include <falcon.h>
++
++#include <falcon/sys1_reg.h>
++
++static struct gpon_reg_sys1 * const pSYS1 = (struct gpon_reg_sys1 *)GPON_SYS1_BASE;
++
++unsigned int
++lq_get_io_region_clock(void)
++{
++      return 200000000; /* 200 MHz */
++}
++EXPORT_SYMBOL(lq_get_io_region_clock);
++
++unsigned int
++lq_get_cpu_hz(void)
++{
++      if ((lq_r32(&pSYS1->cpu0cc) & CPU0CC_CPUDIV) == CPU0CC_CPUDIV_SELFHALF)
++              return 200000000; /* 200 MHz */
++      else
++              return 400000000; /* 400 MHz */
++}
++EXPORT_SYMBOL(lq_get_cpu_hz);
++
++unsigned int
++lq_get_fpi_hz(void)
++{
++      return 100000000;
++}
++EXPORT_SYMBOL(lq_get_fpi_hz);
+--- /dev/null
++++ b/arch/mips/lantiq/falcon/devices.c
+@@ -0,0 +1,180 @@
++#include <linux/init.h>
++#include <linux/module.h>
++#include <linux/types.h>
++#include <linux/string.h>
++#include <linux/mtd/physmap.h>
++#include <linux/kernel.h>
++#include <linux/reboot.h>
++#include <linux/platform_device.h>
++#include <linux/leds.h>
++#include <linux/etherdevice.h>
++#include <linux/reboot.h>
++#include <linux/time.h>
++#include <linux/io.h>
++#include <linux/gpio.h>
++#include <linux/leds.h>
++#include <linux/spi/spi.h>
++
++#include <asm/bootinfo.h>
++#include <asm/irq.h>
++
++#include <lantiq.h>
++
++#include <falcon/falcon_irq.h>
++#include <falcon/gpon_reg_base.h>
++#include <falcon/sys1_reg.h>
++#include <falcon/sys_eth_reg.h>
++
++#include <falcon/sysctrl.h>
++
++#include "devices.h"
++
++unsigned char lq_ethaddr[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
++EXPORT_SYMBOL(lq_ethaddr);
++
++static int __init
++falcon_set_ethaddr(char *str)
++{
++      sscanf(str, "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx",
++              &lq_ethaddr[0], &lq_ethaddr[1], &lq_ethaddr[2],
++              &lq_ethaddr[3], &lq_ethaddr[4], &lq_ethaddr[5]);
++      return 0;
++}
++__setup("ethaddr=", falcon_set_ethaddr);
++
++/* asc ports */
++static struct resource falcon_asc0_resources[] =
++{
++      MEM_RES("asc0",GPON_ASC0_BASE,GPON_ASC0_END),
++      IRQ_RES("tx",INT_NUM_IM3_IRL0),
++      IRQ_RES("rx",INT_NUM_IM3_IRL0+1),
++      IRQ_RES("err",INT_NUM_IM3_IRL0+2),
++};
++
++static struct resource falcon_asc1_resources[] =
++{
++      MEM_RES("asc1",GPON_ASC1_BASE,GPON_ASC1_END),
++      IRQ_RES("tx",INT_NUM_IM3_IRL0+8),
++      IRQ_RES("rx",INT_NUM_IM3_IRL0+9),
++      IRQ_RES("err",INT_NUM_IM3_IRL0+10),
++};
++
++void __init falcon_register_asc(int port)
++{
++      switch (port) {
++      case 0:
++              platform_device_register_simple("lq_asc", 0,
++                      falcon_asc0_resources, ARRAY_SIZE(falcon_asc0_resources));
++              break;
++      case 1:
++              platform_device_register_simple("lq_asc", 1,
++                      falcon_asc1_resources, ARRAY_SIZE(falcon_asc1_resources));
++              break;
++      default:
++              break;
++      }
++}
++
++/* nor flash */
++static struct resource lq_nor_resource =
++      MEM_RES("nor",LQ_FLASH_START,LQ_FLASH_START + LQ_FLASH_MAX - 1);
++
++static struct platform_device lq_nor = {
++      .name                   = "lq_nor",
++      .resource               = &lq_nor_resource,
++      .num_resources  = 1,
++};
++
++void __init falcon_register_nor(struct physmap_flash_data *data)
++{
++      lq_nor.dev.platform_data = data;
++      platform_device_register(&lq_nor);
++}
++
++/* spi flash */
++static struct resource lq_spi_resources[] = {
++      MEM_RES("ebu", GPON_EBU_BASE, GPON_EBU_END),
++      MEM_RES("sys1", GPON_SYS1_BASE, GPON_SYS1_END)
++};
++
++static struct platform_device lq_spi = {
++      .name                   = "falcon_spi",
++      .resource               = lq_spi_resources,
++      .num_resources          = ARRAY_SIZE(lq_spi_resources)
++};
++
++void __init falcon_register_spi_flash(struct spi_board_info *data)
++{
++      spi_register_board_info(data, 1);
++      platform_device_register(&lq_spi);
++}
++
++/* watchdog */
++static struct resource falcon_wdt_resource =
++      MEM_RES("watchdog",GPON_WDT_BASE,GPON_WDT_END);
++
++void __init falcon_register_wdt(void)
++{
++      platform_device_register_simple("lq_wdt", 0, &falcon_wdt_resource, 1);
++}
++
++/* gpio */
++#define DECLARE_GPIO_RES(port) \
++static struct resource falcon_gpio ## port ## _resources[] = { \
++      MEM_RES("gpio"#port,GPON_GPIO ## port ## _BASE,GPON_GPIO ## port ## _END), \
++      MEM_RES("padctrl"#port,GPON_PADCTRL ## port ## _BASE,GPON_PADCTRL ## port ## _END), \
++      IRQ_RES("gpio_mux"#port,FALCON_IRQ_GPIO_P ## port ) \
++}
++DECLARE_GPIO_RES(0);
++DECLARE_GPIO_RES(1);
++DECLARE_GPIO_RES(2);
++#ifdef REGISTER_ALL_GPIO_PORTS
++#if NR_IRQS < 328
++#error NR_IRQS to low for all gpio irqs
++#endif
++DECLARE_GPIO_RES(3);
++DECLARE_GPIO_RES(4);
++#endif
++
++void __init falcon_register_gpio(void)
++{
++      platform_device_register_simple("falcon_gpio", 0,
++              falcon_gpio0_resources, ARRAY_SIZE(falcon_gpio0_resources));
++      platform_device_register_simple("falcon_gpio", 1,
++              falcon_gpio1_resources, ARRAY_SIZE(falcon_gpio1_resources));
++      platform_device_register_simple("falcon_gpio", 2,
++              falcon_gpio2_resources, ARRAY_SIZE(falcon_gpio2_resources));
++      sys1_hw_activate(ACTS_PADCTRL1 | ACTS_P1);
++      sys_eth_hw_activate(SYS_ETH_ACTS_PADCTRL0 | SYS_ETH_ACTS_PADCTRL2 |
++              SYS_ETH_ACTS_P0 | SYS_ETH_ACTS_P2);
++
++#ifdef REGISTER_ALL_GPIO_PORTS
++      /* optional gpio ports: not registered,
++         as the pins are EBU specific and always used by linux */
++      platform_device_register_simple("falcon_gpio", 3,
++              falcon_gpio3_resources, ARRAY_SIZE(falcon_gpio3_resources));
++      platform_device_register_simple("falcon_gpio", 4,
++              falcon_gpio4_resources, ARRAY_SIZE(falcon_gpio4_resources));
++      sys1_hw_activate(ACTS_PADCTRL3 | ACTS_PADCTRL4 | ACTS_P3 | ACTS_P4);
++#endif
++}
++
++static struct resource falcon_i2c_resources[] = {
++      MEM_RES("i2c", GPON_I2C_BASE,GPON_I2C_END),
++      IRQ_RES("i2c_lb", FALCON_IRQ_I2C_LBREQ),
++      IRQ_RES("i2c_b", FALCON_IRQ_I2C_BREQ),
++      IRQ_RES("i2c_err", FALCON_IRQ_I2C_I2C_ERR),
++      IRQ_RES("i2c_p", FALCON_IRQ_I2C_I2C_P),
++};
++
++void __init falcon_register_i2c(void)
++{
++      platform_device_register_simple("i2c-falcon", 0,
++              falcon_i2c_resources, ARRAY_SIZE(falcon_i2c_resources));
++      sys1_hw_activate(ACTS_I2C_ACT);
++}
++
++void __init falcon_register_crypto(void)
++{
++      platform_device_register_simple("lq_falcon_deu", 0, NULL, 0);
++}
+--- /dev/null
++++ b/arch/mips/lantiq/falcon/devices.h
+@@ -0,0 +1,21 @@
++#ifndef _FALCON_DEVICES_H__
++#define _FALCON_DEVICES_H__
++
++#include <linux/mtd/physmap.h>
++#include <linux/spi/spi.h>
++#include <linux/spi/flash.h>
++
++extern void __init falcon_register_asc(int port);
++extern void __init falcon_register_i2c(void);
++extern void __init falcon_register_spi_flash(struct spi_board_info *data);
++extern void __init falcon_register_gpio(void);
++extern void __init falcon_register_nor(struct physmap_flash_data *data);
++extern void __init falcon_register_wdt(void);
++extern void __init falcon_register_crypto(void);
++
++#define IRQ_RES(resname,irq) {.name=resname,.start=(irq),.flags=IORESOURCE_IRQ}
++#define MEM_RES(resname,adr_start,adr_end) \
++      { .name=resname, .flags=IORESOURCE_MEM, \
++        .start=((adr_start)&~KSEG1),.end=((adr_end)&~KSEG1) }
++
++#endif
+--- /dev/null
++++ b/arch/mips/lantiq/falcon/prom.c
+@@ -0,0 +1,44 @@
++/*
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * Copyright (C) 2010 John Crispin <blogic@openwrt.org>
++ */
++
++#include <linux/module.h>
++#include <linux/clk.h>
++#include <asm/bootinfo.h>
++#include <asm/time.h>
++
++#include <falcon.h>
++
++#include <falcon/gpon_reg_base.h>
++#include <falcon/status_reg.h>
++#include <falcon/sys1_reg.h>
++
++#include "../prom.h"
++
++static struct gpon_reg_status * const pSTATUS = (struct gpon_reg_status *)GPON_STATUS_BASE;
++
++#define SOC_FALCON            "Falcon"
++
++void __init
++lq_soc_detect(struct lq_soc_info *i)
++{
++      i->partnum = (lq_r32(&pSTATUS->chipid) & STATUS_CHIPID_PARTNR_MASK) >> STATUS_CHIPID_PARTNR_OFFSET;
++      i->rev = (lq_r32(&pSTATUS->chipid) & STATUS_CHIPID_VERSION_MASK) >> STATUS_CHIPID_VERSION_OFFSET;
++      switch (i->partnum)
++      {
++      case SOC_ID_FALCON:
++              i->name = SOC_FALCON;
++              i->type = SOC_TYPE_FALCON;
++              break;
++
++      default:
++              printk(KERN_ERR "unknown partnum : 0x%08X\n", i->partnum);
++              while(1) {      };
++              break;
++      }
++}
+--- /dev/null
++++ b/arch/mips/lantiq/falcon/sysctrl.c
+@@ -0,0 +1,381 @@
++/*
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 of
++ * the License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ *
++ * Copyright (C) 2010 Thomas Langer, Lantiq Deutschland
++ */
++
++#include <linux/cpu.h>
++#include <linux/init.h>
++#include <linux/kernel.h>
++#include <linux/pm.h>
++#include <linux/io.h>
++#include <linux/ioport.h>
++#include <linux/clk.h>
++#include <asm/reboot.h>
++
++#include <falcon/gpon_reg_base.h>
++#include <falcon/status_reg.h>
++#include <falcon/sys1_reg.h>
++#include <falcon/sys_eth_reg.h>
++#include <falcon/sys_gpe_reg.h>
++
++#include <falcon/sysctrl.h>
++
++/* mapping to linux hw-accessor routines */
++#define reg_r32(reg)                  __raw_readl(reg)
++#define reg_w32(val, reg)             __raw_writel(val, reg)
++#define reg_w32_mask(clear, set, reg) reg_w32((reg_r32(reg) & ~(clear)) | (set), reg)
++
++static struct gpon_reg_sys1 * const sys1 = (struct gpon_reg_sys1 *)GPON_SYS1_BASE;
++static struct gpon_reg_sys_eth * const sys_eth = (struct gpon_reg_sys_eth *)GPON_SYS_ETH_BASE;
++static struct gpon_reg_sys_gpe * const sys_gpe = (struct gpon_reg_sys_gpe *)GPON_SYS_GPE_BASE;
++static struct gpon_reg_status * const status = (struct gpon_reg_status *)GPON_STATUS_BASE;
++
++/**
++ * Activate the selected module(s)
++ * Enables the clock of the module and activates the module itself.
++ *
++ * \param[in]   mask    bitmask of module(s), as for registers SYS1.ACT
++ * \return void
++ */
++void sys1_hw_activate(u32 mask)
++{
++      sys1_w32(mask, clken);
++      sys1_w32(mask, act);
++
++      while ( (sys1_r32(acts) & mask) != mask) {
++              /*NOP;*/
++      };
++}
++EXPORT_SYMBOL(sys1_hw_activate);
++
++/**
++ * Deactivate the selected module(s)
++ * Disables the clock of the module and deactivates the module itself.
++ *
++ * \param[in]   mask    bitmask of module(s), as for registers SYS1.DEACT
++ * \return void
++ */
++void sys1_hw_deactivate(u32 mask)
++{
++      sys1_w32(mask, clkclr);
++      sys1_w32(mask, deact);
++
++      while ( (sys1_r32(acts) & mask) != 0) {
++              /*NOP;*/
++      };
++}
++EXPORT_SYMBOL(sys1_hw_deactivate);
++
++/**
++ * Clock enable for the selected module(s)
++ * Enables the clock of the module.
++ *
++ * \param[in]   mask    bitmask of module(s), as for registers SYS1.CLKEN
++ * \return void
++ */
++void sys1_hw_clk_enable(u32 mask)
++{
++      sys1_w32(mask, clken);
++
++      while ( (sys1_r32(clks) & mask) != mask) {
++              /*NOP;*/
++      };
++}
++EXPORT_SYMBOL(sys1_hw_clk_enable);
++
++/**
++ * Clock disable for the selected module(s)
++ * disables the clock of the module.
++ *
++ * \param[in]   mask    bitmask of module(s), as for registers SYS1.CLKCLR
++ * \return void
++ */
++void sys1_hw_clk_disable(u32 mask)
++{
++      sys1_w32(mask, clkclr);
++
++      while ( (sys1_r32(clks) & mask) != 0) {
++              /*NOP;*/
++      };
++}
++EXPORT_SYMBOL(sys1_hw_clk_disable);
++
++/**
++ * Reboots the selected module(s)
++ * Triggers the reboot of the module.
++ *
++ * \param[in]   mask    bitmask of module(s), as for registers SYS1.RBT
++ * \return void
++ */
++void sys1_hw_activate_or_reboot(u32 mask)
++{
++      u32 acts = sys1_r32(acts);
++      /* is not already active? */
++      if ((~acts & mask) != 0)
++              sys1_hw_activate(~acts & mask);
++      sys1_w32(acts & mask, rbt);
++      while ( (sys1_r32(acts) & mask) != mask) {
++              /*NOP;*/
++      };
++}
++EXPORT_SYMBOL(sys1_hw_activate_or_reboot);
++
++/**
++ * Activate the selected module(s)
++ * Enables the clock of the module and activates the module itself.
++ *
++ * \param[in]   mask    bitmask of module(s), as for registers SYS_ETH.ACT
++ * \return void
++ */
++void sys_eth_hw_activate(u32 mask)
++{
++      sys_eth_w32(mask, clken);
++      sys_eth_w32(mask, act);
++
++      while ( (sys_eth_r32(acts) & mask) != mask) {
++              /*NOP;*/
++      };
++}
++EXPORT_SYMBOL(sys_eth_hw_activate);
++
++/**
++ * Deactivate the selected module(s)
++ * Disables the clock of the module and deactivates the module itself.
++ *
++ * \param[in]   mask    bitmask of module(s), as for registers SYS_ETH.DEACT
++ * \return void
++ */
++void sys_eth_hw_deactivate(u32 mask)
++{
++      sys_eth_w32(mask, clkclr);
++      sys_eth_w32(mask, deact);
++
++      while ( (sys_eth_r32(acts) & mask) != 0) {
++              /*NOP;*/
++      };
++}
++EXPORT_SYMBOL(sys_eth_hw_deactivate);
++
++/**
++ * Clock enable for the selected module(s)
++ * Enables the clock of the module.
++ *
++ * \param[in]   mask    bitmask of module(s), as for registers SYS_ETH.CLKEN
++ * \return void
++ */
++void sys_eth_hw_clk_enable(u32 mask)
++{
++      sys_eth_w32(mask, clken);
++
++      while ( (sys_eth_r32(clks) & mask) != mask) {
++              /*NOP;*/
++      };
++}
++EXPORT_SYMBOL(sys_eth_hw_clk_enable);
++
++/**
++ * Clock disable for the selected module(s)
++ * disables the clock of the module.
++ *
++ * \param[in]   mask    bitmask of module(s), as for registers SYS_ETH.CLKCLR
++ * \return void
++ */
++void sys_eth_hw_clk_disable(u32 mask)
++{
++      sys_eth_w32(mask, clkclr);
++
++      while ( (sys_eth_r32(clks) & mask) != 0) {
++              /*NOP;*/
++      };
++}
++EXPORT_SYMBOL(sys_eth_hw_clk_disable);
++
++/**
++ * Reboots the selected module(s)
++ * Triggers the reboot of the module.
++ *
++ * \param[in]   mask    bitmask of module(s), as for registers SYS_ETH.RBT
++ * \return void
++ */
++void sys_eth_hw_activate_or_reboot(u32 mask)
++{
++      u32 acts = sys_eth_r32(acts);
++      /* is not already active? */
++      if ((~acts & mask) != 0)
++              sys_eth_hw_activate(~acts & mask);
++      sys_eth_w32(acts & mask, rbt);
++      while ( (sys_eth_r32(acts) & mask) != mask) {
++              /*NOP;*/
++      };
++}
++EXPORT_SYMBOL(sys_eth_hw_activate_or_reboot);
++
++static int gpe_clk_is_enabled(void)
++{
++      u32 rd_data;
++
++      rd_data = sys1_r32(infrac);
++      if (rd_data & (1<<(INFRAC_GP_OFFSET+1)))
++              return 1;
++      return 0;
++}
++
++static void enable_gpe_clk(void)
++{
++      u32 aeFreq;
++      u32 rd_data;
++      u32 rd_data_to_keep;
++      int i;
++
++      if (gpe_clk_is_enabled())
++              /* clock already active, no need to change here */
++              return;
++
++      if (status_r32(config) == 0)
++              aeFreq = 1; /* use 625MHz on unfused chip */
++      else
++              aeFreq = (status_r32(config) & STATUS_CONFIG_GPEFREQ_MASK) >> STATUS_CONFIG_GPEFREQ_OFFSET;
++      rd_data = sys1_r32(infrac);
++      /* clear gpe-fsel and enable bits */
++      rd_data_to_keep = rd_data & ~(7<<(INFRAC_GP_OFFSET+1));
++
++      /* set new fsel */
++      sys1_w32(rd_data_to_keep | (aeFreq<<(INFRAC_GP_OFFSET+2)), infrac);
++
++      for (i = 0; i <10; i++) /* wait 10 cycles */
++              {}
++
++      /* keep new fsel and enable */
++      sys1_w32(rd_data_to_keep | (aeFreq<<(INFRAC_GP_OFFSET+2)) |
++              (1<<(INFRAC_GP_OFFSET+1)), infrac);
++      for (i = 0; i <100; i++) /* wait 100 cycles */
++              {}
++}
++
++/**
++ * Activate the selected module(s)
++ * Enables the clock of the module and activates the module itself.
++ *
++ * \param[in]   mask    bitmask of module(s), as for registers SYS_GPE.ACT
++ * \return void
++ */
++void sys_gpe_hw_activate(u32 mask)
++{
++      enable_gpe_clk();
++      sys_gpe_w32(mask, clken);
++      sys_gpe_w32(mask, act);
++
++      while ( (sys_gpe_r32(acts) & mask) != mask) {
++              /*NOP;*/
++      };
++}
++EXPORT_SYMBOL(sys_gpe_hw_activate);
++
++/**
++ * Deactivate the selected module(s)
++ * Disables the clock of the module and deactivates the module itself.
++ *
++ * \param[in]   mask    bitmask of module(s), as for registers SYS_GPE.DEACT
++ * \return void
++ */
++void sys_gpe_hw_deactivate(u32 mask)
++{
++      enable_gpe_clk();
++      sys_gpe_w32(mask, clkclr);
++      sys_gpe_w32(mask, deact);
++
++      while ( (sys_gpe_r32(acts) & mask) != 0) {
++              /*NOP;*/
++      };
++}
++EXPORT_SYMBOL(sys_gpe_hw_deactivate);
++
++/**
++ * Clock enable for the selected module(s)
++ * Enables the clock of the module.
++ *
++ * \param[in]   mask    bitmask of module(s), as for registers SYS_GPE.CLKEN
++ * \return void
++ */
++void sys_gpe_hw_clk_enable(u32 mask)
++{
++      enable_gpe_clk();
++      sys_gpe_w32(mask, clken);
++
++      while ( (sys_gpe_r32(clks) & mask) != mask) {
++              /*NOP;*/
++      };
++}
++EXPORT_SYMBOL(sys_gpe_hw_clk_enable);
++
++/**
++ * Clock disable for the selected module(s)
++ * disables the clock of the module.
++ *
++ * \param[in]   mask    bitmask of module(s), as for registers SYS_GPE.CLKCLR
++ * \return void
++ */
++void sys_gpe_hw_clk_disable(u32 mask)
++{
++      enable_gpe_clk();
++      sys_gpe_w32(mask, clkclr);
++
++      while ( (sys_gpe_r32(clks) & mask) != 0) {
++              /*NOP;*/
++      };
++}
++EXPORT_SYMBOL(sys_gpe_hw_clk_disable);
++
++/**
++ * Reboots the selected module(s)
++ * Triggers the reboot of the module.
++ *
++ * \param[in]   mask    bitmask of module(s), as for registers SYS_GPE.RBT
++ * \return void
++ */
++void sys_gpe_hw_activate_or_reboot(u32 mask)
++{
++      u32 acts;
++      enable_gpe_clk();
++      acts = sys_gpe_r32(acts);
++      /* is not already active? */
++      if ((~acts & mask) != 0)
++              sys_gpe_hw_activate(~acts & mask);
++      sys_gpe_w32(acts & mask, rbt);
++      while ( (sys_gpe_r32(acts) & mask) != mask) {
++              /*NOP;*/
++      };
++}
++EXPORT_SYMBOL(sys_gpe_hw_activate_or_reboot);
++
++/**
++ * Retrieve activation status of the selected hardware module(s)
++ *
++ * \param[in]   mask    bitmask of module(s), as for registers SYS_GPE.RBT
++ * \return int 1 - if hardware module(s) is activated (including clock)
++ */
++ int sys_gpe_hw_is_activated(u32 mask)
++{
++      if (gpe_clk_is_enabled() == 0)
++              return 0;
++
++      if ((sys_gpe_r32(clks) & mask) != mask)
++              return 0;
++
++      return ((sys_gpe_r32(acts) & mask) == mask);
++}
++EXPORT_SYMBOL(sys_gpe_hw_is_activated);
+--- /dev/null
++++ b/arch/mips/lantiq/falcon/gpio.c
+@@ -0,0 +1,463 @@
++/*
++ *   This program is free software; you can redistribute it and/or modify
++ *   it under the terms of the GNU General Public License as published by
++ *   the Free Software Foundation; either version 2 of the License, or
++ *   (at your option) any later version.
++ *
++ *   This program is distributed in the hope that it will be useful,
++ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *   GNU General Public License for more details.
++ *
++ *   You should have received a copy of the GNU General Public License
++ *   along with this program; if not, write to the Free Software
++ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
++ *
++ *   Copyright (C) 2010 Thomas Langer, Lantiq Deutschland
++ */
++
++/**
++      TODO:
++              - add locking?
++              - provide mask of available pins per platform_data
++*/
++
++#include <linux/module.h>
++#include <linux/types.h>
++#include <linux/errno.h>
++#include <linux/init.h>
++#include <linux/seq_file.h>
++#include <linux/platform_device.h>
++#include <linux/uaccess.h>
++#include <linux/gpio.h>
++#include <linux/irq.h>
++#include <linux/interrupt.h>
++#include <linux/slab.h>
++
++#include <falcon.h>
++#include <falcon/falcon_irq.h>
++
++#include <linux/version.h>
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
++#define for_each_set_bit for_each_bit
++#endif
++
++#define gpio_r32(reg)                 __raw_readl(reg)
++#define gpio_w32(val, reg)                    __raw_writel(val, reg)
++#define gpio_w32_mask(clear, set, reg)        gpio_w32((gpio_r32(reg) & ~(clear)) | (set), reg)
++
++
++/** register structure for padctrl
++    (mainly needed for mux control) */
++typedef struct gpon_padctrl_s
++{
++      /** Multiplexer Control Register
++          The value 0 (the reset-value) is always the default function corresponding to the pad's name. The value 1 selects always the GPIO functionality (if available). */
++      unsigned int muxc[32];
++      /** Pull Up Enable Register */
++      unsigned int puen; /* 0x00000080 */
++      /** Pull Down Enable Register */
++      unsigned int pden; /* 0x00000084 */
++      /** Slew Rate Control Register */
++      unsigned int src; /* 0x00000088 */
++      /** Drive Current Control Register */
++      unsigned int dcc; /* 0x0000008C */
++      /** Reserved */
++      unsigned int res_0[24]; /* 0x00000090 */
++      /** Pad Control Availability Register */
++      unsigned int avail; /* 0x000000F0 */
++} gpon_padctrl0_t;
++
++/** register structure for gpio port */
++typedef struct gpon_gpio_s
++{
++      /** Data Output Register
++          Via this register the output values of the different bits can be set if they are switched as outputs. */
++      unsigned int out; /* 0x00000000 */
++      /** Data Input Register
++          Via this register the input values of the different bits can be observed. */
++      unsigned int in; /* 0x00000004 */
++      /** Direction Register
++          Via this register the input direction of the different bits can be determined. */
++      unsigned int dir; /* 0x00000008 */
++      /** Reserved */
++      unsigned int res_0[3]; /* 0x0000000C */
++      /** External Interrupt Control Register 0 */
++      unsigned int exintcr0; /* 0x00000018 */
++      /** External Interrupt Control Register 1 */
++      unsigned int exintcr1; /* 0x0000001C */
++      /** IRN Capture Register
++          This register shows the currently active interrupt events masked with the corresponding enable bits of the IRNEN register. The interrupts can be acknowledged by a write operation. */
++      unsigned int irncr; /* 0x00000020 */
++      /** IRN Interrupt Control Register
++          A write operation directly effects the interrupts. This can be used to trigger events under software control for testing purposes. A read operation returns the unmasked interrupt events. */
++      unsigned int irnicr; /* 0x00000024 */
++      /** IRN Interrupt Enable Register
++          This register contains the enable (or mask) bits for the interrupts. Disabled interrupts are not visible in the IRNCR register and are not signalled via the interrupt line towards the controller. */
++      unsigned int irnen; /* 0x00000028 */
++      /** IRN Interrupt Configuration Register
++          Configures the interrupts bitwise to be edge-senstivie or level-sensitive. */
++      unsigned int irncfg; /* 0x0000002C */
++      /** IRN Interrupt Enable Set Register
++          The corresponding bit in the IRNEN register can be set with an atomic access. */
++      unsigned int irnenset; /* 0x00000030 */
++      /** IRN Interrupt Enable Clear Register
++          The corresponding bit in the IRNEN register can be cleared with an atomic access. */
++      unsigned int irnenclr; /* 0x00000034 */
++      /** Reserved */
++      unsigned int res_1[2]; /* 0x00000038 */
++      /** Output Set Register
++          This register can be used to set certain bits within the OUT register without touching the other bits. */
++      unsigned int outset; /* 0x00000040 */
++      /** Output Clear Register
++          This register can be used to clear certain bits within the OUT register without touching the other bits. */
++      unsigned int outclr; /* 0x00000044 */
++      /** Direction Set Register
++          This register can be used to set certain bits within the DIR register without touching the other bits. */
++      unsigned int dirset; /* 0x00000048 */
++      /** Direction Clear Register
++          This register can be used to clear certain bits within the DIR register without touching the other bits. */
++      unsigned int dirclr; /* 0x0000004C */
++} gpon_gpio_t;
++
++struct falcon_gpio_port {
++      struct gpio_chip gpio_chip;
++      gpon_padctrl0_t __iomem *pad;
++      gpon_gpio_t __iomem *port;
++      struct resource *pad_req;   /* resources requested */
++      struct resource *port_req;
++      unsigned int irq_base;
++      unsigned int chained_irq;
++};
++
++static int gpio_exported = 0;
++static int __init gpio_export_setup(char *str)
++{
++      get_option(&str, &gpio_exported);
++      return 1;
++}
++__setup("gpio_exported=", gpio_export_setup);
++
++static inline struct falcon_gpio_port *to_falcon_gpio_port(struct gpio_chip *chip)
++{
++      return container_of(chip, struct falcon_gpio_port, gpio_chip);
++}
++
++static int falcon_gpio_direction_input(struct gpio_chip *chip, unsigned int offset)
++{
++      struct falcon_gpio_port *gpio_port = to_falcon_gpio_port(chip);
++      gpio_w32(1<<offset, &gpio_port->port->dirclr);
++      return 0;
++}
++
++static int falcon_gpio_direction_output(struct gpio_chip *chip, unsigned int offset, int value)
++{
++      struct falcon_gpio_port *gpio_port = to_falcon_gpio_port(chip);
++      gpio_w32(1<<offset, &gpio_port->port->dirset);
++      return 0;
++}
++
++static void falcon_gpio_set(struct gpio_chip *chip, unsigned int offset, int value)
++{
++      struct falcon_gpio_port *gpio_port = to_falcon_gpio_port(chip);
++      if (value)
++              gpio_w32(1<<offset, &gpio_port->port->outset);
++      else
++              gpio_w32(1<<offset, &gpio_port->port->outclr);
++}
++
++static int falcon_gpio_get(struct gpio_chip *chip, unsigned int offset)
++{
++      struct falcon_gpio_port *gpio_port = to_falcon_gpio_port(chip);
++      if ((gpio_r32(&gpio_port->port->dir) >> offset) & 1)
++              return (gpio_r32(&gpio_port->port->out) >> offset) & 1;
++      else
++              return (gpio_r32(&gpio_port->port->in) >> offset) & 1;
++}
++
++static int falcon_gpio_request(struct gpio_chip *chip, unsigned offset)
++{
++      struct falcon_gpio_port *gpio_port = to_falcon_gpio_port(chip);
++      if ( (gpio_r32(&gpio_port->pad->avail) >> offset) & 1) {
++              if (gpio_r32(&gpio_port->pad->muxc[offset]) > 1)
++                      return -EBUSY;
++              /* switch on gpio function */
++              gpio_w32(1, &gpio_port->pad->muxc[offset]);
++              return 0;
++      }
++
++      return -ENODEV;
++}
++
++static void falcon_gpio_free(struct gpio_chip *chip, unsigned offset)
++{
++      struct falcon_gpio_port *gpio_port = to_falcon_gpio_port(chip);
++      if ( (gpio_r32(&gpio_port->pad->avail) >> offset) & 1) {
++              if (gpio_r32(&gpio_port->pad->muxc[offset]) > 1)
++                      return;
++              /* switch off gpio function */
++              gpio_w32(0, &gpio_port->pad->muxc[offset]);
++      }
++}
++
++static int falcon_gpio_to_irq(struct gpio_chip *chip, unsigned offset)
++{
++      struct falcon_gpio_port *gpio_port = to_falcon_gpio_port(chip);
++      /* no checks: this functions is only registered with valid irq_base */
++      return gpio_port->irq_base + offset;
++}
++
++static void falcon_gpio_disable_irq(unsigned int irq)
++{
++      struct falcon_gpio_port *gpio_port = get_irq_chip_data(irq);
++      unsigned int offset = irq-gpio_port->irq_base;
++      gpio_w32(1<<offset, &gpio_port->port->irnenclr);
++}
++
++static void falcon_gpio_enable_irq(unsigned int irq)
++{
++      struct falcon_gpio_port *gpio_port = get_irq_chip_data(irq);
++      unsigned int offset = irq-gpio_port->irq_base;
++
++      if (gpio_r32(&gpio_port->pad->muxc[offset]) < 1) {
++              /* switch on gpio function */
++              gpio_w32(1, &gpio_port->pad->muxc[offset]);
++      }
++
++      gpio_w32(1<<offset, &gpio_port->port->irnenset);
++}
++
++static void falcon_gpio_ack_irq(unsigned int irq)
++{
++      struct falcon_gpio_port *gpio_port = get_irq_chip_data(irq);
++      unsigned int offset = irq-gpio_port->irq_base;
++      gpio_w32(1<<offset, &gpio_port->port->irncr);
++}
++
++static void falcon_gpio_mask_and_ack_irq(unsigned int irq)
++{
++      struct falcon_gpio_port *gpio_port = get_irq_chip_data(irq);
++      unsigned int offset = irq-gpio_port->irq_base;
++      gpio_w32(1<<offset, &gpio_port->port->irnenclr);
++      gpio_w32(1<<offset, &gpio_port->port->irncr);
++}
++
++static struct irq_chip falcon_gpio_irq_chip;
++static int falcon_gpio_irq_type(unsigned irq, unsigned int type)
++{
++      struct falcon_gpio_port *gpio_port = get_irq_chip_data(irq);
++      unsigned int offset = irq-gpio_port->irq_base;
++      unsigned int mask = 1 << offset;
++
++      if ((type & IRQ_TYPE_SENSE_MASK) == IRQ_TYPE_NONE)
++              return 0;
++
++      if ((type & (IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_LEVEL_LOW)) != 0) {
++              /* level triggered */
++              gpio_w32_mask(0, mask, &gpio_port->port->irncfg);
++              set_irq_chip_and_handler_name(irq,
++                              &falcon_gpio_irq_chip, handle_level_irq, "mux");
++      } else {
++              /* edge triggered */
++              gpio_w32_mask(mask, 0, &gpio_port->port->irncfg);
++              set_irq_chip_and_handler_name(irq,
++                              &falcon_gpio_irq_chip, handle_simple_irq, "mux");
++      }
++
++      if ((type & IRQ_TYPE_EDGE_BOTH) == IRQ_TYPE_EDGE_BOTH) {
++              gpio_w32_mask(mask, 0, &gpio_port->port->exintcr0);
++              gpio_w32_mask(0, mask, &gpio_port->port->exintcr1);
++      } else {
++              if ((type & (IRQ_TYPE_EDGE_RISING |IRQ_TYPE_LEVEL_HIGH)) != 0) {
++                      /* positive logic: rising edge, high level */
++                      gpio_w32_mask(mask, 0, &gpio_port->port->exintcr0);
++              } else {
++                      /* negative logic: falling edge, low level */
++                      gpio_w32_mask(0, mask, &gpio_port->port->exintcr0);
++              }
++              gpio_w32_mask(mask, 0, &gpio_port->port->exintcr1);
++      }
++
++      return gpio_direction_input(gpio_port->gpio_chip.base + offset);
++}
++
++static void falcon_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
++{
++      struct falcon_gpio_port *gpio_port = get_irq_desc_data(desc);
++      unsigned long irncr;
++      int offset;
++
++      irncr = gpio_r32(&gpio_port->port->irncr);
++      /* acknowledge interrupt */
++      gpio_w32(irncr, &gpio_port->port->irncr);
++
++      desc->chip->ack(irq);
++
++      for_each_set_bit(offset, &irncr, gpio_port->gpio_chip.ngpio)
++              generic_handle_irq(gpio_port->irq_base + offset);
++}
++
++static struct irq_chip falcon_gpio_irq_chip = {
++      .name = "gpio_irq_mux",
++      .mask = falcon_gpio_disable_irq,
++      .unmask = falcon_gpio_enable_irq,
++      .ack = falcon_gpio_ack_irq,
++      .mask_ack = falcon_gpio_mask_and_ack_irq,
++      .set_type = falcon_gpio_irq_type,
++};
++
++static struct irqaction gpio_cascade = {
++      .handler = no_action,
++      .flags = IRQF_DISABLED,
++      .name = "gpio_cascade",
++};
++
++static int falcon_gpio_probe(struct platform_device *pdev)
++{
++      struct falcon_gpio_port *gpio_port;
++      int ret, i;
++      struct resource *gpiores, *padres;
++      int irq;
++
++      gpiores = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++      padres = platform_get_resource(pdev, IORESOURCE_MEM, 1);
++      irq = platform_get_irq(pdev, 0);
++      if (!gpiores || !padres)
++              return -ENODEV;
++
++      gpio_port = kzalloc(sizeof(*gpio_port), GFP_KERNEL);
++      if (gpio_port == NULL)
++              return -ENOMEM;
++
++      gpio_port->gpio_chip.label = "falcon-gpio";
++      gpio_port->gpio_chip.direction_input = falcon_gpio_direction_input;
++      gpio_port->gpio_chip.direction_output = falcon_gpio_direction_output;
++      gpio_port->gpio_chip.get = falcon_gpio_get;
++      gpio_port->gpio_chip.set = falcon_gpio_set;
++      gpio_port->gpio_chip.request = falcon_gpio_request;
++      gpio_port->gpio_chip.free = falcon_gpio_free;
++      gpio_port->gpio_chip.base = 100 * pdev->id;
++      gpio_port->gpio_chip.ngpio = 32;
++      gpio_port->gpio_chip.dev = &pdev->dev;
++      gpio_port->gpio_chip.exported = gpio_exported;
++
++      gpio_port->port_req = request_mem_region(gpiores->start,
++              resource_size(gpiores), pdev->name);
++      gpio_port->pad_req = request_mem_region(padres->start,
++              resource_size(padres), pdev->name);
++      if (!gpio_port->port_req || !gpio_port->pad_req) {
++              dev_err(&pdev->dev, "cannot claim register area\n");
++              ret = -EIO;
++              goto err;
++      }
++
++      gpio_port->port = ioremap_nocache(gpiores->start,
++              resource_size(gpiores));
++      gpio_port->pad = ioremap_nocache(padres->start,
++              resource_size(padres));
++      if (!gpio_port->port || !gpio_port->pad) {
++              dev_err(&pdev->dev, "Could not map io ranges\n");
++              ret = -ENOMEM;
++              goto err;
++      }
++
++      if (irq>0) {
++              /*
++               * irq_chip support
++               */
++              gpio_port->gpio_chip.to_irq = falcon_gpio_to_irq;
++              gpio_port->irq_base = INT_NUM_EXTRA_START + 32 * pdev->id;
++
++              for (i = 0; i < 32; i++) {
++                      set_irq_chip_and_handler_name(gpio_port->irq_base + i,
++                              &falcon_gpio_irq_chip, handle_simple_irq, "mux");
++                      set_irq_chip_data(gpio_port->irq_base + i, gpio_port);
++                      /* FIXME: set default cfg to level triggered */
++                      //gpio_w32_mask(0, 1<<i, &gpio_port->port->irncfg);
++                      /* set to negative logic (falling edge, low level) */
++                      gpio_w32_mask(0, 1<<i, &gpio_port->port->exintcr0);
++              }
++
++              gpio_port->chained_irq = irq;
++              setup_irq(irq, &gpio_cascade);
++              set_irq_data(irq, gpio_port);
++              set_irq_chained_handler(irq, falcon_gpio_irq_handler);
++      }
++
++      ret = gpiochip_add(&gpio_port->gpio_chip);
++      if (ret < 0) {
++              dev_err(&pdev->dev, "Could not register gpiochip %d, %d\n",
++                      pdev->id, ret);
++              goto err;
++      }
++      platform_set_drvdata(pdev, gpio_port);
++      return ret;
++
++err:
++      dev_err(&pdev->dev, "Error in gpio_probe %d, %d\n", pdev->id, ret);
++      if (gpio_port->port_req)
++              release_resource(gpio_port->port_req);
++      if (gpio_port->pad_req)
++              release_resource(gpio_port->pad_req);
++
++      if (gpio_port->port)
++              iounmap(gpio_port->port);
++      if (gpio_port->pad)
++              iounmap(gpio_port->pad);
++      kfree(gpio_port);
++      return ret;
++}
++
++static int falcon_gpio_remove(struct platform_device *pdev)
++{
++      struct falcon_gpio_port *gpio_port = platform_get_drvdata(pdev);
++      int ret;
++
++      ret = gpiochip_remove(&gpio_port->gpio_chip);
++      if (gpio_port->port_req)
++              release_resource(gpio_port->port_req);
++      if (gpio_port->pad_req)
++              release_resource(gpio_port->pad_req);
++      if (gpio_port->port)
++              iounmap(gpio_port->port);
++      if (gpio_port->pad)
++              iounmap(gpio_port->pad);
++      if (ret == 0)
++              kfree(gpio_port);
++
++      return ret;
++}
++
++static struct platform_driver falcon_gpio_driver = {
++      .probe = falcon_gpio_probe,
++      .remove = __devexit_p(falcon_gpio_remove),
++      .driver = {
++              .name = "falcon_gpio",
++              .owner = THIS_MODULE,
++      },
++};
++
++int __init falcon_gpio_init(void)
++{
++      int ret;
++
++      printk(KERN_INFO "FALC(tm) ON GPIO Driver, (C) 2011 Lantiq Deutschland Gmbh\n");
++      ret = platform_driver_register(&falcon_gpio_driver);
++      if (ret)
++              pr_err( "falcon_gpio: Error registering platform driver!");
++      return ret;
++}
++
++void __exit falcon_gpio_exit(void)
++{
++      platform_driver_unregister(&falcon_gpio_driver);
++}
++
++int gpio_to_irq(unsigned int gpio)
++{
++      return __gpio_to_irq(gpio);
++}
++EXPORT_SYMBOL(gpio_to_irq);
++
++module_init(falcon_gpio_init);
++module_exit(falcon_gpio_exit);
+--- /dev/null
++++ b/arch/mips/include/asm/mach-lantiq/falcon/falcon.h
+@@ -0,0 +1,30 @@
++/*
++ *   This program is free software; you can redistribute it and/or modify
++ *   it under the terms of the GNU General Public License as published by
++ *   the Free Software Foundation; either version 2 of the License, or
++ *   (at your option) any later version.
++ *
++ *   Copyright (C) 2005 infineon
++ *   Copyright (C) 2010 John Crispin <blogic@openwrt.org>
++ */
++
++#ifdef CONFIG_SOC_LANTIQ_FALCON
++
++#ifndef _LQ_FALCON_H__
++#define _LQ_FALCON_H__
++
++#include <lantiq.h>
++#include <falcon/gpon_reg_base.h>
++
++/*------------ GENERAL */
++#define BOARD_SYSTEM_TYPE             "LANTIQ"
++
++/*------------ Chip IDs */
++#define SOC_ID_FALCON         0x01B8
++
++/*------------ SoC Types */
++#define SOC_TYPE_FALCON               0x01
++
++#endif
++
++#endif
+--- /dev/null
++++ b/arch/mips/lantiq/falcon/reset.c
+@@ -0,0 +1,72 @@
++/*
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * Copyright (C) 2010 John Crispin <blogic@openwrt.org>
++ */
++
++#include <linux/init.h>
++#include <linux/io.h>
++#include <linux/pm.h>
++#include <asm/reboot.h>
++
++#include <falcon.h>
++#include <falcon/gpon_reg_base.h>
++#include <falcon/status_reg.h>
++#include <falcon/sys1_reg.h>
++
++static struct gpon_reg_sys1 * const pSYS1 = (struct gpon_reg_sys1 *)GPON_SYS1_BASE;
++
++#define WDT_PW1                       0x00BE0000
++#define WDT_PW2                       0x00DC0000
++#define WDT_REG_BASE          (KSEG1 | 0x1F8803F0)
++
++static void
++lq_machine_restart(char *command)
++{
++      printk(KERN_NOTICE "System restart\n");
++      local_irq_disable();
++      lq_w32(0, (void*)0xBF200000); /* reset Bootreg RVEC */
++#if 0
++      lq_w32(RBT_CPU_TRIG, &pSYS1->rbt);
++#else
++      /* use workaround via watchdog timer */
++      lq_w32(WDT_PW1, (void*)WDT_REG_BASE);
++      lq_w32(WDT_PW2 |
++              (0x3 << 26) | /* PWL */
++              (0x2 << 24) | /* CLKDIV */
++              (0x1 << 31) | /* enable */
++              (1), /* reload */
++              (void*)WDT_REG_BASE);
++#endif
++      for(;;);
++}
++
++static void
++lq_machine_halt(void)
++{
++      printk(KERN_NOTICE "System halted.\n");
++      local_irq_disable();
++      for(;;);
++}
++
++static void
++lq_machine_power_off(void)
++{
++      printk(KERN_NOTICE "Please turn off the power now.\n");
++      local_irq_disable();
++      for(;;);
++}
++
++static int __init
++mips_reboot_setup(void)
++{
++      _machine_restart = lq_machine_restart;
++      _machine_halt = lq_machine_halt;
++      pm_power_off = lq_machine_power_off;
++      return 0;
++}
++
++arch_initcall(mips_reboot_setup);
+--- /dev/null
++++ b/arch/mips/lantiq/falcon/mach-easy98000.c
+@@ -0,0 +1,246 @@
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/leds.h>
++#include <linux/gpio.h>
++#include <linux/gpio_buttons.h>
++#include <linux/etherdevice.h>
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/partitions.h>
++#include <linux/mtd/physmap.h>
++#include <linux/input.h>
++#include <linux/interrupt.h>
++#include <linux/dm9000.h>
++#include <linux/i2c.h>
++#include <linux/i2c-gpio.h>
++#include <linux/spi/spi.h>
++#include <linux/spi/spi_gpio.h>
++#include <linux/spi/eeprom.h>
++#include <machine.h>
++
++#include "devices.h"
++#include "dev-leds-gpio.h"
++
++#define EASY98000_GPIO_LED_0 9
++#define EASY98000_GPIO_LED_1 10
++#define EASY98000_GPIO_LED_2 11
++#define EASY98000_GPIO_LED_3 12
++#define EASY98000_GPIO_LED_4 13
++#define EASY98000_GPIO_LED_5 14
++
++extern unsigned char lq_ethaddr[6];
++
++#ifdef CONFIG_MTD_PARTITIONS
++static struct mtd_partition easy98000_nor_partitions[] =
++{
++      {
++              .name   = "uboot",
++              .offset = 0x0,
++              .size   = 0x40000,
++      },
++      {
++              .name   = "uboot_env",
++              .offset = 0x40000,
++              .size   = 0x40000,      /* 2 sectors for redundant env. */
++      },
++      {
++              .name   = "linux",
++              .offset = 0x80000,
++              .size   = 0xF80000,     /* map only 16 MiB */
++      },
++};
++#endif
++
++static struct physmap_flash_data easy98000_nor_flash_data = {
++#ifdef CONFIG_MTD_PARTITIONS
++      .nr_parts       = ARRAY_SIZE(easy98000_nor_partitions),
++      .parts          = easy98000_nor_partitions,
++#endif
++};
++
++#ifdef CONFIG_MTD_PARTITIONS
++static struct flash_platform_data easy98000_spi_flash_platform_data = {
++      .name = "sflash",
++      .parts = easy98000_nor_partitions,
++      .nr_parts = ARRAY_SIZE(easy98000_nor_partitions)
++};
++#endif
++
++static struct spi_board_info easy98000_spi_flash_data __initdata = {
++      .modalias               = "m25p80",
++      .bus_num                = 0,
++      .chip_select            = 0,
++      .max_speed_hz           = 10 * 1000 * 1000,
++      .mode                   = SPI_MODE_3,
++#ifdef CONFIG_MTD_PARTITIONS
++      .platform_data          = &easy98000_spi_flash_platform_data
++#endif
++};
++
++static struct gpio_led easy98000_leds_gpio[] __initdata = {
++      {
++              .name           = "easy98000:green:0",
++              .gpio           = EASY98000_GPIO_LED_0,
++              .active_low     = 0,
++      }, {
++              .name           = "easy98000:green:1",
++              .gpio           = EASY98000_GPIO_LED_1,
++              .active_low     = 0,
++      }, {
++              .name           = "easy98000:green:2",
++              .gpio           = EASY98000_GPIO_LED_2,
++              .active_low     = 0,
++      }, {
++              .name           = "easy98000:green:3",
++              .gpio           = EASY98000_GPIO_LED_3,
++              .active_low     = 0,
++      }, {
++              .name           = "easy98000:green:4",
++              .gpio           = EASY98000_GPIO_LED_4,
++              .active_low     = 0,
++      }, {
++              .name           = "easy98000:green:5",
++              .gpio           = EASY98000_GPIO_LED_5,
++              .active_low     = 0,
++      }
++};
++
++#define CONFIG_DM9000_BASE            0x14000000
++#define DM9000_IO                     (CONFIG_DM9000_BASE + 3)
++#define DM9000_DATA                   (CONFIG_DM9000_BASE + 1)
++
++static struct dm9000_plat_data dm9000_plat_data = {
++      .flags = DM9000_PLATF_8BITONLY,
++      //.dev_addr = { }, /* possibility to provide an ethernet address for the chip */
++};
++
++static struct resource dm9000_resources[] = {
++      MEM_RES("dm9000_io", DM9000_IO, DM9000_IO),
++      MEM_RES("dm9000_data", DM9000_DATA, DM9000_DATA),
++      [2] = {
++              /* with irq (210 -> gpio 110) the driver is very unreliable */
++              .start  = -1,           /* use polling */
++              .end    = -1,
++              .flags  = IORESOURCE_IRQ | IRQF_TRIGGER_LOW,
++      },
++};
++
++static struct platform_device dm9000_platform = {
++      .name = "dm9000",
++      .id = 0,
++      .num_resources  = ARRAY_SIZE(dm9000_resources),
++      .resource       = dm9000_resources,
++      .dev = {
++              .platform_data = (void *) &dm9000_plat_data,
++      }
++};
++
++static void __init register_davicom(void)
++{
++      if (!is_valid_ether_addr(lq_ethaddr))
++              random_ether_addr(dm9000_plat_data.dev_addr);
++      else {
++              memcpy(dm9000_plat_data.dev_addr, lq_ethaddr, 6);
++              /* change to "Locally Administered Address" */
++              dm9000_plat_data.dev_addr[0] |= 0x2;
++      }
++      platform_device_register(&dm9000_platform);
++}
++
++static struct i2c_gpio_platform_data easy98000_i2c_gpio_data = {
++      .sda_pin        = 107,
++      .scl_pin        = 108,
++};
++
++static struct platform_device easy98000_i2c_gpio_device = {
++      .name           = "i2c-gpio",
++      .id             = 0,
++      .dev = {
++              .platform_data  = &easy98000_i2c_gpio_data,
++      }
++};
++
++void __init register_easy98000_cpld_led(void)
++{
++      platform_device_register_simple("easy98000_cpld_led", 0, NULL, 0);
++}
++
++/* setup gpio based spi bus/device for access to the eeprom on the board */
++#define SPI_GPIO_MRST 102
++#define SPI_GPIO_MTSR 103
++#define SPI_GPIO_CLK  104
++#define SPI_GPIO_CS0  105
++#define SPI_GPIO_CS1  106
++#define SPI_GPIO_BUS_NUM      1
++
++static struct spi_gpio_platform_data easy98000_spi_gpio_data = {
++      .sck            = SPI_GPIO_CLK,
++      .mosi           = SPI_GPIO_MTSR,
++      .miso           = SPI_GPIO_MRST,
++      .num_chipselect = 2,
++};
++
++static struct platform_device easy98000_spi_gpio_device = {
++      .name                   = "spi_gpio",
++      .id                     = SPI_GPIO_BUS_NUM,
++      .dev.platform_data      = &easy98000_spi_gpio_data,
++};
++
++static struct spi_eeprom at25160n = {
++      .byte_len       = 16 * 1024 / 8,
++      .name           = "at25160n",
++      .page_size      = 32,
++      .flags          = EE_ADDR2,
++};
++
++static struct spi_board_info easy98000_spi_gpio_devices __initdata = {
++      .modalias               = "at25",
++      .bus_num                = SPI_GPIO_BUS_NUM,
++      .max_speed_hz           = 1000 * 1000,
++      .mode                   = SPI_MODE_3,
++      .chip_select            = 1,
++      .controller_data        = (void *) SPI_GPIO_CS1,
++      .platform_data          = &at25160n,
++};
++
++static void __init easy98000_spi_gpio_init(void)
++{
++      spi_register_board_info(&easy98000_spi_gpio_devices, 1);
++      platform_device_register(&easy98000_spi_gpio_device);
++}
++
++static void __init easy98000_init_common(void)
++{
++      falcon_register_asc(0);
++      falcon_register_gpio();
++      falcon_register_wdt();
++      falcon_register_i2c();
++      platform_device_register(&easy98000_i2c_gpio_device);
++      register_davicom();
++      lq_add_device_leds_gpio(-1, ARRAY_SIZE(easy98000_leds_gpio),
++                                      easy98000_leds_gpio);
++      register_easy98000_cpld_led();
++      falcon_register_crypto();
++      easy98000_spi_gpio_init();
++}
++
++static void __init easy98000_init(void)
++{
++      easy98000_init_common();
++      falcon_register_nor(&easy98000_nor_flash_data);
++}
++
++static void __init easy98000sf_init(void)
++{
++      easy98000_init_common();
++      falcon_register_spi_flash(&easy98000_spi_flash_data);
++}
++
++MIPS_MACHINE(LANTIQ_MACH_EASY98000,
++                      "EASY98000",
++                      "EASY98000 Eval Board",
++                      easy98000_init);
++
++MIPS_MACHINE(LANTIQ_MACH_EASY98000SF,
++                      "EASY98000SF",
++                      "EASY98000 Eval Board (Serial Flash)",
++                      easy98000sf_init);
+--- /dev/null
++++ b/arch/mips/lantiq/falcon/softdog_vpe.c
+@@ -0,0 +1,109 @@
++/*
++** =============================================================================
++** FILE NAME     : softdog_vpe.c
++** MODULES       : LXDB
++** DATE          : 24-03-2008
++** AUTHOR        : LXDB Team
++** DESCRIPTION   : This header file contains the code for the watchdog
++**                 implentation on vpe1 side.
++** REFERENCES    :
++** COPYRIGHT     : Copyright (c) 2008
++**                 Am Campeon 1-12, 85579 Neubiberg, Germany
++** Any use of this software is subject to the conclusion of a respective
++** License agreement. Without such a License agreement no rights to the
++** software are granted
++**
++** HISTORY       :
++** $Date   $Author    $Comment
++** 24-03-2008   LXDB    Initial version
++** ============================================================================
++*/
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/types.h>
++#include <linux/timer.h>
++#include <linux/reboot.h>
++#include <linux/init.h>
++#include <linux/jiffies.h>
++
++#include <falcon/vpe.h>
++
++static unsigned long last_wdog_value;
++static unsigned long vpe1_wdog_cleared;
++
++static unsigned long vpe1_wdog_dead;
++static void watchdog_vpe0_fire(unsigned long); /* Called when vpe0 timer expires */
++static void keep_alive_vpe0(unsigned long);
++VPE_SW_WDOG_RESET reset_local_fn;
++
++
++static struct timer_list watchdog_vpe0_ticktock =
++                TIMER_INITIALIZER(watchdog_vpe0_fire, 0, 0);
++
++static void watchdog_vpe0_fire (unsigned long flags)
++{
++      volatile unsigned long *wdog_ctr_value;
++      wdog_ctr_value = (void*)vpe1_wdog_ctr;
++      if (*wdog_ctr_value == last_wdog_value) { /* VPE1 watchdog expiry handling */
++              vpe1_sw_wdog_stop(flags);
++              vpe1_wdog_dead++;
++              printk(KERN_DEBUG "VPE1 watchdog reset handler called\n");
++      /* Call the reset handler function */
++              reset_local_fn(flags);
++      } else { /* Everything is OK on vpe1 side. Continue. */
++              last_wdog_value = *wdog_ctr_value;
++              vpe1_wdog_cleared++;
++              keep_alive_vpe0(flags);
++      }
++}
++
++int32_t vpe1_sw_wdog_register_reset_handler (VPE_SW_WDOG_RESET reset_fn)
++{
++      reset_local_fn = (VPE_SW_WDOG_RESET)reset_fn;
++      return 0;
++}
++
++static void keep_alive_vpe0(unsigned long flags)
++{
++      mod_timer(&watchdog_vpe0_ticktock, jiffies+ vpe1_wdog_timeout );
++}
++
++unsigned long vpe1_sw_wdog_start(unsigned long flags)
++{
++      volatile unsigned long *wdog_ctr_value;
++      wdog_ctr_value = (void*)vpe1_wdog_ctr;
++      *wdog_ctr_value = 0;
++      last_wdog_value = 0;
++      keep_alive_vpe0(flags);
++      return 0;
++}
++
++unsigned long vpe1_sw_wdog_stop(unsigned long flags)
++{
++      del_timer(&watchdog_vpe0_ticktock);
++      return 0;
++}
++
++static int __init watchdog_vpe1_init(void)
++{
++      /* Nothing to be done here */
++      return 0;
++}
++
++static void __exit watchdog_vpe1_exit(void)
++{
++      unsigned long flags=0;
++      vpe1_sw_wdog_stop(flags);
++}
++
++module_init(watchdog_vpe1_init);
++module_exit(watchdog_vpe1_exit);
++
++EXPORT_SYMBOL(vpe1_sw_wdog_register_reset_handler);
++EXPORT_SYMBOL(vpe1_sw_wdog_start);
++EXPORT_SYMBOL(vpe1_sw_wdog_stop);
++
++MODULE_AUTHOR("LXDB");
++MODULE_DESCRIPTION("Software Watchdog For VPE1");
++MODULE_LICENSE("GPL");
+--- /dev/null
++++ b/arch/mips/include/asm/mach-lantiq/falcon/vpe.h
+@@ -0,0 +1,44 @@
++/*
++ *   This program is free software; you can redistribute it and/or modify
++ *   it under the terms of the GNU General Public License as published by
++ *   the Free Software Foundation; either version 2 of the License, or
++ *   (at your option) any later version.
++ *
++ *   This program is distributed in the hope that it will be useful,
++ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *   GNU General Public License for more details.
++ *
++ *   You should have received a copy of the GNU General Public License
++ *   along with this program; if not, write to the Free Software
++ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
++ *
++ *   Copyright (C) 2005 infineon
++ *   Copyright (C) 2007 John Crispin <blogic@openwrt.org>
++ *
++ */
++#ifndef _IFXMIPS_VPE_H__
++#define _IFXMIPS_VPE_H__
++
++/* For the explanation of the APIs please refer the section "MT APRP Kernel
++ * Programming" in AR9 SW Architecture Specification
++ */
++int32_t vpe1_sw_start(void* sw_start_addr, uint32_t tcmask, uint32_t flags);
++int32_t vpe1_sw_stop(uint32_t flags);
++uint32_t vpe1_get_load_addr (uint32_t flags);
++uint32_t vpe1_get_max_mem (uint32_t flags);
++
++int32_t vpe1_set_boot_param(char *field, char *value, char flags);
++int32_t vpe1_get_boot_param(char *field, char **value, char flags);
++
++/* Watchdog APIs */
++extern unsigned long vpe1_wdog_ctr;
++extern unsigned long vpe1_wdog_timeout;
++
++unsigned long vpe1_sw_wdog_start(unsigned long);
++unsigned long vpe1_sw_wdog_stop(unsigned long);
++
++typedef int (*VPE_SW_WDOG_RESET)(unsigned long wdog_cleared_ok_count);
++int32_t vpe1_sw_wdog_register_reset_handler(VPE_SW_WDOG_RESET reset_fn);
++
++#endif
+--- a/arch/mips/lantiq/Kconfig
++++ b/arch/mips/lantiq/Kconfig
+@@ -21,16 +21,16 @@ choice
+       prompt "SoC Type"
+       default SOC_LANTIQ_XWAY
+-#config SOC_LANTIQ_FALCON
+-#     bool "FALCON"
+-#     select SOC_LANTIQ
++config SOC_LANTIQ_FALCON
++      bool "FALCON"
++      select SOC_LANTIQ
+ config SOC_LANTIQ_XWAY
+       bool "XWAY"
+       select SOC_LANTIQ
+ endchoice
+-#source "arch/mips/lantiq/falcon/Kconfig"
++source "arch/mips/lantiq/falcon/Kconfig"
+ source "arch/mips/lantiq/xway/Kconfig"
+ if EARLY_PRINTK
+--- a/arch/mips/include/asm/mach-lantiq/machine.h
++++ b/arch/mips/include/asm/mach-lantiq/machine.h
+@@ -5,6 +5,7 @@ enum lantiq_mach_type {
+       /* FALCON */
+       LANTIQ_MACH_EASY98000,          /* Falcon Eval Board, NOR Flash */
++      LANTIQ_MACH_EASY98000SF,        /* Falcon Eval Board, Serial Flash */
+       LANTIQ_MACH_EASY98020,          /* Falcon Reference Board */
+       /* XWAY */
+--- a/arch/mips/lantiq/Makefile
++++ b/arch/mips/lantiq/Makefile
+@@ -1,3 +1,4 @@
+ obj-y := dev-leds-gpio.o irq.o setup.o clk.o prom.o
+ obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
++obj-$(CONFIG_SOC_LANTIQ_FALCON) += falcon/
+ obj-$(CONFIG_SOC_LANTIQ_XWAY) += xway/
+--- a/arch/mips/lantiq/Platform
++++ b/arch/mips/lantiq/Platform
+@@ -5,4 +5,5 @@
+ platform-$(CONFIG_LANTIQ)      += lantiq/
+ cflags-$(CONFIG_LANTIQ)       += -I$(srctree)/arch/mips/include/asm/mach-lantiq
+ load-$(CONFIG_LANTIQ)          = 0xffffffff80002000
++cflags-$(CONFIG_SOC_LANTIQ_FALCON) += -I$(srctree)/arch/mips/include/asm/mach-lantiq/falcon
+ cflags-$(CONFIG_SOC_LANTIQ_XWAY) += -I$(srctree)/arch/mips/include/asm/mach-lantiq/xway
diff --git a/target/linux/lantiq/patches/910-falcon-i2c.patch b/target/linux/lantiq/patches/910-falcon-i2c.patch
new file mode 100644 (file)
index 0000000..c83486d
--- /dev/null
@@ -0,0 +1,827 @@
+--- a/drivers/i2c/busses/Makefile
++++ b/drivers/i2c/busses/Makefile
+@@ -76,5 +76,6 @@
+ obj-$(CONFIG_I2C_STUB)                += i2c-stub.o
+ obj-$(CONFIG_SCx200_ACB)      += scx200_acb.o
+ obj-$(CONFIG_SCx200_I2C)      += scx200_i2c.o
++obj-$(CONFIG_I2C_FALCON)      += i2c-falcon.o
+ ccflags-$(CONFIG_I2C_DEBUG_BUS) := -DDEBUG
+--- a/drivers/i2c/busses/Kconfig
++++ b/drivers/i2c/busses/Kconfig
+@@ -281,6 +281,10 @@
+ comment "I2C system bus drivers (mostly embedded / system-on-chip)"
++config I2C_FALCON
++      tristate "Falcon I2C interface"
++#     depends on SOC_FALCON
++
+ config I2C_AT91
+       tristate "Atmel AT91 I2C Two-Wire interface (TWI)"
+       depends on ARCH_AT91 && EXPERIMENTAL && BROKEN
+--- /dev/null
++++ b/drivers/i2c/busses/i2c-falcon.c
+@@ -0,0 +1,802 @@
++/*
++ *   This program is free software; you can redistribute it and/or modify
++ *   it under the terms of the GNU General Public License as published by
++ *   the Free Software Foundation; either version 2 of the License, or
++ *   (at your option) any later version.
++ *
++ *   This program is distributed in the hope that it will be useful,
++ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *   GNU General Public License for more details.
++ *
++ *   You should have received a copy of the GNU General Public License
++ *   along with this program; if not, write to the Free Software
++ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
++ */
++
++/* #define DEBUG */
++
++#include <linux/module.h>
++#include <linux/ioport.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/i2c.h>
++#include <linux/interrupt.h>
++#include <linux/spinlock.h>
++#include <linux/io.h>
++#include <linux/clk.h>
++#include <linux/err.h>
++
++/* CURRENT ISSUES:
++ * - no high speed support
++ * - rx issue with "address mode" & "tx end" interrupts
++ * - ten bit mode is not tested
++ */
++
++/* mapping for access macros */
++#define reg_r32(reg)          __raw_readl(reg)
++#define reg_w32(val, reg)     __raw_writel(val, reg)
++#define reg_w32_mask(clear, set, reg) \
++                              reg_w32((reg_r32(reg) & ~(clear)) | (set), reg)
++#define reg_r32_table(reg, idx) reg_r32(&((uint32_t *)&reg)[idx])
++#define reg_w32_table(val, reg, idx) reg_w32(val, &((uint32_t *)&reg)[idx])
++#define i2c   (priv->membase)
++#include <falcon/i2c_reg.h>
++
++/* enable hacks to overcome current issue */
++#define FALCON_FIX_ME
++
++#define FALCON_I2C_ADDR                       0x00
++#define FALCON_I2C_READY_TIMEOUT      1000
++#define FALCON_I2C_WAIT_TIMEOUT               10
++
++#define DRV_NAME "i2c-falcon"
++
++#if defined(DEBUG)
++#define static /* no static functions for better debugging */
++#endif
++
++#define FALCON_I2C_ARB_LOST   (1 << 0)
++#define FALCON_I2C_NACK               (1 << 1)
++#define FALCON_I2C_RX_UFL     (1 << 2)
++#define FALCON_I2C_RX_OFL     (1 << 3)
++#define FALCON_I2C_TX_UFL     (1 << 4)
++#define FALCON_I2C_TX_OFL     (1 << 5)
++#define FALCON_I2C_BURST_REQ  (1 << 6)
++#define FALCON_I2C_RX         (1 << 7)
++#define FALCON_I2C_TX_END     (1 << 8)
++#define FALCON_I2C_ADDR_MATCH (1 << 9) /* doesn't trigger */
++
++struct falcon_i2c {
++      spinlock_t lock;
++
++      enum {
++              FALCON_I2C_MODE_100     = 1,
++              FALCON_I2C_MODE_400     = 2,
++              FALCON_I2C_MODE_3400    = 3
++      } mode;                         /* current speed mode */
++
++      int ten_bit;                    /* current address mode */
++      unsigned long status;           /* bus events holder */
++      struct clk *clk;                /* clock input for i2c hardware block */
++      struct gpon_reg_i2c __iomem *membase;   /* base of mapped registers */
++      int irq_lb, irq_b, irq_err, irq_p;      /* last burst, burst, error,
++                                                 protocol IRQs */
++      struct completion done;
++      struct i2c_adapter adap;
++      struct device *dev;
++};
++
++#define FALCON_I2C_ERROR_MASK         (FALCON_I2C_NACK \
++                                      | FALCON_I2C_ARB_LOST \
++                                      | FALCON_I2C_RX_OFL \
++                                      | FALCON_I2C_RX_UFL \
++                                      | FALCON_I2C_TX_OFL \
++                                      | FALCON_I2C_TX_UFL)
++
++#define FALCON_I2C_ERROR(priv)                (priv->status & FALCON_I2C_ERROR_MASK)
++#define FALCON_I2C_ERROR_CLEAR(priv)  do { \
++                                              priv->status &= \
++                                              ~FALCON_I2C_ERROR_MASK; \
++                                      } while (0)
++
++static void falcon_addr_configure(struct falcon_i2c *priv, int ten_bit)
++{
++      u32 ten_bit_mask = ten_bit ? I2C_ADDR_CFG_TBAM_10bit : 0;
++
++      /* configure address */
++      i2c_w32(I2C_ADDR_CFG_SOPE_EN /* generate stop when no more data in the
++                                      fifo */
++              | I2C_ADDR_CFG_SONA_EN /* generate stop when NA received */
++              | I2C_ADDR_CFG_MnS_EN /* we are master device */
++              | ten_bit_mask
++              | FALCON_I2C_ADDR, /* our address */
++              addr_cfg);
++}
++
++static irqreturn_t falcon_i2c_isr(int irq, void *dev_id)
++{
++      u32 i_raw, i_pro, i_err;
++      struct falcon_i2c *priv = dev_id;
++      unsigned long flags;
++      unsigned int old_status;
++
++      spin_lock_irqsave(&priv->lock, flags);
++
++      old_status = (unsigned int)priv->status;
++
++      i_raw = i2c_r32(mis);
++
++      /* protocol interrupt */
++      if (i_raw & I2C_RIS_I2C_P_INT_INTOCC) {
++              i_pro = i2c_r32(p_irqss);
++
++              /* tx -> rx switch */
++              if (i_pro & I2C_P_IRQSS_RX)
++                      priv->status |= FALCON_I2C_RX;
++
++              /* tx end */
++              if (i_pro & I2C_P_IRQSS_TX_END)
++                      priv->status |= FALCON_I2C_TX_END;
++
++              /* not acknowledge */
++              if (i_pro & I2C_P_IRQSS_NACK)
++                      priv->status |= FALCON_I2C_NACK;
++
++              /* arbitration lost */
++              if (i_pro & I2C_P_IRQSS_AL)
++                      priv->status |= FALCON_I2C_ARB_LOST;
++
++              /* address match */
++              if (i_pro & I2C_P_IRQSS_AM)
++                      priv->status |= FALCON_I2C_ADDR_MATCH;
++
++              i2c_w32(i_pro, p_irqsc);
++      }
++
++      /* error interrupt */
++      if (i_raw & I2C_RIS_I2C_ERR_INT_INTOCC) {
++              i_err = i2c_r32(err_irqss);
++
++              /* tx fifo overflow */
++              if (i_err & I2C_ERR_IRQSS_TXF_OFL)
++                      priv->status |= FALCON_I2C_TX_OFL;
++
++              /* tx fifo underflow */
++              if (i_err & I2C_ERR_IRQSS_TXF_UFL)
++                      priv->status |= FALCON_I2C_TX_UFL;
++
++              /* rx fifo overflow */
++              if (i_err & I2C_ERR_IRQSS_RXF_OFL)
++                      priv->status |= FALCON_I2C_RX_OFL;
++
++              /* rx fifo underflow */
++              if (i_err & I2C_ERR_IRQSS_RXF_UFL)
++                      priv->status |= FALCON_I2C_RX_UFL;
++
++              i2c_w32(i_err, err_irqsc);
++      }
++
++      /* burst request */
++      if (i_raw & I2C_RIS_BREQ_INT_INTOCC) {
++              i2c_w32_mask(I2C_IMSC_BREQ_INT_EN, 0, imsc);
++              i2c_w32_mask(0, I2C_ICR_BREQ_INT_CLR, icr);
++
++              priv->status |= FALCON_I2C_BURST_REQ;
++      }
++
++      /* last burst request */
++      if (i_raw & I2C_RIS_LBREQ_INT_INTOCC) {
++              i2c_w32_mask(I2C_IMSC_LBREQ_INT_EN, 0, imsc);
++              i2c_w32_mask(0, I2C_ICR_LBREQ_INT_CLR, icr);
++
++              priv->status |= FALCON_I2C_BURST_REQ;
++      }
++
++      if (old_status != (unsigned int)priv->status)
++              complete(&priv->done);
++
++      spin_unlock_irqrestore(&priv->lock, flags);
++
++      return IRQ_HANDLED;
++}
++
++static int falcon_i2c_ready(struct falcon_i2c *priv)
++{
++      int timeout;
++      u32 bus_stat;
++      unsigned long flags;
++      int ret;
++
++      for (timeout = 0; timeout < FALCON_I2C_READY_TIMEOUT; timeout++) {
++              bus_stat = i2c_r32(bus_stat);
++
++              if (bus_stat & I2C_BUS_STAT_BS_SC) {
++                      cpu_relax();
++              } else {
++                      spin_lock_irqsave(&priv->lock, flags);
++
++                      if (FALCON_I2C_ERROR(priv)) {
++                              ret = priv->status;
++
++                              dev_dbg(priv->dev, "bus ready wait error 0x%08lx\n", priv->status);
++
++                              FALCON_I2C_ERROR_CLEAR(priv);
++                      } else {
++                              ret = 0;
++                      }
++
++                      spin_unlock_irqrestore(&priv->lock, flags);
++
++                      return ret;
++              }
++      }
++
++      dev_dbg(priv->dev, "bus ready wait timeout\n");
++
++      return -ETIME;
++}
++
++static int falcon_i2c_wait(struct falcon_i2c *priv, unsigned long status)
++{
++      int ret = 0;
++      unsigned long flags;
++      unsigned int timeout;
++
++      spin_lock_irqsave(&priv->lock, flags);
++
++      priv->status &= FALCON_I2C_BURST_REQ;
++
++      /* check if the event already occurred */
++      if ((priv->status & status) == status) {
++              priv->status &= ~status;
++              spin_unlock_irqrestore(&priv->lock, flags);
++
++              return 0;
++      }
++
++      spin_unlock_irqrestore(&priv->lock, flags);
++
++      /* unmask burst interrupts */
++      i2c_w32_mask(0, I2C_IMSC_LBREQ_INT_EN | I2C_IMSC_BREQ_INT_EN, imsc);
++
++      for (timeout = 0; timeout < FALCON_I2C_WAIT_TIMEOUT; timeout++) {
++              /* wait for the data request */
++              wait_for_completion_timeout(&priv->done, HZ / 10);
++
++              /* handle errors */
++              spin_lock_irqsave(&priv->lock, flags);
++
++              if (FALCON_I2C_ERROR(priv)) {
++                      dev_dbg(priv->dev, "wait error 0x%08lx (waiting for 0x%08lx)\n",
++                          priv->status,
++                          status);
++
++                      if (priv->status & FALCON_I2C_NACK)
++                              ret = -ENXIO;
++                      else
++                              ret = -EREMOTEIO;
++
++                      FALCON_I2C_ERROR_CLEAR(priv);
++              } else {
++                      if ((priv->status & status) == status) {
++                              priv->status &= ~status;
++                              spin_unlock_irqrestore(&priv->lock, flags);
++
++                              return 0;
++                      }
++              }
++
++              spin_unlock_irqrestore(&priv->lock, flags);
++
++              if (ret)
++                      return ret;
++      }
++
++      dev_dbg(priv->dev, "wait timeout error 0x%08lx (waiting for 0x%08lx)\n",
++          priv->status,
++          status);
++
++      return -ETIME;
++}
++
++static int falcon_i2c_tx(struct falcon_i2c *priv, int ten_bit, u16 addr,
++                       u8 *buf, int len)
++{
++      int i;
++      int ret;
++
++      dev_dbg(priv->dev, "%s\n", __func__);
++
++      /* tell fifo the number of bytes we are going to send */
++      i2c_w32(len + (ten_bit ? 2 : 1), tps_ctrl);
++
++      /* wait for the data request */
++      ret = falcon_i2c_wait(priv, FALCON_I2C_BURST_REQ);
++      if (ret)
++              return ret;
++
++      /* send slave address */
++      if (ten_bit) {
++              i2c_w32(0x78 | ((addr >> 7) & 0x7), txd);
++              i2c_w32(0x78 | ((addr & 0x7f) << 1) | 0, txd);
++      } else {
++              i2c_w32((addr << 1) | 0, txd);
++      }
++
++      /* fill fifo */
++      for (i = 0; i < len; i++) {
++              ret = falcon_i2c_wait(priv, FALCON_I2C_BURST_REQ);
++              if (ret)
++                      return ret;
++
++              i2c_w32(buf[i], txd);
++      }
++
++      return falcon_i2c_wait(priv, FALCON_I2C_TX_END);
++}
++
++static int falcon_i2c_rx(struct falcon_i2c *priv, int ten_bit, u16 addr,
++                       u8 *buf, int len)
++{
++      int i;
++      int ret;
++
++      dev_dbg(priv->dev, "%s\n", __func__);
++
++      /* we need to transmit address only */
++      i2c_w32(ten_bit ? 2 : 1, tps_ctrl);
++
++      /* set maximum received packet size */
++      i2c_w32(len, mrps_ctrl);
++
++      /* wait for the data request */
++      ret = falcon_i2c_wait(priv, FALCON_I2C_BURST_REQ);
++      if (ret)
++              return ret;
++
++      /* write down the address */
++      if (ten_bit) {
++              i2c_w32(0x78 | ((addr >> 7) & 0x7), txd);
++              i2c_w32(0x78 | ((addr & 0x7f) << 1) | 1, txd);
++      } else {
++              i2c_w32((addr << 1) | 1, txd);
++      }
++
++      /* wait for the read request */
++      ret = falcon_i2c_wait(priv, FALCON_I2C_TX_END
++#ifndef FALCON_FIX_ME
++                            | FALCON_I2C_ADDR_MATCH
++#endif
++                            | FALCON_I2C_RX);
++
++      if (ret)
++              return ret;
++
++      /* read bytes */
++      for (i = 0; i < len; i++) {
++#ifdef FALCON_FIX_ME
++              while (i2c_r32(rps_stat) == 0)
++                      cpu_relax();
++#else
++              ret = falcon_i2c_wait(priv, FALCON_I2C_BURST_REQ);
++
++              if (ret)
++                      return ret;
++#endif
++
++              buf[i] = i2c_r32(rxd);
++      }
++
++#ifndef FALCON_FIX_ME
++      /* wait for transmission end */
++      return falcon_i2c_wait(priv, FALCON_I2C_TX_END);
++#else
++      return 0;
++#endif
++}
++
++static int falcon_i2c_xfer_msg(struct falcon_i2c *priv, struct i2c_msg *msg)
++{
++      int ret;
++      int ten_bit;
++      unsigned long flags;
++
++      dev_dbg(priv->dev, "%s %u byte(s) %s 0x%02x\n",
++              (msg->flags & I2C_M_RD) ? "read" : "write", msg->len,
++              (msg->flags & I2C_M_RD) ? "from" : "to", msg->addr);
++
++      if (msg->flags & I2C_M_TEN)
++              ten_bit = 1;
++      else
++              ten_bit = 0;
++
++      /* reconfigure bus if need to send message in different address mode */
++      spin_lock_irqsave(&priv->lock, flags);
++      if (ten_bit != priv->ten_bit) {
++
++              /* disable bus */
++              i2c_w32_mask(I2C_RUN_CTRL_RUN_EN, 0, run_ctrl);
++
++              /* reconfigure address */
++              falcon_addr_configure(priv, ten_bit);
++
++              /* enable bus */
++              i2c_w32_mask(0, I2C_RUN_CTRL_RUN_EN, run_ctrl);
++
++              priv->ten_bit = ten_bit;
++      }
++      spin_unlock_irqrestore(&priv->lock, flags);
++
++      /* read/write actual message */
++      if (msg->flags & I2C_M_RD)
++              ret = falcon_i2c_rx(priv, ten_bit, msg->addr, msg->buf,
++                                  msg->len);
++      else
++              ret = falcon_i2c_tx(priv, ten_bit, msg->addr, msg->buf,
++                                  msg->len);
++
++      if (ret)
++              return ret;
++
++      return 0;
++}
++
++static int falcon_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msg,
++                         int num)
++{
++      int i;
++      int ret;
++      unsigned long flags;
++      struct falcon_i2c *priv = i2c_get_adapdata(adap);
++
++      dev_dbg(priv->dev, "xfer %u messages\n", num);
++
++      /* transfer each message */
++      for (i = 0; i < num; i++) {
++#ifdef FALCON_FIX_ME
++              /* disable bus */
++              i2c_w32_mask(I2C_RUN_CTRL_RUN_EN, 0, run_ctrl);
++              /* enable bus */
++              i2c_w32_mask(0, I2C_RUN_CTRL_RUN_EN, run_ctrl);
++#endif
++
++              /* clear bus status */
++              spin_lock_irqsave(&priv->lock, flags);
++              priv->status = 0;
++              spin_unlock_irqrestore(&priv->lock, flags);
++
++              /* wait for the bus to become ready */
++              ret = falcon_i2c_ready(priv);
++              if (ret)
++                      return ret;
++
++              /* transfer message */
++              ret = falcon_i2c_xfer_msg(priv, &msg[i]);
++
++              if (ret)
++                      return ret;
++
++              /* check for unhandled errors */
++              spin_lock_irqsave(&priv->lock, flags);
++              if (FALCON_I2C_ERROR(priv))
++                      ret = priv->status;
++              spin_unlock_irqrestore(&priv->lock, flags);
++
++              if (ret) {
++                      dev_warn(priv->dev, "message %u unhandled error 0x%x\n",
++                              i, ret);
++
++                      return ret;
++              }
++      }
++
++      return 0;
++}
++
++static u32 falcon_i2c_func(struct i2c_adapter *adap)
++{
++      return I2C_FUNC_I2C | I2C_FUNC_10BIT_ADDR | I2C_FUNC_SMBUS_EMUL;
++}
++
++static struct i2c_algorithm falcon_i2c_algorithm = {
++      .master_xfer    = falcon_i2c_xfer,
++      .functionality  = falcon_i2c_func,
++};
++
++static int falcon_i2c_hw_init(struct i2c_adapter *adap)
++{
++      struct falcon_i2c *priv = i2c_get_adapdata(adap);
++
++      /* disable bus */
++      i2c_w32_mask(I2C_RUN_CTRL_RUN_EN, 0, run_ctrl);
++
++      /* set normal operation clock divider */
++      i2c_w32(1 << I2C_CLC_RMC_OFFSET, clc);
++
++      /* set frequency */
++      if (priv->mode == FALCON_I2C_MODE_100) {
++              dev_dbg(priv->dev, "set standard mode (100 kHz)\n");
++
++              i2c_w32(0, fdiv_high_cfg);
++
++              i2c_w32((1 << I2C_FDIV_CFG_INC_OFFSET)
++                      | (499 << I2C_FDIV_CFG_DEC_OFFSET),
++                      fdiv_cfg);
++      } else if (priv->mode == FALCON_I2C_MODE_400) {
++              dev_dbg(priv->dev, "set fast mode (400 kHz)\n");
++
++              i2c_w32(0, fdiv_high_cfg);
++
++              i2c_w32((1 << I2C_FDIV_CFG_INC_OFFSET)
++                      | (124 << I2C_FDIV_CFG_DEC_OFFSET),
++                      fdiv_cfg);
++      } else if (priv->mode == FALCON_I2C_MODE_3400) {
++              dev_dbg(priv->dev, "set high mode (3.4 MHz)\n");
++
++              i2c_w32(0, fdiv_cfg);
++
++              /* TODO recalculate value for 100MHz input */
++              i2c_w32((41 << I2C_FDIV_CFG_INC_OFFSET)
++                      | (152 << I2C_FDIV_CFG_DEC_OFFSET),
++                      fdiv_high_cfg);
++      } else {
++              dev_warn(priv->dev, "unknown mode\n");
++
++              return -ENODEV;
++      }
++
++      /* configure fifo */
++      i2c_w32(I2C_FIFO_CFG_TXFC /* tx fifo as flow controller */
++              | I2C_FIFO_CFG_RXFC /* rx fifo as flow controller */
++              | I2C_FIFO_CFG_TXFA_TXFA2 /* tx fifo 4-byte aligned */
++              | I2C_FIFO_CFG_RXFA_RXFA2 /* rx fifo 4-byte aligned */
++              | I2C_FIFO_CFG_TXBS_TXBS0 /* tx fifo burst size is 1 word */
++              | I2C_FIFO_CFG_RXBS_RXBS0, /* rx fifo burst size is 1 word */
++              fifo_cfg);
++
++      /* configure address */
++      falcon_addr_configure(priv, priv->ten_bit);
++
++      /* enable bus */
++      i2c_w32_mask(0, I2C_RUN_CTRL_RUN_EN, run_ctrl);
++
++      /* mask burst interrupts */
++      i2c_w32_mask(I2C_IMSC_LBREQ_INT_EN | I2C_IMSC_BREQ_INT_EN, 0, imsc);
++
++      /* enable interrupts */
++      i2c_w32(I2C_IMSC_LBREQ_INT_EN
++              | I2C_IMSC_BREQ_INT_EN
++              | I2C_IMSC_I2C_P_INT_EN
++              | I2C_IMSC_I2C_ERR_INT_EN,
++              imsc);
++
++      return 0;
++}
++
++static int __devinit falcon_i2c_probe(struct platform_device *pdev)
++{
++      int ret = 0;
++      struct falcon_i2c *priv;
++      struct i2c_adapter *adap;
++      struct resource *mmres, *ioarea,
++                      *irqres_lb, *irqres_b, *irqres_err, *irqres_p;
++      struct clk *clk;
++
++      dev_dbg(&pdev->dev, "probing\n");
++
++      mmres = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++      irqres_lb = platform_get_resource_byname(pdev, IORESOURCE_IRQ,
++                                               "i2c_lb");
++      irqres_b = platform_get_resource_byname(pdev, IORESOURCE_IRQ, "i2c_b");
++      irqres_err = platform_get_resource_byname(pdev, IORESOURCE_IRQ,
++                                                "i2c_err");
++      irqres_p = platform_get_resource_byname(pdev, IORESOURCE_IRQ, "i2c_p");
++
++      if (!mmres || !irqres_lb || !irqres_b || !irqres_err || !irqres_p) {
++              dev_err(&pdev->dev, "no resources\n");
++              return -ENODEV;
++      }
++
++      clk = clk_get(&pdev->dev, "fpi");
++      if (IS_ERR(clk)) {
++              dev_err(&pdev->dev, "failed to get fpi clk\n");
++              return -ENOENT;
++      }
++
++      if (clk_get_rate(clk) != 100000000) {
++              dev_err(&pdev->dev, "input clock is not 100MHz\n");
++              return -ENOENT;
++      }
++
++      /* allocate private data */
++      priv = kzalloc(sizeof(*priv), GFP_KERNEL);
++      if (!priv) {
++              dev_err(&pdev->dev, "can't allocate private data\n");
++              return -ENOMEM;
++      }
++
++      adap = &priv->adap;
++      i2c_set_adapdata(adap, priv);
++      adap->owner = THIS_MODULE;
++      adap->class = I2C_CLASS_HWMON | I2C_CLASS_SPD;
++      strlcpy(adap->name, DRV_NAME "-adapter", sizeof(adap->name));
++      adap->algo = &falcon_i2c_algorithm;
++
++      priv->ten_bit = 0;
++      priv->mode = FALCON_I2C_MODE_100;
++      priv->clk = clk;
++      priv->dev = &pdev->dev;
++
++      spin_lock_init(&priv->lock);
++
++      ioarea = request_mem_region(mmres->start, resource_size(mmres),
++                                       pdev->name);
++
++      if (ioarea == NULL) {
++              dev_err(&pdev->dev, "I2C region already claimed\n");
++              ret = -ENXIO;
++              goto err_free_priv;
++      }
++
++      /* map memory */
++      priv->membase = ioremap_nocache(mmres->start & ~KSEG1,
++              resource_size(mmres));
++      if (priv->membase == NULL) {
++              ret = -ENOMEM;
++              goto err_release_region;
++      }
++
++      priv->irq_lb = irqres_lb->start;
++      ret = request_irq(priv->irq_lb, falcon_i2c_isr, IRQF_DISABLED,
++                        irqres_lb->name, priv);
++      if (ret) {
++              dev_err(&pdev->dev, "can't get last burst IRQ %d\n", irqres_lb->start);
++              ret = -ENODEV;
++              goto err_unmap_mem;
++      }
++
++      priv->irq_b = irqres_b->start;
++      ret = request_irq(priv->irq_b, falcon_i2c_isr, IRQF_DISABLED,
++                        irqres_b->name, priv);
++      if (ret) {
++              dev_err(&pdev->dev, "can't get burst IRQ %d\n", irqres_b->start);
++              ret = -ENODEV;
++              goto err_free_lb_irq;
++      }
++
++      priv->irq_err = irqres_err->start;
++      ret = request_irq(priv->irq_err, falcon_i2c_isr, IRQF_DISABLED,
++                        irqres_err->name, priv);
++      if (ret) {
++              dev_err(&pdev->dev, "can't get error IRQ %d\n", irqres_err->start);
++              ret = -ENODEV;
++              goto err_free_b_irq;
++      }
++
++      priv->irq_p = irqres_p->start;
++      ret = request_irq(priv->irq_p, falcon_i2c_isr, IRQF_DISABLED,
++                        irqres_p->name, priv);
++      if (ret) {
++              dev_err(&pdev->dev, "can't get protocol IRQ %d\n", irqres_p->start);
++              ret = -ENODEV;
++              goto err_free_err_irq;
++      }
++
++      dev_dbg(&pdev->dev, "mapped io-space to %p\n", priv->membase);
++      dev_dbg(&pdev->dev, "use IRQs %d, %d, %d, %d\n", irqres_lb->start,
++          irqres_b->start, irqres_err->start, irqres_p->start);
++
++      /* add our adapter to the i2c stack */
++      ret = i2c_add_numbered_adapter(adap);
++      if (ret) {
++              dev_err(&pdev->dev, "can't register I2C adapter\n");
++              goto err_free_p_irq;
++      }
++
++      platform_set_drvdata(pdev, priv);
++      i2c_set_adapdata(adap, priv);
++
++      /* print module version information */
++      dev_dbg(&pdev->dev, "module id=%u revision=%u\n",
++              (i2c_r32(id) & I2C_ID_ID_MASK) >> I2C_ID_ID_OFFSET,
++              (i2c_r32(id) & I2C_ID_REV_MASK) >> I2C_ID_REV_OFFSET);
++
++      init_completion(&priv->done);
++
++      /* initialize HW */
++      ret = falcon_i2c_hw_init(adap);
++      if (ret) {
++              dev_err(&pdev->dev, "can't configure adapter\n");
++              goto err_remove_adapter;
++      }
++
++      return 0;
++
++err_remove_adapter:
++      i2c_del_adapter(adap);
++      platform_set_drvdata(pdev, NULL);
++
++err_free_p_irq:
++      free_irq(priv->irq_p, priv);
++
++err_free_err_irq:
++      free_irq(priv->irq_err, priv);
++
++err_free_b_irq:
++      free_irq(priv->irq_b, priv);
++
++err_free_lb_irq:
++      free_irq(priv->irq_lb, priv);
++
++err_unmap_mem:
++      iounmap(priv->membase);
++
++err_release_region:
++      release_mem_region(mmres->start, resource_size(mmres));
++
++err_free_priv:
++      kfree(priv);
++
++      return ret;
++}
++
++static int __devexit falcon_i2c_remove(struct platform_device *pdev)
++{
++      struct falcon_i2c *priv = platform_get_drvdata(pdev);
++      struct resource *mmres;
++
++      /* disable bus */
++      i2c_w32_mask(I2C_RUN_CTRL_RUN_EN, 0, run_ctrl);
++
++      /* remove driver */
++      platform_set_drvdata(pdev, NULL);
++      i2c_del_adapter(&priv->adap);
++
++      free_irq(priv->irq_lb, priv);
++      free_irq(priv->irq_b, priv);
++      free_irq(priv->irq_err, priv);
++      free_irq(priv->irq_p, priv);
++
++      kfree(priv);
++
++      mmres = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++      release_mem_region(mmres->start, resource_size(mmres));
++
++      dev_dbg(&pdev->dev, "removed\n");
++
++      return 0;
++}
++
++static struct platform_driver falcon_i2c_driver = {
++      .probe  = falcon_i2c_probe,
++      .remove = __devexit_p(falcon_i2c_remove),
++      .driver = {
++              .name   = DRV_NAME,
++              .owner  = THIS_MODULE,
++      },
++};
++
++static int __init falcon_i2c_init(void)
++{
++      int ret;
++
++      ret = platform_driver_register(&falcon_i2c_driver);
++
++      if (ret)
++              printk(KERN_DEBUG DRV_NAME ": can't register platform driver");
++
++      return ret;
++}
++
++static void __exit falcon_i2c_exit(void)
++{
++      platform_driver_unregister(&falcon_i2c_driver);
++}
++
++module_init(falcon_i2c_init);
++module_exit(falcon_i2c_exit);
++
++MODULE_DESCRIPTION("Lantiq FALC(tm) ON - I2C bus adapter");
++MODULE_ALIAS("platform:i2c_falcon");
++MODULE_LICENSE("GPL");
diff --git a/target/linux/lantiq/patches/915-falcon-spi-flash.patch b/target/linux/lantiq/patches/915-falcon-spi-flash.patch
new file mode 100644 (file)
index 0000000..d24183e
--- /dev/null
@@ -0,0 +1,497 @@
+--- a/drivers/spi/Makefile
++++ b/drivers/spi/Makefile
+@@ -22,6 +22,7 @@ obj-$(CONFIG_SPI_DESIGNWARE)         += dw_spi.
+ obj-$(CONFIG_SPI_DW_PCI)              += dw_spi_pci.o
+ obj-$(CONFIG_SPI_DW_MMIO)             += dw_spi_mmio.o
+ obj-$(CONFIG_SPI_EP93XX)              += ep93xx_spi.o
++obj-$(CONFIG_SPI_FALCON)              += spi_falcon.o
+ obj-$(CONFIG_SPI_GPIO)                        += spi_gpio.o
+ obj-$(CONFIG_SPI_GPIO_OLD)            += spi_gpio_old.o
+ obj-$(CONFIG_SPI_IMX)                 += spi_imx.o
+--- /dev/null
++++ b/drivers/spi/spi_falcon.c
+@@ -0,0 +1,471 @@
++/*
++ *   This program is free software; you can redistribute it and/or modify
++ *   it under the terms of the GNU General Public License as published by
++ *   the Free Software Foundation; either version 2 of the License, or
++ *   (at your option) any later version.
++ *
++ *   This program is distributed in the hope that it will be useful,
++ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *   GNU General Public License for more details.
++ *
++ *   You should have received a copy of the GNU General Public License
++ *   along with this program; if not, write to the Free Software
++ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
++ */
++
++#include <linux/module.h>
++#include <linux/device.h>
++#include <linux/platform_device.h>
++#include <linux/spi/spi.h>
++#include <linux/delay.h>
++#include <linux/workqueue.h>
++
++#include <lantiq.h> /* ebu_lock */
++#include <falcon/ebu_reg.h>
++#include <falcon/sys1_reg.h>
++
++#define DRV_NAME                      "falcon_spi"
++
++#define FALCON_SPI_XFER_BEGIN         (1 << 0)
++#define FALCON_SPI_XFER_END           (1 << 1)
++
++/* mapping for access macros */
++#define reg_r32(reg)                  __raw_readl(reg)
++#define reg_w32(val, reg)             __raw_writel(val, reg)
++#define reg_w32_mask(clear, set, reg) reg_w32((reg_r32(reg) \
++                                               & ~(clear)) | (set), reg)
++#define reg_r32_table(reg, idx)               reg_r32(&((uint32_t *)&reg)[idx])
++#define reg_w32_table(val, reg, idx)  reg_w32(val, &((uint32_t *)&reg)[idx])
++
++#define ebu                           (priv->ebu_membase)
++#define sys1                          (priv->sys1_membase)
++
++struct falcon_spi {
++      u32 sfcmd; /* for caching of opcode, direction, ... */
++
++      struct spi_master *master;
++
++      struct gpon_reg_ebu __iomem *ebu_membase;
++      struct gpon_reg_sys1 __iomem *sys1_membase;
++};
++
++int falcon_spi_xfer(struct spi_device *spi,
++                  struct spi_transfer *t,
++                  unsigned long flags)
++{
++      struct device *dev = &spi->dev;
++      struct falcon_spi *priv = spi_master_get_devdata(spi->master);
++      const u8 *txp = t->tx_buf;
++      u8 *rxp = t->rx_buf;
++      unsigned int bytelen = ((8 * t->len + 7) / 8);
++      unsigned int len, alen, dumlen;
++      u32 val;
++      enum {
++              state_init,
++              state_command_prepare,
++              state_write,
++              state_read,
++              state_disable_cs,
++              state_end
++      } state = state_init;
++
++      do {
++              switch (state) {
++              case state_init: /* detect phase of upper layer sequence */
++              {
++                      /* initial write ? */
++                      if (flags & FALCON_SPI_XFER_BEGIN) {
++                              if (!txp) {
++                                      dev_err(dev,
++                                              "BEGIN without tx data!\n");
++                                      return -1;
++                              }
++                              /*
++                               * Prepare the parts of the sfcmd register,
++                               * which should not
++                               * change during a sequence!
++                               * Only exception are the length fields,
++                               * especially alen and dumlen.
++                               */
++
++                              priv->sfcmd = ((spi->chip_select
++                                              << SFCMD_CS_OFFSET)
++                                             & SFCMD_CS_MASK);
++                              priv->sfcmd |= SFCMD_KEEP_CS_KEEP_SELECTED;
++                              priv->sfcmd |= *txp;
++                              txp++;
++                              bytelen--;
++                              if (bytelen) {
++                                      /* more data:
++                                       * maybe address and/or dummy */
++                                      state = state_command_prepare;
++                                      break;
++                              } else {
++                                      dev_dbg(dev, "write cmd %02X\n",
++                                              priv->sfcmd & SFCMD_OPC_MASK);
++                              }
++                      }
++                      /* continued write ? */
++                      if (txp && bytelen) {
++                              state = state_write;
++                              break;
++                      }
++                      /* read data? */
++                      if (rxp && bytelen) {
++                              state = state_read;
++                              break;
++                      }
++                      /* end of sequence? */
++                      if (flags & FALCON_SPI_XFER_END)
++                              state = state_disable_cs;
++                      else
++                              state = state_end;
++                      break;
++              }
++              case state_command_prepare: /* collect tx data for
++                                             address and dummy phase */
++              {
++                      /* txp is valid, already checked */
++                      val = 0;
++                      alen = 0;
++                      dumlen = 0;
++                      while (bytelen > 0) {
++                              if (alen < 3) {
++                                      val = (val<<8)|(*txp++);
++                                      alen++;
++                              } else if ((dumlen < 15) && (*txp == 0)) {
++                                      /*
++                                       * assume dummy bytes are set to 0
++                                       * from upper layer
++                                       */
++                                      dumlen++;
++                                      txp++;
++                              } else
++                                      break;
++                              bytelen--;
++                      }
++                      priv->sfcmd &= ~(SFCMD_ALEN_MASK | SFCMD_DUMLEN_MASK);
++                      priv->sfcmd |= (alen << SFCMD_ALEN_OFFSET) |
++                                       (dumlen << SFCMD_DUMLEN_OFFSET);
++                      if (alen > 0)
++                              ebu_w32(val, sfaddr);
++
++                      dev_dbg(dev, "write cmd %02X, alen=%d "
++                              "(addr=%06X) dumlen=%d\n",
++                              priv->sfcmd & SFCMD_OPC_MASK,
++                              alen, val, dumlen);
++
++                      if (bytelen > 0) {
++                              /* continue with write */
++                              state = state_write;
++                      } else if (flags & FALCON_SPI_XFER_END) {
++                              /* end of sequence? */
++                              state = state_disable_cs;
++                      } else {
++                              /* go to end and expect another
++                               * call (read or write) */
++                              state = state_end;
++                      }
++                      break;
++              }
++              case state_write:
++              {
++                      /* txp still valid */
++                      priv->sfcmd |= SFCMD_DIR_WRITE;
++                      len = 0;
++                      val = 0;
++                      do {
++                              if (bytelen--)
++                                      val |= (*txp++) << (8 * len++);
++                              if ((flags & FALCON_SPI_XFER_END)
++                                  && (bytelen == 0)) {
++                                      priv->sfcmd &=
++                                              ~SFCMD_KEEP_CS_KEEP_SELECTED;
++                              }
++                              if ((len == 4) || (bytelen == 0)) {
++                                      ebu_w32(val, sfdata);
++                                      ebu_w32(priv->sfcmd
++                                              | (len<<SFCMD_DLEN_OFFSET),
++                                              sfcmd);
++                                      len = 0;
++                                      val = 0;
++                                      priv->sfcmd &= ~(SFCMD_ALEN_MASK
++                                                       | SFCMD_DUMLEN_MASK);
++                              }
++                      } while (bytelen);
++                      state = state_end;
++                      break;
++              }
++              case state_read:
++              {
++                      /* read data */
++                      priv->sfcmd &= ~SFCMD_DIR_WRITE;
++                      do {
++                              if ((flags & FALCON_SPI_XFER_END)
++                                  && (bytelen <= 4)) {
++                                      priv->sfcmd &=
++                                              ~SFCMD_KEEP_CS_KEEP_SELECTED;
++                              }
++                              len = (bytelen > 4) ? 4 : bytelen;
++                              bytelen -= len;
++                              ebu_w32(priv->sfcmd
++                                      |(len<<SFCMD_DLEN_OFFSET), sfcmd);
++                              priv->sfcmd &= ~(SFCMD_ALEN_MASK
++                                               | SFCMD_DUMLEN_MASK);
++                              do {
++                                      val = ebu_r32(sfstat);
++                                      if (val & SFSTAT_CMD_ERR) {
++                                              /* reset error status */
++                                              dev_err(dev, "SFSTAT: CMD_ERR "
++                                                      "(%x)\n", val);
++                                              ebu_w32(SFSTAT_CMD_ERR, sfstat);
++                                              return -1;
++                                      }
++                              } while (val & SFSTAT_CMD_PEND);
++                              val = ebu_r32(sfdata);
++                              do {
++                                      *rxp = (val & 0xFF);
++                                      rxp++;
++                                      val >>= 8;
++                                      len--;
++                              } while (len);
++                      } while (bytelen);
++                      state = state_end;
++                      break;
++              }
++              case state_disable_cs:
++              {
++                      priv->sfcmd &= ~SFCMD_KEEP_CS_KEEP_SELECTED;
++                      ebu_w32(priv->sfcmd | (0<<SFCMD_DLEN_OFFSET), sfcmd);
++                      val = ebu_r32(sfstat);
++                      if (val & SFSTAT_CMD_ERR) {
++                              /* reset error status */
++                              dev_err(dev, "SFSTAT: CMD_ERR (%x)\n", val);
++                              ebu_w32(SFSTAT_CMD_ERR, sfstat);
++                              return -1;
++                      }
++                      state = state_end;
++                      break;
++              }
++              case state_end:
++                      break;
++              }
++      } while (state != state_end);
++
++      return 0;
++}
++
++static int falcon_spi_setup(struct spi_device *spi)
++{
++      struct device *dev = &spi->dev;
++      struct falcon_spi *priv = spi_master_get_devdata(spi->master);
++      const u32 ebuclk = 100*1000*1000;
++      unsigned int i;
++      unsigned long flags;
++
++      dev_dbg(dev, "setup\n");
++
++      if (spi->master->bus_num > 0 || spi->chip_select > 0)
++              return -ENODEV;
++
++      spin_lock_irqsave(&ebu_lock, flags);
++
++      if (ebuclk < spi->max_speed_hz) {
++              /* set EBU clock to 100 MHz */
++              sys1_w32_mask(0, EBUCC_EBUDIV_SELF100, ebucc);
++              i = 1; /* divider */
++      } else {
++              /* set EBU clock to 50 MHz */
++              sys1_w32_mask(EBUCC_EBUDIV_SELF100, 0, ebucc);
++
++              /* search for suitable divider */
++              for (i = 1; i < 7; i++) {
++                      if (ebuclk / i <= spi->max_speed_hz)
++                              break;
++              }
++      }
++
++      /* setup period of serial clock */
++      ebu_w32_mask(SFTIME_SCKF_POS_MASK
++                   | SFTIME_SCKR_POS_MASK
++                   | SFTIME_SCK_PER_MASK,
++                   (i << SFTIME_SCKR_POS_OFFSET)
++                   | (i << (SFTIME_SCK_PER_OFFSET + 1)),
++                   sftime);
++
++      /* set some bits of unused_wd, to not trigger HOLD/WP
++       * signals on non QUAD flashes */
++      ebu_w32((SFIO_UNUSED_WD_MASK & (0x8|0x4)), sfio);
++
++      ebu_w32(BUSRCON0_AGEN_SERIAL_FLASH | BUSRCON0_PORTW_8_BIT_MUX,
++              busrcon0);
++      ebu_w32(BUSWCON0_AGEN_SERIAL_FLASH, buswcon0);
++      /* set address wrap around to maximum for 24-bit addresses */
++      ebu_w32_mask(SFCON_DEV_SIZE_MASK, SFCON_DEV_SIZE_A23_0, sfcon);
++
++      spin_unlock_irqrestore(&ebu_lock, flags);
++
++      return 0;
++}
++
++static int falcon_spi_transfer(struct spi_device *spi, struct spi_message *m)
++{
++      struct falcon_spi *priv = spi_master_get_devdata(spi->master);
++      struct spi_transfer *t;
++      unsigned long spi_flags;
++      unsigned long flags;
++      int ret = 0;
++
++      priv->sfcmd = 0;
++      m->actual_length = 0;
++
++      spi_flags = FALCON_SPI_XFER_BEGIN;
++      list_for_each_entry(t, &m->transfers, transfer_list) {
++              if (list_is_last(&t->transfer_list, &m->transfers))
++                      spi_flags |= FALCON_SPI_XFER_END;
++
++              spin_lock_irqsave(&ebu_lock, flags);
++              ret = falcon_spi_xfer(spi, t, spi_flags);
++              spin_unlock_irqrestore(&ebu_lock, flags);
++
++              if (ret)
++                      break;
++
++              m->actual_length += t->len;
++
++              if (t->delay_usecs || t->cs_change)
++                      BUG();
++
++              spi_flags = 0;
++      }
++
++      m->status = ret;
++      m->complete(m->context);
++
++      return 0;
++}
++
++static void falcon_spi_cleanup(struct spi_device *spi)
++{
++      struct device *dev = &spi->dev;
++
++      dev_dbg(dev, "cleanup\n");
++}
++
++static int __devinit falcon_spi_probe(struct platform_device *pdev)
++{
++      struct device *dev = &pdev->dev;
++      struct falcon_spi *priv;
++      struct spi_master *master;
++      struct resource *memres_ebu, *memres_sys1;
++      int ret;
++
++      dev_dbg(dev, "probing\n");
++
++      memres_ebu = platform_get_resource_byname(pdev, IORESOURCE_MEM, "ebu");
++      memres_sys1 = platform_get_resource_byname(pdev, IORESOURCE_MEM,
++                                                 "sys1");
++
++      if (!memres_ebu || !memres_sys1) {
++              dev_err(dev, "no resources\n");
++              return -ENODEV;
++      }
++
++      master = spi_alloc_master(&pdev->dev, sizeof(*priv));
++      if (!master) {
++              dev_err(dev, "no memory for spi_master\n");
++              return -ENOMEM;
++      }
++
++      priv = spi_master_get_devdata(master);
++
++      priv->ebu_membase = ioremap_nocache(memres_ebu->start & ~KSEG1,
++                                          resource_size(memres_ebu));
++
++      if (!priv->ebu_membase) {
++              dev_err(dev, "can't map ebu memory\n");
++
++              ret = -ENOMEM;
++              goto free_master;
++      }
++
++      priv->sys1_membase = ioremap_nocache(memres_sys1->start & ~KSEG1,
++                                          resource_size(memres_sys1));
++
++      if (!priv->sys1_membase) {
++              dev_err(dev, "can't map sys1 memory\n");
++
++              ret = -ENOMEM;
++              goto unmap_ebu;
++      }
++
++      priv->master = master;
++
++      master->mode_bits = SPI_MODE_3;
++      master->num_chipselect = 1;
++      master->bus_num = 0;
++
++      master->setup = falcon_spi_setup;
++      master->transfer = falcon_spi_transfer;
++      master->cleanup = falcon_spi_cleanup;
++
++      platform_set_drvdata(pdev, priv);
++
++      ret = spi_register_master(master);
++      if (ret)
++              goto unmap_sys1;
++
++      return 0;
++
++unmap_sys1:
++      iounmap(priv->sys1_membase);
++
++unmap_ebu:
++      iounmap(priv->ebu_membase);
++
++free_master:
++      spi_master_put(master);
++
++      return ret;
++}
++
++static int __devexit falcon_spi_remove(struct platform_device *pdev)
++{
++      struct device *dev = &pdev->dev;
++      struct falcon_spi *priv = platform_get_drvdata(pdev);
++
++      dev_dbg(dev, "removed\n");
++
++      spi_unregister_master(priv->master);
++
++      iounmap(priv->sys1_membase);
++      iounmap(priv->ebu_membase);
++
++      return 0;
++}
++
++static struct platform_driver falcon_spi_driver = {
++      .probe  = falcon_spi_probe,
++      .remove = __devexit_p(falcon_spi_remove),
++      .driver = {
++              .name   = DRV_NAME,
++              .owner  = THIS_MODULE
++      }
++};
++
++static int __init falcon_spi_init(void)
++{
++      return platform_driver_register(&falcon_spi_driver);
++}
++
++static void __exit falcon_spi_exit(void)
++{
++      platform_driver_unregister(&falcon_spi_driver);
++}
++
++module_init(falcon_spi_init);
++module_exit(falcon_spi_exit);
++
++MODULE_LICENSE("GPL");
++MODULE_DESCRIPTION("Lantiq Falcon SPI controller driver");
+--- a/drivers/spi/Kconfig
++++ b/drivers/spi/Kconfig
+@@ -169,6 +169,10 @@ config SPI_LM70_LLP
+         which interfaces to an LM70 temperature sensor using
+         a parallel port.
++config SPI_FALCON
++      tristate "Falcon SPI controller support"
++      depends on SOC_LANTIQ_FALCON
++
+ config SPI_MPC52xx
+       tristate "Freescale MPC52xx SPI (non-PSC) controller support"
+       depends on PPC_MPC52xx && SPI
diff --git a/target/linux/lantiq/patches/916-m25p80-fast-read.patch b/target/linux/lantiq/patches/916-m25p80-fast-read.patch
new file mode 100644 (file)
index 0000000..3bbe57f
--- /dev/null
@@ -0,0 +1,10 @@
+--- a/drivers/mtd/devices/m25p80.c
++++ b/drivers/mtd/devices/m25p80.c
+@@ -206,6 +206,7 @@ static void m25p_addr2cmd(struct m25p *f
+       cmd[1] = addr >> (flash->addr_width * 8 -  8);
+       cmd[2] = addr >> (flash->addr_width * 8 - 16);
+       cmd[3] = addr >> (flash->addr_width * 8 - 24);
++      cmd[4] = 0;
+ }
+ static int m25p_cmdsz(struct m25p *flash)
diff --git a/target/linux/lantiq/patches/920-falcon-easy98000-cpld-led.patch b/target/linux/lantiq/patches/920-falcon-easy98000-cpld-led.patch
new file mode 100644 (file)
index 0000000..6e8b302
--- /dev/null
@@ -0,0 +1,193 @@
+--- a/arch/mips/lantiq/falcon/Makefile
++++ b/arch/mips/lantiq/falcon/Makefile
+@@ -1,3 +1,4 @@
+ obj-y := clk-falcon.o devices.o gpio.o prom.o sysctrl.o reset.o
+ obj-y += softdog_vpe.o
+ obj-$(CONFIG_LANTIQ_MACH_EASY98000) += mach-easy98000.o
++obj-$(CONFIG_LANTIQ_MACH_EASY98000) += dev-leds-easy98000-cpld.o
+--- /dev/null
++++ b/arch/mips/lantiq/falcon/dev-leds-easy98000-cpld.c
+@@ -0,0 +1,160 @@
++/*
++ *  EASY98000 CPLD LED driver
++ *
++ *  Copyright (C) 2010 Ralph Hempel <ralph.hempel@lantiq.com>
++ *
++ *  This program is free software; you can redistribute it and/or modify it
++ *  under the terms of the GNU General Public License version 2  as published
++ *  by the Free Software Foundation.
++ *
++ */
++
++#include <linux/kernel.h>
++#include <linux/version.h>
++#include <linux/types.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/errno.h>
++#include <linux/leds.h>
++#include <linux/slab.h>
++
++#include "dev-leds-easy98000-cpld.h"
++
++const char *led_name[8] = {
++      "ge0_act",
++      "ge0_link",
++      "ge1_act",
++      "ge1_link",
++      "fe2_act",
++      "fe2_link",
++      "fe3_act",
++      "fe3_link"
++};
++
++#define cpld_base7                    ((u16 *)(KSEG1 | 0x17c0000c))
++#define cpld_base8                    ((u16 *)(KSEG1 | 0x17c00012))
++
++#define lq_r16(reg)                   __raw_readw(reg)
++#define lq_w16(val, reg)              __raw_writew(val, reg)
++
++struct cpld_led_dev {
++      struct led_classdev     cdev;
++      u8                      mask;
++      u16                     *base;
++};
++
++struct cpld_led_drvdata {
++      struct cpld_led_dev     *led_devs;
++      int                     num_leds;
++};
++
++void led_set(u8 mask, u16 *base)
++{
++      lq_w16(lq_r16(base) | mask, base);
++}
++
++void led_clear(u8 mask, u16 *base)
++{
++      lq_w16(lq_r16(base) & (~mask), base);
++}
++
++void led_blink_clear(u8 mask, u16 *base)
++{
++      led_clear(mask, base);
++}
++
++static void led_brightness(struct led_classdev *led_cdev,
++                             enum led_brightness value)
++{
++      struct cpld_led_dev *led_dev =
++          container_of(led_cdev, struct cpld_led_dev, cdev);
++
++      if (value)
++              led_set(led_dev->mask, led_dev->base);
++      else
++              led_clear(led_dev->mask, led_dev->base);
++}
++
++static int led_probe(struct platform_device *pdev)
++{
++      int i;
++      char name[32];
++      struct cpld_led_drvdata *drvdata;
++      int ret = 0;
++
++      drvdata = kzalloc(sizeof(struct cpld_led_drvdata) +
++                        sizeof(struct cpld_led_dev) * MAX_LED,
++                        GFP_KERNEL);
++      if (!drvdata)
++              return -ENOMEM;
++
++      drvdata->led_devs = (struct cpld_led_dev *) &drvdata[1];
++
++      for (i = 0; i < MAX_LED; i++) {
++              struct cpld_led_dev *led_dev = &drvdata->led_devs[i];
++              led_dev->cdev.brightness_set = led_brightness;
++              led_dev->cdev.default_trigger = NULL;
++              led_dev->mask = 1 << (i % 8);
++              if(i < 8) {
++                      sprintf(name, "easy98000-cpld:%s", led_name[i]);
++                      led_dev->base = cpld_base8;
++              } else {
++                      sprintf(name, "easy98000-cpld:red:%d", i-8);
++                      led_dev->base = cpld_base7;
++              }
++              led_dev->cdev.name = name;
++              ret = led_classdev_register(&pdev->dev, &led_dev->cdev);
++              if (ret)
++                      goto err;
++      }
++      platform_set_drvdata(pdev, drvdata);
++      return 0;
++
++err:
++      printk("led_probe: 3\n");
++      for (i = i - 1; i >= 0; i--)
++              led_classdev_unregister(&drvdata->led_devs[i].cdev);
++
++      kfree(drvdata);
++      return ret;
++}
++
++static int led_remove(struct platform_device *pdev)
++{
++      int i;
++      struct cpld_led_drvdata *drvdata = platform_get_drvdata(pdev);
++      for (i = 0; i < MAX_LED; i++)
++              led_classdev_unregister(&drvdata->led_devs[i].cdev);
++      kfree(drvdata);
++      return 0;
++}
++
++static struct platform_driver led_driver = {
++      .probe = led_probe,
++      .remove = led_remove,
++      .driver = {
++                 .name = LED_NAME,
++                 .owner = THIS_MODULE,
++                 },
++};
++
++int __init easy98000_cpld_led_init(void)
++{
++      pr_info(LED_DESC ", Version " LED_VERSION
++              " (c) Copyright 2011, Lantiq Deutschland GmbH\n");
++      return platform_driver_register(&led_driver);
++}
++
++void __exit easy98000_cpld_led_exit(void)
++{
++      platform_driver_unregister(&led_driver);
++}
++
++module_init(easy98000_cpld_led_init);
++module_exit(easy98000_cpld_led_exit);
++
++MODULE_DESCRIPTION(LED_NAME);
++MODULE_DESCRIPTION(LED_DESC);
++MODULE_AUTHOR("Ralph Hempel <ralph.hempel@lantiq.com>");
++MODULE_LICENSE("GPL v2");
++
+--- /dev/null
++++ b/arch/mips/lantiq/falcon/dev-leds-easy98000-cpld.h
+@@ -0,0 +1,20 @@
++/*
++ *  EASY98000 CPLD LED driver
++ *
++ *  Copyright (C) 2010 Ralph Hempel <ralph.hempel@lantiq.com>
++ *
++ *  This program is free software; you can redistribute it and/or modify it
++ *  under the terms of the GNU General Public License version 2  as published
++ *  by the Free Software Foundation.
++ *
++ */
++#ifndef _INCLUDE_EASY98000_CPLD_LED_H_
++#define _INCLUDE_EASY98000_CPLD_LED_H_
++
++#define LED_NAME      "easy98000_cpld_led"
++#define LED_DESC      "EASY98000 LED driver"
++#define LED_VERSION   "1.0.0"
++
++#define MAX_LED               16
++
++#endif        /* _INCLUDE_EASY98000_CPLD_LED_H_ */
diff --git a/target/linux/lantiq/patches/920-falcon-easy98020.patch b/target/linux/lantiq/patches/920-falcon-easy98020.patch
new file mode 100644 (file)
index 0000000..36a3b65
--- /dev/null
@@ -0,0 +1,120 @@
+--- /dev/null
++++ b/arch/mips/lantiq/falcon/mach-easy98020.c
+@@ -0,0 +1,97 @@
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/leds.h>
++#include <linux/gpio.h>
++#include <linux/gpio_buttons.h>
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/partitions.h>
++#include <linux/input.h>
++#include <linux/interrupt.h>
++#include <linux/spi/spi.h>
++#include <linux/spi/flash.h>
++#include <machine.h>
++
++#include "devices.h"
++#include "dev-leds-gpio.h"
++
++#define EASY98020_GPIO_LED_0 9
++#define EASY98020_GPIO_LED_1 10
++#define EASY98020_GPIO_LED_2 11
++#define EASY98020_GPIO_LED_3 12
++
++extern unsigned char lq_ethaddr[6];
++
++#ifdef CONFIG_MTD_PARTITIONS
++static struct mtd_partition easy98020_spi_partitions[] =
++{
++      {
++              .name   = "uboot",
++              .offset = 0x0,
++              .size   = 0x40000,
++      },
++      {
++              .name   = "uboot_env",
++              .offset = 0x40000,
++              .size   = 0x40000,      /* 2 sectors for redundant env. */
++      },
++      {
++              .name   = "linux",
++              .offset = 0x80000,
++              .size   = 0xF80000,     /* map only 16 MiB */
++      },
++};
++
++static struct flash_platform_data easy98020_spi_flash_platform_data = {
++      .name = "sflash",
++      .parts = easy98020_spi_partitions,
++      .nr_parts = ARRAY_SIZE(easy98020_spi_partitions)
++};
++#endif
++
++static struct spi_board_info easy98020_spi_flash_data __initdata = {
++      .modalias               = "m25p80",
++      .bus_num                = 0,
++      .chip_select            = 0,
++      .max_speed_hz           = 10 * 1000 * 1000,
++      .mode                   = SPI_MODE_3,
++#ifdef CONFIG_MTD_PARTITIONS
++      .platform_data          = &easy98020_spi_flash_platform_data
++#endif
++};
++
++static struct gpio_led easy98020_leds_gpio[] __initdata = {
++      {
++              .name           = "easy98020:green:0",
++              .gpio           = EASY98020_GPIO_LED_0,
++              .active_low     = 0,
++      }, {
++              .name           = "easy98020:green:1",
++              .gpio           = EASY98020_GPIO_LED_1,
++              .active_low     = 0,
++      }, {
++              .name           = "easy98020:green:2",
++              .gpio           = EASY98020_GPIO_LED_2,
++              .active_low     = 0,
++      }, {
++              .name           = "easy98020:green:3",
++              .gpio           = EASY98020_GPIO_LED_3,
++              .active_low     = 0,
++      }
++};
++
++static void __init easy98020_init(void)
++{
++      falcon_register_asc(0);
++      falcon_register_gpio();
++      falcon_register_wdt();
++      falcon_register_i2c();
++      falcon_register_spi_flash(&easy98020_spi_flash_data);
++      lq_add_device_leds_gpio(-1, ARRAY_SIZE(easy98020_leds_gpio),
++                                      easy98020_leds_gpio);
++      falcon_register_crypto();
++}
++
++MIPS_MACHINE(LANTIQ_MACH_EASY98020,
++                      "EASY98020",
++                      "EASY98020 Eval Board",
++                      easy98020_init);
+--- a/arch/mips/lantiq/falcon/Kconfig
++++ b/arch/mips/lantiq/falcon/Kconfig
+@@ -6,6 +6,10 @@ config LANTIQ_MACH_EASY98000
+       bool "Easy98000"
+       default y
++config LANTIQ_MACH_EASY98020
++      bool "Easy98020"
++      default y
++
+ endmenu
+ endif
+--- a/arch/mips/lantiq/falcon/Makefile
++++ b/arch/mips/lantiq/falcon/Makefile
+@@ -2,3 +2,4 @@ obj-y := clk-falcon.o devices.o gpio.o p
+ obj-y += softdog_vpe.o
+ obj-$(CONFIG_LANTIQ_MACH_EASY98000) += mach-easy98000.o
+ obj-$(CONFIG_LANTIQ_MACH_EASY98000) += dev-leds-easy98000-cpld.o
++obj-$(CONFIG_LANTIQ_MACH_EASY98020) += mach-easy98020.o
diff --git a/target/linux/lantiq/patches/930-falcon-95C3AM1.patch b/target/linux/lantiq/patches/930-falcon-95C3AM1.patch
new file mode 100644 (file)
index 0000000..618f8fb
--- /dev/null
@@ -0,0 +1,136 @@
+--- /dev/null
++++ b/arch/mips/lantiq/falcon/mach-95C3AM1.c
+@@ -0,0 +1,103 @@
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/i2c-gpio.h>
++#include <machine.h>
++
++#include "devices.h"
++#include "dev-leds-gpio.h"
++
++#define BOARD_95C3AM1_GPIO_LED_0 10
++#define BOARD_95C3AM1_GPIO_LED_1 11
++#define BOARD_95C3AM1_GPIO_LED_2 12
++#define BOARD_95C3AM1_GPIO_LED_3 13
++
++extern unsigned char lq_ethaddr[6];
++
++#ifdef CONFIG_MTD_PARTITIONS
++static struct mtd_partition board_95C3AM1_partitions[] =
++{
++      {
++              .name   = "uboot",
++              .offset = 0x0,
++              .size   = 0x40000,
++      },
++      {
++              .name   = "uboot_env",
++              .offset = 0x40000,
++              .size   = 0x40000,      /* 2 sectors for redundant env. */
++      },
++      {
++              .name   = "linux",
++              .offset = 0x80000,
++              .size   = 0xF80000,     /* map only 16 MiB */
++      },
++};
++
++static struct flash_platform_data board_95C3AM1_flash_platform_data = {
++      .name = "sflash",
++      .parts = board_95C3AM1_partitions,
++      .nr_parts = ARRAY_SIZE(board_95C3AM1_partitions)
++};
++#endif
++
++static struct spi_board_info board_95C3AM1_flash_data __initdata = {
++      .modalias               = "m25p80",
++      .bus_num                = 0,
++      .chip_select            = 0,
++      .max_speed_hz           = 10 * 1000 * 1000,
++      .mode                   = SPI_MODE_3,
++#ifdef CONFIG_MTD_PARTITIONS
++      .platform_data          = &board_95C3AM1_flash_platform_data
++#endif
++};
++
++static struct gpio_led board_95C3AM1_leds_gpio[] __initdata = {
++      {
++              .name           = "power",
++              .gpio           = BOARD_95C3AM1_GPIO_LED_0,
++              .active_low     = 0,
++      }, {
++              .name           = "optical",
++              .gpio           = BOARD_95C3AM1_GPIO_LED_1,
++              .active_low     = 0,
++      }, {
++              .name           = "lan",
++              .gpio           = BOARD_95C3AM1_GPIO_LED_2,
++              .active_low     = 0,
++      }, {
++              .name           = "update",
++              .gpio           = BOARD_95C3AM1_GPIO_LED_3,
++              .active_low     = 0,
++      }
++};
++
++static struct i2c_gpio_platform_data board_95C3AM1_i2c_gpio_data = {
++      .sda_pin        = 107,
++      .scl_pin        = 108,
++};
++
++static struct platform_device board_95C3AM1_i2c_gpio_device = {
++      .name           = "i2c-gpio",
++      .id             = 0,
++      .dev = {
++              .platform_data  = &board_95C3AM1_i2c_gpio_data,
++      }
++};
++
++static void __init board_95C3AM1_init(void)
++{
++      falcon_register_asc(0);
++      falcon_register_gpio();
++      falcon_register_wdt();
++      falcon_register_i2c();
++      falcon_register_spi_flash(&board_95C3AM1_flash_data);
++      platform_device_register(&board_95C3AM1_i2c_gpio_device);
++      lq_add_device_leds_gpio(-1, ARRAY_SIZE(board_95C3AM1_leds_gpio),
++                                              board_95C3AM1_leds_gpio);
++      falcon_register_crypto();
++}
++
++MIPS_MACHINE(LANTIQ_MACH_95C3AM1,
++                      "95C3AM1",
++                      "95C3AM1 Board",
++                      board_95C3AM1_init);
+--- a/arch/mips/include/asm/mach-lantiq/machine.h
++++ b/arch/mips/include/asm/mach-lantiq/machine.h
+@@ -7,6 +7,7 @@ enum lantiq_mach_type {
+       LANTIQ_MACH_EASY98000,          /* Falcon Eval Board, NOR Flash */
+       LANTIQ_MACH_EASY98000SF,        /* Falcon Eval Board, Serial Flash */
+       LANTIQ_MACH_EASY98020,          /* Falcon Reference Board */
++      LANTIQ_MACH_95C3AM1,            /* Board 95C3AM1 */
+       /* XWAY */
+       LANTIQ_MACH_EASY4010,           /* Twinpass evalkit */
+--- a/arch/mips/lantiq/falcon/Kconfig
++++ b/arch/mips/lantiq/falcon/Kconfig
+@@ -10,6 +10,10 @@ config LANTIQ_MACH_EASY98020
+       bool "Easy98020"
+       default y
++config LANTIQ_MACH_95C3AM1
++      bool "95C3AM1"
++      default y
++
+ endmenu
+ endif
+--- a/arch/mips/lantiq/falcon/Makefile
++++ b/arch/mips/lantiq/falcon/Makefile
+@@ -3,3 +3,4 @@ obj-y += softdog_vpe.o
+ obj-$(CONFIG_LANTIQ_MACH_EASY98000) += mach-easy98000.o
+ obj-$(CONFIG_LANTIQ_MACH_EASY98000) += dev-leds-easy98000-cpld.o
+ obj-$(CONFIG_LANTIQ_MACH_EASY98020) += mach-easy98020.o
++obj-$(CONFIG_LANTIQ_MACH_95C3AM1)   += mach-95C3AM1.o
index 31cc568641354755cf8e68865f61875bb571ec21..bb4298deab51ed7fd2096159426efaf52ef5314c 100644 (file)
@@ -1,9 +1,9 @@
+CONFIG_ADM6996_PHY=y
 CONFIG_AR8216_PHY=y
-# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
-# CONFIG_CRYPTO_HW is not set
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ALGAPI2=y
 CONFIG_HAVE_IDE=y
 CONFIG_HW_HAS_PCI=y
-CONFIG_IMAGE_CMDLINE_HACK=y
 CONFIG_INPUT=y
 CONFIG_INPUT_EVDEV=y
 # CONFIG_INPUT_GPIO_BUTTONS is not set
@@ -16,13 +16,7 @@ CONFIG_LANTIQ_MACH_EASY50712=y
 CONFIG_LANTIQ_MACH_EASY50812=y
 # CONFIG_LANTIQ_PROM_ASC0 is not set
 CONFIG_LANTIQ_PROM_ASC1=y
-CONFIG_LANTIQ_WDT=y
-CONFIG_LEDS_GPIO=y
-# CONFIG_LOONGSON_MC146818 is not set
-CONFIG_LOONGSON_UART_BASE=y
-CONFIG_NEED_DMA_MAP_STATE=y
 CONFIG_RTL8306_PHY=y
-CONFIG_SCSI_MOD=y
-CONFIG_SOC_LANTIQ=y
+# CONFIG_SOC_LANTIQ_FALCON is not set
 CONFIG_SOC_LANTIQ_XWAY=y
 CONFIG_USB_SUPPORT=y
index f87f87474d4dc2021818f69d33392959447c9045..a70a1ef7e1d80d5205ff202c8edf36dc8c4b6718 100644 (file)
@@ -1,8 +1,32 @@
+define Profile/ARV3527P
+  NAME:=ARV3527P - Arcor Easybox 401
+  PACKAGES:=kmod-ledtrig-netdev kmod-leds-gpio kmod-button-hotplug kmod-ltq-dsl-firmware-b
+endef
+
+define Profile/ARV3527P/Description
+       Package set optimized for the ARV3527P
+endef
+
+$(eval $(call Profile,ARV3527P))
+
+define Profile/ARV4510PW
+  NAME:=ARV4510PW - Wippies Homebox
+  PACKAGES:= kmod-usb-core \
+       kmod-ledtrig-netdev kmod-ledtrig-usbdev kmod-leds-gpio kmod-button-hotplug \
+       kmod-rt61-pci wpad-mini kmod-ltq-dsl-firmware-a
+endef
+
+define Profile/ARV4510PW/Description
+       Package set optimized for the ARV4518PW
+endef
+
+$(eval $(call Profile,ARV4510PW))
+
 define Profile/ARV4518PW
   NAME:=ARV4518PW - SMC7908A
   PACKAGES:= kmod-usb-core kmod-usb-dwc-otg \
        kmod-ledtrig-netdev kmod-ledtrig-usbdev kmod-leds-gpio kmod-button-hotplug \
-       kmod-madwifi wpad-mini ltq-dsl-firmware-a
+       kmod-madwifi wpad-mini kmod-ltq-dsl-firmware-a
 endef
 
 define Profile/ARV4518PW/Description
@@ -15,7 +39,7 @@ define Profile/ARV4520PW
   NAME:=ARV4520PW - Arcor Easybox 800
   PACKAGES:= kmod-usb-core kmod-usb-dwc-otg \
        kmod-ledtrig-netdev kmod-ledtrig-usbdev kmod-leds-gpio kmod-button-hotplug \
-       kmod-rt61-pci wpad-mini ltq-dsl-firmware-a 
+       kmod-rt61-pci wpad-mini kmod-ltq-dsl-firmware-b 
 endef
 
 define Profile/ARV4520PW/Description
@@ -28,7 +52,7 @@ define Profile/ARV4525PW
   NAME:=ARV4525PW - Speedport W502V
   PACKAGES:= kmod-usb-core kmod-usb-dwc-otg \
        kmod-ledtrig-netdev kmod-ledtrig-usbdev kmod-leds-gpio kmod-button-hotplug \
-       kmod-madwifi wpad-mini ltq-dsl-firmware-b
+       kmod-madwifi wpad-mini kmod-ltq-dsl-firmware-b
 endef
 
 define Profile/ARV4525PW/Description
@@ -41,7 +65,7 @@ define Profile/ARV452CPW
   NAME:=ARV452CPW - Arcor Easybox 801
   PACKAGES:= kmod-usb-core kmod-usb-dwc-otg \
        kmod-ledtrig-netdev kmod-ledtrig-usbdev kmod-leds-gpio kmod-button-hotplug \
-       kmod-madwifi wpad-mini ltq-dsl-firmware-b
+       kmod-madwifi wpad-mini kmod-ltq-dsl-firmware-b
 endef
 
 define Profile/ARV452CPW/Description
@@ -54,7 +78,7 @@ define Profile/ARV752DPW22
   NAME:=ARV752DPW22 - Arcor Easybox 803
   PACKAGES:= kmod-usb-core kmod-usb2 kmod-usb-uhci kmod-usb-dwc-otg \
        kmod-ledtrig-netdev kmod-ledtrig-usbdev kmod-leds-gpio kmod-button-hotplug \
-       ltq-dsl-firmware-b
+       kmod-ltq-dsl-firmware-b
 endef
 
 define Profile/ARV752DPW22/Description