All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/12] Freescale 3.10.17-1.0.0-beta - part2
@ 2014-01-25 22:09 Otavio Salvador
  2014-01-25 22:09 ` [PATCH 01/12] imx-base.inc: Drop EXTRA_IMAGEDEPENDS setting Otavio Salvador
                   ` (13 more replies)
  0 siblings, 14 replies; 24+ messages in thread
From: Otavio Salvador @ 2014-01-25 22:09 UTC (permalink / raw)
  To: meta-freescale Mailing List; +Cc: Otavio Salvador

Hello,

This includes:

 Linux Kernel update for 3.10.17
 FSL U-Boot update for 2013.04 from 3.10.17 release
 Vivante GPU 4.9.6p13
 Vivante GPU 4.9.6p13 backport for 3.0.35-4.1.0

Please give it a try and let me know of any issues.


Daiane Angolini (1):
  linux-imx (3.0.35): Allow use with 3.10.17-1.0.0 GPU

Lauren Post (9):
  u-boot-imx: Upgrade for 3.10.17-1.0.0_beta release
  linux-imx: Upgrade to 3.10.17-1.0.0_beta version
  xf86-video-imxfb-vivante: Upgrade to 3.10.17-1.0.0_beta version
  gpu-viv-bin-mx6q: Upgrade to 3.10.17-1.0.0_beta version
  gpu-viv-g2d: Update to 3.10.17-1.0.0_beta
  imx6slevk: Add new device tree imx6sl-evk-csi.dtb
  imx6dlsabreauto.conf: Add ecspi and flexcan1 device tree support
  imx6qsabreauto.conf: Add ecspi and flexcan1 device tree support
  imx6qsabreauto.conf:  Add sata uboot config support

Otavio Salvador (2):
  imx-base.inc: Drop EXTRA_IMAGEDEPENDS setting
  gpu-viv-g2d: Fix packaging

 conf/machine/imx6dlsabreauto.conf                  |    3 +-
 conf/machine/imx6qsabreauto.conf                   |    4 +-
 conf/machine/imx6slevk.conf                        |    2 +-
 conf/machine/include/imx-base.inc                  |    2 -
 recipes-bsp/u-boot/u-boot-imx_2013.04.bb           |    4 +-
 .../gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc          |   20 +-
 .../gpu-viv-bin-mx6q/gpu-viv-bin-mx6q/directfbrc   |   10 +
 .../gpu-viv-bin-mx6q_3.10.17-1.0.0-hfp.bb          |    9 +
 .../gpu-viv-bin-mx6q_3.10.17-1.0.0-sfp.bb          |    9 +
 .../gpu-viv-bin-mx6q_3.10.9-1.0.0-hfp.bb           |    9 -
 .../gpu-viv-bin-mx6q_3.10.9-1.0.0-sfp.bb           |    9 -
 recipes-graphics/gpu-viv-g2d/gpu-viv-g2d.inc       |   17 +-
 .../gpu-viv-g2d/gpu-viv-g2d_3.10.17-1.0.0.bb       |    6 +
 .../gpu-viv-g2d/gpu-viv-g2d_3.10.9-1.0.0.bb        |    9 -
 ...b => xf86-video-imxfb-vivante_3.10.17-1.0.0.bb} |   13 +-
 ...0-gpu-viante-4.6.9p13-kernel-part-integra.patch | 6261 ++++++++++++++++++++
 .../linux/linux-imx-3.10.17/mx6/defconfig          |  332 ++
 .../linux/linux-imx-3.10.9/mx6/defconfig           | 3246 ----------
 recipes-kernel/linux/linux-imx_3.0.35.bb           |    4 +-
 .../{linux-imx_3.10.9.bb => linux-imx_3.10.17.bb}  |    9 +-
 20 files changed, 6674 insertions(+), 3304 deletions(-)
 create mode 100644 recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q/directfbrc
 create mode 100644 recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q_3.10.17-1.0.0-hfp.bb
 create mode 100644 recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q_3.10.17-1.0.0-sfp.bb
 delete mode 100644 recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q_3.10.9-1.0.0-hfp.bb
 delete mode 100644 recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q_3.10.9-1.0.0-sfp.bb
 create mode 100644 recipes-graphics/gpu-viv-g2d/gpu-viv-g2d_3.10.17-1.0.0.bb
 delete mode 100644 recipes-graphics/gpu-viv-g2d/gpu-viv-g2d_3.10.9-1.0.0.bb
 rename recipes-graphics/xorg-driver/{xf86-video-imxfb-vivante_3.5.7-1.0.0-alpha.2.bb => xf86-video-imxfb-vivante_3.10.17-1.0.0.bb} (80%)
 create mode 100644 recipes-kernel/linux/linux-imx-3.0.35/ENGR00278350-gpu-viante-4.6.9p13-kernel-part-integra.patch
 create mode 100644 recipes-kernel/linux/linux-imx-3.10.17/mx6/defconfig
 delete mode 100644 recipes-kernel/linux/linux-imx-3.10.9/mx6/defconfig
 rename recipes-kernel/linux/{linux-imx_3.10.9.bb => linux-imx_3.10.17.bb} (56%)

-- 
1.8.5.3



^ permalink raw reply	[flat|nested] 24+ messages in thread

* [PATCH 01/12] imx-base.inc: Drop EXTRA_IMAGEDEPENDS setting
  2014-01-25 22:09 [PATCH 0/12] Freescale 3.10.17-1.0.0-beta - part2 Otavio Salvador
@ 2014-01-25 22:09 ` Otavio Salvador
  2014-01-25 22:09 ` [PATCH 02/12] u-boot-imx: Upgrade for 3.10.17-1.0.0_beta release Otavio Salvador
                   ` (12 subsequent siblings)
  13 siblings, 0 replies; 24+ messages in thread
From: Otavio Salvador @ 2014-01-25 22:09 UTC (permalink / raw)
  To: meta-freescale Mailing List; +Cc: Otavio Salvador

The U-Boot requirement is handled by the image class and shouldn't be
defined here so we have freedom to choose the desired bootloader to be
used.

Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
---

 conf/machine/include/imx-base.inc | 2 --
 1 file changed, 2 deletions(-)

diff --git a/conf/machine/include/imx-base.inc b/conf/machine/include/imx-base.inc
index 3199238..ad969e9 100644
--- a/conf/machine/include/imx-base.inc
+++ b/conf/machine/include/imx-base.inc
@@ -90,8 +90,6 @@ PREFERRED_PROVIDER_virtual/libgles2_mx6 ?= "gpu-viv-bin-mx6q"
 
 PREFERRED_PROVIDER_virtual/kernel_mx3 ?= "linux-fslc"
 
-EXTRA_IMAGEDEPENDS = "u-boot"
-
 SDCARD_ROOTFS ?= "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext3"
 IMAGE_FSTYPES ?= "tar.bz2 ext3 sdcard"
 
-- 
1.8.5.3



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 02/12] u-boot-imx: Upgrade for 3.10.17-1.0.0_beta release
  2014-01-25 22:09 [PATCH 0/12] Freescale 3.10.17-1.0.0-beta - part2 Otavio Salvador
  2014-01-25 22:09 ` [PATCH 01/12] imx-base.inc: Drop EXTRA_IMAGEDEPENDS setting Otavio Salvador
@ 2014-01-25 22:09 ` Otavio Salvador
  2014-01-25 22:09 ` [PATCH 03/12] linux-imx: Upgrade to 3.10.17-1.0.0_beta version Otavio Salvador
                   ` (11 subsequent siblings)
  13 siblings, 0 replies; 24+ messages in thread
From: Otavio Salvador @ 2014-01-25 22:09 UTC (permalink / raw)
  To: meta-freescale Mailing List; +Cc: Otavio Salvador

From: Lauren Post <lauren.post@freescale.com>

Signed-off-by: Lauren Post <lauren.post@freescale.com>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
---

 recipes-bsp/u-boot/u-boot-imx_2013.04.bb | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/recipes-bsp/u-boot/u-boot-imx_2013.04.bb b/recipes-bsp/u-boot/u-boot-imx_2013.04.bb
index ffa91c8..64c0531 100644
--- a/recipes-bsp/u-boot/u-boot-imx_2013.04.bb
+++ b/recipes-bsp/u-boot/u-boot-imx_2013.04.bb
@@ -8,9 +8,9 @@ PROVIDES += "u-boot"
 LICENSE = "GPLv2+"
 LIC_FILES_CHKSUM = "file://COPYING;md5=1707d6db1d42237583f50183a5651ecb"
 
-SRCBRANCH = "imx_v2013.04_3.10.9_1.0.0_alpha"
+SRCBRANCH = "imx_v2013.04_3.10.17_1.0.0_beta"
 SRC_URI = "git://git.freescale.com/imx/uboot-imx.git;protocol=git;branch=${SRCBRANCH}"
-SRCREV = "d20319c25d27c38fd531e0ea97b5661268449de6"
+SRCREV = "f007d717738dad99a16dc540bcbeacff5f17e405"
 
 S = "${WORKDIR}/git"
 
-- 
1.8.5.3



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 03/12] linux-imx: Upgrade to 3.10.17-1.0.0_beta version
  2014-01-25 22:09 [PATCH 0/12] Freescale 3.10.17-1.0.0-beta - part2 Otavio Salvador
  2014-01-25 22:09 ` [PATCH 01/12] imx-base.inc: Drop EXTRA_IMAGEDEPENDS setting Otavio Salvador
  2014-01-25 22:09 ` [PATCH 02/12] u-boot-imx: Upgrade for 3.10.17-1.0.0_beta release Otavio Salvador
@ 2014-01-25 22:09 ` Otavio Salvador
  2014-01-25 22:09 ` [PATCH 04/12] linux-imx (3.0.35): Allow use with 3.10.17-1.0.0 GPU Otavio Salvador
                   ` (10 subsequent siblings)
  13 siblings, 0 replies; 24+ messages in thread
From: Otavio Salvador @ 2014-01-25 22:09 UTC (permalink / raw)
  To: meta-freescale Mailing List; +Cc: Otavio Salvador

From: Lauren Post <lauren.post@freescale.com>

Signed-off-by: Lauren Post <lauren.post@freescale.com>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
---

 .../linux/linux-imx-3.10.17/mx6/defconfig          |  332 ++
 .../linux/linux-imx-3.10.9/mx6/defconfig           | 3246 --------------------
 .../{linux-imx_3.10.9.bb => linux-imx_3.10.17.bb}  |    9 +-
 3 files changed, 336 insertions(+), 3251 deletions(-)
 create mode 100644 recipes-kernel/linux/linux-imx-3.10.17/mx6/defconfig
 delete mode 100644 recipes-kernel/linux/linux-imx-3.10.9/mx6/defconfig
 rename recipes-kernel/linux/{linux-imx_3.10.9.bb => linux-imx_3.10.17.bb} (56%)

diff --git a/recipes-kernel/linux/linux-imx-3.10.17/mx6/defconfig b/recipes-kernel/linux/linux-imx-3.10.17/mx6/defconfig
new file mode 100644
index 0000000..7d847c8
--- /dev/null
+++ b/recipes-kernel/linux/linux-imx-3.10.17/mx6/defconfig
@@ -0,0 +1,332 @@
+CONFIG_KERNEL_LZO=y
+CONFIG_SYSVIPC=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=18
+CONFIG_CGROUPS=y
+CONFIG_RELAY=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_EXPERT=y
+CONFIG_PERF_EVENTS=y
+# CONFIG_SLUB_DEBUG is not set
+# CONFIG_COMPAT_BRK is not set
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+CONFIG_MODULE_SRCVERSION_ALL=y
+# CONFIG_BLK_DEV_BSG is not set
+CONFIG_GPIO_PCA953X=y
+CONFIG_ARCH_MXC=y
+CONFIG_MXC_DEBUG_BOARD=y
+CONFIG_MACH_IMX51_DT=y
+CONFIG_MACH_EUKREA_CPUIMX51SD=y
+CONFIG_SOC_IMX53=y
+CONFIG_SOC_IMX6Q=y
+CONFIG_SOC_IMX6SL=y
+CONFIG_SOC_VF610=y
+# CONFIG_SWP_EMULATE is not set
+CONFIG_SMP=y
+CONFIG_VMSPLIT_2G=y
+CONFIG_PREEMPT_VOLUNTARY=y
+CONFIG_AEABI=y
+# CONFIG_OABI_COMPAT is not set
+CONFIG_CMDLINE="noinitrd console=ttymxc0,115200"
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_ARM_IMX6_CPUFREQ=y
+CONFIG_CPU_IDLE=y
+CONFIG_VFP=y
+CONFIG_NEON=y
+CONFIG_BINFMT_MISC=m
+CONFIG_PM_RUNTIME=y
+CONFIG_PM_DEBUG=y
+CONFIG_PM_TEST_SUSPEND=y
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_LRO is not set
+CONFIG_IPV6=y
+CONFIG_NETFILTER=y
+CONFIG_VLAN_8021Q=y
+CONFIG_CAN=y
+CONFIG_CAN_FLEXCAN=y
+CONFIG_CFG80211=y
+CONFIG_CFG80211_WEXT=y
+CONFIG_MAC80211=y
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+# CONFIG_STANDALONE is not set
+CONFIG_CMA=y
+CONFIG_CMA_SIZE_MBYTES=256
+CONFIG_IMX_WEIM=y
+CONFIG_CONNECTOR=y
+CONFIG_MTD=y
+CONFIG_MTD_CMDLINE_PARTS=y
+CONFIG_MTD_BLOCK=y
+CONFIG_MTD_CFI=y
+CONFIG_MTD_JEDECPROBE=y
+CONFIG_MTD_CFI_INTELEXT=y
+CONFIG_MTD_CFI_AMDSTD=y
+CONFIG_MTD_CFI_STAA=y
+CONFIG_MTD_PHYSMAP_OF=y
+CONFIG_MTD_DATAFLASH=y
+CONFIG_MTD_M25P80=y
+CONFIG_MTD_SST25L=y
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_GPMI_NAND=y
+CONFIG_MTD_NAND_MXC=y
+CONFIG_MTD_UBI=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=65536
+CONFIG_EEPROM_AT24=y
+CONFIG_EEPROM_AT25=y
+# CONFIG_SCSI_PROC_FS is not set
+CONFIG_BLK_DEV_SD=y
+CONFIG_SCSI_MULTI_LUN=y
+CONFIG_SCSI_CONSTANTS=y
+CONFIG_SCSI_LOGGING=y
+CONFIG_SCSI_SCAN_ASYNC=y
+# CONFIG_SCSI_LOWLEVEL is not set
+CONFIG_ATA=y
+CONFIG_SATA_AHCI_PLATFORM=y
+CONFIG_AHCI_IMX=y
+CONFIG_PATA_IMX=y
+CONFIG_NETDEVICES=y
+# CONFIG_NET_VENDOR_BROADCOM is not set
+CONFIG_CS89x0=y
+CONFIG_CS89x0_PLATFORM=y
+# CONFIG_NET_VENDOR_FARADAY is not set
+# CONFIG_NET_VENDOR_INTEL is not set
+# CONFIG_NET_VENDOR_MARVELL is not set
+# CONFIG_NET_VENDOR_MICREL is not set
+# CONFIG_NET_VENDOR_MICROCHIP is not set
+# CONFIG_NET_VENDOR_NATSEMI is not set
+# CONFIG_NET_VENDOR_SEEQ is not set
+CONFIG_SMC91X=y
+CONFIG_SMC911X=y
+CONFIG_SMSC911X=y
+# CONFIG_NET_VENDOR_STMICRO is not set
+CONFIG_ATH_CARDS=y
+CONFIG_ATH6KL=m
+CONFIG_ATH6KL_SDIO=m
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_EVBUG=m
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_IMX=y
+CONFIG_MOUSE_PS2=m
+CONFIG_MOUSE_PS2_ELANTECH=y
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_EGALAX=y
+CONFIG_TOUCHSCREEN_ELAN=y
+CONFIG_TOUCHSCREEN_MAX11801=y
+CONFIG_TOUCHSCREEN_MC13783=y
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_MMA8450=y
+CONFIG_INPUT_ISL29023=y
+CONFIG_SERIO_SERPORT=m
+CONFIG_VT_HW_CONSOLE_BINDING=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_DEVKMEM is not set
+CONFIG_SERIAL_IMX=y
+CONFIG_SERIAL_IMX_CONSOLE=y
+CONFIG_SERIAL_FSL_LPUART=y
+CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
+CONFIG_FSL_OTP=y
+# CONFIG_I2C_COMPAT is not set
+CONFIG_I2C_CHARDEV=y
+# CONFIG_I2C_HELPER_AUTO is not set
+CONFIG_I2C_ALGOPCF=m
+CONFIG_I2C_ALGOPCA=m
+CONFIG_I2C_IMX=y
+CONFIG_SPI=y
+CONFIG_SPI_IMX=y
+CONFIG_GPIO_SYSFS=y
+CONFIG_POWER_SUPPLY=y
+CONFIG_SABRESD_MAX8903=y
+CONFIG_IMX6_USB_CHARGER=y
+CONFIG_SENSORS_MAX17135=y
+CONFIG_SENSORS_MAG3110=y
+CONFIG_THERMAL=y
+CONFIG_CPU_THERMAL=y
+CONFIG_IMX_THERMAL=y
+CONFIG_DEVICE_THERMAL=y
+CONFIG_WATCHDOG=y
+CONFIG_IMX2_WDT=y
+CONFIG_MFD_DA9052_I2C=y
+CONFIG_MFD_MC13XXX_SPI=y
+CONFIG_MFD_MC13XXX_I2C=y
+CONFIG_MFD_MAX17135=y
+CONFIG_MFD_SI476X_CORE=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_REGULATOR_DA9052=y
+CONFIG_REGULATOR_ANATOP=y
+CONFIG_REGULATOR_MC13783=y
+CONFIG_REGULATOR_MC13892=y
+CONFIG_REGULATOR_MAX17135=y
+CONFIG_REGULATOR_PFUZE100=y
+CONFIG_MEDIA_SUPPORT=y
+CONFIG_MEDIA_CAMERA_SUPPORT=y
+CONFIG_MEDIA_RADIO_SUPPORT=y
+CONFIG_VIDEO_V4L2_INT_DEVICE=y
+CONFIG_MEDIA_USB_SUPPORT=y
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_V4L_PLATFORM_DRIVERS=y
+CONFIG_VIDEO_MXC_OUTPUT=y
+CONFIG_VIDEO_MXC_CAPTURE=m
+CONFIG_VIDEO_MXC_CSI_CAMERA=m
+CONFIG_MXC_CAMERA_OV5640=m
+CONFIG_MXC_CAMERA_OV5642=m
+CONFIG_MXC_CAMERA_OV5640_MIPI=m
+CONFIG_MXC_TVIN_ADV7180=m
+CONFIG_MXC_IPU_DEVICE_QUEUE_SDC=m
+CONFIG_VIDEO_MXC_IPU_OUTPUT=y
+CONFIG_VIDEO_MXC_PXP_V4L2=y
+CONFIG_SOC_CAMERA=y
+CONFIG_VIDEO_MX3=y
+CONFIG_RADIO_SI476X=y
+CONFIG_SOC_CAMERA_OV2640=y
+CONFIG_DRM=y
+CONFIG_DRM_VIVANTE=y
+CONFIG_FB=y
+CONFIG_FB_MXS=y
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_L4F00242T03=y
+CONFIG_LCD_PLATFORM=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_PWM=y
+CONFIG_FB_MXC_SYNC_PANEL=y
+CONFIG_FB_MXC_LDB=y
+CONFIG_FB_MXC_MIPI_DSI=y
+CONFIG_FB_MXC_TRULY_WVGA_SYNC_PANEL=y
+CONFIG_FB_MXC_HDMI=y
+CONFIG_FB_MXC_EINK_PANEL=y
+CONFIG_FB_MXS_SII902X=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+CONFIG_LOGO=y
+CONFIG_SOUND=y
+CONFIG_SND=y
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_SOC=y
+CONFIG_SND_IMX_SOC=y
+CONFIG_SND_SOC_EUKREA_TLV320=y
+CONFIG_SND_SOC_IMX_CS42888=y
+CONFIG_SND_SOC_IMX_WM8962=y
+CONFIG_SND_SOC_IMX_SGTL5000=y
+CONFIG_SND_SOC_IMX_SPDIF=y
+CONFIG_SND_SOC_IMX_MC13783=y
+CONFIG_SND_SOC_IMX_HDMI=y
+CONFIG_SND_SOC_IMX_SI476X=y
+CONFIG_USB=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_CHIPIDEA=y
+CONFIG_USB_CHIPIDEA_UDC=y
+CONFIG_USB_CHIPIDEA_HOST=y
+CONFIG_USB_PHY=y
+CONFIG_USB_MXS_PHY=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_MASS_STORAGE=m
+CONFIG_USB_G_SERIAL=m
+CONFIG_MMC=y
+CONFIG_MMC_UNSAFE_RESUME=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_MMC_SDHCI_ESDHC_IMX=y
+CONFIG_MXC_IPU=y
+CONFIG_MXC_GPU_VIV=y
+CONFIG_MXC_ASRC=y
+CONFIG_MXC_MIPI_CSI2=y
+CONFIG_MXC_MLB150=m
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+CONFIG_RTC_DRV_MC13XXX=y
+CONFIG_RTC_DRV_MXC=y
+CONFIG_RTC_DRV_SNVS=y
+CONFIG_DMADEVICES=y
+CONFIG_MXC_PXP_V2=y
+CONFIG_IMX_SDMA=y
+CONFIG_MXS_DMA=y
+CONFIG_STAGING=y
+CONFIG_COMMON_CLK_DEBUG=y
+# CONFIG_IOMMU_SUPPORT is not set
+CONFIG_PWM=y
+CONFIG_PWM_IMX=y
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+CONFIG_EXT4_FS=y
+CONFIG_EXT4_FS_POSIX_ACL=y
+CONFIG_EXT4_FS_SECURITY=y
+CONFIG_QUOTA=y
+CONFIG_QUOTA_NETLINK_INTERFACE=y
+# CONFIG_PRINT_QUOTA_WARNING is not set
+CONFIG_AUTOFS4_FS=y
+CONFIG_FUSE_FS=y
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=y
+CONFIG_TMPFS=y
+CONFIG_JFFS2_FS=y
+CONFIG_UBIFS_FS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=y
+CONFIG_ROOT_NFS=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_UTF8=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_FTRACE is not set
+CONFIG_SECURITYFS=y
+CONFIG_CRYPTO_USER=y
+CONFIG_CRYPTO_CCM=y
+CONFIG_CRYPTO_GCM=y
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_CTS=y
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_LRW=y
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+CONFIG_CRYPTO_DEV_FSL_CAAM=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_SM=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_SM_TEST=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_SECVIO=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC_T10DIF=y
+CONFIG_CRC7=m
+CONFIG_LIBCRC32C=m
diff --git a/recipes-kernel/linux/linux-imx-3.10.9/mx6/defconfig b/recipes-kernel/linux/linux-imx-3.10.9/mx6/defconfig
deleted file mode 100644
index 27ef524..0000000
--- a/recipes-kernel/linux/linux-imx-3.10.9/mx6/defconfig
+++ /dev/null
@@ -1,3246 +0,0 @@
-#
-# Automatically generated file; DO NOT EDIT.
-# Linux/arm 3.10.9 Kernel Configuration
-#
-CONFIG_ARM=y
-CONFIG_MIGHT_HAVE_PCI=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_HAVE_PROC_CPU=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_ARCH_HAS_CPUFREQ=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ZONE_DMA=y
-CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_FIQ=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_ARM_PATCH_PHYS_VIRT=y
-CONFIG_GENERIC_BUG=y
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-CONFIG_IRQ_WORK=y
-CONFIG_BUILDTIME_EXTABLE_SORT=y
-
-#
-# General setup
-#
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_CROSS_COMPILE=""
-CONFIG_LOCALVERSION="-1.0.0_alpha"
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_HAVE_KERNEL_GZIP=y
-CONFIG_HAVE_KERNEL_LZMA=y
-CONFIG_HAVE_KERNEL_XZ=y
-CONFIG_HAVE_KERNEL_LZO=y
-# CONFIG_KERNEL_GZIP is not set
-# CONFIG_KERNEL_LZMA is not set
-# CONFIG_KERNEL_XZ is not set
-CONFIG_KERNEL_LZO=y
-CONFIG_DEFAULT_HOSTNAME="(none)"
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_FHANDLE is not set
-# CONFIG_AUDIT is not set
-CONFIG_HAVE_GENERIC_HARDIRQS=y
-
-#
-# IRQ subsystem
-#
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_CHIP=y
-CONFIG_IRQ_DOMAIN=y
-# CONFIG_IRQ_DOMAIN_DEBUG is not set
-CONFIG_SPARSE_IRQ=y
-CONFIG_KTIME_SCALAR=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_ARCH_HAS_TICK_BROADCAST=y
-CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
-
-#
-# Timers subsystem
-#
-CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ_COMMON=y
-# CONFIG_HZ_PERIODIC is not set
-CONFIG_NO_HZ_IDLE=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-
-#
-# CPU/Task time and stats accounting
-#
-CONFIG_TICK_CPU_ACCOUNTING=y
-# CONFIG_IRQ_TIME_ACCOUNTING is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-# CONFIG_TASKSTATS is not set
-
-#
-# RCU Subsystem
-#
-CONFIG_TREE_RCU=y
-# CONFIG_PREEMPT_RCU is not set
-CONFIG_RCU_STALL_COMMON=y
-# CONFIG_RCU_USER_QS is not set
-CONFIG_RCU_FANOUT=32
-CONFIG_RCU_FANOUT_LEAF=16
-# CONFIG_RCU_FANOUT_EXACT is not set
-# CONFIG_RCU_FAST_NO_HZ is not set
-# CONFIG_TREE_RCU_TRACE is not set
-# CONFIG_RCU_NOCB_CPU is not set
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
-CONFIG_LOG_BUF_SHIFT=18
-CONFIG_CGROUPS=y
-# CONFIG_CGROUP_DEBUG is not set
-# CONFIG_CGROUP_FREEZER is not set
-# CONFIG_CGROUP_DEVICE is not set
-# CONFIG_CPUSETS is not set
-# CONFIG_CGROUP_CPUACCT is not set
-# CONFIG_RESOURCE_COUNTERS is not set
-# CONFIG_CGROUP_PERF is not set
-# CONFIG_CGROUP_SCHED is not set
-# CONFIG_BLK_CGROUP is not set
-# CONFIG_CHECKPOINT_RESTORE is not set
-# CONFIG_NAMESPACES is not set
-CONFIG_UIDGID_CONVERTED=y
-# CONFIG_UIDGID_STRICT_TYPE_CHECKS is not set
-# CONFIG_SCHED_AUTOGROUP is not set
-# CONFIG_SYSFS_DEPRECATED is not set
-CONFIG_RELAY=y
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_RD_GZIP=y
-# CONFIG_RD_BZIP2 is not set
-# CONFIG_RD_LZMA is not set
-# CONFIG_RD_XZ is not set
-# CONFIG_RD_LZO is not set
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-CONFIG_SYSCTL=y
-CONFIG_ANON_INODES=y
-CONFIG_HAVE_UID16=y
-CONFIG_HOTPLUG=y
-CONFIG_EXPERT=y
-CONFIG_UID16=y
-# CONFIG_SYSCTL_SYSCALL is not set
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_TIMERFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_AIO=y
-# CONFIG_EMBEDDED is not set
-CONFIG_HAVE_PERF_EVENTS=y
-CONFIG_PERF_USE_VMALLOC=y
-
-#
-# Kernel Performance Events And Counters
-#
-CONFIG_PERF_EVENTS=y
-# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
-CONFIG_VM_EVENT_COUNTERS=y
-# CONFIG_SLUB_DEBUG is not set
-# CONFIG_COMPAT_BRK is not set
-# CONFIG_SLAB is not set
-CONFIG_SLUB=y
-# CONFIG_SLOB is not set
-# CONFIG_PROFILING is not set
-CONFIG_HAVE_OPROFILE=y
-# CONFIG_KPROBES is not set
-# CONFIG_JUMP_LABEL is not set
-# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
-CONFIG_HAVE_KPROBES=y
-CONFIG_HAVE_KRETPROBES=y
-CONFIG_HAVE_ARCH_TRACEHOOK=y
-CONFIG_HAVE_DMA_ATTRS=y
-CONFIG_HAVE_DMA_CONTIGUOUS=y
-CONFIG_USE_GENERIC_SMP_HELPERS=y
-CONFIG_GENERIC_SMP_IDLE_THREAD=y
-CONFIG_GENERIC_IDLE_POLL_SETUP=y
-CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
-CONFIG_HAVE_CLK=y
-CONFIG_HAVE_DMA_API_DEBUG=y
-CONFIG_HAVE_HW_BREAKPOINT=y
-CONFIG_HAVE_ARCH_JUMP_LABEL=y
-CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
-CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
-CONFIG_HAVE_CONTEXT_TRACKING=y
-CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
-CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
-CONFIG_MODULES_USE_ELF_REL=y
-CONFIG_CLONE_BACKWARDS=y
-CONFIG_OLD_SIGSUSPEND3=y
-CONFIG_OLD_SIGACTION=y
-
-#
-# GCOV-based kernel profiling
-#
-# CONFIG_GCOV_KERNEL is not set
-CONFIG_HAVE_GENERIC_DMA_COHERENT=y
-CONFIG_RT_MUTEXES=y
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-# CONFIG_MODULE_FORCE_LOAD is not set
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODULE_FORCE_UNLOAD is not set
-CONFIG_MODVERSIONS=y
-CONFIG_MODULE_SRCVERSION_ALL=y
-# CONFIG_MODULE_SIG is not set
-CONFIG_STOP_MACHINE=y
-CONFIG_BLOCK=y
-CONFIG_LBDAF=y
-# CONFIG_BLK_DEV_BSG is not set
-# CONFIG_BLK_DEV_BSGLIB is not set
-# CONFIG_BLK_DEV_INTEGRITY is not set
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-CONFIG_EFI_PARTITION=y
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-# CONFIG_DEFAULT_DEADLINE is not set
-CONFIG_DEFAULT_CFQ=y
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="cfq"
-CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
-CONFIG_INLINE_READ_UNLOCK=y
-CONFIG_INLINE_READ_UNLOCK_IRQ=y
-CONFIG_INLINE_WRITE_UNLOCK=y
-CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
-CONFIG_MUTEX_SPIN_ON_OWNER=y
-CONFIG_FREEZER=y
-
-#
-# System Type
-#
-CONFIG_MMU=y
-CONFIG_ARCH_MULTIPLATFORM=y
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_GEMINI is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_DOVE is not set
-# CONFIG_ARCH_KIRKWOOD is not set
-# CONFIG_ARCH_MV78XX0 is not set
-# CONFIG_ARCH_ORION5X is not set
-# CONFIG_ARCH_MMP is not set
-# CONFIG_ARCH_KS8695 is not set
-# CONFIG_ARCH_W90X900 is not set
-# CONFIG_ARCH_LPC32XX is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_MSM is not set
-# CONFIG_ARCH_SHMOBILE is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C24XX is not set
-# CONFIG_ARCH_S3C64XX is not set
-# CONFIG_ARCH_S5P64X0 is not set
-# CONFIG_ARCH_S5PC100 is not set
-# CONFIG_ARCH_S5PV210 is not set
-# CONFIG_ARCH_EXYNOS is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_U300 is not set
-# CONFIG_ARCH_DAVINCI is not set
-# CONFIG_ARCH_OMAP1 is not set
-
-#
-# Multiple platform selection
-#
-
-#
-# CPU Core family selection
-#
-# CONFIG_ARCH_MULTI_V6 is not set
-CONFIG_ARCH_MULTI_V7=y
-CONFIG_ARCH_MULTI_V6_V7=y
-# CONFIG_ARCH_MULTI_CPU_AUTO is not set
-# CONFIG_ARCH_MVEBU is not set
-# CONFIG_ARCH_BCM is not set
-CONFIG_GPIO_PCA953X=y
-# CONFIG_KEYBOARD_GPIO_POLLED is not set
-# CONFIG_ARCH_HIGHBANK is not set
-CONFIG_ARCH_MXC=y
-
-#
-# Freescale i.MX support
-#
-# CONFIG_MXC_IRQ_PRIOR is not set
-CONFIG_MXC_TZIC=y
-CONFIG_MXC_DEBUG_BOARD=y
-CONFIG_HAVE_IMX_ANATOP=y
-CONFIG_HAVE_IMX_GPC=y
-CONFIG_HAVE_IMX_MMDC=y
-CONFIG_HAVE_IMX_SRC=y
-CONFIG_ARCH_MXC_IOMUX_V3=y
-CONFIG_SOC_IMX5=y
-CONFIG_SOC_IMX51=y
-
-#
-# i.MX51 machines:
-#
-CONFIG_MACH_IMX51_DT=y
-# CONFIG_MACH_MX51_BABBAGE is not set
-CONFIG_MACH_EUKREA_CPUIMX51SD=y
-CONFIG_MACH_EUKREA_MBIMXSD51_BASEBOARD=y
-
-#
-# Device tree only
-#
-CONFIG_SOC_IMX53=y
-CONFIG_SOC_IMX6Q=y
-CONFIG_SOC_IMX6SL=y
-CONFIG_SOC_VF610=y
-CONFIG_IMX_HAVE_PLATFORM_FEC=y
-CONFIG_IMX_HAVE_PLATFORM_FSL_USB2_UDC=y
-CONFIG_IMX_HAVE_PLATFORM_GPIO_KEYS=y
-CONFIG_IMX_HAVE_PLATFORM_IMX2_WDT=y
-CONFIG_IMX_HAVE_PLATFORM_IMX_I2C=y
-CONFIG_IMX_HAVE_PLATFORM_IMX_SSI=y
-CONFIG_IMX_HAVE_PLATFORM_IMX_UART=y
-CONFIG_IMX_HAVE_PLATFORM_MXC_EHCI=y
-CONFIG_IMX_HAVE_PLATFORM_MXC_NAND=y
-CONFIG_IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX=y
-CONFIG_IMX_HAVE_PLATFORM_SPI_IMX=y
-# CONFIG_ARCH_OMAP2PLUS is not set
-# CONFIG_ARCH_SOCFPGA is not set
-# CONFIG_PLAT_SPEAR is not set
-# CONFIG_ARCH_SUNXI is not set
-# CONFIG_ARCH_SIRF is not set
-# CONFIG_ARCH_TEGRA is not set
-# CONFIG_ARCH_U8500 is not set
-# CONFIG_ARCH_VEXPRESS is not set
-# CONFIG_ARCH_VIRT is not set
-# CONFIG_ARCH_WM8850 is not set
-# CONFIG_ARCH_ZYNQ is not set
-
-#
-# Processor Type
-#
-CONFIG_CPU_V7=y
-CONFIG_CPU_32v6K=y
-CONFIG_CPU_32v7=y
-CONFIG_CPU_ABRT_EV7=y
-CONFIG_CPU_PABRT_V7=y
-CONFIG_CPU_CACHE_V7=y
-CONFIG_CPU_CACHE_VIPT=y
-CONFIG_CPU_COPY_V6=y
-CONFIG_CPU_TLB_V7=y
-CONFIG_CPU_HAS_ASID=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-# CONFIG_ARM_LPAE is not set
-# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
-CONFIG_ARM_THUMB=y
-# CONFIG_ARM_THUMBEE is not set
-CONFIG_ARM_VIRT_EXT=y
-# CONFIG_SWP_EMULATE is not set
-# CONFIG_CPU_ICACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_CPU_BPREDICT_DISABLE is not set
-CONFIG_KUSER_HELPERS=y
-CONFIG_OUTER_CACHE=y
-CONFIG_OUTER_CACHE_SYNC=y
-CONFIG_MIGHT_HAVE_CACHE_L2X0=y
-CONFIG_CACHE_L2X0=y
-CONFIG_CACHE_PL310=y
-CONFIG_ARM_L1_CACHE_SHIFT_6=y
-CONFIG_ARM_L1_CACHE_SHIFT=6
-CONFIG_ARM_DMA_MEM_BUFFERABLE=y
-CONFIG_ARM_NR_BANKS=8
-CONFIG_MULTI_IRQ_HANDLER=y
-# CONFIG_ARM_ERRATA_430973 is not set
-CONFIG_PL310_ERRATA_588369=y
-# CONFIG_ARM_ERRATA_643719 is not set
-# CONFIG_ARM_ERRATA_720789 is not set
-CONFIG_PL310_ERRATA_727915=y
-# CONFIG_PL310_ERRATA_753970 is not set
-CONFIG_ARM_ERRATA_754322=y
-# CONFIG_ARM_ERRATA_754327 is not set
-CONFIG_ARM_ERRATA_764369=y
-CONFIG_PL310_ERRATA_769419=y
-CONFIG_ARM_ERRATA_775420=y
-# CONFIG_ARM_ERRATA_798181 is not set
-
-#
-# Bus support
-#
-# CONFIG_PCI is not set
-# CONFIG_PCI_SYSCALL is not set
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-CONFIG_HAVE_SMP=y
-CONFIG_SMP=y
-CONFIG_SMP_ON_UP=y
-CONFIG_ARM_CPU_TOPOLOGY=y
-# CONFIG_SCHED_MC is not set
-# CONFIG_SCHED_SMT is not set
-CONFIG_HAVE_ARM_SCU=y
-# CONFIG_HAVE_ARM_ARCH_TIMER is not set
-CONFIG_HAVE_ARM_TWD=y
-# CONFIG_MCPM is not set
-# CONFIG_VMSPLIT_3G is not set
-CONFIG_VMSPLIT_2G=y
-# CONFIG_VMSPLIT_1G is not set
-CONFIG_PAGE_OFFSET=0x80000000
-CONFIG_NR_CPUS=4
-CONFIG_HOTPLUG_CPU=y
-# CONFIG_ARM_PSCI is not set
-CONFIG_LOCAL_TIMERS=y
-CONFIG_ARCH_NR_GPIO=0
-# CONFIG_PREEMPT_NONE is not set
-CONFIG_PREEMPT_VOLUNTARY=y
-# CONFIG_PREEMPT is not set
-CONFIG_HZ=100
-CONFIG_SCHED_HRTICK=y
-# CONFIG_THUMB2_KERNEL is not set
-CONFIG_AEABI=y
-# CONFIG_OABI_COMPAT is not set
-# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
-# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
-CONFIG_HAVE_ARCH_PFN_VALID=y
-# CONFIG_HIGHMEM is not set
-CONFIG_HW_PERF_EVENTS=y
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_HAVE_MEMBLOCK=y
-CONFIG_MEMORY_ISOLATION=y
-# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
-CONFIG_PAGEFLAGS_EXTENDED=y
-CONFIG_SPLIT_PTLOCK_CPUS=4
-CONFIG_COMPACTION=y
-CONFIG_MIGRATION=y
-# CONFIG_PHYS_ADDR_T_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-# CONFIG_KSM is not set
-CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
-CONFIG_CROSS_MEMORY_ATTACH=y
-# CONFIG_CLEANCACHE is not set
-# CONFIG_FRONTSWAP is not set
-CONFIG_FORCE_MAX_ZONEORDER=14
-CONFIG_ALIGNMENT_TRAP=y
-# CONFIG_UACCESS_WITH_MEMCPY is not set
-# CONFIG_SECCOMP is not set
-# CONFIG_CC_STACKPROTECTOR is not set
-# CONFIG_XEN is not set
-
-#
-# Boot options
-#
-CONFIG_USE_OF=y
-CONFIG_ATAGS=y
-# CONFIG_DEPRECATED_PARAM_STRUCT is not set
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_ARM_APPENDED_DTB is not set
-CONFIG_CMDLINE="noinitrd console=ttymxc0,115200"
-CONFIG_CMDLINE_FROM_BOOTLOADER=y
-# CONFIG_CMDLINE_EXTEND is not set
-# CONFIG_CMDLINE_FORCE is not set
-# CONFIG_KEXEC is not set
-# CONFIG_CRASH_DUMP is not set
-CONFIG_AUTO_ZRELADDR=y
-
-#
-# CPU Power Management
-#
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-CONFIG_CPU_FREQ_GOV_COMMON=y
-CONFIG_CPU_FREQ_STAT=y
-# CONFIG_CPU_FREQ_STAT_DETAILS is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE=y
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-CONFIG_CPU_FREQ_GOV_ONDEMAND=y
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
-CONFIG_CPU_FREQ_GOV_INTERACTIVE=y
-# CONFIG_GENERIC_CPUFREQ_CPU0 is not set
-
-#
-# ARM CPU frequency scaling drivers
-#
-# CONFIG_ARM_BIG_LITTLE_CPUFREQ is not set
-# CONFIG_ARM_EXYNOS4210_CPUFREQ is not set
-# CONFIG_ARM_EXYNOS4X12_CPUFREQ is not set
-# CONFIG_ARM_EXYNOS5250_CPUFREQ is not set
-# CONFIG_ARM_EXYNOS5440_CPUFREQ is not set
-CONFIG_ARM_IMX6_CPUFREQ=y
-# CONFIG_ARM_KIRKWOOD_CPUFREQ is not set
-CONFIG_CPU_IDLE=y
-# CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set
-CONFIG_CPU_IDLE_GOV_LADDER=y
-CONFIG_CPU_IDLE_GOV_MENU=y
-# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_VFP=y
-CONFIG_VFPv3=y
-CONFIG_NEON=y
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
-CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
-CONFIG_BINFMT_SCRIPT=y
-# CONFIG_HAVE_AOUT is not set
-CONFIG_BINFMT_MISC=m
-CONFIG_COREDUMP=y
-
-#
-# Power management options
-#
-CONFIG_SUSPEND=y
-CONFIG_SUSPEND_FREEZER=y
-CONFIG_PM_SLEEP=y
-CONFIG_PM_SLEEP_SMP=y
-# CONFIG_PM_AUTOSLEEP is not set
-# CONFIG_PM_WAKELOCKS is not set
-CONFIG_PM_RUNTIME=y
-CONFIG_PM=y
-CONFIG_PM_DEBUG=y
-# CONFIG_PM_ADVANCED_DEBUG is not set
-CONFIG_PM_TEST_SUSPEND=y
-CONFIG_PM_SLEEP_DEBUG=y
-# CONFIG_APM_EMULATION is not set
-CONFIG_ARCH_HAS_OPP=y
-CONFIG_PM_OPP=y
-CONFIG_PM_CLK=y
-CONFIG_CPU_PM=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_ARM_CPU_SUSPEND=y
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-# CONFIG_PACKET_DIAG is not set
-CONFIG_UNIX=y
-# CONFIG_UNIX_DIAG is not set
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_XFRM_MIGRATE is not set
-# CONFIG_XFRM_STATISTICS is not set
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-# CONFIG_IP_PNP_BOOTP is not set
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE_DEMUX is not set
-CONFIG_NET_IP_TUNNEL=y
-# CONFIG_ARPD is not set
-# CONFIG_SYN_COOKIES is not set
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-CONFIG_INET_TUNNEL=y
-# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
-# CONFIG_INET_XFRM_MODE_TUNNEL is not set
-# CONFIG_INET_XFRM_MODE_BEET is not set
-# CONFIG_INET_LRO is not set
-CONFIG_INET_DIAG=y
-CONFIG_INET_TCP_DIAG=y
-# CONFIG_INET_UDP_DIAG is not set
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-CONFIG_IPV6=y
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-# CONFIG_INET6_AH is not set
-# CONFIG_INET6_ESP is not set
-# CONFIG_INET6_IPCOMP is not set
-# CONFIG_IPV6_MIP6 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
-CONFIG_INET6_XFRM_MODE_TRANSPORT=y
-CONFIG_INET6_XFRM_MODE_TUNNEL=y
-CONFIG_INET6_XFRM_MODE_BEET=y
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=y
-# CONFIG_IPV6_SIT_6RD is not set
-CONFIG_IPV6_NDISC_NODETYPE=y
-# CONFIG_IPV6_TUNNEL is not set
-# CONFIG_IPV6_GRE is not set
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_IPV6_MROUTE is not set
-# CONFIG_NETWORK_SECMARK is not set
-# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_NETFILTER_ADVANCED=y
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK_ACCT is not set
-# CONFIG_NETFILTER_NETLINK_QUEUE is not set
-# CONFIG_NETFILTER_NETLINK_LOG is not set
-# CONFIG_NF_CONNTRACK is not set
-# CONFIG_NETFILTER_XTABLES is not set
-# CONFIG_IP_VS is not set
-
-#
-# IP: Netfilter Configuration
-#
-# CONFIG_NF_DEFRAG_IPV4 is not set
-# CONFIG_IP_NF_IPTABLES is not set
-# CONFIG_IP_NF_ARPTABLES is not set
-
-#
-# IPv6: Netfilter Configuration
-#
-# CONFIG_NF_DEFRAG_IPV6 is not set
-# CONFIG_IP6_NF_IPTABLES is not set
-# CONFIG_IP_DCCP is not set
-# CONFIG_IP_SCTP is not set
-# CONFIG_RDS is not set
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_L2TP is not set
-# CONFIG_BRIDGE is not set
-CONFIG_HAVE_NET_DSA=y
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_PHONET is not set
-# CONFIG_IEEE802154 is not set
-# CONFIG_NET_SCHED is not set
-# CONFIG_DCB is not set
-CONFIG_DNS_RESOLVER=y
-# CONFIG_BATMAN_ADV is not set
-# CONFIG_OPENVSWITCH is not set
-# CONFIG_VSOCKETS is not set
-# CONFIG_NETLINK_MMAP is not set
-# CONFIG_NETLINK_DIAG is not set
-CONFIG_RPS=y
-CONFIG_RFS_ACCEL=y
-CONFIG_XPS=y
-# CONFIG_NETPRIO_CGROUP is not set
-CONFIG_BQL=y
-# CONFIG_BPF_JIT is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_CAN is not set
-# CONFIG_IRDA is not set
-# CONFIG_BT is not set
-# CONFIG_AF_RXRPC is not set
-CONFIG_WIRELESS=y
-CONFIG_WEXT_CORE=y
-CONFIG_WEXT_PROC=y
-CONFIG_CFG80211=y
-# CONFIG_NL80211_TESTMODE is not set
-# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
-# CONFIG_CFG80211_REG_DEBUG is not set
-# CONFIG_CFG80211_CERTIFICATION_ONUS is not set
-CONFIG_CFG80211_DEFAULT_PS=y
-# CONFIG_CFG80211_DEBUGFS is not set
-# CONFIG_CFG80211_INTERNAL_REGDB is not set
-CONFIG_CFG80211_WEXT=y
-# CONFIG_LIB80211 is not set
-CONFIG_MAC80211=y
-CONFIG_MAC80211_HAS_RC=y
-# CONFIG_MAC80211_RC_PID is not set
-CONFIG_MAC80211_RC_MINSTREL=y
-CONFIG_MAC80211_RC_MINSTREL_HT=y
-CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
-CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
-# CONFIG_MAC80211_MESH is not set
-# CONFIG_MAC80211_LEDS is not set
-# CONFIG_MAC80211_DEBUGFS is not set
-# CONFIG_MAC80211_MESSAGE_TRACING is not set
-# CONFIG_MAC80211_DEBUG_MENU is not set
-# CONFIG_WIMAX is not set
-# CONFIG_RFKILL is not set
-# CONFIG_RFKILL_REGULATOR is not set
-# CONFIG_NET_9P is not set
-# CONFIG_CAIF is not set
-# CONFIG_CEPH_LIB is not set
-# CONFIG_NFC is not set
-CONFIG_HAVE_BPF_JIT=y
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH=""
-CONFIG_DEVTMPFS=y
-CONFIG_DEVTMPFS_MOUNT=y
-# CONFIG_STANDALONE is not set
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-CONFIG_FIRMWARE_IN_KERNEL=y
-CONFIG_EXTRA_FIRMWARE=""
-CONFIG_FW_LOADER_USER_HELPER=y
-# CONFIG_DEBUG_DRIVER is not set
-# CONFIG_DEBUG_DEVRES is not set
-# CONFIG_SYS_HYPERVISOR is not set
-# CONFIG_GENERIC_CPU_DEVICES is not set
-CONFIG_SOC_BUS=y
-CONFIG_REGMAP=y
-CONFIG_REGMAP_I2C=y
-CONFIG_REGMAP_SPI=y
-CONFIG_REGMAP_MMIO=y
-CONFIG_REGMAP_IRQ=y
-CONFIG_DMA_SHARED_BUFFER=y
-CONFIG_CMA=y
-# CONFIG_CMA_DEBUG is not set
-
-#
-# Default contiguous memory area size:
-#
-CONFIG_CMA_SIZE_MBYTES=256
-CONFIG_CMA_SIZE_SEL_MBYTES=y
-# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set
-# CONFIG_CMA_SIZE_SEL_MIN is not set
-# CONFIG_CMA_SIZE_SEL_MAX is not set
-CONFIG_CMA_ALIGNMENT=8
-CONFIG_CMA_AREAS=7
-
-#
-# Bus devices
-#
-CONFIG_IMX_WEIM=y
-CONFIG_CONNECTOR=y
-CONFIG_PROC_EVENTS=y
-CONFIG_MTD=y
-# CONFIG_MTD_TESTS is not set
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-CONFIG_MTD_OF_PARTS=y
-# CONFIG_MTD_AR7_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
-# CONFIG_SM_FTL is not set
-# CONFIG_MTD_OOPS is not set
-# CONFIG_MTD_SWAP is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=y
-CONFIG_MTD_JEDECPROBE=y
-CONFIG_MTD_GEN_PROBE=y
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-CONFIG_MTD_CFI_INTELEXT=y
-CONFIG_MTD_CFI_AMDSTD=y
-CONFIG_MTD_CFI_STAA=y
-CONFIG_MTD_CFI_UTIL=y
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
-CONFIG_MTD_PHYSMAP_OF=y
-# CONFIG_MTD_IMPA7 is not set
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-CONFIG_MTD_DATAFLASH=y
-# CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set
-# CONFIG_MTD_DATAFLASH_OTP is not set
-CONFIG_MTD_M25P80=y
-CONFIG_M25PXX_USE_FAST_READ=y
-CONFIG_MTD_SST25L=y
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOCG3 is not set
-CONFIG_MTD_NAND_ECC=y
-# CONFIG_MTD_NAND_ECC_SMC is not set
-CONFIG_MTD_NAND=y
-# CONFIG_MTD_NAND_ECC_BCH is not set
-# CONFIG_MTD_SM_COMMON is not set
-# CONFIG_MTD_NAND_DENALI is not set
-# CONFIG_MTD_NAND_GPIO is not set
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-# CONFIG_MTD_NAND_DOCG4 is not set
-# CONFIG_MTD_NAND_NANDSIM is not set
-CONFIG_MTD_NAND_GPMI_NAND=y
-# CONFIG_MTD_NAND_PLATFORM is not set
-# CONFIG_MTD_ALAUDA is not set
-CONFIG_MTD_NAND_MXC=y
-# CONFIG_MTD_ONENAND is not set
-
-#
-# LPDDR flash memory drivers
-#
-# CONFIG_MTD_LPDDR is not set
-CONFIG_MTD_UBI=y
-CONFIG_MTD_UBI_WL_THRESHOLD=4096
-CONFIG_MTD_UBI_BEB_LIMIT=20
-# CONFIG_MTD_UBI_FASTMAP is not set
-# CONFIG_MTD_UBI_GLUEBI is not set
-CONFIG_DTC=y
-CONFIG_OF=y
-
-#
-# Device Tree and Open Firmware support
-#
-# CONFIG_PROC_DEVICETREE is not set
-# CONFIG_OF_SELFTEST is not set
-CONFIG_OF_FLATTREE=y
-CONFIG_OF_EARLY_FLATTREE=y
-CONFIG_OF_ADDRESS=y
-CONFIG_OF_IRQ=y
-CONFIG_OF_DEVICE=y
-CONFIG_OF_I2C=y
-CONFIG_OF_NET=y
-CONFIG_OF_MDIO=y
-CONFIG_OF_MTD=y
-# CONFIG_PARPORT is not set
-CONFIG_BLK_DEV=y
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_DRBD is not set
-# CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=65536
-# CONFIG_BLK_DEV_XIP is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-# CONFIG_MG_DISK is not set
-# CONFIG_BLK_DEV_RBD is not set
-
-#
-# Misc devices
-#
-# CONFIG_SENSORS_LIS3LV02D is not set
-# CONFIG_AD525X_DPOT is not set
-# CONFIG_ATMEL_PWM is not set
-# CONFIG_DUMMY_IRQ is not set
-# CONFIG_ICS932S401 is not set
-# CONFIG_ATMEL_SSC is not set
-# CONFIG_ENCLOSURE_SERVICES is not set
-# CONFIG_APDS9802ALS is not set
-# CONFIG_ISL29003 is not set
-# CONFIG_ISL29020 is not set
-# CONFIG_SENSORS_TSL2550 is not set
-# CONFIG_SENSORS_BH1780 is not set
-# CONFIG_SENSORS_BH1770 is not set
-# CONFIG_SENSORS_APDS990X is not set
-# CONFIG_HMC6352 is not set
-# CONFIG_DS1682 is not set
-# CONFIG_TI_DAC7512 is not set
-# CONFIG_BMP085_I2C is not set
-# CONFIG_BMP085_SPI is not set
-# CONFIG_USB_SWITCH_FSA9480 is not set
-# CONFIG_LATTICE_ECP3_CONFIG is not set
-CONFIG_SRAM=y
-# CONFIG_C2PORT is not set
-
-#
-# EEPROM support
-#
-CONFIG_EEPROM_AT24=y
-CONFIG_EEPROM_AT25=y
-# CONFIG_EEPROM_LEGACY is not set
-# CONFIG_EEPROM_MAX6875 is not set
-# CONFIG_EEPROM_93CX6 is not set
-# CONFIG_EEPROM_93XX46 is not set
-
-#
-# Texas Instruments shared transport line discipline
-#
-# CONFIG_TI_ST is not set
-# CONFIG_SENSORS_LIS3_SPI is not set
-# CONFIG_SENSORS_LIS3_I2C is not set
-
-#
-# Altera FPGA firmware download module
-#
-# CONFIG_ALTERA_STAPL is not set
-
-#
-# SCSI device support
-#
-CONFIG_SCSI_MOD=y
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=y
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-# CONFIG_SCSI_PROC_FS is not set
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-# CONFIG_BLK_DEV_SR is not set
-# CONFIG_CHR_DEV_SG is not set
-# CONFIG_CHR_DEV_SCH is not set
-CONFIG_SCSI_MULTI_LUN=y
-CONFIG_SCSI_CONSTANTS=y
-CONFIG_SCSI_LOGGING=y
-CONFIG_SCSI_SCAN_ASYNC=y
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-# CONFIG_SCSI_SRP_ATTRS is not set
-# CONFIG_SCSI_LOWLEVEL is not set
-# CONFIG_SCSI_DH is not set
-# CONFIG_SCSI_OSD_INITIATOR is not set
-CONFIG_ATA=y
-# CONFIG_ATA_NONSTANDARD is not set
-CONFIG_ATA_VERBOSE_ERROR=y
-CONFIG_SATA_PMP=y
-
-#
-# Controllers with non-SFF native interface
-#
-CONFIG_SATA_AHCI_PLATFORM=y
-CONFIG_AHCI_IMX=y
-CONFIG_ATA_SFF=y
-
-#
-# SFF controllers with custom DMA interface
-#
-CONFIG_ATA_BMDMA=y
-
-#
-# SATA SFF controllers with BMDMA
-#
-# CONFIG_SATA_HIGHBANK is not set
-# CONFIG_SATA_MV is not set
-
-#
-# PATA SFF controllers with BMDMA
-#
-# CONFIG_PATA_ARASAN_CF is not set
-CONFIG_PATA_IMX=y
-
-#
-# PIO-only SFF controllers
-#
-# CONFIG_PATA_PLATFORM is not set
-
-#
-# Generic fallback / legacy drivers
-#
-# CONFIG_MD is not set
-# CONFIG_TARGET_CORE is not set
-CONFIG_NETDEVICES=y
-CONFIG_NET_CORE=y
-# CONFIG_BONDING is not set
-# CONFIG_DUMMY is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_MII=y
-# CONFIG_NET_TEAM is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_VXLAN is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-# CONFIG_TUN is not set
-# CONFIG_VETH is not set
-
-#
-# CAIF transport drivers
-#
-
-#
-# Distributed Switch Architecture drivers
-#
-# CONFIG_NET_DSA_MV88E6XXX is not set
-# CONFIG_NET_DSA_MV88E6060 is not set
-# CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set
-# CONFIG_NET_DSA_MV88E6131 is not set
-# CONFIG_NET_DSA_MV88E6123_61_65 is not set
-CONFIG_ETHERNET=y
-CONFIG_NET_CADENCE=y
-# CONFIG_ARM_AT91_ETHER is not set
-# CONFIG_MACB is not set
-# CONFIG_NET_VENDOR_BROADCOM is not set
-# CONFIG_NET_CALXEDA_XGMAC is not set
-CONFIG_NET_VENDOR_CIRRUS=y
-CONFIG_CS89x0=y
-CONFIG_CS89x0_PLATFORM=y
-# CONFIG_DM9000 is not set
-# CONFIG_DNET is not set
-# CONFIG_NET_VENDOR_FARADAY is not set
-CONFIG_NET_VENDOR_FREESCALE=y
-CONFIG_FEC=y
-# CONFIG_NET_VENDOR_INTEL is not set
-# CONFIG_NET_VENDOR_MARVELL is not set
-# CONFIG_NET_VENDOR_MICREL is not set
-# CONFIG_NET_VENDOR_MICROCHIP is not set
-# CONFIG_NET_VENDOR_NATSEMI is not set
-# CONFIG_ETHOC is not set
-# CONFIG_NET_VENDOR_SEEQ is not set
-CONFIG_NET_VENDOR_SMSC=y
-CONFIG_SMC91X=y
-CONFIG_SMC911X=y
-CONFIG_SMSC911X=y
-# CONFIG_SMSC911X_ARCH_HOOKS is not set
-# CONFIG_NET_VENDOR_STMICRO is not set
-CONFIG_NET_VENDOR_WIZNET=y
-# CONFIG_WIZNET_W5100 is not set
-# CONFIG_WIZNET_W5300 is not set
-CONFIG_PHYLIB=y
-
-#
-# MII PHY device drivers
-#
-# CONFIG_AT803X_PHY is not set
-# CONFIG_AMD_PHY is not set
-# CONFIG_MARVELL_PHY is not set
-# CONFIG_DAVICOM_PHY is not set
-# CONFIG_QSEMI_PHY is not set
-# CONFIG_LXT_PHY is not set
-# CONFIG_CICADA_PHY is not set
-# CONFIG_VITESSE_PHY is not set
-# CONFIG_SMSC_PHY is not set
-# CONFIG_BROADCOM_PHY is not set
-# CONFIG_BCM87XX_PHY is not set
-# CONFIG_ICPLUS_PHY is not set
-# CONFIG_REALTEK_PHY is not set
-# CONFIG_NATIONAL_PHY is not set
-# CONFIG_STE10XP is not set
-# CONFIG_LSI_ET1011C_PHY is not set
-# CONFIG_MICREL_PHY is not set
-# CONFIG_FIXED_PHY is not set
-# CONFIG_MDIO_BITBANG is not set
-# CONFIG_MDIO_BUS_MUX_GPIO is not set
-# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
-# CONFIG_MICREL_KS8995MA is not set
-# CONFIG_PPP is not set
-# CONFIG_SLIP is not set
-
-#
-# USB Network Adapters
-#
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_RTL8152 is not set
-# CONFIG_USB_USBNET is not set
-# CONFIG_USB_IPHETH is not set
-CONFIG_WLAN=y
-# CONFIG_LIBERTAS_THINFIRM is not set
-# CONFIG_AT76C50X_USB is not set
-# CONFIG_USB_ZD1201 is not set
-# CONFIG_USB_NET_RNDIS_WLAN is not set
-# CONFIG_RTL8187 is not set
-# CONFIG_MAC80211_HWSIM is not set
-CONFIG_ATH_CARDS=y
-# CONFIG_ATH_DEBUG is not set
-# CONFIG_ATH9K is not set
-# CONFIG_ATH9K_HTC is not set
-# CONFIG_CARL9170 is not set
-CONFIG_ATH6KL=m
-CONFIG_ATH6KL_SDIO=m
-# CONFIG_ATH6KL_USB is not set
-# CONFIG_ATH6KL_DEBUG is not set
-# CONFIG_AR5523 is not set
-# CONFIG_B43 is not set
-# CONFIG_B43LEGACY is not set
-# CONFIG_BRCMFMAC is not set
-# CONFIG_HOSTAP is not set
-# CONFIG_LIBERTAS is not set
-# CONFIG_P54_COMMON is not set
-# CONFIG_RT2X00 is not set
-# CONFIG_RTLWIFI is not set
-# CONFIG_WL_TI is not set
-# CONFIG_ZD1211RW is not set
-# CONFIG_MWIFIEX is not set
-
-#
-# Enable WiMAX (Networking options) to see the WiMAX drivers
-#
-# CONFIG_WAN is not set
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-CONFIG_INPUT_POLLDEV=y
-# CONFIG_INPUT_SPARSEKMAP is not set
-CONFIG_INPUT_MATRIXKMAP=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_EVDEV=y
-CONFIG_INPUT_EVBUG=m
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ADP5588 is not set
-# CONFIG_KEYBOARD_ADP5589 is not set
-CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_QT1070 is not set
-# CONFIG_KEYBOARD_QT2160 is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-CONFIG_KEYBOARD_GPIO=y
-# CONFIG_KEYBOARD_TCA6416 is not set
-# CONFIG_KEYBOARD_TCA8418 is not set
-# CONFIG_KEYBOARD_MATRIX is not set
-# CONFIG_KEYBOARD_LM8323 is not set
-# CONFIG_KEYBOARD_LM8333 is not set
-# CONFIG_KEYBOARD_MAX7359 is not set
-# CONFIG_KEYBOARD_MCS is not set
-# CONFIG_KEYBOARD_MPR121 is not set
-CONFIG_KEYBOARD_IMX=y
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_OPENCORES is not set
-# CONFIG_KEYBOARD_SAMSUNG is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=m
-CONFIG_MOUSE_PS2_ALPS=y
-CONFIG_MOUSE_PS2_LOGIPS2PP=y
-CONFIG_MOUSE_PS2_SYNAPTICS=y
-CONFIG_MOUSE_PS2_CYPRESS=y
-CONFIG_MOUSE_PS2_TRACKPOINT=y
-CONFIG_MOUSE_PS2_ELANTECH=y
-# CONFIG_MOUSE_PS2_SENTELIC is not set
-# CONFIG_MOUSE_PS2_TOUCHKIT is not set
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_APPLETOUCH is not set
-# CONFIG_MOUSE_BCM5974 is not set
-# CONFIG_MOUSE_CYAPA is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_MOUSE_GPIO is not set
-# CONFIG_MOUSE_SYNAPTICS_I2C is not set
-# CONFIG_MOUSE_SYNAPTICS_USB is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-# CONFIG_TOUCHSCREEN_ADS7846 is not set
-# CONFIG_TOUCHSCREEN_AD7877 is not set
-# CONFIG_TOUCHSCREEN_AD7879 is not set
-# CONFIG_TOUCHSCREEN_ATMEL_MXT is not set
-# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set
-# CONFIG_TOUCHSCREEN_BU21013 is not set
-# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set
-# CONFIG_TOUCHSCREEN_CYTTSP_CORE is not set
-# CONFIG_TOUCHSCREEN_DA9052 is not set
-# CONFIG_TOUCHSCREEN_DYNAPRO is not set
-# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set
-# CONFIG_TOUCHSCREEN_EETI is not set
-CONFIG_TOUCHSCREEN_EGALAX=y
-# CONFIG_TOUCHSCREEN_EGALAX_SINGLE_TOUCH is not set
-CONFIG_TOUCHSCREEN_ELAN=y
-# CONFIG_TOUCHSCREEN_FUJITSU is not set
-# CONFIG_TOUCHSCREEN_ILI210X is not set
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
-# CONFIG_TOUCHSCREEN_WACOM_I2C is not set
-CONFIG_TOUCHSCREEN_MAX11801=y
-# CONFIG_TOUCHSCREEN_MCS5000 is not set
-# CONFIG_TOUCHSCREEN_MMS114 is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_INEXIO is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-# CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set
-# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
-# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-# CONFIG_TOUCHSCREEN_PIXCIR is not set
-# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
-CONFIG_TOUCHSCREEN_MC13783=y
-# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
-# CONFIG_TOUCHSCREEN_TSC_SERIO is not set
-# CONFIG_TOUCHSCREEN_TSC2005 is not set
-# CONFIG_TOUCHSCREEN_TSC2007 is not set
-# CONFIG_TOUCHSCREEN_W90X900 is not set
-# CONFIG_TOUCHSCREEN_ST1232 is not set
-# CONFIG_TOUCHSCREEN_TPS6507X is not set
-CONFIG_INPUT_MISC=y
-# CONFIG_INPUT_AD714X is not set
-# CONFIG_INPUT_BMA150 is not set
-# CONFIG_INPUT_MC13783_PWRBUTTON is not set
-CONFIG_INPUT_MMA8450=y
-# CONFIG_INPUT_MPU3050 is not set
-# CONFIG_INPUT_GP2A is not set
-# CONFIG_INPUT_GPIO_TILT_POLLED is not set
-# CONFIG_INPUT_ATI_REMOTE2 is not set
-# CONFIG_INPUT_KEYSPAN_REMOTE is not set
-# CONFIG_INPUT_KXTJ9 is not set
-# CONFIG_INPUT_POWERMATE is not set
-# CONFIG_INPUT_YEALINK is not set
-# CONFIG_INPUT_CM109 is not set
-# CONFIG_INPUT_UINPUT is not set
-# CONFIG_INPUT_PCF8574 is not set
-# CONFIG_INPUT_PWM_BEEPER is not set
-# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
-# CONFIG_INPUT_DA9052_ONKEY is not set
-# CONFIG_INPUT_ADXL34X is not set
-# CONFIG_INPUT_IMS_PCU is not set
-# CONFIG_INPUT_CMA3000 is not set
-CONFIG_INPUT_ISL29023=y
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-CONFIG_SERIO_SERPORT=m
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-# CONFIG_SERIO_ALTERA_PS2 is not set
-# CONFIG_SERIO_PS2MULT is not set
-# CONFIG_SERIO_ARC_PS2 is not set
-# CONFIG_SERIO_APBPS2 is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_TTY=y
-CONFIG_VT=y
-CONFIG_CONSOLE_TRANSLATIONS=y
-CONFIG_VT_CONSOLE=y
-CONFIG_VT_CONSOLE_SLEEP=y
-CONFIG_HW_CONSOLE=y
-CONFIG_VT_HW_CONSOLE_BINDING=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
-# CONFIG_LEGACY_PTYS is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-# CONFIG_N_GSM is not set
-# CONFIG_TRACE_SINK is not set
-# CONFIG_DEVKMEM is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_8250 is not set
-
-#
-# Non-8250 serial port support
-#
-# CONFIG_SERIAL_MAX3100 is not set
-# CONFIG_SERIAL_MAX310X is not set
-CONFIG_SERIAL_IMX=y
-CONFIG_SERIAL_IMX_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_SCCNXP is not set
-# CONFIG_SERIAL_TIMBERDALE is not set
-# CONFIG_SERIAL_ALTERA_JTAGUART is not set
-# CONFIG_SERIAL_ALTERA_UART is not set
-# CONFIG_SERIAL_IFX6X60 is not set
-# CONFIG_SERIAL_XILINX_PS_UART is not set
-# CONFIG_SERIAL_ARC is not set
-CONFIG_SERIAL_FSL_LPUART=y
-CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
-# CONFIG_TTY_PRINTK is not set
-CONFIG_FSL_OTP=y
-# CONFIG_HVC_DCC is not set
-# CONFIG_IPMI_HANDLER is not set
-CONFIG_HW_RANDOM=y
-# CONFIG_HW_RANDOM_TIMERIOMEM is not set
-# CONFIG_HW_RANDOM_ATMEL is not set
-# CONFIG_HW_RANDOM_EXYNOS is not set
-# CONFIG_R3964 is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_TCG_TPM is not set
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-# CONFIG_I2C_COMPAT is not set
-CONFIG_I2C_CHARDEV=y
-# CONFIG_I2C_MUX is not set
-# CONFIG_I2C_HELPER_AUTO is not set
-# CONFIG_I2C_SMBUS is not set
-
-#
-# I2C Algorithms
-#
-CONFIG_I2C_ALGOBIT=y
-CONFIG_I2C_ALGOPCF=m
-CONFIG_I2C_ALGOPCA=m
-
-#
-# I2C Hardware Bus support
-#
-
-#
-# I2C system bus drivers (mostly embedded / system-on-chip)
-#
-# CONFIG_I2C_CBUS_GPIO is not set
-# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
-# CONFIG_I2C_GPIO is not set
-CONFIG_I2C_IMX=y
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PCA_PLATFORM is not set
-# CONFIG_I2C_PXA_PCI is not set
-# CONFIG_I2C_SIMTEC is not set
-# CONFIG_I2C_XILINX is not set
-
-#
-# External I2C/SMBus adapter drivers
-#
-# CONFIG_I2C_DIOLAN_U2C is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_TAOS_EVM is not set
-# CONFIG_I2C_TINY_USB is not set
-
-#
-# Other I2C/SMBus bus drivers
-#
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-CONFIG_SPI=y
-# CONFIG_SPI_DEBUG is not set
-CONFIG_SPI_MASTER=y
-
-#
-# SPI Master Controller Drivers
-#
-# CONFIG_SPI_ALTERA is not set
-CONFIG_SPI_BITBANG=y
-# CONFIG_SPI_GPIO is not set
-CONFIG_SPI_IMX=y
-# CONFIG_SPI_FSL_SPI is not set
-# CONFIG_SPI_OC_TINY is not set
-# CONFIG_SPI_PXA2XX_PCI is not set
-# CONFIG_SPI_SC18IS602 is not set
-# CONFIG_SPI_XCOMM is not set
-# CONFIG_SPI_XILINX is not set
-# CONFIG_SPI_DESIGNWARE is not set
-
-#
-# SPI Protocol Masters
-#
-# CONFIG_SPI_SPIDEV is not set
-# CONFIG_SPI_TLE62X0 is not set
-
-#
-# Qualcomm MSM SSBI bus support
-#
-# CONFIG_SSBI is not set
-# CONFIG_HSI is not set
-
-#
-# PPS support
-#
-CONFIG_PPS=y
-# CONFIG_PPS_DEBUG is not set
-
-#
-# PPS clients support
-#
-# CONFIG_PPS_CLIENT_KTIMER is not set
-# CONFIG_PPS_CLIENT_LDISC is not set
-# CONFIG_PPS_CLIENT_GPIO is not set
-
-#
-# PPS generators support
-#
-
-#
-# PTP clock support
-#
-CONFIG_PTP_1588_CLOCK=y
-
-#
-# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
-#
-# CONFIG_PTP_1588_CLOCK_PCH is not set
-CONFIG_PINCTRL=y
-
-#
-# Pin controllers
-#
-CONFIG_PINMUX=y
-CONFIG_PINCONF=y
-# CONFIG_DEBUG_PINCTRL is not set
-CONFIG_PINCTRL_IMX=y
-CONFIG_PINCTRL_IMX51=y
-CONFIG_PINCTRL_IMX53=y
-CONFIG_PINCTRL_IMX6Q=y
-CONFIG_PINCTRL_IMX6SL=y
-CONFIG_PINCTRL_VF610=y
-# CONFIG_PINCTRL_SINGLE is not set
-# CONFIG_PINCTRL_EXYNOS is not set
-# CONFIG_PINCTRL_EXYNOS5440 is not set
-CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
-CONFIG_ARCH_REQUIRE_GPIOLIB=y
-CONFIG_GPIO_DEVRES=y
-CONFIG_GPIOLIB=y
-CONFIG_OF_GPIO=y
-# CONFIG_DEBUG_GPIO is not set
-CONFIG_GPIO_SYSFS=y
-CONFIG_GPIO_GENERIC=y
-# CONFIG_GPIO_DA9052 is not set
-
-#
-# Memory mapped GPIO drivers:
-#
-# CONFIG_GPIO_GENERIC_PLATFORM is not set
-# CONFIG_GPIO_EM is not set
-CONFIG_GPIO_MXC=y
-# CONFIG_GPIO_RCAR is not set
-# CONFIG_GPIO_TS5500 is not set
-# CONFIG_GPIO_GRGPIO is not set
-
-#
-# I2C GPIO expanders:
-#
-# CONFIG_GPIO_MAX7300 is not set
-# CONFIG_GPIO_MAX732X is not set
-# CONFIG_GPIO_PCA953X_IRQ is not set
-# CONFIG_GPIO_PCF857X is not set
-# CONFIG_GPIO_SX150X is not set
-# CONFIG_GPIO_ADP5588 is not set
-# CONFIG_GPIO_ADNP is not set
-
-#
-# PCI GPIO expanders:
-#
-
-#
-# SPI GPIO expanders:
-#
-# CONFIG_GPIO_MAX7301 is not set
-# CONFIG_GPIO_MCP23S08 is not set
-# CONFIG_GPIO_MC33880 is not set
-# CONFIG_GPIO_74X164 is not set
-
-#
-# AC97 GPIO expanders:
-#
-
-#
-# MODULbus GPIO expanders:
-#
-
-#
-# USB GPIO expanders:
-#
-# CONFIG_W1 is not set
-CONFIG_POWER_SUPPLY=y
-# CONFIG_POWER_SUPPLY_DEBUG is not set
-# CONFIG_PDA_POWER is not set
-# CONFIG_TEST_POWER is not set
-# CONFIG_BATTERY_DS2780 is not set
-# CONFIG_BATTERY_DS2781 is not set
-# CONFIG_BATTERY_DS2782 is not set
-# CONFIG_BATTERY_SBS is not set
-# CONFIG_BATTERY_BQ27x00 is not set
-# CONFIG_BATTERY_DA9052 is not set
-# CONFIG_BATTERY_MAX17040 is not set
-# CONFIG_BATTERY_MAX17042 is not set
-# CONFIG_CHARGER_ISP1704 is not set
-# CONFIG_CHARGER_MAX8903 is not set
-CONFIG_SABRESD_MAX8903=y
-# CONFIG_CHARGER_LP8727 is not set
-# CONFIG_CHARGER_GPIO is not set
-# CONFIG_CHARGER_MANAGER is not set
-# CONFIG_CHARGER_BQ2415X is not set
-# CONFIG_CHARGER_SMB347 is not set
-# CONFIG_BATTERY_GOLDFISH is not set
-# CONFIG_POWER_RESET is not set
-# CONFIG_POWER_RESET_RESTART is not set
-# CONFIG_POWER_AVS is not set
-CONFIG_HWMON=y
-# CONFIG_HWMON_VID is not set
-# CONFIG_HWMON_DEBUG_CHIP is not set
-
-#
-# Native drivers
-#
-# CONFIG_SENSORS_AD7314 is not set
-# CONFIG_SENSORS_AD7414 is not set
-# CONFIG_SENSORS_AD7418 is not set
-# CONFIG_SENSORS_ADCXX is not set
-# CONFIG_SENSORS_ADM1021 is not set
-# CONFIG_SENSORS_ADM1025 is not set
-# CONFIG_SENSORS_ADM1026 is not set
-# CONFIG_SENSORS_ADM1029 is not set
-# CONFIG_SENSORS_ADM1031 is not set
-# CONFIG_SENSORS_ADM9240 is not set
-# CONFIG_SENSORS_ADT7310 is not set
-# CONFIG_SENSORS_ADT7410 is not set
-# CONFIG_SENSORS_ADT7411 is not set
-# CONFIG_SENSORS_ADT7462 is not set
-# CONFIG_SENSORS_ADT7470 is not set
-# CONFIG_SENSORS_ADT7475 is not set
-# CONFIG_SENSORS_ASC7621 is not set
-# CONFIG_SENSORS_ATXP1 is not set
-# CONFIG_SENSORS_DS620 is not set
-# CONFIG_SENSORS_DS1621 is not set
-# CONFIG_SENSORS_DA9052_ADC is not set
-# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_F71882FG is not set
-# CONFIG_SENSORS_F75375S is not set
-# CONFIG_SENSORS_G760A is not set
-# CONFIG_SENSORS_GL518SM is not set
-# CONFIG_SENSORS_GL520SM is not set
-# CONFIG_SENSORS_GPIO_FAN is not set
-# CONFIG_SENSORS_HIH6130 is not set
-# CONFIG_SENSORS_IT87 is not set
-# CONFIG_SENSORS_JC42 is not set
-# CONFIG_SENSORS_LINEAGE is not set
-# CONFIG_SENSORS_LM63 is not set
-# CONFIG_SENSORS_LM70 is not set
-# CONFIG_SENSORS_LM73 is not set
-# CONFIG_SENSORS_LM75 is not set
-# CONFIG_SENSORS_LM77 is not set
-# CONFIG_SENSORS_LM78 is not set
-# CONFIG_SENSORS_LM80 is not set
-# CONFIG_SENSORS_LM83 is not set
-# CONFIG_SENSORS_LM85 is not set
-# CONFIG_SENSORS_LM87 is not set
-# CONFIG_SENSORS_LM90 is not set
-# CONFIG_SENSORS_LM92 is not set
-# CONFIG_SENSORS_LM93 is not set
-# CONFIG_SENSORS_LTC4151 is not set
-# CONFIG_SENSORS_LTC4215 is not set
-# CONFIG_SENSORS_LTC4245 is not set
-# CONFIG_SENSORS_LTC4261 is not set
-# CONFIG_SENSORS_LM95234 is not set
-# CONFIG_SENSORS_LM95241 is not set
-# CONFIG_SENSORS_LM95245 is not set
-# CONFIG_SENSORS_MAX1111 is not set
-# CONFIG_SENSORS_MAX16065 is not set
-# CONFIG_SENSORS_MAX1619 is not set
-# CONFIG_SENSORS_MAX1668 is not set
-CONFIG_SENSORS_MAX17135=y
-# CONFIG_SENSORS_MAX197 is not set
-# CONFIG_SENSORS_MAX6639 is not set
-# CONFIG_SENSORS_MAX6642 is not set
-# CONFIG_SENSORS_MAX6650 is not set
-# CONFIG_SENSORS_MAX6697 is not set
-# CONFIG_SENSORS_MCP3021 is not set
-# CONFIG_SENSORS_NCT6775 is not set
-# CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_PC87427 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_PMBUS is not set
-# CONFIG_SENSORS_SHT15 is not set
-# CONFIG_SENSORS_SHT21 is not set
-# CONFIG_SENSORS_SMM665 is not set
-# CONFIG_SENSORS_DME1737 is not set
-# CONFIG_SENSORS_EMC1403 is not set
-# CONFIG_SENSORS_EMC2103 is not set
-# CONFIG_SENSORS_EMC6W201 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_SMSC47M192 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
-# CONFIG_SENSORS_SCH56XX_COMMON is not set
-# CONFIG_SENSORS_SCH5627 is not set
-# CONFIG_SENSORS_SCH5636 is not set
-# CONFIG_SENSORS_ADS1015 is not set
-# CONFIG_SENSORS_ADS7828 is not set
-# CONFIG_SENSORS_ADS7871 is not set
-# CONFIG_SENSORS_AMC6821 is not set
-# CONFIG_SENSORS_INA209 is not set
-# CONFIG_SENSORS_INA2XX is not set
-# CONFIG_SENSORS_THMC50 is not set
-# CONFIG_SENSORS_TMP102 is not set
-# CONFIG_SENSORS_TMP401 is not set
-# CONFIG_SENSORS_TMP421 is not set
-# CONFIG_SENSORS_VT1211 is not set
-# CONFIG_SENSORS_W83781D is not set
-# CONFIG_SENSORS_W83791D is not set
-# CONFIG_SENSORS_W83792D is not set
-# CONFIG_SENSORS_W83793 is not set
-# CONFIG_SENSORS_W83795 is not set
-# CONFIG_SENSORS_W83L785TS is not set
-# CONFIG_SENSORS_W83L786NG is not set
-# CONFIG_SENSORS_W83627HF is not set
-# CONFIG_SENSORS_W83627EHF is not set
-# CONFIG_SENSORS_MC13783_ADC is not set
-CONFIG_SENSORS_MAG3110=y
-CONFIG_MXC_MMA8451=y
-CONFIG_THERMAL=y
-CONFIG_THERMAL_HWMON=y
-CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
-# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
-# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
-# CONFIG_THERMAL_GOV_FAIR_SHARE is not set
-CONFIG_THERMAL_GOV_STEP_WISE=y
-# CONFIG_THERMAL_GOV_USER_SPACE is not set
-CONFIG_CPU_THERMAL=y
-# CONFIG_THERMAL_EMULATION is not set
-CONFIG_IMX_THERMAL=y
-CONFIG_DEVICE_THERMAL=y
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_CORE is not set
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-
-#
-# Watchdog Device Drivers
-#
-# CONFIG_SOFT_WATCHDOG is not set
-# CONFIG_DA9052_WATCHDOG is not set
-# CONFIG_DW_WATCHDOG is not set
-# CONFIG_MPCORE_WATCHDOG is not set
-# CONFIG_MAX63XX_WATCHDOG is not set
-CONFIG_IMX2_WDT=y
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG is not set
-CONFIG_SSB_POSSIBLE=y
-
-#
-# Sonics Silicon Backplane
-#
-# CONFIG_SSB is not set
-CONFIG_BCMA_POSSIBLE=y
-
-#
-# Broadcom specific AMBA
-#
-# CONFIG_BCMA is not set
-
-#
-# Multifunction device drivers
-#
-CONFIG_MFD_CORE=y
-# CONFIG_MFD_AS3711 is not set
-# CONFIG_PMIC_ADP5520 is not set
-# CONFIG_MFD_AAT2870_CORE is not set
-# CONFIG_MFD_CROS_EC is not set
-# CONFIG_MFD_ASIC3 is not set
-# CONFIG_PMIC_DA903X is not set
-CONFIG_PMIC_DA9052=y
-# CONFIG_MFD_DA9052_SPI is not set
-CONFIG_MFD_DA9052_I2C=y
-# CONFIG_MFD_DA9055 is not set
-CONFIG_MFD_MXC_HDMI=y
-CONFIG_MFD_MC13783=y
-CONFIG_MFD_MC13XXX=y
-CONFIG_MFD_MC13XXX_SPI=y
-CONFIG_MFD_MC13XXX_I2C=y
-# CONFIG_HTC_EGPIO is not set
-# CONFIG_HTC_PASIC3 is not set
-# CONFIG_HTC_I2CPLD is not set
-# CONFIG_MFD_88PM800 is not set
-# CONFIG_MFD_88PM805 is not set
-# CONFIG_MFD_88PM860X is not set
-CONFIG_MFD_MAX17135=y
-# CONFIG_MFD_MAX77686 is not set
-# CONFIG_MFD_MAX77693 is not set
-# CONFIG_MFD_MAX8907 is not set
-# CONFIG_MFD_MAX8925 is not set
-# CONFIG_MFD_MAX8997 is not set
-# CONFIG_MFD_MAX8998 is not set
-# CONFIG_EZX_PCAP is not set
-# CONFIG_MFD_VIPERBOARD is not set
-# CONFIG_MFD_RETU is not set
-# CONFIG_MFD_PCF50633 is not set
-# CONFIG_MFD_RC5T583 is not set
-# CONFIG_MFD_SEC_CORE is not set
-CONFIG_MFD_SI476X_CORE=y
-# CONFIG_MFD_SM501 is not set
-# CONFIG_MFD_SMSC is not set
-# CONFIG_ABX500_CORE is not set
-# CONFIG_MFD_STMPE is not set
-CONFIG_MFD_SYSCON=y
-# CONFIG_MFD_TI_AM335X_TSCADC is not set
-# CONFIG_MFD_LP8788 is not set
-# CONFIG_MFD_PALMAS is not set
-# CONFIG_TPS6105X is not set
-# CONFIG_TPS65010 is not set
-# CONFIG_TPS6507X is not set
-# CONFIG_MFD_TPS65090 is not set
-# CONFIG_MFD_TPS65217 is not set
-# CONFIG_MFD_TPS6586X is not set
-# CONFIG_MFD_TPS65910 is not set
-# CONFIG_MFD_TPS65912 is not set
-# CONFIG_MFD_TPS65912_I2C is not set
-# CONFIG_MFD_TPS65912_SPI is not set
-# CONFIG_MFD_TPS80031 is not set
-# CONFIG_TWL4030_CORE is not set
-# CONFIG_TWL6040_CORE is not set
-# CONFIG_MFD_WL1273_CORE is not set
-# CONFIG_MFD_LM3533 is not set
-# CONFIG_MFD_TC3589X is not set
-# CONFIG_MFD_TMIO is not set
-# CONFIG_MFD_T7L66XB is not set
-# CONFIG_MFD_TC6387XB is not set
-# CONFIG_MFD_TC6393XB is not set
-# CONFIG_MFD_ARIZONA_I2C is not set
-# CONFIG_MFD_ARIZONA_SPI is not set
-# CONFIG_MFD_WM8400 is not set
-# CONFIG_MFD_WM831X_I2C is not set
-# CONFIG_MFD_WM831X_SPI is not set
-# CONFIG_MFD_WM8350_I2C is not set
-# CONFIG_MFD_WM8994 is not set
-CONFIG_REGULATOR=y
-# CONFIG_REGULATOR_DEBUG is not set
-# CONFIG_REGULATOR_DUMMY is not set
-CONFIG_REGULATOR_FIXED_VOLTAGE=y
-# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
-# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
-# CONFIG_REGULATOR_GPIO is not set
-# CONFIG_REGULATOR_AD5398 is not set
-CONFIG_REGULATOR_DA9052=y
-# CONFIG_REGULATOR_FAN53555 is not set
-CONFIG_REGULATOR_ANATOP=y
-CONFIG_REGULATOR_MC13XXX_CORE=y
-CONFIG_REGULATOR_MC13783=y
-CONFIG_REGULATOR_MC13892=y
-# CONFIG_REGULATOR_ISL6271A is not set
-# CONFIG_REGULATOR_MAX1586 is not set
-CONFIG_REGULATOR_MAX17135=y
-# CONFIG_REGULATOR_MAX8649 is not set
-# CONFIG_REGULATOR_MAX8660 is not set
-# CONFIG_REGULATOR_MAX8952 is not set
-# CONFIG_REGULATOR_MAX8973 is not set
-# CONFIG_REGULATOR_LP3971 is not set
-# CONFIG_REGULATOR_LP3972 is not set
-# CONFIG_REGULATOR_LP872X is not set
-# CONFIG_REGULATOR_LP8755 is not set
-CONFIG_REGULATOR_PFUZE100=y
-# CONFIG_REGULATOR_TPS51632 is not set
-# CONFIG_REGULATOR_TPS62360 is not set
-# CONFIG_REGULATOR_TPS65023 is not set
-# CONFIG_REGULATOR_TPS6507X is not set
-# CONFIG_REGULATOR_TPS6524X is not set
-CONFIG_MEDIA_SUPPORT=y
-
-#
-# Multimedia core support
-#
-CONFIG_MEDIA_CAMERA_SUPPORT=y
-# CONFIG_MEDIA_ANALOG_TV_SUPPORT is not set
-# CONFIG_MEDIA_DIGITAL_TV_SUPPORT is not set
-CONFIG_MEDIA_RADIO_SUPPORT=y
-# CONFIG_MEDIA_RC_SUPPORT is not set
-# CONFIG_MEDIA_CONTROLLER is not set
-CONFIG_VIDEO_DEV=y
-CONFIG_VIDEO_V4L2=y
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
-CONFIG_VIDEOBUF_GEN=y
-CONFIG_VIDEOBUF_DMA_CONTIG=y
-CONFIG_VIDEOBUF2_CORE=y
-CONFIG_VIDEOBUF2_MEMOPS=y
-CONFIG_VIDEOBUF2_DMA_CONTIG=y
-CONFIG_VIDEOBUF2_VMALLOC=m
-CONFIG_VIDEO_V4L2_INT_DEVICE=y
-# CONFIG_TTPCI_EEPROM is not set
-
-#
-# Media drivers
-#
-CONFIG_MEDIA_USB_SUPPORT=y
-
-#
-# Webcam devices
-#
-CONFIG_USB_VIDEO_CLASS=m
-CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
-CONFIG_USB_GSPCA=m
-# CONFIG_USB_M5602 is not set
-# CONFIG_USB_STV06XX is not set
-# CONFIG_USB_GL860 is not set
-# CONFIG_USB_GSPCA_BENQ is not set
-# CONFIG_USB_GSPCA_CONEX is not set
-# CONFIG_USB_GSPCA_CPIA1 is not set
-# CONFIG_USB_GSPCA_ETOMS is not set
-# CONFIG_USB_GSPCA_FINEPIX is not set
-# CONFIG_USB_GSPCA_JEILINJ is not set
-# CONFIG_USB_GSPCA_JL2005BCD is not set
-# CONFIG_USB_GSPCA_KINECT is not set
-# CONFIG_USB_GSPCA_KONICA is not set
-# CONFIG_USB_GSPCA_MARS is not set
-# CONFIG_USB_GSPCA_MR97310A is not set
-# CONFIG_USB_GSPCA_NW80X is not set
-# CONFIG_USB_GSPCA_OV519 is not set
-# CONFIG_USB_GSPCA_OV534 is not set
-# CONFIG_USB_GSPCA_OV534_9 is not set
-# CONFIG_USB_GSPCA_PAC207 is not set
-# CONFIG_USB_GSPCA_PAC7302 is not set
-# CONFIG_USB_GSPCA_PAC7311 is not set
-# CONFIG_USB_GSPCA_SE401 is not set
-# CONFIG_USB_GSPCA_SN9C2028 is not set
-# CONFIG_USB_GSPCA_SN9C20X is not set
-# CONFIG_USB_GSPCA_SONIXB is not set
-# CONFIG_USB_GSPCA_SONIXJ is not set
-# CONFIG_USB_GSPCA_SPCA500 is not set
-# CONFIG_USB_GSPCA_SPCA501 is not set
-# CONFIG_USB_GSPCA_SPCA505 is not set
-# CONFIG_USB_GSPCA_SPCA506 is not set
-# CONFIG_USB_GSPCA_SPCA508 is not set
-# CONFIG_USB_GSPCA_SPCA561 is not set
-# CONFIG_USB_GSPCA_SPCA1528 is not set
-# CONFIG_USB_GSPCA_SQ905 is not set
-# CONFIG_USB_GSPCA_SQ905C is not set
-# CONFIG_USB_GSPCA_SQ930X is not set
-# CONFIG_USB_GSPCA_STK014 is not set
-# CONFIG_USB_GSPCA_STV0680 is not set
-# CONFIG_USB_GSPCA_SUNPLUS is not set
-# CONFIG_USB_GSPCA_T613 is not set
-# CONFIG_USB_GSPCA_TOPRO is not set
-# CONFIG_USB_GSPCA_TV8532 is not set
-# CONFIG_USB_GSPCA_VC032X is not set
-# CONFIG_USB_GSPCA_VICAM is not set
-# CONFIG_USB_GSPCA_XIRLINK_CIT is not set
-# CONFIG_USB_GSPCA_ZC3XX is not set
-# CONFIG_USB_PWC is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_USB_ZR364XX is not set
-# CONFIG_USB_STKWEBCAM is not set
-# CONFIG_USB_S2255 is not set
-# CONFIG_USB_SN9C102 is not set
-
-#
-# Webcam, TV (analog/digital) USB devices
-#
-# CONFIG_VIDEO_EM28XX is not set
-CONFIG_V4L_PLATFORM_DRIVERS=y
-# CONFIG_VIDEO_TIMBERDALE is not set
-CONFIG_VIDEO_MXC_OUTPUT=y
-CONFIG_VIDEO_MXC_CAPTURE=m
-
-#
-# MXC Camera/V4L2 PRP Features support
-#
-CONFIG_VIDEO_MXC_IPU_CAMERA=y
-CONFIG_VIDEO_MXC_CSI_CAMERA=m
-CONFIG_MXC_CAMERA_OV5640=m
-CONFIG_MXC_CAMERA_OV5642=m
-CONFIG_MXC_CAMERA_OV5640_MIPI=m
-CONFIG_MXC_TVIN_ADV7180=m
-CONFIG_MXC_IPU_DEVICE_QUEUE_SDC=m
-CONFIG_MXC_IPU_PRP_ENC=m
-CONFIG_MXC_IPU_CSI_ENC=m
-CONFIG_VIDEO_MXC_IPU_OUTPUT=y
-CONFIG_VIDEO_MXC_PXP_V4L2=y
-CONFIG_SOC_CAMERA=y
-# CONFIG_SOC_CAMERA_PLATFORM is not set
-CONFIG_MX3_VIDEO=y
-CONFIG_VIDEO_MX3=y
-# CONFIG_VIDEO_SH_MOBILE_CSI2 is not set
-# CONFIG_VIDEO_SH_MOBILE_CEU is not set
-# CONFIG_V4L_MEM2MEM_DRIVERS is not set
-# CONFIG_V4L_TEST_DRIVERS is not set
-
-#
-# Supported MMC/SDIO adapters
-#
-CONFIG_RADIO_ADAPTERS=y
-# CONFIG_RADIO_SI470X is not set
-CONFIG_RADIO_SI476X=y
-# CONFIG_USB_MR800 is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_RADIO_SHARK is not set
-# CONFIG_RADIO_SHARK2 is not set
-# CONFIG_I2C_SI4713 is not set
-# CONFIG_RADIO_SI4713 is not set
-# CONFIG_USB_KEENE is not set
-# CONFIG_USB_MA901 is not set
-# CONFIG_RADIO_TEA5764 is not set
-# CONFIG_RADIO_SAA7706H is not set
-# CONFIG_RADIO_TEF6862 is not set
-# CONFIG_RADIO_WL1273 is not set
-
-#
-# Texas Instruments WL128x FM driver (ST based)
-#
-# CONFIG_CYPRESS_FIRMWARE is not set
-
-#
-# Media ancillary drivers (tuners, sensors, i2c, frontends)
-#
-CONFIG_MEDIA_SUBDRV_AUTOSELECT=y
-CONFIG_MEDIA_ATTACH=y
-
-#
-# Audio decoders, processors and mixers
-#
-
-#
-# RDS decoders
-#
-
-#
-# Video decoders
-#
-
-#
-# Video and audio decoders
-#
-
-#
-# Video encoders
-#
-
-#
-# Camera sensor devices
-#
-
-#
-# Flash devices
-#
-
-#
-# Video improvement chips
-#
-
-#
-# Miscelaneous helper chips
-#
-
-#
-# Sensors used on soc_camera driver
-#
-
-#
-# soc_camera sensor drivers
-#
-# CONFIG_SOC_CAMERA_IMX074 is not set
-# CONFIG_SOC_CAMERA_MT9M001 is not set
-# CONFIG_SOC_CAMERA_MT9M111 is not set
-# CONFIG_SOC_CAMERA_MT9T031 is not set
-# CONFIG_SOC_CAMERA_MT9T112 is not set
-# CONFIG_SOC_CAMERA_MT9V022 is not set
-CONFIG_SOC_CAMERA_OV2640=y
-# CONFIG_SOC_CAMERA_OV5642 is not set
-# CONFIG_SOC_CAMERA_OV6650 is not set
-# CONFIG_SOC_CAMERA_OV772X is not set
-# CONFIG_SOC_CAMERA_OV9640 is not set
-# CONFIG_SOC_CAMERA_OV9740 is not set
-# CONFIG_SOC_CAMERA_RJ54N1 is not set
-# CONFIG_SOC_CAMERA_TW9910 is not set
-CONFIG_MEDIA_TUNER=y
-CONFIG_MEDIA_TUNER_SIMPLE=y
-CONFIG_MEDIA_TUNER_TDA8290=y
-CONFIG_MEDIA_TUNER_TDA827X=y
-CONFIG_MEDIA_TUNER_TDA18271=y
-CONFIG_MEDIA_TUNER_TDA9887=y
-CONFIG_MEDIA_TUNER_TEA5761=y
-CONFIG_MEDIA_TUNER_TEA5767=y
-CONFIG_MEDIA_TUNER_MT20XX=y
-CONFIG_MEDIA_TUNER_XC2028=y
-CONFIG_MEDIA_TUNER_XC5000=y
-CONFIG_MEDIA_TUNER_XC4000=y
-CONFIG_MEDIA_TUNER_MC44S803=y
-
-#
-# Tools to develop new frontends
-#
-# CONFIG_DVB_DUMMY_FE is not set
-
-#
-# Graphics support
-#
-CONFIG_DRM=y
-CONFIG_DRM_VIVANTE=y
-# CONFIG_DRM_EXYNOS is not set
-# CONFIG_DRM_UDL is not set
-# CONFIG_DRM_TILCDC is not set
-# CONFIG_TEGRA_HOST1X is not set
-# CONFIG_VGASTATE is not set
-# CONFIG_VIDEO_OUTPUT_CONTROL is not set
-CONFIG_VIDEOMODE_HELPERS=y
-CONFIG_HDMI=y
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB_DDC is not set
-# CONFIG_FB_BOOT_VESA_SUPPORT is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_FOREIGN_ENDIAN is not set
-# CONFIG_FB_SYS_FOPS is not set
-CONFIG_FB_DEFERRED_IO=y
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-CONFIG_FB_MODE_HELPERS=y
-# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_UVESA is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_TMIO is not set
-# CONFIG_FB_SMSCUFX is not set
-# CONFIG_FB_UDL is not set
-# CONFIG_FB_GOLDFISH is not set
-# CONFIG_FB_VIRTUAL is not set
-# CONFIG_FB_METRONOME is not set
-CONFIG_FB_MX3=y
-# CONFIG_FB_BROADSHEET is not set
-# CONFIG_FB_AUO_K190X is not set
-CONFIG_FB_MXS=y
-# CONFIG_FB_SIMPLE is not set
-# CONFIG_EXYNOS_VIDEO is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_LCD_CLASS_DEVICE=y
-CONFIG_LCD_L4F00242T03=y
-# CONFIG_LCD_LMS283GF05 is not set
-# CONFIG_LCD_LTV350QV is not set
-# CONFIG_LCD_ILI922X is not set
-# CONFIG_LCD_ILI9320 is not set
-# CONFIG_LCD_TDO24M is not set
-# CONFIG_LCD_VGG2432A4 is not set
-CONFIG_LCD_PLATFORM=y
-# CONFIG_LCD_S6E63M0 is not set
-# CONFIG_LCD_LD9040 is not set
-# CONFIG_LCD_AMS369FG06 is not set
-# CONFIG_LCD_LMS501KF03 is not set
-# CONFIG_LCD_HX8357 is not set
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_GENERIC=y
-CONFIG_BACKLIGHT_PWM=y
-# CONFIG_BACKLIGHT_DA9052 is not set
-# CONFIG_BACKLIGHT_ADP8860 is not set
-# CONFIG_BACKLIGHT_ADP8870 is not set
-# CONFIG_BACKLIGHT_LM3630 is not set
-# CONFIG_BACKLIGHT_LM3639 is not set
-# CONFIG_BACKLIGHT_LP855X is not set
-CONFIG_FB_MXC=y
-CONFIG_FB_MXC_SYNC_PANEL=y
-CONFIG_FB_MXC_LDB=y
-CONFIG_FB_MXC_MIPI_DSI=y
-CONFIG_FB_MXC_TRULY_WVGA_SYNC_PANEL=y
-CONFIG_FB_MXC_HDMI=y
-CONFIG_FB_MXC_EDID=y
-CONFIG_FB_MXC_EINK_PANEL=y
-# CONFIG_FB_MXC_EINK_AUTO_UPDATE_MODE is not set
-CONFIG_FB_MXS_SII902X=y
-
-#
-# Console display driver support
-#
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-CONFIG_FONTS=y
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-CONFIG_LOGO_LINUX_CLUT224=y
-# CONFIG_FB_SSD1307 is not set
-CONFIG_SOUND=y
-# CONFIG_SOUND_OSS_CORE is not set
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-CONFIG_SND_COMPRESS_OFFLOAD=y
-CONFIG_SND_JACK=y
-# CONFIG_SND_SEQUENCER is not set
-# CONFIG_SND_MIXER_OSS is not set
-# CONFIG_SND_PCM_OSS is not set
-# CONFIG_SND_HRTIMER is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-# CONFIG_SND_RAWMIDI_SEQ is not set
-# CONFIG_SND_OPL3_LIB_SEQ is not set
-# CONFIG_SND_OPL4_LIB_SEQ is not set
-# CONFIG_SND_SBAWE_SEQ is not set
-# CONFIG_SND_EMU10K1_SEQ is not set
-CONFIG_SND_DRIVERS=y
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_ALOOP is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-CONFIG_SND_ARM=y
-CONFIG_SND_SPI=y
-CONFIG_SND_USB=y
-CONFIG_SND_USB_AUDIO=m
-# CONFIG_SND_USB_UA101 is not set
-# CONFIG_SND_USB_CAIAQ is not set
-# CONFIG_SND_USB_6FIRE is not set
-CONFIG_SND_SOC=y
-CONFIG_SND_SOC_DMAENGINE_PCM=y
-CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
-# CONFIG_SND_ATMEL_SOC is not set
-# CONFIG_SND_DESIGNWARE_I2S is not set
-CONFIG_SND_SOC_FSL_SSI=y
-CONFIG_SND_SOC_FSL_ASRC=y
-CONFIG_SND_SOC_FSL_ESAI=y
-CONFIG_SND_SOC_FSL_SPDIF=y
-CONFIG_SND_SOC_FSL_HDMI=y
-CONFIG_SND_SOC_FSL_UTILS=y
-CONFIG_SND_IMX_SOC=y
-CONFIG_SND_SOC_IMX_SSI=y
-CONFIG_SND_SOC_IMX_PCM_FIQ=y
-CONFIG_SND_SOC_IMX_PCM_DMA=y
-CONFIG_SND_SOC_IMX_HDMI_DMA=y
-CONFIG_SND_SOC_IMX_AUDMUX=y
-CONFIG_SND_SOC_EUKREA_TLV320=y
-CONFIG_SND_SOC_IMX_CS42888=y
-CONFIG_SND_SOC_IMX_WM8962=y
-CONFIG_SND_SOC_IMX_SGTL5000=y
-CONFIG_SND_SOC_IMX_SPDIF=y
-CONFIG_SND_SOC_IMX_MC13783=y
-CONFIG_SND_SOC_IMX_HDMI=y
-CONFIG_SND_SOC_IMX_SI476X=y
-CONFIG_SND_SOC_I2C_AND_SPI=y
-# CONFIG_SND_SOC_ALL_CODECS is not set
-CONFIG_SND_SOC_CS42888=y
-CONFIG_SND_SOC_OMAP_HDMI_CODEC=y
-CONFIG_SND_SOC_SGTL5000=y
-CONFIG_SND_SOC_SI476X=y
-CONFIG_SND_SOC_SPDIF=y
-CONFIG_SND_SOC_TLV320AIC23=y
-CONFIG_SND_SOC_WM8962=y
-CONFIG_SND_SOC_MC13783=y
-# CONFIG_SND_SIMPLE_CARD is not set
-# CONFIG_SOUND_PRIME is not set
-
-#
-# HID support
-#
-CONFIG_HID=y
-# CONFIG_HID_BATTERY_STRENGTH is not set
-# CONFIG_HIDRAW is not set
-# CONFIG_UHID is not set
-CONFIG_HID_GENERIC=y
-
-#
-# Special HID drivers
-#
-# CONFIG_HID_A4TECH is not set
-# CONFIG_HID_ACRUX is not set
-# CONFIG_HID_APPLE is not set
-# CONFIG_HID_APPLEIR is not set
-# CONFIG_HID_AUREAL is not set
-# CONFIG_HID_BELKIN is not set
-# CONFIG_HID_CHERRY is not set
-# CONFIG_HID_CHICONY is not set
-# CONFIG_HID_PRODIKEYS is not set
-# CONFIG_HID_CYPRESS is not set
-# CONFIG_HID_DRAGONRISE is not set
-# CONFIG_HID_EMS_FF is not set
-# CONFIG_HID_ELECOM is not set
-# CONFIG_HID_EZKEY is not set
-# CONFIG_HID_HOLTEK is not set
-# CONFIG_HID_KEYTOUCH is not set
-# CONFIG_HID_KYE is not set
-# CONFIG_HID_UCLOGIC is not set
-# CONFIG_HID_WALTOP is not set
-# CONFIG_HID_GYRATION is not set
-# CONFIG_HID_ICADE is not set
-# CONFIG_HID_TWINHAN is not set
-# CONFIG_HID_KENSINGTON is not set
-# CONFIG_HID_LCPOWER is not set
-# CONFIG_HID_LENOVO_TPKBD is not set
-# CONFIG_HID_LOGITECH is not set
-# CONFIG_HID_MAGICMOUSE is not set
-# CONFIG_HID_MICROSOFT is not set
-# CONFIG_HID_MONTEREY is not set
-# CONFIG_HID_MULTITOUCH is not set
-# CONFIG_HID_NTRIG is not set
-# CONFIG_HID_ORTEK is not set
-# CONFIG_HID_PANTHERLORD is not set
-# CONFIG_HID_PETALYNX is not set
-# CONFIG_HID_PICOLCD is not set
-# CONFIG_HID_PRIMAX is not set
-# CONFIG_HID_PS3REMOTE is not set
-# CONFIG_HID_ROCCAT is not set
-# CONFIG_HID_SAITEK is not set
-# CONFIG_HID_SAMSUNG is not set
-# CONFIG_HID_SONY is not set
-# CONFIG_HID_SPEEDLINK is not set
-# CONFIG_HID_STEELSERIES is not set
-# CONFIG_HID_SUNPLUS is not set
-# CONFIG_HID_GREENASIA is not set
-# CONFIG_HID_SMARTJOYPLUS is not set
-# CONFIG_HID_TIVO is not set
-# CONFIG_HID_TOPSEED is not set
-# CONFIG_HID_THINGM is not set
-# CONFIG_HID_THRUSTMASTER is not set
-# CONFIG_HID_WACOM is not set
-# CONFIG_HID_WIIMOTE is not set
-# CONFIG_HID_ZEROPLUS is not set
-# CONFIG_HID_ZYDACRON is not set
-# CONFIG_HID_SENSOR_HUB is not set
-
-#
-# USB HID support
-#
-CONFIG_USB_HID=y
-# CONFIG_HID_PID is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# I2C HID support
-#
-# CONFIG_I2C_HID is not set
-# CONFIG_USB_ARCH_HAS_OHCI is not set
-CONFIG_USB_ARCH_HAS_EHCI=y
-# CONFIG_USB_ARCH_HAS_XHCI is not set
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_COMMON=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEFAULT_PERSIST=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_OTG is not set
-# CONFIG_USB_OTG_WHITELIST is not set
-# CONFIG_USB_OTG_BLACKLIST_HUB is not set
-# CONFIG_USB_MON is not set
-# CONFIG_USB_WUSB_CBAF is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_C67X00_HCD is not set
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_EHCI_ROOT_HUB_TT=y
-CONFIG_USB_EHCI_TT_NEWSCHED=y
-# CONFIG_USB_EHCI_MXC is not set
-# CONFIG_USB_EHCI_HCD_PLATFORM is not set
-# CONFIG_USB_OXU210HP_HCD is not set
-# CONFIG_USB_ISP116X_HCD is not set
-# CONFIG_USB_ISP1760_HCD is not set
-# CONFIG_USB_ISP1362_HCD is not set
-# CONFIG_USB_SL811_HCD is not set
-# CONFIG_USB_R8A66597_HCD is not set
-# CONFIG_USB_IMX21_HCD is not set
-# CONFIG_USB_MUSB_HDRC is not set
-# CONFIG_USB_RENESAS_USBHS is not set
-
-#
-# USB Device Class drivers
-#
-# CONFIG_USB_ACM is not set
-# CONFIG_USB_PRINTER is not set
-# CONFIG_USB_WDM is not set
-# CONFIG_USB_TMC is not set
-
-#
-# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
-#
-
-#
-# also be needed; see USB_STORAGE Help for more info
-#
-CONFIG_USB_STORAGE=y
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_REALTEK is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_STORAGE_ONETOUCH is not set
-# CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
-# CONFIG_USB_STORAGE_ENE_UB6250 is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-# CONFIG_USB_DWC3 is not set
-CONFIG_USB_CHIPIDEA=y
-CONFIG_USB_CHIPIDEA_UDC=y
-CONFIG_USB_CHIPIDEA_HOST=y
-# CONFIG_USB_CHIPIDEA_DEBUG is not set
-
-#
-# USB port drivers
-#
-# CONFIG_USB_SERIAL is not set
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_ADUTUX is not set
-# CONFIG_USB_SEVSEG is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_SISUSBVGA is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_IOWARRIOR is not set
-# CONFIG_USB_TEST is not set
-# CONFIG_USB_ISIGHTFW is not set
-# CONFIG_USB_YUREX is not set
-# CONFIG_USB_EZUSB_FX2 is not set
-# CONFIG_USB_HSIC_USB3503 is not set
-CONFIG_USB_PHY=y
-# CONFIG_NOP_USB_XCEIV is not set
-# CONFIG_OMAP_CONTROL_USB is not set
-# CONFIG_OMAP_USB3 is not set
-# CONFIG_SAMSUNG_USBPHY is not set
-# CONFIG_SAMSUNG_USB2PHY is not set
-# CONFIG_SAMSUNG_USB3PHY is not set
-# CONFIG_USB_GPIO_VBUS is not set
-# CONFIG_USB_ISP1301 is not set
-CONFIG_USB_MXS_PHY=y
-# CONFIG_USB_RCAR_PHY is not set
-# CONFIG_USB_ULPI is not set
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG is not set
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-# CONFIG_USB_GADGET_DEBUG_FS is not set
-CONFIG_USB_GADGET_VBUS_DRAW=2
-CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
-
-#
-# USB Peripheral Controller
-#
-# CONFIG_USB_FSL_USB2 is not set
-# CONFIG_USB_FUSB300 is not set
-# CONFIG_USB_R8A66597 is not set
-# CONFIG_USB_PXA27X is not set
-# CONFIG_USB_MV_UDC is not set
-# CONFIG_USB_MV_U3D is not set
-# CONFIG_USB_M66592 is not set
-# CONFIG_USB_NET2272 is not set
-# CONFIG_USB_DUMMY_HCD is not set
-CONFIG_USB_LIBCOMPOSITE=m
-CONFIG_USB_F_ACM=m
-CONFIG_USB_F_SS_LB=m
-CONFIG_USB_U_SERIAL=m
-CONFIG_USB_F_SERIAL=m
-CONFIG_USB_F_OBEX=m
-CONFIG_USB_ZERO=m
-# CONFIG_USB_AUDIO is not set
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_ETH_EEM is not set
-# CONFIG_USB_G_NCM is not set
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FUNCTIONFS is not set
-CONFIG_USB_MASS_STORAGE=m
-CONFIG_USB_G_SERIAL=m
-# CONFIG_USB_MIDI_GADGET is not set
-# CONFIG_USB_G_PRINTER is not set
-# CONFIG_USB_CDC_COMPOSITE is not set
-# CONFIG_USB_G_ACM_MS is not set
-# CONFIG_USB_G_MULTI is not set
-# CONFIG_USB_G_HID is not set
-# CONFIG_USB_G_DBGP is not set
-# CONFIG_USB_G_WEBCAM is not set
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_UNSAFE_RESUME=y
-# CONFIG_MMC_CLKGATE is not set
-
-#
-# MMC/SD/SDIO Card Drivers
-#
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_BLOCK_MINORS=8
-CONFIG_MMC_BLOCK_BOUNCE=y
-# CONFIG_SDIO_UART is not set
-# CONFIG_MMC_TEST is not set
-
-#
-# MMC/SD/SDIO Host Controller Drivers
-#
-CONFIG_MMC_SDHCI=y
-CONFIG_MMC_SDHCI_IO_ACCESSORS=y
-CONFIG_MMC_SDHCI_PLTFM=y
-CONFIG_MMC_SDHCI_ESDHC_IMX=y
-# CONFIG_MMC_SDHCI_PXAV3 is not set
-# CONFIG_MMC_SDHCI_PXAV2 is not set
-# CONFIG_MMC_MXC is not set
-# CONFIG_MMC_SPI is not set
-# CONFIG_MMC_DW is not set
-# CONFIG_MMC_VUB300 is not set
-# CONFIG_MMC_USHC is not set
-# CONFIG_MEMSTICK is not set
-
-#
-# MXC support drivers
-#
-CONFIG_MXC_IPU=y
-
-#
-# MXC Vivante GPU support
-#
-CONFIG_MXC_GPU_VIV=y
-CONFIG_MXC_IPU_V3=y
-
-#
-# MXC Asynchronous Sample Rate Converter support
-#
-CONFIG_MXC_ASRC=y
-
-#
-# MXC VPU(Video Processing Unit) support
-#
-CONFIG_MXC_VPU=y
-# CONFIG_MXC_VPU_DEBUG is not set
-# CONFIG_MX6_VPU_352M is not set
-
-#
-# MXC HDMI CEC (Consumer Electronics Control) support
-#
-# CONFIG_MXC_HDMI_CEC is not set
-
-#
-# MXC MIPI Support
-#
-CONFIG_MXC_MIPI_CSI2=y
-CONFIG_LEDS_GPIO_REGISTER=y
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-# CONFIG_LEDS_LM3530 is not set
-# CONFIG_LEDS_LM3642 is not set
-# CONFIG_LEDS_PCA9532 is not set
-# CONFIG_LEDS_GPIO is not set
-# CONFIG_LEDS_LP3944 is not set
-# CONFIG_LEDS_LP5521 is not set
-# CONFIG_LEDS_LP5523 is not set
-# CONFIG_LEDS_LP5562 is not set
-# CONFIG_LEDS_PCA955X is not set
-# CONFIG_LEDS_PCA9633 is not set
-# CONFIG_LEDS_DA9052 is not set
-# CONFIG_LEDS_DAC124S085 is not set
-# CONFIG_LEDS_PWM is not set
-# CONFIG_LEDS_REGULATOR is not set
-# CONFIG_LEDS_BD2802 is not set
-# CONFIG_LEDS_LT3593 is not set
-# CONFIG_LEDS_MC13783 is not set
-# CONFIG_LEDS_RENESAS_TPU is not set
-# CONFIG_LEDS_TCA6507 is not set
-# CONFIG_LEDS_LM355x is not set
-# CONFIG_LEDS_OT200 is not set
-# CONFIG_LEDS_BLINKM is not set
-
-#
-# LED Triggers
-#
-# CONFIG_LEDS_TRIGGERS is not set
-# CONFIG_ACCESSIBILITY is not set
-# CONFIG_EDAC is not set
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_SYSTOHC=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-CONFIG_RTC_INTF_DEV_UIE_EMUL=y
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# I2C RTC drivers
-#
-# CONFIG_RTC_DRV_DS1307 is not set
-# CONFIG_RTC_DRV_DS1374 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_DS3232 is not set
-# CONFIG_RTC_DRV_MAX6900 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_ISL1208 is not set
-# CONFIG_RTC_DRV_ISL12022 is not set
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_PCF8523 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_M41T80 is not set
-# CONFIG_RTC_DRV_BQ32K is not set
-# CONFIG_RTC_DRV_S35390A is not set
-# CONFIG_RTC_DRV_FM3130 is not set
-# CONFIG_RTC_DRV_RX8581 is not set
-# CONFIG_RTC_DRV_RX8025 is not set
-# CONFIG_RTC_DRV_EM3027 is not set
-# CONFIG_RTC_DRV_RV3029C2 is not set
-
-#
-# SPI RTC drivers
-#
-# CONFIG_RTC_DRV_M41T93 is not set
-# CONFIG_RTC_DRV_M41T94 is not set
-# CONFIG_RTC_DRV_DS1305 is not set
-# CONFIG_RTC_DRV_DS1390 is not set
-# CONFIG_RTC_DRV_MAX6902 is not set
-# CONFIG_RTC_DRV_R9701 is not set
-# CONFIG_RTC_DRV_RS5C348 is not set
-# CONFIG_RTC_DRV_DS3234 is not set
-# CONFIG_RTC_DRV_PCF2123 is not set
-# CONFIG_RTC_DRV_RX4581 is not set
-
-#
-# Platform RTC drivers
-#
-# CONFIG_RTC_DRV_CMOS is not set
-# CONFIG_RTC_DRV_DS1286 is not set
-# CONFIG_RTC_DRV_DS1511 is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_DA9052 is not set
-# CONFIG_RTC_DRV_STK17TA8 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_M48T35 is not set
-# CONFIG_RTC_DRV_M48T59 is not set
-# CONFIG_RTC_DRV_MSM6242 is not set
-# CONFIG_RTC_DRV_BQ4802 is not set
-# CONFIG_RTC_DRV_RP5C01 is not set
-# CONFIG_RTC_DRV_V3020 is not set
-# CONFIG_RTC_DRV_DS2404 is not set
-
-#
-# on-CPU RTC drivers
-#
-# CONFIG_RTC_DRV_IMXDI is not set
-CONFIG_RTC_DRV_MC13XXX=y
-CONFIG_RTC_DRV_MXC=y
-CONFIG_RTC_DRV_SNVS=y
-
-#
-# HID Sensor RTC drivers
-#
-# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set
-CONFIG_DMADEVICES=y
-# CONFIG_DMADEVICES_DEBUG is not set
-
-#
-# DMA Devices
-#
-# CONFIG_DW_DMAC is not set
-CONFIG_MX3_IPU=y
-CONFIG_MX3_IPU_IRQS=4
-CONFIG_MXC_PXP_V2=y
-CONFIG_MXC_PXP_CLIENT_DEVICE=y
-# CONFIG_TIMB_DMA is not set
-CONFIG_IMX_SDMA=y
-# CONFIG_IMX_DMA is not set
-CONFIG_MXS_DMA=y
-CONFIG_DMA_ENGINE=y
-CONFIG_DMA_OF=y
-
-#
-# DMA Clients
-#
-# CONFIG_NET_DMA is not set
-# CONFIG_ASYNC_TX_DMA is not set
-# CONFIG_DMATEST is not set
-# CONFIG_AUXDISPLAY is not set
-# CONFIG_UIO is not set
-# CONFIG_VIRT_DRIVERS is not set
-
-#
-# Virtio drivers
-#
-# CONFIG_VIRTIO_MMIO is not set
-
-#
-# Microsoft Hyper-V guest support
-#
-CONFIG_STAGING=y
-# CONFIG_USBIP_CORE is not set
-# CONFIG_W35UND is not set
-# CONFIG_PRISM2_USB is not set
-# CONFIG_ECHO is not set
-# CONFIG_COMEDI is not set
-# CONFIG_ASUS_OLED is not set
-# CONFIG_RTLLIB is not set
-# CONFIG_R8712U is not set
-# CONFIG_RTS5139 is not set
-# CONFIG_TRANZPORT is not set
-# CONFIG_LINE6_USB is not set
-# CONFIG_VT6656 is not set
-# CONFIG_ZSMALLOC is not set
-# CONFIG_USB_ENESTORAGE is not set
-# CONFIG_BCM_WIMAX is not set
-# CONFIG_FT1000 is not set
-
-#
-# Speakup console speech
-#
-# CONFIG_SPEAKUP is not set
-# CONFIG_TOUCHSCREEN_CLEARPAD_TM1217 is not set
-# CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set
-# CONFIG_STAGING_MEDIA is not set
-
-#
-# Android
-#
-# CONFIG_ANDROID is not set
-# CONFIG_USB_WPAN_HCD is not set
-# CONFIG_WIMAX_GDM72XX is not set
-# CONFIG_CSR_WIFI is not set
-# CONFIG_CED1401 is not set
-# CONFIG_DRM_IMX is not set
-# CONFIG_DGRP is not set
-CONFIG_CLKDEV_LOOKUP=y
-CONFIG_HAVE_CLK_PREPARE=y
-CONFIG_COMMON_CLK=y
-
-#
-# Common Clock Framework
-#
-CONFIG_COMMON_CLK_DEBUG=y
-# CONFIG_COMMON_CLK_SI5351 is not set
-
-#
-# Hardware Spinlock drivers
-#
-CONFIG_CLKSRC_OF=y
-CONFIG_CLKSRC_MMIO=y
-CONFIG_VF_PIT_TIMER=y
-# CONFIG_MAILBOX is not set
-# CONFIG_IOMMU_SUPPORT is not set
-
-#
-# Remoteproc drivers
-#
-# CONFIG_STE_MODEM_RPROC is not set
-
-#
-# Rpmsg drivers
-#
-# CONFIG_PM_DEVFREQ is not set
-# CONFIG_EXTCON is not set
-# CONFIG_MEMORY is not set
-# CONFIG_IIO is not set
-CONFIG_PWM=y
-CONFIG_PWM_IMX=y
-CONFIG_IRQCHIP=y
-CONFIG_ARM_GIC=y
-# CONFIG_IPACK_BUS is not set
-CONFIG_ARCH_HAS_RESET_CONTROLLER=y
-CONFIG_RESET_CONTROLLER=y
-CONFIG_RESET_GPIO=y
-
-#
-# File systems
-#
-CONFIG_DCACHE_WORD_ACCESS=y
-CONFIG_EXT2_FS=y
-CONFIG_EXT2_FS_XATTR=y
-CONFIG_EXT2_FS_POSIX_ACL=y
-CONFIG_EXT2_FS_SECURITY=y
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-CONFIG_EXT3_DEFAULTS_TO_ORDERED=y
-CONFIG_EXT3_FS_XATTR=y
-CONFIG_EXT3_FS_POSIX_ACL=y
-CONFIG_EXT3_FS_SECURITY=y
-CONFIG_EXT4_FS=y
-CONFIG_EXT4_FS_POSIX_ACL=y
-CONFIG_EXT4_FS_SECURITY=y
-# CONFIG_EXT4_DEBUG is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-CONFIG_JBD2=y
-# CONFIG_JBD2_DEBUG is not set
-CONFIG_FS_MBCACHE=y
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_BTRFS_FS is not set
-# CONFIG_NILFS2_FS is not set
-CONFIG_FS_POSIX_ACL=y
-CONFIG_FILE_LOCKING=y
-CONFIG_FSNOTIFY=y
-CONFIG_DNOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_FANOTIFY is not set
-CONFIG_QUOTA=y
-CONFIG_QUOTA_NETLINK_INTERFACE=y
-# CONFIG_PRINT_QUOTA_WARNING is not set
-# CONFIG_QUOTA_DEBUG is not set
-# CONFIG_QFMT_V1 is not set
-# CONFIG_QFMT_V2 is not set
-CONFIG_QUOTACTL=y
-CONFIG_AUTOFS4_FS=y
-CONFIG_FUSE_FS=y
-# CONFIG_CUSE is not set
-
-#
-# Caches
-#
-# CONFIG_FSCACHE is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-CONFIG_UDF_FS=m
-CONFIG_UDF_NLS=y
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-CONFIG_MSDOS_FS=m
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_PROC_PAGE_MONITOR=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_TMPFS_XATTR is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_CONFIGFS_FS=m
-CONFIG_MISC_FILESYSTEMS=y
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_ECRYPT_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
-# CONFIG_JFFS2_SUMMARY is not set
-# CONFIG_JFFS2_FS_XATTR is not set
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-# CONFIG_JFFS2_LZO is not set
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-CONFIG_UBIFS_FS=y
-# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set
-CONFIG_UBIFS_FS_LZO=y
-CONFIG_UBIFS_FS_ZLIB=y
-# CONFIG_LOGFS is not set
-# CONFIG_CRAMFS is not set
-# CONFIG_SQUASHFS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_OMFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_QNX6FS_FS is not set
-# CONFIG_ROMFS_FS is not set
-# CONFIG_PSTORE is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_F2FS_FS is not set
-CONFIG_NETWORK_FILESYSTEMS=y
-CONFIG_NFS_FS=y
-CONFIG_NFS_V2=y
-CONFIG_NFS_V3=y
-CONFIG_NFS_V3_ACL=y
-CONFIG_NFS_V4=y
-# CONFIG_NFS_SWAP is not set
-# CONFIG_NFS_V4_1 is not set
-CONFIG_ROOT_NFS=y
-# CONFIG_NFS_USE_LEGACY_DNS is not set
-CONFIG_NFS_USE_KERNEL_DNS=y
-# CONFIG_NFSD is not set
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_ACL_SUPPORT=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-CONFIG_SUNRPC_GSS=y
-# CONFIG_SUNRPC_DEBUG is not set
-# CONFIG_CEPH_FS is not set
-# CONFIG_CIFS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-CONFIG_NLS_ASCII=y
-CONFIG_NLS_ISO8859_1=y
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-CONFIG_NLS_ISO8859_15=m
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-# CONFIG_NLS_MAC_ROMAN is not set
-# CONFIG_NLS_MAC_CELTIC is not set
-# CONFIG_NLS_MAC_CENTEURO is not set
-# CONFIG_NLS_MAC_CROATIAN is not set
-# CONFIG_NLS_MAC_CYRILLIC is not set
-# CONFIG_NLS_MAC_GAELIC is not set
-# CONFIG_NLS_MAC_GREEK is not set
-# CONFIG_NLS_MAC_ICELAND is not set
-# CONFIG_NLS_MAC_INUIT is not set
-# CONFIG_NLS_MAC_ROMANIAN is not set
-# CONFIG_NLS_MAC_TURKISH is not set
-CONFIG_NLS_UTF8=y
-# CONFIG_DLM is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_FRAME_WARN=1024
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_STRIP_ASM_SYMS is not set
-# CONFIG_READABLE_ASM is not set
-# CONFIG_UNUSED_SYMBOLS is not set
-CONFIG_DEBUG_FS=y
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_DEBUG_SECTION_MISMATCH is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-# CONFIG_LOCKUP_DETECTOR is not set
-# CONFIG_PANIC_ON_OOPS is not set
-CONFIG_PANIC_ON_OOPS_VALUE=0
-# CONFIG_DETECT_HUNG_TASK is not set
-# CONFIG_SCHED_DEBUG is not set
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_TIMER_STATS is not set
-# CONFIG_DEBUG_OBJECTS is not set
-# CONFIG_SLUB_STATS is not set
-CONFIG_HAVE_DEBUG_KMEMLEAK=y
-# CONFIG_DEBUG_KMEMLEAK is not set
-# CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_RT_MUTEX_TESTER is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_LOCK_ALLOC is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_LOCK_STAT is not set
-# CONFIG_DEBUG_ATOMIC_SLEEP is not set
-# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
-# CONFIG_DEBUG_STACK_USAGE is not set
-# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_WRITECOUNT is not set
-# CONFIG_DEBUG_MEMORY_INIT is not set
-# CONFIG_DEBUG_LIST is not set
-# CONFIG_TEST_LIST_SORT is not set
-# CONFIG_DEBUG_SG is not set
-# CONFIG_DEBUG_NOTIFIERS is not set
-# CONFIG_DEBUG_CREDENTIALS is not set
-# CONFIG_BOOT_PRINTK_DELAY is not set
-
-#
-# RCU Debugging
-#
-# CONFIG_SPARSE_RCU_POINTER is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-CONFIG_RCU_CPU_STALL_TIMEOUT=21
-# CONFIG_RCU_CPU_STALL_INFO is not set
-# CONFIG_RCU_TRACE is not set
-# CONFIG_BACKTRACE_SELF_TEST is not set
-# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
-# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
-# CONFIG_DEBUG_PER_CPU_MAPS is not set
-# CONFIG_LKDTM is not set
-# CONFIG_NOTIFIER_ERROR_INJECTION is not set
-# CONFIG_FAULT_INJECTION is not set
-# CONFIG_DEBUG_PAGEALLOC is not set
-CONFIG_HAVE_FUNCTION_TRACER=y
-CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
-CONFIG_HAVE_DYNAMIC_FTRACE=y
-CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
-CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
-CONFIG_HAVE_C_RECORDMCOUNT=y
-CONFIG_TRACING_SUPPORT=y
-# CONFIG_FTRACE is not set
-# CONFIG_RBTREE_TEST is not set
-# CONFIG_INTERVAL_TREE_TEST is not set
-# CONFIG_DYNAMIC_DEBUG is not set
-# CONFIG_DMA_API_DEBUG is not set
-# CONFIG_ATOMIC64_SELFTEST is not set
-# CONFIG_SAMPLES is not set
-CONFIG_HAVE_ARCH_KGDB=y
-# CONFIG_KGDB is not set
-# CONFIG_TEST_STRING_HELPERS is not set
-# CONFIG_TEST_KSTRTOX is not set
-# CONFIG_STRICT_DEVMEM is not set
-CONFIG_ARM_UNWIND=y
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_LL is not set
-CONFIG_DEBUG_IMX_UART_PORT=1
-CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
-CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
-# CONFIG_PID_IN_CONTEXTIDR is not set
-
-#
-# Security options
-#
-CONFIG_KEYS=y
-# CONFIG_ENCRYPTED_KEYS is not set
-# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
-# CONFIG_SECURITY_DMESG_RESTRICT is not set
-# CONFIG_SECURITY is not set
-CONFIG_SECURITYFS=y
-CONFIG_DEFAULT_SECURITY_DAC=y
-CONFIG_DEFAULT_SECURITY=""
-CONFIG_CRYPTO=y
-
-#
-# Crypto core or helper
-#
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_ALGAPI2=y
-CONFIG_CRYPTO_AEAD=y
-CONFIG_CRYPTO_AEAD2=y
-CONFIG_CRYPTO_BLKCIPHER=y
-CONFIG_CRYPTO_BLKCIPHER2=y
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_HASH2=y
-CONFIG_CRYPTO_RNG=y
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_PCOMP2=y
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_MANAGER2=y
-CONFIG_CRYPTO_USER=y
-CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
-CONFIG_CRYPTO_GF128MUL=y
-CONFIG_CRYPTO_NULL=y
-# CONFIG_CRYPTO_PCRYPT is not set
-CONFIG_CRYPTO_WORKQUEUE=y
-# CONFIG_CRYPTO_CRYPTD is not set
-CONFIG_CRYPTO_AUTHENC=y
-# CONFIG_CRYPTO_TEST is not set
-
-#
-# Authenticated Encryption with Associated Data
-#
-CONFIG_CRYPTO_CCM=y
-CONFIG_CRYPTO_GCM=y
-CONFIG_CRYPTO_SEQIV=y
-
-#
-# Block modes
-#
-CONFIG_CRYPTO_CBC=y
-CONFIG_CRYPTO_CTR=y
-CONFIG_CRYPTO_CTS=y
-CONFIG_CRYPTO_ECB=y
-CONFIG_CRYPTO_LRW=y
-# CONFIG_CRYPTO_PCBC is not set
-# CONFIG_CRYPTO_XTS is not set
-
-#
-# Hash modes
-#
-# CONFIG_CRYPTO_CMAC is not set
-# CONFIG_CRYPTO_HMAC is not set
-# CONFIG_CRYPTO_XCBC is not set
-# CONFIG_CRYPTO_VMAC is not set
-
-#
-# Digest
-#
-CONFIG_CRYPTO_CRC32C=y
-# CONFIG_CRYPTO_CRC32 is not set
-CONFIG_CRYPTO_GHASH=y
-# CONFIG_CRYPTO_MD4 is not set
-# CONFIG_CRYPTO_MD5 is not set
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
-# CONFIG_CRYPTO_RMD128 is not set
-# CONFIG_CRYPTO_RMD160 is not set
-# CONFIG_CRYPTO_RMD256 is not set
-# CONFIG_CRYPTO_RMD320 is not set
-# CONFIG_CRYPTO_SHA1 is not set
-# CONFIG_CRYPTO_SHA1_ARM is not set
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_WP512 is not set
-
-#
-# Ciphers
-#
-CONFIG_CRYPTO_AES=y
-# CONFIG_CRYPTO_AES_ARM is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-CONFIG_CRYPTO_ARC4=y
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_CAMELLIA is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-# CONFIG_CRYPTO_DES is not set
-# CONFIG_CRYPTO_FCRYPT is not set
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_SALSA20 is not set
-# CONFIG_CRYPTO_SEED is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-
-#
-# Compression
-#
-CONFIG_CRYPTO_DEFLATE=y
-# CONFIG_CRYPTO_ZLIB is not set
-CONFIG_CRYPTO_LZO=y
-
-#
-# Random Number Generation
-#
-# CONFIG_CRYPTO_ANSI_CPRNG is not set
-# CONFIG_CRYPTO_USER_API_HASH is not set
-# CONFIG_CRYPTO_USER_API_SKCIPHER is not set
-CONFIG_CRYPTO_HW=y
-CONFIG_CRYPTO_DEV_FSL_CAAM=y
-CONFIG_CRYPTO_DEV_FSL_CAAM_RINGSIZE=9
-# CONFIG_CRYPTO_DEV_FSL_CAAM_INTC is not set
-CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API=y
-CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API=y
-CONFIG_CRYPTO_DEV_FSL_CAAM_RNG_API=y
-# CONFIG_CRYPTO_DEV_FSL_CAAM_RNG_TEST is not set
-CONFIG_CRYPTO_DEV_FSL_CAAM_SM=y
-CONFIG_CRYPTO_DEV_FSL_CAAM_SM_SLOTSIZE=7
-CONFIG_CRYPTO_DEV_FSL_CAAM_SM_TEST=y
-CONFIG_CRYPTO_DEV_FSL_CAAM_SECVIO=y
-# CONFIG_ASYMMETRIC_KEY_TYPE is not set
-# CONFIG_BINARY_PRINTF is not set
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_RATIONAL=y
-CONFIG_GENERIC_STRNCPY_FROM_USER=y
-CONFIG_GENERIC_STRNLEN_USER=y
-CONFIG_GENERIC_PCI_IOMAP=y
-CONFIG_GENERIC_IO=y
-CONFIG_STMP_DEVICE=y
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=y
-CONFIG_CRC_T10DIF=y
-CONFIG_CRC_ITU_T=m
-CONFIG_CRC32=y
-# CONFIG_CRC32_SELFTEST is not set
-CONFIG_CRC32_SLICEBY8=y
-# CONFIG_CRC32_SLICEBY4 is not set
-# CONFIG_CRC32_SARWATE is not set
-# CONFIG_CRC32_BIT is not set
-CONFIG_CRC7=m
-CONFIG_LIBCRC32C=m
-# CONFIG_CRC8 is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_LZO_COMPRESS=y
-CONFIG_LZO_DECOMPRESS=y
-# CONFIG_XZ_DEC is not set
-# CONFIG_XZ_DEC_BCJ is not set
-CONFIG_DECOMPRESS_GZIP=y
-CONFIG_GENERIC_ALLOCATOR=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
-CONFIG_CPU_RMAP=y
-CONFIG_DQL=y
-CONFIG_NLATTR=y
-CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
-CONFIG_AVERAGE=y
-# CONFIG_CORDIC is not set
-# CONFIG_DDR is not set
-CONFIG_OID_REGISTRY=y
-# CONFIG_VIRTUALIZATION is not set
diff --git a/recipes-kernel/linux/linux-imx_3.10.9.bb b/recipes-kernel/linux/linux-imx_3.10.17.bb
similarity index 56%
rename from recipes-kernel/linux/linux-imx_3.10.9.bb
rename to recipes-kernel/linux/linux-imx_3.10.17.bb
index 316751e..a2ced8e 100644
--- a/recipes-kernel/linux/linux-imx_3.10.9.bb
+++ b/recipes-kernel/linux/linux-imx_3.10.17.bb
@@ -1,4 +1,4 @@
-# Copyright (C) 2013 Freescale Semiconductor
+# Copyright (C) 2013, 2014 Freescale Semiconductor
 # Released under the MIT license (see COPYING.MIT for the terms)
 
 require recipes-kernel/linux/linux-imx.inc
@@ -8,9 +8,8 @@ DEPENDS += "lzop-native bc-native"
 
 DEFAULT_PREFERENCE = "-1"
 
-# 3.10.9-1.0.0 rc1 commit
-SRCREV = "dbf364b3d0123e5328ae28455c57e588635232c7"
-LOCALVERSION = "-1.0.0_alpha"
-SRCBRANCH = "imx_3.10.9_1.0.0_alpha"
+SRCBRANCH = "imx_3.10.17_1.0.0_beta"
+SRCREV = "ec1af9f898d234001d8fc7d720382de34cb6580f"
+LOCALVERSION = "-1.0.0_beta"
 
 COMPATIBLE_MACHINE = "(mx6)"
-- 
1.8.5.3



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 04/12] linux-imx (3.0.35): Allow use with 3.10.17-1.0.0 GPU
  2014-01-25 22:09 [PATCH 0/12] Freescale 3.10.17-1.0.0-beta - part2 Otavio Salvador
                   ` (2 preceding siblings ...)
  2014-01-25 22:09 ` [PATCH 03/12] linux-imx: Upgrade to 3.10.17-1.0.0_beta version Otavio Salvador
@ 2014-01-25 22:09 ` Otavio Salvador
  2014-01-25 22:09 ` [PATCH 05/12] xf86-video-imxfb-vivante: Upgrade to 3.10.17-1.0.0_beta version Otavio Salvador
                   ` (9 subsequent siblings)
  13 siblings, 0 replies; 24+ messages in thread
From: Otavio Salvador @ 2014-01-25 22:09 UTC (permalink / raw)
  To: meta-freescale Mailing List; +Cc: Otavio Salvador

From: Daiane Angolini <daiane.angolini@freescale.com>

The 3.10.17-1.0.0 GPU has been updated tp 4.6.9p13 release. This patch
updates the kernel driver to be compatible with it.

Signed-off-by: Daiane Angolini <daiane.angolini@freescale.com>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
---

 ...0-gpu-viante-4.6.9p13-kernel-part-integra.patch | 6261 ++++++++++++++++++++
 recipes-kernel/linux/linux-imx_3.0.35.bb           |    4 +-
 2 files changed, 6264 insertions(+), 1 deletion(-)
 create mode 100644 recipes-kernel/linux/linux-imx-3.0.35/ENGR00278350-gpu-viante-4.6.9p13-kernel-part-integra.patch

diff --git a/recipes-kernel/linux/linux-imx-3.0.35/ENGR00278350-gpu-viante-4.6.9p13-kernel-part-integra.patch b/recipes-kernel/linux/linux-imx-3.0.35/ENGR00278350-gpu-viante-4.6.9p13-kernel-part-integra.patch
new file mode 100644
index 0000000..1e039fd
--- /dev/null
+++ b/recipes-kernel/linux/linux-imx-3.0.35/ENGR00278350-gpu-viante-4.6.9p13-kernel-part-integra.patch
@@ -0,0 +1,6261 @@
+From 2e575255b8c53d3cfe2af068411696fe3c40debb Mon Sep 17 00:00:00 2001
+From: Loren Huang <b02279@freescale.com>
+Date: Mon, 2 Sep 2013 12:16:48 +0800
+Subject: [PATCH 01/16] ENGR00278350 gpu:viante 4.6.9p13 kernel part
+ integration
+
+Integrated 4.6.9p13 kernel part change.
+This integration is mainly for android test.
+Linux test will be focused on 3.10 kernel.
+
+Signed-off-by: Loren HUANG <b02279@freescale.com>
+Acked-by: Shawn Guo
+---
+ drivers/mxc/gpu-viv/Kbuild                         |   33 +-
+ .../GC350/hal/kernel/gc_hal_kernel_hardware_vg.c   |  177 ++--
+ .../GC350/hal/kernel/gc_hal_kernel_hardware_vg.h   |    9 +-
+ .../arch/XAQ2/hal/kernel/gc_hal_kernel_context.c   |    8 +-
+ .../arch/XAQ2/hal/kernel/gc_hal_kernel_context.h   |   13 +
+ .../arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.c  |  736 ++++++++++++-
+ .../arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.h  |    1 +
+ drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c     |  125 ++-
+ drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.h     |   24 +-
+ .../mxc/gpu-viv/hal/kernel/gc_hal_kernel_command.c |   57 ++
+ .../gpu-viv/hal/kernel/gc_hal_kernel_command_vg.c  |   45 +-
+ drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_db.c  |   12 +
+ .../mxc/gpu-viv/hal/kernel/gc_hal_kernel_event.c   |   29 +
+ .../hal/kernel/gc_hal_kernel_interrupt_vg.c        |    3 +
+ drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_mmu.c |    8 +-
+ .../hal/kernel/gc_hal_kernel_video_memory.c        |   20 +-
+ drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal.h        |   84 +-
+ drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_base.h   |  172 +++-
+ .../mxc/gpu-viv/hal/kernel/inc/gc_hal_compiler.h   |  142 ++-
+ drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_driver.h |   37 +
+ drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_engine.h |   46 +-
+ drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_enum.h   |  125 ++-
+ .../mxc/gpu-viv/hal/kernel/inc/gc_hal_options.h    |   86 +-
+ .../mxc/gpu-viv/hal/kernel/inc/gc_hal_profiler.h   | 1078 +++-----------------
+ drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_raster.h |   48 +
+ drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_types.h  |   79 +-
+ .../mxc/gpu-viv/hal/kernel/inc/gc_hal_version.h    |    2 +-
+ .../hal/os/linux/kernel/gc_hal_kernel_device.c     |   17 +-
+ .../hal/os/linux/kernel/gc_hal_kernel_device.h     |   16 +-
+ .../hal/os/linux/kernel/gc_hal_kernel_driver.c     |   99 +-
+ .../gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c |  655 ++++++++++--
+ .../hal/os/linux/kernel/gc_hal_kernel_sync.c       |  174 ++++
+ .../hal/os/linux/kernel/gc_hal_kernel_sync.h       |   71 ++
+ 33 files changed, 2974 insertions(+), 1257 deletions(-)
+ create mode 100644 drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_sync.c
+ create mode 100644 drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_sync.h
+
+diff --git a/drivers/mxc/gpu-viv/Kbuild b/drivers/mxc/gpu-viv/Kbuild
+index 93b1259..2b277d6 100644
+--- a/drivers/mxc/gpu-viv/Kbuild
++++ b/drivers/mxc/gpu-viv/Kbuild
+@@ -45,8 +45,6 @@ OBJS := $(OS_KERNEL_DIR)/gc_hal_kernel_device.o \
+         $(OS_KERNEL_DIR)/gc_hal_kernel_os.o \
+         $(OS_KERNEL_DIR)/gc_hal_kernel_debugfs.o
+ 
+-ifeq ($(USE_3D_VG), 1)
+-
+ OBJS += $(HAL_KERNEL_DIR)/gc_hal_kernel.o \
+         $(HAL_KERNEL_DIR)/gc_hal_kernel_command.o \
+         $(HAL_KERNEL_DIR)/gc_hal_kernel_db.o \
+@@ -69,19 +67,9 @@ OBJS +=\
+           $(ARCH_VG_KERNEL_DIR)/gc_hal_kernel_hardware_command_vg.o\
+           $(ARCH_VG_KERNEL_DIR)/gc_hal_kernel_hardware_vg.o
+ endif
+-else
+-
+-OBJS += $(HAL_KERNEL_DIR)/gc_hal_kernel.o \
+-        $(HAL_KERNEL_DIR)/gc_hal_kernel_command.o \
+-        $(HAL_KERNEL_DIR)/gc_hal_kernel_heap.o \
+-        $(HAL_KERNEL_DIR)/gc_hal_kernel_interrupt.o \
+-        $(HAL_KERNEL_DIR)/gc_hal_kernel_mmu.o \
+-        $(HAL_KERNEL_DIR)/gc_hal_kernel_video_memory.o \
+-        $(OS_KERNEL_DIR)/gc_hal_kernel_debug.o
+-
+-OBJS += $(ARCH_KERNEL_DIR)/gc_hal_kernel_hardware.o \
+-        $(ARCH_KERNEL_DIR)/gc_hal_kernel_hardware_command.o
+ 
++ifneq ($(CONFIG_SYNC),)
++OBJS += $(OS_KERNEL_DIR)/gc_hal_kernel_sync.o
+ endif
+ 
+ ifeq ($(KERNELRELEASE), )
+@@ -129,23 +117,16 @@ ifeq ($(CONFIG_DOVE_GPU), 1)
+ EXTRA_CFLAGS += -DCONFIG_DOVE_GPU=1
+ endif
+ 
+-ifeq ($(USE_POWER_MANAGEMENT), 1)
+-EXTRA_CFLAGS += -DgcdPOWER_MANAGEMENT=1
+-else
+-EXTRA_CFLAGS += -DgcdPOWER_MANAGEMENT=0
+-endif
+-
+ ifneq ($(USE_PLATFORM_DRIVER), 0)
+ EXTRA_CFLAGS += -DUSE_PLATFORM_DRIVER=1
+ else
+ EXTRA_CFLAGS += -DUSE_PLATFORM_DRIVER=0
+ endif
+ 
+-ifeq ($(USE_PROFILER), 1)
++
+ EXTRA_CFLAGS += -DVIVANTE_PROFILER=1
+-else
+-EXTRA_CFLAGS += -DVIVANTE_PROFILER=0
+-endif
++EXTRA_CFLAGS += -DVIVANTE_PROFILER_CONTEXT=1
++
+ 
+ ifeq ($(ANDROID), 1)
+ EXTRA_CFLAGS += -DANDROID=1
+@@ -235,6 +216,10 @@ ifeq ($(USE_BANK_ALIGNMENT), 1)
+     endif
+ endif
+ 
++ifneq ($(CONFIG_SYNC),)
++EXTRA_CFLAGS += -DgcdANDROID_NATIVE_FENCE_SYNC=1
++endif
++
+ EXTRA_CFLAGS += -I$(AQROOT)/hal/kernel/inc
+ EXTRA_CFLAGS += -I$(AQROOT)/hal/kernel
+ EXTRA_CFLAGS += -I$(AQARCH)/hal/kernel
+diff --git a/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.c b/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.c
+index 70c2cd6..a17d2fd 100644
+--- a/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.c
++++ b/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.c
+@@ -217,50 +217,17 @@ _IdentifyHardware(
+     return status;
+ }
+ 
+-static gctTHREADFUNCRESULT gctTHREADFUNCTYPE
+-_TimeIdleThread(
+-    gctTHREADFUNCPARAMETER ThreadParameter
++#if gcdPOWEROFF_TIMEOUT
++void
++_VGPowerTimerFunction(
++    gctPOINTER Data
+     )
+ {
+-    gctUINT32           currentTime = 0;
+-    gctBOOL             isAfter = gcvFALSE;
+-    gceCHIPPOWERSTATE   state;
+-
+-    /* Cast the object. */
+-    gckVGHARDWARE hardware = (gckVGHARDWARE) ThreadParameter;
+-
+-    while(gcvTRUE)
+-    {
+-        gcmkVERIFY_OK(gckOS_WaitSignal(hardware->os,
+-            hardware->idleSignal, gcvINFINITE));
+-
+-        if (hardware->killThread)
+-        {
+-            break;
+-        }
+-
+-        do
+-        {
+-            gcmkVERIFY_OK(gckOS_GetTicks(&currentTime));
+-
+-            gcmkVERIFY_OK(
+-                gckOS_TicksAfter(currentTime, hardware->powerOffTime, &isAfter));
+-
+-            if (isAfter)
+-            {
+-                gcmkVERIFY_OK(gckVGHARDWARE_SetPowerManagementState(
+-                    hardware, gcvPOWER_OFF_BROADCAST));
+-            }
+-
+-            gcmkVERIFY_OK(gckOS_Delay(hardware->os, 200));
+-
+-            gcmkVERIFY_OK(gckVGHARDWARE_QueryPowerManagementState(
+-                hardware, &state));
+-
+-        } while (state == gcvPOWER_IDLE);
+-    }
+-    return 0;
++    gckVGHARDWARE hardware = (gckVGHARDWARE)Data;
++    gcmkVERIFY_OK(
++        gckVGHARDWARE_SetPowerManagementState(hardware, gcvPOWER_OFF_TIMEOUT));
+ }
++#endif
+ 
+ /******************************************************************************\
+ ****************************** gckVGHARDWARE API code *****************************
+@@ -338,15 +305,21 @@ gckVGHARDWARE_Construct(
+         hardware->chipMinorFeatures2 = chipMinorFeatures2;
+ 
+         hardware->powerMutex            = gcvNULL;
+-        hardware->idleSignal            = gcvNULL;
+         hardware->chipPowerState        = gcvPOWER_ON;
+         hardware->chipPowerStateGlobal  = gcvPOWER_ON;
+         hardware->clockState            = gcvTRUE;
+         hardware->powerState            = gcvTRUE;
+-        hardware->powerOffTimeout       = gcdPOWEROFF_TIMEOUT;
++
+         hardware->powerOffTime          = 0;
+-        hardware->timeIdleThread        = gcvNULL;
+-        hardware->killThread            = gcvFALSE;
++#if gcdPOWEROFF_TIMEOUT
++        hardware->powerOffTimeout = gcdPOWEROFF_TIMEOUT;
++
++        gcmkVERIFY_OK(gckOS_CreateTimer(Os,
++                                        _VGPowerTimerFunction,
++                                        (gctPOINTER)hardware,
++                                        &hardware->powerOffTimer));
++#endif
++
+         /* Determine whether FE 2.0 is present. */
+         hardware->fe20 = ((((gctUINT32) (hardware->chipFeatures)) >> (0 ? 28:28) & ((gctUINT32) ((((1 ? 28:28) - (0 ? 28:28) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 28:28) - (0 ? 28:28) + 1)))))) == (0x1  & ((gctUINT32) ((((1 ? 28:28) - (0 ? 28:28) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 28:28) - (0 ? 28:28) + 1)))))));
+ 
+@@ -365,18 +338,10 @@ gckVGHARDWARE_Construct(
+         gcmkVERIFY_OK(gckVGHARDWARE_SetFastClear(hardware, -1));
+ 
+         gcmkERR_BREAK(gckOS_CreateMutex(Os, &hardware->powerMutex));
+-        gcmkERR_BREAK(gckOS_CreateSignal(Os, gcvFALSE, &hardware->idleSignal));
+ 
+         /* Enable power management by default. */
+         hardware->powerManagement = gcvTRUE;
+ 
+-        gcmkERR_BREAK(gckOS_StartThread(
+-            hardware->os,
+-            _TimeIdleThread,
+-            hardware,
+-            &hardware->timeIdleThread
+-            ));
+-
+         /* Return pointer to the gckVGHARDWARE object. */
+         *Hardware = hardware;
+ 
+@@ -386,6 +351,14 @@ gckVGHARDWARE_Construct(
+     }
+     while (gcvFALSE);
+ 
++#if gcdPOWEROFF_TIMEOUT
++        if (hardware->powerOffTimer != gcvNULL)
++        {
++            gcmkVERIFY_OK(gckOS_StopTimer(Os, hardware->powerOffTimer));
++            gcmkVERIFY_OK(gckOS_DestroyTimer(Os, hardware->powerOffTimer));
++        }
++#endif
++
+     if (hardware->pageTableDirty != gcvNULL)
+     {
+         gcmkVERIFY_OK(gckOS_AtomDestroy(Os, hardware->pageTableDirty));
+@@ -428,10 +401,6 @@ gckVGHARDWARE_Destroy(
+     /* Verify the arguments. */
+     gcmkVERIFY_OBJECT(Hardware, gcvOBJ_HARDWARE);
+ 
+-    Hardware->killThread  = gcvTRUE;
+-    gcmkVERIFY_OK(gckOS_Signal(Hardware->os, Hardware->idleSignal, gcvTRUE));
+-    gcmkVERIFY_OK(gckOS_StopThread(Hardware->os, Hardware->timeIdleThread));
+-
+     /* Mark the object as unknown. */
+     Hardware->object.type = gcvOBJ_UNKNOWN;
+ 
+@@ -441,11 +410,10 @@ gckVGHARDWARE_Destroy(
+             Hardware->os, Hardware->powerMutex));
+     }
+ 
+-    if (Hardware->idleSignal != gcvNULL)
+-    {
+-        gcmkVERIFY_OK(gckOS_DestroySignal(
+-            Hardware->os, Hardware->idleSignal));
+-    }
++#if gcdPOWEROFF_TIMEOUT
++    gcmkVERIFY_OK(gckOS_StopTimer(Hardware->os, Hardware->powerOffTimer));
++    gcmkVERIFY_OK(gckOS_DestroyTimer(Hardware->os, Hardware->powerOffTimer));
++#endif
+ 
+     if (Hardware->pageTableDirty != gcvNULL)
+     {
+@@ -1510,11 +1478,15 @@ gckVGHARDWARE_SetPowerManagementState(
+     gctBOOL commitMutex     = gcvFALSE;
+     gctBOOL mutexAcquired   = gcvFALSE;
+ 
++#if gcdPOWEROFF_TIMEOUT
++    gctBOOL timeout = gcvFALSE;
++    gctBOOL isAfter = gcvFALSE;
++    gctUINT32 currentTime;
++#endif
++
+     gctBOOL broadcast = gcvFALSE;
+     gctUINT32 process, thread;
+     gctBOOL global = gcvFALSE;
+-    gctUINT32   currentTime;
+-
+ 
+ #if gcdENABLE_PROFILING
+     gctUINT64 time, freq, mutexTime, onTime, stallTime, stopTime, delayTime,
+@@ -1661,6 +1633,16 @@ gckVGHARDWARE_SetPowerManagementState(
+         global = gcvTRUE;
+         break;
+ 
++#if gcdPOWEROFF_TIMEOUT
++    case gcvPOWER_OFF_TIMEOUT:
++        /* Convert to OFF and note we are inside broadcast. */
++        State     = gcvPOWER_OFF;
++        broadcast = gcvTRUE;
++        /* Check time out */
++        timeout = gcvTRUE;
++        break;
++#endif
++
+     default:
+         break;
+     }
+@@ -1719,6 +1701,31 @@ gckVGHARDWARE_SetPowerManagementState(
+     flag  = flags[Hardware->chipPowerState][State];
+     /*clock = clocks[State];*/
+ 
++#if gcdPOWEROFF_TIMEOUT
++    if (timeout)
++    {
++        gcmkONERROR(gckOS_GetTicks(&currentTime));
++
++        gcmkONERROR(
++            gckOS_TicksAfter(Hardware->powerOffTime, currentTime, &isAfter));
++
++        /* powerOffTime is pushed forward, give up.*/
++        if (isAfter
++        /* Expect a transition start from IDLE. */
++        ||  (Hardware->chipPowerState == gcvPOWER_ON)
++        ||  (Hardware->chipPowerState == gcvPOWER_OFF)
++        )
++        {
++            /* Release the power mutex. */
++            gcmkONERROR(gckOS_ReleaseMutex(os, Hardware->powerMutex));
++
++            /* No need to do anything. */
++            gcmkFOOTER_NO();
++            return gcvSTATUS_OK;
++        }
++    }
++#endif
++
+     if (flag == 0)
+     {
+         /* Release the power mutex. */
+@@ -1742,6 +1749,18 @@ gckVGHARDWARE_SetPowerManagementState(
+             return gcvSTATUS_OK;
+         }
+     }
++    else
++    {
++        if (flag & gcvPOWER_FLAG_ACQUIRE)
++        {
++            /* Acquire the power management semaphore. */
++            gcmkONERROR(gckOS_AcquireSemaphore(os, command->powerSemaphore));
++            acquired = gcvTRUE;
++
++            /* avoid acquiring again. */
++            flag &= ~gcvPOWER_FLAG_ACQUIRE;
++        }
++    }
+ 
+     if (flag & (gcvPOWER_FLAG_INITIALIZE | gcvPOWER_FLAG_CLOCK_ON))
+     {
+@@ -1858,14 +1877,6 @@ gckVGHARDWARE_SetPowerManagementState(
+         Hardware->chipPowerStateGlobal = State;
+     }
+ 
+-    if (State == gcvPOWER_IDLE)
+-    {
+-        gcmkVERIFY_OK(gckOS_Signal(os, Hardware->idleSignal, gcvTRUE));
+-    }
+-        /* Reset power off time */
+-    gcmkVERIFY_OK(gckOS_GetTicks(&currentTime));
+-    Hardware->powerOffTime = currentTime + Hardware->powerOffTimeout;
+-
+     if (commitMutex)
+     {
+         /* Acquire the mutex. */
+@@ -1875,6 +1886,28 @@ gckVGHARDWARE_SetPowerManagementState(
+             ));
+     }
+ 
++#if gcdPOWEROFF_TIMEOUT
++    /* Reset power off time */
++    gcmkONERROR(gckOS_GetTicks(&currentTime));
++
++    Hardware->powerOffTime = currentTime + Hardware->powerOffTimeout;
++
++    if (State == gcvPOWER_IDLE)
++    {
++        /* Start a timer to power off GPU when GPU enters IDLE or SUSPEND. */
++        gcmkVERIFY_OK(gckOS_StartTimer(os,
++                                       Hardware->powerOffTimer,
++                                       Hardware->powerOffTimeout));
++    }
++    else
++    {
++        gcmkTRACE_ZONE(gcvLEVEL_INFO, gcvZONE_HARDWARE, "Cancel powerOfftimer");
++
++        /* Cancel running timer when GPU enters ON or OFF. */
++        gcmkVERIFY_OK(gckOS_StopTimer(os, Hardware->powerOffTimer));
++    }
++#endif
++
+     /* Release the power mutex. */
+     gcmkONERROR(gckOS_ReleaseMutex(os, Hardware->powerMutex));
+ 
+diff --git a/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.h b/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.h
+index 16b81ae..73d4594 100644
+--- a/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.h
++++ b/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.h
+@@ -53,7 +53,6 @@ struct _gckVGHARDWARE
+     gctBOOL                     clockState;
+     gctBOOL                     powerState;
+     gctPOINTER                  powerMutex;
+-    gctSIGNAL                   idleSignal;
+     gctUINT32                   powerProcess;
+     gctUINT32                   powerThread;
+     gceCHIPPOWERSTATE           chipPowerState;
+@@ -61,11 +60,13 @@ struct _gckVGHARDWARE
+     gctISRMANAGERFUNC           startIsr;
+     gctISRMANAGERFUNC           stopIsr;
+     gctPOINTER                  isrContext;
++    gctPOINTER                  pageTableDirty;
++
++#if gcdPOWEROFF_TIMEOUT
+     gctUINT32                   powerOffTime;
+     gctUINT32                   powerOffTimeout;
+-    gctTHREAD                   timeIdleThread;
+-    gctBOOL                     killThread;
+-    gctPOINTER                  pageTableDirty;
++    gctPOINTER                  powerOffTimer;
++#endif
+ 
+     gctBOOL                     powerManagement;
+ };
+diff --git a/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_context.c b/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_context.c
+index 24003e7..42e6915 100644
+--- a/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_context.c
++++ b/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_context.c
+@@ -181,7 +181,8 @@ _FlushPipe(
+                 ?   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 3:3) - (0 ? 3:3) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 3:3) - (0 ? 3:3) + 1))))))) << (0 ? 3:3))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 3:3) - (0 ? 3:3) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 3:3) - (0 ? 3:3) + 1))))))) << (0 ? 3:3)))
+                 :   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 0:0) - (0 ? 0:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 0:0) - (0 ? 0:0) + 1))))))) << (0 ? 0:0))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 0:0) - (0 ? 0:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 0:0) - (0 ? 0:0) + 1))))))) << (0 ? 0:0)))
+                   | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 1:1) - (0 ? 1:1) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 1:1) - (0 ? 1:1) + 1))))))) << (0 ? 1:1))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 1:1) - (0 ? 1:1) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 1:1) - (0 ? 1:1) + 1))))))) << (0 ? 1:1)))
+-                  | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1))))))) << (0 ? 2:2))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1))))))) << (0 ? 2:2)));
++                  | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1))))))) << (0 ? 2:2))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1))))))) << (0 ? 2:2)))
++                  | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 4:4) - (0 ? 4:4) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 4:4) - (0 ? 4:4) + 1))))))) << (0 ? 4:4))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 4:4) - (0 ? 4:4) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 4:4) - (0 ? 4:4) + 1))))))) << (0 ? 4:4)));
+ 
+         /* Semaphore from FE to PE. */
+         *buffer++
+@@ -620,7 +621,10 @@ _InitializeContextBuffer(
+         index += _State(Context, index, 0x10180 >> 2, 0x00000000, 32, gcvFALSE, gcvFALSE);
+         index += _State(Context, index, 0x10200 >> 2, 0x00000000, 32, gcvFALSE, gcvFALSE);
+         index += _State(Context, index, 0x10280 >> 2, 0x00000000, 32, gcvFALSE, gcvFALSE);
+-        index += _State(Context, index, 0x02C00 >> 2, 0x00000000, 256, gcvFALSE, gcvFALSE);
++        for (i = 0; i < 256 / 16; i += 1)
++        {
++            index += _State(Context, index, (0x02C00 >> 2) + i * 16, 0x00000000, 14, gcvFALSE, gcvFALSE);
++        }
+         index += _State(Context, index, 0x10300 >> 2, 0x00000000, 32, gcvFALSE, gcvFALSE);
+         index += _State(Context, index, 0x10380 >> 2, 0x00321000, 32, gcvFALSE, gcvFALSE);
+         index += _State(Context, index, 0x10400 >> 2, 0x00000000, 32, gcvFALSE, gcvFALSE);
+diff --git a/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_context.h b/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_context.h
+index 7554045..5d2c7c7 100644
+--- a/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_context.h
++++ b/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_context.h
+@@ -134,6 +134,19 @@ struct _gckCONTEXT
+ #if gcdSECURE_USER
+     gctBOOL_PTR                 hint;
+ #endif
++
++#if VIVANTE_PROFILER_CONTEXT
++    gcsPROFILER_COUNTERS        latestProfiler;
++    gcsPROFILER_COUNTERS        histroyProfiler;
++    gctUINT32                   prevVSInstCount;
++    gctUINT32                   prevVSBranchInstCount;
++    gctUINT32                   prevVSTexInstCount;
++    gctUINT32                   prevVSVertexCount;
++    gctUINT32                   prevPSInstCount;
++    gctUINT32                   prevPSBranchInstCount;
++    gctUINT32                   prevPSTexInstCount;
++    gctUINT32                   prevPSPixelCount;
++#endif
+ };
+ 
+ #ifdef __cplusplus
+diff --git a/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.c b/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.c
+index 00f3839..e02dc23 100644
+--- a/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.c
++++ b/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.c
+@@ -21,6 +21,9 @@
+ 
+ #include "gc_hal.h"
+ #include "gc_hal_kernel.h"
++#if VIVANTE_PROFILER_CONTEXT
++#include "gc_hal_kernel_context.h"
++#endif
+ 
+ #define _GC_OBJ_ZONE    gcvZONE_HARDWARE
+ 
+@@ -69,6 +72,7 @@ _IdentifyHardware(
+     gctUINT32 numConstants = 0;
+     gctUINT32 bufferSize = 0;
+     gctUINT32 varyingsCount = 0;
++    gctBOOL useHZ;
+ 
+     gcmkHEADER_ARG("Os=0x%x", Os);
+ 
+@@ -209,6 +213,15 @@ _IdentifyHardware(
+                                      0x00088,
+                                      &Identity->chipMinorFeatures3));
+ 
++            /*The BG2 chip has no compression supertiled, and the bit of GCMinorFeature3BugFixes15 is n/a*/
++            if(Identity->chipModel == gcv1000 && Identity->chipRevision == 0x5036)
++            {
++                Identity->chipMinorFeatures3
++                    = ((((gctUINT32) (Identity->chipMinorFeatures3)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 5:5) - (0 ? 5:5) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 5:5) - (0 ? 5:5) + 1))))))) << (0 ? 5:5))) | (((gctUINT32) (0x0 & ((gctUINT32) ((((1 ? 5:5) - (0 ? 5:5) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 5:5) - (0 ? 5:5) + 1))))))) << (0 ? 5:5)));
++                Identity->chipMinorFeatures3
++                    = ((((gctUINT32) (Identity->chipMinorFeatures3)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 27:27) - (0 ? 27:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 27:27) - (0 ? 27:27) + 1))))))) << (0 ? 27:27))) | (((gctUINT32) (0x0 & ((gctUINT32) ((((1 ? 27:27) - (0 ? 27:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 27:27) - (0 ? 27:27) + 1))))))) << (0 ? 27:27)));
++            }
++
+             /* Read chip minor featuress register #4. */
+             gcmkONERROR(
+                 gckOS_ReadRegisterEx(Os, Core,
+@@ -244,14 +257,31 @@ _IdentifyHardware(
+     if (((Identity->chipModel == gcv1000) && ((Identity->chipRevision == 0x5035)
+                                            || (Identity->chipRevision == 0x5036)
+                                            || (Identity->chipRevision == 0x5037)))
+-	 || ((Identity->chipModel == gcv800) && (Identity->chipRevision == 0x4612)))
++	 || ((Identity->chipModel == gcv800) && (Identity->chipRevision == 0x4612))
++     || ((Identity->chipModel == gcv860) && (Identity->chipRevision == 0x4647)))
+     {
+         Identity->superTileMode = 1;
+     }
+ 
++    if (Identity->chipModel == gcv4000 && Identity->chipRevision == 0x5245)
++    {
++        useHZ = ((((gctUINT32) (Identity->chipMinorFeatures3)) >> (0 ? 26:26) & ((gctUINT32) ((((1 ? 26:26) - (0 ? 26:26) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 26:26) - (0 ? 26:26) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 26:26) - (0 ? 26:26) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 26:26) - (0 ? 26:26) + 1)))))))
++             || ((((gctUINT32) (Identity->chipMinorFeatures3)) >> (0 ? 8:8) & ((gctUINT32) ((((1 ? 8:8) - (0 ? 8:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 8:8) - (0 ? 8:8) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 8:8) - (0 ? 8:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 8:8) - (0 ? 8:8) + 1)))))));
++    }
++    else
++    {
++        useHZ = gcvFALSE;
++    }
+ 
+-	/* Disable HZ when EZ is present for older chips. */
+-	if (!((((gctUINT32) (Identity->chipFeatures)) >> (0 ? 16:16) & ((gctUINT32) ((((1 ? 16:16) - (0 ? 16:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 16:16) - (0 ? 16:16) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 16:16) - (0 ? 16:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 16:16) - (0 ? 16:16) + 1))))))))
++    if (useHZ)
++    {
++        /* Disable EZ. */
++        Identity->chipFeatures
++            = ((((gctUINT32) (Identity->chipFeatures)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 16:16) - (0 ? 16:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 16:16) - (0 ? 16:16) + 1))))))) << (0 ? 16:16))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 16:16) - (0 ? 16:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 16:16) - (0 ? 16:16) + 1))))))) << (0 ? 16:16)));
++    }
++
++    /* Disable HZ when EZ is present for older chips. */
++    else if (!((((gctUINT32) (Identity->chipFeatures)) >> (0 ? 16:16) & ((gctUINT32) ((((1 ? 16:16) - (0 ? 16:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 16:16) - (0 ? 16:16) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 16:16) - (0 ? 16:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 16:16) - (0 ? 16:16) + 1))))))))
+     {
+         /* Disable HIERARCHICAL_Z. */
+         Identity->chipMinorFeatures
+@@ -470,6 +500,15 @@ _IdentifyHardware(
+          Identity->varyingsCount = 8;
+      }
+ 
++     /* For some cores, it consumes two varying for position, so the max varying vectors should minus one. */
++     if ((Identity->chipModel == gcv4000 && Identity->chipRevision == 0x5222) ||
++         (Identity->chipModel == gcv4000 && Identity->chipRevision == 0x5208) ||
++         ((Identity->chipModel == gcv2100 || Identity->chipModel == gcv2000) && Identity->chipRevision == 0x5108) ||
++         (Identity->chipModel == gcv880 && (Identity->chipRevision == 0x5107 || Identity->chipRevision == 0x5106)))
++     {
++         Identity->varyingsCount -= 1;
++     }
++
+     /* Success. */
+     gcmkFOOTER();
+     return gcvSTATUS_OK;
+@@ -535,9 +574,9 @@ _DumpDebugRegisters(
+     IN gcsiDEBUG_REGISTERS_PTR Descriptor
+     )
+ {
+-    gceSTATUS status;
++    gceSTATUS status = gcvSTATUS_OK;
+     gctUINT32 select;
+-    gctUINT32 data;
++    gctUINT32 data = 0;
+     gctUINT i;
+ 
+     gcmkHEADER_ARG("Os=0x%X Descriptor=0x%X", Os, Descriptor);
+@@ -643,6 +682,42 @@ OnError:
+     return status;
+ }
+ 
++gceSTATUS
++_FlushCache(
++    gckHARDWARE Hardware,
++    gckCOMMAND Command
++    )
++{
++    gceSTATUS status;
++    gctSIZE_T bytes, requested;
++    gctPOINTER buffer;
++
++    /* Get the size of the flush command. */
++    gcmkONERROR(gckHARDWARE_Flush(Hardware,
++                                  gcvFLUSH_ALL,
++                                  gcvNULL,
++                                  &requested));
++
++    /* Reserve space in the command queue. */
++    gcmkONERROR(gckCOMMAND_Reserve(Command,
++                                   requested,
++                                   &buffer,
++                                   &bytes));
++
++    /* Append a flush. */
++    gcmkONERROR(gckHARDWARE_Flush(
++        Hardware, gcvFLUSH_ALL, buffer, &bytes
++        ));
++
++    /* Execute the command queue. */
++    gcmkONERROR(gckCOMMAND_Execute(Command, requested));
++
++    return gcvSTATUS_OK;
++
++OnError:
++    return status;
++}
++
+ /******************************************************************************\
+ ****************************** gckHARDWARE API code *****************************
+ \******************************************************************************/
+@@ -809,6 +884,9 @@ gckHARDWARE_Construct(
+     /* Enable power management by default. */
+     hardware->powerManagement = gcvTRUE;
+ 
++    /* Disable profiler by default */
++    hardware->gpuProfiler = gcvFALSE;
++
+     /* Return pointer to the gckHARDWARE object. */
+     *Hardware = hardware;
+ 
+@@ -1113,6 +1191,31 @@ gckHARDWARE_InitializeHardware(
+                                   ((((gctUINT32) (0x01590880)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:23) - (0 ? 23:23) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:23) - (0 ? 23:23) + 1))))))) << (0 ? 23:23))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 23:23) - (0 ? 23:23) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:23) - (0 ? 23:23) + 1))))))) << (0 ? 23:23)))));
+     }
+ 
++    if ((gckHARDWARE_IsFeatureAvailable(Hardware, gcvFEATURE_HALTI2) == gcvFALSE)
++     || (gckHARDWARE_IsFeatureAvailable(Hardware, gcvFEATURE_HALTI2) && (Hardware->identity.chipRevision < 0x5422))
++    )
++    {
++        gctUINT32 data;
++
++        gcmkONERROR(
++            gckOS_ReadRegisterEx(Hardware->os,
++                                 Hardware->core,
++                                 Hardware->powerBaseAddress
++                                 + 0x00104,
++                                 &data));
++
++
++        data = ((((gctUINT32) (data)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:15) - (0 ? 15:15) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:15) - (0 ? 15:15) + 1))))))) << (0 ? 15:15))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 15:15) - (0 ? 15:15) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:15) - (0 ? 15:15) + 1))))))) << (0 ? 15:15)));
++
++
++        gcmkONERROR(
++            gckOS_WriteRegisterEx(Hardware->os,
++                                  Hardware->core,
++                                  Hardware->powerBaseAddress
++                                  + 0x00104,
++                                  data));
++    }
++
+     /* Special workaround for this core
+     ** Make sure FE and TX are on different buses */
+     if ((Hardware->identity.chipModel == gcv2000)
+@@ -1152,7 +1255,9 @@ gckHARDWARE_InitializeHardware(
+     }
+ 
+     if (Hardware->identity.chipModel >= gcv400
+-    &&  Hardware->identity.chipModel != gcv420)
++    &&  Hardware->identity.chipModel != gcv420
++    &&  (((((gctUINT32) (Hardware->identity.chipMinorFeatures3)) >> (0 ? 15:15) & ((gctUINT32) ((((1 ? 15:15) - (0 ? 15:15) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:15) - (0 ? 15:15) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 15:15) - (0 ? 15:15) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:15) - (0 ? 15:15) + 1))))))) != gcvTRUE)
++    )
+     {
+ 		gctUINT32 data;
+ 
+@@ -2883,35 +2988,44 @@ gckHARDWARE_QueryShaderCaps(
+     OUT gctUINT * Varyings
+     )
+ {
++    gctUINT32 vsConstMax;
++    gctUINT32 psConstMax;
++
+     gcmkHEADER_ARG("Hardware=0x%x VertexUniforms=0x%x "
+                    "FragmentUniforms=0x%x Varyings=0x%x",
+                    Hardware, VertexUniforms,
+                    FragmentUniforms, Varyings);
+ 
++    if ((Hardware->identity.chipModel == gcv2000)
++     && (Hardware->identity.chipRevision == 0x5118))
++    {
++        vsConstMax   = 256;
++        psConstMax   = 64;
++    }
++    else if (Hardware->identity.numConstants > 256)
++    {
++        vsConstMax   = 256;
++        psConstMax   = 256;
++    }
++    else if (Hardware->identity.numConstants == 256)
++    {
++        vsConstMax   = 256;
++        psConstMax   = 256;
++    }
++    else
++    {
++        vsConstMax   = 168;
++        psConstMax   = 64;
++    }
++
+     if (VertexUniforms != gcvNULL)
+     {
+-		/* Return the vs shader const count. */
+-        if (Hardware->identity.chipModel < gcv4000)
+-        {
+-            *VertexUniforms = 168;
+-        }
+-        else
+-        {
+-            *VertexUniforms = 256;
+-        }
++        *VertexUniforms = vsConstMax;
+     }
+ 
+     if (FragmentUniforms != gcvNULL)
+     {
+-		/* Return the ps shader const count. */
+-        if (Hardware->identity.chipModel < gcv4000)
+-        {
+-            *FragmentUniforms = 64;
+-        }
+-        else
+-        {
+-            *FragmentUniforms = 256;
+-        }
++        *FragmentUniforms = psConstMax;
+     }
+ 
+     if (Varyings != gcvNULL)
+@@ -3229,12 +3343,28 @@ gckHARDWARE_SetMMUv2(
+     gctBOOL commitEntered = gcvFALSE;
+     gctPOINTER pointer = gcvNULL;
+     gctBOOL acquired = gcvFALSE;
++    gctBOOL config2D;
++    gctSIZE_T configSize;
+ 
+     gcmkHEADER_ARG("Hardware=0x%x Enable=%d", Hardware, Enable);
+ 
+     /* Verify the arguments. */
+     gcmkVERIFY_OBJECT(Hardware, gcvOBJ_HARDWARE);
+ 
++    config2D =  gckHARDWARE_IsFeatureAvailable(Hardware, gcvFEATURE_PIPE_3D)
++             && gckHARDWARE_IsFeatureAvailable(Hardware, gcvFEATURE_PIPE_2D);
++
++    configSize = 4 * 4;
++
++    if (config2D)
++    {
++        configSize +=
++            /* Pipe Select. */
++            4 * 4
++            /* Configure MMU States. */
++          + 4 * 4;
++    }
++
+     /* Convert logical address into physical address. */
+     gcmkONERROR(
+         gckOS_GetPhysicalAddress(Hardware->os, MtlbAddress, &config));
+@@ -3281,7 +3411,7 @@ gckHARDWARE_SetMMUv2(
+     commitEntered = gcvTRUE;
+ 
+     gcmkONERROR(gckCOMMAND_Reserve(
+-        command, 16, &pointer, &bufferSize
++        command, configSize, &pointer, &bufferSize
+         ));
+ 
+     buffer = pointer;
+@@ -3300,10 +3430,43 @@ gckHARDWARE_SetMMUv2(
+ 
+     buffer[3] = address;
+ 
++    if (config2D)
++    {
++        /* LoadState(AQPipeSelect, 1), pipe. */
++        buffer[4]
++            = ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27))) | (((gctUINT32) (0x01 & ((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27)))
++            | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0))) | (((gctUINT32) ((gctUINT32) (0x0E00) & ((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0)))
++            | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16)));
++
++        buffer[5] = 0x1;
++
++        buffer[6]
++            = ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27))) | (((gctUINT32) (0x01 & ((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27)))
++            | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0))) | (((gctUINT32) ((gctUINT32) (0x0061) & ((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0)))
++            | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16)));
++
++        buffer[7] = config;
++
++        buffer[8]
++            = ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27))) | (((gctUINT32) (0x01 & ((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27)))
++            | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0))) | (((gctUINT32) ((gctUINT32) (0x0060) & ((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0)))
++            | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16)));
++
++        buffer[9] = address;
++
++        /* LoadState(AQPipeSelect, 1), pipe. */
++        buffer[10]
++            = ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27))) | (((gctUINT32) (0x01 & ((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27)))
++            | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0))) | (((gctUINT32) ((gctUINT32) (0x0E00) & ((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0)))
++            | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16)));
++
++        buffer[11] = 0x0;
++    }
++
+     gcmkTRACE_ZONE(gcvLEVEL_INFO, gcvZONE_HARDWARE,
+         "Setup MMU: config=%08x, Safe Address=%08x\n.", config, address);
+ 
+-    gcmkONERROR(gckCOMMAND_Execute(command, 16));
++    gcmkONERROR(gckCOMMAND_Execute(command, configSize));
+ 
+     if (FromPower == gcvFALSE)
+     {
+@@ -3501,6 +3664,8 @@ gckHARDWARE_Flush(
+     gctUINT32 flush = 0;
+     gctUINT32_PTR logical = (gctUINT32_PTR) Logical;
+     gceSTATUS status;
++    gctBOOL fcFlushStall;
++    gctUINT32 reserveBytes = 8;
+ 
+     gcmkHEADER_ARG("Hardware=0x%x Flush=0x%x Logical=0x%x *Bytes=%lu",
+                    Hardware, Flush, Logical, gcmOPT_VALUE(Bytes));
+@@ -3511,6 +3676,16 @@ gckHARDWARE_Flush(
+     /* Get current pipe. */
+     pipe = Hardware->kernel->command->pipeSelect;
+ 
++    fcFlushStall
++        = ((((gctUINT32) (Hardware->identity.chipMinorFeatures1)) >> (0 ? 31:31) & ((gctUINT32) ((((1 ? 31:31) - (0 ? 31:31) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:31) - (0 ? 31:31) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 31:31) - (0 ? 31:31) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:31) - (0 ? 31:31) + 1)))))))
++        && (Flush == gcvFLUSH_ALL)
++        ;
++
++    if (fcFlushStall)
++    {
++        reserveBytes += 8;
++    }
++
+     /* Flush 3D color cache. */
+     if ((Flush & gcvFLUSH_COLOR) && (pipe == 0x0))
+     {
+@@ -3527,6 +3702,7 @@ gckHARDWARE_Flush(
+     if ((Flush & gcvFLUSH_TEXTURE) && (pipe == 0x0))
+     {
+         flush |= ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1))))))) << (0 ? 2:2))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1))))))) << (0 ? 2:2)));
++        flush |= ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 4:4) - (0 ? 4:4) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 4:4) - (0 ? 4:4) + 1))))))) << (0 ? 4:4))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 4:4) - (0 ? 4:4) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 4:4) - (0 ? 4:4) + 1))))))) << (0 ? 4:4)));
+     }
+ 
+     /* Flush 2D cache. */
+@@ -3550,7 +3726,7 @@ gckHARDWARE_Flush(
+         /* Copy to command queue. */
+         if (Logical != gcvNULL)
+         {
+-            if (*Bytes < 8)
++            if (*Bytes < reserveBytes)
+             {
+                 /* Command queue too small. */
+                 gcmkONERROR(gcvSTATUS_BUFFER_TOO_SMALL);
+@@ -3565,12 +3741,26 @@ gckHARDWARE_Flush(
+ 
+             gcmkTRACE_ZONE(gcvLEVEL_INFO, gcvZONE_HARDWARE,
+                            "0x%x: FLUSH 0x%x", logical, flush);
++
++            if (fcFlushStall)
++            {
++                logical[2] = ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27))) | (((gctUINT32) (0x01 & ((gctUINT32) ((((1 ? 31:27) - (0 ? 31:27) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:27) - (0 ? 31:27) + 1))))))) << (0 ? 31:27)))
++                           | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0))) | (((gctUINT32) ((gctUINT32) (0x0594) & ((gctUINT32) ((((1 ? 15:0) - (0 ? 15:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:0) - (0 ? 15:0) + 1))))))) << (0 ? 15:0)))
++                           | ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 25:16) - (0 ? 25:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 25:16) - (0 ? 25:16) + 1))))))) << (0 ? 25:16)));
++
++                logical[3] = ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 0:0) - (0 ? 0:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 0:0) - (0 ? 0:0) + 1))))))) << (0 ? 0:0))) | (((gctUINT32) (0x1 & ((gctUINT32) ((((1 ? 0:0) - (0 ? 0:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 0:0) - (0 ? 0:0) + 1))))))) << (0 ? 0:0)));
++
++
++                gcmkTRACE_ZONE(gcvLEVEL_INFO, gcvZONE_HARDWARE,
++                               "0x%x: FLUSH 0x%x", logical + 3, logical[3]);
++            }
++
+         }
+ 
+         if (Bytes != gcvNULL)
+         {
+-            /* 8 bytes required. */
+-            *Bytes = 8;
++            /* bytes required. */
++            *Bytes = reserveBytes;
+         }
+     }
+ 
+@@ -4285,6 +4475,48 @@ gckHARDWARE_SetPowerManagementState(
+         }
+     }
+ 
++    /* Flush Cache before Power Off. */
++    if (flag & gcvPOWER_FLAG_POWER_OFF)
++    {
++        if (Hardware->clockState == gcvFALSE)
++        {
++            /* Turn off the GPU power. */
++            gcmkONERROR(
++                    gckOS_SetGPUPower(os,
++                        Hardware->core,
++                        gcvTRUE,
++                        gcvTRUE));
++
++            Hardware->clockState = gcvTRUE;
++
++            if (gckHARDWARE_IsFeatureAvailable(Hardware, gcvFEATURE_DYNAMIC_FREQUENCY_SCALING) != gcvTRUE)
++            {
++                /* Write the clock control register. */
++                gcmkONERROR(gckOS_WriteRegisterEx(os,
++                                                  Hardware->core,
++                                                  0x00000,
++                                                  clocks[0]));
++
++                /* Done loading the frequency scaler. */
++                gcmkONERROR(gckOS_WriteRegisterEx(os,
++                                                  Hardware->core,
++                                                  0x00000,
++                                                  ((((gctUINT32) (clocks[0])) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 9:9) - (0 ? 9:9) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 9:9) - (0 ? 9:9) + 1))))))) << (0 ? 9:9))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 9:9) - (0 ? 9:9) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 9:9) - (0 ? 9:9) + 1))))))) << (0 ? 9:9)))));
++            }
++        }
++
++        gcmkONERROR(gckCOMMAND_Start(command));
++
++        gcmkONERROR(_FlushCache(Hardware, command));
++
++        gckOS_Delay(gcvNULL, 1);
++
++        /* Stop the command parser. */
++        gcmkONERROR(gckCOMMAND_Stop(command, gcvFALSE));
++
++        flag |= gcvPOWER_FLAG_CLOCK_OFF;
++    }
++
+     /* Get time until stopped. */
+     gcmkPROFILE_QUERY(time, stopTime);
+ 
+@@ -4582,6 +4814,40 @@ gckHARDWARE_SetPowerManagement(
+     return gcvSTATUS_OK;
+ }
+ 
++/*******************************************************************************
++**
++**  gckHARDWARE_SetGpuProfiler
++**
++**  Configure GPU profiler function.
++**  Only used in driver initialization stage.
++**
++**  INPUT:
++**
++**      gckHARDWARE Harwdare
++**          Pointer to an gckHARDWARE object.
++**
++**      gctBOOL GpuProfiler
++**          GOU Profiler State.
++**
++*/
++gceSTATUS
++gckHARDWARE_SetGpuProfiler(
++    IN gckHARDWARE Hardware,
++    IN gctBOOL GpuProfiler
++    )
++{
++    gcmkHEADER_ARG("Hardware=0x%x", Hardware);
++
++    /* Verify the arguments. */
++    gcmkVERIFY_OBJECT(Hardware, gcvOBJ_HARDWARE);
++
++    Hardware->gpuProfiler = GpuProfiler;
++
++    /* Success. */
++    gcmkFOOTER_NO();
++    return gcvSTATUS_OK;
++}
++
+ #if gcdENABLE_FSCALE_VAL_ADJUST
+ gceSTATUS
+ gckHARDWARE_SetFscaleValue(
+@@ -5141,6 +5407,402 @@ OnError:
+ }
+ #endif
+ 
++#if VIVANTE_PROFILER_CONTEXT
++#define gcmkUPDATE_PROFILE_DATA(data) \
++    profilerHistroy->data += profiler->data
++
++gceSTATUS
++gckHARDWARE_QueryContextProfile(
++    IN gckHARDWARE Hardware,
++    IN gctBOOL   Reset,
++    IN gckCONTEXT Context,
++    OUT gcsPROFILER_COUNTERS * Counters
++    )
++{
++    gceSTATUS status;
++    gckCOMMAND command = Hardware->kernel->command;
++    gcsPROFILER_COUNTERS * profiler = Counters;
++
++    gcmkHEADER_ARG("Hardware=0x%x Counters=0x%x", Hardware, Counters);
++
++    /* Verify the arguments. */
++    gcmkVERIFY_OBJECT(Hardware, gcvOBJ_HARDWARE);
++
++    /* Acquire the context sequnence mutex. */
++    gcmkONERROR(gckOS_AcquireMutex(
++        command->os, command->mutexContextSeq, gcvINFINITE
++        ));
++
++    /* Read the counters. */
++    gcmkVERIFY_OK(gckOS_MemCopy(
++        profiler, &Context->histroyProfiler, gcmSIZEOF(gcsPROFILER_COUNTERS)
++        ));
++
++    if (Reset)
++    {
++        /* Reset counters. */
++        gcmkVERIFY_OK(gckOS_ZeroMemory(
++            &Context->histroyProfiler, gcmSIZEOF(gcsPROFILER_COUNTERS)
++            ));
++    }
++
++    gcmkVERIFY_OK(gckOS_ReleaseMutex(
++        command->os, command->mutexContextSeq
++        ));
++
++    /* Success. */
++    gcmkFOOTER_NO();
++    return gcvSTATUS_OK;
++
++OnError:
++    /* Return the status. */
++    gcmkFOOTER();
++    return status;
++}
++
++
++gceSTATUS
++gckHARDWARE_UpdateContextProfile(
++    IN gckHARDWARE Hardware,
++    IN gckCONTEXT Context
++    )
++{
++    gceSTATUS status;
++    gcsPROFILER_COUNTERS * profiler = &Context->latestProfiler;
++    gcsPROFILER_COUNTERS * profilerHistroy = &Context->histroyProfiler;
++    gctUINT i, clock;
++    gctUINT32 colorKilled, colorDrawn, depthKilled, depthDrawn;
++    gctUINT32 totalRead, totalWrite;
++    gceCHIPMODEL chipModel;
++    gctUINT32 chipRevision;
++    gctUINT32 temp;
++    gctBOOL needResetShader = gcvFALSE;
++
++    gcmkHEADER_ARG("Hardware=0x%x Context=0x%x", Hardware, Context);
++
++    /* Verify the arguments. */
++    gcmkVERIFY_OBJECT(Hardware, gcvOBJ_HARDWARE);
++    gcmkVERIFY_OBJECT(Context, gcvOBJ_CONTEXT);
++
++    chipModel = Hardware->identity.chipModel;
++    chipRevision = Hardware->identity.chipRevision;
++    if (chipModel == gcv2000 || (chipModel == gcv2100 && chipRevision == 0x5118))
++    {
++        needResetShader = gcvTRUE;
++    }
++
++    /* Read the counters. */
++    gcmkONERROR(
++        gckOS_ReadRegisterEx(Hardware->os,
++                             Hardware->core,
++                             0x00438,
++                             &profiler->gpuCyclesCounter));
++    gcmkUPDATE_PROFILE_DATA(gpuCyclesCounter);
++
++    gcmkONERROR(
++        gckOS_ReadRegisterEx(Hardware->os,
++                             Hardware->core,
++                             0x00078,
++                             &profiler->gpuTotalCyclesCounter));
++    gcmkUPDATE_PROFILE_DATA(gpuTotalCyclesCounter);
++
++    gcmkONERROR(
++        gckOS_ReadRegisterEx(Hardware->os,
++                             Hardware->core,
++                             0x0007C,
++                             &profiler->gpuIdleCyclesCounter));
++    gcmkUPDATE_PROFILE_DATA(gpuIdleCyclesCounter);
++
++    /* Read clock control register. */
++    gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os,
++                                     Hardware->core,
++                                     0x00000,
++                                     &clock));
++
++    profiler->gpuTotalRead64BytesPerFrame = 0;
++    profiler->gpuTotalWrite64BytesPerFrame = 0;
++    profiler->pe_pixel_count_killed_by_color_pipe = 0;
++    profiler->pe_pixel_count_killed_by_depth_pipe = 0;
++    profiler->pe_pixel_count_drawn_by_color_pipe = 0;
++    profiler->pe_pixel_count_drawn_by_depth_pipe = 0;
++
++    /* Walk through all avaiable pixel pipes. */
++    for (i = 0; i < Hardware->identity.pixelPipes; ++i)
++    {
++        /* Select proper pipe. */
++        gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os,
++                                           Hardware->core,
++                                           0x00000,
++                                           ((((gctUINT32) (clock)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:20) - (0 ? 23:20) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:20) - (0 ? 23:20) + 1))))))) << (0 ? 23:20))) | (((gctUINT32) ((gctUINT32) (i) & ((gctUINT32) ((((1 ? 23:20) - (0 ? 23:20) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:20) - (0 ? 23:20) + 1))))))) << (0 ? 23:20)))));
++
++        /* BW */
++        gcmkONERROR(
++        gckOS_ReadRegisterEx(Hardware->os,
++                             Hardware->core,
++                             0x00040,
++                             &totalRead));
++        gcmkONERROR(
++        gckOS_ReadRegisterEx(Hardware->os,
++                             Hardware->core,
++                             0x00044,
++                             &totalWrite));
++
++        profiler->gpuTotalRead64BytesPerFrame += totalRead;
++        profiler->gpuTotalWrite64BytesPerFrame += totalWrite;
++        gcmkUPDATE_PROFILE_DATA(gpuTotalRead64BytesPerFrame);
++        gcmkUPDATE_PROFILE_DATA(gpuTotalWrite64BytesPerFrame);
++
++        /* PE */
++        gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16)))));gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00454, &colorKilled));
++        gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16)))));gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00454, &depthKilled));
++        gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (2) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16)))));gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00454, &colorDrawn));
++        gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470, ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (3) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16)))));gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00454, &depthDrawn));
++
++        profiler->pe_pixel_count_killed_by_color_pipe += colorKilled;
++        profiler->pe_pixel_count_killed_by_depth_pipe += depthKilled;
++        profiler->pe_pixel_count_drawn_by_color_pipe += colorDrawn;
++        profiler->pe_pixel_count_drawn_by_depth_pipe += depthDrawn;
++        gcmkUPDATE_PROFILE_DATA(pe_pixel_count_killed_by_color_pipe);
++        gcmkUPDATE_PROFILE_DATA(pe_pixel_count_killed_by_depth_pipe);
++        gcmkUPDATE_PROFILE_DATA(pe_pixel_count_drawn_by_color_pipe);
++        gcmkUPDATE_PROFILE_DATA(pe_pixel_count_drawn_by_depth_pipe);
++    }
++
++    /* Reset clock control register. */
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os,
++                                      Hardware->core,
++                                      0x00000,
++                                      clock));
++
++
++
++
++    /* Reset counters. */
++    gcmkONERROR(
++        gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x0003C, 1));
++    gcmkONERROR(
++        gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x0003C, 0));
++    gcmkONERROR(
++        gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00438, 0));
++    gcmkONERROR(
++        gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00078, 0));
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (15) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) ));
++gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16)))
++));
++
++    /* SH */
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (7) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0045C, &profiler->ps_inst_counter));
++    if (needResetShader)
++    {
++        temp = profiler->ps_inst_counter;
++        profiler->ps_inst_counter -= Context->prevPSInstCount;
++        Context->prevPSInstCount = temp;
++    }
++    gcmkUPDATE_PROFILE_DATA(ps_inst_counter);
++
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (8) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0045C, &profiler->rendered_pixel_counter));
++    if (needResetShader)
++    {
++        temp = profiler->rendered_pixel_counter;
++        profiler->rendered_pixel_counter -= Context->prevPSPixelCount;
++        Context->prevPSPixelCount = temp;
++    }
++    gcmkUPDATE_PROFILE_DATA(rendered_pixel_counter);
++
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (9) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0045C, &profiler->vs_inst_counter));
++    if (needResetShader)
++    {
++        temp = profiler->vs_inst_counter;
++        profiler->vs_inst_counter -= Context->prevVSInstCount;
++        Context->prevVSInstCount = temp;
++    }
++    gcmkUPDATE_PROFILE_DATA(vs_inst_counter);
++
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (10) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0045C, &profiler->rendered_vertice_counter));
++    if (needResetShader)
++    {
++        temp = profiler->rendered_vertice_counter;
++        profiler->rendered_vertice_counter -= Context->prevVSVertexCount;
++        Context->prevVSVertexCount = temp;
++    }
++    gcmkUPDATE_PROFILE_DATA(rendered_vertice_counter);
++
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (11) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0045C, &profiler->vtx_branch_inst_counter));
++    if (needResetShader)
++    {
++        temp = profiler->vtx_branch_inst_counter;
++        profiler->vtx_branch_inst_counter -= Context->prevVSBranchInstCount;
++        Context->prevVSBranchInstCount = temp;
++    }
++    gcmkUPDATE_PROFILE_DATA(vtx_branch_inst_counter);
++
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (12) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0045C, &profiler->vtx_texld_inst_counter));
++    if (needResetShader)
++    {
++        temp = profiler->vtx_texld_inst_counter;
++        profiler->vtx_texld_inst_counter -= Context->prevVSTexInstCount;
++        Context->prevVSTexInstCount = temp;
++    }
++    gcmkUPDATE_PROFILE_DATA(vtx_texld_inst_counter);
++
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (13) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0045C, &profiler->pxl_branch_inst_counter));
++    if (needResetShader)
++    {
++        temp = profiler->pxl_branch_inst_counter;
++        profiler->pxl_branch_inst_counter -= Context->prevPSBranchInstCount;
++        Context->prevPSBranchInstCount = temp;
++    }
++    gcmkUPDATE_PROFILE_DATA(pxl_branch_inst_counter);
++
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (14) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0045C, &profiler->pxl_texld_inst_counter));
++    if (needResetShader)
++    {
++        temp = profiler->pxl_texld_inst_counter;
++        profiler->pxl_texld_inst_counter -= Context->prevPSTexInstCount;
++        Context->prevPSTexInstCount = temp;
++    }
++    gcmkUPDATE_PROFILE_DATA(pxl_texld_inst_counter);
++
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (15) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) ));
++gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00470,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24)))
++));
++
++    /* PA */
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (3) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00460, &profiler->pa_input_vtx_counter));
++    gcmkUPDATE_PROFILE_DATA(pa_input_vtx_counter);
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (4) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00460, &profiler->pa_input_prim_counter));
++    gcmkUPDATE_PROFILE_DATA(pa_input_prim_counter);
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (5) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00460, &profiler->pa_output_prim_counter));
++    gcmkUPDATE_PROFILE_DATA(pa_output_prim_counter);
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (6) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00460, &profiler->pa_depth_clipped_counter));
++    gcmkUPDATE_PROFILE_DATA(pa_depth_clipped_counter);
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (7) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00460, &profiler->pa_trivial_rejected_counter));
++    gcmkUPDATE_PROFILE_DATA(pa_trivial_rejected_counter);
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (8) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00460, &profiler->pa_culled_counter));
++    gcmkUPDATE_PROFILE_DATA(pa_culled_counter);
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (15) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) ));
++gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0)))
++));
++
++    /* SE */
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00464, &profiler->se_culled_triangle_count));
++    gcmkUPDATE_PROFILE_DATA(se_culled_triangle_count);
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00464, &profiler->se_culled_lines_count));
++    gcmkUPDATE_PROFILE_DATA(se_culled_lines_count);
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) | (((gctUINT32) ((gctUINT32) (15) & ((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) ));
++gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8)))
++));
++
++    /* RA */
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00448, &profiler->ra_valid_pixel_count));
++    gcmkUPDATE_PROFILE_DATA(ra_valid_pixel_count);
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00448, &profiler->ra_total_quad_count));
++    gcmkUPDATE_PROFILE_DATA(ra_total_quad_count);
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (2) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00448, &profiler->ra_valid_quad_count_after_early_z));
++    gcmkUPDATE_PROFILE_DATA(ra_valid_quad_count_after_early_z);
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (3) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00448, &profiler->ra_total_primitive_count));
++    gcmkUPDATE_PROFILE_DATA(ra_total_primitive_count);
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (9) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00448, &profiler->ra_pipe_cache_miss_counter));
++    gcmkUPDATE_PROFILE_DATA(ra_pipe_cache_miss_counter);
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (10) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00448, &profiler->ra_prefetch_cache_miss_counter));
++    gcmkUPDATE_PROFILE_DATA(ra_prefetch_cache_miss_counter);
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (15) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) ));
++gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 23:16) - (0 ? 23:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 23:16) - (0 ? 23:16) + 1))))))) << (0 ? 23:16)))
++));
++
++    /* TX */
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0044C, &profiler->tx_total_bilinear_requests));
++    gcmkUPDATE_PROFILE_DATA(tx_total_bilinear_requests);
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0044C, &profiler->tx_total_trilinear_requests));
++    gcmkUPDATE_PROFILE_DATA(tx_total_trilinear_requests);
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (2) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0044C, &profiler->tx_total_discarded_texture_requests));
++    gcmkUPDATE_PROFILE_DATA(tx_total_discarded_texture_requests);
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (3) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0044C, &profiler->tx_total_texture_requests));
++    gcmkUPDATE_PROFILE_DATA(tx_total_texture_requests);
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (5) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0044C, &profiler->tx_mem_read_count));
++    gcmkUPDATE_PROFILE_DATA(tx_mem_read_count);
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (6) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0044C, &profiler->tx_mem_read_in_8B_count));
++    gcmkUPDATE_PROFILE_DATA(tx_mem_read_in_8B_count);
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (7) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0044C, &profiler->tx_cache_miss_count));
++    gcmkUPDATE_PROFILE_DATA(tx_cache_miss_count);
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (8) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0044C, &profiler->tx_cache_hit_texel_count));
++    gcmkUPDATE_PROFILE_DATA(tx_cache_hit_texel_count);
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (9) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0044C, &profiler->tx_cache_miss_texel_count));
++    gcmkUPDATE_PROFILE_DATA(tx_cache_miss_texel_count);
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (15) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) ));
++gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00474,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 31:24) - (0 ? 31:24) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 31:24) - (0 ? 31:24) + 1))))))) << (0 ? 31:24)))
++));
++
++    /* MC */
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00468, &profiler->mc_total_read_req_8B_from_pipeline));
++    gcmkUPDATE_PROFILE_DATA(mc_total_read_req_8B_from_pipeline);
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (2) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00468, &profiler->mc_total_read_req_8B_from_IP));
++    gcmkUPDATE_PROFILE_DATA(mc_total_read_req_8B_from_IP);
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (3) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x00468, &profiler->mc_total_write_req_8B_from_pipeline));
++    gcmkUPDATE_PROFILE_DATA(mc_total_write_req_8B_from_pipeline);
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (15) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) ));
++gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 7:0) - (0 ? 7:0) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 7:0) - (0 ? 7:0) + 1))))))) << (0 ? 7:0)))
++));
++
++    /* HI */
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0046C, &profiler->hi_axi_cycles_read_request_stalled));
++    gcmkUPDATE_PROFILE_DATA(hi_axi_cycles_read_request_stalled);
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) | (((gctUINT32) ((gctUINT32) (1) & ((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0046C, &profiler->hi_axi_cycles_write_request_stalled));
++    gcmkUPDATE_PROFILE_DATA(hi_axi_cycles_write_request_stalled);
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) | (((gctUINT32) ((gctUINT32) (2) & ((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) ));
++gcmkONERROR(gckOS_ReadRegisterEx(Hardware->os, Hardware->core, 0x0046C, &profiler->hi_axi_cycles_write_data_stalled));
++    gcmkUPDATE_PROFILE_DATA(hi_axi_cycles_write_data_stalled);
++    gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) | (((gctUINT32) ((gctUINT32) (15) & ((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) ));
++gcmkONERROR(gckOS_WriteRegisterEx(Hardware->os, Hardware->core, 0x00478,   ((((gctUINT32) (0)) & ~(((gctUINT32) (((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8))) | (((gctUINT32) ((gctUINT32) (0) & ((gctUINT32) ((((1 ? 15:8) - (0 ? 15:8) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 15:8) - (0 ? 15:8) + 1))))))) << (0 ? 15:8)))
++));
++
++    /* Success. */
++    gcmkFOOTER_NO();
++    return gcvSTATUS_OK;
++
++OnError:
++    /* Return the status. */
++    gcmkFOOTER();
++    return status;
++}
++#endif
++
+ static gceSTATUS
+ _ResetGPU(
+     IN gckHARDWARE Hardware,
+@@ -5602,6 +6264,22 @@ gckHARDWARE_IsFeatureAvailable(
+             &&      ((((gctUINT32) (Hardware->identity.chipFeatures)) >> (0 ? 2:2) & ((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1)))))));
+         break;
+ 
++    case gcvFEATURE_PIPE_2D:
++        available = ((((gctUINT32) (Hardware->identity.chipFeatures)) >> (0 ? 9:9) & ((gctUINT32) ((((1 ? 9:9) - (0 ? 9:9) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 9:9) - (0 ? 9:9) + 1)))))) == (0x1  & ((gctUINT32) ((((1 ? 9:9) - (0 ? 9:9) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 9:9) - (0 ? 9:9) + 1)))))));
++        break;
++
++    case gcvFEATURE_PIPE_3D:
++#ifndef VIVANTE_NO_3D
++        available = ((((gctUINT32) (Hardware->identity.chipFeatures)) >> (0 ? 2:2) & ((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1)))))) == (0x1  & ((gctUINT32) ((((1 ? 2:2) - (0 ? 2:2) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 2:2) - (0 ? 2:2) + 1)))))));
++#else
++        available = gcvFALSE;
++#endif
++        break;
++
++    case gcvFEATURE_HALTI2:
++        available = ((((gctUINT32) (Hardware->identity.chipMinorFeatures4)) >> (0 ? 16:16) & ((gctUINT32) ((((1 ? 16:16) - (0 ? 16:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 16:16) - (0 ? 16:16) + 1)))))) == (0x1 & ((gctUINT32) ((((1 ? 16:16) - (0 ? 16:16) + 1) == 32) ? ~0 : (~(~0 << ((1 ? 16:16) - (0 ? 16:16) + 1)))))));
++        break;
++
+     default:
+         gcmkFATAL("Invalid feature has been requested.");
+         available = gcvFALSE;
+diff --git a/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.h b/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.h
+index 37226b7..287ea60 100644
+--- a/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.h
++++ b/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.h
+@@ -92,6 +92,7 @@ struct _gckHARDWARE
+ #endif
+ 
+     gctBOOL                     powerManagement;
++    gctBOOL                     gpuProfiler;
+ };
+ 
+ gceSTATUS
+diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c
+index b7b0d28..12a5340 100644
+--- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c
++++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c
+@@ -128,19 +128,6 @@ _ResetFinishFunction(
+ **          Pointer to a variable that will hold the pointer to the gckKERNEL
+ **          object.
+ */
+-#ifdef ANDROID
+-#if gcdNEW_PROFILER_FILE
+-#define DEFAULT_PROFILE_FILE_NAME   "/sdcard/vprofiler.vpd"
+-#else
+-#define DEFAULT_PROFILE_FILE_NAME   "/sdcard/vprofiler.xml"
+-#endif
+-#else
+-#if gcdNEW_PROFILER_FILE
+-#define DEFAULT_PROFILE_FILE_NAME   "vprofiler.vpd"
+-#else
+-#define DEFAULT_PROFILE_FILE_NAME   "vprofiler.xml"
+-#endif
+-#endif
+ 
+ gceSTATUS
+ gckKERNEL_Construct(
+@@ -302,17 +289,12 @@ gckKERNEL_Construct(
+ 
+ #if VIVANTE_PROFILER
+     /* Initialize profile setting */
+-#if defined ANDROID
+     kernel->profileEnable = gcvFALSE;
+-#else
+-    kernel->profileEnable = gcvTRUE;
+-#endif
+     kernel->profileCleanRegister = gcvTRUE;
++#endif
+ 
+-    gcmkVERIFY_OK(
+-        gckOS_MemCopy(kernel->profileFileName,
+-                      DEFAULT_PROFILE_FILE_NAME,
+-                      gcmSIZEOF(DEFAULT_PROFILE_FILE_NAME) + 1));
++#if gcdANDROID_NATIVE_FENCE_SYNC
++    gcmkONERROR(gckOS_CreateSyncTimeline(Os, &kernel->timeline));
+ #endif
+ 
+     /* Return pointer to the gckKERNEL object. */
+@@ -395,6 +377,13 @@ OnError:
+         }
+ #endif
+ 
++#if gcdANDROID_NATIVE_FENCE_SYNC
++        if (kernel->timeline)
++        {
++            gcmkVERIFY_OK(gckOS_DestroySyncTimeline(Os, kernel->timeline));
++        }
++#endif
++
+         gcmkVERIFY_OK(gcmkOS_SAFE_FREE(Os, kernel));
+     }
+ 
+@@ -525,6 +514,10 @@ gckKERNEL_Destroy(
+     }
+ #endif
+ 
++#if gcdANDROID_NATIVE_FENCE_SYNC
++    gcmkVERIFY_OK(gckOS_DestroySyncTimeline(Kernel->os, Kernel->timeline));
++#endif
++
+     /* Mark the gckKERNEL object as unknown. */
+     Kernel->object.type = gcvOBJ_UNKNOWN;
+ 
+@@ -1310,7 +1303,8 @@ gckKERNEL_Dispatch(
+         /* Commit a command and context buffer. */
+         gcmkONERROR(
+             gckCOMMAND_Commit(Kernel->command,
+-                              gcmNAME_TO_PTR(Interface->u.Commit.context),
++                              Interface->u.Commit.context ?
++                                  gcmNAME_TO_PTR(Interface->u.Commit.context) : gcvNULL,
+                               gcmUINT64_TO_PTR(Interface->u.Commit.commandBuffer),
+                               gcmUINT64_TO_PTR(Interface->u.Commit.delta),
+                               gcmUINT64_TO_PTR(Interface->u.Commit.queue),
+@@ -1600,7 +1594,15 @@ gckKERNEL_Dispatch(
+         break;
+ 
+     case gcvHAL_READ_ALL_PROFILE_REGISTERS:
+-#if VIVANTE_PROFILER
++#if VIVANTE_PROFILER && VIVANTE_PROFILER_CONTEXT
++        /* Read profile data according to the context. */
++        gcmkONERROR(
++            gckHARDWARE_QueryContextProfile(
++                Kernel->hardware,
++                Kernel->profileCleanRegister,
++                gcmNAME_TO_PTR(Interface->u.RegisterProfileData.context),
++                &Interface->u.RegisterProfileData.counters));
++#elif VIVANTE_PROFILER
+         /* Read all 3D profile registers. */
+         gcmkONERROR(
+             gckHARDWARE_QueryProfileRegisters(
+@@ -1628,11 +1630,6 @@ gckKERNEL_Dispatch(
+ #if VIVANTE_PROFILER
+         /* Get profile setting */
+         Interface->u.GetProfileSetting.enable = Kernel->profileEnable;
+-
+-        gcmkVERIFY_OK(
+-            gckOS_MemCopy(Interface->u.GetProfileSetting.fileName,
+-                          Kernel->profileFileName,
+-                          gcdMAX_PROFILE_FILE_NAME));
+ #endif
+ 
+         status = gcvSTATUS_OK;
+@@ -1640,12 +1637,13 @@ gckKERNEL_Dispatch(
+     case gcvHAL_SET_PROFILE_SETTING:
+ #if VIVANTE_PROFILER
+         /* Set profile setting */
+-        Kernel->profileEnable = Interface->u.SetProfileSetting.enable;
+-
+-        gcmkVERIFY_OK(
+-            gckOS_MemCopy(Kernel->profileFileName,
+-                          Interface->u.SetProfileSetting.fileName,
+-                          gcdMAX_PROFILE_FILE_NAME));
++        if(Kernel->hardware->gpuProfiler)
++            Kernel->profileEnable = Interface->u.SetProfileSetting.enable;
++        else
++        {
++            status = gcvSTATUS_NOT_SUPPORTED;
++            break;
++        }
+ #endif
+ 
+         status = gcvSTATUS_OK;
+@@ -2093,6 +2091,61 @@ gckKERNEL_Dispatch(
+ #endif
+         break;
+ 
++#if gcdANDROID_NATIVE_FENCE_SYNC
++    case gcvHAL_SYNC_POINT:
++        {
++            gctSYNC_POINT syncPoint;
++
++            switch (Interface->u.SyncPoint.command)
++            {
++            case gcvSYNC_POINT_CREATE:
++                gcmkONERROR(gckOS_CreateSyncPoint(Kernel->os, &syncPoint));
++
++                Interface->u.SyncPoint.syncPoint = gcmPTR_TO_UINT64(syncPoint);
++
++                gcmkVERIFY_OK(
++                    gckKERNEL_AddProcessDB(Kernel,
++                                           processID, gcvDB_SYNC_POINT,
++                                           syncPoint,
++                                           gcvNULL,
++                                           0));
++                break;
++
++            case gcvSYNC_POINT_DESTROY:
++                syncPoint = gcmUINT64_TO_PTR(Interface->u.SyncPoint.syncPoint);
++
++                gcmkONERROR(gckOS_DestroySyncPoint(Kernel->os, syncPoint));
++
++                gcmkVERIFY_OK(
++                    gckKERNEL_RemoveProcessDB(Kernel,
++                                              processID, gcvDB_SYNC_POINT,
++                                              syncPoint));
++                break;
++
++            default:
++                gcmkONERROR(gcvSTATUS_INVALID_ARGUMENT);
++                break;
++            }
++        }
++        break;
++
++    case gcvHAL_CREATE_NATIVE_FENCE:
++        {
++            gctINT fenceFD;
++            gctSYNC_POINT syncPoint =
++                gcmUINT64_TO_PTR(Interface->u.CreateNativeFence.syncPoint);
++
++            gcmkONERROR(
++                gckOS_CreateNativeFence(Kernel->os,
++                                        Kernel->timeline,
++                                        syncPoint,
++                                        &fenceFD));
++
++            Interface->u.CreateNativeFence.fenceFD = fenceFD;
++        }
++        break;
++#endif
++
+     default:
+         /* Invalid command. */
+         gcmkONERROR(gcvSTATUS_INVALID_ARGUMENT);
+@@ -2856,6 +2909,8 @@ gckKERNEL_Recovery(
+         return gcvSTATUS_OK;
+     }
+ 
++    gcmkPRINT("[galcore]: GPU[%d] hang, automatic recovery.", Kernel->core);
++
+     /* Start a timer to clear reset flag, before timer is expired,
+     ** other recovery request is ignored. */
+     gcmkVERIFY_OK(
+@@ -3382,7 +3437,7 @@ gckLINKQUEUE_Dequeue(
+     IN gckLINKQUEUE LinkQueue
+     )
+ {
+-    gcmASSERT(LinkQueue->count == gcdLINK_QUEUE_SIZE);
++    gcmkASSERT(LinkQueue->count == gcdLINK_QUEUE_SIZE);
+ 
+     LinkQueue->count--;
+     LinkQueue->front = (LinkQueue->front + 1) % gcdLINK_QUEUE_SIZE;
+diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.h b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.h
+index 5896e93..1c40df2 100644
+--- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.h
++++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.h
+@@ -140,8 +140,9 @@ typedef enum _gceDATABASE_TYPE
+     gcvDB_CONTEXT,                      /* Context */
+     gcvDB_IDLE,                         /* GPU idle. */
+     gcvDB_MAP_MEMORY,                   /* Map memory */
+-    gcvDB_SHARED_INFO,                 /* Private data */
+-    gcvDB_MAP_USER_MEMORY               /* Map user memory */
++    gcvDB_SHARED_INFO,                  /* Private data */
++    gcvDB_MAP_USER_MEMORY,              /* Map user memory */
++    gcvDB_SYNC_POINT,                   /* Sync point. */
+ }
+ gceDATABASE_TYPE;
+ 
+@@ -406,9 +407,6 @@ struct _gckKERNEL
+     /* Enable profiling */
+     gctBOOL                     profileEnable;
+ 
+-    /* The profile file name */
+-    gctCHAR                     profileFileName[gcdMAX_PROFILE_FILE_NAME];
+-
+     /* Clear profile register or not*/
+     gctBOOL                     profileCleanRegister;
+ 
+@@ -445,6 +443,10 @@ struct _gckKERNEL
+ #if gcdDVFS
+     gckDVFS                     dvfs;
+ #endif
++
++#if gcdANDROID_NATIVE_FENCE_SYNC
++    gctHANDLE                   timeline;
++#endif
+ };
+ 
+ struct _FrequencyHistory
+@@ -496,6 +498,11 @@ struct _gckCOMMAND
+     /* Context switching mutex. */
+     gctPOINTER                  mutexContext;
+ 
++#if VIVANTE_PROFILER_CONTEXT
++    /* Context sequence mutex. */
++    gctPOINTER                  mutexContextSeq;
++#endif
++
+     /* Command queue power semaphore. */
+     gctPOINTER                  powerSemaphore;
+ 
+@@ -649,6 +656,8 @@ struct _gckEVENT
+     gctPOINTER                  eventListMutex;
+ 
+     gctPOINTER                  submitTimer;
++
++    volatile gctBOOL            inNotify;
+ };
+ 
+ /* Free all events belonging to a process. */
+@@ -668,6 +677,11 @@ gckEVENT_Stop(
+ 	IN OUT gctSIZE_T * waitSize
+     );
+ 
++gceSTATUS
++gckEVENT_WaitEmpty(
++    IN gckEVENT Event
++    );
++
+ /* gcuVIDMEM_NODE structure. */
+ typedef union _gcuVIDMEM_NODE
+ {
+diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command.c
+index 9ee9ea1..73dab81 100644
+--- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command.c
++++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command.c
+@@ -494,6 +494,11 @@ gckCOMMAND_Construct(
+     /* Create the context switching mutex. */
+     gcmkONERROR(gckOS_CreateMutex(os, &command->mutexContext));
+ 
++#if VIVANTE_PROFILER_CONTEXT
++    /* Create the context switching mutex. */
++    gcmkONERROR(gckOS_CreateMutex(os, &command->mutexContextSeq));
++#endif
++
+     /* Create the power management semaphore. */
+     gcmkONERROR(gckOS_CreateSemaphore(os, &command->powerSemaphore));
+ 
+@@ -572,6 +577,13 @@ OnError:
+             gcmkVERIFY_OK(gckOS_DeleteMutex(os, command->mutexContext));
+         }
+ 
++#if VIVANTE_PROFILER_CONTEXT
++        if (command->mutexContextSeq != gcvNULL)
++        {
++            gcmkVERIFY_OK(gckOS_DeleteMutex(os, command->mutexContextSeq));
++        }
++#endif
++
+         if (command->mutexQueue != gcvNULL)
+         {
+             gcmkVERIFY_OK(gckOS_DeleteMutex(os, command->mutexQueue));
+@@ -662,6 +674,11 @@ gckCOMMAND_Destroy(
+     /* Delete the context switching mutex. */
+     gcmkVERIFY_OK(gckOS_DeleteMutex(Command->os, Command->mutexContext));
+ 
++#if VIVANTE_PROFILER_CONTEXT
++    if (Command->mutexContextSeq != gcvNULL)
++        gcmkVERIFY_OK(gckOS_DeleteMutex(Command->os, Command->mutexContextSeq));
++#endif
++
+     /* Delete the command queue mutex. */
+     gcmkVERIFY_OK(gckOS_DeleteMutex(Command->os, Command->mutexQueue));
+ 
+@@ -1127,6 +1144,10 @@ gckCOMMAND_Commit(
+ # endif
+ #endif
+ 
++#if VIVANTE_PROFILER_CONTEXT
++    gctBOOL sequenceAcquired = gcvFALSE;
++#endif
++
+     gctPOINTER pointer = gcvNULL;
+ 
+     gcmkHEADER_ARG(
+@@ -1145,6 +1166,17 @@ gckCOMMAND_Commit(
+ 
+     gcmkONERROR(_FlushMMU(Command));
+ 
++#if VIVANTE_PROFILER_CONTEXT
++    if((Command->kernel->hardware->gpuProfiler) && (Command->kernel->profileEnable))
++    {
++        /* Acquire the context sequnence mutex. */
++        gcmkONERROR(gckOS_AcquireMutex(
++            Command->os, Command->mutexContextSeq, gcvINFINITE
++            ));
++        sequenceAcquired = gcvTRUE;
++    }
++#endif
++
+     /* Acquire the command queue. */
+     gcmkONERROR(gckCOMMAND_EnterCommit(Command, gcvFALSE));
+     commitEntered = gcvTRUE;
+@@ -2002,6 +2034,23 @@ gckCOMMAND_Commit(
+     gcmkONERROR(gckCOMMAND_ExitCommit(Command, gcvFALSE));
+     commitEntered = gcvFALSE;
+ 
++#if VIVANTE_PROFILER_CONTEXT
++    if(sequenceAcquired)
++    {
++        gcmkONERROR(gckCOMMAND_Stall(Command, gcvTRUE));
++        if (Command->currContext)
++        {
++            gcmkONERROR(gckHARDWARE_UpdateContextProfile(
++                hardware,
++                Command->currContext));
++        }
++
++        /* Release the context switching mutex. */
++        gcmkONERROR(gckOS_ReleaseMutex(Command->os, Command->mutexContextSeq));
++        sequenceAcquired = gcvFALSE;
++    }
++#endif
++
+     /* Loop while there are records in the queue. */
+     while (EventQueue != gcvNULL)
+     {
+@@ -2114,6 +2163,14 @@ OnError:
+         gcmkVERIFY_OK(gckCOMMAND_ExitCommit(Command, gcvFALSE));
+     }
+ 
++#if VIVANTE_PROFILER_CONTEXT
++    if (sequenceAcquired)
++    {
++        /* Release the context sequence mutex. */
++        gcmkVERIFY_OK(gckOS_ReleaseMutex(Command->os, Command->mutexContextSeq));
++    }
++#endif
++
+     /* Unmap the command buffer pointer. */
+     if (commandBufferMapped)
+     {
+diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command_vg.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command_vg.c
+index 76c1c10..1a7c340 100644
+--- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command_vg.c
++++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command_vg.c
+@@ -2819,6 +2819,7 @@ gckVGCOMMAND_Construct(
+         ** Enable TS overflow interrupt.
+         */
+ 
++        command->info.tsOverflowInt = 0;
+         gcmkERR_BREAK(gckVGINTERRUPT_Enable(
+             Kernel->interrupt,
+             &command->info.tsOverflowInt,
+@@ -3406,38 +3407,26 @@ gckVGCOMMAND_Commit(
+         gctBOOL previousExecuted;
+         gctUINT controlIndex;
+ 
++        gcmkERR_BREAK(gckVGHARDWARE_SetPowerManagementState(
++            Command->hardware, gcvPOWER_ON_AUTO
++            ));
++
++        /* Acquire the power semaphore. */
++        gcmkERR_BREAK(gckOS_AcquireSemaphore(
++            Command->os, Command->powerSemaphore
++            ));
++
+         /* Acquire the mutex. */
+-        gcmkERR_BREAK(gckOS_AcquireMutex(
++        status = gckOS_AcquireMutex(
+             Command->os,
+             Command->commitMutex,
+             gcvINFINITE
+-            ));
+-
+-        status = gckVGHARDWARE_SetPowerManagementState(
+-            Command->hardware, gcvPOWER_ON_AUTO);
+-
+-        if (gcmIS_ERROR(status))
+-        {
+-            /* Acquire the mutex. */
+-            gcmkVERIFY_OK(gckOS_ReleaseMutex(
+-                Command->os,
+-                Command->commitMutex
+-                ));
+-
+-            break;
+-        }
+-            /* Acquire the power semaphore. */
+-        status = gckOS_AcquireSemaphore(
+-            Command->os, Command->powerSemaphore);
++            );
+ 
+         if (gcmIS_ERROR(status))
+         {
+-            /* Acquire the mutex. */
+-            gcmkVERIFY_OK(gckOS_ReleaseMutex(
+-                Command->os,
+-                Command->commitMutex
+-                ));
+-
++            gcmkVERIFY_OK(gckOS_ReleaseSemaphore(
++                Command->os, Command->powerSemaphore));
+             break;
+         }
+ 
+@@ -3669,14 +3658,14 @@ gckVGCOMMAND_Commit(
+         }
+         while (gcvFALSE);
+ 
+-        gcmkVERIFY_OK(gckOS_ReleaseSemaphore(
+-            Command->os, Command->powerSemaphore));
+-
+         /* Release the mutex. */
+         gcmkCHECK_STATUS(gckOS_ReleaseMutex(
+             Command->os,
+             Command->commitMutex
+             ));
++
++        gcmkVERIFY_OK(gckOS_ReleaseSemaphore(
++            Command->os, Command->powerSemaphore));
+     }
+     while (gcvFALSE);
+ 
+diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_db.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_db.c
+index 673d4f7..134351a 100644
+--- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_db.c
++++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_db.c
+@@ -1307,6 +1307,18 @@ gckKERNEL_DestroyProcessDB(
+             status = gckOS_FreeMemory(Kernel->os, record->physical);
+             break;
+ 
++#if gcdANDROID_NATIVE_FENCE_SYNC
++        case gcvDB_SYNC_POINT:
++            /* Free the user signal. */
++            status = gckOS_DestroySyncPoint(Kernel->os,
++                                            (gctSYNC_POINT) record->data);
++
++            gcmkTRACE_ZONE(gcvLEVEL_WARNING, gcvZONE_DATABASE,
++                           "DB: SYNC POINT %d (status=%d)",
++                           (gctINT)(gctUINTPTR_T)record->data, status);
++            break;
++#endif
++
+         default:
+             gcmkTRACE_ZONE(gcvLEVEL_ERROR, gcvZONE_DATABASE,
+                            "DB: Correcupted record=0x%08x type=%d",
+diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_event.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_event.c
+index 217f7f1..2d81a56 100644
+--- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_event.c
++++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_event.c
+@@ -931,6 +931,7 @@ gckEVENT_AddList(
+         || (Interface->command == gcvHAL_TIMESTAMP)
+         || (Interface->command == gcvHAL_COMMIT_DONE)
+         || (Interface->command == gcvHAL_FREE_VIRTUAL_COMMAND_BUFFER)
++        || (Interface->command == gcvHAL_SYNC_POINT)
+         );
+ 
+     /* Validate the source. */
+@@ -2131,6 +2132,9 @@ gckEVENT_Notify(
+                                        gcvINFINITE));
+         acquired = gcvTRUE;
+ 
++        /* We are in the notify loop. */
++        Event->inNotify = gcvTRUE;
++
+         /* Grab the event head. */
+         record = queue->head;
+ 
+@@ -2463,6 +2467,17 @@ gckEVENT_Notify(
+                  break;
+ #endif
+ 
++#if gcdANDROID_NATIVE_FENCE_SYNC
++            case gcvHAL_SYNC_POINT:
++                {
++                    gctSYNC_POINT syncPoint;
++
++                    syncPoint = gcmUINT64_TO_PTR(record->info.u.SyncPoint.syncPoint);
++                    status = gckOS_SignalSyncPoint(Event->os, syncPoint);
++                }
++                break;
++#endif
++
+             case gcvHAL_COMMIT_DONE:
+                 break;
+ 
+@@ -2505,6 +2520,9 @@ gckEVENT_Notify(
+         gcmkONERROR(_TryToIdleGPU(Event));
+     }
+ 
++    /* We are out the notify loop. */
++    Event->inNotify = gcvFALSE;
++
+     /* Success. */
+     gcmkFOOTER_NO();
+     return gcvSTATUS_OK;
+@@ -2524,6 +2542,9 @@ OnError:
+     }
+ #endif
+ 
++    /* We are out the notify loop. */
++    Event->inNotify = gcvFALSE;
++
+     /* Return the status. */
+     gcmkFOOTER();
+     return status;
+@@ -2871,3 +2892,11 @@ gckEVENT_Dump(
+     return gcvSTATUS_OK;
+ }
+ 
++gceSTATUS gckEVENT_WaitEmpty(gckEVENT Event)
++{
++    gctBOOL isEmpty;
++
++    while (Event->inNotify || (gcmIS_SUCCESS(gckEVENT_IsEmpty(Event, &isEmpty)) && !isEmpty)) ;
++
++    return gcvSTATUS_OK;
++}
+diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_interrupt_vg.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_interrupt_vg.c
+index 8ac187b..50bc63e 100644
+--- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_interrupt_vg.c
++++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_interrupt_vg.c
+@@ -794,6 +794,9 @@ gckVGINTERRUPT_Enque(
+             Interrupt->kernel->hardware, &triggered
+             ));
+ 
++        /* Mask out TS overflow interrupt */
++        triggered &= 0xfffffffe;
++
+         /* No interrupts to process? */
+         if (triggered == 0)
+         {
+diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_mmu.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_mmu.c
+index c7f67c7..e4ca497 100644
+--- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_mmu.c
++++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_mmu.c
+@@ -1436,7 +1436,7 @@ gckMMU_AllocatePages(
+     acquired = gcvTRUE;
+ 
+     /* Allocate page table for current MMU. */
+-    for (i = 0; i < mirrorPageTable->reference; i++)
++    for (i = 0; i < (gctINT)mirrorPageTable->reference; i++)
+     {
+         if (Mmu == mirrorPageTable->mmus[i])
+         {
+@@ -1446,7 +1446,7 @@ gckMMU_AllocatePages(
+     }
+ 
+     /* Allocate page table for other MMUs. */
+-    for (i = 0; i < mirrorPageTable->reference; i++)
++    for (i = 0; i < (gctINT)mirrorPageTable->reference; i++)
+     {
+         mmu = mirrorPageTable->mmus[i];
+ 
+@@ -1500,7 +1500,7 @@ gckMMU_FreePages(
+ 
+     offset = (gctUINT32)PageTable - (gctUINT32)Mmu->pageTableLogical;
+ 
+-    for (i = 0; i < mirrorPageTable->reference; i++)
++    for (i = 0; i < (gctINT)mirrorPageTable->reference; i++)
+     {
+         mmu = mirrorPageTable->mmus[i];
+ 
+@@ -1639,7 +1639,7 @@ gckMMU_SetPage(
+     _WritePageEntry(PageEntry, data);
+ 
+ #if gcdMIRROR_PAGETABLE
+-    for (i = 0; i < mirrorPageTable->reference; i++)
++    for (i = 0; i < (gctINT)mirrorPageTable->reference; i++)
+     {
+         mmu = mirrorPageTable->mmus[i];
+ 
+diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c
+index 8b8bbdc..3b5dd82 100644
+--- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c
++++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_video_memory.c
+@@ -1582,6 +1582,7 @@ _NeedVirtualMapping(
+     gctUINT32 end;
+     gcePOOL pool;
+     gctUINT32 offset;
++    gctUINT32 baseAddress;
+ 
+     gcmkHEADER_ARG("Node=0x%X", Node);
+ 
+@@ -1601,10 +1602,16 @@ _NeedVirtualMapping(
+         else
+ #endif
+         {
+-            /* For cores which can't access all physical address. */
+-            gcmkONERROR(gckHARDWARE_ConvertLogical(Kernel->hardware,
+-                        Node->Virtual.logical,
+-                        &phys));
++            /* Convert logical address into a physical address. */
++            gcmkONERROR(
++                gckOS_GetPhysicalAddress(Kernel->os, Node->Virtual.logical, &phys));
++
++            gcmkONERROR(gckOS_GetBaseAddress(Kernel->os, &baseAddress));
++
++            gcmkASSERT(phys >= baseAddress);
++
++            /* Subtract baseAddress to get a GPU address used for programming. */
++            phys -= baseAddress;
+ 
+             /* If part of region is belong to gcvPOOL_VIRTUAL,
+             ** whole region has to be mapped. */
+@@ -1734,6 +1741,11 @@ gckVIDMEM_Lock(
+         gcmkONERROR(gckOS_AcquireMutex(os, Node->Virtual.mutex, gcvINFINITE));
+         acquired = gcvTRUE;
+ 
++#if gcdPAGED_MEMORY_CACHEABLE
++        /* Force video memory cacheable. */
++        Cacheable = gcvTRUE;
++#endif
++
+         gcmkONERROR(
+             gckOS_LockPages(os,
+                             Node->Virtual.physical,
+diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal.h
+index 4406d7e..7312cc2 100644
+--- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal.h
++++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal.h
+@@ -123,6 +123,12 @@ extern "C" {
+ 
+ #define gcvINVALID_ADDRESS          ~0U
+ 
++#define gcmGET_PRE_ROTATION(rotate) \
++    ((rotate) & (~(gcvSURF_POST_FLIP_X | gcvSURF_POST_FLIP_Y)))
++
++#define gcmGET_POST_ROTATION(rotate) \
++    ((rotate) & (gcvSURF_POST_FLIP_X | gcvSURF_POST_FLIP_Y))
++
+ /******************************************************************************\
+ ******************************** gcsOBJECT Object *******************************
+ \******************************************************************************/
+@@ -1124,6 +1130,60 @@ gckOS_UnmapUserMemory(
+     IN gctUINT32 Address
+     );
+ 
++/******************************************************************************\
++************************** Android Native Fence Sync ***************************
++\******************************************************************************/
++gceSTATUS
++gckOS_CreateSyncTimeline(
++    IN gckOS Os,
++    OUT gctHANDLE * Timeline
++    );
++
++gceSTATUS
++gckOS_DestroySyncTimeline(
++    IN gckOS Os,
++    IN gctHANDLE Timeline
++    );
++
++gceSTATUS
++gckOS_CreateSyncPoint(
++    IN gckOS Os,
++    OUT gctSYNC_POINT * SyncPoint
++    );
++
++gceSTATUS
++gckOS_ReferenceSyncPoint(
++    IN gckOS Os,
++    IN gctSYNC_POINT SyncPoint
++    );
++
++gceSTATUS
++gckOS_DestroySyncPoint(
++    IN gckOS Os,
++    IN gctSYNC_POINT SyncPoint
++    );
++
++gceSTATUS
++gckOS_SignalSyncPoint(
++    IN gckOS Os,
++    IN gctSYNC_POINT SyncPoint
++    );
++
++gceSTATUS
++gckOS_QuerySyncPoint(
++    IN gckOS Os,
++    IN gctSYNC_POINT SyncPoint,
++    OUT gctBOOL_PTR State
++    );
++
++gceSTATUS
++gckOS_CreateNativeFence(
++    IN gckOS Os,
++    IN gctHANDLE Timeline,
++    IN gctSYNC_POINT SyncPoint,
++    OUT gctINT * FenceFD
++    );
++
+ #if !USE_NEW_LINUX_SIGNAL
+ /* Create signal to be used in the user space. */
+ gceSTATUS
+@@ -1758,7 +1818,7 @@ gckKERNEL_Recovery(
+ void
+ gckKERNEL_SetTimeOut(
+     IN gckKERNEL Kernel,
+-	IN gctUINT32 timeOut
++    IN gctUINT32 timeOut
+     );
+ 
+ /* Get access to the user data. */
+@@ -2078,6 +2138,12 @@ gckHARDWARE_SetPowerManagement(
+     IN gctBOOL PowerManagement
+     );
+ 
++gceSTATUS
++gckHARDWARE_SetGpuProfiler(
++    IN gckHARDWARE Hardware,
++    IN gctBOOL GpuProfiler
++    );
++
+ #if gcdENABLE_FSCALE_VAL_ADJUST
+ gceSTATUS
+ gckHARDWARE_SetFscaleValue(
+@@ -2554,6 +2620,22 @@ gckHARDWARE_QueryProfileRegisters(
+     );
+ #endif
+ 
++#if VIVANTE_PROFILER_CONTEXT
++gceSTATUS
++gckHARDWARE_QueryContextProfile(
++    IN gckHARDWARE Hardware,
++    IN gctBOOL   Clear,
++    IN gckCONTEXT Context,
++    OUT gcsPROFILER_COUNTERS * Counters
++    );
++
++gceSTATUS
++gckHARDWARE_UpdateContextProfile(
++    IN gckHARDWARE Hardware,
++    IN gckCONTEXT Context
++    );
++#endif
++
+ gceSTATUS
+ gckOS_SignalQueryHardware(
+     IN gckOS Os,
+diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_base.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_base.h
+index 44689b0..9c17114 100644
+--- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_base.h
++++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_base.h
+@@ -71,10 +71,17 @@ typedef struct _gcoFENCE *              gcoFENCE;
+ typedef struct _gcsSYNC_CONTEXT  *      gcsSYNC_CONTEXT_PTR;
+ #endif
+ 
++typedef struct _gcoOS_SymbolsList gcoOS_SymbolsList;
++
+ /******************************************************************************\
+ ******************************* Process local storage *************************
+ \******************************************************************************/
+ typedef struct _gcsPLS * gcsPLS_PTR;
++
++typedef void (* gctPLS_DESTRUCTOR) (
++    gcsPLS_PTR
++    );
++
+ typedef struct _gcsPLS
+ {
+     /* Global objects. */
+@@ -103,6 +110,12 @@ typedef struct _gcsPLS
+ 
+     /* PorcessID of the constrcutor process */
+     gctUINT32                   processID;
++#if gcdFORCE_GAL_LOAD_TWICE
++    /* ThreadID of the constrcutor process. */
++    gctSIZE_T                   threadID;
++    /* Flag for calling module destructor. */
++    gctBOOL                     exiting;
++#endif
+ 
+     /* Reference count for destructor. */
+     gcsATOM_PTR                 reference;
+@@ -111,6 +124,8 @@ typedef struct _gcsPLS
+     gctBOOL                     bNeedSupportNP2Texture;
+ #endif
+ 
++    /* Destructor for eglDisplayInfo. */
++    gctPLS_DESTRUCTOR           destructor;
+ }
+ gcsPLS;
+ 
+@@ -148,6 +163,11 @@ typedef struct _gcsTLS
+ #endif
+ 	gco2D						engine2D;
+     gctBOOL                     copied;
++
++#if gcdFORCE_GAL_LOAD_TWICE
++    /* libGAL.so handle */
++    gctHANDLE                   handle;
++#endif
+ }
+ gcsTLS;
+ 
+@@ -160,6 +180,7 @@ typedef enum _gcePLS_VALUE
+   gcePLS_VALUE_EGL_DISPLAY_INFO,
+   gcePLS_VALUE_EGL_SURFACE_INFO,
+   gcePLS_VALUE_EGL_CONFIG_FORMAT_INFO,
++  gcePLS_VALUE_EGL_DESTRUCTOR_INFO,
+ }
+ gcePLS_VALUE;
+ 
+@@ -577,6 +598,12 @@ gcoHAL_Call(
+     IN OUT gcsHAL_INTERFACE_PTR Interface
+     );
+ 
++gceSTATUS
++gcoHAL_GetPatchID(
++    IN  gcoHAL Hal,
++    OUT gcePATCH_ID * PatchID
++    );
++
+ /* Schedule an event. */
+ gceSTATUS
+ gcoHAL_ScheduleEvent(
+@@ -637,6 +664,16 @@ gcoHAL_QuerySeparated3D2D(
+     IN gcoHAL Hal
+     );
+ 
++gceSTATUS
++gcoHAL_QuerySpecialHint(
++    IN gceSPECIAL_HINT Hint
++    );
++
++gceSTATUS
++gcoHAL_SetSpecialHintData(
++    IN gcoHARDWARE Hardware
++    );
++
+ /* Get pointer to gcoVG object. */
+ gceSTATUS
+ gcoHAL_GetVGEngine(
+@@ -786,7 +823,6 @@ gcoOS_FreeVideoMemory(
+     IN gctPOINTER Handle
+     );
+ 
+-#if gcdENABLE_BANK_ALIGNMENT
+ gceSTATUS
+ gcoSURF_GetBankOffsetBytes(
+     IN gcoSURF Surfce,
+@@ -794,7 +830,6 @@ gcoSURF_GetBankOffsetBytes(
+     IN gctUINT32 Stride,
+     IN gctUINT32_PTR Bytes
+     );
+-#endif
+ 
+ /* Map user memory. */
+ gceSTATUS
+@@ -918,6 +953,21 @@ gcoOS_Flush(
+     IN gctFILE File
+     );
+ 
++/* Close a file descriptor. */
++gceSTATUS
++gcoOS_CloseFD(
++    IN gcoOS Os,
++    IN gctINT FD
++    );
++
++/* Dup file descriptor to another. */
++gceSTATUS
++gcoOS_DupFD(
++    IN gcoOS Os,
++    IN gctINT FD,
++    OUT gctINT * FD2
++    );
++
+ /* Create an endpoint for communication. */
+ gceSTATUS
+ gcoOS_Socket(
+@@ -977,6 +1027,14 @@ gcoOS_GetEnv(
+     OUT gctSTRING * Value
+     );
+ 
++/* Set environment variable value. */
++gceSTATUS
++gcoOS_SetEnv(
++    IN gcoOS Os,
++    IN gctCONST_STRING VarName,
++    IN gctSTRING Value
++    );
++
+ /* Get current working directory. */
+ gceSTATUS
+ gcoOS_GetCwd(
+@@ -1210,6 +1268,13 @@ gcoOS_DetectProcessByEncryptedName(
+     IN gctCONST_STRING Name
+     );
+ 
++#if defined(ANDROID)
++gceSTATUS
++gcoOS_DetectProgrameByEncryptedSymbols(
++    IN gcoOS_SymbolsList Symbols
++    );
++#endif
++
+ /*----------------------------------------------------------------------------*/
+ /*----- Atoms ----------------------------------------------------------------*/
+ 
+@@ -1403,6 +1468,42 @@ gcoOS_UnmapSignal(
+     IN gctSIGNAL Signal
+     );
+ 
++/*----------------------------------------------------------------------------*/
++/*----- Android Native Fence -------------------------------------------------*/
++
++/* Create sync point. */
++gceSTATUS
++gcoOS_CreateSyncPoint(
++    IN gcoOS Os,
++    OUT gctSYNC_POINT * SyncPoint
++    );
++
++/* Destroy sync point. */
++gceSTATUS
++gcoOS_DestroySyncPoint(
++    IN gcoOS Os,
++    IN gctSYNC_POINT SyncPoint
++    );
++
++/* Create native fence. */
++gceSTATUS
++gcoOS_CreateNativeFence(
++    IN gcoOS Os,
++    IN gctSYNC_POINT SyncPoint,
++    OUT gctINT * FenceFD
++    );
++
++/* Wait on native fence. */
++gceSTATUS
++gcoOS_WaitNativeFence(
++    IN gcoOS Os,
++    IN gctINT FenceFD,
++    IN gctUINT32 Timeout
++    );
++
++/*----------------------------------------------------------------------------*/
++/*----- Memory Access and Cache ----------------------------------------------*/
++
+ /* Write a register. */
+ gceSTATUS
+ gcoOS_WriteRegister(
+@@ -1507,7 +1608,7 @@ gcoOS_QueryProfileTickRate(
+ #   define gcmPROFILE_QUERY(start, ticks)   do { } while (gcvFALSE)
+ #   define gcmPROFILE_ONLY(x)               do { } while (gcvFALSE)
+ #   define gcmPROFILE_ELSE(x)               x
+-#   define gcmPROFILE_DECLARE_ONLY(x)       typedef x
++#   define gcmPROFILE_DECLARE_ONLY(x)       do { } while (gcvFALSE) 
+ #   define gcmPROFILE_DECLARE_ELSE(x)       x
+ #endif
+ 
+@@ -1579,6 +1680,28 @@ typedef struct _gcsRECT
+ }
+ gcsRECT;
+ 
++typedef union _gcsPIXEL
++{
++    struct
++    {
++        gctFLOAT r, g, b, a;
++        gctFLOAT d, s;
++    } pf;
++
++    struct
++    {
++        gctINT32 r, g, b, a;
++        gctINT32 d, s;
++    } pi;
++
++    struct
++    {
++        gctUINT32 r, g, b, a;
++        gctUINT32 d, s;
++    } pui;
++
++} gcsPIXEL;
++
+ 
+ /******************************************************************************\
+ ********************************* gcoSURF Object ********************************
+@@ -1795,6 +1918,18 @@ gcoSURF_SetRotation(
+     );
+ 
+ gceSTATUS
++gcoSURF_SetPreRotation(
++    IN gcoSURF Surface,
++    IN gceSURF_ROTATION Rotation
++    );
++
++gceSTATUS
++gcoSURF_GetPreRotation(
++    IN gcoSURF Surface,
++    IN gceSURF_ROTATION *Rotation
++    );
++
++gceSTATUS
+ gcoSURF_IsValid(
+     IN gcoSURF Surface
+     );
+@@ -1824,6 +1959,15 @@ gcoSURF_DisableTileStatus(
+     IN gcoSURF Surface,
+     IN gctBOOL Decompress
+     );
++
++gceSTATUS
++gcoSURF_AlignResolveRect(
++    IN gcoSURF Surf,
++    IN gcsPOINT_PTR RectOrigin,
++    IN gcsPOINT_PTR RectSize,
++    OUT gcsPOINT_PTR AlignedOrigin,
++    OUT gcsPOINT_PTR AlignedSize
++    );
+ #endif /* VIVANTE_NO_3D */
+ 
+ /* Get surface size. */
+@@ -1910,6 +2054,9 @@ gcoSURF_FillFromTile(
+     IN gcoSURF Surface
+     );
+ 
++/* Check if surface needs a filler. */
++gceSTATUS gcoSURF_NeedFiller(IN gcoSURF Surface);
++
+ /* Fill surface with a value. */
+ gceSTATUS
+ gcoSURF_Fill(
+@@ -1949,6 +2096,19 @@ gcoSURF_SetBuffer(
+     IN gctUINT32 Physical
+     );
+ 
++/* Set the underlying video buffer for the surface wrapper. */
++gceSTATUS
++gcoSURF_SetVideoBuffer(
++    IN gcoSURF Surface,
++    IN gceSURF_TYPE Type,
++    IN gceSURF_FORMAT Format,
++    IN gctUINT Width,
++    IN gctUINT Height,
++    IN gctUINT Stride,
++    IN gctPOINTER *LogicalPlane1,
++    IN gctUINT32 *PhysicalPlane1
++    );
++
+ /* Set the size of the surface in pixels and map the underlying buffer. */
+ gceSTATUS
+ gcoSURF_SetWindow(
+@@ -3705,6 +3865,12 @@ gcGetUserDebugOption(
+     void
+     );
+ 
++struct _gcoOS_SymbolsList
++{
++    gcePATCH_ID patchId;
++    const char * symList[10];
++};
++
+ #if gcdHAS_ELLIPSES
+ #define gcmUSER_DEBUG_MSG(level, ...) \
+     do \
+diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_compiler.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_compiler.h
+index 8693c37..062224c 100644
+--- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_compiler.h
++++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_compiler.h
+@@ -39,12 +39,10 @@ extern "C" {
+ #define GC_ENABLE_LOADTIME_OPT           1
+ #endif
+ 
+-#define TEMP_OPT_CONSTANT_TEXLD_COORD    1
++#define TEMP_OPT_CONSTANT_TEXLD_COORD    0
+ 
+ #define TEMP_SHADER_PATCH                1
+ 
+-#define ADD_PRE_ROTATION_TO_VS           0
+-
+ #define TEMP_INLINE_ALL_EXPANSION            1
+ /******************************* IR VERSION ******************/
+ #define gcdSL_IR_VERSION gcmCC('\0','\0','\0','\1')
+@@ -271,6 +269,7 @@ typedef enum _gcSL_OPCODE
+ 	gcSL_ADDSAT,						/* 0x5C */  /* Integer only. */
+ 	gcSL_SUBSAT,						/* 0x5D */  /* Integer only. */
+ 	gcSL_MULSAT,						/* 0x5E */  /* Integer only. */
++	gcSL_DP2,							/* 0x5F */
+ 	gcSL_MAXOPCODE
+ }
+ gcSL_OPCODE;
+@@ -474,6 +473,9 @@ struct _gcsHINT
+ 
+     gctBOOL     clipW;
+ 
++    /* Flag whether or not the shader has a KILL instruction. */
++    gctBOOL     hasKill;
++
+     /* Element count. */
+     gctUINT32   elementCount;
+ 
+@@ -495,12 +497,18 @@ struct _gcsHINT
+     /* Balance maximum. */
+     gctUINT32   balanceMax;
+ 
++    /* Auto-shift balancing. */
++    gctBOOL     autoShift;
++
+     /* Flag whether the PS outputs the depth value or not. */
+     gctBOOL     psHasFragDepthOut;
+ 
+ 	/* Flag whether the ThreadWalker is in PS. */
+ 	gctBOOL		threadWalkerInPS;
+ 
++    /* HW reg number for position of VS */
++    gctUINT32   hwRegNoOfSIVPos;
++
+ #if gcdALPHA_KILL_IN_SHADER
+     /* States to set when alpha kill is enabled. */
+     gctUINT32   killStateAddress;
+@@ -687,12 +695,12 @@ typedef enum _gceSHADER_FLAGS
+     gcvSHADER_USE_ALPHA_KILL            = 0x100,
+ #endif
+ 
+-#if ADD_PRE_ROTATION_TO_VS
++#if gcdPRE_ROTATION && (ANDROID_SDK_VERSION >= 14)
+     gcvSHADER_VS_PRE_ROTATION           = 0x200,
+ #endif
+ 
+ #if TEMP_INLINE_ALL_EXPANSION
+-    gcvSHADER_INLINE_ALL_EXPANSION      = 0x200,
++    gcvSHADER_INLINE_ALL_EXPANSION      = 0x400,
+ #endif
+ }
+ gceSHADER_FLAGS;
+@@ -827,6 +835,7 @@ typedef struct _gcOPTIMIZER_OPTION
+     gctBOOL     dumpOptimizerVerbose;  /* dump result IR in each optimization phase */
+     gctBOOL     dumpBEGenertedCode;    /* dump generated machine code */
+     gctBOOL     dumpBEVerbose;         /* dump BE tree and optimization detail */
++    gctBOOL     dumpBEFinalIR;         /* dump BE final IR */
+ 
+     /* Code generation */
+ 
+@@ -945,6 +954,8 @@ extern gcOPTIMIZER_OPTION theOptimizerOption;
+               gcmOPT_DUMP_CODEGEN_VERBOSE() )
+ #define gcmOPT_DUMP_CODEGEN_VERBOSE()    \
+              (gcmGetOptimizerOption()->dumpBEVerbose != 0)
++#define gcmOPT_DUMP_FINAL_IR()    \
++             (gcmGetOptimizerOption()->dumpBEFinalIR != 0)
+ 
+ #define gcmOPT_SET_DUMP_SHADER_SRC(v)   \
+              gcmGetOptimizerOption()->dumpShaderSource = (v)
+@@ -1064,6 +1075,13 @@ typedef struct _gcNPOT_PATCH_PARAM
+     gctINT               texDimension;    /* 2 or 3 */
+ }gcNPOT_PATCH_PARAM, *gcNPOT_PATCH_PARAM_PTR;
+ 
++typedef struct _gcZBIAS_PATCH_PARAM
++{
++    /* Driver uses this to program uniform that designating zbias */
++    gctINT               uniformAddr;
++    gctINT               channel;
++}gcZBIAS_PATCH_PARAM, *gcZBIAS_PATCH_PARAM_PTR;
++
+ void
+ gcGetOptionFromEnv(
+     IN OUT gcOPTIMIZER_OPTION * Option
+@@ -1556,6 +1574,43 @@ gcSHADER_AddUniform(
+ 	OUT gcUNIFORM * Uniform
+ 	);
+ 
++/*******************************************************************************
++**							   gcSHADER_AddPreRotationUniform
++********************************************************************************
++**
++**	Add an uniform to a gcSHADER object.
++**
++**	INPUT:
++**
++**		gcSHADER Shader
++**			Pointer to a gcSHADER object.
++**
++**		gctCONST_STRING Name
++**			Name of the uniform to add.
++**
++**		gcSHADER_TYPE Type
++**			Type of the uniform to add.
++**
++**		gctSIZE_T Length
++**			Array length of the uniform to add.  'Length' must be at least 1.
++**
++**		gctINT col
++**			Which uniform.
++**
++**	OUTPUT:
++**
++**		gcUNIFORM * Uniform
++**			Pointer to a variable receiving the gcUNIFORM object pointer.
++*/
++gceSTATUS
++gcSHADER_AddPreRotationUniform(
++	IN gcSHADER Shader,
++	IN gctCONST_STRING Name,
++	IN gcSHADER_TYPE Type,
++	IN gctSIZE_T Length,
++    IN gctINT col,
++	OUT gcUNIFORM * Uniform
++	);
+ 
+ /*******************************************************************************
+ **							   gcSHADER_AddUniformEx
+@@ -1677,6 +1732,28 @@ gcSHADER_GetUniformCount(
+ 	);
+ 
+ /*******************************************************************************
++**                         gcSHADER_GetPreRotationUniform
++********************************************************************************
++**
++**	Get the preRotate Uniform.
++**
++**	INPUT:
++**
++**		gcSHADER Shader
++**			Pointer to a gcSHADER object.
++**
++**	OUTPUT:
++**
++**		gcUNIFORM ** pUniform
++**			Pointer to a preRotation uniforms array.
++*/
++gceSTATUS
++gcSHADER_GetPreRotationUniform(
++	IN gcSHADER Shader,
++	OUT gcUNIFORM ** pUniform
++	);
++
++/*******************************************************************************
+ **                             gcSHADER_GetUniform
+ ********************************************************************************
+ **
+@@ -3438,6 +3515,34 @@ gcUNIFORM_SetValueF(
+ 	);
+ 
+ /*******************************************************************************
++**  gcUNIFORM_ProgramF
++**
++**  Set the value of a uniform in floating point.
++**
++**  INPUT:
++**
++**      gctUINT32 Address
++**          Address of Uniform.
++**
++**      gctSIZE_T Row/Col
++**
++**      const gctFLOAT * Value
++**          Pointer to a buffer holding the floating point values for the
++**          uniform.
++**
++**  OUTPUT:
++**
++**      Nothing.
++*/
++gceSTATUS
++gcUNIFORM_ProgramF(
++    IN gctUINT32 Address,
++    IN gctSIZE_T Row,
++    IN gctSIZE_T Col,
++    IN const gctFLOAT * Value
++    );
++
++/*******************************************************************************
+ **						 gcUNIFORM_GetModelViewProjMatrix
+ ********************************************************************************
+ **
+@@ -3912,6 +4017,23 @@ gcRecompileShaders(
+     IN gctUINT32 *SamplerWrapS,
+     IN gctUINT32 *SamplerWrapT
+     );
++
++gceSTATUS
++gcRecompileDepthBias(
++    IN gcoHAL Hal,
++    IN gcMACHINECODE_PTR pVsMachineCode,
++    /*Recompile variables*/
++    IN OUT gctPOINTER *ppRecompileStateBuffer,
++    IN OUT gctSIZE_T *pRecompileStateBufferSize,
++    IN OUT gcsHINT_PTR *ppRecompileHints,
++    /* natvie state*/
++    IN gctPOINTER pNativeStateBuffer,
++    IN gctSIZE_T nativeStateBufferSize,
++    IN gcsHINT_PTR pNativeHints,
++	OUT gctINT * uniformAddr,
++	OUT gctINT * uniformChannel
++    );
++
+ /*******************************************************************************
+ **                                gcSaveProgram
+ ********************************************************************************
+@@ -4138,6 +4260,16 @@ gcSHADER_PatchNPOTForMachineCode(
+     IN OUT gcsHINT_PTR            pHints /* User needs copy original hints to this one, then passed this one in */
+     );
+ 
++gceSTATUS
++gcSHADER_PatchZBiasForMachineCodeVS(
++    IN     gcMACHINECODE_PTR       pMachineCode,
++    IN OUT gcZBIAS_PATCH_PARAM_PTR pPatchParam,
++    IN     gctUINT                 hwSupportedInstCount,
++    OUT    gctPOINTER*             ppCmdBuffer,
++    OUT    gctUINT32*              pByteSizeOfCmdBuffer,
++    IN OUT gcsHINT_PTR             pHints /* User needs copy original hints to this one, then passed this one in */
++    );
++
+ #ifdef __cplusplus
+ }
+ #endif
+diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_driver.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_driver.h
+index b056c52..fc8c395 100644
+--- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_driver.h
++++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_driver.h
+@@ -166,6 +166,12 @@ typedef enum _gceHAL_COMMAND_CODES
+ 
+     /* Reset time stamp. */
+     gcvHAL_QUERY_RESET_TIME_STAMP,
++
++    /* Sync point operations. */
++    gcvHAL_SYNC_POINT,
++
++    /* Create native fence and return its fd. */
++    gcvHAL_CREATE_NATIVE_FENCE,
+ }
+ gceHAL_COMMAND_CODES;
+ 
+@@ -723,6 +729,10 @@ typedef struct _gcsHAL_INTERFACE
+         /* gcvHAL_READ_ALL_PROFILE_REGISTERS */
+         struct _gcsHAL_READ_ALL_PROFILE_REGISTERS
+         {
++#if VIVANTE_PROFILER_CONTEXT
++            /* Context buffer object gckCONTEXT. Just a name. */
++            IN gctUINT32                context;
++#endif
+             /* Data read. */
+             OUT gcsPROFILER_COUNTERS    counters;
+         }
+@@ -978,6 +988,33 @@ typedef struct _gcsHAL_INTERFACE
+             OUT gctUINT64           timeStamp;
+         }
+         QueryResetTimeStamp;
++
++        struct _gcsHAL_SYNC_POINT
++        {
++            /* Command. */
++            gceSYNC_POINT_COMMAND_CODES command;
++
++            /* Sync point. */
++            IN OUT gctUINT64            syncPoint;
++
++            /* From where. */
++            IN gceKERNEL_WHERE          fromWhere;
++
++            /* Signaled state. */
++            OUT gctBOOL                 state;
++        }
++        SyncPoint;
++
++        struct _gcsHAL_CREATE_NATIVE_FENCE
++        {
++            /* Signal id to dup. */
++            IN gctUINT64                syncPoint;
++
++            /* Native fence file descriptor. */
++            OUT gctINT                  fenceFD;
++
++        }
++        CreateNativeFence;
+     }
+     u;
+ }
+diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_engine.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_engine.h
+index 8481375..3fb2fe4 100644
+--- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_engine.h
++++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_engine.h
+@@ -323,6 +323,15 @@ gcoSURF_Resolve(
+     IN gcoSURF DestSurface
+     );
+ 
++gceSTATUS
++gcoSURF_IsHWResolveable(
++    IN gcoSURF SrcSurface,
++    IN gcoSURF DestSurface,
++    IN gcsPOINT_PTR SrcOrigin,
++    IN gcsPOINT_PTR DestOrigin,
++    IN gcsPOINT_PTR RectSize
++    );
++
+ /* Resolve rectangular area of a surface. */
+ gceSTATUS
+ gcoSURF_ResolveRect(
+@@ -345,6 +354,11 @@ gcoSURF_IsRenderable(
+     IN gcoSURF Surface
+     );
+ 
++gceSTATUS
++gcoSURF_IsFormatRenderableAsRT(
++    IN gcoSURF Surface
++    );
++
+ #if gcdSYNC
+ gceSTATUS
+ gcoSURF_GetFence(
+@@ -1006,6 +1020,7 @@ typedef struct _gcsALPHA_INFO
+     gctBOOL                 test;
+     gceCOMPARE              compare;
+     gctUINT8                reference;
++    gctFLOAT                floatReference;
+ 
+     /* Alpha blending states. */
+     gctBOOL                 blend;
+@@ -1040,7 +1055,8 @@ gco3D_SetAlphaCompare(
+ gceSTATUS
+ gco3D_SetAlphaReference(
+     IN gco3D Engine,
+-    IN gctUINT8 Reference
++    IN gctUINT8 Reference,
++    IN gctFLOAT FloatReference
+     );
+ 
+ /* Set alpha test reference in fixed point. */
+@@ -1504,6 +1520,19 @@ gcoTEXTURE_UploadSub(
+     IN gceSURF_FORMAT Format
+     );
+ 
++/* Upload YUV data to an gcoTEXTURE object. */
++gceSTATUS
++gcoTEXTURE_UploadYUV(
++    IN gcoTEXTURE Texture,
++    IN gceTEXTURE_FACE Face,
++    IN gctUINT Width,
++    IN gctUINT Height,
++    IN gctUINT Slice,
++    IN gctPOINTER Memory[3],
++    IN gctINT Stride[3],
++    IN gceSURF_FORMAT Format
++    );
++
+ /* Upload compressed data to an gcoTEXTURE object. */
+ gceSTATUS
+ gcoTEXTURE_UploadCompressed(
+@@ -1621,6 +1650,13 @@ gcoTEXTURE_QueryCaps(
+     );
+ 
+ gceSTATUS
++gcoTEXTURE_GetTiling(
++    IN gcoTEXTURE Texture,
++    IN gctINT preferLevel,
++	OUT gceTILING * Tiling
++    );
++
++gceSTATUS
+ gcoTEXTURE_GetClosestFormat(
+     IN gcoHAL Hal,
+     IN gceSURF_FORMAT InFormat,
+@@ -2001,6 +2037,14 @@ gcoHAL_SetSharedInfo(
+     IN gctSIZE_T Bytes
+     );
+ 
++#if VIVANTE_PROFILER_CONTEXT
++gceSTATUS
++gcoHARDWARE_GetContext(
++    IN gcoHARDWARE Hardware,
++    OUT gctUINT32 * Context
++    );
++#endif
++
+ #ifdef __cplusplus
+ }
+ #endif
+diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_enum.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_enum.h
+index a1d9ae5..8e3c2f8 100644
+--- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_enum.h
++++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_enum.h
+@@ -146,10 +146,26 @@ typedef enum _gceFEATURE
+     gcvFEATURE_FRUSTUM_CLIP_FIX,
+     gcvFEATURE_TEXTURE_LINEAR,
+     gcvFEATURE_TEXTURE_YUV_ASSEMBLER,
++    gcvFEATURE_SHADER_HAS_INSTRUCTION_CACHE,
+     gcvFEATURE_DYNAMIC_FREQUENCY_SCALING,
+     gcvFEATURE_BUGFIX15,
++    gcvFEATURE_2D_GAMMA,
++    gcvFEATURE_2D_COLOR_SPACE_CONVERSION,
++    gcvFEATURE_2D_SUPER_TILE_VERSION,
+     gcvFEATURE_2D_MIRROR_EXTENSION,
++    gcvFEATURE_2D_SUPER_TILE_V1,
++    gcvFEATURE_2D_SUPER_TILE_V2,
++    gcvFEATURE_2D_SUPER_TILE_V3,
++    gcvFEATURE_2D_MULTI_SOURCE_BLT_EX2,
+     gcvFEATURE_ELEMENT_INDEX_UINT,
++    gcvFEATURE_2D_COMPRESSION,
++    gcvFEATURE_2D_OPF_YUV_OUTPUT,
++    gcvFEATURE_2D_MULTI_SRC_BLT_TO_UNIFIED_DST_RECT,
++    gcvFEATURE_2D_YUV_MODE,
++    gcvFEATURE_DECOMPRESS_Z16,
++	gcvFEATURE_LINEAR_RENDER_TARGET,
++    gcvFEATURE_BUG_FIXES8,
++    gcvFEATURE_HALTI2,
+ }
+ gceFEATURE;
+ 
+@@ -203,11 +219,14 @@ typedef enum _gceSURF_TYPE
+     gcvSURF_NO_VIDMEM      = 0x200, /* Used to allocate surfaces with no underlying vidmem node.
+                                        In Android, vidmem node is allocated by another process. */
+     gcvSURF_CACHEABLE      = 0x400, /* Used to allocate a cacheable surface */
+-#if gcdANDROID_UNALIGNED_LINEAR_COMPOSITION_ADJUST
+     gcvSURF_FLIP           = 0x800, /* The Resolve Target the will been flip resolve from RT */
+-#endif
+     gcvSURF_TILE_STATUS_DIRTY  = 0x1000, /* Init tile status to all dirty */
+ 
++    gcvSURF_LINEAR             = 0x2000,
++
++    gcvSURF_TEXTURE_LINEAR               = gcvSURF_TEXTURE
++                                         | gcvSURF_LINEAR,
++
+     gcvSURF_RENDER_TARGET_NO_TILE_STATUS = gcvSURF_RENDER_TARGET
+                                          | gcvSURF_NO_TILE_STATUS,
+ 
+@@ -217,6 +236,9 @@ typedef enum _gceSURF_TYPE
+     gcvSURF_DEPTH_NO_TILE_STATUS         = gcvSURF_DEPTH
+                                          | gcvSURF_NO_TILE_STATUS,
+ 
++    gcvSURF_DEPTH_TS_DIRTY               = gcvSURF_DEPTH
++                                         | gcvSURF_TILE_STATUS_DIRTY,
++
+     /* Supported surface types with no vidmem node. */
+     gcvSURF_BITMAP_NO_VIDMEM             = gcvSURF_BITMAP
+                                          | gcvSURF_NO_VIDMEM,
+@@ -231,10 +253,8 @@ typedef enum _gceSURF_TYPE
+     gcvSURF_CACHEABLE_BITMAP             = gcvSURF_BITMAP
+                                          | gcvSURF_CACHEABLE,
+ 
+-#if gcdANDROID_UNALIGNED_LINEAR_COMPOSITION_ADJUST
+     gcvSURF_FLIP_BITMAP                  = gcvSURF_BITMAP
+                                          | gcvSURF_FLIP,
+-#endif
+ }
+ gceSURF_TYPE;
+ 
+@@ -263,6 +283,9 @@ typedef enum _gceSURF_ROTATION
+     gcvSURF_270_DEGREE,
+     gcvSURF_FLIP_X,
+     gcvSURF_FLIP_Y,
++
++	gcvSURF_POST_FLIP_X = 0x40000000,
++    gcvSURF_POST_FLIP_Y = 0x80000000,
+ }
+ gceSURF_ROTATION;
+ 
+@@ -622,21 +645,16 @@ gce2D_PORTER_DUFF_RULE;
+ typedef enum _gce2D_YUV_COLOR_MODE
+ {
+     gcv2D_YUV_601= 0,
+-    gcv2D_YUV_709
+-}
+-gce2D_YUV_COLOR_MODE;
++    gcv2D_YUV_709,
++    gcv2D_YUV_USER_DEFINED,
++    gcv2D_YUV_USER_DEFINED_CLAMP,
+ 
+-/* 2D Rotation and flipping. */
+-typedef enum _gce2D_ORIENTATION
+-{
+-    gcv2D_0_DEGREE = 0,
+-    gcv2D_90_DEGREE,
+-    gcv2D_180_DEGREE,
+-    gcv2D_270_DEGREE,
+-    gcv2D_X_FLIP,
+-    gcv2D_Y_FLIP
++    /* Default setting is for src. gcv2D_YUV_DST
++        can be ORed to set dst.
++    */
++    gcv2D_YUV_DST = 0x80000000,
+ }
+-gce2D_ORIENTATION;
++gce2D_YUV_COLOR_MODE;
+ 
+ typedef enum _gce2D_COMMAND
+ {
+@@ -656,21 +674,39 @@ typedef enum _gce2D_TILE_STATUS_CONFIG
+     gcv2D_TSC_ENABLE        = 0x00000001,
+     gcv2D_TSC_COMPRESSED    = 0x00000002,
+     gcv2D_TSC_DOWN_SAMPLER  = 0x00000004,
++    gcv2D_TSC_2D_COMPRESSED = 0x00000008,
+ }
+ gce2D_TILE_STATUS_CONFIG;
+ 
+ typedef enum _gce2D_QUERY
+ {
+-    gcv2D_QUERY_RGB_ADDRESS_MAX_ALIGN       = 0,
+-    gcv2D_QUERY_RGB_STRIDE_MAX_ALIGN,
+-    gcv2D_QUERY_YUV_ADDRESS_MAX_ALIGN,
+-    gcv2D_QUERY_YUV_STRIDE_MAX_ALIGN,
++    gcv2D_QUERY_RGB_ADDRESS_MIN_ALIGN       = 0,
++    gcv2D_QUERY_RGB_STRIDE_MIN_ALIGN,
++    gcv2D_QUERY_YUV_ADDRESS_MIN_ALIGN,
++    gcv2D_QUERY_YUV_STRIDE_MIN_ALIGN,
+ }
+ gce2D_QUERY;
+ 
++typedef enum _gce2D_SUPER_TILE_VERSION
++{
++    gcv2D_SUPER_TILE_VERSION_V1       = 1,
++    gcv2D_SUPER_TILE_VERSION_V2       = 2,
++    gcv2D_SUPER_TILE_VERSION_V3       = 3,
++}
++gce2D_SUPER_TILE_VERSION;
++
+ typedef enum _gce2D_STATE
+ {
+     gcv2D_STATE_SPECIAL_FILTER_MIRROR_MODE       = 1,
++    gcv2D_STATE_SUPER_TILE_VERSION,
++    gcv2D_STATE_EN_GAMMA,
++    gcv2D_STATE_DE_GAMMA,
++    gcv2D_STATE_MULTI_SRC_BLIT_UNIFIED_DST_RECT,
++
++    gcv2D_STATE_ARRAY_EN_GAMMA                   = 0x10001,
++    gcv2D_STATE_ARRAY_DE_GAMMA,
++    gcv2D_STATE_ARRAY_CSC_YUV_TO_RGB,
++    gcv2D_STATE_ARRAY_CSC_RGB_TO_YUV,
+ }
+ gce2D_STATE;
+ 
+@@ -809,6 +845,15 @@ typedef enum _gceUSER_SIGNAL_COMMAND_CODES
+ }
+ gceUSER_SIGNAL_COMMAND_CODES;
+ 
++/* Sync point command codes. */
++typedef enum _gceSYNC_POINT_COMMAND_CODES
++{
++    gcvSYNC_POINT_CREATE,
++    gcvSYNC_POINT_DESTROY,
++    gcvSYNC_POINT_SIGNAL,
++}
++gceSYNC_POINT_COMMAND_CODES;
++
+ /* Event locations. */
+ typedef enum _gceKERNEL_WHERE
+ {
+@@ -848,6 +893,44 @@ typedef enum _gceDEBUG_MESSAGE_TYPE
+ }
+ gceDEBUG_MESSAGE_TYPE;
+ 
++typedef enum _gceSPECIAL_HINT
++{
++    gceSPECIAL_HINT0,
++    gceSPECIAL_HINT1,
++    gceSPECIAL_HINT2,
++    gceSPECIAL_HINT3,
++    /* For disable dynamic stream/index */
++    gceSPECIAL_HINT4
++}
++gceSPECIAL_HINT;
++
++typedef enum _gceMACHINECODE
++{
++    gcvMACHINECODE_HOVERJET0       = 0x0,
++    gcvMACHINECODE_HOVERJET1      ,
++
++    gcvMACHINECODE_TAIJI0         ,
++    gcvMACHINECODE_TAIJI1         ,
++    gcvMACHINECODE_TAIJI2         ,
++
++    gcvMACHINECODE_ANTUTU0        ,
++
++    gcvMACHINECODE_GLB27_RELEASE_0,
++    gcvMACHINECODE_GLB27_RELEASE_1,
++
++    gcvMACHINECODE_WAVESCAPE0     ,
++    gcvMACHINECODE_WAVESCAPE1     ,
++
++    gcvMACHINECODE_NENAMARKV2_4_0 ,
++    gcvMACHINECODE_NENAMARKV2_4_1 ,
++
++    gcvMACHINECODE_GLB25_RELEASE_0,
++    gcvMACHINECODE_GLB25_RELEASE_1,
++    gcvMACHINECODE_GLB25_RELEASE_2,
++}
++gceMACHINECODE;
++
++
+ /******************************************************************************\
+ ****************************** Object Declarations *****************************
+ \******************************************************************************/
+diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_options.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_options.h
+index 9e2a8db..b53b618 100644
+--- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_options.h
++++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_options.h
+@@ -46,7 +46,7 @@
+         This define enables the profiler.
+ */
+ #ifndef VIVANTE_PROFILER
+-#   define VIVANTE_PROFILER                     0
++#   define VIVANTE_PROFILER                     1
+ #endif
+ 
+ #ifndef VIVANTE_PROFILER_PERDRAW
+@@ -54,6 +54,15 @@
+ #endif
+ 
+ /*
++    VIVANTE_PROFILER_CONTEXT
++
++        This define enables the profiler according to each hw context.
++*/
++#ifndef VIVANTE_PROFILER_CONTEXT
++#   define VIVANTE_PROFILER_CONTEXT             1
++#endif
++
++/*
+     gcdUSE_VG
+ 
+         Enable VG HAL layer (only for GC350).
+@@ -729,7 +738,24 @@
+         Use linear buffer for GPU apps so HWC can do 2D composition.
+ */
+ #ifndef gcdGPU_LINEAR_BUFFER_ENABLED
+-#   define gcdGPU_LINEAR_BUFFER_ENABLED         0
++#   define gcdGPU_LINEAR_BUFFER_ENABLED         1
++#endif
++
++/*
++    gcdENABLE_RENDER_INTO_WINDOW
++
++        Enable Render-Into-Window (ie, No-Resolve) feature on android.
++        NOTE that even if enabled, it still depends on hardware feature and
++        android application behavior. When hardware feature or application
++        behavior can not support render into window mode, it will fail back
++        to normal mode.
++        When Render-Into-Window is finally used, window back buffer of android
++        applications will be allocated matching render target tiling format.
++        Otherwise buffer tiling is decided by the above option
++        'gcdGPU_LINEAR_BUFFER_ENABLED'.
++*/
++#ifndef gcdENABLE_RENDER_INTO_WINDOW
++#   define gcdENABLE_RENDER_INTO_WINDOW         1
+ #endif
+ 
+ /*
+@@ -758,7 +784,11 @@
+ #endif
+ 
+ #ifndef gcdANDROID_UNALIGNED_LINEAR_COMPOSITION_ADJUST
+-#   define  gcdANDROID_UNALIGNED_LINEAR_COMPOSITION_ADJUST    0
++#   ifdef ANDROID
++#      define  gcdANDROID_UNALIGNED_LINEAR_COMPOSITION_ADJUST    1
++#   else
++#      define  gcdANDROID_UNALIGNED_LINEAR_COMPOSITION_ADJUST    0
++#   endif
+ #endif
+ 
+ #ifndef gcdENABLE_PE_DITHER_FIX
+@@ -800,6 +830,10 @@
+ #   define gcdDISALBE_EARLY_EARLY_Z             1
+ #endif
+ 
++#ifndef gcdSHADER_SRC_BY_MACHINECODE
++#   define gcdSHADER_SRC_BY_MACHINECODE         1
++#endif
++
+ /*
+     gcdLINK_QUEUE_SIZE
+ 
+@@ -849,11 +883,20 @@
+ #define gcdUSE_NPOT_PATCH                       1
+ #endif
+ 
+-
+ #ifndef gcdSYNC
+ #   define gcdSYNC                              1
+ #endif
+ 
++#ifndef gcdENABLE_SPECIAL_HINT3
++#   define gcdENABLE_SPECIAL_HINT3               1
++#endif
++
++#if defined(ANDROID)
++#ifndef gcdPRE_ROTATION
++#   define gcdPRE_ROTATION                      1
++#endif
++#endif
++
+ /*
+     gcdDVFS
+ 
+@@ -866,4 +909,39 @@
+ #   define gcdDVFS_POLLING_TIME                  (gcdDVFS_ANAYLSE_WINDOW * 4)
+ #endif
+ 
++/*
++    gcdANDROID_NATIVE_FENCE_SYNC
++
++        Enable android native fence sync. It is introduced since jellybean-4.2.
++        Depends on linux kernel option: CONFIG_SYNC.
++
++        0: Disabled
++        1: Build framework for native fence sync feature, and EGL extension
++        2: Enable async swap buffers for client
++           * Native fence sync for client 'queueBuffer' in EGL, which is
++             'acquireFenceFd' for layer in compositor side.
++        3. Enable async hwcomposer composition.
++           * 'releaseFenceFd' for layer in compositor side, which is native
++             fence sync when client 'dequeueBuffer'
++           * Native fence sync for compositor 'queueBuffer' in EGL, which is
++             'acquireFenceFd' for framebuffer target for DC
++ */
++#ifndef gcdANDROID_NATIVE_FENCE_SYNC
++#   define gcdANDROID_NATIVE_FENCE_SYNC        0
++#endif
++
++#ifndef gcdFORCE_MIPMAP
++#   define gcdFORCE_MIPMAP                     0
++#endif
++
++/*
++    gcdFORCE_GAL_LOAD_TWICE
++
++        When non-zero, each thread except the main one will load libGAL.so twice to avoid potential segmetantion fault when app using dlopen/dlclose.
++        If threads exit arbitrarily, libGAL.so may not unload until the process quit.
++ */
++#ifndef gcdFORCE_GAL_LOAD_TWICE
++#   define gcdFORCE_GAL_LOAD_TWICE             0
++#endif
++
+ #endif /* __gc_hal_options_h_ */
+diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_profiler.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_profiler.h
+index 3e450ba..aed73aa 100644
+--- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_profiler.h
++++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_profiler.h
+@@ -45,509 +45,115 @@ extern "C" {
+ #define gcdNEW_PROFILER_FILE    1
+ #endif
+ 
+-/* OpenGL ES11 API IDs. */
+-#define	ES11_ACTIVETEXTURE				1
+-#define	ES11_ALPHAFUNC					(ES11_ACTIVETEXTURE				+ 1)
+-#define	ES11_ALPHAFUNCX					(ES11_ALPHAFUNC					+ 1)
+-#define	ES11_BINDBUFFER					(ES11_ALPHAFUNCX 				+ 1)
+-#define	ES11_BINDTEXTURE				(ES11_BINDBUFFER 				+ 1)
+-#define	ES11_BLENDFUNC					(ES11_BINDTEXTURE				+ 1)
+-#define	ES11_BUFFERDATA					(ES11_BLENDFUNC					+ 1)
+-#define	ES11_BUFFERSUBDATA				(ES11_BUFFERDATA				+ 1)
+-#define	ES11_CLEAR						(ES11_BUFFERSUBDATA				+ 1)
+-#define	ES11_CLEARCOLOR					(ES11_CLEAR						+ 1)
+-#define	ES11_CLEARCOLORX				(ES11_CLEARCOLOR				+ 1)
+-#define	ES11_CLEARDEPTHF				(ES11_CLEARCOLORX 				+ 1)
+-#define	ES11_CLEARDEPTHX				(ES11_CLEARDEPTHF 				+ 1)
+-#define	ES11_CLEARSTENCIL				(ES11_CLEARDEPTHX 				+ 1)
+-#define	ES11_CLIENTACTIVETEXTURE    	(ES11_CLEARSTENCIL				+ 1)
+-#define	ES11_CLIPPLANEF      			(ES11_CLIENTACTIVETEXTURE		+ 1)
+-#define	ES11_CLIPPLANEX      			(ES11_CLIPPLANEF       			+ 1)
+-#define	ES11_COLOR4F 					(ES11_CLIPPLANEX       			+ 1)
+-#define	ES11_COLOR4UB        			(ES11_COLOR4F					+ 1)
+-#define	ES11_COLOR4X 					(ES11_COLOR4UB					+ 1)
+-#define	ES11_COLORMASK       			(ES11_COLOR4X					+ 1)
+-#define	ES11_COLORPOINTER    			(ES11_COLORMASK        			+ 1)
+-#define	ES11_COMPRESSEDTEXIMAGE2D   	(ES11_COLORPOINTER     			+ 1)
+-#define	ES11_COMPRESSEDTEXSUBIMAGE2D	(ES11_COMPRESSEDTEXIMAGE2D    	+ 1)
+-#define	ES11_COPYTEXIMAGE2D  			(ES11_COMPRESSEDTEXSUBIMAGE2D 	+ 1)
+-#define	ES11_COPYTEXSUBIMAGE2D      	(ES11_COPYTEXIMAGE2D   			+ 1)
+-#define	ES11_CULLFACE        			(ES11_COPYTEXSUBIMAGE2D			+ 1)
+-#define	ES11_DELETEBUFFERS   			(ES11_CULLFACE         			+ 1)
+-#define	ES11_DELETETEXTURES  			(ES11_DELETEBUFFERS    			+ 1)
+-#define	ES11_DEPTHFUNC       			(ES11_DELETETEXTURES   			+ 1)
+-#define	ES11_DEPTHMASK       			(ES11_DEPTHFUNC        			+ 1)
+-#define	ES11_DEPTHRANGEF     			(ES11_DEPTHMASK        			+ 1)
+-#define	ES11_DEPTHRANGEX     			(ES11_DEPTHRANGEF      			+ 1)
+-#define	ES11_DISABLE 					(ES11_DEPTHRANGEX      			+ 1)
+-#define	ES11_DISABLECLIENTSTATE     	(ES11_DISABLE					+ 1)
+-#define	ES11_DRAWARRAYS      			(ES11_DISABLECLIENTSTATE		+ 1)
+-#define	ES11_DRAWELEMENTS    			(ES11_DRAWARRAYS       			+ 1)
+-#define	ES11_ENABLE  					(ES11_DRAWELEMENTS     			+ 1)
+-#define	ES11_ENABLECLIENTSTATE      	(ES11_ENABLE					+ 1)
+-#define	ES11_FINISH  					(ES11_ENABLECLIENTSTATE			+ 1)
+-#define	ES11_FLUSH   					(ES11_FINISH   					+ 1)
+-#define	ES11_FOGF    					(ES11_FLUSH    					+ 1)
+-#define	ES11_FOGFV   					(ES11_FOGF     					+ 1)
+-#define	ES11_FOGX    					(ES11_FOGFV    					+ 1)
+-#define	ES11_FOGXV   					(ES11_FOGX     					+ 1)
+-#define	ES11_FRONTFACE       			(ES11_FOGXV    					+ 1)
+-#define	ES11_FRUSTUMF        			(ES11_FRONTFACE        			+ 1)
+-#define	ES11_FRUSTUMX        			(ES11_FRUSTUMF         			+ 1)
+-#define	ES11_GENBUFFERS      			(ES11_FRUSTUMX         			+ 1)
+-#define	ES11_GENTEXTURES     			(ES11_GENBUFFERS       			+ 1)
+-#define	ES11_GETBOOLEANV     			(ES11_GENTEXTURES      			+ 1)
+-#define	ES11_GETBUFFERPARAMETERIV   	(ES11_GETBOOLEANV      			+ 1)
+-#define	ES11_GETCLIPPLANEF   			(ES11_GETBUFFERPARAMETERIV		+ 1)
+-#define	ES11_GETCLIPPLANEX   			(ES11_GETCLIPPLANEF    			+ 1)
+-#define	ES11_GETERROR        			(ES11_GETCLIPPLANEX    			+ 1)
+-#define	ES11_GETFIXEDV       			(ES11_GETERROR         			+ 1)
+-#define	ES11_GETFLOATV       			(ES11_GETFIXEDV        			+ 1)
+-#define	ES11_GETINTEGERV     			(ES11_GETFLOATV        			+ 1)
+-#define	ES11_GETLIGHTFV      			(ES11_GETINTEGERV      			+ 1)
+-#define	ES11_GETLIGHTXV      			(ES11_GETLIGHTFV       			+ 1)
+-#define	ES11_GETMATERIALFV   			(ES11_GETLIGHTXV       			+ 1)
+-#define	ES11_GETMATERIALXV   			(ES11_GETMATERIALFV    			+ 1)
+-#define	ES11_GETPOINTERV     			(ES11_GETMATERIALXV    			+ 1)
+-#define	ES11_GETSTRING       			(ES11_GETPOINTERV      			+ 1)
+-#define	ES11_GETTEXENVFV     			(ES11_GETSTRING        			+ 1)
+-#define	ES11_GETTEXENVIV     			(ES11_GETTEXENVFV      			+ 1)
+-#define	ES11_GETTEXENVXV     			(ES11_GETTEXENVIV      			+ 1)
+-#define	ES11_GETTEXPARAMETERFV      	(ES11_GETTEXENVXV      			+ 1)
+-#define	ES11_GETTEXPARAMETERIV      	(ES11_GETTEXPARAMETERFV       	+ 1)
+-#define	ES11_GETTEXPARAMETERXV      	(ES11_GETTEXPARAMETERIV       	+ 1)
+-#define	ES11_HINT    					(ES11_GETTEXPARAMETERXV       	+ 1)
+-#define	ES11_ISBUFFER        			(ES11_HINT     					+ 1)
+-#define	ES11_ISENABLED       			(ES11_ISBUFFER 			        + 1)
+-#define	ES11_ISTEXTURE       			(ES11_ISENABLED			        + 1)
+-#define	ES11_LIGHTF  					(ES11_ISTEXTURE			        + 1)
+-#define	ES11_LIGHTFV 					(ES11_LIGHTF   					+ 1)
+-#define	ES11_LIGHTMODELF     			(ES11_LIGHTFV  					+ 1)
+-#define	ES11_LIGHTMODELFV    			(ES11_LIGHTMODELF      			+ 1)
+-#define	ES11_LIGHTMODELX     			(ES11_LIGHTMODELFV     			+ 1)
+-#define	ES11_LIGHTMODELXV    			(ES11_LIGHTMODELX      			+ 1)
+-#define	ES11_LIGHTX  					(ES11_LIGHTMODELXV     			+ 1)
+-#define	ES11_LIGHTXV 					(ES11_LIGHTX   					+ 1)
+-#define	ES11_LINEWIDTH       			(ES11_LIGHTXV  					+ 1)
+-#define	ES11_LINEWIDTHX      			(ES11_LINEWIDTH        			+ 1)
+-#define	ES11_LOADIDENTITY    			(ES11_LINEWIDTHX       			+ 1)
+-#define	ES11_LOADMATRIXF     			(ES11_LOADIDENTITY     			+ 1)
+-#define	ES11_LOADMATRIXX     			(ES11_LOADMATRIXF      			+ 1)
+-#define	ES11_LOGICOP 					(ES11_LOADMATRIXX      			+ 1)
+-#define	ES11_MATERIALF       			(ES11_LOGICOP					+ 1)
+-#define	ES11_MATERIALFV      			(ES11_MATERIALF        			+ 1)
+-#define	ES11_MATERIALX       			(ES11_MATERIALFV       			+ 1)
+-#define	ES11_MATERIALXV      			(ES11_MATERIALX        			+ 1)
+-#define	ES11_MATRIXMODE      			(ES11_MATERIALXV       			+ 1)
+-#define	ES11_MULTITEXCOORD4F 			(ES11_MATRIXMODE       			+ 1)
+-#define	ES11_MULTITEXCOORD4X 			(ES11_MULTITEXCOORD4F  			+ 1)
+-#define	ES11_MULTMATRIXF     			(ES11_MULTITEXCOORD4X  			+ 1)
+-#define	ES11_MULTMATRIXX     			(ES11_MULTMATRIXF      			+ 1)
+-#define	ES11_NORMAL3F        			(ES11_MULTMATRIXX      			+ 1)
+-#define	ES11_NORMAL3X        			(ES11_NORMAL3F         			+ 1)
+-#define	ES11_NORMALPOINTER   			(ES11_NORMAL3X         			+ 1)
+-#define	ES11_ORTHOF  					(ES11_NORMALPOINTER    			+ 1)
+-#define	ES11_ORTHOX  					(ES11_ORTHOF   					+ 1)
+-#define	ES11_PIXELSTOREI     			(ES11_ORTHOX   					+ 1)
+-#define	ES11_POINTPARAMETERF 			(ES11_PIXELSTOREI      			+ 1)
+-#define	ES11_POINTPARAMETERFV    		(ES11_POINTPARAMETERF  			+ 1)
+-#define	ES11_POINTPARAMETERX 			(ES11_POINTPARAMETERFV 			+ 1)
+-#define	ES11_POINTPARAMETERXV    		(ES11_POINTPARAMETERX  			+ 1)
+-#define	ES11_POINTSIZE       			(ES11_POINTPARAMETERXV 			+ 1)
+-#define	ES11_POINTSIZEX      			(ES11_POINTSIZE        			+ 1)
+-#define	ES11_POLYGONOFFSET   			(ES11_POINTSIZEX       			+ 1)
+-#define	ES11_POLYGONOFFSETX  			(ES11_POLYGONOFFSET    			+ 1)
+-#define	ES11_POPMATRIX       			(ES11_POLYGONOFFSETX   			+ 1)
+-#define	ES11_PUSHMATRIX      			(ES11_POPMATRIX        			+ 1)
+-#define	ES11_READPIXELS      			(ES11_PUSHMATRIX       			+ 1)
+-#define	ES11_ROTATEF 					(ES11_READPIXELS       			+ 1)
+-#define	ES11_ROTATEX 					(ES11_ROTATEF  					+ 1)
+-#define	ES11_SAMPLECOVERAGE  			(ES11_ROTATEX  					+ 1)
+-#define	ES11_SAMPLECOVERAGEX 			(ES11_SAMPLECOVERAGE   			+ 1)
+-#define	ES11_SCALEF  					(ES11_SAMPLECOVERAGEX  			+ 1)
+-#define	ES11_SCALEX  					(ES11_SCALEF   					+ 1)
+-#define	ES11_SCISSOR 					(ES11_SCALEX   					+ 1)
+-#define	ES11_SHADEMODEL      			(ES11_SCISSOR  					+ 1)
+-#define	ES11_STENCILFUNC     			(ES11_SHADEMODEL       			+ 1)
+-#define	ES11_STENCILMASK     			(ES11_STENCILFUNC      			+ 1)
+-#define	ES11_STENCILOP       			(ES11_STENCILMASK      			+ 1)
+-#define	ES11_TEXCOORDPOINTER 			(ES11_STENCILOP        			+ 1)
+-#define	ES11_TEXENVF 					(ES11_TEXCOORDPOINTER  			+ 1)
+-#define	ES11_TEXENVFV     				(ES11_TEXENVF					+ 1)
+-#define	ES11_TEXENVI 					(ES11_TEXENVFV					+ 1)
+-#define	ES11_TEXENVIV     				(ES11_TEXENVI  					+ 1)
+-#define	ES11_TEXENVX 					(ES11_TEXENVIV 					+ 1)
+-#define	ES11_TEXENVXV        			(ES11_TEXENVX  					+ 1)
+-#define	ES11_TEXIMAGE2D      			(ES11_TEXENVXV         			+ 1)
+-#define	ES11_TEXPARAMETERF   			(ES11_TEXIMAGE2D       			+ 1)
+-#define	ES11_TEXPARAMETERFV  			(ES11_TEXPARAMETERF    			+ 1)
+-#define	ES11_TEXPARAMETERI   			(ES11_TEXPARAMETERFV   			+ 1)
+-#define	ES11_TEXPARAMETERIV  			(ES11_TEXPARAMETERI    			+ 1)
+-#define	ES11_TEXPARAMETERX   			(ES11_TEXPARAMETERIV   			+ 1)
+-#define	ES11_TEXPARAMETERXV  			(ES11_TEXPARAMETERX    			+ 1)
+-#define	ES11_TEXSUBIMAGE2D   			(ES11_TEXPARAMETERXV   			+ 1)
+-#define	ES11_TRANSLATEF      			(ES11_TEXSUBIMAGE2D    			+ 1)
+-#define	ES11_TRANSLATEX      			(ES11_TRANSLATEF       			+ 1)
+-#define	ES11_VERTEXPOINTER   			(ES11_TRANSLATEX       			+ 1)
+-#define	ES11_VIEWPORT        			(ES11_VERTEXPOINTER    			+ 1)
+-#define ES11_BLENDEQUATIONOES           (ES11_VIEWPORT         			+ 1)
+-#define ES11_BLENDFUNCSEPERATEOES       (ES11_BLENDEQUATIONOES       	+ 1)
+-#define ES11_BLENDEQUATIONSEPARATEOES   (ES11_BLENDFUNCSEPERATEOES    	+ 1)
+-#define ES11_GLMAPBUFFEROES             (ES11_BLENDEQUATIONSEPARATEOES 	+ 1)
+-#define ES11_GLUNMAPBUFFEROES           (ES11_GLMAPBUFFEROES     		+ 1)
+-#define ES11_GLGETBUFFERPOINTERVOES     (ES11_GLUNMAPBUFFEROES         	+ 1)
+-#define	ES11_CALLS   					(ES11_GLGETBUFFERPOINTERVOES   	+ 1)
+-#define	ES11_DRAWCALLS       			(ES11_CALLS						+ 1)
+-#define	ES11_STATECHANGECALLS    		(ES11_DRAWCALLS					+ 1)
+-#define	ES11_POINTCOUNT      			(ES11_STATECHANGECALLS			+ 1)
+-#define	ES11_LINECOUNT       			(ES11_POINTCOUNT       			+ 1)
+-#define	ES11_TRIANGLECOUNT   			(ES11_LINECOUNT        			+ 1)
+-
+-/* OpenGL ES2X API IDs. */
+-#define	ES20_ACTIVETEXTURE				1
+-#define	ES20_ATTACHSHADER							(ES20_ACTIVETEXTURE							+	1)
+-#define	ES20_BINDATTRIBLOCATION						(ES20_ATTACHSHADER							+	1)
+-#define	ES20_BINDBUFFER								(ES20_BINDATTRIBLOCATION					+	1)
+-#define	ES20_BINDFRAMEBUFFER						(ES20_BINDBUFFER							+	1)
+-#define	ES20_BINDRENDERBUFFER						(ES20_BINDFRAMEBUFFER						+	1)
+-#define	ES20_BINDTEXTURE							(ES20_BINDRENDERBUFFER						+	1)
+-#define	ES20_BLENDCOLOR								(ES20_BINDTEXTURE							+	1)
+-#define	ES20_BLENDEQUATION							(ES20_BLENDCOLOR							+	1)
+-#define	ES20_BLENDEQUATIONSEPARATE					(ES20_BLENDEQUATION							+	1)
+-#define	ES20_BLENDFUNC								(ES20_BLENDEQUATIONSEPARATE					+	1)
+-#define	ES20_BLENDFUNCSEPARATE						(ES20_BLENDFUNC								+	1)
+-#define	ES20_BUFFERDATA								(ES20_BLENDFUNCSEPARATE						+	1)
+-#define	ES20_BUFFERSUBDATA							(ES20_BUFFERDATA							+	1)
+-#define	ES20_CHECKFRAMEBUFFERSTATUS					(ES20_BUFFERSUBDATA							+	1)
+-#define	ES20_CLEAR									(ES20_CHECKFRAMEBUFFERSTATUS				+	1)
+-#define	ES20_CLEARCOLOR								(ES20_CLEAR									+	1)
+-#define	ES20_CLEARDEPTHF							(ES20_CLEARCOLOR							+	1)
+-#define	ES20_CLEARSTENCIL							(ES20_CLEARDEPTHF							+	1)
+-#define	ES20_COLORMASK								(ES20_CLEARSTENCIL							+	1)
+-#define	ES20_COMPILESHADER							(ES20_COLORMASK								+	1)
+-#define	ES20_COMPRESSEDTEXIMAGE2D					(ES20_COMPILESHADER							+	1)
+-#define	ES20_COMPRESSEDTEXSUBIMAGE2D				(ES20_COMPRESSEDTEXIMAGE2D					+	1)
+-#define	ES20_COPYTEXIMAGE2D							(ES20_COMPRESSEDTEXSUBIMAGE2D				+	1)
+-#define	ES20_COPYTEXSUBIMAGE2D						(ES20_COPYTEXIMAGE2D						+	1)
+-#define	ES20_CREATEPROGRAM							(ES20_COPYTEXSUBIMAGE2D						+	1)
+-#define	ES20_CREATESHADER							(ES20_CREATEPROGRAM							+	1)
+-#define	ES20_CULLFACE								(ES20_CREATESHADER							+	1)
+-#define	ES20_DELETEBUFFERS							(ES20_CULLFACE								+	1)
+-#define	ES20_DELETEFRAMEBUFFERS						(ES20_DELETEBUFFERS							+	1)
+-#define	ES20_DELETEPROGRAM							(ES20_DELETEFRAMEBUFFERS					+	1)
+-#define	ES20_DELETERENDERBUFFERS					(ES20_DELETEPROGRAM							+	1)
+-#define	ES20_DELETESHADER							(ES20_DELETERENDERBUFFERS					+	1)
+-#define	ES20_DELETETEXTURES							(ES20_DELETESHADER							+	1)
+-#define	ES20_DEPTHFUNC								(ES20_DELETETEXTURES						+	1)
+-#define	ES20_DEPTHMASK								(ES20_DEPTHFUNC								+	1)
+-#define	ES20_DEPTHRANGEF							(ES20_DEPTHMASK								+	1)
+-#define	ES20_DETACHSHADER							(ES20_DEPTHRANGEF							+	1)
+-#define	ES20_DISABLE								(ES20_DETACHSHADER							+	1)
+-#define	ES20_DISABLEVERTEXATTRIBARRAY				(ES20_DISABLE								+	1)
+-#define	ES20_DRAWARRAYS								(ES20_DISABLEVERTEXATTRIBARRAY				+	1)
+-#define	ES20_DRAWELEMENTS							(ES20_DRAWARRAYS							+	1)
+-#define	ES20_ENABLE									(ES20_DRAWELEMENTS							+	1)
+-#define	ES20_ENABLEVERTEXATTRIBARRAY				(ES20_ENABLE								+	1)
+-#define	ES20_FINISH									(ES20_ENABLEVERTEXATTRIBARRAY				+	1)
+-#define	ES20_FLUSH									(ES20_FINISH								+	1)
+-#define	ES20_FRAMEBUFFERRENDERBUFFER				(ES20_FLUSH									+	1)
+-#define	ES20_FRAMEBUFFERTEXTURE2D					(ES20_FRAMEBUFFERRENDERBUFFER				+	1)
+-#define	ES20_FRONTFACE								(ES20_FRAMEBUFFERTEXTURE2D					+	1)
+-#define	ES20_GENBUFFERS								(ES20_FRONTFACE								+	1)
+-#define	ES20_GENERATEMIPMAP							(ES20_GENBUFFERS							+	1)
+-#define	ES20_GENFRAMEBUFFERS						(ES20_GENERATEMIPMAP						+	1)
+-#define	ES20_GENRENDERBUFFERS						(ES20_GENFRAMEBUFFERS						+	1)
+-#define	ES20_GENTEXTURES							(ES20_GENRENDERBUFFERS						+	1)
+-#define	ES20_GETACTIVEATTRIB						(ES20_GENTEXTURES							+	1)
+-#define	ES20_GETACTIVEUNIFORM						(ES20_GETACTIVEATTRIB						+	1)
+-#define	ES20_GETATTACHEDSHADERS						(ES20_GETACTIVEUNIFORM						+	1)
+-#define	ES20_GETATTRIBLOCATION						(ES20_GETATTACHEDSHADERS					+	1)
+-#define	ES20_GETBOOLEANV							(ES20_GETATTRIBLOCATION						+	1)
+-#define	ES20_GETBUFFERPARAMETERIV					(ES20_GETBOOLEANV							+	1)
+-#define	ES20_GETERROR								(ES20_GETBUFFERPARAMETERIV					+	1)
+-#define	ES20_GETFLOATV								(ES20_GETERROR								+	1)
+-#define	ES20_GETFRAMEBUFFERATTACHMENTPARAMETERIV	(ES20_GETFLOATV								+	1)
+-#define	ES20_GETINTEGERV							(ES20_GETFRAMEBUFFERATTACHMENTPARAMETERIV	+	1)
+-#define	ES20_GETPROGRAMIV							(ES20_GETINTEGERV							+	1)
+-#define	ES20_GETPROGRAMINFOLOG						(ES20_GETPROGRAMIV							+	1)
+-#define	ES20_GETRENDERBUFFERPARAMETERIV				(ES20_GETPROGRAMINFOLOG						+	1)
+-#define	ES20_GETSHADERIV							(ES20_GETRENDERBUFFERPARAMETERIV			+	1)
+-#define	ES20_GETSHADERINFOLOG						(ES20_GETSHADERIV							+	1)
+-#define	ES20_GETSHADERPRECISIONFORMAT				(ES20_GETSHADERINFOLOG						+	1)
+-#define	ES20_GETSHADERSOURCE						(ES20_GETSHADERPRECISIONFORMAT				+	1)
+-#define	ES20_GETSTRING								(ES20_GETSHADERSOURCE						+	1)
+-#define	ES20_GETTEXPARAMETERFV						(ES20_GETSTRING								+	1)
+-#define	ES20_GETTEXPARAMETERIV						(ES20_GETTEXPARAMETERFV						+	1)
+-#define	ES20_GETUNIFORMFV							(ES20_GETTEXPARAMETERIV						+	1)
+-#define	ES20_GETUNIFORMIV							(ES20_GETUNIFORMFV							+	1)
+-#define	ES20_GETUNIFORMLOCATION						(ES20_GETUNIFORMIV							+	1)
+-#define	ES20_GETVERTEXATTRIBFV						(ES20_GETUNIFORMLOCATION					+	1)
+-#define	ES20_GETVERTEXATTRIBIV						(ES20_GETVERTEXATTRIBFV						+	1)
+-#define	ES20_GETVERTEXATTRIBPOINTERV				(ES20_GETVERTEXATTRIBIV						+	1)
+-#define	ES20_HINT									(ES20_GETVERTEXATTRIBPOINTERV				+	1)
+-#define	ES20_ISBUFFER								(ES20_HINT									+	1)
+-#define	ES20_ISENABLED								(ES20_ISBUFFER								+	1)
+-#define	ES20_ISFRAMEBUFFER							(ES20_ISENABLED								+	1)
+-#define	ES20_ISPROGRAM								(ES20_ISFRAMEBUFFER							+	1)
+-#define	ES20_ISRENDERBUFFER							(ES20_ISPROGRAM								+	1)
+-#define	ES20_ISSHADER								(ES20_ISRENDERBUFFER						+	1)
+-#define	ES20_ISTEXTURE								(ES20_ISSHADER								+	1)
+-#define	ES20_LINEWIDTH								(ES20_ISTEXTURE								+	1)
+-#define	ES20_LINKPROGRAM							(ES20_LINEWIDTH								+	1)
+-#define	ES20_PIXELSTOREI							(ES20_LINKPROGRAM							+	1)
+-#define	ES20_POLYGONOFFSET							(ES20_PIXELSTOREI							+	1)
+-#define	ES20_READPIXELS								(ES20_POLYGONOFFSET							+	1)
+-#define	ES20_RELEASESHADERCOMPILER					(ES20_READPIXELS							+	1)
+-#define	ES20_RENDERBUFFERSTORAGE					(ES20_RELEASESHADERCOMPILER					+	1)
+-#define	ES20_SAMPLECOVERAGE							(ES20_RENDERBUFFERSTORAGE					+	1)
+-#define	ES20_SCISSOR								(ES20_SAMPLECOVERAGE						+	1)
+-#define	ES20_SHADERBINARY							(ES20_SCISSOR								+	1)
+-#define	ES20_SHADERSOURCE							(ES20_SHADERBINARY							+	1)
+-#define	ES20_STENCILFUNC							(ES20_SHADERSOURCE							+	1)
+-#define	ES20_STENCILFUNCSEPARATE					(ES20_STENCILFUNC							+	1)
+-#define	ES20_STENCILMASK							(ES20_STENCILFUNCSEPARATE					+	1)
+-#define	ES20_STENCILMASKSEPARATE					(ES20_STENCILMASK							+	1)
+-#define	ES20_STENCILOP								(ES20_STENCILMASKSEPARATE					+	1)
+-#define	ES20_STENCILOPSEPARATE						(ES20_STENCILOP								+	1)
+-#define	ES20_TEXIMAGE2D								(ES20_STENCILOPSEPARATE						+	1)
+-#define	ES20_TEXPARAMETERF							(ES20_TEXIMAGE2D							+	1)
+-#define	ES20_TEXPARAMETERFV							(ES20_TEXPARAMETERF							+	1)
+-#define	ES20_TEXPARAMETERI							(ES20_TEXPARAMETERFV						+	1)
+-#define	ES20_TEXPARAMETERIV							(ES20_TEXPARAMETERI							+	1)
+-#define	ES20_TEXSUBIMAGE2D							(ES20_TEXPARAMETERIV						+	1)
+-#define	ES20_UNIFORM1F								(ES20_TEXSUBIMAGE2D							+	1)
+-#define	ES20_UNIFORM1FV								(ES20_UNIFORM1F								+	1)
+-#define	ES20_UNIFORM1I								(ES20_UNIFORM1FV							+	1)
+-#define	ES20_UNIFORM1IV								(ES20_UNIFORM1I								+	1)
+-#define	ES20_UNIFORM2F								(ES20_UNIFORM1IV							+	1)
+-#define	ES20_UNIFORM2FV								(ES20_UNIFORM2F								+	1)
+-#define	ES20_UNIFORM2I								(ES20_UNIFORM2FV							+	1)
+-#define	ES20_UNIFORM2IV								(ES20_UNIFORM2I								+	1)
+-#define	ES20_UNIFORM3F								(ES20_UNIFORM2IV							+	1)
+-#define	ES20_UNIFORM3FV								(ES20_UNIFORM3F								+	1)
+-#define	ES20_UNIFORM3I								(ES20_UNIFORM3FV							+	1)
+-#define	ES20_UNIFORM3IV								(ES20_UNIFORM3I								+	1)
+-#define	ES20_UNIFORM4F								(ES20_UNIFORM3IV							+	1)
+-#define	ES20_UNIFORM4FV								(ES20_UNIFORM4F								+	1)
+-#define	ES20_UNIFORM4I								(ES20_UNIFORM4FV							+	1)
+-#define	ES20_UNIFORM4IV								(ES20_UNIFORM4I								+	1)
+-#define	ES20_UNIFORMMATRIX2FV						(ES20_UNIFORM4IV							+	1)
+-#define	ES20_UNIFORMMATRIX3FV						(ES20_UNIFORMMATRIX2FV						+	1)
+-#define	ES20_UNIFORMMATRIX4FV						(ES20_UNIFORMMATRIX3FV						+	1)
+-#define	ES20_USEPROGRAM								(ES20_UNIFORMMATRIX4FV						+	1)
+-#define	ES20_VALIDATEPROGRAM						(ES20_USEPROGRAM							+	1)
+-#define	ES20_VERTEXATTRIB1F							(ES20_VALIDATEPROGRAM						+	1)
+-#define	ES20_VERTEXATTRIB1FV						(ES20_VERTEXATTRIB1F						+	1)
+-#define	ES20_VERTEXATTRIB2F							(ES20_VERTEXATTRIB1FV						+	1)
+-#define	ES20_VERTEXATTRIB2FV						(ES20_VERTEXATTRIB2F						+	1)
+-#define	ES20_VERTEXATTRIB3F							(ES20_VERTEXATTRIB2FV						+	1)
+-#define	ES20_VERTEXATTRIB3FV						(ES20_VERTEXATTRIB3F						+	1)
+-#define	ES20_VERTEXATTRIB4F							(ES20_VERTEXATTRIB3FV						+	1)
+-#define	ES20_VERTEXATTRIB4FV						(ES20_VERTEXATTRIB4F						+	1)
+-#define	ES20_VERTEXATTRIBPOINTER					(ES20_VERTEXATTRIB4FV						+	1)
+-#define	ES20_VIEWPORT								(ES20_VERTEXATTRIBPOINTER					+	1)
+-#define ES20_GETPROGRAMBINARYOES                    (ES20_VIEWPORT                              +   1)
+-#define ES20_PROGRAMBINARYOES                       (ES20_GETPROGRAMBINARYOES                   +   1)
+-#define ES20_TEXIMAGE3DOES                          (ES20_PROGRAMBINARYOES                      +   1)
+-#define ES20_TEXSUBIMAGE3DOES                       (ES20_TEXIMAGE3DOES                         +   1)
+-#define ES20_COPYSUBIMAGE3DOES                      (ES20_TEXSUBIMAGE3DOES                      +   1)
+-#define ES20_COMPRESSEDTEXIMAGE3DOES                (ES20_COPYSUBIMAGE3DOES                     +   1)
+-#define ES20_COMPRESSEDTEXSUBIMAGE3DOES             (ES20_COMPRESSEDTEXIMAGE3DOES               +   1)
+-#define ES20_FRAMEBUFFERTEXTURE3DOES                (ES20_COMPRESSEDTEXSUBIMAGE3DOES            +   1)
+-#define ES20_BINDVERTEXARRAYOES                     (ES20_FRAMEBUFFERTEXTURE3DOES               +   1)
+-#define ES20_GENVERTEXARRAYOES                      (ES20_BINDVERTEXARRAYOES                    +   1)
+-#define ES20_ISVERTEXARRAYOES                       (ES20_GENVERTEXARRAYOES                     +   1)
+-#define ES20_DELETEVERTEXARRAYOES                   (ES20_ISVERTEXARRAYOES                      +   1)
+-#define ES20_GLMAPBUFFEROES                         (ES20_DELETEVERTEXARRAYOES                  +   1)
+-#define ES20_GLUNMAPBUFFEROES                       (ES20_GLMAPBUFFEROES                        +   1)
+-#define ES20_GLGETBUFFERPOINTERVOES                 (ES20_GLUNMAPBUFFEROES                      +   1)
+-#define ES20_DISCARDFRAMEBUFFEREXT                  (ES20_GLGETBUFFERPOINTERVOES				+	1)
+-#define	ES20_CALLS									(ES20_DISCARDFRAMEBUFFEREXT 				+	1)
+-#define	ES20_DRAWCALLS								(ES20_CALLS									+	1)
+-#define	ES20_STATECHANGECALLS						(ES20_DRAWCALLS								+	1)
+-#define	ES20_POINTCOUNT								(ES20_STATECHANGECALLS						+	1)
+-#define	ES20_LINECOUNT								(ES20_POINTCOUNT							+	1)
+-#define	ES20_TRIANGLECOUNT							(ES20_LINECOUNT								+	1)
+-
+-/* OpenVG API IDs. */
+-#define	VG11_APPENDPATH			     1
+-#define	VG11_APPENDPATHDATA			(VG11_APPENDPATH				+ 1)
+-#define	VG11_CHILDIMAGE				(VG11_APPENDPATHDATA			+ 1)
+-#define	VG11_CLEAR					(VG11_CHILDIMAGE				+ 1)
+-#define	VG11_CLEARGLYPH				(VG11_CLEAR						+ 1)
+-#define	VG11_CLEARIMAGE				(VG11_CLEARGLYPH				+ 1)
+-#define	VG11_CLEARPATH				(VG11_CLEARIMAGE				+ 1)
+-#define	VG11_COLORMATRIX			(VG11_CLEARPATH					+ 1)
+-#define	VG11_CONVOLVE				(VG11_COLORMATRIX				+ 1)
+-#define	VG11_COPYIMAGE				(VG11_CONVOLVE					+ 1)
+-#define	VG11_COPYMASK				(VG11_COPYIMAGE					+ 1)
+-#define	VG11_COPYPIXELS				(VG11_COPYMASK					+ 1)
+-#define	VG11_CREATEFONT				(VG11_COPYPIXELS				+ 1)
+-#define	VG11_CREATEIMAGE			(VG11_CREATEFONT				+ 1)
+-#define	VG11_CREATEMASKLAYER		(VG11_CREATEIMAGE				+ 1)
+-#define	VG11_CREATEPAINT			(VG11_CREATEMASKLAYER			+ 1)
+-#define	VG11_CREATEPATH				(VG11_CREATEPAINT				+ 1)
+-#define	VG11_DESTROYFONT			(VG11_CREATEPATH				+ 1)
+-#define	VG11_DESTROYIMAGE			(VG11_DESTROYFONT				+ 1)
+-#define	VG11_DESTROYMASKLAYER		(VG11_DESTROYIMAGE				+ 1)
+-#define	VG11_DESTROYPAINT			(VG11_DESTROYMASKLAYER			+ 1)
+-#define	VG11_DESTROYPATH			(VG11_DESTROYPAINT				+ 1)
+-#define	VG11_DRAWGLYPH				(VG11_DESTROYPATH				+ 1)
+-#define	VG11_DRAWGLYPHS				(VG11_DRAWGLYPH					+ 1)
+-#define	VG11_DRAWIMAGE				(VG11_DRAWGLYPHS				+ 1)
+-#define	VG11_DRAWPATH				(VG11_DRAWIMAGE					+ 1)
+-#define	VG11_FILLMASKLAYER			(VG11_DRAWPATH					+ 1)
+-#define	VG11_FINISH					(VG11_FILLMASKLAYER				+ 1)
+-#define	VG11_FLUSH					(VG11_FINISH					+ 1)
+-#define	VG11_GAUSSIANBLUR			(VG11_FLUSH						+ 1)
+-#define	VG11_GETCOLOR				(VG11_GAUSSIANBLUR				+ 1)
+-#define	VG11_GETERROR				(VG11_GETCOLOR					+ 1)
+-#define	VG11_GETF					(VG11_GETERROR					+ 1)
+-#define	VG11_GETFV					(VG11_GETF						+ 1)
+-#define	VG11_GETI					(VG11_GETFV						+ 1)
+-#define	VG11_GETIMAGESUBDATA		(VG11_GETI						+ 1)
+-#define	VG11_GETIV					(VG11_GETIMAGESUBDATA			+ 1)
+-#define	VG11_GETMATRIX				(VG11_GETIV						+ 1)
+-#define	VG11_GETPAINT				(VG11_GETMATRIX					+ 1)
+-#define	VG11_GETPARAMETERF			(VG11_GETPAINT					+ 1)
+-#define	VG11_GETPARAMETERFV			(VG11_GETPARAMETERF				+ 1)
+-#define	VG11_GETPARAMETERI			(VG11_GETPARAMETERFV			+ 1)
+-#define	VG11_GETPARAMETERIV			(VG11_GETPARAMETERI				+ 1)
+-#define	VG11_GETPARAMETERVECTORSIZE	(VG11_GETPARAMETERIV			+ 1)
+-#define	VG11_GETPARENT				(VG11_GETPARAMETERVECTORSIZE	+ 1)
+-#define	VG11_GETPATHCAPABILITIES	(VG11_GETPARENT					+ 1)
+-#define	VG11_GETPIXELS				(VG11_GETPATHCAPABILITIES		+ 1)
+-#define	VG11_GETSTRING				(VG11_GETPIXELS					+ 1)
+-#define	VG11_GETVECTORSIZE			(VG11_GETSTRING					+ 1)
+-#define	VG11_HARDWAREQUERY			(VG11_GETVECTORSIZE				+ 1)
+-#define	VG11_IMAGESUBDATA			(VG11_HARDWAREQUERY				+ 1)
+-#define	VG11_INTERPOLATEPATH		(VG11_IMAGESUBDATA				+ 1)
+-#define	VG11_LOADIDENTITY			(VG11_INTERPOLATEPATH			+ 1)
+-#define	VG11_LOADMATRIX				(VG11_LOADIDENTITY				+ 1)
+-#define	VG11_LOOKUP					(VG11_LOADMATRIX				+ 1)
+-#define	VG11_LOOKUPSINGLE			(VG11_LOOKUP					+ 1)
+-#define	VG11_MASK					(VG11_LOOKUPSINGLE				+ 1)
+-#define	VG11_MODIFYPATHCOORDS		(VG11_MASK						+ 1)
+-#define	VG11_MULTMATRIX				(VG11_MODIFYPATHCOORDS			+ 1)
+-#define	VG11_PAINTPATTERN			(VG11_MULTMATRIX				+ 1)
+-#define	VG11_PATHBOUNDS				(VG11_PAINTPATTERN				+ 1)
+-#define	VG11_PATHLENGTH				(VG11_PATHBOUNDS				+ 1)
+-#define	VG11_PATHTRANSFORMEDBOUNDS	(VG11_PATHLENGTH				+ 1)
+-#define	VG11_POINTALONGPATH			(VG11_PATHTRANSFORMEDBOUNDS		+ 1)
+-#define	VG11_READPIXELS				(VG11_POINTALONGPATH			+ 1)
+-#define	VG11_REMOVEPATHCAPABILITIES	(VG11_READPIXELS				+ 1)
+-#define	VG11_RENDERTOMASK			(VG11_REMOVEPATHCAPABILITIES	+ 1)
+-#define	VG11_ROTATE					(VG11_RENDERTOMASK				+ 1)
+-#define	VG11_SCALE					(VG11_ROTATE					+ 1)
+-#define	VG11_SEPARABLECONVOLVE		(VG11_SCALE						+ 1)
+-#define	VG11_SETCOLOR				(VG11_SEPARABLECONVOLVE			+ 1)
+-#define	VG11_SETF					(VG11_SETCOLOR					+ 1)
+-#define	VG11_SETFV					(VG11_SETF						+ 1)
+-#define	VG11_SETGLYPHTOIMAGE		(VG11_SETFV						+ 1)
+-#define	VG11_SETGLYPHTOPATH			(VG11_SETGLYPHTOIMAGE			+ 1)
+-#define	VG11_SETI					(VG11_SETGLYPHTOPATH			+ 1)
+-#define	VG11_SETIV					(VG11_SETI						+ 1)
+-#define	VG11_SETPAINT				(VG11_SETIV						+ 1)
+-#define	VG11_SETPARAMETERF			(VG11_SETPAINT					+ 1)
+-#define	VG11_SETPARAMETERFV			(VG11_SETPARAMETERF				+ 1)
+-#define	VG11_SETPARAMETERI			(VG11_SETPARAMETERFV			+ 1)
+-#define	VG11_SETPARAMETERIV			(VG11_SETPARAMETERI				+ 1)
+-#define	VG11_SETPIXELS				(VG11_SETPARAMETERIV			+ 1)
+-#define	VG11_SHEAR					(VG11_SETPIXELS					+ 1)
+-#define	VG11_TRANSFORMPATH			(VG11_SHEAR						+ 1)
+-#define	VG11_TRANSLATE				(VG11_TRANSFORMPATH				+ 1)
+-#define	VG11_WRITEPIXELS			(VG11_TRANSLATE					+ 1)
+-#define VG11_CALLS                  (VG11_WRITEPIXELS               + 1)
+-#define VG11_DRAWCALLS              (VG11_CALLS                     + 1)
+-#define VG11_STATECHANGECALLS       (VG11_DRAWCALLS                 + 1)
+-#define VG11_FILLCOUNT              (VG11_STATECHANGECALLS          + 1)
+-#define VG11_STROKECOUNT            (VG11_FILLCOUNT                 + 1)
++#define    ES11_CALLS              151
++#define    ES11_DRAWCALLS          (ES11_CALLS             + 1)
++#define    ES11_STATECHANGECALLS   (ES11_DRAWCALLS         + 1)
++#define    ES11_POINTCOUNT         (ES11_STATECHANGECALLS  + 1)
++#define    ES11_LINECOUNT          (ES11_POINTCOUNT        + 1)
++#define    ES11_TRIANGLECOUNT      (ES11_LINECOUNT         + 1)
++
++#define    ES20_CALLS              159
++#define    ES20_DRAWCALLS          (ES20_CALLS             + 1)
++#define    ES20_STATECHANGECALLS   (ES20_DRAWCALLS         + 1)
++#define    ES20_POINTCOUNT         (ES20_STATECHANGECALLS  + 1)
++#define    ES20_LINECOUNT          (ES20_POINTCOUNT        + 1)
++#define    ES20_TRIANGLECOUNT      (ES20_LINECOUNT         + 1)
++
++#define    VG11_CALLS              88
++#define    VG11_DRAWCALLS          (VG11_CALLS              + 1)
++#define    VG11_STATECHANGECALLS   (VG11_DRAWCALLS          + 1)
++#define    VG11_FILLCOUNT          (VG11_STATECHANGECALLS   + 1)
++#define    VG11_STROKECOUNT        (VG11_FILLCOUNT          + 1)
+ /* End of Driver API ID Definitions. */
+ 
+ /* HAL & MISC IDs. */
+-#define HAL_VERTBUFNEWBYTEALLOC		1
+-#define HAL_VERTBUFTOTALBYTEALLOC	(HAL_VERTBUFNEWBYTEALLOC 	+ 1)
+-#define HAL_VERTBUFNEWOBJALLOC		(HAL_VERTBUFTOTALBYTEALLOC	+ 1)
+-#define HAL_VERTBUFTOTALOBJALLOC	(HAL_VERTBUFNEWOBJALLOC		+ 1)
+-#define HAL_INDBUFNEWBYTEALLOC		(HAL_VERTBUFTOTALOBJALLOC	+ 1)
+-#define HAL_INDBUFTOTALBYTEALLOC	(HAL_INDBUFNEWBYTEALLOC		+ 1)
+-#define HAL_INDBUFNEWOBJALLOC		(HAL_INDBUFTOTALBYTEALLOC	+ 1)
+-#define HAL_INDBUFTOTALOBJALLOC		(HAL_INDBUFNEWOBJALLOC		+ 1)
+-#define HAL_TEXBUFNEWBYTEALLOC		(HAL_INDBUFTOTALOBJALLOC	+ 1)
+-#define HAL_TEXBUFTOTALBYTEALLOC	(HAL_TEXBUFNEWBYTEALLOC		+ 1)
+-#define HAL_TEXBUFNEWOBJALLOC		(HAL_TEXBUFTOTALBYTEALLOC	+ 1)
+-#define HAL_TEXBUFTOTALOBJALLOC		(HAL_TEXBUFNEWOBJALLOC		+ 1)
+-
+-#define GPU_CYCLES		1
+-#define GPU_READ64BYTE	(GPU_CYCLES		+ 1)
+-#define GPU_WRITE64BYTE	(GPU_READ64BYTE	+ 1)
+-#define GPU_TOTALCYCLES	(GPU_WRITE64BYTE	+ 1)
+-#define GPU_IDLECYCLES	(GPU_TOTALCYCLES	+ 1)
+-
+-#define VS_INSTCOUNT			1
+-#define VS_BRANCHINSTCOUNT		(VS_INSTCOUNT		+ 1)
+-#define VS_TEXLDINSTCOUNT		(VS_BRANCHINSTCOUNT	+ 1)
+-#define VS_RENDEREDVERTCOUNT	(VS_TEXLDINSTCOUNT	+ 1)
+-
+-#define PS_INSTCOUNT			1
+-#define PS_BRANCHINSTCOUNT		(PS_INSTCOUNT		+ 1)
+-#define PS_TEXLDINSTCOUNT		(PS_BRANCHINSTCOUNT	+ 1)
+-#define PS_RENDEREDPIXCOUNT		(PS_TEXLDINSTCOUNT	+ 1)
+-
+-#define PA_INVERTCOUNT		1
+-#define	PA_INPRIMCOUNT		(PA_INVERTCOUNT		+ 1)
+-#define PA_OUTPRIMCOUNT		(PA_INPRIMCOUNT		+ 1)
+-#define PA_DEPTHCLIPCOUNT	(PA_OUTPRIMCOUNT	+ 1)
+-#define PA_TRIVIALREJCOUNT	(PA_DEPTHCLIPCOUNT	+ 1)
+-#define PA_CULLCOUNT		(PA_TRIVIALREJCOUNT	+ 1)
+-
+-#define SE_TRIANGLECOUNT	1
+-#define SE_LINECOUNT		(SE_TRIANGLECOUNT	+ 1)
+-
+-#define RA_VALIDPIXCOUNT		1
+-#define RA_TOTALQUADCOUNT		(RA_VALIDPIXCOUNT		+ 1)
+-#define RA_VALIDQUADCOUNTEZ		(RA_TOTALQUADCOUNT		+ 1)
+-#define RA_TOTALPRIMCOUNT		(RA_VALIDQUADCOUNTEZ	+ 1)
+-#define RA_PIPECACHEMISSCOUNT	(RA_TOTALPRIMCOUNT		+ 1)
+-#define RA_PREFCACHEMISSCOUNT	(RA_PIPECACHEMISSCOUNT	+ 1)
+-#define RA_EEZCULLCOUNT			(RA_PREFCACHEMISSCOUNT	+ 1)
+-
+-#define TX_TOTBILINEARREQ		1
+-#define TX_TOTTRILINEARREQ		(TX_TOTBILINEARREQ		+ 1)
+-#define TX_TOTDISCARDTEXREQ		(TX_TOTTRILINEARREQ		+ 1)
+-#define TX_TOTTEXREQ			(TX_TOTDISCARDTEXREQ	+ 1)
+-#define TX_MEMREADCOUNT			(TX_TOTTEXREQ			+ 1)
+-#define TX_MEMREADIN8BCOUNT		(TX_MEMREADCOUNT		+ 1)
+-#define TX_CACHEMISSCOUNT		(TX_MEMREADIN8BCOUNT	+ 1)
+-#define TX_CACHEHITTEXELCOUNT	(TX_CACHEMISSCOUNT		+ 1)
+-#define TX_CACHEMISSTEXELCOUNT	(TX_CACHEHITTEXELCOUNT	+ 1)
+-
+-#define PE_KILLEDBYCOLOR	1
+-#define PE_KILLEDBYDEPTH	(PE_KILLEDBYCOLOR	+ 1)
+-#define PE_DRAWNBYCOLOR		(PE_KILLEDBYDEPTH	+ 1)
+-#define PE_DRAWNBYDEPTH		(PE_DRAWNBYCOLOR	+ 1)
+-
+-#define MC_READREQ8BPIPE	1
+-#define MC_READREQ8BIP		(MC_READREQ8BPIPE	+ 1)
+-#define MC_WRITEREQ8BPIPE	(MC_READREQ8BIP		+ 1)
+-
+-#define AXI_READREQSTALLED		1
+-#define AXI_WRITEREQSTALLED		(AXI_READREQSTALLED		+ 1)
+-#define AXI_WRITEDATASTALLED	(AXI_WRITEREQSTALLED	+ 1)
+-
+-#define PVS_INSTRCOUNT		1
+-#define PVS_ALUINSTRCOUNT	(PVS_INSTRCOUNT		+ 1)
+-#define PVS_TEXINSTRCOUNT	(PVS_ALUINSTRCOUNT	+ 1)
+-#define PVS_ATTRIBCOUNT		(PVS_TEXINSTRCOUNT	+ 1)
+-#define PVS_UNIFORMCOUNT	(PVS_ATTRIBCOUNT	+ 1)
+-#define PVS_FUNCTIONCOUNT	(PVS_UNIFORMCOUNT	+ 1)
+-
+-#define PPS_INSTRCOUNT		1
+-#define PPS_ALUINSTRCOUNT	(PPS_INSTRCOUNT		+ 1)
+-#define PPS_TEXINSTRCOUNT	(PPS_ALUINSTRCOUNT	+ 1)
+-#define PPS_ATTRIBCOUNT		(PPS_TEXINSTRCOUNT	+ 1)
+-#define PPS_UNIFORMCOUNT	(PPS_ATTRIBCOUNT	+ 1)
+-#define PPS_FUNCTIONCOUNT 	(PPS_UNIFORMCOUNT	+ 1)
++#define HAL_VERTBUFNEWBYTEALLOC    1
++#define HAL_VERTBUFTOTALBYTEALLOC  (HAL_VERTBUFNEWBYTEALLOC     + 1)
++#define HAL_VERTBUFNEWOBJALLOC     (HAL_VERTBUFTOTALBYTEALLOC   + 1)
++#define HAL_VERTBUFTOTALOBJALLOC   (HAL_VERTBUFNEWOBJALLOC      + 1)
++#define HAL_INDBUFNEWBYTEALLOC     (HAL_VERTBUFTOTALOBJALLOC    + 1)
++#define HAL_INDBUFTOTALBYTEALLOC   (HAL_INDBUFNEWBYTEALLOC      + 1)
++#define HAL_INDBUFNEWOBJALLOC      (HAL_INDBUFTOTALBYTEALLOC    + 1)
++#define HAL_INDBUFTOTALOBJALLOC    (HAL_INDBUFNEWOBJALLOC       + 1)
++#define HAL_TEXBUFNEWBYTEALLOC     (HAL_INDBUFTOTALOBJALLOC     + 1)
++#define HAL_TEXBUFTOTALBYTEALLOC   (HAL_TEXBUFNEWBYTEALLOC      + 1)
++#define HAL_TEXBUFNEWOBJALLOC      (HAL_TEXBUFTOTALBYTEALLOC    + 1)
++#define HAL_TEXBUFTOTALOBJALLOC    (HAL_TEXBUFNEWOBJALLOC       + 1)
++
++#define GPU_CYCLES           1
++#define GPU_READ64BYTE       (GPU_CYCLES         + 1)
++#define GPU_WRITE64BYTE      (GPU_READ64BYTE     + 1)
++#define GPU_TOTALCYCLES      (GPU_WRITE64BYTE    + 1)
++#define GPU_IDLECYCLES       (GPU_TOTALCYCLES    + 1)
++
++#define VS_INSTCOUNT          1
++#define VS_BRANCHINSTCOUNT    (VS_INSTCOUNT          + 1)
++#define VS_TEXLDINSTCOUNT     (VS_BRANCHINSTCOUNT    + 1)
++#define VS_RENDEREDVERTCOUNT  (VS_TEXLDINSTCOUNT     + 1)
++#define VS_SOURCE             (VS_RENDEREDVERTCOUNT  + 1)
++
++#define PS_INSTCOUNT          1
++#define PS_BRANCHINSTCOUNT    (PS_INSTCOUNT          + 1)
++#define PS_TEXLDINSTCOUNT     (PS_BRANCHINSTCOUNT    + 1)
++#define PS_RENDEREDPIXCOUNT   (PS_TEXLDINSTCOUNT     + 1)
++#define PS_SOURCE             (PS_RENDEREDPIXCOUNT   + 1)
++
++#define PA_INVERTCOUNT        1
++#define PA_INPRIMCOUNT        (PA_INVERTCOUNT      + 1)
++#define PA_OUTPRIMCOUNT       (PA_INPRIMCOUNT      + 1)
++#define PA_DEPTHCLIPCOUNT     (PA_OUTPRIMCOUNT     + 1)
++#define PA_TRIVIALREJCOUNT    (PA_DEPTHCLIPCOUNT   + 1)
++#define PA_CULLCOUNT          (PA_TRIVIALREJCOUNT  + 1)
++
++#define SE_TRIANGLECOUNT      1
++#define SE_LINECOUNT          (SE_TRIANGLECOUNT    + 1)
++
++#define RA_VALIDPIXCOUNT      1
++#define RA_TOTALQUADCOUNT     (RA_VALIDPIXCOUNT      + 1)
++#define RA_VALIDQUADCOUNTEZ   (RA_TOTALQUADCOUNT     + 1)
++#define RA_TOTALPRIMCOUNT     (RA_VALIDQUADCOUNTEZ   + 1)
++#define RA_PIPECACHEMISSCOUNT (RA_TOTALPRIMCOUNT     + 1)
++#define RA_PREFCACHEMISSCOUNT (RA_PIPECACHEMISSCOUNT + 1)
++#define RA_EEZCULLCOUNT       (RA_PREFCACHEMISSCOUNT + 1)
++
++#define TX_TOTBILINEARREQ     1
++#define TX_TOTTRILINEARREQ    (TX_TOTBILINEARREQ      + 1)
++#define TX_TOTDISCARDTEXREQ   (TX_TOTTRILINEARREQ     + 1)
++#define TX_TOTTEXREQ          (TX_TOTDISCARDTEXREQ    + 1)
++#define TX_MEMREADCOUNT       (TX_TOTTEXREQ           + 1)
++#define TX_MEMREADIN8BCOUNT   (TX_MEMREADCOUNT        + 1)
++#define TX_CACHEMISSCOUNT     (TX_MEMREADIN8BCOUNT    + 1)
++#define TX_CACHEHITTEXELCOUNT (TX_CACHEMISSCOUNT      + 1)
++#define TX_CACHEMISSTEXELCOUNT (TX_CACHEHITTEXELCOUNT + 1)
++
++#define PE_KILLEDBYCOLOR      1
++#define PE_KILLEDBYDEPTH      (PE_KILLEDBYCOLOR    + 1)
++#define PE_DRAWNBYCOLOR       (PE_KILLEDBYDEPTH    + 1)
++#define PE_DRAWNBYDEPTH       (PE_DRAWNBYCOLOR     + 1)
++
++#define MC_READREQ8BPIPE      1
++#define MC_READREQ8BIP        (MC_READREQ8BPIPE    + 1)
++#define MC_WRITEREQ8BPIPE     (MC_READREQ8BIP      + 1)
++
++#define AXI_READREQSTALLED    1
++#define AXI_WRITEREQSTALLED   (AXI_READREQSTALLED  + 1)
++#define AXI_WRITEDATASTALLED  (AXI_WRITEREQSTALLED + 1)
++
++#define PVS_INSTRCOUNT        1
++#define PVS_ALUINSTRCOUNT     (PVS_INSTRCOUNT      + 1)
++#define PVS_TEXINSTRCOUNT     (PVS_ALUINSTRCOUNT   + 1)
++#define PVS_ATTRIBCOUNT       (PVS_TEXINSTRCOUNT   + 1)
++#define PVS_UNIFORMCOUNT      (PVS_ATTRIBCOUNT     + 1)
++#define PVS_FUNCTIONCOUNT     (PVS_UNIFORMCOUNT    + 1)
++#define PVS_SOURCE            (PVS_FUNCTIONCOUNT   + 1)
++
++#define PPS_INSTRCOUNT       1
++#define PPS_ALUINSTRCOUNT    (PPS_INSTRCOUNT       + 1)
++#define PPS_TEXINSTRCOUNT    (PPS_ALUINSTRCOUNT    + 1)
++#define PPS_ATTRIBCOUNT      (PPS_TEXINSTRCOUNT    + 1)
++#define PPS_UNIFORMCOUNT     (PPS_ATTRIBCOUNT      + 1)
++#define PPS_FUNCTIONCOUNT    (PPS_UNIFORMCOUNT     + 1)
++#define PPS_SOURCE           (PPS_FUNCTIONCOUNT    + 1)
+ /* End of MISC Counter IDs. */
+ 
+ #ifdef gcdNEW_PROFILER_FILE
+@@ -578,8 +184,8 @@ extern "C" {
+ #define VPG_ES11_TIME   0x170000
+ #define VPG_ES20_TIME   0x180000
+ #define VPG_FRAME       0x190000
+-#define VPG_ES11_DRAW 0x200000
+-#define VPG_ES20_DRAW 0x210000
++#define VPG_ES11_DRAW   0x200000
++#define VPG_ES20_DRAW   0x210000
+ #define VPG_END         0xff0000
+ 
+ /* Info. */
+@@ -592,7 +198,7 @@ extern "C" {
+ #define VPC_INFOSCREENSIZE      (VPC_INFODRIVERMODE + 1)
+ 
+ /* Counter Constants. */
+-#define VPC_ELAPSETIME  		(VPG_TIME + 1)
++#define VPC_ELAPSETIME          (VPG_TIME + 1)
+ #define VPC_CPUTIME             (VPC_ELAPSETIME + 1)
+ 
+ #define VPC_MEMMAXRES           (VPG_MEM + 1)
+@@ -600,404 +206,28 @@ extern "C" {
+ #define VPC_MEMUNSHAREDDATA     (VPC_MEMSHARED + 1)
+ #define VPC_MEMUNSHAREDSTACK    (VPC_MEMUNSHAREDDATA + 1)
+ 
+-/* OpenGL ES11 Counters. */
+-#define	VPC_ES11ACTIVETEXTURE			(VPG_ES11 +	ES11_ACTIVETEXTURE)
+-#define	VPC_ES11ALPHAFUNC				(VPG_ES11 +	ES11_ALPHAFUNC)
+-#define	VPC_ES11ALPHAFUNCX				(VPG_ES11 +	ES11_ALPHAFUNCX)
+-#define	VPC_ES11BINDBUFFER				(VPG_ES11 +	ES11_BINDBUFFER)
+-#define	VPC_ES11BINDTEXTURE				(VPG_ES11 +	ES11_BINDTEXTURE)
+-#define	VPC_ES11BLENDFUNC				(VPG_ES11 +	ES11_BLENDFUNC)
+-#define	VPC_ES11BUFFERDATA				(VPG_ES11 +	ES11_BUFFERDATA)
+-#define	VPC_ES11BUFFERSUBDATA			(VPG_ES11 +	ES11_BUFFERSUBDATA)
+-#define	VPC_ES11CLEAR					(VPG_ES11 +	ES11_CLEAR)
+-#define	VPC_ES11CLEARCOLOR				(VPG_ES11 +	ES11_CLEARCOLOR)
+-#define	VPC_ES11CLEARCOLORX				(VPG_ES11 +	ES11_CLEARCOLORX)
+-#define	VPC_ES11CLEARDEPTHF				(VPG_ES11 +	ES11_CLEARDEPTHF)
+-#define	VPC_ES11CLEARDEPTHX				(VPG_ES11 +	ES11_CLEARDEPTHX)
+-#define	VPC_ES11CLEARSTENCIL			(VPG_ES11 +	ES11_CLEARSTENCIL)
+-#define	VPC_ES11CLIENTACTIVETEXTURE		(VPG_ES11 +	ES11_CLIENTACTIVETEXTURE)
+-#define	VPC_ES11CLIPPLANEF				(VPG_ES11 +	ES11_CLIPPLANEF)
+-#define	VPC_ES11CLIPPLANEX				(VPG_ES11 +	ES11_CLIPPLANEX)
+-#define	VPC_ES11COLOR4F					(VPG_ES11 +	ES11_COLOR4F)
+-#define	VPC_ES11COLOR4UB				(VPG_ES11 +	ES11_COLOR4UB)
+-#define	VPC_ES11COLOR4X					(VPG_ES11 +	ES11_COLOR4X)
+-#define	VPC_ES11COLORMASK				(VPG_ES11 +	ES11_COLORMASK)
+-#define	VPC_ES11COLORPOINTER			(VPG_ES11 +	ES11_COLORPOINTER)
+-#define	VPC_ES11COMPRESSEDTEXIMAGE2D	(VPG_ES11 +	ES11_COMPRESSEDTEXIMAGE2D)
+-#define	VPC_ES11COMPRESSEDTEXSUBIMAGE2D	(VPG_ES11 +	ES11_COMPRESSEDTEXSUBIMAGE2D)
+-#define	VPC_ES11COPYTEXIMAGE2D			(VPG_ES11 +	ES11_COPYTEXIMAGE2D)
+-#define	VPC_ES11COPYTEXSUBIMAGE2D		(VPG_ES11 +	ES11_COPYTEXSUBIMAGE2D)
+-#define	VPC_ES11CULLFACE				(VPG_ES11 +	ES11_CULLFACE)
+-#define	VPC_ES11DELETEBUFFERS			(VPG_ES11 +	ES11_DELETEBUFFERS)
+-#define	VPC_ES11DELETETEXTURES			(VPG_ES11 +	ES11_DELETETEXTURES)
+-#define	VPC_ES11DEPTHFUNC				(VPG_ES11 +	ES11_DEPTHFUNC)
+-#define	VPC_ES11DEPTHMASK				(VPG_ES11 +	ES11_DEPTHMASK)
+-#define	VPC_ES11DEPTHRANGEF				(VPG_ES11 +	ES11_DEPTHRANGEF)
+-#define	VPC_ES11DEPTHRANGEX				(VPG_ES11 +	ES11_DEPTHRANGEX)
+-#define	VPC_ES11DISABLE					(VPG_ES11 +	ES11_DISABLE)
+-#define	VPC_ES11DISABLECLIENTSTATE		(VPG_ES11 +	ES11_DISABLECLIENTSTATE)
+-#define	VPC_ES11DRAWARRAYS				(VPG_ES11 +	ES11_DRAWARRAYS)
+-#define	VPC_ES11DRAWELEMENTS			(VPG_ES11 +	ES11_DRAWELEMENTS)
+-#define	VPC_ES11ENABLE					(VPG_ES11 +	ES11_ENABLE)
+-#define	VPC_ES11ENABLECLIENTSTATE		(VPG_ES11 +	ES11_ENABLECLIENTSTATE)
+-#define	VPC_ES11FINISH					(VPG_ES11 +	ES11_FINISH)
+-#define	VPC_ES11FLUSH					(VPG_ES11 +	ES11_FLUSH)
+-#define	VPC_ES11FOGF					(VPG_ES11 +	ES11_FOGF)
+-#define	VPC_ES11FOGFV					(VPG_ES11 +	ES11_FOGFV)
+-#define	VPC_ES11FOGX					(VPG_ES11 +	ES11_FOGX)
+-#define	VPC_ES11FOGXV					(VPG_ES11 +	ES11_FOGXV)
+-#define	VPC_ES11FRONTFACE				(VPG_ES11 +	ES11_FRONTFACE)
+-#define	VPC_ES11FRUSTUMF				(VPG_ES11 +	ES11_FRUSTUMF)
+-#define	VPC_ES11FRUSTUMX				(VPG_ES11 +	ES11_FRUSTUMX)
+-#define	VPC_ES11GENBUFFERS				(VPG_ES11 +	ES11_GENBUFFERS)
+-#define	VPC_ES11GENTEXTURES				(VPG_ES11 +	ES11_GENTEXTURES)
+-#define	VPC_ES11GETBOOLEANV				(VPG_ES11 +	ES11_GETBOOLEANV)
+-#define	VPC_ES11GETBUFFERPARAMETERIV	(VPG_ES11 +	ES11_GETBUFFERPARAMETERIV)
+-#define	VPC_ES11GETCLIPPLANEF			(VPG_ES11 +	ES11_GETCLIPPLANEF)
+-#define	VPC_ES11GETCLIPPLANEX			(VPG_ES11 +	ES11_GETCLIPPLANEX)
+-#define	VPC_ES11GETERROR				(VPG_ES11 +	ES11_GETERROR)
+-#define	VPC_ES11GETFIXEDV				(VPG_ES11 +	ES11_GETFIXEDV)
+-#define	VPC_ES11GETFLOATV				(VPG_ES11 +	ES11_GETFLOATV)
+-#define	VPC_ES11GETINTEGERV				(VPG_ES11 +	ES11_GETINTEGERV)
+-#define	VPC_ES11GETLIGHTFV				(VPG_ES11 +	ES11_GETLIGHTFV)
+-#define	VPC_ES11GETLIGHTXV				(VPG_ES11 +	ES11_GETLIGHTXV)
+-#define	VPC_ES11GETMATERIALFV			(VPG_ES11 +	ES11_GETMATERIALFV)
+-#define	VPC_ES11GETMATERIALXV			(VPG_ES11 +	ES11_GETMATERIALXV)
+-#define	VPC_ES11GETPOINTERV				(VPG_ES11 +	ES11_GETPOINTERV)
+-#define	VPC_ES11GETSTRING				(VPG_ES11 +	ES11_GETSTRING)
+-#define	VPC_ES11GETTEXENVFV				(VPG_ES11 +	ES11_GETTEXENVFV)
+-#define	VPC_ES11GETTEXENVIV				(VPG_ES11 +	ES11_GETTEXENVIV)
+-#define	VPC_ES11GETTEXENVXV				(VPG_ES11 +	ES11_GETTEXENVXV)
+-#define	VPC_ES11GETTEXPARAMETERFV		(VPG_ES11 +	ES11_GETTEXPARAMETERFV)
+-#define	VPC_ES11GETTEXPARAMETERIV		(VPG_ES11 +	ES11_GETTEXPARAMETERIV)
+-#define	VPC_ES11GETTEXPARAMETERXV		(VPG_ES11 +	ES11_GETTEXPARAMETERXV)
+-#define	VPC_ES11HINT					(VPG_ES11 +	ES11_HINT)
+-#define	VPC_ES11ISBUFFER				(VPG_ES11 +	ES11_ISBUFFER)
+-#define	VPC_ES11ISENABLED				(VPG_ES11 +	ES11_ISENABLED)
+-#define	VPC_ES11ISTEXTURE				(VPG_ES11 +	ES11_ISTEXTURE)
+-#define	VPC_ES11LIGHTF					(VPG_ES11 +	ES11_LIGHTF)
+-#define	VPC_ES11LIGHTFV					(VPG_ES11 +	ES11_LIGHTFV)
+-#define	VPC_ES11LIGHTMODELF				(VPG_ES11 +	ES11_LIGHTMODELF)
+-#define	VPC_ES11LIGHTMODELFV			(VPG_ES11 +	ES11_LIGHTMODELFV)
+-#define	VPC_ES11LIGHTMODELX				(VPG_ES11 +	ES11_LIGHTMODELX)
+-#define	VPC_ES11LIGHTMODELXV			(VPG_ES11 +	ES11_LIGHTMODELXV)
+-#define	VPC_ES11LIGHTX					(VPG_ES11 +	ES11_LIGHTX)
+-#define	VPC_ES11LIGHTXV					(VPG_ES11 +	ES11_LIGHTXV)
+-#define	VPC_ES11LINEWIDTH				(VPG_ES11 +	ES11_LINEWIDTH)
+-#define	VPC_ES11LINEWIDTHX				(VPG_ES11 +	ES11_LINEWIDTHX)
+-#define	VPC_ES11LOADIDENTITY			(VPG_ES11 +	ES11_LOADIDENTITY)
+-#define	VPC_ES11LOADMATRIXF				(VPG_ES11 +	ES11_LOADMATRIXF)
+-#define	VPC_ES11LOADMATRIXX				(VPG_ES11 +	ES11_LOADMATRIXX)
+-#define	VPC_ES11LOGICOP					(VPG_ES11 +	ES11_LOGICOP)
+-#define	VPC_ES11MATERIALF				(VPG_ES11 +	ES11_MATERIALF)
+-#define	VPC_ES11MATERIALFV				(VPG_ES11 +	ES11_MATERIALFV)
+-#define	VPC_ES11MATERIALX				(VPG_ES11 +	ES11_MATERIALX)
+-#define	VPC_ES11MATERIALXV				(VPG_ES11 +	ES11_MATERIALXV)
+-#define	VPC_ES11MATRIXMODE				(VPG_ES11 +	ES11_MATRIXMODE)
+-#define	VPC_ES11MULTITEXCOORD4F			(VPG_ES11 +	ES11_MULTITEXCOORD4F)
+-#define	VPC_ES11MULTITEXCOORD4X			(VPG_ES11 +	ES11_MULTITEXCOORD4X)
+-#define	VPC_ES11MULTMATRIXF				(VPG_ES11 +	ES11_MULTMATRIXF)
+-#define	VPC_ES11MULTMATRIXX				(VPG_ES11 +	ES11_MULTMATRIXX)
+-#define	VPC_ES11NORMAL3F				(VPG_ES11 +	ES11_NORMAL3F)
+-#define	VPC_ES11NORMAL3X				(VPG_ES11 +	ES11_NORMAL3X)
+-#define	VPC_ES11NORMALPOINTER			(VPG_ES11 +	ES11_NORMALPOINTER)
+-#define	VPC_ES11ORTHOF					(VPG_ES11 +	ES11_ORTHOF)
+-#define	VPC_ES11ORTHOX					(VPG_ES11 +	ES11_ORTHOX)
+-#define	VPC_ES11PIXELSTOREI				(VPG_ES11 +	ES11_PIXELSTOREI)
+-#define	VPC_ES11POINTPARAMETERF			(VPG_ES11 +	ES11_POINTPARAMETERF)
+-#define	VPC_ES11POINTPARAMETERFV		(VPG_ES11 +	ES11_POINTPARAMETERFV)
+-#define	VPC_ES11POINTPARAMETERX			(VPG_ES11 +	ES11_POINTPARAMETERX)
+-#define	VPC_ES11POINTPARAMETERXV		(VPG_ES11 +	ES11_POINTPARAMETERXV)
+-#define	VPC_ES11POINTSIZE				(VPG_ES11 +	ES11_POINTSIZE)
+-#define	VPC_ES11POINTSIZEX				(VPG_ES11 +	ES11_POINTSIZEX)
+-#define	VPC_ES11POLYGONOFFSET			(VPG_ES11 +	ES11_POLYGONOFFSET)
+-#define	VPC_ES11POLYGONOFFSETX			(VPG_ES11 +	ES11_POLYGONOFFSETX)
+-#define	VPC_ES11POPMATRIX				(VPG_ES11 +	ES11_POPMATRIX)
+-#define	VPC_ES11PUSHMATRIX				(VPG_ES11 +	ES11_PUSHMATRIX)
+-#define	VPC_ES11READPIXELS				(VPG_ES11 +	ES11_READPIXELS)
+-#define	VPC_ES11ROTATEF					(VPG_ES11 +	ES11_ROTATEF)
+-#define	VPC_ES11ROTATEX					(VPG_ES11 +	ES11_ROTATEX)
+-#define	VPC_ES11SAMPLECOVERAGE			(VPG_ES11 +	ES11_SAMPLECOVERAGE)
+-#define	VPC_ES11SAMPLECOVERAGEX			(VPG_ES11 +	ES11_SAMPLECOVERAGEX)
+-#define	VPC_ES11SCALEF					(VPG_ES11 +	ES11_SCALEF)
+-#define	VPC_ES11SCALEX					(VPG_ES11 +	ES11_SCALEX)
+-#define	VPC_ES11SCISSOR					(VPG_ES11 +	ES11_SCISSOR)
+-#define	VPC_ES11SHADEMODEL				(VPG_ES11 +	ES11_SHADEMODEL)
+-#define	VPC_ES11STENCILFUNC				(VPG_ES11 +	ES11_STENCILFUNC)
+-#define	VPC_ES11STENCILMASK				(VPG_ES11 +	ES11_STENCILMASK)
+-#define	VPC_ES11STENCILOP				(VPG_ES11 +	ES11_STENCILOP)
+-#define	VPC_ES11TEXCOORDPOINTER			(VPG_ES11 +	ES11_TEXCOORDPOINTER)
+-#define	VPC_ES11TEXENVF					(VPG_ES11 +	ES11_TEXENVF)
+-#define	VPC_ES11TEXENVFV				(VPG_ES11 +	ES11_TEXENVFV)
+-#define	VPC_ES11TEXENVI					(VPG_ES11 +	ES11_TEXENVI)
+-#define	VPC_ES11TEXENVIV				(VPG_ES11 +	ES11_TEXENVIV)
+-#define	VPC_ES11TEXENVX					(VPG_ES11 +	ES11_TEXENVX)
+-#define	VPC_ES11TEXENVXV				(VPG_ES11 +	ES11_TEXENVXV)
+-#define	VPC_ES11TEXIMAGE2D				(VPG_ES11 +	ES11_TEXIMAGE2D)
+-#define	VPC_ES11TEXPARAMETERF			(VPG_ES11 +	ES11_TEXPARAMETERF)
+-#define	VPC_ES11TEXPARAMETERFV			(VPG_ES11 +	ES11_TEXPARAMETERFV)
+-#define	VPC_ES11TEXPARAMETERI			(VPG_ES11 +	ES11_TEXPARAMETERI)
+-#define	VPC_ES11TEXPARAMETERIV			(VPG_ES11 +	ES11_TEXPARAMETERIV)
+-#define	VPC_ES11TEXPARAMETERX			(VPG_ES11 +	ES11_TEXPARAMETERX)
+-#define	VPC_ES11TEXPARAMETERXV			(VPG_ES11 +	ES11_TEXPARAMETERXV)
+-#define	VPC_ES11TEXSUBIMAGE2D			(VPG_ES11 +	ES11_TEXSUBIMAGE2D)
+-#define	VPC_ES11TRANSLATEF				(VPG_ES11 +	ES11_TRANSLATEF)
+-#define	VPC_ES11TRANSLATEX				(VPG_ES11 +	ES11_TRANSLATEX)
+-#define	VPC_ES11VERTEXPOINTER			(VPG_ES11 +	ES11_VERTEXPOINTER)
+-#define	VPC_ES11VIEWPORT				(VPG_ES11 +	ES11_VIEWPORT)
+ /* OpenGL ES11 Statics Counter IDs. */
+-#define	VPC_ES11CALLS					(VPG_ES11 +	ES11_CALLS)
+-#define	VPC_ES11DRAWCALLS				(VPG_ES11 +	ES11_DRAWCALLS)
+-#define	VPC_ES11STATECHANGECALLS		(VPG_ES11 +	ES11_STATECHANGECALLS)
+-#define	VPC_ES11POINTCOUNT				(VPG_ES11 +	ES11_POINTCOUNT)
+-#define	VPC_ES11LINECOUNT				(VPG_ES11 +	ES11_LINECOUNT)
+-#define	VPC_ES11TRIANGLECOUNT			(VPG_ES11 +	ES11_TRIANGLECOUNT)
+-
+-/* OpenGLES 2.x */
+-#define	VPC_ES20ACTIVETEXTURE						(VPG_ES20 +	ES20_ACTIVETEXTURE)
+-#define	VPC_ES20ATTACHSHADER						(VPG_ES20 +	ES20_ATTACHSHADER)
+-#define	VPC_ES20BINDATTRIBLOCATION					(VPG_ES20 +	ES20_BINDATTRIBLOCATION)
+-#define	VPC_ES20BINDBUFFER							(VPG_ES20 +	ES20_BINDBUFFER)
+-#define	VPC_ES20BINDFRAMEBUFFER						(VPG_ES20 +	ES20_BINDFRAMEBUFFER)
+-#define	VPC_ES20BINDRENDERBUFFER					(VPG_ES20 +	ES20_BINDRENDERBUFFER)
+-#define	VPC_ES20BINDTEXTURE							(VPG_ES20 +	ES20_BINDTEXTURE)
+-#define	VPC_ES20BLENDCOLOR							(VPG_ES20 +	ES20_BLENDCOLOR)
+-#define	VPC_ES20BLENDEQUATION						(VPG_ES20 +	ES20_BLENDEQUATION)
+-#define	VPC_ES20BLENDEQUATIONSEPARATE				(VPG_ES20 +	ES20_BLENDEQUATIONSEPARATE)
+-#define	VPC_ES20BLENDFUNC							(VPG_ES20 +	ES20_BLENDFUNC)
+-#define	VPC_ES20BLENDFUNCSEPARATE					(VPG_ES20 +	ES20_BLENDFUNCSEPARATE)
+-#define	VPC_ES20BUFFERDATA							(VPG_ES20 +	ES20_BUFFERDATA)
+-#define	VPC_ES20BUFFERSUBDATA						(VPG_ES20 +	ES20_BUFFERSUBDATA)
+-#define	VPC_ES20CHECKFRAMEBUFFERSTATUS				(VPG_ES20 +	ES20_CHECKFRAMEBUFFERSTATUS)
+-#define	VPC_ES20CLEAR								(VPG_ES20 +	ES20_CLEAR)
+-#define	VPC_ES20CLEARCOLOR							(VPG_ES20 +	ES20_CLEARCOLOR)
+-#define	VPC_ES20CLEARDEPTHF							(VPG_ES20 +	ES20_CLEARDEPTHF)
+-#define	VPC_ES20CLEARSTENCIL						(VPG_ES20 +	ES20_CLEARSTENCIL)
+-#define	VPC_ES20COLORMASK							(VPG_ES20 +	ES20_COLORMASK)
+-#define	VPC_ES20COMPILESHADER						(VPG_ES20 +	ES20_COMPILESHADER)
+-#define	VPC_ES20COMPRESSEDTEXIMAGE2D				(VPG_ES20 +	ES20_COMPRESSEDTEXIMAGE2D)
+-#define	VPC_ES20COMPRESSEDTEXSUBIMAGE2D				(VPG_ES20 +	ES20_COMPRESSEDTEXSUBIMAGE2D)
+-#define	VPC_ES20COPYTEXIMAGE2D						(VPG_ES20 +	ES20_COPYTEXIMAGE2D)
+-#define	VPC_ES20COPYTEXSUBIMAGE2D					(VPG_ES20 +	ES20_COPYTEXSUBIMAGE2D)
+-#define	VPC_ES20CREATEPROGRAM						(VPG_ES20 +	ES20_CREATEPROGRAM)
+-#define	VPC_ES20CREATESHADER						(VPG_ES20 +	ES20_CREATESHADER)
+-#define	VPC_ES20CULLFACE							(VPG_ES20 +	ES20_CULLFACE)
+-#define	VPC_ES20DELETEBUFFERS						(VPG_ES20 +	ES20_DELETEBUFFERS)
+-#define	VPC_ES20DELETEFRAMEBUFFERS					(VPG_ES20 +	ES20_DELETEFRAMEBUFFERS)
+-#define	VPC_ES20DELETEPROGRAM						(VPG_ES20 +	ES20_DELETEPROGRAM)
+-#define	VPC_ES20DELETERENDERBUFFERS					(VPG_ES20 +	ES20_DELETERENDERBUFFERS)
+-#define	VPC_ES20DELETESHADER						(VPG_ES20 +	ES20_DELETESHADER)
+-#define	VPC_ES20DELETETEXTURES						(VPG_ES20 +	ES20_DELETETEXTURES)
+-#define	VPC_ES20DEPTHFUNC							(VPG_ES20 +	ES20_DEPTHFUNC)
+-#define	VPC_ES20DEPTHMASK							(VPG_ES20 +	ES20_DEPTHMASK)
+-#define	VPC_ES20DEPTHRANGEF							(VPG_ES20 +	ES20_DEPTHRANGEF)
+-#define	VPC_ES20DETACHSHADER						(VPG_ES20 +	ES20_DETACHSHADER)
+-#define	VPC_ES20DISABLE								(VPG_ES20 +	ES20_DISABLE)
+-#define	VPC_ES20DISABLEVERTEXATTRIBARRAY			(VPG_ES20 +	ES20_DISABLEVERTEXATTRIBARRAY)
+-#define	VPC_ES20DRAWARRAYS							(VPG_ES20 +	ES20_DRAWARRAYS)
+-#define	VPC_ES20DRAWELEMENTS						(VPG_ES20 +	ES20_DRAWELEMENTS)
+-#define	VPC_ES20ENABLE								(VPG_ES20 +	ES20_ENABLE)
+-#define	VPC_ES20ENABLEVERTEXATTRIBARRAY				(VPG_ES20 +	ES20_ENABLEVERTEXATTRIBARRAY)
+-#define	VPC_ES20FINISH								(VPG_ES20 +	ES20_FINISH)
+-#define	VPC_ES20FLUSH								(VPG_ES20 +	ES20_FLUSH)
+-#define	VPC_ES20FRAMEBUFFERRENDERBUFFER				(VPG_ES20 +	ES20_FRAMEBUFFERRENDERBUFFER)
+-#define	VPC_ES20FRAMEBUFFERTEXTURE2D				(VPG_ES20 +	ES20_FRAMEBUFFERTEXTURE2D)
+-#define	VPC_ES20FRONTFACE							(VPG_ES20 +	ES20_FRONTFACE)
+-#define	VPC_ES20GENBUFFERS							(VPG_ES20 +	ES20_GENBUFFERS)
+-#define	VPC_ES20GENERATEMIPMAP						(VPG_ES20 +	ES20_GENERATEMIPMAP)
+-#define	VPC_ES20GENFRAMEBUFFERS						(VPG_ES20 +	ES20_GENFRAMEBUFFERS)
+-#define	VPC_ES20GENRENDERBUFFERS					(VPG_ES20 +	ES20_GENRENDERBUFFERS)
+-#define	VPC_ES20GENTEXTURES							(VPG_ES20 +	ES20_GENTEXTURES)
+-#define	VPC_ES20GETACTIVEATTRIB						(VPG_ES20 +	ES20_GETACTIVEATTRIB)
+-#define	VPC_ES20GETACTIVEUNIFORM					(VPG_ES20 +	ES20_GETACTIVEUNIFORM)
+-#define	VPC_ES20GETATTACHEDSHADERS					(VPG_ES20 +	ES20_GETATTACHEDSHADERS)
+-#define	VPC_ES20GETATTRIBLOCATION					(VPG_ES20 +	ES20_GETATTRIBLOCATION)
+-#define	VPC_ES20GETBOOLEANV							(VPG_ES20 +	ES20_GETBOOLEANV)
+-#define	VPC_ES20GETBUFFERPARAMETERIV				(VPG_ES20 +	ES20_GETBUFFERPARAMETERIV)
+-#define	VPC_ES20GETERROR							(VPG_ES20 +	ES20_GETERROR)
+-#define	VPC_ES20GETFLOATV							(VPG_ES20 +	ES20_GETFLOATV)
+-#define	VPC_ES20GETFRAMEBUFFERATTACHMENTPARAMETERIV	(VPG_ES20 +	ES20_GETFRAMEBUFFERATTACHMENTPARAMETERIV)
+-#define	VPC_ES20GETINTEGERV							(VPG_ES20 +	ES20_GETINTEGERV)
+-#define	VPC_ES20GETPROGRAMIV						(VPG_ES20 +	ES20_GETPROGRAMIV)
+-#define	VPC_ES20GETPROGRAMINFOLOG					(VPG_ES20 +	ES20_GETPROGRAMINFOLOG)
+-#define	VPC_ES20GETRENDERBUFFERPARAMETERIV			(VPG_ES20 +	ES20_GETRENDERBUFFERPARAMETERIV)
+-#define	VPC_ES20GETSHADERIV							(VPG_ES20 +	ES20_GETSHADERIV)
+-#define	VPC_ES20GETSHADERINFOLOG					(VPG_ES20 +	ES20_GETSHADERINFOLOG)
+-#define	VPC_ES20GETSHADERPRECISIONFORMAT			(VPG_ES20 +	ES20_GETSHADERPRECISIONFORMAT)
+-#define	VPC_ES20GETSHADERSOURCE						(VPG_ES20 +	ES20_GETSHADERSOURCE)
+-#define	VPC_ES20GETSTRING							(VPG_ES20 +	ES20_GETSTRING)
+-#define	VPC_ES20GETTEXPARAMETERFV					(VPG_ES20 +	ES20_GETTEXPARAMETERFV)
+-#define	VPC_ES20GETTEXPARAMETERIV					(VPG_ES20 +	ES20_GETTEXPARAMETERIV)
+-#define	VPC_ES20GETUNIFORMFV						(VPG_ES20 +	ES20_GETUNIFORMFV)
+-#define	VPC_ES20GETUNIFORMIV						(VPG_ES20 +	ES20_GETUNIFORMIV)
+-#define	VPC_ES20GETUNIFORMLOCATION					(VPG_ES20 +	ES20_GETUNIFORMLOCATION)
+-#define	VPC_ES20GETVERTEXATTRIBFV					(VPG_ES20 +	ES20_GETVERTEXATTRIBFV)
+-#define	VPC_ES20GETVERTEXATTRIBIV					(VPG_ES20 +	ES20_GETVERTEXATTRIBIV)
+-#define	VPC_ES20GETVERTEXATTRIBPOINTERV				(VPG_ES20 +	ES20_GETVERTEXATTRIBPOINTERV)
+-#define	VPC_ES20HINT								(VPG_ES20 +	ES20_HINT)
+-#define	VPC_ES20ISBUFFER							(VPG_ES20 +	ES20_ISBUFFER)
+-#define	VPC_ES20ISENABLED							(VPG_ES20 +	ES20_ISENABLED)
+-#define	VPC_ES20ISFRAMEBUFFER						(VPG_ES20 +	ES20_ISFRAMEBUFFER)
+-#define	VPC_ES20ISPROGRAM							(VPG_ES20 +	ES20_ISPROGRAM)
+-#define	VPC_ES20ISRENDERBUFFER						(VPG_ES20 +	ES20_ISRENDERBUFFER)
+-#define	VPC_ES20ISSHADER							(VPG_ES20 +	ES20_ISSHADER)
+-#define	VPC_ES20ISTEXTURE							(VPG_ES20 +	ES20_ISTEXTURE)
+-#define	VPC_ES20LINEWIDTH							(VPG_ES20 +	ES20_LINEWIDTH)
+-#define	VPC_ES20LINKPROGRAM							(VPG_ES20 +	ES20_LINKPROGRAM)
+-#define	VPC_ES20PIXELSTOREI							(VPG_ES20 +	ES20_PIXELSTOREI)
+-#define	VPC_ES20POLYGONOFFSET						(VPG_ES20 +	ES20_POLYGONOFFSET)
+-#define	VPC_ES20READPIXELS							(VPG_ES20 +	ES20_READPIXELS)
+-#define	VPC_ES20RELEASESHADERCOMPILER				(VPG_ES20 +	ES20_RELEASESHADERCOMPILER)
+-#define	VPC_ES20RENDERBUFFERSTORAGE					(VPG_ES20 +	ES20_RENDERBUFFERSTORAGE)
+-#define	VPC_ES20SAMPLECOVERAGE						(VPG_ES20 +	ES20_SAMPLECOVERAGE)
+-#define	VPC_ES20SCISSOR								(VPG_ES20 +	ES20_SCISSOR)
+-#define	VPC_ES20SHADERBINARY						(VPG_ES20 +	ES20_SHADERBINARY)
+-#define	VPC_ES20SHADERSOURCE						(VPG_ES20 +	ES20_SHADERSOURCE)
+-#define	VPC_ES20STENCILFUNC							(VPG_ES20 +	ES20_STENCILFUNC)
+-#define	VPC_ES20STENCILFUNCSEPARATE					(VPG_ES20 +	ES20_STENCILFUNCSEPARATE)
+-#define	VPC_ES20STENCILMASK							(VPG_ES20 +	ES20_STENCILMASK)
+-#define	VPC_ES20STENCILMASKSEPARATE					(VPG_ES20 +	ES20_STENCILMASKSEPARATE)
+-#define	VPC_ES20STENCILOP							(VPG_ES20 +	ES20_STENCILOP)
+-#define	VPC_ES20STENCILOPSEPARATE					(VPG_ES20 +	ES20_STENCILOPSEPARATE)
+-#define	VPC_ES20TEXIMAGE2D							(VPG_ES20 +	ES20_TEXIMAGE2D)
+-#define	VPC_ES20TEXPARAMETERF						(VPG_ES20 +	ES20_TEXPARAMETERF)
+-#define	VPC_ES20TEXPARAMETERFV						(VPG_ES20 +	ES20_TEXPARAMETERFV)
+-#define	VPC_ES20TEXPARAMETERI						(VPG_ES20 +	ES20_TEXPARAMETERI)
+-#define	VPC_ES20TEXPARAMETERIV						(VPG_ES20 +	ES20_TEXPARAMETERIV)
+-#define	VPC_ES20TEXSUBIMAGE2D						(VPG_ES20 +	ES20_TEXSUBIMAGE2D)
+-#define	VPC_ES20UNIFORM1F							(VPG_ES20 +	ES20_UNIFORM1F)
+-#define	VPC_ES20UNIFORM1FV							(VPG_ES20 +	ES20_UNIFORM1FV)
+-#define	VPC_ES20UNIFORM1I							(VPG_ES20 +	ES20_UNIFORM1I)
+-#define	VPC_ES20UNIFORM1IV							(VPG_ES20 +	ES20_UNIFORM1IV)
+-#define	VPC_ES20UNIFORM2F							(VPG_ES20 +	ES20_UNIFORM2F)
+-#define	VPC_ES20UNIFORM2FV							(VPG_ES20 +	ES20_UNIFORM2FV)
+-#define	VPC_ES20UNIFORM2I							(VPG_ES20 +	ES20_UNIFORM2I)
+-#define	VPC_ES20UNIFORM2IV							(VPG_ES20 +	ES20_UNIFORM2IV)
+-#define	VPC_ES20UNIFORM3F							(VPG_ES20 +	ES20_UNIFORM3F)
+-#define	VPC_ES20UNIFORM3FV							(VPG_ES20 +	ES20_UNIFORM3FV)
+-#define	VPC_ES20UNIFORM3I							(VPG_ES20 +	ES20_UNIFORM3I)
+-#define	VPC_ES20UNIFORM3IV							(VPG_ES20 +	ES20_UNIFORM3IV)
+-#define	VPC_ES20UNIFORM4F							(VPG_ES20 +	ES20_UNIFORM4F)
+-#define	VPC_ES20UNIFORM4FV							(VPG_ES20 +	ES20_UNIFORM4FV)
+-#define	VPC_ES20UNIFORM4I							(VPG_ES20 +	ES20_UNIFORM4I)
+-#define	VPC_ES20UNIFORM4IV							(VPG_ES20 +	ES20_UNIFORM4IV)
+-#define	VPC_ES20UNIFORMMATRIX2FV					(VPG_ES20 +	ES20_UNIFORMMATRIX2FV)
+-#define	VPC_ES20UNIFORMMATRIX3FV					(VPG_ES20 +	ES20_UNIFORMMATRIX3FV)
+-#define	VPC_ES20UNIFORMMATRIX4FV					(VPG_ES20 +	ES20_UNIFORMMATRIX4FV)
+-#define	VPC_ES20USEPROGRAM							(VPG_ES20 +	ES20_USEPROGRAM)
+-#define	VPC_ES20VALIDATEPROGRAM						(VPG_ES20 +	ES20_VALIDATEPROGRAM)
+-#define	VPC_ES20VERTEXATTRIB1F						(VPG_ES20 +	ES20_VERTEXATTRIB1F)
+-#define	VPC_ES20VERTEXATTRIB1FV						(VPG_ES20 +	ES20_VERTEXATTRIB1FV)
+-#define	VPC_ES20VERTEXATTRIB2F						(VPG_ES20 +	ES20_VERTEXATTRIB2F)
+-#define	VPC_ES20VERTEXATTRIB2FV						(VPG_ES20 +	ES20_VERTEXATTRIB2FV)
+-#define	VPC_ES20VERTEXATTRIB3F						(VPG_ES20 +	ES20_VERTEXATTRIB3F)
+-#define	VPC_ES20VERTEXATTRIB3FV						(VPG_ES20 +	ES20_VERTEXATTRIB3FV)
+-#define	VPC_ES20VERTEXATTRIB4F						(VPG_ES20 +	ES20_VERTEXATTRIB4F)
+-#define	VPC_ES20VERTEXATTRIB4FV						(VPG_ES20 +	ES20_VERTEXATTRIB4FV)
+-#define	VPC_ES20VERTEXATTRIBPOINTER					(VPG_ES20 +	ES20_VERTEXATTRIBPOINTER)
+-#define	VPC_ES20VIEWPORT							(VPG_ES20 +	ES20_VIEWPORT)
++#define    VPC_ES11CALLS            (VPG_ES11 +    ES11_CALLS)
++#define    VPC_ES11DRAWCALLS        (VPG_ES11 +    ES11_DRAWCALLS)
++#define    VPC_ES11STATECHANGECALLS (VPG_ES11 +    ES11_STATECHANGECALLS)
++#define    VPC_ES11POINTCOUNT       (VPG_ES11 +    ES11_POINTCOUNT)
++#define    VPC_ES11LINECOUNT        (VPG_ES11 +    ES11_LINECOUNT)
++#define    VPC_ES11TRIANGLECOUNT    (VPG_ES11 +    ES11_TRIANGLECOUNT)
++
+ /* OpenGL ES20 Statistics Counter IDs. */
+-#define	VPC_ES20CALLS								(VPG_ES20 +	ES20_CALLS)
+-#define	VPC_ES20DRAWCALLS							(VPG_ES20 +	ES20_DRAWCALLS)
+-#define	VPC_ES20STATECHANGECALLS					(VPG_ES20 +	ES20_STATECHANGECALLS)
+-#define	VPC_ES20POINTCOUNT							(VPG_ES20 +	ES20_POINTCOUNT)
+-#define	VPC_ES20LINECOUNT							(VPG_ES20 +	ES20_LINECOUNT)
+-#define	VPC_ES20TRIANGLECOUNT						(VPG_ES20 +	ES20_TRIANGLECOUNT)
+-
+-/* VG11 Counters. */
+-#define	VPC_VG11APPENDPATH				(VPG_VG11 +	VG11_APPENDPATH)
+-#define	VPC_VG11APPENDPATHDATA			(VPG_VG11 +	VG11_APPENDPATHDATA)
+-#define	VPC_VG11CHILDIMAGE				(VPG_VG11 +	VG11_CHILDIMAGE)
+-#define	VPC_VG11CLEAR					(VPG_VG11 +	VG11_CLEAR)
+-#define	VPC_VG11CLEARGLYPH				(VPG_VG11 +	VG11_CLEARGLYPH)
+-#define	VPC_VG11CLEARIMAGE				(VPG_VG11 +	VG11_CLEARIMAGE)
+-#define	VPC_VG11CLEARPATH				(VPG_VG11 +	VG11_CLEARPATH)
+-#define	VPC_VG11COLORMATRIX				(VPG_VG11 +	VG11_COLORMATRIX)
+-#define	VPC_VG11CONVOLVE				(VPG_VG11 +	VG11_CONVOLVE)
+-#define	VPC_VG11COPYIMAGE				(VPG_VG11 +	VG11_COPYIMAGE)
+-#define	VPC_VG11COPYMASK				(VPG_VG11 +	VG11_COPYMASK)
+-#define	VPC_VG11COPYPIXELS				(VPG_VG11 +	VG11_COPYPIXELS)
+-#define	VPC_VG11CREATEFONT				(VPG_VG11 +	VG11_CREATEFONT)
+-#define	VPC_VG11CREATEIMAGE				(VPG_VG11 +	VG11_CREATEIMAGE)
+-#define	VPC_VG11CREATEMASKLAYER			(VPG_VG11 +	VG11_CREATEMASKLAYER)
+-#define	VPC_VG11CREATEPAINT				(VPG_VG11 +	VG11_CREATEPAINT)
+-#define	VPC_VG11CREATEPATH				(VPG_VG11 +	VG11_CREATEPATH)
+-#define	VPC_VG11DESTROYFONT				(VPG_VG11 +	VG11_DESTROYFONT)
+-#define	VPC_VG11DESTROYIMAGE			(VPG_VG11 +	VG11_DESTROYIMAGE)
+-#define	VPC_VG11DESTROYMASKLAYER		(VPG_VG11 +	VG11_DESTROYMASKLAYER)
+-#define	VPC_VG11DESTROYPAINT			(VPG_VG11 +	VG11_DESTROYPAINT)
+-#define	VPC_VG11DESTROYPATH				(VPG_VG11 +	VG11_DESTROYPATH)
+-#define	VPC_VG11DRAWGLYPH				(VPG_VG11 +	VG11_DRAWGLYPH)
+-#define	VPC_VG11DRAWGLYPHS				(VPG_VG11 +	VG11_DRAWGLYPHS)
+-#define	VPC_VG11DRAWIMAGE				(VPG_VG11 +	VG11_DRAWIMAGE)
+-#define	VPC_VG11DRAWPATH				(VPG_VG11 +	VG11_DRAWPATH)
+-#define	VPC_VG11FILLMASKLAYER			(VPG_VG11 +	VG11_FILLMASKLAYER)
+-#define	VPC_VG11FINISH					(VPG_VG11 +	VG11_FINISH)
+-#define	VPC_VG11FLUSH					(VPG_VG11 +	VG11_FLUSH)
+-#define	VPC_VG11GAUSSIANBLUR			(VPG_VG11 +	VG11_GAUSSIANBLUR)
+-#define	VPC_VG11GETCOLOR				(VPG_VG11 +	VG11_GETCOLOR)
+-#define	VPC_VG11GETERROR				(VPG_VG11 +	VG11_GETERROR)
+-#define	VPC_VG11GETF					(VPG_VG11 +	VG11_GETF)
+-#define	VPC_VG11GETFV					(VPG_VG11 +	VG11_GETFV)
+-#define	VPC_VG11GETI					(VPG_VG11 +	VG11_GETI)
+-#define	VPC_VG11GETIMAGESUBDATA			(VPG_VG11 +	VG11_GETIMAGESUBDATA)
+-#define	VPC_VG11GETIV					(VPG_VG11 +	VG11_GETIV)
+-#define	VPC_VG11GETMATRIX				(VPG_VG11 +	VG11_GETMATRIX)
+-#define	VPC_VG11GETPAINT				(VPG_VG11 +	VG11_GETPAINT)
+-#define	VPC_VG11GETPARAMETERF			(VPG_VG11 +	VG11_GETPARAMETERF)
+-#define	VPC_VG11GETPARAMETERFV			(VPG_VG11 +	VG11_GETPARAMETERFV)
+-#define	VPC_VG11GETPARAMETERI			(VPG_VG11 +	VG11_GETPARAMETERI)
+-#define	VPC_VG11GETPARAMETERIV			(VPG_VG11 +	VG11_GETPARAMETERIV)
+-#define	VPC_VG11GETPARAMETERVECTORSIZE	(VPG_VG11 +	VG11_GETPARAMETERVECTORSIZE)
+-#define	VPC_VG11GETPARENT				(VPG_VG11 +	VG11_GETPARENT)
+-#define	VPC_VG11GETPATHCAPABILITIES		(VPG_VG11 +	VG11_GETPATHCAPABILITIES)
+-#define	VPC_VG11GETPIXELS				(VPG_VG11 +	VG11_GETPIXELS)
+-#define	VPC_VG11GETSTRING				(VPG_VG11 +	VG11_GETSTRING)
+-#define	VPC_VG11GETVECTORSIZE			(VPG_VG11 +	VG11_GETVECTORSIZE)
+-#define	VPC_VG11HARDWAREQUERY			(VPG_VG11 +	VG11_HARDWAREQUERY)
+-#define	VPC_VG11IMAGESUBDATA			(VPG_VG11 +	VG11_IMAGESUBDATA)
+-#define	VPC_VG11INTERPOLATEPATH			(VPG_VG11 +	VG11_INTERPOLATEPATH)
+-#define	VPC_VG11LOADIDENTITY			(VPG_VG11 +	VG11_LOADIDENTITY)
+-#define	VPC_VG11LOADMATRIX				(VPG_VG11 +	VG11_LOADMATRIX)
+-#define	VPC_VG11LOOKUP					(VPG_VG11 +	VG11_LOOKUP)
+-#define	VPC_VG11LOOKUPSINGLE			(VPG_VG11 +	VG11_LOOKUPSINGLE)
+-#define	VPC_VG11MASK					(VPG_VG11 +	VG11_MASK)
+-#define	VPC_VG11MODIFYPATHCOORDS		(VPG_VG11 +	VG11_MODIFYPATHCOORDS)
+-#define	VPC_VG11MULTMATRIX				(VPG_VG11 +	VG11_MULTMATRIX)
+-#define	VPC_VG11PAINTPATTERN			(VPG_VG11 +	VG11_PAINTPATTERN)
+-#define	VPC_VG11PATHBOUNDS				(VPG_VG11 +	VG11_PATHBOUNDS)
+-#define	VPC_VG11PATHLENGTH				(VPG_VG11 +	VG11_PATHLENGTH)
+-#define	VPC_VG11PATHTRANSFORMEDBOUNDS	(VPG_VG11 +	VG11_PATHTRANSFORMEDBOUNDS)
+-#define	VPC_VG11POINTALONGPATH			(VPG_VG11 +	VG11_POINTALONGPATH)
+-#define	VPC_VG11READPIXELS				(VPG_VG11 +	VG11_READPIXELS)
+-#define	VPC_VG11REMOVEPATHCAPABILITIES	(VPG_VG11 +	VG11_REMOVEPATHCAPABILITIES)
+-#define	VPC_VG11RENDERTOMASK			(VPG_VG11 +	VG11_RENDERTOMASK)
+-#define	VPC_VG11ROTATE					(VPG_VG11 +	VG11_ROTATE)
+-#define	VPC_VG11SCALE					(VPG_VG11 +	VG11_SCALE)
+-#define	VPC_VG11SEPARABLECONVOLVE		(VPG_VG11 +	VG11_SEPARABLECONVOLVE)
+-#define	VPC_VG11SETCOLOR				(VPG_VG11 +	VG11_SETCOLOR)
+-#define	VPC_VG11SETF					(VPG_VG11 +	VG11_SETF)
+-#define	VPC_VG11SETFV					(VPG_VG11 +	VG11_SETFV)
+-#define	VPC_VG11SETGLYPHTOIMAGE			(VPG_VG11 +	VG11_SETGLYPHTOIMAGE)
+-#define	VPC_VG11SETGLYPHTOPATH			(VPG_VG11 +	VG11_SETGLYPHTOPATH)
+-#define	VPC_VG11SETI					(VPG_VG11 +	VG11_SETI)
+-#define	VPC_VG11SETIV					(VPG_VG11 +	VG11_SETIV)
+-#define	VPC_VG11SETPAINT				(VPG_VG11 +	VG11_SETPAINT)
+-#define	VPC_VG11SETPARAMETERF			(VPG_VG11 +	VG11_SETPARAMETERF)
+-#define	VPC_VG11SETPARAMETERFV			(VPG_VG11 +	VG11_SETPARAMETERFV)
+-#define	VPC_VG11SETPARAMETERI			(VPG_VG11 +	VG11_SETPARAMETERI)
+-#define	VPC_VG11SETPARAMETERIV			(VPG_VG11 +	VG11_SETPARAMETERIV)
+-#define	VPC_VG11SETPIXELS				(VPG_VG11 +	VG11_SETPIXELS)
+-#define	VPC_VG11SHEAR					(VPG_VG11 +	VG11_SHEAR)
+-#define	VPC_VG11TRANSFORMPATH			(VPG_VG11 +	VG11_TRANSFORMPATH)
+-#define	VPC_VG11TRANSLATE				(VPG_VG11 +	VG11_TRANSLATE)
+-#define	VPC_VG11WRITEPIXELS				(VPG_VG11 +	VG11_WRITEPIXELS)
++#define    VPC_ES20CALLS            (VPG_ES20 +    ES20_CALLS)
++#define    VPC_ES20DRAWCALLS        (VPG_ES20 +    ES20_DRAWCALLS)
++#define    VPC_ES20STATECHANGECALLS (VPG_ES20 +    ES20_STATECHANGECALLS)
++#define    VPC_ES20POINTCOUNT       (VPG_ES20 +    ES20_POINTCOUNT)
++#define    VPC_ES20LINECOUNT        (VPG_ES20 +    ES20_LINECOUNT)
++#define    VPC_ES20TRIANGLECOUNT    (VPG_ES20 +    ES20_TRIANGLECOUNT)
++
+ /* OpenVG Statistics Counter IDs. */
+-#define	VPC_VG11CALLS					(VPG_VG11 +	VG11_CALLS)
+-#define	VPC_VG11DRAWCALLS				(VPG_VG11 +	VG11_DRAWCALLS)
+-#define	VPC_VG11STATECHANGECALLS		(VPG_VG11 +	VG11_STATECHANGECALLS)
+-#define	VPC_VG11FILLCOUNT				(VPG_VG11 +	VG11_FILLCOUNT)
+-#define	VPC_VG11STROKECOUNT				(VPG_VG11 +	VG11_STROKECOUNT)
++#define    VPC_VG11CALLS            (VPG_VG11 +    VG11_CALLS)
++#define    VPC_VG11DRAWCALLS        (VPG_VG11 +    VG11_DRAWCALLS)
++#define    VPC_VG11STATECHANGECALLS (VPG_VG11 +    VG11_STATECHANGECALLS)
++#define    VPC_VG11FILLCOUNT        (VPG_VG11 +    VG11_FILLCOUNT)
++#define    VPC_VG11STROKECOUNT      (VPG_VG11 +    VG11_STROKECOUNT)
+ 
+ /* HAL Counters. */
+ #define VPC_HALVERTBUFNEWBYTEALLOC      (VPG_HAL + HAL_VERTBUFNEWBYTEALLOC)
+@@ -1018,7 +248,7 @@ extern "C" {
+ #define VPC_GPUREAD64BYTE               (VPG_GPU + GPU_READ64BYTE)
+ #define VPC_GPUWRITE64BYTE              (VPG_GPU + GPU_WRITE64BYTE)
+ #define VPC_GPUTOTALCYCLES              (VPG_GPU + GPU_TOTALCYCLES)
+-#define VPC_GPUIDLECYCLES              (VPG_GPU + GPU_IDLECYCLES)
++#define VPC_GPUIDLECYCLES               (VPG_GPU + GPU_IDLECYCLES)
+ 
+ /* HW: Shader Counters. */
+ #define VPC_VSINSTCOUNT                 (VPG_VS + VS_INSTCOUNT)
+@@ -1026,9 +256,9 @@ extern "C" {
+ #define VPC_VSTEXLDINSTCOUNT            (VPG_VS + VS_TEXLDINSTCOUNT)
+ #define VPC_VSRENDEREDVERTCOUNT         (VPG_VS + VS_RENDEREDVERTCOUNT)
+ /* HW: PS Count. */
+-#define VPC_PSINSTCOUNT             	(VPG_PS + PS_INSTCOUNT)
+-#define VPC_PSBRANCHINSTCOUNT       	(VPG_PS + PS_BRANCHINSTCOUNT)
+-#define VPC_PSTEXLDINSTCOUNT        	(VPG_PS + PS_TEXLDINSTCOUNT)
++#define VPC_PSINSTCOUNT                 (VPG_PS + PS_INSTCOUNT)
++#define VPC_PSBRANCHINSTCOUNT           (VPG_PS + PS_BRANCHINSTCOUNT)
++#define VPC_PSTEXLDINSTCOUNT            (VPG_PS + PS_TEXLDINSTCOUNT)
+ #define VPC_PSRENDEREDPIXCOUNT          (VPG_PS + PS_RENDEREDPIXCOUNT)
+ 
+ 
+@@ -1071,7 +301,7 @@ extern "C" {
+ #define VPC_PEDRAWNBYDEPTH              (VPG_PE + PE_DRAWNBYDEPTH)
+ 
+ /* HW: MC Counters. */
+-#define VPC_MCREADREQ8BPIPE            	(VPG_MC + MC_READREQ8BPIPE)
++#define VPC_MCREADREQ8BPIPE             (VPG_MC + MC_READREQ8BPIPE)
+ #define VPC_MCREADREQ8BIP               (VPG_MC + MC_READREQ8BIP)
+ #define VPC_MCWRITEREQ8BPIPE            (VPG_MC + MC_WRITEREQ8BPIPE)
+ 
+@@ -1087,6 +317,7 @@ extern "C" {
+ #define VPC_PVSATTRIBCOUNT          (VPG_PVS + PVS_ATTRIBCOUNT)
+ #define VPC_PVSUNIFORMCOUNT         (VPG_PVS + PVS_UNIFORMCOUNT)
+ #define VPC_PVSFUNCTIONCOUNT        (VPG_PVS + PVS_FUNCTIONCOUNT)
++#define VPC_PVSSOURCE               (VPG_PVS + PVS_SOURCE)
+ 
+ #define VPC_PPSINSTRCOUNT           (VPG_PPS + PPS_INSTRCOUNT)
+ #define VPC_PPSALUINSTRCOUNT        (VPG_PPS + PPS_ALUINSTRCOUNT)
+@@ -1094,7 +325,9 @@ extern "C" {
+ #define VPC_PPSATTRIBCOUNT          (VPG_PPS + PPS_ATTRIBCOUNT)
+ #define VPC_PPSUNIFORMCOUNT         (VPG_PPS + PPS_UNIFORMCOUNT)
+ #define VPC_PPSFUNCTIONCOUNT        (VPG_PPS + PPS_FUNCTIONCOUNT)
++#define VPC_PPSSOURCE               (VPG_PPS + PPS_SOURCE)
+ 
++#define VPC_PROGRAMHANDLE           (VPG_PROG + 1)
+ 
+ #define VPG_ES20_DRAW_NO  (VPG_ES20_DRAW + 1)
+ #define VPG_ES11_DRAW_NO  (VPG_ES11_DRAW + 1)
+@@ -1118,8 +351,8 @@ typedef struct _gcsPROFILER_COUNTERS
+ 
+     /* HW vairable counters. */
+     gctUINT32       gpuCyclesCounter;
+-	gctUINT32       gpuTotalCyclesCounter;
+-	gctUINT32       gpuIdleCyclesCounter;
++    gctUINT32       gpuTotalCyclesCounter;
++    gctUINT32       gpuIdleCyclesCounter;
+     gctUINT32       gpuTotalRead64BytesPerFrame;
+     gctUINT32       gpuTotalWrite64BytesPerFrame;
+ 
+@@ -1158,7 +391,7 @@ typedef struct _gcsPROFILER_COUNTERS
+     gctUINT32       ra_total_primitive_count;
+     gctUINT32       ra_pipe_cache_miss_counter;
+     gctUINT32       ra_prefetch_cache_miss_counter;
+-	gctUINT32       ra_eez_culled_counter;
++    gctUINT32       ra_eez_culled_counter;
+ 
+     /* TX */
+     gctUINT32       tx_total_bilinear_requests;
+@@ -1190,7 +423,7 @@ typedef struct _gcsPROFILER
+     gctBOOL         enableHal;
+     gctBOOL         enableHW;
+     gctBOOL         enableSH;
+-	gctBOOL         isSyncMode;
++    gctBOOL         isSyncMode;
+ 
+     gctBOOL         useSocket;
+     gctINT          sockFd;
+@@ -1234,14 +467,17 @@ typedef struct _gcsPROFILER
+     gctUINT32       redundantStateChangeCalls;
+ #endif
+ 
+-	gctUINT32       prevVSInstCount;
+-	gctUINT32       prevVSBranchInstCount;
+-	gctUINT32       prevVSTexInstCount;
+-	gctUINT32       prevVSVertexCount;
+-	gctUINT32       prevPSInstCount;
+-	gctUINT32       prevPSBranchInstCount;
+-	gctUINT32       prevPSTexInstCount;
+-	gctUINT32       prevPSPixelCount;
++    gctUINT32       prevVSInstCount;
++    gctUINT32       prevVSBranchInstCount;
++    gctUINT32       prevVSTexInstCount;
++    gctUINT32       prevVSVertexCount;
++    gctUINT32       prevPSInstCount;
++    gctUINT32       prevPSBranchInstCount;
++    gctUINT32       prevPSTexInstCount;
++    gctUINT32       prevPSPixelCount;
++
++    char*           psSource;
++    char*           vsSource;
+ 
+ }
+ gcsPROFILER;
+@@ -1315,6 +551,18 @@ gcoPROFILER_Count(
+ 	IN gctINT Value
+ 	);
+ 
++gceSTATUS
++gcoPROFILER_ShaderSourceFS(
++    IN gcoHAL Hal,
++    IN char* source
++    );
++
++gceSTATUS
++gcoPROFILER_ShaderSourceVS(
++    IN gcoHAL Hal,
++    IN char* source
++    );
++
+ /* Profile input vertex shader. */
+ gceSTATUS
+ gcoPROFILER_ShaderVS(
+diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_raster.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_raster.h
+index bc4171e..6e4d830 100644
+--- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_raster.h
++++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_raster.h
+@@ -568,6 +568,23 @@ gco2D_MonoBlit(
+ 	IN gceSURF_FORMAT DestFormat
+ 	);
+ 
++gceSTATUS
++gco2D_MonoBlitEx(
++    IN gco2D        Engine,
++    IN gctPOINTER   StreamBits,
++    IN gctINT32     StreamStride,
++    IN gctINT32     StreamWidth,
++    IN gctINT32     StreamHeight,
++    IN gctINT32     StreamX,
++    IN gctINT32     StreamY,
++    IN gctUINT32    FgColor,
++    IN gctUINT32    BgColor,
++    IN gcsRECT_PTR  SrcRect,
++    IN gcsRECT_PTR  DstRect,
++    IN gctUINT8     FgRop,
++    IN gctUINT8     BgRop
++    );
++
+ /* Set kernel size. */
+ gceSTATUS
+ gco2D_SetKernelSize(
+@@ -942,6 +959,15 @@ gco2D_SetSourceTileStatus(
+     );
+ 
+ gceSTATUS
++gco2D_SetTargetTileStatus(
++    IN gco2D Engine,
++    IN gce2D_TILE_STATUS_CONFIG TileStatusConfig,
++    IN gceSURF_FORMAT CompressedFormat,
++    IN gctUINT32 ClearValue,
++    IN gctUINT32 GpuAddress
++    );
++
++gceSTATUS
+ gco2D_QueryU32(
+     IN gco2D Engine,
+     IN gce2D_QUERY Item,
+@@ -955,6 +981,28 @@ gco2D_SetStateU32(
+     IN gctUINT32 Value
+     );
+ 
++gceSTATUS
++gco2D_SetStateArrayI32(
++    IN gco2D Engine,
++    IN gce2D_STATE State,
++    IN gctINT32_PTR Array,
++    IN gctINT32 ArraySize
++    );
++
++gceSTATUS
++gco2D_SetStateArrayU32(
++    IN gco2D Engine,
++    IN gce2D_STATE State,
++    IN gctUINT32_PTR Array,
++    IN gctINT32 ArraySize
++    );
++
++gceSTATUS
++gco2D_SetTargetRect(
++    IN gco2D Engine,
++    IN gcsRECT_PTR Rect
++    );
++
+ #ifdef __cplusplus
+ }
+ #endif
+diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_types.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_types.h
+index 5c0877d..14801aa 100644
+--- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_types.h
++++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_types.h
+@@ -128,6 +128,7 @@ typedef int                     gctBOOL;
+ typedef gctBOOL *               gctBOOL_PTR;
+ 
+ typedef int                     gctINT;
++typedef long                    gctLONG;
+ typedef signed char             gctINT8;
+ typedef signed short            gctINT16;
+ typedef signed int              gctINT32;
+@@ -171,6 +172,7 @@ typedef void *                  gctFILE;
+ typedef void *                  gctSIGNAL;
+ typedef void *                  gctWINDOW;
+ typedef void *                  gctIMAGE;
++typedef void *                  gctSYNC_POINT;
+ 
+ typedef void *					gctSEMAPHORE;
+ 
+@@ -941,12 +943,19 @@ typedef struct _gcsHAL_FRAME_INFO
+     OUT gctUINT                 readRequests[8];
+     OUT gctUINT                 writeRequests[8];
+ 
++    /* FE counters. */
++    OUT gctUINT                 drawCount;
++    OUT gctUINT                 vertexOutCount;
++    OUT gctUINT                 vertexMissCount;
++
+     /* 3D counters. */
+     OUT gctUINT                 vertexCount;
+     OUT gctUINT                 primitiveCount;
+     OUT gctUINT                 rejectedPrimitives;
+     OUT gctUINT                 culledPrimitives;
+     OUT gctUINT                 clippedPrimitives;
++    OUT gctUINT                 droppedPrimitives;
++    OUT gctUINT                 frustumClippedPrimitives;
+     OUT gctUINT                 outPrimitives;
+     OUT gctUINT                 inPrimitives;
+     OUT gctUINT                 culledQuadCount;
+@@ -964,18 +973,86 @@ typedef struct _gcsHAL_FRAME_INFO
+     OUT gctUINT                 shaderCycles;
+     OUT gctUINT                 vsInstructionCount;
+     OUT gctUINT                 vsTextureCount;
++    OUT gctUINT                 vsBranchCount;
++    OUT gctUINT                 vsVertices;
+     OUT gctUINT                 psInstructionCount;
+     OUT gctUINT                 psTextureCount;
++    OUT gctUINT                 psBranchCount;
++    OUT gctUINT                 psPixels;
+ 
+     /* Texture counters. */
+     OUT gctUINT                 bilinearRequests;
+     OUT gctUINT                 trilinearRequests;
+-    OUT gctUINT                 txBytes8;
++    OUT gctUINT                 txBytes8[2];
+     OUT gctUINT                 txHitCount;
+     OUT gctUINT                 txMissCount;
+ }
+ gcsHAL_FRAME_INFO;
+ 
++typedef enum _gcePATCH_ID
++{
++    gcePATCH_UNKNOWN = 0xFFFFFFFF,
++
++    /* Benchmark list*/
++    gcePATCH_GLB11 = 0x0,
++    gcePATCH_GLB21,
++    gcePATCH_GLB25,
++    gcePATCH_GLB27,
++
++    gcePATCH_BM21,
++    gcePATCH_MM,
++    gcePATCH_MM06,
++    gcePATCH_MM07,
++    gcePATCH_QUADRANT,
++    gcePATCH_ANTUTU,
++    gcePATCH_SMARTBENCH,
++    gcePATCH_JPCT,
++    gcePATCH_NENAMARK,
++    gcePATCH_NENAMARK2,
++    gcePATCH_NEOCORE,
++    gcePATCH_GLB,
++    gcePATCH_GB,
++    gcePATCH_RTESTVA,
++    gcePATCH_BMX,
++    gcePATCH_BMGUI,
++
++    /* Game list */
++    gcePATCH_NBA2013,
++    gcePATCH_BARDTALE,
++    gcePATCH_BUSPARKING3D,
++    gcePATCH_FISHBOODLE,
++    gcePATCH_SUBWAYSURFER,
++    gcePATCH_HIGHWAYDRIVER,
++    gcePATCH_PREMIUM,
++    gcePATCH_RACEILLEGAL,
++    gcePATCH_BLABLA,
++    gcePATCH_MEGARUN,
++    gcePATCH_GALAXYONFIRE2,
++    gcePATCH_GLOFTR3HM,
++    gcePATCH_GLOFTSXHM,
++    gcePATCH_GLOFTF3HM,
++    gcePATCH_GLOFTGANG,
++    gcePATCH_XRUNNER,
++    gcePATCH_WP,
++    gcePATCH_DEVIL,
++    gcePATCH_HOLYARCH,
++    gcePATCH_MUSE,
++    gcePATCH_SG,
++    gcePATCH_SIEGECRAFT,
++    gcePATCH_CARCHALLENGE,
++    gcePATCH_HEROESCALL,
++    gcePATCH_MONOPOLY,
++    gcePATCH_CTGL20,
++    gcePATCH_FIREFOX,
++    gcePATCH_CHORME,
++    gcePATCH_DUOKANTV,
++    gcePATCH_TESTAPP,
++
++    /* Count enum*/
++    gcePATCH_COUNT,
++}
++gcePATCH_ID;
++
+ #if gcdLINK_QUEUE_SIZE
+ typedef struct _gckLINKDATA * gckLINKDATA;
+ struct _gckLINKDATA
+diff --git a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_version.h b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_version.h
+index 03cb4d6..2eab666 100644
+--- a/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_version.h
++++ b/drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_version.h
+@@ -28,7 +28,7 @@
+ 
+ #define gcvVERSION_PATCH        9
+ 
+-#define gcvVERSION_BUILD     6622
++#define gcvVERSION_BUILD     9754
+ 
+ #define gcvVERSION_DATE      __DATE__
+ 
+diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.c
+index 4d48bd5..b029428 100644
+--- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.c
++++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.c
+@@ -25,7 +25,9 @@
+ #include <linux/mm.h>
+ #include <linux/mman.h>
+ #include <linux/slab.h>
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
+ #include <mach/hardware.h>
++#endif
+ #include <linux/pm_runtime.h>
+ 
+ #define _GC_OBJ_ZONE    gcvZONE_DEVICE
+@@ -305,6 +307,7 @@ gckGALDEVICE_Construct(
+     IN gctUINT LogFileSize,
+     IN struct device *pdev,
+     IN gctINT PowerManagement,
++    IN gctINT GpuProfiler,
+     OUT gckGALDEVICE *Device
+     )
+ {
+@@ -369,6 +372,10 @@ gckGALDEVICE_Construct(
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0)
+     /*get gpu regulator*/
+     device->gpu_regulator = regulator_get(pdev, "cpu_vddgpu");
++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
++    device->gpu_regulator = regulator_get(pdev, "vddpu");
++#endif
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) || LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
+     if (IS_ERR(device->gpu_regulator)) {
+ 	gcmkTRACE_ZONE(gcvLEVEL_ERROR, gcvZONE_DRIVER,
+ 		"%s(%d): Failed to get gpu regulator  %s/%s \n",
+@@ -541,6 +548,10 @@ gckGALDEVICE_Construct(
+             device->kernels[gcvCORE_MAJOR]->hardware, PowerManagement
+             ));
+ 
++        gcmkONERROR(gckHARDWARE_SetGpuProfiler(
++            device->kernels[gcvCORE_MAJOR]->hardware, GpuProfiler
++            ));
++
+ #if COMMAND_PROCESSOR_VERSION == 1
+         /* Start the command queue. */
+         gcmkONERROR(gckCOMMAND_Start(device->kernels[gcvCORE_MAJOR]->command));
+@@ -599,6 +610,7 @@ gckGALDEVICE_Construct(
+             device->kernels[gcvCORE_2D]->hardware, PowerManagement
+             ));
+ 
++
+ #if COMMAND_PROCESSOR_VERSION == 1
+         /* Start the command queue. */
+         gcmkONERROR(gckCOMMAND_Start(device->kernels[gcvCORE_2D]->command));
+@@ -635,6 +647,7 @@ gckGALDEVICE_Construct(
+             device->kernels[gcvCORE_VG]->vg->hardware,
+             PowerManagement
+             ));
++
+ #endif
+     }
+     else
+@@ -849,6 +862,7 @@ gckGALDEVICE_Construct(
+             }
+             else
+             {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
+                 mem_region = request_mem_region(
+                     ContiguousBase, ContiguousSize, "galcore managed memory"
+                     );
+@@ -864,6 +878,7 @@ gckGALDEVICE_Construct(
+ 
+                     gcmkONERROR(gcvSTATUS_OUT_OF_RESOURCES);
+                 }
++#endif
+ 
+                 device->requestedContiguousBase  = ContiguousBase;
+                 device->requestedContiguousSize  = ContiguousSize;
+@@ -1107,7 +1122,7 @@ gckGALDEVICE_Destroy(
+             pm_runtime_disable(Device->pmdev);
+ #endif
+ 
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0)
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) || LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
+         if (Device->gpu_regulator) {
+            regulator_put(Device->gpu_regulator);
+            Device->gpu_regulator = NULL;
+diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.h b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.h
+index dde4f03..c51432f 100644
+--- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.h
++++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.h
+@@ -26,6 +26,15 @@
+ ******************************* gckGALDEVICE Structure *******************************
+ \******************************************************************************/
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
++struct contiguous_mem_pool {
++	struct dma_attrs attrs;
++	dma_addr_t phys;
++	void *virt;
++	size_t size;
++};
++#endif
++
+ typedef struct _gckGALDEVICE
+ {
+     /* Objects. */
+@@ -91,12 +100,16 @@ typedef struct _gckGALDEVICE
+     struct clk         *clk_2d_axi;
+     struct clk         *clk_vg_axi;
+ 
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0)
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) || LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
+     /*Power management.*/
+     struct regulator      *gpu_regulator;
+ #endif
+ 	/*Run time pm*/
+ 	struct device		*pmdev;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
++	struct contiguous_mem_pool *pool;
++	struct reset_control *rstc[gcdMAX_GPU_COUNT];
++#endif
+ }
+ * gckGALDEVICE;
+ 
+@@ -171,6 +184,7 @@ gceSTATUS gckGALDEVICE_Construct(
+     IN gctUINT LogFileSize,
+     IN struct device *pdev,
+     IN gctINT PowerManagement,
++    IN gctINT GpuProfiler,
+     OUT gckGALDEVICE *Device
+     );
+ 
+diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_driver.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_driver.c
+index bacd531..88a7e4e6 100644
+--- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_driver.c
++++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_driver.c
+@@ -1,7 +1,7 @@
+ /****************************************************************************
+ *
+ *    Copyright (C) 2005 - 2013 by Vivante Corp.
+-*    Copyright (C) 2011-2012 Freescale Semiconductor, Inc.
++*    Copyright (C) 2011-2013 Freescale Semiconductor, Inc.
+ *
+ *    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
+@@ -69,14 +69,26 @@ task_notify_func(struct notifier_block *self, unsigned long val, void *data)
+ #include <mach/viv_gpu.h>
+ #else
+ #include <linux/pm_runtime.h>
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
+ #include <mach/busfreq.h>
++#else
++#include <linux/reset.h>
++#endif
+ #endif
+ /* Zone used for header/footer. */
+ #define _GC_OBJ_ZONE    gcvZONE_DRIVER
+ 
+ #if gcdENABLE_FSCALE_VAL_ADJUST
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
++#include <linux/device_cooling.h>
++#define REG_THERMAL_NOTIFIER(a) register_devfreq_cooling_notifier(a);
++#define UNREG_THERMAL_NOTIFIER(a) unregister_devfreq_cooling_notifier(a);
++#else
+ extern int register_thermal_notifier(struct notifier_block *nb);
+ extern int unregister_thermal_notifier(struct notifier_block *nb);
++#define REG_THERMAL_NOTIFIER(a) register_thermal_notifier(a);
++#define UNREG_THERMAL_NOTIFIER(a) unregister_thermal_notifier(a);
++#endif
+ #endif
+ 
+ MODULE_DESCRIPTION("Vivante Graphics Driver");
+@@ -116,7 +128,11 @@ module_param(registerMemBaseVG, ulong, 0644);
+ static ulong registerMemSizeVG = 2 << 10;
+ module_param(registerMemSizeVG, ulong, 0644);
+ 
++#if gcdENABLE_FSCALE_VAL_ADJUST
++static ulong contiguousSize = 128 << 20;
++#else
+ static ulong contiguousSize = 4 << 20;
++#endif
+ module_param(contiguousSize, ulong, 0644);
+ 
+ static ulong contiguousBase = 0;
+@@ -134,6 +150,9 @@ module_param(compression, int, 0644);
+ static int powerManagement = 1;
+ module_param(powerManagement, int, 0644);
+ 
++static int gpuProfiler = 0;
++module_param(gpuProfiler, int, 0644);
++
+ static int signal = 48;
+ module_param(signal, int, 0644);
+ 
+@@ -786,7 +805,9 @@ static int drv_init(struct device *pdev)
+ 
+     printk(KERN_INFO "Galcore version %d.%d.%d.%d\n",
+         gcvVERSION_MAJOR, gcvVERSION_MINOR, gcvVERSION_PATCH, gcvVERSION_BUILD);
+-
++    /* when enable gpu profiler, we need to turn off gpu powerMangement */
++    if(gpuProfiler)
++        powerManagement = 0;
+     if (showArgs)
+     {
+         printk("galcore options:\n");
+@@ -818,6 +839,7 @@ static int drv_init(struct device *pdev)
+         printk("  physSize          = 0x%08lX\n", physSize);
+         printk("  logFileSize       = %d KB \n",  logFileSize);
+         printk("  powerManagement   = %d\n",      powerManagement);
++        printk("  gpuProfiler   = %d\n",      gpuProfiler);
+ #if ENABLE_GPU_CLOCK_BY_DRIVER
+         printk("  coreClock       = %lu\n",     coreClock);
+ #endif
+@@ -841,9 +863,14 @@ static int drv_init(struct device *pdev)
+         logFileSize,
+         pdev,
+         powerManagement,
++        gpuProfiler,
+         &device
+         ));
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
++	device->pool = dev_get_drvdata(pdev);
++#endif
++
+     /* Start the GAL device. */
+     gcmkONERROR(gckGALDEVICE_Start(device));
+ 
+@@ -1028,11 +1055,18 @@ static struct notifier_block thermal_hot_pm_notifier = {
+ 
+ 
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)
++static int gpu_probe(struct platform_device *pdev)
++#else
+ static int __devinit gpu_probe(struct platform_device *pdev)
++#endif
+ {
+     int ret = -ENODEV;
+     struct resource* res;
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
++	struct contiguous_mem_pool *pool;
++	struct reset_control *rstc;
++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0)
+ 	struct device_node *dn =pdev->dev.of_node;
+ 	const u32 *prop;
+ #else
+@@ -1077,7 +1111,22 @@ static int __devinit gpu_probe(struct platform_device *pdev)
+         registerMemSizeVG = res->end - res->start + 1;
+     }
+ 
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
++	pool = devm_kzalloc(&pdev->dev, sizeof(*pool), GFP_KERNEL);
++	if (!pool)
++		return -ENOMEM;
++	pool->size = contiguousSize;
++	init_dma_attrs(&pool->attrs);
++	dma_set_attr(DMA_ATTR_WRITE_COMBINE, &pool->attrs);
++	pool->virt = dma_alloc_attrs(&pdev->dev, pool->size, &pool->phys,
++				     GFP_KERNEL, &pool->attrs);
++	if (!pool->virt) {
++		dev_err(&pdev->dev, "Failed to allocate contiguous memory\n");
++		return -ENOMEM;
++	}
++	contiguousBase = pool->phys;
++	dev_set_drvdata(&pdev->dev, pool);
++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0)
+ 	prop = of_get_property(dn, "contiguousbase", NULL);
+ 	if(prop)
+ 		contiguousBase = *prop;
+@@ -1095,30 +1144,56 @@ static int __devinit gpu_probe(struct platform_device *pdev)
+ 
+     if (!ret)
+     {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
++	rstc = devm_reset_control_get(&pdev->dev, "gpu3d");
++	galDevice->rstc[gcvCORE_MAJOR] = IS_ERR(rstc) ? NULL : rstc;
++
++	rstc = devm_reset_control_get(&pdev->dev, "gpu2d");
++	galDevice->rstc[gcvCORE_2D] = IS_ERR(rstc) ? NULL : rstc;
++
++	rstc = devm_reset_control_get(&pdev->dev, "gpuvg");
++	galDevice->rstc[gcvCORE_VG] = IS_ERR(rstc) ? NULL : rstc;
++#endif
+         platform_set_drvdata(pdev, galDevice);
+ 
+ #if gcdENABLE_FSCALE_VAL_ADJUST
+-        if(galDevice->kernels[gcvCORE_MAJOR])
+-            register_thermal_notifier(&thermal_hot_pm_notifier);
++        if (galDevice->kernels[gcvCORE_MAJOR])
++            REG_THERMAL_NOTIFIER(&thermal_hot_pm_notifier);
+ #endif
+         gcmkFOOTER_NO();
+         return ret;
+     }
+ #if gcdENABLE_FSCALE_VAL_ADJUST
+-    unregister_thermal_notifier(&thermal_hot_pm_notifier);
++    UNREG_THERMAL_NOTIFIER(&thermal_hot_pm_notifier);
++#endif
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
++	dma_free_attrs(&pdev->dev, pool->size, pool->virt, pool->phys,
++		       &pool->attrs);
+ #endif
+     gcmkFOOTER_ARG(KERN_INFO "Failed to register gpu driver: %d\n", ret);
+     return ret;
+ }
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)
++static int gpu_remove(struct platform_device *pdev)
++#else
+ static int __devexit gpu_remove(struct platform_device *pdev)
++#endif
+ {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
++	gckGALDEVICE device = platform_get_drvdata(pdev);
++	struct contiguous_mem_pool *pool = device->pool;
++#endif
+     gcmkHEADER();
+ #if gcdENABLE_FSCALE_VAL_ADJUST
+     if(galDevice->kernels[gcvCORE_MAJOR])
+-        unregister_thermal_notifier(&thermal_hot_pm_notifier);
++        UNREG_THERMAL_NOTIFIER(&thermal_hot_pm_notifier);
+ #endif
+     drv_exit();
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
++	dma_free_attrs(&pdev->dev, pool->size, pool->virt, pool->phys,
++		       &pool->attrs);
++#endif
+     gcmkFOOTER_NO();
+     return 0;
+ }
+@@ -1254,13 +1329,17 @@ MODULE_DEVICE_TABLE(of, mxs_gpu_dt_ids);
+ #ifdef CONFIG_PM
+ static int gpu_runtime_suspend(struct device *dev)
+ {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
+ 	release_bus_freq(BUS_FREQ_HIGH);
++#endif
+ 	return 0;
+ }
+ 
+ static int gpu_runtime_resume(struct device *dev)
+ {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
+ 	request_bus_freq(BUS_FREQ_HIGH);
++#endif
+ 	return 0;
+ }
+ 
+@@ -1284,7 +1363,11 @@ static const struct dev_pm_ops gpu_pm_ops = {
+ 
+ static struct platform_driver gpu_driver = {
+     .probe      = gpu_probe,
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)
++    .remove     = gpu_remove,
++#else
+     .remove     = __devexit_p(gpu_remove),
++#endif
+ 
+     .suspend    = gpu_suspend,
+     .resume     = gpu_resume,
+diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c
+index e7edc39..331c73f 100644
+--- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c
++++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c
+@@ -30,19 +30,30 @@
+ #include <linux/dma-mapping.h>
+ #include <linux/slab.h>
+ #include <linux/idr.h>
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
+ #include <mach/hardware.h>
++#endif
+ #include <linux/workqueue.h>
+ #include <linux/idr.h>
+ #if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,23)
+ #include <linux/math64.h>
+ #endif
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
++#include <linux/reset.h>
++static inline void imx_gpc_power_up_pu(bool flag) {}
++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0)
+ #include <mach/common.h>
+ #endif
+ #include <linux/delay.h>
+ #include <linux/pm_runtime.h>
+ 
+ 
++#if gcdANDROID_NATIVE_FENCE_SYNC
++#include <linux/file.h>
++#include "gc_hal_kernel_sync.h"
++#endif
++
++
+ #define _GC_OBJ_ZONE    gcvZONE_OS
+ 
+ /*******************************************************************************
+@@ -148,6 +159,7 @@ typedef struct _gcsINTEGER_DB
+ {
+     struct idr                  idr;
+     spinlock_t                  lock;
++    gctINT                      curr;
+ }
+ gcsINTEGER_DB;
+ 
+@@ -180,6 +192,14 @@ struct _gckOS
+     /* signal id database. */
+     gcsINTEGER_DB               signalDB;
+ 
++#if gcdANDROID_NATIVE_FENCE_SYNC
++    /* Lock. */
++    gctPOINTER                  syncPointMutex;
++
++    /* sync point id database. */
++    gcsINTEGER_DB               syncPointDB;
++#endif
++
+     gcsUSER_MAPPING_PTR         userMap;
+     gctPOINTER                  debugLock;
+ 
+@@ -215,6 +235,25 @@ typedef struct _gcsSIGNAL
+ }
+ gcsSIGNAL;
+ 
++#if gcdANDROID_NATIVE_FENCE_SYNC
++typedef struct _gcsSYNC_POINT * gcsSYNC_POINT_PTR;
++typedef struct _gcsSYNC_POINT
++{
++    /* The reference counter. */
++    atomic_t ref;
++
++    /* State. */
++    atomic_t state;
++
++    /* timeline. */
++    struct sync_timeline * timeline;
++
++    /* ID. */
++    gctUINT32 id;
++}
++gcsSYNC_POINT;
++#endif
++
+ typedef struct _gcsPageInfo * gcsPageInfo_PTR;
+ typedef struct _gcsPageInfo
+ {
+@@ -767,7 +806,32 @@ _AllocateIntegerId(
+     )
+ {
+     int result;
++    gctINT next;
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0)
++    idr_preload(GFP_KERNEL | gcdNOWARN);
+ 
++    spin_lock(&Database->lock);
++
++    next = (Database->curr + 1 <= 0) ? 1 : Database->curr + 1;
++    result = idr_alloc(&Database->idr, KernelPointer, next, 0, GFP_ATOMIC);
++
++    if (!result)
++    {
++        Database->curr = *Id;
++    }
++
++    spin_unlock(&Database->lock);
++
++    idr_preload_end();
++
++    if (result < 0)
++    {
++        return gcvSTATUS_OUT_OF_RESOURCES;
++    }
++
++    *Id = result;
++#else
+ again:
+     if (idr_pre_get(&Database->idr, GFP_KERNEL | gcdNOWARN) == 0)
+     {
+@@ -776,8 +840,15 @@ again:
+ 
+     spin_lock(&Database->lock);
+ 
+-    /* Try to get a id greater than 0. */
+-    result = idr_get_new_above(&Database->idr, KernelPointer, 1, Id);
++    next = (Database->curr + 1 <= 0) ? 1 : Database->curr + 1;
++
++    /* Try to get a id greater than current id. */
++    result = idr_get_new_above(&Database->idr, KernelPointer, next, Id);
++
++    if (!result)
++    {
++        Database->curr = *Id;
++    }
+ 
+     spin_unlock(&Database->lock);
+ 
+@@ -790,6 +861,7 @@ again:
+     {
+         return gcvSTATUS_OUT_OF_RESOURCES;
+     }
++#endif
+ 
+     return gcvSTATUS_OK;
+ }
+@@ -1008,6 +1080,21 @@ gckOS_Construct(
+     /* Initialize signal id database. */
+     idr_init(&os->signalDB.idr);
+ 
++#if gcdANDROID_NATIVE_FENCE_SYNC
++    /*
++     * Initialize the sync point manager.
++     */
++
++    /* Initialize mutex. */
++    gcmkONERROR(gckOS_CreateMutex(os, &os->syncPointMutex));
++
++    /* Initialize sync point id database lock. */
++    spin_lock_init(&os->syncPointDB.lock);
++
++    /* Initialize sync point id database. */
++    idr_init(&os->syncPointDB.idr);
++#endif
++
+ #if gcdUSE_NON_PAGED_MEMORY_CACHE
+     os->cacheSize = 0;
+     os->cacheHead = gcvNULL;
+@@ -1031,6 +1118,15 @@ gckOS_Construct(
+     return gcvSTATUS_OK;
+ 
+ OnError:
++
++#if gcdANDROID_NATIVE_FENCE_SYNC
++    if (os->syncPointMutex != gcvNULL)
++    {
++        gcmkVERIFY_OK(
++            gckOS_DeleteMutex(os, os->syncPointMutex));
++    }
++#endif
++
+     if (os->signalMutex != gcvNULL)
+     {
+         gcmkVERIFY_OK(
+@@ -1104,6 +1200,15 @@ gckOS_Destroy(
+     _FreeAllNonPagedMemoryCache(Os);
+ #endif
+ 
++#if gcdANDROID_NATIVE_FENCE_SYNC
++    /*
++     * Destroy the sync point manager.
++     */
++
++    /* Destroy the mutex. */
++    gcmkVERIFY_OK(gckOS_DeleteMutex(Os, Os->syncPointMutex));
++#endif
++
+     /*
+      * Destroy the signal manager.
+      */
+@@ -1961,12 +2066,6 @@ gckOS_AllocateNonPagedMemory(
+         gcmkONERROR(gcvSTATUS_OUT_OF_MEMORY);
+     }
+ 
+-    if ((Os->device->baseAddress & 0x80000000) != (mdl->dmaHandle & 0x80000000))
+-    {
+-        mdl->dmaHandle = (mdl->dmaHandle & ~0x80000000)
+-                       | (Os->device->baseAddress & 0x80000000);
+-    }
+-
+     mdl->addr = addr;
+ 
+     /* Return allocated memory. */
+@@ -2307,6 +2406,7 @@ gckOS_ReadRegisterEx(
+ 
+     /* Verify the arguments. */
+     gcmkVERIFY_OBJECT(Os, gcvOBJ_OS);
++    gcmkVERIFY_ARGUMENT(Address < Os->device->requestedRegisterMemSizes[Core]);
+     gcmkVERIFY_ARGUMENT(Data != gcvNULL);
+ 
+     *Data = readl((gctUINT8 *)Os->device->registerBases[Core] + Address);
+@@ -2357,6 +2457,8 @@ gckOS_WriteRegisterEx(
+ {
+     gcmkHEADER_ARG("Os=0x%X Core=%d Address=0x%X Data=0x%08x", Os, Core, Address, Data);
+ 
++    gcmkVERIFY_ARGUMENT(Address < Os->device->requestedRegisterMemSizes[Core]);
++
+     writel(Data, (gctUINT8 *)Os->device->registerBases[Core] + Address);
+ 
+     /* Success. */
+@@ -2799,16 +2901,25 @@ gckOS_MapPhysical(
+ 
+     if (mdl == gcvNULL)
+     {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
++	struct contiguous_mem_pool *pool = Os->device->pool;
++
++	if (Physical >= pool->phys && Physical < pool->phys + pool->size)
++		logical = (gctPOINTER)(Physical - pool->phys + pool->virt);
++	else
++		logical = gcvNULL;
++#else
+         /* Map memory as cached memory. */
+         request_mem_region(physical, Bytes, "MapRegion");
+         logical = (gctPOINTER) ioremap_nocache(physical, Bytes);
++#endif
+ 
+         if (logical == gcvNULL)
+         {
+             gcmkTRACE_ZONE(
+                 gcvLEVEL_INFO, gcvZONE_OS,
+-                "%s(%d): Failed to ioremap",
+-                __FUNCTION__, __LINE__
++                "%s(%d): Failed to map physical address 0x%08x",
++                __FUNCTION__, __LINE__, Physical
+                 );
+ 
+             MEMORY_UNLOCK(Os);
+@@ -3621,7 +3732,7 @@ gckOS_Delay(
+     if (Delay > 0)
+     {
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28)
+-        ktime_t delay = ktime_set(0, Delay * NSEC_PER_MSEC);
++        ktime_t delay = ktime_set(Delay/1000, (Delay%1000) * NSEC_PER_MSEC);
+         __set_current_state(TASK_UNINTERRUPTIBLE);
+         schedule_hrtimeout(&delay, HRTIMER_MODE_REL);
+ #else
+@@ -3881,8 +3992,13 @@ gckOS_AllocatePagedMemoryEx(
+ 
+     if (Contiguous)
+     {
+-        /* Get contiguous pages, and suppress warning (stack dump) from kernel when
+-           we run out of memory. */
++        gctUINT32 order = get_order(bytes);
++
++        if (order >= MAX_ORDER)
++        {
++            gcmkONERROR(gcvSTATUS_OUT_OF_MEMORY);
++        }
++
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)
+         addr =
+             alloc_pages_exact(numPages * PAGE_SIZE, GFP_KERNEL | gcdNOWARN | __GFP_NORETRY);
+@@ -3894,12 +4010,12 @@ gckOS_AllocatePagedMemoryEx(
+         mdl->exact = gcvTRUE;
+ #else
+         mdl->u.contiguousPages =
+-            alloc_pages(GFP_KERNEL | gcdNOWARN | __GFP_NORETRY, GetOrder(numPages));
++            alloc_pages(GFP_KERNEL | gcdNOWARN | __GFP_NORETRY, order);
+ #endif
+         if (mdl->u.contiguousPages == gcvNULL)
+         {
+             mdl->u.contiguousPages =
+-                alloc_pages(GFP_KERNEL | __GFP_HIGHMEM | gcdNOWARN, GetOrder(numPages));
++                alloc_pages(GFP_KERNEL | __GFP_HIGHMEM | gcdNOWARN, order);
+ 
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)
+             mdl->exact = gcvFALSE;
+@@ -4239,13 +4355,13 @@ gckOS_LockPages(
+         }
+ 
+         mdlMap->vma->vm_flags |= gcdVM_FLAGS;
+-#if !gcdPAGED_MEMORY_CACHEABLE
++
+         if (Cacheable == gcvFALSE)
+         {
+             /* Make this mapping non-cached. */
+             mdlMap->vma->vm_page_prot = gcmkPAGED_MEMROY_PROT(mdlMap->vma->vm_page_prot);
+         }
+-#endif
++
+         addr = mdl->addr;
+ 
+         /* Now map all the vmalloc pages to this user address. */
+@@ -5336,6 +5452,7 @@ OnError:
+         {
+             /* Get the user pages. */
+             down_read(&current->mm->mmap_sem);
++
+             result = get_user_pages(current,
+                     current->mm,
+                     memory & PAGE_MASK,
+@@ -5345,105 +5462,127 @@ OnError:
+                     pages,
+                     gcvNULL
+                     );
++
+             up_read(&current->mm->mmap_sem);
+ 
+             if (result <=0 || result < pageCount)
+             {
+                 struct vm_area_struct *vma;
+ 
+-                /* Free the page table. */
+-                if (pages != gcvNULL)
++                /* Release the pages if any. */
++                if (result > 0)
+                 {
+-                    /* Release the pages if any. */
+-                    if (result > 0)
++                    for (i = 0; i < result; i++)
+                     {
+-                        for (i = 0; i < result; i++)
++                        if (pages[i] == gcvNULL)
+                         {
+-                            if (pages[i] == gcvNULL)
+-                            {
+-                                break;
+-                            }
+-
+-                            page_cache_release(pages[i]);
++                            break;
+                         }
++
++                        page_cache_release(pages[i]);
++                        pages[i] = gcvNULL;
+                     }
+ 
+-                    kfree(pages);
+-                    pages = gcvNULL;
++                    result = 0;
+                 }
+ 
+                 vma = find_vma(current->mm, memory);
+ 
+-                if (vma && (vma->vm_flags & VM_PFNMAP) )
++                if (vma && (vma->vm_flags & VM_PFNMAP))
+                 {
+                     pte_t       * pte;
+                     spinlock_t  * ptl;
+-                    unsigned long pfn;
++                    gctUINTPTR_T logical = memory;
+ 
+-                    pgd_t * pgd = pgd_offset(current->mm, memory);
+-                    pud_t * pud = pud_offset(pgd, memory);
+-                    if (pud)
++                    for (i = 0; i < pageCount; i++)
+                     {
+-                        pmd_t * pmd = pmd_offset(pud, memory);
+-                        pte = pte_offset_map_lock(current->mm, pmd, memory, &ptl);
+-                        if (!pte)
++                        pgd_t * pgd = pgd_offset(current->mm, logical);
++                        pud_t * pud = pud_offset(pgd, logical);
++
++                        if (pud)
++                        {
++                            pmd_t * pmd = pmd_offset(pud, logical);
++                            pte = pte_offset_map_lock(current->mm, pmd, logical, &ptl);
++                            if (!pte)
++                            {
++                                gcmkONERROR(gcvSTATUS_OUT_OF_RESOURCES);
++                            }
++                        }
++                        else
+                         {
+                             gcmkONERROR(gcvSTATUS_OUT_OF_RESOURCES);
+                         }
++
++                        pages[i] = pte_page(*pte);
++                        pte_unmap_unlock(pte, ptl);
++
++                        /* Advance to next. */
++                        logical += PAGE_SIZE;
+                     }
+-                    else
++                }
++                else
++                {
++                    gcmkONERROR(gcvSTATUS_OUT_OF_RESOURCES);
++                }
++
++                /* Check if this memory is contiguous for old mmu. */
++                if (Os->device->kernels[Core]->hardware->mmuVersion == 0)
++                {
++                    for (i = 1; i < pageCount; i++)
+                     {
+-                        gcmkONERROR(gcvSTATUS_OUT_OF_RESOURCES);
++                        if (pages[i] != nth_page(pages[0], i))
++                        {
++                            /* Non-contiguous. */
++                            break;
++                        }
+                     }
+ 
+-                    pfn      = pte_pfn(*pte);
+-
+-                    physical = (pfn << PAGE_SHIFT) | (memory & ~PAGE_MASK);
++                    if (i == pageCount)
++                    {
++                        /* Contiguous memory. */
++                        physical = page_to_phys(pages[0]) | (memory & ~PAGE_MASK);
+ 
+-                    pte_unmap_unlock(pte, ptl);
++                        if (!((physical - Os->device->baseAddress) & 0x80000000))
++                        {
++                            kfree(pages);
++                            pages = gcvNULL;
+ 
+-                    if ((Os->device->kernels[Core]->hardware->mmuVersion == 0)
+-                            && !((physical - Os->device->baseAddress) & 0x80000000))
+-                    {
+-                        info->pages = gcvNULL;
+-                        info->pageTable = gcvNULL;
++                            info->pages = gcvNULL;
++                            info->pageTable = gcvNULL;
+ 
+-                        MEMORY_MAP_UNLOCK(Os);
++                            MEMORY_MAP_UNLOCK(Os);
+ 
+-                        *Address = physical - Os->device->baseAddress;
+-                        *Info    = info;
++                            *Address = physical - Os->device->baseAddress;
++                            *Info    = info;
+ 
+-                        gcmkFOOTER_ARG("*Info=0x%X *Address=0x%08x",
+-                                *Info, *Address);
++                            gcmkFOOTER_ARG("*Info=0x%X *Address=0x%08x",
++                                           *Info, *Address);
+ 
+-                        return gcvSTATUS_OK;
++                            return gcvSTATUS_OK;
++                        }
+                     }
+                 }
+-                else
++
++                /* Reference pages. */
++                for (i = 0; i < pageCount; i++)
+                 {
+-                    gcmkONERROR(gcvSTATUS_OUT_OF_RESOURCES);
++                    get_page(pages[i]);
+                 }
+             }
+         }
+ 
+-        if (pages)
+-        {
+-            for (i = 0; i < pageCount; i++)
+-            {
+-                /* Flush(clean) the data cache. */
+-                gcmkONERROR(gckOS_CacheFlush(Os, _GetProcessID(), gcvNULL,
+-                                 (gctPOINTER)(gctUINTPTR_T)page_to_phys(pages[i]),
+-                                 (gctPOINTER)(memory & PAGE_MASK) + i*PAGE_SIZE,
+-                                 PAGE_SIZE));
+-            }
+-        }
+-        else
++        for (i = 0; i < pageCount; i++)
+         {
++#ifdef CONFIG_ARM
++            gctUINT32 data;
++            get_user(data, (gctUINT32*)((memory & PAGE_MASK) + i * PAGE_SIZE));
++#endif
++
+             /* Flush(clean) the data cache. */
+             gcmkONERROR(gckOS_CacheFlush(Os, _GetProcessID(), gcvNULL,
+-                             (gctPOINTER)(gctUINTPTR_T)(physical & PAGE_MASK),
+-                             (gctPOINTER)(memory & PAGE_MASK),
+-                             PAGE_SIZE * pageCount));
++                             (gctPOINTER)(gctUINTPTR_T)page_to_phys(pages[i]),
++                             (gctPOINTER)(memory & PAGE_MASK) + i*PAGE_SIZE,
++                             PAGE_SIZE));
+         }
+ 
+ #if gcdENABLE_VG
+@@ -5464,20 +5603,14 @@ OnError:
+                                               (gctPOINTER *) &pageTable,
+                                               &address));
+         }
++
+         /* Fill the page table. */
+         for (i = 0; i < pageCount; i++)
+         {
+             gctUINT32 phys;
+             gctUINT32_PTR tab = pageTable + i * (PAGE_SIZE/4096);
+ 
+-            if (pages)
+-            {
+-                phys = page_to_phys(pages[i]);
+-            }
+-            else
+-            {
+-                phys = (physical & PAGE_MASK) + i * PAGE_SIZE;
+-            }
++            phys = page_to_phys(pages[i]);
+ 
+ #if gcdENABLE_VG
+             if (Core == gcvCORE_VG)
+@@ -6126,7 +6259,7 @@ gckOS_CacheClean(
+ #else
+     dma_sync_single_for_device(
+               gcvNULL,
+-              Physical,
++              (dma_addr_t)Physical,
+               Bytes,
+               DMA_TO_DEVICE);
+ #endif
+@@ -6205,7 +6338,7 @@ gckOS_CacheInvalidate(
+ #else
+     dma_sync_single_for_device(
+               gcvNULL,
+-              Physical,
++              (dma_addr_t)Physical,
+               Bytes,
+               DMA_FROM_DEVICE);
+ #endif
+@@ -6279,7 +6412,7 @@ gckOS_CacheFlush(
+ #else
+     dma_sync_single_for_device(
+               gcvNULL,
+-              Physical,
++              (dma_addr_t)Physical,
+               Bytes,
+               DMA_BIDIRECTIONAL);
+ #endif
+@@ -6827,6 +6960,9 @@ gckOS_SetGPUPower(
+     struct clk *clk_2dcore = Os->device->clk_2d_core;
+     struct clk *clk_2d_axi = Os->device->clk_2d_axi;
+     struct clk *clk_vg_axi = Os->device->clk_vg_axi;
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) || LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
++    int ret;
++#endif
+ 
+     gctBOOL oldClockState = gcvFALSE;
+     gctBOOL oldPowerState = gcvFALSE;
+@@ -6852,9 +6988,13 @@ gckOS_SetGPUPower(
+     }
+ 	if((Power == gcvTRUE) && (oldPowerState == gcvFALSE))
+ 	{
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0)
+-        if(!IS_ERR(Os->device->gpu_regulator))
+-            regulator_enable(Os->device->gpu_regulator);
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) || LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
++        if(!IS_ERR(Os->device->gpu_regulator)) {
++            ret = regulator_enable(Os->device->gpu_regulator);
++            if (ret != 0)
++                gckOS_Print("%s(%d): fail to enable pu regulator %d!\n",
++                    __FUNCTION__, __LINE__, ret);
++        }
+ #else
+         imx_gpc_power_up_pu(true);
+ #endif
+@@ -6969,7 +7109,7 @@ gckOS_SetGPUPower(
+ 		pm_runtime_put_sync(Os->device->pmdev);
+ #endif
+ 
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0)
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) || LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
+         if(!IS_ERR(Os->device->gpu_regulator))
+             regulator_disable(Os->device->gpu_regulator);
+ #else
+@@ -7033,6 +7173,10 @@ gckOS_ResetGPU(
+     }
+ 
+     gcmkFOOTER_NO();
++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
++	struct reset_control *rstc = Os->device->rstc[Core];
++	if (rstc)
++		reset_control_reset(rstc);
+ #else
+     imx_src_reset_gpu((int)Core);
+ #endif
+@@ -8529,3 +8673,338 @@ gckOS_GetProcessNameByPid(
+     return gcvSTATUS_OK;
+ }
+ 
++#if gcdANDROID_NATIVE_FENCE_SYNC
++
++gceSTATUS
++gckOS_CreateSyncPoint(
++    IN gckOS Os,
++    OUT gctSYNC_POINT * SyncPoint
++    )
++{
++    gceSTATUS status;
++    gcsSYNC_POINT_PTR syncPoint;
++
++    gcmkHEADER_ARG("Os=0x%X", Os);
++
++    /* Verify the arguments. */
++    gcmkVERIFY_OBJECT(Os, gcvOBJ_OS);
++
++    /* Create an sync point structure. */
++    syncPoint = (gcsSYNC_POINT_PTR) kmalloc(
++            sizeof(gcsSYNC_POINT), GFP_KERNEL | gcdNOWARN);
++
++    if (syncPoint == gcvNULL)
++    {
++        gcmkONERROR(gcvSTATUS_OUT_OF_MEMORY);
++    }
++
++    /* Initialize the sync point. */
++    atomic_set(&syncPoint->ref, 1);
++    atomic_set(&syncPoint->state, 0);
++
++    gcmkONERROR(_AllocateIntegerId(&Os->syncPointDB, syncPoint, &syncPoint->id));
++
++    *SyncPoint = (gctSYNC_POINT)(gctUINTPTR_T)syncPoint->id;
++
++    gcmkFOOTER_ARG("*SyncPonint=%d", syncPoint->id);
++    return gcvSTATUS_OK;
++
++OnError:
++    if (syncPoint != gcvNULL)
++    {
++        kfree(syncPoint);
++    }
++
++    gcmkFOOTER();
++    return status;
++}
++
++gceSTATUS
++gckOS_ReferenceSyncPoint(
++    IN gckOS Os,
++    IN gctSYNC_POINT SyncPoint
++    )
++{
++    gceSTATUS status;
++    gcsSYNC_POINT_PTR syncPoint;
++
++    gcmkHEADER_ARG("Os=0x%X", Os);
++
++    /* Verify the arguments. */
++    gcmkVERIFY_OBJECT(Os, gcvOBJ_OS);
++    gcmkVERIFY_ARGUMENT(SyncPoint != gcvNULL);
++
++    gcmkONERROR(
++        _QueryIntegerId(&Os->syncPointDB,
++                        (gctUINT32)(gctUINTPTR_T)SyncPoint,
++                        (gctPOINTER)&syncPoint));
++
++    /* Initialize the sync point. */
++    atomic_inc(&syncPoint->ref);
++
++    gcmkFOOTER_NO();
++    return gcvSTATUS_OK;
++
++OnError:
++    gcmkFOOTER();
++    return status;
++}
++
++gceSTATUS
++gckOS_DestroySyncPoint(
++    IN gckOS Os,
++    IN gctSYNC_POINT SyncPoint
++    )
++{
++    gceSTATUS status;
++    gcsSYNC_POINT_PTR syncPoint;
++    gctBOOL acquired = gcvFALSE;
++
++    gcmkHEADER_ARG("Os=0x%X SyncPoint=%d", Os, (gctUINT32)(gctUINTPTR_T)SyncPoint);
++
++    /* Verify the arguments. */
++    gcmkVERIFY_OBJECT(Os, gcvOBJ_OS);
++    gcmkVERIFY_ARGUMENT(SyncPoint != gcvNULL);
++
++    gcmkONERROR(gckOS_AcquireMutex(Os, Os->syncPointMutex, gcvINFINITE));
++    acquired = gcvTRUE;
++
++    gcmkONERROR(
++        _QueryIntegerId(&Os->syncPointDB,
++                        (gctUINT32)(gctUINTPTR_T)SyncPoint,
++                        (gctPOINTER)&syncPoint));
++
++    gcmkASSERT(syncPoint->id == (gctUINT32)(gctUINTPTR_T)SyncPoint);
++
++    if (atomic_dec_and_test(&syncPoint->ref))
++    {
++        gcmkVERIFY_OK(_DestroyIntegerId(&Os->syncPointDB, syncPoint->id));
++
++        /* Free the sgianl. */
++        syncPoint->timeline = gcvNULL;
++        kfree(syncPoint);
++    }
++
++    gcmkVERIFY_OK(gckOS_ReleaseMutex(Os, Os->syncPointMutex));
++    acquired = gcvFALSE;
++
++    /* Success. */
++    gcmkFOOTER_NO();
++    return gcvSTATUS_OK;
++
++OnError:
++    if (acquired)
++    {
++        /* Release the mutex. */
++        gcmkVERIFY_OK(gckOS_ReleaseMutex(Os, Os->syncPointMutex));
++    }
++
++    gcmkFOOTER();
++    return status;
++}
++
++gceSTATUS
++gckOS_SignalSyncPoint(
++    IN gckOS Os,
++    IN gctSYNC_POINT SyncPoint
++    )
++{
++    gceSTATUS status;
++    gcsSYNC_POINT_PTR syncPoint;
++    gctBOOL acquired = gcvFALSE;
++
++    gcmkHEADER_ARG("Os=0x%X SyncPoint=%d", Os, (gctUINT32)(gctUINTPTR_T)SyncPoint);
++
++    /* Verify the arguments. */
++    gcmkVERIFY_OBJECT(Os, gcvOBJ_OS);
++    gcmkVERIFY_ARGUMENT(SyncPoint != gcvNULL);
++
++    gcmkONERROR(gckOS_AcquireMutex(Os, Os->syncPointMutex, gcvINFINITE));
++    acquired = gcvTRUE;
++
++    gcmkONERROR(
++        _QueryIntegerId(&Os->syncPointDB,
++                        (gctUINT32)(gctUINTPTR_T)SyncPoint,
++                        (gctPOINTER)&syncPoint));
++
++    gcmkASSERT(syncPoint->id == (gctUINT32)(gctUINTPTR_T)SyncPoint);
++
++    /* Get state. */
++    atomic_set(&syncPoint->state, gcvTRUE);
++
++    /* Signal timeline. */
++    if (syncPoint->timeline)
++    {
++        sync_timeline_signal(syncPoint->timeline);
++    }
++
++    gcmkVERIFY_OK(gckOS_ReleaseMutex(Os, Os->syncPointMutex));
++    acquired = gcvFALSE;
++
++    /* Success. */
++    gcmkFOOTER_NO();
++    return gcvSTATUS_OK;
++
++OnError:
++    if (acquired)
++    {
++        /* Release the mutex. */
++        gcmkVERIFY_OK(gckOS_ReleaseMutex(Os, Os->syncPointMutex));
++    }
++
++    gcmkFOOTER();
++    return status;
++}
++
++gceSTATUS
++gckOS_QuerySyncPoint(
++    IN gckOS Os,
++    IN gctSYNC_POINT SyncPoint,
++    OUT gctBOOL_PTR State
++    )
++{
++    gceSTATUS status;
++    gcsSYNC_POINT_PTR syncPoint;
++
++    gcmkHEADER_ARG("Os=0x%X SyncPoint=%d", Os, (gctUINT32)(gctUINTPTR_T)SyncPoint);
++
++    /* Verify the arguments. */
++    gcmkVERIFY_OBJECT(Os, gcvOBJ_OS);
++    gcmkVERIFY_ARGUMENT(SyncPoint != gcvNULL);
++
++    gcmkONERROR(
++        _QueryIntegerId(&Os->syncPointDB,
++                        (gctUINT32)(gctUINTPTR_T)SyncPoint,
++                        (gctPOINTER)&syncPoint));
++
++    gcmkASSERT(syncPoint->id == (gctUINT32)(gctUINTPTR_T)SyncPoint);
++
++    /* Get state. */
++    *State = atomic_read(&syncPoint->state);
++
++    /* Success. */
++    gcmkFOOTER_ARG("*State=%d", *State);
++    return gcvSTATUS_OK;
++
++OnError:
++    gcmkFOOTER();
++    return status;
++}
++
++gceSTATUS
++gckOS_CreateSyncTimeline(
++    IN gckOS Os,
++    OUT gctHANDLE * Timeline
++    )
++{
++    struct viv_sync_timeline * timeline;
++
++    /* Create viv sync timeline. */
++    timeline = viv_sync_timeline_create("viv timeline", Os);
++
++    if (timeline == gcvNULL)
++    {
++        /* Out of memory. */
++        return gcvSTATUS_OUT_OF_MEMORY;
++    }
++
++    *Timeline = (gctHANDLE) timeline;
++    return gcvSTATUS_OK;
++}
++
++gceSTATUS
++gckOS_DestroySyncTimeline(
++    IN gckOS Os,
++    IN gctHANDLE Timeline
++    )
++{
++    struct viv_sync_timeline * timeline;
++    gcmkASSERT(Timeline != gcvNULL);
++
++    /* Destroy timeline. */
++    timeline = (struct viv_sync_timeline *) Timeline;
++    sync_timeline_destroy(&timeline->obj);
++
++    return gcvSTATUS_OK;
++}
++
++gceSTATUS
++gckOS_CreateNativeFence(
++    IN gckOS Os,
++    IN gctHANDLE Timeline,
++    IN gctSYNC_POINT SyncPoint,
++    OUT gctINT * FenceFD
++    )
++{
++    int fd = -1;
++    struct viv_sync_timeline *timeline;
++    struct sync_pt * pt = gcvNULL;
++    struct sync_fence * fence;
++    char name[32];
++    gcsSYNC_POINT_PTR syncPoint;
++    gceSTATUS status;
++
++    gcmkHEADER_ARG("Os=0x%X Timeline=0x%X SyncPoint=%d",
++                   Os, Timeline, (gctUINT)(gctUINTPTR_T)SyncPoint);
++
++    gcmkONERROR(
++        _QueryIntegerId(&Os->syncPointDB,
++                        (gctUINT32)(gctUINTPTR_T)SyncPoint,
++                        (gctPOINTER)&syncPoint));
++
++    /* Cast timeline. */
++    timeline = (struct viv_sync_timeline *) Timeline;
++
++    fd = get_unused_fd();
++
++    if (fd < 0)
++    {
++        /* Out of resources. */
++        gcmkONERROR(gcvSTATUS_OUT_OF_RESOURCES);
++    }
++
++    /* Create viv_sync_pt. */
++    pt = viv_sync_pt_create(timeline, SyncPoint);
++
++    if (pt == gcvNULL)
++    {
++        gcmkONERROR(gcvSTATUS_OUT_OF_MEMORY);
++    }
++
++    /* Reference sync_timeline. */
++    syncPoint->timeline = &timeline->obj;
++
++    /* Build fence name. */
++    snprintf(name, 32, "viv sync_fence-%u", (gctUINT)(gctUINTPTR_T)SyncPoint);
++
++    /* Create sync_fence. */
++    fence = sync_fence_create(name, pt);
++
++    if (fence == NULL)
++    {
++        gcmkONERROR(gcvSTATUS_OUT_OF_MEMORY);
++    }
++
++    /* Install fence to fd. */
++    sync_fence_install(fence, fd);
++
++    *FenceFD = fd;
++    gcmkFOOTER_ARG("*FenceFD=%d", fd);
++    return gcvSTATUS_OK;
++
++OnError:
++    /* Error roll back. */
++    if (pt)
++    {
++        sync_pt_free(pt);
++    }
++
++    if (fd > 0)
++    {
++        put_unused_fd(fd);
++    }
++
++    gcmkFOOTER();
++    return status;
++}
++#endif
+diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_sync.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_sync.c
+new file mode 100644
+index 0000000..7efae1c
+--- /dev/null
++++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_sync.c
+@@ -0,0 +1,174 @@
++/****************************************************************************
++*
++*    Copyright (C) 2005 - 2013 by Vivante Corp.
++*
++*    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., 675 Mass Ave, Cambridge, MA 02139, USA.
++*
++*****************************************************************************/
++
++
++#include <linux/kernel.h>
++#include <linux/file.h>
++#include <linux/fs.h>
++#include <linux/miscdevice.h>
++#include <linux/module.h>
++#include <linux/syscalls.h>
++#include <linux/uaccess.h>
++
++#include "gc_hal_kernel_sync.h"
++
++#if gcdANDROID_NATIVE_FENCE_SYNC
++
++static struct sync_pt *
++viv_sync_pt_dup(
++    struct sync_pt * sync_pt
++    )
++{
++    gceSTATUS status;
++    struct viv_sync_pt *pt;
++    struct viv_sync_pt *src;
++    struct viv_sync_timeline *obj;
++
++    src = (struct viv_sync_pt *) sync_pt;
++    obj = (struct viv_sync_timeline *) sync_pt->parent;
++
++    /* Create the new sync_pt. */
++    pt = (struct viv_sync_pt *)
++        sync_pt_create(&obj->obj, sizeof(struct viv_sync_pt));
++
++    pt->stamp = src->stamp;
++    pt->sync = src->sync;
++
++    /* Reference sync point. */
++    status = gckOS_ReferenceSyncPoint(obj->os, pt->sync);
++
++    if (gcmIS_ERROR(status))
++    {
++        sync_pt_free((struct sync_pt *)pt);
++        return NULL;
++    }
++
++    return (struct sync_pt *)pt;
++}
++
++static int
++viv_sync_pt_has_signaled(
++    struct sync_pt * sync_pt
++    )
++{
++    gceSTATUS status;
++    gctBOOL state;
++    struct viv_sync_pt * pt;
++    struct viv_sync_timeline * obj;
++
++    pt  = (struct viv_sync_pt *)sync_pt;
++    obj = (struct viv_sync_timeline *)sync_pt->parent;
++
++    status = gckOS_QuerySyncPoint(obj->os, pt->sync, &state);
++
++    if (gcmIS_ERROR(status))
++    {
++        /* Error. */
++        return -1;
++    }
++
++    return state;
++}
++
++static int
++viv_sync_pt_compare(
++    struct sync_pt * a,
++    struct sync_pt * b
++    )
++{
++    int ret;
++    struct viv_sync_pt * pt1 = (struct viv_sync_pt *) a;
++    struct viv_sync_pt * pt2 = (struct viv_sync_pt *) b;
++
++    ret = (pt1->stamp <  pt2->stamp) ? -1
++        : (pt1->stamp == pt2->stamp) ?  0
++        : 1;
++
++    return ret;
++}
++
++static void
++viv_sync_pt_free(
++    struct sync_pt * sync_pt
++    )
++{
++    struct viv_sync_pt * pt;
++    struct viv_sync_timeline * obj;
++
++    pt  = (struct viv_sync_pt *) sync_pt;
++    obj = (struct viv_sync_timeline *) sync_pt->parent;
++
++    gckOS_DestroySyncPoint(obj->os, pt->sync);
++}
++
++static struct sync_timeline_ops viv_timeline_ops =
++{
++    .driver_name = "viv_sync",
++    .dup = viv_sync_pt_dup,
++    .has_signaled = viv_sync_pt_has_signaled,
++    .compare = viv_sync_pt_compare,
++    .free_pt = viv_sync_pt_free,
++};
++
++struct viv_sync_timeline *
++viv_sync_timeline_create(
++    const char * name,
++    gckOS os
++    )
++{
++    struct viv_sync_timeline * obj;
++
++    obj = (struct viv_sync_timeline *)
++        sync_timeline_create(&viv_timeline_ops, sizeof(struct viv_sync_timeline), name);
++
++    obj->os    = os;
++    obj->stamp = 0;
++
++    return obj;
++}
++
++struct sync_pt *
++viv_sync_pt_create(
++    struct viv_sync_timeline * obj,
++    gctSYNC_POINT SyncPoint
++    )
++{
++    gceSTATUS status;
++    struct viv_sync_pt * pt;
++
++    pt = (struct viv_sync_pt *)
++        sync_pt_create(&obj->obj, sizeof(struct viv_sync_pt));
++
++    pt->stamp = obj->stamp++;
++    pt->sync  = SyncPoint;
++
++    /* Dup signal. */
++    status = gckOS_ReferenceSyncPoint(obj->os, SyncPoint);
++
++    if (gcmIS_ERROR(status))
++    {
++        sync_pt_free((struct sync_pt *)pt);
++        return NULL;
++    }
++
++    return (struct sync_pt *) pt;
++}
++
++#endif
+diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_sync.h b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_sync.h
+new file mode 100644
+index 0000000..6fc12e5
+--- /dev/null
++++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_sync.h
+@@ -0,0 +1,71 @@
++/****************************************************************************
++*
++*    Copyright (C) 2005 - 2013 by Vivante Corp.
++*
++*    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., 675 Mass Ave, Cambridge, MA 02139, USA.
++*
++*****************************************************************************/
++
++
++#ifndef __gc_hal_kernel_sync_h_
++#define __gc_hal_kernel_sync_h_
++
++#include <linux/types.h>
++
++#include <linux/sync.h>
++
++#include <gc_hal.h>
++#include <gc_hal_base.h>
++
++struct viv_sync_timeline
++{
++    /* Parent object. */
++    struct sync_timeline obj;
++
++    /* Timestamp when sync_pt is created. */
++    gctUINT stamp;
++
++    /* Pointer to os struct. */
++    gckOS os;
++};
++
++
++struct viv_sync_pt
++{
++    /* Parent object. */
++    struct sync_pt pt;
++
++    /* Reference sync point*/
++    gctSYNC_POINT sync;
++
++    /* Timestamp when sync_pt is created. */
++    gctUINT stamp;
++};
++
++/* Create viv_sync_timeline object. */
++struct viv_sync_timeline *
++viv_sync_timeline_create(
++    const char * Name,
++    gckOS Os
++    );
++
++/* Create viv_sync_pt object. */
++struct sync_pt *
++viv_sync_pt_create(
++    struct viv_sync_timeline * Obj,
++    gctSYNC_POINT SyncPoint
++    );
++
++#endif /* __gc_hal_kernel_sync_h_ */
+-- 
+1.7.9.5
+
diff --git a/recipes-kernel/linux/linux-imx_3.0.35.bb b/recipes-kernel/linux/linux-imx_3.0.35.bb
index 72506f2..8be5dc4 100644
--- a/recipes-kernel/linux/linux-imx_3.0.35.bb
+++ b/recipes-kernel/linux/linux-imx_3.0.35.bb
@@ -21,4 +21,6 @@ SRC_URI += "file://drm-vivante-Add-00-sufix-in-returned-bus-Id.patch \
             file://0004-ENGR00271136-Fix-build-break-when-CONFIG_CLK_DEBUG-i.patch \
             file://0005-ENGR00271359-Add-Multi-touch-support.patch \
             file://0006-Add-support-for-DVI-monitors.patch \
-            file://0007-ARM-mach-mx6-board-mx6q_sabresd-Register-SDHC3-first.patch"
+            file://0007-ARM-mach-mx6-board-mx6q_sabresd-Register-SDHC3-first.patch \
+            file://ENGR00278350-gpu-viante-4.6.9p13-kernel-part-integra.patch \
+"
-- 
1.8.5.3



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 05/12] xf86-video-imxfb-vivante: Upgrade to 3.10.17-1.0.0_beta version
  2014-01-25 22:09 [PATCH 0/12] Freescale 3.10.17-1.0.0-beta - part2 Otavio Salvador
                   ` (3 preceding siblings ...)
  2014-01-25 22:09 ` [PATCH 04/12] linux-imx (3.0.35): Allow use with 3.10.17-1.0.0 GPU Otavio Salvador
@ 2014-01-25 22:09 ` Otavio Salvador
  2014-01-27 23:43   ` Eric Nelson
  2014-01-25 22:09 ` [PATCH 06/12] gpu-viv-bin-mx6q: " Otavio Salvador
                   ` (8 subsequent siblings)
  13 siblings, 1 reply; 24+ messages in thread
From: Otavio Salvador @ 2014-01-25 22:09 UTC (permalink / raw)
  To: meta-freescale Mailing List; +Cc: Otavio Salvador

From: Lauren Post <lauren.post@freescale.com>

Signed-off-by: Lauren Post <lauren.post@freescale.com>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
---

 ...alpha.2.bb => xf86-video-imxfb-vivante_3.10.17-1.0.0.bb} | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)
 rename recipes-graphics/xorg-driver/{xf86-video-imxfb-vivante_3.5.7-1.0.0-alpha.2.bb => xf86-video-imxfb-vivante_3.10.17-1.0.0.bb} (80%)

diff --git a/recipes-graphics/xorg-driver/xf86-video-imxfb-vivante_3.5.7-1.0.0-alpha.2.bb b/recipes-graphics/xorg-driver/xf86-video-imxfb-vivante_3.10.17-1.0.0.bb
similarity index 80%
rename from recipes-graphics/xorg-driver/xf86-video-imxfb-vivante_3.5.7-1.0.0-alpha.2.bb
rename to recipes-graphics/xorg-driver/xf86-video-imxfb-vivante_3.10.17-1.0.0.bb
index 35a5759..31f2747 100644
--- a/recipes-graphics/xorg-driver/xf86-video-imxfb-vivante_3.5.7-1.0.0-alpha.2.bb
+++ b/recipes-graphics/xorg-driver/xf86-video-imxfb-vivante_3.10.17-1.0.0.bb
@@ -1,5 +1,5 @@
-# Copyright (C) 2012-2013 Freescale Semiconductor
-# Copyright (C) 2012-2013 O.S. Systems Software LTDA.
+# Copyright (C) 2012-2014 Freescale Semiconductor
+# Copyright (C) 2012-2014 O.S. Systems Software LTDA.
 # Released under the MIT license (see COPYING.MIT for the terms)
 
 require recipes-graphics/xorg-driver/xorg-driver-video.inc
@@ -10,9 +10,10 @@ DEPENDS += "virtual/xserver virtual/libx11 virtual/libgal-x11 gpu-viv-bin-mx6q p
 
 LIC_FILES_CHKSUM = "file://EXA/src/vivante_fbdev/vivante.h;endline=19;md5=641ac6e6d013833e36290797f4d7089c"
 
-SRC_URI = "${FSL_MIRROR}/xserver-xorg-video-imx-viv-${PV}.tar.gz"
-SRC_URI[md5sum] = "3fc3d355d721656144920afd06fb1bff"
-SRC_URI[sha256sum] = "49fab65a0a1ea74ec6b04700e035b1351244fbd363301d59d6d0cbffe37d6fb9"
+# FIXME: Drop 'beta' suffix for GA release
+SRC_URI = "${FSL_MIRROR}/xserver-xorg-video-imx-viv-${PV}_beta.tar.gz"
+SRC_URI[md5sum] = "fee0e4820fe3f89e5f36a0b343e4a33f"
+SRC_URI[sha256sum] = "b65aef86943cb0fcd2dd7ded01215038dcf2761779ce39186ab3c8c2d4b010b1"
 
 EXTRA_OEMAKE += "-C EXA/src -f makefile.linux prefix=${D}/usr \
                  sysroot=${STAGING_DIR_TARGET} \
@@ -24,7 +25,7 @@ CFLAGS += "-I${STAGING_INCDIR}/xorg \
            -I${STAGING_INCDIR}/drm \
            -I../../DRI_1.10.4/src"
 
-S = "${WORKDIR}/xserver-xorg-video-imx-viv-${PV}/"
+S = "${WORKDIR}/xserver-xorg-video-imx-viv-${PV}_beta/"
 
 # FIXME: The Freescale provided Makefile has hardcodec include paths
 #        and this does not work in case prefix is different than /usr,
-- 
1.8.5.3



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 06/12] gpu-viv-bin-mx6q: Upgrade to 3.10.17-1.0.0_beta version
  2014-01-25 22:09 [PATCH 0/12] Freescale 3.10.17-1.0.0-beta - part2 Otavio Salvador
                   ` (4 preceding siblings ...)
  2014-01-25 22:09 ` [PATCH 05/12] xf86-video-imxfb-vivante: Upgrade to 3.10.17-1.0.0_beta version Otavio Salvador
@ 2014-01-25 22:09 ` Otavio Salvador
  2014-01-25 22:09 ` [PATCH 07/12] gpu-viv-g2d: Fix packaging Otavio Salvador
                   ` (7 subsequent siblings)
  13 siblings, 0 replies; 24+ messages in thread
From: Otavio Salvador @ 2014-01-25 22:09 UTC (permalink / raw)
  To: meta-freescale Mailing List; +Cc: Otavio Salvador

From: Lauren Post <lauren.post@freescale.com>

This includes support for p13 vivante upgrade and support for webGL rendering

Signed-off-by: Lauren Post <lauren.post@freescale.com>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
---

 .../gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc            | 20 ++++++++++++++++----
 .../gpu-viv-bin-mx6q/gpu-viv-bin-mx6q/directfbrc     | 10 ++++++++++
 .../gpu-viv-bin-mx6q_3.10.17-1.0.0-hfp.bb            |  9 +++++++++
 .../gpu-viv-bin-mx6q_3.10.17-1.0.0-sfp.bb            |  9 +++++++++
 .../gpu-viv-bin-mx6q_3.10.9-1.0.0-hfp.bb             |  9 ---------
 .../gpu-viv-bin-mx6q_3.10.9-1.0.0-sfp.bb             |  9 ---------
 6 files changed, 44 insertions(+), 22 deletions(-)
 create mode 100644 recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q/directfbrc
 create mode 100644 recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q_3.10.17-1.0.0-hfp.bb
 create mode 100644 recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q_3.10.17-1.0.0-sfp.bb
 delete mode 100644 recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q_3.10.9-1.0.0-hfp.bb
 delete mode 100644 recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q_3.10.9-1.0.0-sfp.bb

diff --git a/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc b/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc
index 5218964..2b94153 100644
--- a/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc
+++ b/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc
@@ -1,5 +1,5 @@
 # Copyright (C) 2012-2013 Freescale Semiconductor
-# Copyright (C) 2012-2013 O.S. Systems Software LTDA.
+# Copyright (C) 2012-2014 O.S. Systems Software LTDA.
 # Released under the MIT license (see COPYING.MIT for the terms)
 
 DESCRIPTION = "GPU driver and apps for imx6"
@@ -13,7 +13,8 @@ PE = "1"
 
 inherit fsl-eula-unpack
 
-SRC_URI = "${FSL_MIRROR}/${PN}-${PV}.bin;fsl-eula=true \
+# FIXME: Drop 'beta' suffix for GA release
+SRC_URI = "${FSL_MIRROR}/${PN}-${@'${PV}'.replace('1.0.0', '1.0.0-beta')}.bin;fsl-eula=true \
            file://egl.pc \
            file://egl_x11.pc \
            file://glesv1_cm.pc \
@@ -25,7 +26,9 @@ SRC_URI = "${FSL_MIRROR}/${PN}-${PV}.bin;fsl-eula=true \
            file://gc_wayland_protocol.pc \
            file://wayland-egl.pc \
            file://wayland-viv.pc \
+           file://directfbrc \
           "
+S = "${WORKDIR}/${PN}-${@'${PV}'.replace('1.0.0', '1.0.0-beta')}"
 
 PACKAGES =+ "libclc-mx6 libclc-mx6-dev libclc-mx6-dbg \
 	libgl-mx6 libgl-mx6-dev libgl-mx6-dbg \
@@ -140,6 +143,9 @@ do_install () {
         install -m 0644 ${WORKDIR}/vg.pc ${D}${libdir}/pkgconfig/vg.pc
 
         if [ "${USE_DFB}" = "yes" ]; then
+            install -d ${D}/${sysconfdir}
+            install -m 644 ${WORKDIR}/directfbrc ${D}/${sysconfdir}/directfbrc
+
             cp -r ${S}/usr/lib/directfb-1.6-0 ${D}${libdir}
             backend=dfb
         else
@@ -159,6 +165,12 @@ do_install () {
     mv ${D}${libdir}/libGAL-${backend}.so ${D}${libdir}/libGAL.so
     mv ${D}${libdir}/libVIVANTE-${backend}.so ${D}${libdir}/libVIVANTE.so
 
+    # update libglesv2 as backend dependent
+    rm -rf ${D}${libdir}/libGLESv2*
+    cp -a ${S}/usr/lib/libGLESv2-${backend}.so ${D}${libdir}/libGLESv2.so.2.0.0
+    ln -sf libGLESv2.so.2.0.0 ${D}${libdir}/libGLESv2.so.2
+    ln -sf libGLESv2.so.2.0.0 ${D}${libdir}/libGLESv2.so
+
     for backend in wl x11 fb dfb; do
         find ${D}${libdir} -name "*-$backend.so" -exec rm '{}' ';'
     done
@@ -167,8 +179,6 @@ do_install () {
     find ${D}${includedir} -type f -exec chmod 644 {} \;
 }
 
-S = "${WORKDIR}/${PN}-${PV}"
-
 FILES_${PN} += "/opt"
 FILES_${PN}-dev = "${includedir}"
 FILES_${PN}-dbg = "${libdir}/.debug /opt/viv_samples/*/*/.debug"
@@ -242,4 +252,6 @@ FILES_libgc-wayland-protocol-mx6-dbg = "${libdir}/libgc_wayland_protocol${SOLIBS
 
 FILES_libwayland-egl-mx6-dev = "${libdir}/pkgconfig/wayland-egl.pc"
 
+FILES_libvivante-dfb-mx6 += "${sysconfdir}/directfbrc"
+
 COMPATIBLE_MACHINE = "(mx6)"
diff --git a/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q/directfbrc b/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q/directfbrc
new file mode 100644
index 0000000..bae398c
--- /dev/null
+++ b/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q/directfbrc
@@ -0,0 +1,10 @@
+# directfbrc begin
+system=fbdev
+mode=1024x768		# display size (change to fit your needs)
+desktop-buffer-mode=frontonly		# if no double buffering in framebuffer driver
+depth=16
+pixelformat=RGB16
+#no-hardware		# disable hardware acceleration
+#no-software		# disable software fallbacks
+# directfbrc end
+
diff --git a/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q_3.10.17-1.0.0-hfp.bb b/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q_3.10.17-1.0.0-hfp.bb
new file mode 100644
index 0000000..58b1f0f
--- /dev/null
+++ b/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q_3.10.17-1.0.0-hfp.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2013, 2014 Freescale Semiconductor
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+require gpu-viv-bin-mx6q.inc
+
+SRC_URI[md5sum] = "11e844bb6ba04295cdcd78731076c96d"
+SRC_URI[sha256sum] = "863d20ecba3ed5865c12a77717aa61b492ff93c9c81f6bb3f051322291631e0c"
+
+PACKAGE_FP_TYPE = "hardfp"
diff --git a/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q_3.10.17-1.0.0-sfp.bb b/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q_3.10.17-1.0.0-sfp.bb
new file mode 100644
index 0000000..e48695b
--- /dev/null
+++ b/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q_3.10.17-1.0.0-sfp.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2013, 2014 Freescale Semiconductor
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+require gpu-viv-bin-mx6q.inc
+
+SRC_URI[md5sum] = "7bc440bd2adf2cb2c463f41f01e0412e"
+SRC_URI[sha256sum] = "c6fc0b387879f5826edbb0d51ea2726eb16031a3aed77e88833d3fb7de445a7a"
+
+PACKAGE_FP_TYPE = "softfp"
diff --git a/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q_3.10.9-1.0.0-hfp.bb b/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q_3.10.9-1.0.0-hfp.bb
deleted file mode 100644
index 56610fb..0000000
--- a/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q_3.10.9-1.0.0-hfp.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-# Copyright (C) 2013 Freescale Semiconductor
-# Released under the MIT license (see COPYING.MIT for the terms)
-
-require gpu-viv-bin-mx6q.inc
-
-SRC_URI[md5sum] = "52f5ebbb6a9b5d0eafdb952246de584e"
-SRC_URI[sha256sum] = "8b0386e13d4a7c770f8bc8e7a6119629c5ed379488dd5ef635bc92353f906003"
-
-PACKAGE_FP_TYPE = "hardfp"
diff --git a/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q_3.10.9-1.0.0-sfp.bb b/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q_3.10.9-1.0.0-sfp.bb
deleted file mode 100644
index e2fc01c..0000000
--- a/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q_3.10.9-1.0.0-sfp.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-# Copyright (C) 2013 Freescale Semiconductor
-# Released under the MIT license (see COPYING.MIT for the terms)
-
-require gpu-viv-bin-mx6q.inc
-
-SRC_URI[md5sum] = "1ff2249a2633635ea8c375d9e83ca520"
-SRC_URI[sha256sum] = "b0e3c84f749aac3dab4ec328d19dbd3bba06ccc6ef8b7d4eefe3d79474be5055"
-
-PACKAGE_FP_TYPE = "softfp"
-- 
1.8.5.3



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 07/12] gpu-viv-g2d: Fix packaging
  2014-01-25 22:09 [PATCH 0/12] Freescale 3.10.17-1.0.0-beta - part2 Otavio Salvador
                   ` (5 preceding siblings ...)
  2014-01-25 22:09 ` [PATCH 06/12] gpu-viv-bin-mx6q: " Otavio Salvador
@ 2014-01-25 22:09 ` Otavio Salvador
  2014-01-25 22:09 ` [PATCH 08/12] gpu-viv-g2d: Update to 3.10.17-1.0.0_beta Otavio Salvador
                   ` (6 subsequent siblings)
  13 siblings, 0 replies; 24+ messages in thread
From: Otavio Salvador @ 2014-01-25 22:09 UTC (permalink / raw)
  To: meta-freescale Mailing List; +Cc: Otavio Salvador

This rework the packaging:

 - add missing licence check file
 - package the .so lib in ${PN}
 - remove override of ${PN}-dbg

Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
---

 recipes-graphics/gpu-viv-g2d/gpu-viv-g2d.inc | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/recipes-graphics/gpu-viv-g2d/gpu-viv-g2d.inc b/recipes-graphics/gpu-viv-g2d/gpu-viv-g2d.inc
index f044a76..dcbc7e5 100644
--- a/recipes-graphics/gpu-viv-g2d/gpu-viv-g2d.inc
+++ b/recipes-graphics/gpu-viv-g2d/gpu-viv-g2d.inc
@@ -1,10 +1,14 @@
-# Copyright (C) 2013 Freescale Semiconductor
+# Copyright (C) 2013, 2014 Freescale Semiconductor
 
 DESCRIPTION = "GPU Vivante G2D library and sample applications for imx6"
 SECTION = "libs"
 LICENSE = "Proprietary"
+LIC_FILES_CHKSUM = "file://usr/include/g2d.h;endline=7;md5=861ebad4adc7236f8d1905338abd7eb2"
+
 PROVIDES += "virtual/libg2d"
 
+PACKAGES = "${PN} ${PN}-dev ${PN}-dbg"
+
 inherit fsl-eula-unpack
 
 PE = "1"
@@ -35,8 +39,7 @@ do_install () {
 REALSOLIBS := "${SOLIBS}"
 SOLIBS = "${SOLIBSDEV}"
 
-FILES_${PN} = "/opt ${libdir}/libg2d${SOLIBS} "
+FILES_${PN} += "/opt ${libdir}/libg2d${SOLIBS}"
 FILES_${PN}-dev = "${includedir}"
-FILES_${PN}-dbg = "${libdir}/.debug/libg2d${SOLIBS}"
 
 COMPATIBLE_MACHINE = "(mx6)"
-- 
1.8.5.3



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 08/12] gpu-viv-g2d: Update to 3.10.17-1.0.0_beta
  2014-01-25 22:09 [PATCH 0/12] Freescale 3.10.17-1.0.0-beta - part2 Otavio Salvador
                   ` (6 preceding siblings ...)
  2014-01-25 22:09 ` [PATCH 07/12] gpu-viv-g2d: Fix packaging Otavio Salvador
@ 2014-01-25 22:09 ` Otavio Salvador
  2014-01-25 22:09 ` [PATCH 09/12] imx6slevk: Add new device tree imx6sl-evk-csi.dtb Otavio Salvador
                   ` (5 subsequent siblings)
  13 siblings, 0 replies; 24+ messages in thread
From: Otavio Salvador @ 2014-01-25 22:09 UTC (permalink / raw)
  To: meta-freescale Mailing List; +Cc: Otavio Salvador

From: Lauren Post <lauren.post@freescale.com>

Add gmem tool installation
Upgrade to p13 version

Signed-off-by: Lauren Post <lauren.post@freescale.com>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
---

 recipes-graphics/gpu-viv-g2d/gpu-viv-g2d.inc              | 8 +++-----
 recipes-graphics/gpu-viv-g2d/gpu-viv-g2d_3.10.17-1.0.0.bb | 6 ++++++
 recipes-graphics/gpu-viv-g2d/gpu-viv-g2d_3.10.9-1.0.0.bb  | 9 ---------
 3 files changed, 9 insertions(+), 14 deletions(-)
 create mode 100644 recipes-graphics/gpu-viv-g2d/gpu-viv-g2d_3.10.17-1.0.0.bb
 delete mode 100644 recipes-graphics/gpu-viv-g2d/gpu-viv-g2d_3.10.9-1.0.0.bb

diff --git a/recipes-graphics/gpu-viv-g2d/gpu-viv-g2d.inc b/recipes-graphics/gpu-viv-g2d/gpu-viv-g2d.inc
index dcbc7e5..f0892ba 100644
--- a/recipes-graphics/gpu-viv-g2d/gpu-viv-g2d.inc
+++ b/recipes-graphics/gpu-viv-g2d/gpu-viv-g2d.inc
@@ -13,15 +13,13 @@ inherit fsl-eula-unpack
 
 PE = "1"
 
-SRC_URI = "${FSL_MIRROR}/${PN}-${PV}.bin;fsl-eula=true"
-
-PACKAGES = "gpu-viv-g2d gpu-viv-g2d-dev gpu-viv-g2d-dbg"
+# FIXME: Drop 'beta' suffix for GA release
+SRC_URI = "${FSL_MIRROR}/${PN}-${@'${PV}'.replace('1.0.0', '1.0.0-beta')}.bin;fsl-eula=true"
+S = "${WORKDIR}/${PN}-${@'${PV}'.replace('1.0.0', '1.0.0-beta')}"
 
 # Inhibit warnings about files being stripped.
 INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
 
-S = "${WORKDIR}/${PN}-${PV}"
-
 do_install () {
     install -d ${D}${libdir}
     install -d ${D}${includedir}
diff --git a/recipes-graphics/gpu-viv-g2d/gpu-viv-g2d_3.10.17-1.0.0.bb b/recipes-graphics/gpu-viv-g2d/gpu-viv-g2d_3.10.17-1.0.0.bb
new file mode 100644
index 0000000..997ecbd
--- /dev/null
+++ b/recipes-graphics/gpu-viv-g2d/gpu-viv-g2d_3.10.17-1.0.0.bb
@@ -0,0 +1,6 @@
+# Copyright (C) 2013, 2014 Freescale Semiconductor
+
+include gpu-viv-g2d.inc
+
+SRC_URI[md5sum] = "1dd925c48d36b7029d9fe2522d0700c7"
+SRC_URI[sha256sum] = "c9ec4b0daa476ff02b2964998a113f53a85f4d9606c4ec617858f33cab2af203"
diff --git a/recipes-graphics/gpu-viv-g2d/gpu-viv-g2d_3.10.9-1.0.0.bb b/recipes-graphics/gpu-viv-g2d/gpu-viv-g2d_3.10.9-1.0.0.bb
deleted file mode 100644
index 87e67eb..0000000
--- a/recipes-graphics/gpu-viv-g2d/gpu-viv-g2d_3.10.9-1.0.0.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-# Copyright (C) 2013 Freescale Semiconductor
-
-include gpu-viv-g2d.inc
-
-LIC_FILES_CHKSUM = "file://usr/include/g2d.h;endline=7;md5=861ebad4adc7236f8d1905338abd7eb2"
-
-SRC_URI[md5sum] = "3d9849a60cb488a906aeb14f966effad"
-SRC_URI[sha256sum] = "9c29b602626961f9ab93a6231c2de55cde406629ec94c4348cb2048056926195"
-
-- 
1.8.5.3



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 09/12] imx6slevk: Add new device tree imx6sl-evk-csi.dtb
  2014-01-25 22:09 [PATCH 0/12] Freescale 3.10.17-1.0.0-beta - part2 Otavio Salvador
                   ` (7 preceding siblings ...)
  2014-01-25 22:09 ` [PATCH 08/12] gpu-viv-g2d: Update to 3.10.17-1.0.0_beta Otavio Salvador
@ 2014-01-25 22:09 ` Otavio Salvador
  2014-01-25 22:09 ` [PATCH 10/12] imx6dlsabreauto.conf: Add ecspi and flexcan1 device tree support Otavio Salvador
                   ` (4 subsequent siblings)
  13 siblings, 0 replies; 24+ messages in thread
From: Otavio Salvador @ 2014-01-25 22:09 UTC (permalink / raw)
  To: meta-freescale Mailing List; +Cc: Otavio Salvador

From: Lauren Post <lauren.post@freescale.com>

3.10.17-1.0.0-beta changed the imx6sl-evk.dts file to work with
EPDC but as a consequence it breaks CSI function as its pins
are shared. A new imx6sl-evk-csi.dts file has been add to
allow use of CSI in case it is desired.

Signed-off-by: Lauren Post <lauren.post@freescale.com>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
---

 conf/machine/imx6slevk.conf | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/conf/machine/imx6slevk.conf b/conf/machine/imx6slevk.conf
index 29e0ce4..1ccadd8 100644
--- a/conf/machine/imx6slevk.conf
+++ b/conf/machine/imx6slevk.conf
@@ -8,7 +8,7 @@ include conf/machine/include/tune-cortexa9.inc
 
 SOC_FAMILY = "mx6:mx6sl"
 
-KERNEL_DEVICETREE = "imx6sl-evk.dtb imx6sl-evk-ldo.dtb"
+KERNEL_DEVICETREE = "imx6sl-evk.dtb imx6sl-evk-csi.dtb imx6sl-evk-ldo.dtb"
 
 UBOOT_MACHINE = "mx6slevk_config"
 
-- 
1.8.5.3



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 10/12] imx6dlsabreauto.conf: Add ecspi and flexcan1 device tree support
  2014-01-25 22:09 [PATCH 0/12] Freescale 3.10.17-1.0.0-beta - part2 Otavio Salvador
                   ` (8 preceding siblings ...)
  2014-01-25 22:09 ` [PATCH 09/12] imx6slevk: Add new device tree imx6sl-evk-csi.dtb Otavio Salvador
@ 2014-01-25 22:09 ` Otavio Salvador
  2014-01-25 22:09 ` [PATCH 11/12] imx6qsabreauto.conf: " Otavio Salvador
                   ` (3 subsequent siblings)
  13 siblings, 0 replies; 24+ messages in thread
From: Otavio Salvador @ 2014-01-25 22:09 UTC (permalink / raw)
  To: meta-freescale Mailing List; +Cc: Otavio Salvador

From: Lauren Post <lauren.post@freescale.com>

The flexcan1 device tree supports flexcan1 enabled with fec disabled
because of a pin conflict between flexcan1 and fec.

The ecspi device tree supports ecspi by fixing the pin conflict with i2c3.

Signed-off-by: Lauren Post <lauren.post@freescale.com>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
---

 conf/machine/imx6dlsabreauto.conf | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/conf/machine/imx6dlsabreauto.conf b/conf/machine/imx6dlsabreauto.conf
index 3909283..9b76f46 100644
--- a/conf/machine/imx6dlsabreauto.conf
+++ b/conf/machine/imx6dlsabreauto.conf
@@ -7,7 +7,8 @@ require conf/machine/include/imx6sabreauto-common.inc
 
 SOC_FAMILY = "mx6:mx6dl"
 
-KERNEL_DEVICETREE = "imx6dl-sabreauto.dtb imx6dl-sabreauto-gpmi-weim.dtb"
+KERNEL_DEVICETREE = "imx6dl-sabreauto.dtb imx6dl-sabreauto-gpmi-weim.dtb imx6dl-sabreauto-ecspi.dtb "
+KERNEL_DEVICETREE += "imx6dl-sabreauto-flexcan1.dtb "
 
 PREFERRED_PROVIDER_u-boot = "u-boot-imx"
 PREFERRED_PROVIDER_virtual/bootloader = "u-boot-imx"
-- 
1.8.5.3



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 11/12] imx6qsabreauto.conf: Add ecspi and flexcan1 device tree support
  2014-01-25 22:09 [PATCH 0/12] Freescale 3.10.17-1.0.0-beta - part2 Otavio Salvador
                   ` (9 preceding siblings ...)
  2014-01-25 22:09 ` [PATCH 10/12] imx6dlsabreauto.conf: Add ecspi and flexcan1 device tree support Otavio Salvador
@ 2014-01-25 22:09 ` Otavio Salvador
  2014-01-25 22:09 ` [PATCH 12/12] imx6qsabreauto.conf: Add sata uboot config support Otavio Salvador
                   ` (2 subsequent siblings)
  13 siblings, 0 replies; 24+ messages in thread
From: Otavio Salvador @ 2014-01-25 22:09 UTC (permalink / raw)
  To: meta-freescale Mailing List; +Cc: Otavio Salvador

From: Lauren Post <lauren.post@freescale.com>

The flexcan1 device tree supports flexcan1 enabled with fec disabled
because of a pin conflict between flexcan1 and fec.

The ecspi device tree supports ecspi by fixing the pin conflict with i2c3.

Signed-off-by: Lauren Post <lauren.post@freescale.com>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
---

 conf/machine/imx6qsabreauto.conf | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/conf/machine/imx6qsabreauto.conf b/conf/machine/imx6qsabreauto.conf
index 7455255..9afd051 100644
--- a/conf/machine/imx6qsabreauto.conf
+++ b/conf/machine/imx6qsabreauto.conf
@@ -7,7 +7,8 @@ require conf/machine/include/imx6sabreauto-common.inc
 
 SOC_FAMILY = "mx6:mx6q"
 
-KERNEL_DEVICETREE = "imx6q-sabreauto.dtb imx6q-sabreauto-gpmi-weim.dtb"
+KERNEL_DEVICETREE = "imx6q-sabreauto.dtb imx6q-sabreauto-gpmi-weim.dtb imx6q-sabreauto-ecspi.dtb "
+KERNEL_DEVICETREE += "imx6q-sabreauto-flexcan1.dtb "
 
 UBOOT_CONFIG ??= "sd"
 UBOOT_CONFIG[sd] = "mx6qsabreauto_config,sdcard"
-- 
1.8.5.3



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 12/12] imx6qsabreauto.conf: Add sata uboot config support
  2014-01-25 22:09 [PATCH 0/12] Freescale 3.10.17-1.0.0-beta - part2 Otavio Salvador
                   ` (10 preceding siblings ...)
  2014-01-25 22:09 ` [PATCH 11/12] imx6qsabreauto.conf: " Otavio Salvador
@ 2014-01-25 22:09 ` Otavio Salvador
  2014-01-25 22:11 ` [PATCH 0/12] Freescale 3.10.17-1.0.0-beta - part2 Otavio Salvador
  2014-01-25 22:33 ` [PATCH 0/12] Freescale 3.10.17-1.0.0-beta - part2 Otavio Salvador
  13 siblings, 0 replies; 24+ messages in thread
From: Otavio Salvador @ 2014-01-25 22:09 UTC (permalink / raw)
  To: meta-freescale Mailing List; +Cc: Otavio Salvador

From: Lauren Post <lauren.post@freescale.com>

Signed-off-by: Lauren Post <lauren.post@freescale.com>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
---

 conf/machine/imx6qsabreauto.conf | 1 +
 1 file changed, 1 insertion(+)

diff --git a/conf/machine/imx6qsabreauto.conf b/conf/machine/imx6qsabreauto.conf
index 9afd051..f157352 100644
--- a/conf/machine/imx6qsabreauto.conf
+++ b/conf/machine/imx6qsabreauto.conf
@@ -15,3 +15,4 @@ UBOOT_CONFIG[sd] = "mx6qsabreauto_config,sdcard"
 UBOOT_CONFIG[eimnor] = "mx6qsabreauto_eimnor_config"
 UBOOT_CONFIG[nand] = "mx6qsabreauto_nand_config,ubifs"
 UBOOT_CONFIG[spinor] = "mx6qsabreauto_spinor_config"
+UBOOT_CONFIG[sata] = "mx6qsabreauto_sata_config"
-- 
1.8.5.3



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* Re: [PATCH 0/12] Freescale 3.10.17-1.0.0-beta - part2
  2014-01-25 22:09 [PATCH 0/12] Freescale 3.10.17-1.0.0-beta - part2 Otavio Salvador
                   ` (11 preceding siblings ...)
  2014-01-25 22:09 ` [PATCH 12/12] imx6qsabreauto.conf: Add sata uboot config support Otavio Salvador
@ 2014-01-25 22:11 ` Otavio Salvador
  2014-01-25 23:22   ` Eric Nelson
  2014-01-25 22:33 ` [PATCH 0/12] Freescale 3.10.17-1.0.0-beta - part2 Otavio Salvador
  13 siblings, 1 reply; 24+ messages in thread
From: Otavio Salvador @ 2014-01-25 22:11 UTC (permalink / raw)
  To: meta-freescale Mailing List, Eric Nelson; +Cc: Otavio Salvador

Hello Eric,

On Sat, Jan 25, 2014 at 8:09 PM, Otavio Salvador
<otavio@ossystems.com.br> wrote:
> This includes:
>
>  Linux Kernel update for 3.10.17
>  FSL U-Boot update for 2013.04 from 3.10.17 release
>  Vivante GPU 4.9.6p13
>  Vivante GPU 4.9.6p13 backport for 3.0.35-4.1.0
>
> Please give it a try and let me know of any issues.

Here you go.

Please give it a try.

-- 
Otavio Salvador                             O.S. Systems
http://www.ossystems.com.br        http://code.ossystems.com.br
Mobile: +55 (53) 9981-7854            Mobile: +1 (347) 903-9750


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 0/12] Freescale 3.10.17-1.0.0-beta - part2
  2014-01-25 22:09 [PATCH 0/12] Freescale 3.10.17-1.0.0-beta - part2 Otavio Salvador
                   ` (12 preceding siblings ...)
  2014-01-25 22:11 ` [PATCH 0/12] Freescale 3.10.17-1.0.0-beta - part2 Otavio Salvador
@ 2014-01-25 22:33 ` Otavio Salvador
  13 siblings, 0 replies; 24+ messages in thread
From: Otavio Salvador @ 2014-01-25 22:33 UTC (permalink / raw)
  To: meta-freescale Mailing List; +Cc: Otavio Salvador

On Sat, Jan 25, 2014 at 8:09 PM, Otavio Salvador
<otavio@ossystems.com.br> wrote:
> Hello,
>
> This includes:
>
>  Linux Kernel update for 3.10.17
>  FSL U-Boot update for 2013.04 from 3.10.17 release
>  Vivante GPU 4.9.6p13
>  Vivante GPU 4.9.6p13 backport for 3.0.35-4.1.0
>
> Please give it a try and let me know of any issues.

I forgot the prefix, as I sent it from patman to track changes from
patchset versions. Fixed for v2.

-- 
Otavio Salvador                             O.S. Systems
http://www.ossystems.com.br        http://code.ossystems.com.br
Mobile: +55 (53) 9981-7854            Mobile: +1 (347) 903-9750


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 0/12] Freescale 3.10.17-1.0.0-beta - part2
  2014-01-25 22:11 ` [PATCH 0/12] Freescale 3.10.17-1.0.0-beta - part2 Otavio Salvador
@ 2014-01-25 23:22   ` Eric Nelson
  2014-01-27 10:25     ` Diego
  0 siblings, 1 reply; 24+ messages in thread
From: Eric Nelson @ 2014-01-25 23:22 UTC (permalink / raw)
  To: Otavio Salvador, meta-freescale Mailing List

On 01/25/2014 03:11 PM, Otavio Salvador wrote:
> Hello Eric,
>
> On Sat, Jan 25, 2014 at 8:09 PM, Otavio Salvador
> <otavio@ossystems.com.br> wrote:
>> This includes:
>>
>>   Linux Kernel update for 3.10.17
>>   FSL U-Boot update for 2013.04 from 3.10.17 release
>>   Vivante GPU 4.9.6p13
>>   Vivante GPU 4.9.6p13 backport for 3.0.35-4.1.0
>>
>> Please give it a try and let me know of any issues.
>
> Here you go.
>
> Please give it a try.
>
Will do.



^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 0/12] Freescale 3.10.17-1.0.0-beta - part2
  2014-01-25 23:22   ` Eric Nelson
@ 2014-01-27 10:25     ` Diego
  2014-01-27 10:40       ` Diego Rondini
  0 siblings, 1 reply; 24+ messages in thread
From: Diego @ 2014-01-27 10:25 UTC (permalink / raw)
  To: meta-freescale

> On 01/25/2014 03:11 PM, Otavio Salvador wrote:
> > Hello Eric,
> > 
> > On Sat, Jan 25, 2014 at 8:09 PM, Otavio Salvador
> > 
> > <otavio at ossystems.com.br> wrote:
> >> This includes:
> >>   Linux Kernel update for 3.10.17
> >>   FSL U-Boot update for 2013.04 from 3.10.17 release
> >>   Vivante GPU 4.9.6p13
> >>   Vivante GPU 4.9.6p13 backport for 3.0.35-4.1.0
> >> 
> >> Please give it a try and let me know of any issues.
> > 
> > Here you go.
> > 
> > Please give it a try.
> 
> Will do.

Hello meta-freescalers,

as a preliminary feedback I can say I can build my image based on core-image-
x11 with the new patchset.

Also, I've hand-built a kernel from the 3.10.17 branch of the boundary github 
for my Nitrogen6x and works fine together with the new graphic drivers; X runs 
fine.

I'll do a build now with mesa-demos and glmark2 to test the 3D stuff, and then 
I'll give you more feedback.

Thanks for the great work so far guys!
Diego



^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 0/12] Freescale 3.10.17-1.0.0-beta - part2
  2014-01-27 10:25     ` Diego
@ 2014-01-27 10:40       ` Diego Rondini
  2014-01-27 14:22         ` Xrandr and Vivante acceleration (was Freescale 3.10.17-1.0.0-beta - part2) Eric Nelson
  0 siblings, 1 reply; 24+ messages in thread
From: Diego Rondini @ 2014-01-27 10:40 UTC (permalink / raw)
  To: meta-freescale

> Also, I've hand-built a kernel from the 3.10.17 branch of the boundary
> github
> for my Nitrogen6x and works fine together with the new graphic drivers; X
> runs fine.

Oh, this is great news!

xrandr seems to be supported now! On my HDMI display I've been able to change 
resolution and rotate the output.
I've successfully tested:
# xrandr --size 1920x1080
# xrandr --size 1280x720
# xrandr --output 'DISP3 BG' --rotate left
# xrandr --output 'DISP3 BG' --rotate right
# xrandr --output 'DISP3 BG' --rotate inverted
# xrandr --output 'DISP3 BG' --rotate normal

Is this mentioned in any official changelog (if there is any)?

Bests,
Diego


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: Xrandr and Vivante acceleration (was Freescale 3.10.17-1.0.0-beta - part2)
  2014-01-27 10:40       ` Diego Rondini
@ 2014-01-27 14:22         ` Eric Nelson
  0 siblings, 0 replies; 24+ messages in thread
From: Eric Nelson @ 2014-01-27 14:22 UTC (permalink / raw)
  To: Diego Rondini, meta-freescale

On 01/27/2014 03:40 AM, Diego Rondini wrote:
>> Also, I've hand-built a kernel from the 3.10.17 branch of the boundary
>> github
>> for my Nitrogen6x and works fine together with the new graphic drivers; X
>> runs fine.
>
> Oh, this is great news!
>
> xrandr seems to be supported now! On my HDMI display I've been able to change
> resolution and rotate the output.
> I've successfully tested:
> # xrandr --size 1920x1080
> # xrandr --size 1280x720
> # xrandr --output 'DISP3 BG' --rotate left
> # xrandr --output 'DISP3 BG' --rotate right
> # xrandr --output 'DISP3 BG' --rotate inverted
> # xrandr --output 'DISP3 BG' --rotate normal
>

Many thanks for testing this Diego. This is great news.

Regards,


Eric


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 05/12] xf86-video-imxfb-vivante: Upgrade to 3.10.17-1.0.0_beta version
  2014-01-25 22:09 ` [PATCH 05/12] xf86-video-imxfb-vivante: Upgrade to 3.10.17-1.0.0_beta version Otavio Salvador
@ 2014-01-27 23:43   ` Eric Nelson
  2014-01-28  0:40     ` Otavio Salvador
                       ` (2 more replies)
  0 siblings, 3 replies; 24+ messages in thread
From: Eric Nelson @ 2014-01-27 23:43 UTC (permalink / raw)
  To: Otavio Salvador, meta-freescale Mailing List

[-- Attachment #1: Type: text/plain, Size: 3699 bytes --]

Thanks Otavio,

On 01/25/2014 03:09 PM, Otavio Salvador wrote:
> From: Lauren Post <lauren.post@freescale.com>
>
> Signed-off-by: Lauren Post <lauren.post@freescale.com>
> Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
> ---
>
>   ...alpha.2.bb => xf86-video-imxfb-vivante_3.10.17-1.0.0.bb} | 13 +++++++------
>   1 file changed, 7 insertions(+), 6 deletions(-)
>   rename recipes-graphics/xorg-driver/{xf86-video-imxfb-vivante_3.5.7-1.0.0-alpha.2.bb => xf86-video-imxfb-vivante_3.10.17-1.0.0.bb} (80%)
>
> diff --git a/recipes-graphics/xorg-driver/xf86-video-imxfb-vivante_3.5.7-1.0.0-alpha.2.bb b/recipes-graphics/xorg-driver/xf86-video-imxfb-vivante_3.10.17-1.0.0.bb
> similarity index 80%
> rename from recipes-graphics/xorg-driver/xf86-video-imxfb-vivante_3.5.7-1.0.0-alpha.2.bb
> rename to recipes-graphics/xorg-driver/xf86-video-imxfb-vivante_3.10.17-1.0.0.bb
> index 35a5759..31f2747 100644
> --- a/recipes-graphics/xorg-driver/xf86-video-imxfb-vivante_3.5.7-1.0.0-alpha.2.bb
> +++ b/recipes-graphics/xorg-driver/xf86-video-imxfb-vivante_3.10.17-1.0.0.bb
> @@ -1,5 +1,5 @@
> -# Copyright (C) 2012-2013 Freescale Semiconductor
> -# Copyright (C) 2012-2013 O.S. Systems Software LTDA.
> +# Copyright (C) 2012-2014 Freescale Semiconductor
> +# Copyright (C) 2012-2014 O.S. Systems Software LTDA.
>   # Released under the MIT license (see COPYING.MIT for the terms)
>
>   require recipes-graphics/xorg-driver/xorg-driver-video.inc
> @@ -10,9 +10,10 @@ DEPENDS += "virtual/xserver virtual/libx11 virtual/libgal-x11 gpu-viv-bin-mx6q p
>
>   LIC_FILES_CHKSUM = "file://EXA/src/vivante_fbdev/vivante.h;endline=19;md5=641ac6e6d013833e36290797f4d7089c"
>
> -SRC_URI = "${FSL_MIRROR}/xserver-xorg-video-imx-viv-${PV}.tar.gz"
> -SRC_URI[md5sum] = "3fc3d355d721656144920afd06fb1bff"
> -SRC_URI[sha256sum] = "49fab65a0a1ea74ec6b04700e035b1351244fbd363301d59d6d0cbffe37d6fb9"
> +# FIXME: Drop 'beta' suffix for GA release
> +SRC_URI = "${FSL_MIRROR}/xserver-xorg-video-imx-viv-${PV}_beta.tar.gz"
> +SRC_URI[md5sum] = "fee0e4820fe3f89e5f36a0b343e4a33f"
> +SRC_URI[sha256sum] = "b65aef86943cb0fcd2dd7ded01215038dcf2761779ce39186ab3c8c2d4b010b1"
>
>   EXTRA_OEMAKE += "-C EXA/src -f makefile.linux prefix=${D}/usr \
>                    sysroot=${STAGING_DIR_TARGET} \
> @@ -24,7 +25,7 @@ CFLAGS += "-I${STAGING_INCDIR}/xorg \
>              -I${STAGING_INCDIR}/drm \
>              -I../../DRI_1.10.4/src"
>
> -S = "${WORKDIR}/xserver-xorg-video-imx-viv-${PV}/"
> +S = "${WORKDIR}/xserver-xorg-video-imx-viv-${PV}_beta/"
>

I'm not sure if this is the right patch to tag, but during my testing of
the Vivante/X integration, I saw some issues related to mode settings.

On Nitrogen6x Quad core, I'm seeing X start up with a mode of 640x480,
on the HDMI device even though the kernel command line is configured
for 720P.

The same is not true with the same monitor and Nitrogen6_Lite (Solo
processor):

The prime leads are these from Xorg.0.log (attached):

[3585503.788] (II) VIVANTE(0): Output DISP3 BG - DI1 connected
[3585503.788] (II) VIVANTE(0): Using exact sizes for initial modes
[3585503.788] (II) VIVANTE(0): Output DISP3 BG - DI1 using initial mode 
V:640x480p-60
[3585504.480] (II) VIVANTE(0): imxDisplayPreInit: virtual set 640 x 480, 
display width 0
[3585504.480] (II) VIVANTE(0): FBDevPreInit: adjust display width 640

Oddly, the display reverts to 720p (1280x720) if I stop X.

This appears using either kernel version 3.0.35 or 3.10.17.

I'm continuing to investigate, but thought I'd send out a note
in case others are seeing similar behaviour or know what might
be involved here.

Regards,


Eric

[-- Attachment #2: Xorg.0.log --]
[-- Type: text/x-log, Size: 19388 bytes --]

[3585503.388] _XSERVTransSocketOpenCOTSServer: Unable to open socket for inet6
[3585503.388] _XSERVTransOpen: transport open failed for inet6/nitrogen6x:0
[3585503.388] _XSERVTransMakeAllCOTSServerListeners: failed to open listener for inet6
[3585503.402] 
X.Org X Server 1.14.4
Release Date: 2013-10-31
[3585503.402] X Protocol Version 11, Revision 0
[3585503.402] Build Operating System: Linux 3.8.0-35-generic x86_64 
[3585503.402] Current Operating System: Linux nitrogen6x 3.0.35-4.1.0+yocto+g79a3b6d #1 SMP PREEMPT Mon Jan 27 14:13:26 MST 2014 armv7l
[3585503.402] Kernel command line: enable_wait_mode=off video=mxcfb0:dev=hdmi,1280x720M@60,if=RGB24 video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off fbmem=28M console=ttymxc1,115200 vmalloc=400M consoleblank=0 rootwait root=/dev/mmcblk0p2 mxc_hdmi.only_cea=1
[3585503.402] Build Date: 25 January 2014  04:05:00PM
[3585503.402]  
[3585503.402] Current version of pixman: 0.32.4
[3585503.402] 	Before reporting problems, check http://wiki.x.org
	to make sure that you have the latest version.
[3585503.402] Markers: (--) probed, (**) from config file, (==) default setting,
	(++) from command line, (!!) notice, (II) informational,
	(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[3585503.403] (==) Log file: "/var/log/Xorg.0.log", Time: Mon Jan 27 21:59:00 2014
[3585503.407] (==) Using config file: "/etc/X11/xorg.conf"
[3585503.407] (==) Using system config directory "/usr/share/X11/xorg.conf.d"
[3585503.420] (==) No Layout section.  Using the first Screen section.
[3585503.420] (==) No screen section available. Using defaults.
[3585503.420] (**) |-->Screen "Default Screen Section" (0)
[3585503.420] (**) |   |-->Monitor "<default monitor>"
[3585503.428] (==) No device specified for screen "Default Screen Section".
	Using the first device section listed.
[3585503.428] (**) |   |-->Device "i.MX Accelerated Framebuffer Device"
[3585503.428] (==) No monitor specified for screen "Default Screen Section".
	Using a default monitor configuration.
[3585503.428] (**) Option "BlankTime" "0"
[3585503.428] (**) Option "StandbyTime" "0"
[3585503.428] (**) Option "SuspendTime" "0"
[3585503.428] (**) Option "OffTime" "0"
[3585503.428] (==) Automatically adding devices
[3585503.428] (==) Automatically enabling devices
[3585503.428] (==) Automatically adding GPU devices
[3585503.431] (WW) The directory "/usr/share/fonts/X11/misc/" does not exist.
[3585503.431] 	Entry deleted from font path.
[3585503.431] (WW) The directory "/usr/share/fonts/X11/TTF/" does not exist.
[3585503.431] 	Entry deleted from font path.
[3585503.431] (WW) The directory "/usr/share/fonts/X11/OTF/" does not exist.
[3585503.431] 	Entry deleted from font path.
[3585503.431] (WW) The directory "/usr/share/fonts/X11/Type1/" does not exist.
[3585503.431] 	Entry deleted from font path.
[3585503.431] (WW) The directory "/usr/share/fonts/X11/100dpi/" does not exist.
[3585503.431] 	Entry deleted from font path.
[3585503.431] (WW) The directory "/usr/share/fonts/X11/75dpi/" does not exist.
[3585503.431] 	Entry deleted from font path.
[3585503.431] (==) FontPath set to:
	
[3585503.431] (==) ModulePath set to "/usr/lib/xorg/modules"
[3585503.432] (II) The server relies on udev to provide the list of input devices.
	If no devices become available, reconfigure udev or disable AutoAddDevices.
[3585503.432] (II) Loader magic: 0x1a7848
[3585503.432] (II) Module ABI versions:
[3585503.432] 	X.Org ANSI C Emulation: 0.4
[3585503.432] 	X.Org Video Driver: 14.1
[3585503.432] 	X.Org XInput driver : 19.1
[3585503.432] 	X.Org Server Extension : 7.0
[3585503.432] (II) Open APM successful
[3585503.434] Initializing built-in extension Generic Event Extension
[3585503.434] Initializing built-in extension SHAPE
[3585503.434] Initializing built-in extension MIT-SHM
[3585503.434] Initializing built-in extension XInputExtension
[3585503.434] Initializing built-in extension XTEST
[3585503.434] Initializing built-in extension BIG-REQUESTS
[3585503.434] Initializing built-in extension SYNC
[3585503.434] Initializing built-in extension XKEYBOARD
[3585503.434] Initializing built-in extension XC-MISC
[3585503.434] Initializing built-in extension XFIXES
[3585503.434] Initializing built-in extension RENDER
[3585503.434] Initializing built-in extension RANDR
[3585503.435] Initializing built-in extension COMPOSITE
[3585503.435] Initializing built-in extension DAMAGE
[3585503.435] Initializing built-in extension MIT-SCREEN-SAVER
[3585503.435] Initializing built-in extension DOUBLE-BUFFER
[3585503.435] Initializing built-in extension DPMS
[3585503.435] Initializing built-in extension X-Resource
[3585503.435] Initializing built-in extension XVideo
[3585503.435] Initializing built-in extension XVideo-MotionCompensation
[3585503.435] Initializing built-in extension XFree86-VidModeExtension
[3585503.435] Initializing built-in extension XFree86-DGA
[3585503.435] Initializing built-in extension XFree86-DRI
[3585503.435] Initializing built-in extension DRI2
[3585503.435] (II) LoadModule: "glx"
[3585503.439] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[3585503.462] (II) Module glx: vendor="X.Org Foundation"
[3585503.462] 	compiled for 1.14.4, module version = 1.0.0
[3585503.462] 	ABI class: X.Org Server Extension, version 7.0
[3585503.462] (==) AIGLX enabled
[3585503.463] Loading extension GLX
[3585503.463] (II) LoadModule: "vivante"
[3585503.463] (II) Loading /usr/lib/xorg/modules/drivers/vivante_drv.so
[3585503.587] (II) Module vivante: vendor="X.Org Foundation"
[3585503.587] 	compiled for 1.14.4, module version = 1.0.0
[3585503.587] 	Module class: X.Org Video Driver
[3585503.587] 	ABI class: X.Org Video Driver, version 14.1
[3585503.587] Loading extension vivext
[3585503.587] (II) VIVANTE: driver for vivante fb: VivanteGC500, VivanteGC2100,
	VivanteGCCORE
[3585503.587] (--) using VT number 1

[3585503.656] (WW) Falling back to old probe method for vivante
[3585503.656] (II) Loading sub module "fbdevhw"
[3585503.656] (II) LoadModule: "fbdevhw"
[3585503.656] (II) Loading /usr/lib/xorg/modules/libfbdevhw.so
[3585503.661] (II) Module fbdevhw: vendor="X.Org Foundation"
[3585503.661] 	compiled for 1.14.4, module version = 0.0.2
[3585503.662] 	ABI class: X.Org Video Driver, version 14.1
[3585503.662] (II) VIVANTE(0): using default device
[3585503.662] (II) VIVANTE(0): Creating default Display subsection in Screen section
	"Default Screen Section" for depth/fbbpp 16/16
[3585503.662] (==) VIVANTE(0): Depth 16, (==) framebuffer bpp 16
[3585503.662] (==) VIVANTE(0): RGB weight 565
[3585503.662] (==) VIVANTE(0): Default visual is TrueColor
[3585503.662] (==) VIVANTE(0): Using gamma correction (1.0, 1.0, 1.0)
[3585503.663] (**) VIVANTE(0): Option "fbdev" "/dev/fb0"
[3585503.663] (II) VIVANTE(0): checking modes against framebuffer device...
[3585503.663] (II) VIVANTE(0): checking modes against monitor...
[3585503.663] (II) VIVANTE(0): Use built in mode (bpp 16)
[3585503.663] (--) VIVANTE(0): Virtual size is 0x0 (pitch 0)
[3585503.663] (==) VIVANTE(0): DPI set to (96, 96)
[3585503.663] (II) Loading sub module "fb"
[3585503.663] (II) LoadModule: "fb"
[3585503.663] (II) Loading /usr/lib/xorg/modules/libfb.so
[3585503.673] (II) Module fb: vendor="X.Org Foundation"
[3585503.673] 	compiled for 1.14.4, module version = 1.0.0
[3585503.673] 	ABI class: X.Org ANSI C Emulation, version 0.4
[3585503.673] (II) Loading sub module "exa"
[3585503.673] (II) LoadModule: "exa"
[3585503.674] (II) Loading /usr/lib/xorg/modules/libexa.so
[3585503.681] (II) Module exa: vendor="X.Org Foundation"
[3585503.681] 	compiled for 1.14.4, module version = 2.6.0
[3585503.681] 	ABI class: X.Org Video Driver, version 14.1
[3585503.705] (II) VIVANTE(0): printing discovered frame buffer 'fb0' supported modes:
[3585503.706] (II) VIVANTE(0): Modeline "D:720x480p-59"x0.0   27.00  720 736 798 858  480 489 495 525 -hsync -vsync -csync (31.5 kHz e)
[3585503.706] (II) VIVANTE(0): Modeline "S:1280x720p-50"x0.0   74.25  1280 1720 1760 1980  720 725 730 750 +hsync +vsync -csync (37.5 kHz e)
[3585503.737] (II) VIVANTE(0): Modeline "S:1920x1080p-50"x0.0  148.50  1920 2448 2492 2640  1080 1084 1089 1125 +hsync +vsync -csync (56.2 kHz e)
[3585503.737] (II) VIVANTE(0): Modeline "S:720x576p-50"x0.0   27.00  720 732 796 864  576 581 586 625 -hsync -vsync -csync (31.2 kHz e)
[3585503.737] (II) VIVANTE(0): Modeline "S:640x480p-60"x0.0   25.17  640 656 752 800  480 490 492 525 -hsync -vsync -csync (31.5 kHz e)
[3585503.738] (II) VIVANTE(0): Modeline "S:720x480p-60"x0.0   27.00  720 736 798 858  480 489 495 525 -hsync -vsync -csync (31.5 kHz e)
[3585503.738] (II) VIVANTE(0): Modeline "S:1280x720p-60"x0.0   74.25  1280 1390 1430 1650  720 725 730 750 +hsync +vsync -csync (45.0 kHz e)
[3585503.738] (II) VIVANTE(0): Modeline "S:1920x1080p-60"x0.0  148.50  1920 2008 2052 2200  1080 1084 1089 1125 +hsync +vsync -csync (67.5 kHz e)
[3585503.739] (II) VIVANTE(0): Modeline "V:640x480p-60"x0.0   25.20  640 656 752 800  480 490 492 525 -hsync -vsync -csync (31.5 kHz e)
[3585503.739] (II) VIVANTE(0): Modeline "V:640x480p-60"x0.0   25.20  640 656 752 800  480 490 492 525 -hsync -vsync -csync (31.5 kHz e)
[3585503.788] (II) VIVANTE(0): Output DISP3 BG - DI1 has no monitor section
[3585503.788] (II) VIVANTE(0): Printing probed modes for output DISP3 BG - DI1
[3585503.788] (II) VIVANTE(0): Modeline "S:1920x1080p-50"x50.0  148.50  1920 2448 2492 2640  1080 1084 1089 1125 +hsync +vsync -csync (56.2 kHz e)
[3585503.788] (II) VIVANTE(0): Modeline "S:1920x1080p-60"x60.0  148.50  1920 2008 2052 2200  1080 1084 1089 1125 +hsync +vsync -csync (67.5 kHz e)
[3585503.788] (II) VIVANTE(0): Modeline "S:1280x720p-50"x50.0   74.25  1280 1720 1760 1980  720 725 730 750 +hsync +vsync -csync (37.5 kHz e)
[3585503.788] (II) VIVANTE(0): Modeline "S:1280x720p-60"x60.0   74.25  1280 1390 1430 1650  720 725 730 750 +hsync +vsync -csync (45.0 kHz e)
[3585503.788] (II) VIVANTE(0): Modeline "S:720x576p-50"x50.0   27.00  720 732 796 864  576 581 586 625 -hsync -vsync -csync (31.2 kHz e)
[3585503.788] (II) VIVANTE(0): Modeline "D:720x480p-59"x59.9   27.00  720 736 798 858  480 489 495 525 -hsync -vsync -csync (31.5 kHz e)
[3585503.788] (II) VIVANTE(0): Modeline "V:640x480p-60"x60.0   25.20  640 656 752 800  480 490 492 525 -hsync -vsync -csync (31.5 kHz e)
[3585503.788] (II) VIVANTE(0): Modeline "S:640x480p-60"x59.9   25.17  640 656 752 800  480 490 492 525 -hsync -vsync -csync (31.5 kHz e)
[3585503.788] (II) VIVANTE(0): Output DISP3 BG - DI1 connected
[3585503.788] (II) VIVANTE(0): Using exact sizes for initial modes
[3585503.788] (II) VIVANTE(0): Output DISP3 BG - DI1 using initial mode V:640x480p-60
[3585504.480] (II) VIVANTE(0): imxDisplayPreInit: virtual set 640 x 480, display width 0
[3585504.480] (II) VIVANTE(0): FBDevPreInit: adjust display width 640
[3585504.480] (**) VIVANTE(0): PreInit done
[3585504.481] (II) VIVANTE(0): Init mode for fb device
[3585504.554] (II) VIVANTE(0): hardware: DISP3 BG - DI1 (video memory: 16320kB)
[3585504.555] (II) VIVANTE(0): FB Start = 0x3360f000  FB Base = 0x3360f000  FB Offset = (nil)
[3585504.555] (II) VIVANTE(0): reserve 4177920 bytes for on screen frame buffer; total fb memory size 16711680 bytes; offset of shadow buffer 4177920
[3585504.743] (II) VIVANTE(0): hardware: DISP3 BG - DI1 (video memory: 16320kB)
[3585504.783] (II) VIVANTE(0): test Initializing EXA
[3585504.783] (II) VIVANTE(0): (driver build from: -dirty)
[3585504.783] (II) EXA(0): Driver allocated offscreen pixmaps
[3585504.783] (II) EXA(0): Driver registered support for the following operations:
[3585504.783] (II)         Solid
[3585504.783] (II)         Copy
[3585504.783] (II)         Composite (RENDER acceleration)
[3585504.783] (II)         UploadToScreen
[3585504.787] (==) VIVANTE(0): Backing store disabled
[3585504.788] (==) VIVANTE(0): DPMS enabled
[3585504.788] (II) VIVANTE(0): RandR 1.2 enabled, ignore the following RandR disabled message.
[3585504.788] drmOpenDevice: node name is /dev/dri/card0
[3585504.795] drmOpenDevice: open result is -1, (No such device or address)
[3585504.800] drmOpenDevice: open result is -1, (No such device or address)
[3585504.800] drmOpenDevice: Open failed
[3585504.800] drmOpenDevice: node name is /dev/dri/card0
[3585504.806] drmOpenDevice: open result is -1, (No such device or address)
[3585504.812] drmOpenDevice: open result is -1, (No such device or address)
[3585504.812] drmOpenDevice: Open failed
[3585505.021] drmOpenByBusid: Searching for BusID platform:Vivante GCCore:00
[3585505.021] drmOpenDevice: node name is /dev/dri/card0
[3585505.021] drmOpenDevice: open result is 12, (OK)
[3585505.021] drmOpenByBusid: drmOpenMinor returns 12
[3585505.021] drmOpenByBusid: drmGetBusid reports platform:Vivante GCCore:00
[3585505.021] (II) [drm] loaded kernel module for "vivante" driver.
[3585505.021] (II) [drm] DRM interface version 1.4
[3585505.021] (II) [drm] DRM open master succeeded.
[3585505.022] (II) VIVANTE(0): [drm] Using the DRM lock SAREA also for drawables.
[3585505.022] (II) VIVANTE(0): [drm] framebuffer handle = 0x19000000
[3585505.022] (II) VIVANTE(0): [drm] added 1 reserved context for kernel
[3585505.022] (II) VIVANTE(0): X context handle = 0x1
[3585505.022] (II) VIVANTE(0): [drm] installed DRM signal handler
[3585505.022] (II) VIVANTE(0): [DRI] installation complete
[3585505.022] (--) RandR disabled
[3585505.088] (II) AIGLX: Screen 0 is not DRI2 capable
[3585505.088] drmOpenDevice: node name is /dev/dri/card0
[3585505.088] drmOpenDevice: open result is 13, (OK)
[3585505.088] drmOpenByBusid: Searching for BusID platform:Vivante GCCore:00
[3585505.088] drmOpenDevice: node name is /dev/dri/card0
[3585505.088] drmOpenDevice: open result is 13, (OK)
[3585505.088] drmOpenByBusid: drmOpenMinor returns 13
[3585505.088] drmOpenByBusid: Interface 1.4 failed, trying 1.1
[3585505.088] drmOpenByBusid: drmGetBusid reports platform:Vivante GCCore:00
[3585505.245] (EE) AIGLX error: vivante exports no extensions (/usr/lib/dri/vivante_dri.so: undefined symbol: __driDriverExtensions)
[3585505.245] (EE) AIGLX: reverting to software rendering
[3585505.396] (II) AIGLX: Loaded and initialized swrast
[3585505.396] (II) GLX: Initialized DRISWRAST GL provider for screen 0
[3585505.399] (II) VIVANTE(0): Setting screen physical size to 169 x 127
[3585505.805] (II) config/udev: Adding input device BTC Multimedia USB Keyboard (/dev/input/event1)
[3585505.805] (**) BTC Multimedia USB Keyboard: Applying InputClass "evdev keyboard catchall"
[3585505.805] (II) LoadModule: "evdev"
[3585505.806] (II) Loading /usr/lib/xorg/modules/input/evdev_drv.so
[3585505.811] (II) Module evdev: vendor="X.Org Foundation"
[3585505.811] 	compiled for 1.14.4, module version = 2.8.2
[3585505.811] 	Module class: X.Org XInput Driver
[3585505.811] 	ABI class: X.Org XInput driver, version 19.1
[3585505.811] (II) Using input driver 'evdev' for 'BTC Multimedia USB Keyboard'
[3585505.811] (**) BTC Multimedia USB Keyboard: always reports core events
[3585505.811] (**) evdev: BTC Multimedia USB Keyboard: Device: "/dev/input/event1"
[3585505.812] (--) evdev: BTC Multimedia USB Keyboard: Vendor 0x46e Product 0x530a
[3585505.812] (--) evdev: BTC Multimedia USB Keyboard: Found keys
[3585505.812] (II) evdev: BTC Multimedia USB Keyboard: Configuring as keyboard
[3585505.812] (**) Option "config_info" "udev:/sys/devices/platform/fsl-ehci.1/usb2/2-1/2-1.2/2-1.2.1/2-1.2.1:1.0/input/input1/event1"
[3585505.812] (II) XINPUT: Adding extended input device "BTC Multimedia USB Keyboard" (type: KEYBOARD, id 6)
[3585505.812] (**) Option "xkb_rules" "evdev"
[3585505.812] (**) Option "xkb_model" "pc104"
[3585505.812] (**) Option "xkb_layout" "us"
[3585505.897] (II) config/udev: Adding input device Logitech USB-PS/2 Optical Mouse (/dev/input/event2)
[3585505.897] (**) Logitech USB-PS/2 Optical Mouse: Applying InputClass "evdev pointer catchall"
[3585505.897] (II) Using input driver 'evdev' for 'Logitech USB-PS/2 Optical Mouse'
[3585505.897] (**) Logitech USB-PS/2 Optical Mouse: always reports core events
[3585505.897] (**) evdev: Logitech USB-PS/2 Optical Mouse: Device: "/dev/input/event2"
[3585505.898] (--) evdev: Logitech USB-PS/2 Optical Mouse: Vendor 0x46d Product 0xc00e
[3585505.898] (--) evdev: Logitech USB-PS/2 Optical Mouse: Found 3 mouse buttons
[3585505.898] (--) evdev: Logitech USB-PS/2 Optical Mouse: Found scroll wheel(s)
[3585505.898] (--) evdev: Logitech USB-PS/2 Optical Mouse: Found relative axes
[3585505.898] (--) evdev: Logitech USB-PS/2 Optical Mouse: Found x and y relative axes
[3585505.898] (II) evdev: Logitech USB-PS/2 Optical Mouse: Configuring as mouse
[3585505.898] (II) evdev: Logitech USB-PS/2 Optical Mouse: Adding scrollwheel support
[3585505.898] (**) evdev: Logitech USB-PS/2 Optical Mouse: YAxisMapping: buttons 4 and 5
[3585505.898] (**) evdev: Logitech USB-PS/2 Optical Mouse: EmulateWheelButton: 4, EmulateWheelInertia: 10, EmulateWheelTimeout: 200
[3585505.898] (**) Option "config_info" "udev:/sys/devices/platform/fsl-ehci.1/usb2/2-1/2-1.2/2-1.2.2/2-1.2.2:1.0/input/input2/event2"
[3585505.898] (II) XINPUT: Adding extended input device "Logitech USB-PS/2 Optical Mouse" (type: MOUSE, id 7)
[3585505.898] (II) evdev: Logitech USB-PS/2 Optical Mouse: initialized for relative axes.
[3585505.899] (**) Logitech USB-PS/2 Optical Mouse: (accel) keeping acceleration scheme 1
[3585505.899] (**) Logitech USB-PS/2 Optical Mouse: (accel) acceleration profile 0
[3585505.899] (**) Logitech USB-PS/2 Optical Mouse: (accel) acceleration factor: 2.000
[3585505.899] (**) Logitech USB-PS/2 Optical Mouse: (accel) acceleration threshold: 4
[3585505.900] (II) config/udev: Adding input device Logitech USB-PS/2 Optical Mouse (/dev/input/mouse0)
[3585505.900] (II) No input driver specified, ignoring this device.
[3585505.900] (II) This device may have been added with another device file.
[3585505.901] (II) config/udev: Adding input device gpio-keys (/dev/input/event0)
[3585505.901] (**) gpio-keys: Applying InputClass "evdev keyboard catchall"
[3585505.901] (II) Using input driver 'evdev' for 'gpio-keys'
[3585505.901] (**) gpio-keys: always reports core events
[3585505.901] (**) evdev: gpio-keys: Device: "/dev/input/event0"
[3585505.901] (--) evdev: gpio-keys: Vendor 0x1 Product 0x1
[3585505.901] (--) evdev: gpio-keys: Found keys
[3585505.901] (II) evdev: gpio-keys: Configuring as keyboard
[3585505.901] (**) Option "config_info" "udev:/sys/devices/platform/gpio-keys/input/input0/event0"
[3585505.901] (II) XINPUT: Adding extended input device "gpio-keys" (type: KEYBOARD, id 8)
[3585505.901] (**) Option "xkb_rules" "evdev"
[3585505.901] (**) Option "xkb_model" "pc104"
[3585505.901] (**) Option "xkb_layout" "us"
[3585505.903] (II) config/udev: Adding drm device (/dev/dri/card0)
[3585505.903] (II) xfree86: Adding drm device (/dev/dri/card0)
[3585505.903] setversion 1.4 failed
[3585506.115] removing GPU device /sys/devices/virtual/drm/card0 /dev/dri/card0
[3585506.115] (II) config/udev: Adding drm device (/dev/dri/card0)
[3585506.115] (II) xfree86: Adding drm device (/dev/dri/card0)
[3585506.115] setversion 1.4 failed

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 05/12] xf86-video-imxfb-vivante: Upgrade to 3.10.17-1.0.0_beta version
  2014-01-27 23:43   ` Eric Nelson
@ 2014-01-28  0:40     ` Otavio Salvador
  2014-01-28 20:05     ` Eric Nelson
  2014-01-29 15:56     ` Diego
  2 siblings, 0 replies; 24+ messages in thread
From: Otavio Salvador @ 2014-01-28  0:40 UTC (permalink / raw)
  To: Eric Nelson, Lauren Post; +Cc: meta-freescale Mailing List

Hello Eric, Hello Lauren,

On Mon, Jan 27, 2014 at 9:43 PM, Eric Nelson
<eric.nelson@boundarydevices.com> wrote:
> On 01/25/2014 03:09 PM, Otavio Salvador wrote:
>>
>> From: Lauren Post <lauren.post@freescale.com>
>>
>> Signed-off-by: Lauren Post <lauren.post@freescale.com>
>> Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
>> ---
>>
>>   ...alpha.2.bb => xf86-video-imxfb-vivante_3.10.17-1.0.0.bb} | 13
>> +++++++------
>>   1 file changed, 7 insertions(+), 6 deletions(-)
>>   rename
>> recipes-graphics/xorg-driver/{xf86-video-imxfb-vivante_3.5.7-1.0.0-alpha.2.bb
>> => xf86-video-imxfb-vivante_3.10.17-1.0.0.bb} (80%)
>>
>> diff --git
>> a/recipes-graphics/xorg-driver/xf86-video-imxfb-vivante_3.5.7-1.0.0-alpha.2.bb
>> b/recipes-graphics/xorg-driver/xf86-video-imxfb-vivante_3.10.17-1.0.0.bb
>> similarity index 80%
>> rename from
>> recipes-graphics/xorg-driver/xf86-video-imxfb-vivante_3.5.7-1.0.0-alpha.2.bb
>> rename to
>> recipes-graphics/xorg-driver/xf86-video-imxfb-vivante_3.10.17-1.0.0.bb
>> index 35a5759..31f2747 100644
>> ---
>> a/recipes-graphics/xorg-driver/xf86-video-imxfb-vivante_3.5.7-1.0.0-alpha.2.bb
>> +++
>> b/recipes-graphics/xorg-driver/xf86-video-imxfb-vivante_3.10.17-1.0.0.bb
>> @@ -1,5 +1,5 @@
>> -# Copyright (C) 2012-2013 Freescale Semiconductor
>> -# Copyright (C) 2012-2013 O.S. Systems Software LTDA.
>> +# Copyright (C) 2012-2014 Freescale Semiconductor
>> +# Copyright (C) 2012-2014 O.S. Systems Software LTDA.
>>   # Released under the MIT license (see COPYING.MIT for the terms)
>>
>>   require recipes-graphics/xorg-driver/xorg-driver-video.inc
>> @@ -10,9 +10,10 @@ DEPENDS += "virtual/xserver virtual/libx11
>> virtual/libgal-x11 gpu-viv-bin-mx6q p
>>
>>   LIC_FILES_CHKSUM =
>> "file://EXA/src/vivante_fbdev/vivante.h;endline=19;md5=641ac6e6d013833e36290797f4d7089c"
>>
>> -SRC_URI = "${FSL_MIRROR}/xserver-xorg-video-imx-viv-${PV}.tar.gz"
>> -SRC_URI[md5sum] = "3fc3d355d721656144920afd06fb1bff"
>> -SRC_URI[sha256sum] =
>> "49fab65a0a1ea74ec6b04700e035b1351244fbd363301d59d6d0cbffe37d6fb9"
>> +# FIXME: Drop 'beta' suffix for GA release
>> +SRC_URI = "${FSL_MIRROR}/xserver-xorg-video-imx-viv-${PV}_beta.tar.gz"
>> +SRC_URI[md5sum] = "fee0e4820fe3f89e5f36a0b343e4a33f"
>> +SRC_URI[sha256sum] =
>> "b65aef86943cb0fcd2dd7ded01215038dcf2761779ce39186ab3c8c2d4b010b1"
>>
>>   EXTRA_OEMAKE += "-C EXA/src -f makefile.linux prefix=${D}/usr \
>>                    sysroot=${STAGING_DIR_TARGET} \
>> @@ -24,7 +25,7 @@ CFLAGS += "-I${STAGING_INCDIR}/xorg \
>>              -I${STAGING_INCDIR}/drm \
>>              -I../../DRI_1.10.4/src"
>>
>> -S = "${WORKDIR}/xserver-xorg-video-imx-viv-${PV}/"
>> +S = "${WORKDIR}/xserver-xorg-video-imx-viv-${PV}_beta/"
>>
>
> I'm not sure if this is the right patch to tag, but during my testing of
> the Vivante/X integration, I saw some issues related to mode settings.
>
> On Nitrogen6x Quad core, I'm seeing X start up with a mode of 640x480,
> on the HDMI device even though the kernel command line is configured
> for 720P.
>
> The same is not true with the same monitor and Nitrogen6_Lite (Solo
> processor):
>
> The prime leads are these from Xorg.0.log (attached):
>
> [3585503.788] (II) VIVANTE(0): Output DISP3 BG - DI1 connected
> [3585503.788] (II) VIVANTE(0): Using exact sizes for initial modes
> [3585503.788] (II) VIVANTE(0): Output DISP3 BG - DI1 using initial mode
> V:640x480p-60
> [3585504.480] (II) VIVANTE(0): imxDisplayPreInit: virtual set 640 x 480,
> display width 0
> [3585504.480] (II) VIVANTE(0): FBDevPreInit: adjust display width 640
>
> Oddly, the display reverts to 720p (1280x720) if I stop X.
>
> This appears using either kernel version 3.0.35 or 3.10.17.
>
> I'm continuing to investigate, but thought I'd send out a note
> in case others are seeing similar behaviour or know what might
> be involved here.

Lauren, can you verify it with your three and also internally if it is
a known issue?

-- 
Otavio Salvador                             O.S. Systems
http://www.ossystems.com.br        http://code.ossystems.com.br
Mobile: +55 (53) 9981-7854            Mobile: +1 (347) 903-9750


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 05/12] xf86-video-imxfb-vivante: Upgrade to 3.10.17-1.0.0_beta version
  2014-01-27 23:43   ` Eric Nelson
  2014-01-28  0:40     ` Otavio Salvador
@ 2014-01-28 20:05     ` Eric Nelson
  2014-01-29 15:56     ` Diego
  2 siblings, 0 replies; 24+ messages in thread
From: Eric Nelson @ 2014-01-28 20:05 UTC (permalink / raw)
  To: Otavio Salvador, meta-freescale Mailing List

Hi all,

On 01/27/2014 04:43 PM, Eric Nelson wrote:
> Thanks Otavio,
>
> On 01/25/2014 03:09 PM, Otavio Salvador wrote:
>> From: Lauren Post <lauren.post@freescale.com>
>>
>>  <snip>
>>
>>   EXTRA_OEMAKE += "-C EXA/src -f makefile.linux prefix=${D}/usr \
>>                    sysroot=${STAGING_DIR_TARGET} \
>> @@ -24,7 +25,7 @@ CFLAGS += "-I${STAGING_INCDIR}/xorg \
>>              -I${STAGING_INCDIR}/drm \
>>              -I../../DRI_1.10.4/src"
>>
>> -S = "${WORKDIR}/xserver-xorg-video-imx-viv-${PV}/"
>> +S = "${WORKDIR}/xserver-xorg-video-imx-viv-${PV}_beta/"
>>
>
> I'm not sure if this is the right patch to tag, but during my testing of
> the Vivante/X integration, I saw some issues related to mode settings.
>
> On Nitrogen6x Quad core, I'm seeing X start up with a mode of 640x480,
> on the HDMI device even though the kernel command line is configured
> for 720P.
>
> The same is not true with the same monitor and Nitrogen6_Lite (Solo
> processor):
>
> The prime leads are these from Xorg.0.log (attached):
>
> [3585503.788] (II) VIVANTE(0): Output DISP3 BG - DI1 connected
> [3585503.788] (II) VIVANTE(0): Using exact sizes for initial modes
> [3585503.788] (II) VIVANTE(0): Output DISP3 BG - DI1 using initial mode
> V:640x480p-60
> [3585504.480] (II) VIVANTE(0): imxDisplayPreInit: virtual set 640 x 480,
> display width 0
> [3585504.480] (II) VIVANTE(0): FBDevPreInit: adjust display width 640
>
> Oddly, the display reverts to 720p (1280x720) if I stop X.
>
> This appears using either kernel version 3.0.35 or 3.10.17.
>
> I'm continuing to investigate, but thought I'd send out a note
> in case others are seeing similar behaviour or know what might
> be involved here.
>

While I haven't figured out why the X startup isn't recognizing
the current video mode, I have figured out that I can switch
between modes using XRandR:

1080P:
	root@nitrogen6x-lite:~# xrandr --size 1920x1080 --rate 60
720P:
	root@nitrogen6x-lite:~# xrandr --size 1280x720 --rate 60

There's probably also a way to set this up inside xorg.conf,
but I don't know the secret(s) yet.

Regards,


Eric


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 05/12] xf86-video-imxfb-vivante: Upgrade to 3.10.17-1.0.0_beta version
  2014-01-27 23:43   ` Eric Nelson
  2014-01-28  0:40     ` Otavio Salvador
  2014-01-28 20:05     ` Eric Nelson
@ 2014-01-29 15:56     ` Diego
  2014-01-29 16:52       ` Eric Nelson
  2 siblings, 1 reply; 24+ messages in thread
From: Diego @ 2014-01-29 15:56 UTC (permalink / raw)
  To: meta-freescale

Eric Nelson wrote:
> I'm not sure if this is the right patch to tag, but during my testing of
> the Vivante/X integration, I saw some issues related to mode settings.
> 
> On Nitrogen6x Quad core, I'm seeing X start up with a mode of 640x480,
> on the HDMI device even though the kernel command line is configured
> for 720P.
> 
> The same is not true with the same monitor and Nitrogen6_Lite (Solo
> processor):
> 
> The prime leads are these from Xorg.0.log (attached):
> 
> [3585503.788] (II) VIVANTE(0): Output DISP3 BG - DI1 connected
> [3585503.788] (II) VIVANTE(0): Using exact sizes for initial modes
> [3585503.788] (II) VIVANTE(0): Output DISP3 BG - DI1 using initial mode
> V:640x480p-60
> [3585504.480] (II) VIVANTE(0): imxDisplayPreInit: virtual set 640 x 480,
> display width 0
> [3585504.480] (II) VIVANTE(0): FBDevPreInit: adjust display width 640
> 
> Oddly, the display reverts to 720p (1280x720) if I stop X.
> 
> This appears using either kernel version 3.0.35 or 3.10.17.
> 
> I'm continuing to investigate, but thought I'd send out a note
> in case others are seeing similar behaviour or know what might
> be involved here.

I confirm I have the same issue, X is starting per default at 640x480 on HDMI, 
which is not a good default.
I can subsequently change the resolution to 1280x720 or 1920x1080 with xrandr.

Diego



^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 05/12] xf86-video-imxfb-vivante: Upgrade to 3.10.17-1.0.0_beta version
  2014-01-29 15:56     ` Diego
@ 2014-01-29 16:52       ` Eric Nelson
  0 siblings, 0 replies; 24+ messages in thread
From: Eric Nelson @ 2014-01-29 16:52 UTC (permalink / raw)
  To: Diego, meta-freescale

Thanks Diego,

On 01/29/2014 08:56 AM, Diego wrote:
> Eric Nelson wrote:
>> I'm not sure if this is the right patch to tag, but during my testing of
>> the Vivante/X integration, I saw some issues related to mode settings.
>>
>> On Nitrogen6x Quad core, I'm seeing X start up with a mode of 640x480,
>> on the HDMI device even though the kernel command line is configured
>> for 720P.
>>
>> The same is not true with the same monitor and Nitrogen6_Lite (Solo
>> processor):
>>
>> The prime leads are these from Xorg.0.log (attached):
>>
>> [3585503.788] (II) VIVANTE(0): Output DISP3 BG - DI1 connected
>> [3585503.788] (II) VIVANTE(0): Using exact sizes for initial modes
>> [3585503.788] (II) VIVANTE(0): Output DISP3 BG - DI1 using initial mode
>> V:640x480p-60
>> [3585504.480] (II) VIVANTE(0): imxDisplayPreInit: virtual set 640 x 480,
>> display width 0
>> [3585504.480] (II) VIVANTE(0): FBDevPreInit: adjust display width 640
>>
>> Oddly, the display reverts to 720p (1280x720) if I stop X.
>>
>> This appears using either kernel version 3.0.35 or 3.10.17.
>>
>> I'm continuing to investigate, but thought I'd send out a note
>> in case others are seeing similar behaviour or know what might
>> be involved here.
>
> I confirm I have the same issue, X is starting per default at 640x480 on HDMI,
> which is not a good default.
> I can subsequently change the resolution to 1280x720 or 1920x1080 with xrandr.
>

I just tested on SABRE SD to remove the possibility that one of
our kernel patches was coming into play and found the same result:

root@imx6qsabresd:~# cat /proc/cmdline
video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb1:off 
video=mxcfb2:off video=mxcfb3:off console=ttymxc0,115200 
root=/dev/mmcblk0p2 rootwait rw
root@imx6qsabresd:~# cat /sys/class/graphics/fb0/mode
U:640x480p-60

Regards,


Eric


^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2014-01-29 16:52 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-25 22:09 [PATCH 0/12] Freescale 3.10.17-1.0.0-beta - part2 Otavio Salvador
2014-01-25 22:09 ` [PATCH 01/12] imx-base.inc: Drop EXTRA_IMAGEDEPENDS setting Otavio Salvador
2014-01-25 22:09 ` [PATCH 02/12] u-boot-imx: Upgrade for 3.10.17-1.0.0_beta release Otavio Salvador
2014-01-25 22:09 ` [PATCH 03/12] linux-imx: Upgrade to 3.10.17-1.0.0_beta version Otavio Salvador
2014-01-25 22:09 ` [PATCH 04/12] linux-imx (3.0.35): Allow use with 3.10.17-1.0.0 GPU Otavio Salvador
2014-01-25 22:09 ` [PATCH 05/12] xf86-video-imxfb-vivante: Upgrade to 3.10.17-1.0.0_beta version Otavio Salvador
2014-01-27 23:43   ` Eric Nelson
2014-01-28  0:40     ` Otavio Salvador
2014-01-28 20:05     ` Eric Nelson
2014-01-29 15:56     ` Diego
2014-01-29 16:52       ` Eric Nelson
2014-01-25 22:09 ` [PATCH 06/12] gpu-viv-bin-mx6q: " Otavio Salvador
2014-01-25 22:09 ` [PATCH 07/12] gpu-viv-g2d: Fix packaging Otavio Salvador
2014-01-25 22:09 ` [PATCH 08/12] gpu-viv-g2d: Update to 3.10.17-1.0.0_beta Otavio Salvador
2014-01-25 22:09 ` [PATCH 09/12] imx6slevk: Add new device tree imx6sl-evk-csi.dtb Otavio Salvador
2014-01-25 22:09 ` [PATCH 10/12] imx6dlsabreauto.conf: Add ecspi and flexcan1 device tree support Otavio Salvador
2014-01-25 22:09 ` [PATCH 11/12] imx6qsabreauto.conf: " Otavio Salvador
2014-01-25 22:09 ` [PATCH 12/12] imx6qsabreauto.conf: Add sata uboot config support Otavio Salvador
2014-01-25 22:11 ` [PATCH 0/12] Freescale 3.10.17-1.0.0-beta - part2 Otavio Salvador
2014-01-25 23:22   ` Eric Nelson
2014-01-27 10:25     ` Diego
2014-01-27 10:40       ` Diego Rondini
2014-01-27 14:22         ` Xrandr and Vivante acceleration (was Freescale 3.10.17-1.0.0-beta - part2) Eric Nelson
2014-01-25 22:33 ` [PATCH 0/12] Freescale 3.10.17-1.0.0-beta - part2 Otavio Salvador

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.