[meta-freescale] [meta-fsl-arm][PATCH][master]: linux-imx (3.0.35): Synchronize Boundary Devices changes

Eric Nelson eric.nelson at boundarydevices.com
Sun Dec 23 09:03:08 PST 2012


Synchronize with branch boundary-L3.0.35_12.09.01_GA on GitHub:
	http://github.com/boundarydevices/linux-imx6/

The defconfig matches nitrogen6x_defconfig with two minor changes to
match Yocto userspace:
	- Add devtmpfs
	- GPU_VIV statically linked into kernel

This update includes a number of ethernet performance improvements as
discussed in this blog post:
	http://boundarydevices.com/i-mx6-ethernet/

It also includes proper camera definitions in defconfig to allow
camera input from the OV5642 camera module and an update to the
SGTL5000 microphone ALSA controls as discussed in this post:

	http://boundarydevices.com/imx6-sgtl5000-microphone/

Signed-off-by: Eric Nelson <eric.nelson at boundarydevices.com>
---
 .../linux-imx-3.0.35/imx6qsabrelite/defconfig      |    7 +-
 .../imx6qsabrelite/sync-boundary-changes.patch     |  614 +++++++++++++++++---
 2 files changed, 545 insertions(+), 76 deletions(-)

diff --git a/recipes-kernel/linux/linux-imx-3.0.35/imx6qsabrelite/defconfig b/recipes-kernel/linux/linux-imx-3.0.35/imx6qsabrelite/defconfig
index 1c8d6f3..4941948 100644
--- a/recipes-kernel/linux/linux-imx-3.0.35/imx6qsabrelite/defconfig
+++ b/recipes-kernel/linux/linux-imx-3.0.35/imx6qsabrelite/defconfig
@@ -86,9 +86,9 @@ CONFIG_CFG80211=y
 CONFIG_MAC80211=y
 CONFIG_RFKILL=y
 CONFIG_RFKILL_INPUT=y
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
 CONFIG_DEVTMPFS=y
 CONFIG_DEVTMPFS_MOUNT=y
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
 CONFIG_CONNECTOR=y
 CONFIG_MTD=y
 CONFIG_MTD_CMDLINE_PARTS=y
@@ -110,6 +110,7 @@ CONFIG_TUN=y
 CONFIG_MII=y
 CONFIG_MICREL_PHY=y
 CONFIG_NET_ETHERNET=y
+CONFIG_FEC_NAPI=y
 # CONFIG_NETDEV_1000 is not set
 # CONFIG_NETDEV_10000 is not set
 CONFIG_HOSTAP=y
@@ -157,11 +158,7 @@ CONFIG_VIDEO_DEV=y
 # CONFIG_RC_CORE is not set
 # CONFIG_MEDIA_TUNER_CUSTOMISE is not set
 CONFIG_VIDEO_MXC_CAMERA=m
-CONFIG_MXC_CAMERA_OV3640=m
-CONFIG_MXC_CAMERA_OV5640=m
-CONFIG_MXC_CAMERA_OV8820_MIPI=m
 CONFIG_MXC_CAMERA_OV5642=m
-CONFIG_MXC_CAMERA_OV5640_MIPI=m
 CONFIG_MXC_IPU_DEVICE_QUEUE_SDC=m
 CONFIG_USB_VIDEO_CLASS=m
 # CONFIG_RADIO_ADAPTERS is not set
diff --git a/recipes-kernel/linux/linux-imx-3.0.35/imx6qsabrelite/sync-boundary-changes.patch b/recipes-kernel/linux/linux-imx-3.0.35/imx6qsabrelite/sync-boundary-changes.patch
index 5f22380..d0b6b0a 100644
--- a/recipes-kernel/linux/linux-imx-3.0.35/imx6qsabrelite/sync-boundary-changes.patch
+++ b/recipes-kernel/linux/linux-imx-3.0.35/imx6qsabrelite/sync-boundary-changes.patch
@@ -9,10 +9,10 @@ old mode 100755
 new mode 100644
 diff --git a/arch/arm/configs/nitrogen6x_defconfig b/arch/arm/configs/nitrogen6x_defconfig
 new file mode 100644
-index 0000000..35e4cc3
+index 0000000..dfb067c
 --- /dev/null
 +++ b/arch/arm/configs/nitrogen6x_defconfig
-@@ -0,0 +1,3020 @@
+@@ -0,0 +1,3092 @@
 +#
 +# Automatically generated make config: don't edit
 +# Linux/arm 3.0.35 Kernel Configuration
@@ -134,6 +134,7 @@ index 0000000..35e4cc3
 +CONFIG_PERF_EVENTS=y
 +# CONFIG_PERF_COUNTERS is not set
 +CONFIG_VM_EVENT_COUNTERS=y
++CONFIG_PCI_QUIRKS=y
 +CONFIG_SLUB_DEBUG=y
 +CONFIG_COMPAT_BRK=y
 +# CONFIG_SLAB is not set
@@ -302,7 +303,6 @@ index 0000000..35e4cc3
 +CONFIG_IMX_HAVE_PLATFORM_FSL_USB_WAKEUP=y
 +CONFIG_IMX_HAVE_PLATFORM_IMX_PM=y
 +CONFIG_IMX_HAVE_PLATFORM_IMX_ASRC=y
-+CONFIG_IMX_HAVE_PLATFORM_IMX_MIPI_DSI=y
 +CONFIG_IMX_HAVE_PLATFORM_IMX_MIPI_CSI2=y
 +CONFIG_IMX_HAVE_PLATFORM_IMX_VDOA=y
 +CONFIG_IMX_HAVE_PLATFORM_IMX_PCIE=y
@@ -322,6 +322,7 @@ index 0000000..35e4cc3
 +CONFIG_SOC_IMX6Q=y
 +# CONFIG_MACH_MX6Q_ARM2 is not set
 +# CONFIG_MACH_MX6SL_ARM2 is not set
++# CONFIG_MACH_MX6SL_EVK is not set
 +CONFIG_MACH_MX6Q_SABRELITE=y
 +# CONFIG_MACH_MX6Q_SABRESD is not set
 +# CONFIG_MACH_MX6Q_SABREAUTO is not set
@@ -629,6 +630,7 @@ index 0000000..35e4cc3
 +# CONFIG_CAN_MCP251X is not set
 +CONFIG_HAVE_CAN_FLEXCAN=y
 +CONFIG_CAN_FLEXCAN=y
++# CONFIG_PCH_CAN is not set
 +# CONFIG_CAN_SJA1000 is not set
 +# CONFIG_CAN_C_CAN is not set
 +
@@ -665,9 +667,7 @@ index 0000000..35e4cc3
 +# CONFIG_BT_HCIBFUSB is not set
 +# CONFIG_BT_HCIVHCI is not set
 +# CONFIG_BT_MRVL is not set
-+# CONFIG_BT_ATH3K is not set
 +# CONFIG_AF_RXRPC is not set
-+CONFIG_FIB_RULES=y
 +CONFIG_WIRELESS=y
 +CONFIG_WIRELESS_EXT=y
 +CONFIG_WEXT_CORE=y
@@ -688,7 +688,6 @@ index 0000000..35e4cc3
 +CONFIG_LIB80211_CRYPT_CCMP=y
 +CONFIG_LIB80211_CRYPT_TKIP=y
 +# CONFIG_LIB80211_DEBUG is not set
-+# CONFIG_CFG80211_ALLOW_RECONNECT is not set
 +CONFIG_MAC80211=y
 +CONFIG_MAC80211_HAS_RC=y
 +# CONFIG_MAC80211_RC_PID is not set
@@ -773,11 +772,13 @@ index 0000000..35e4cc3
 +# Mapping drivers for chip access
 +#
 +# CONFIG_MTD_COMPLEX_MAPPINGS is not set
++# CONFIG_MTD_INTEL_VR_NOR is not set
 +# CONFIG_MTD_PLATRAM is not set
 +
 +#
 +# Self-contained MTD device drivers
 +#
++# CONFIG_MTD_PMC551 is not set
 +# CONFIG_MTD_DATAFLASH is not set
 +CONFIG_MTD_M25P80=y
 +CONFIG_M25PXX_USE_FAST_READ=y
@@ -800,9 +801,12 @@ index 0000000..35e4cc3
 +# CONFIG_MTD_NAND_ECC_BCH is not set
 +# CONFIG_MTD_SM_COMMON is not set
 +# CONFIG_MTD_NAND_MUSEUM_IDS 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_RICOH is not set
 +# CONFIG_MTD_NAND_DISKONCHIP is not set
++# CONFIG_MTD_NAND_CAFE is not set
 +# CONFIG_MTD_NAND_NANDSIM is not set
 +# CONFIG_MTD_NAND_GPMI_NAND is not set
 +# CONFIG_MTD_NAND_PLATFORM is not set
@@ -820,11 +824,16 @@ index 0000000..35e4cc3
 +# CONFIG_MTD_UBI_DEBUG is not set
 +# CONFIG_PARPORT is not set
 +CONFIG_BLK_DEV=y
++# CONFIG_BLK_CPQ_DA is not set
++# CONFIG_BLK_CPQ_CISS_DA is not set
++# CONFIG_BLK_DEV_DAC960 is not set
++# CONFIG_BLK_DEV_UMEM is not set
 +# CONFIG_BLK_DEV_COW_COMMON is not set
 +CONFIG_BLK_DEV_LOOP=y
 +# CONFIG_BLK_DEV_CRYPTOLOOP is not set
 +# CONFIG_BLK_DEV_DRBD is not set
 +# CONFIG_BLK_DEV_NBD is not set
++# CONFIG_BLK_DEV_SX8 is not set
 +# CONFIG_BLK_DEV_UB is not set
 +# CONFIG_BLK_DEV_RAM is not set
 +# CONFIG_CDROM_PKTCDVD is not set
@@ -849,14 +858,11 @@ index 0000000..35e4cc3
 +# CONFIG_SENSORS_BH1770 is not set
 +# CONFIG_SENSORS_APDS990X is not set
 +# CONFIG_HMC6352 is not set
-+# CONFIG_SENSORS_AK8975 is not set
 +# CONFIG_DS1682 is not set
 +# CONFIG_TI_DAC7512 is not set
 +# CONFIG_BMP085 is not set
 +# CONFIG_PCH_PHUB is not set
 +CONFIG_MXS_PERFMON=m
-+# CONFIG_WL127X_RFKILL is not set
-+# CONFIG_APANIC is not set
 +# CONFIG_C2PORT is not set
 +
 +#
@@ -1128,7 +1134,7 @@ index 0000000..35e4cc3
 +# CONFIG_KS8851 is not set
 +# CONFIG_KS8851_MLL is not set
 +CONFIG_FEC=y
-+# CONFIG_FEC_NAPI is not set
++CONFIG_FEC_NAPI=y
 +# CONFIG_FEC_1588 is not set
 +# CONFIG_ATL2 is not set
 +# CONFIG_FTMAC100 is not set
@@ -1147,12 +1153,9 @@ index 0000000..35e4cc3
 +# CONFIG_ADM8211 is not set
 +# CONFIG_MAC80211_HWSIM is not set
 +# CONFIG_MWL8K is not set
-+# CONFIG_WIFI_CONTROL_FUNC is not set
 +# CONFIG_ATH_COMMON is not set
 +# CONFIG_B43 is not set
 +# CONFIG_B43LEGACY is not set
-+# CONFIG_BCM4329 is not set
-+# CONFIG_BCMDHD is not set
 +CONFIG_HOSTAP=y
 +# CONFIG_HOSTAP_FIRMWARE is not set
 +# CONFIG_HOSTAP_PLX is not set
@@ -1200,11 +1203,15 @@ index 0000000..35e4cc3
 +#
 +# CAIF transport drivers
 +#
++# CONFIG_FDDI is not set
++# CONFIG_HIPPI is not set
 +# CONFIG_PPP is not set
 +# CONFIG_SLIP is not set
++# CONFIG_NET_FC is not set
 +# CONFIG_NETCONSOLE is not set
 +# CONFIG_NETPOLL is not set
 +# CONFIG_NET_POLL_CONTROLLER is not set
++# CONFIG_VMXNET3 is not set
 +# CONFIG_ISDN is not set
 +# CONFIG_PHONE is not set
 +
@@ -1267,6 +1274,7 @@ index 0000000..35e4cc3
 +# CONFIG_TOUCHSCREEN_EETI is not set
 +CONFIG_TOUCHSCREEN_EGALAX=y
 +# CONFIG_TOUCHSCREEN_ELAN is not set
++# CONFIG_TOUCHSCREEN_EGALAX_SINGLE_TOUCH is not set
 +# CONFIG_TOUCHSCREEN_FUJITSU is not set
 +# CONFIG_TOUCHSCREEN_GUNZE is not set
 +# CONFIG_TOUCHSCREEN_ELO is not set
@@ -1279,7 +1287,6 @@ index 0000000..35e4cc3
 +# CONFIG_TOUCHSCREEN_INEXIO is not set
 +# CONFIG_TOUCHSCREEN_MK712 is not set
 +# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-+# CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI is not set
 +# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
 +# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
 +# CONFIG_TOUCHSCREEN_WM97XX is not set
@@ -1296,13 +1303,11 @@ index 0000000..35e4cc3
 +# CONFIG_INPUT_AD714X is not set
 +# CONFIG_INPUT_ATI_REMOTE is not set
 +# CONFIG_INPUT_ATI_REMOTE2 is not set
-+# CONFIG_INPUT_KEYCHORD is not set
 +# CONFIG_INPUT_KEYSPAN_REMOTE is not set
 +# CONFIG_INPUT_POWERMATE is not set
 +# CONFIG_INPUT_YEALINK is not set
 +# CONFIG_INPUT_CM109 is not set
 +CONFIG_INPUT_UINPUT=y
-+# CONFIG_INPUT_GPIO is not set
 +# CONFIG_INPUT_PCF8574 is not set
 +# CONFIG_INPUT_PWM_BEEPER is not set
 +# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
@@ -1338,7 +1343,6 @@ index 0000000..35e4cc3
 +# CONFIG_NOZOMI is not set
 +# CONFIG_N_GSM is not set
 +# CONFIG_TRACE_SINK is not set
-+CONFIG_DEVMEM=y
 +CONFIG_DEVKMEM=y
 +
 +#
@@ -1374,7 +1378,6 @@ index 0000000..35e4cc3
 +# CONFIG_RAW_DRIVER is not set
 +# CONFIG_TCG_TPM is not set
 +CONFIG_DEVPORT=y
-+# CONFIG_DCC_TTY is not set
 +# CONFIG_RAMOOPS is not set
 +CONFIG_MXS_VIIM=y
 +CONFIG_I2C=y
@@ -1383,6 +1386,7 @@ index 0000000..35e4cc3
 +CONFIG_I2C_CHARDEV=y
 +# CONFIG_I2C_MUX is not set
 +CONFIG_I2C_HELPER_AUTO=y
++CONFIG_I2C_ALGOBIT=m
 +
 +#
 +# I2C Hardware Bus support
@@ -1865,12 +1869,11 @@ index 0000000..35e4cc3
 +# CONFIG_VIDEO_MXC_CSI_CAMERA is not set
 +# CONFIG_MXC_CAMERA_MICRON111 is not set
 +# CONFIG_MXC_CAMERA_OV2640 is not set
-+CONFIG_MXC_CAMERA_OV3640=m
-+CONFIG_MXC_CAMERA_OV5640=m
-+CONFIG_MXC_CAMERA_OV8820_MIPI=m
++# CONFIG_MXC_CAMERA_OV3640 is not set
++# CONFIG_MXC_CAMERA_OV5640 is not set
++# CONFIG_MXC_CAMERA_OV8820_MIPI is not set
 +CONFIG_MXC_CAMERA_OV5642=m
-+CONFIG_MXC_TVIN_ADV7180=m
-+CONFIG_MXC_CAMERA_OV5640_MIPI=m
++# CONFIG_MXC_CAMERA_OV5640_MIPI is not set
 +CONFIG_MXC_CAMERA_SENSOR_CLK=m
 +CONFIG_MXC_IPU_DEVICE_QUEUE_SDC=m
 +CONFIG_MXC_IPU_PRP_ENC=m
@@ -1880,6 +1883,7 @@ index 0000000..35e4cc3
 +# CONFIG_VIDEO_MXC_IPUV1_WVGA_OUTPUT is not set
 +# CONFIG_VIDEO_MXC_OPL is not set
 +# CONFIG_VIDEO_CPIA2 is not set
++# CONFIG_VIDEO_ZORAN is not set
 +# CONFIG_VIDEO_SAA7134 is not set
 +# CONFIG_VIDEO_MXB is not set
 +# CONFIG_VIDEO_HEXIUM_ORION is not set
@@ -1951,8 +1955,11 @@ index 0000000..35e4cc3
 +#
 +# Graphics support
 +#
++CONFIG_VGA_ARB=y
++CONFIG_VGA_ARB_MAX_GPUS=16
 +CONFIG_DRM=m
 +CONFIG_DRM_VIVANTE=m
++# CONFIG_STUB_POULSBO is not set
 +# CONFIG_VGASTATE is not set
 +# CONFIG_VIDEO_OUTPUT_CONTROL is not set
 +CONFIG_FB=y
@@ -1969,7 +1976,6 @@ index 0000000..35e4cc3
 +# CONFIG_FB_FOREIGN_ENDIAN is not set
 +# CONFIG_FB_SYS_FOPS is not set
 +# CONFIG_FB_WMT_GE_ROPS 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
@@ -2090,6 +2096,71 @@ index 0000000..35e4cc3
 +# CONFIG_SND_MTPAV is not set
 +# CONFIG_SND_SERIAL_U16550 is not set
 +# CONFIG_SND_MPU401 is not set
++CONFIG_SND_PCI=y
++# CONFIG_SND_AD1889 is not set
++# CONFIG_SND_ALS300 is not set
++# CONFIG_SND_ALI5451 is not set
++# CONFIG_SND_ATIIXP is not set
++# CONFIG_SND_ATIIXP_MODEM is not set
++# CONFIG_SND_AU8810 is not set
++# CONFIG_SND_AU8820 is not set
++# CONFIG_SND_AU8830 is not set
++# CONFIG_SND_AW2 is not set
++# CONFIG_SND_AZT3328 is not set
++# CONFIG_SND_BT87X is not set
++# CONFIG_SND_CA0106 is not set
++# CONFIG_SND_CMIPCI is not set
++# CONFIG_SND_OXYGEN is not set
++# CONFIG_SND_CS4281 is not set
++# CONFIG_SND_CS46XX is not set
++# CONFIG_SND_CS5535AUDIO is not set
++# CONFIG_SND_CTXFI is not set
++# CONFIG_SND_DARLA20 is not set
++# CONFIG_SND_GINA20 is not set
++# CONFIG_SND_LAYLA20 is not set
++# CONFIG_SND_DARLA24 is not set
++# CONFIG_SND_GINA24 is not set
++# CONFIG_SND_LAYLA24 is not set
++# CONFIG_SND_MONA is not set
++# CONFIG_SND_MIA is not set
++# CONFIG_SND_ECHO3G is not set
++# CONFIG_SND_INDIGO is not set
++# CONFIG_SND_INDIGOIO is not set
++# CONFIG_SND_INDIGODJ is not set
++# CONFIG_SND_INDIGOIOX is not set
++# CONFIG_SND_INDIGODJX is not set
++# CONFIG_SND_EMU10K1 is not set
++# CONFIG_SND_EMU10K1X is not set
++# CONFIG_SND_ENS1370 is not set
++# CONFIG_SND_ENS1371 is not set
++# CONFIG_SND_ES1938 is not set
++# CONFIG_SND_ES1968 is not set
++# CONFIG_SND_FM801 is not set
++# CONFIG_SND_HDA_INTEL is not set
++# CONFIG_SND_HDSP is not set
++# CONFIG_SND_HDSPM is not set
++# CONFIG_SND_ICE1712 is not set
++# CONFIG_SND_ICE1724 is not set
++# CONFIG_SND_INTEL8X0 is not set
++# CONFIG_SND_INTEL8X0M is not set
++# CONFIG_SND_KORG1212 is not set
++# CONFIG_SND_LOLA is not set
++# CONFIG_SND_LX6464ES is not set
++# CONFIG_SND_MAESTRO3 is not set
++# CONFIG_SND_MIXART is not set
++# CONFIG_SND_NM256 is not set
++# CONFIG_SND_PCXHR is not set
++# CONFIG_SND_RIPTIDE is not set
++# CONFIG_SND_RME32 is not set
++# CONFIG_SND_RME96 is not set
++# CONFIG_SND_RME9652 is not set
++# CONFIG_SND_SONICVIBES is not set
++# CONFIG_SND_TRIDENT is not set
++# CONFIG_SND_VIA82XX is not set
++# CONFIG_SND_VIA82XX_MODEM is not set
++# CONFIG_SND_VIRTUOSO is not set
++# CONFIG_SND_VX222 is not set
++# CONFIG_SND_YMFPCI is not set
 +CONFIG_SND_ARM=y
 +CONFIG_SND_SPI=y
 +CONFIG_SND_USB=y
@@ -2179,7 +2250,7 @@ index 0000000..35e4cc3
 +# CONFIG_HID_ZYDACRON is not set
 +CONFIG_USB_SUPPORT=y
 +CONFIG_USB_ARCH_HAS_HCD=y
-+# CONFIG_USB_ARCH_HAS_OHCI is not set
++CONFIG_USB_ARCH_HAS_OHCI=y
 +CONFIG_USB_ARCH_HAS_EHCI=y
 +CONFIG_USB=y
 +# CONFIG_USB_DEBUG is not set
@@ -2367,17 +2438,16 @@ index 0000000..35e4cc3
 +# CONFIG_USB_ZERO is not set
 +# CONFIG_USB_AUDIO is not set
 +# CONFIG_USB_ETH is not set
-+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_FILE_STORAGE=m
++# CONFIG_FSL_UTP is not set
++# CONFIG_USB_FILE_STORAGE_TEST is not set
 +# CONFIG_USB_MASS_STORAGE is not set
 +CONFIG_USB_G_SERIAL=m
 +# CONFIG_USB_MIDI_GADGET is not set
 +# CONFIG_USB_G_PRINTER is not set
-+CONFIG_USB_G_ANDROID=y
 +# CONFIG_USB_CDC_COMPOSITE is not set
 +# CONFIG_USB_G_MULTI is not set
 +# CONFIG_USB_G_HID is not set
@@ -2392,12 +2462,11 @@ index 0000000..35e4cc3
 +# CONFIG_USB_ULPI is not set
 +# CONFIG_NOP_USB_XCEIV is not set
 +CONFIG_MXC_OTG=y
++# CONFIG_UWB is not set
 +CONFIG_MMC=y
 +# CONFIG_MMC_DEBUG is not set
 +CONFIG_MMC_UNSAFE_RESUME=y
 +# CONFIG_MMC_CLKGATE is not set
-+# CONFIG_MMC_EMBEDDED_SDIO is not set
-+# CONFIG_MMC_PARANOID_SD_INIT is not set
 +
 +#
 +# MMC/SD/SDIO Card Drivers
@@ -2422,7 +2491,6 @@ index 0000000..35e4cc3
 +# CONFIG_MMC_DW is not set
 +# CONFIG_MMC_VUB300 is not set
 +# CONFIG_MMC_USHC is not set
-+# CONFIG_SDHCI_USE_LEDS_CLASS is not set
 +# CONFIG_MEMSTICK is not set
 +CONFIG_NEW_LEDS=y
 +CONFIG_LEDS_CLASS=y
@@ -2463,6 +2531,7 @@ index 0000000..35e4cc3
 +#
 +# CONFIG_NFC_DEVICES is not set
 +# CONFIG_ACCESSIBILITY is not set
++# CONFIG_INFINIBAND is not set
 +CONFIG_RTC_LIB=y
 +CONFIG_RTC_CLASS=y
 +CONFIG_RTC_HCTOSYS=y
@@ -2610,6 +2679,7 @@ index 0000000..35e4cc3
 +#
 +CONFIG_MXC_VPU=y
 +# CONFIG_MXC_VPU_DEBUG is not set
++# CONFIG_MX6_VPU_352M is not set
 +
 +#
 +# MXC Asynchronous Sample Rate Converter support
@@ -2728,13 +2798,11 @@ index 0000000..35e4cc3
 +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_YAFFS_FS is not set
 +CONFIG_JFFS2_FS=y
 +CONFIG_JFFS2_FS_DEBUG=0
 +CONFIG_JFFS2_FS_WRITEBUFFER=y
@@ -2859,6 +2927,8 @@ index 0000000..35e4cc3
 +# CONFIG_DEBUG_SECTION_MISMATCH is not set
 +# CONFIG_DEBUG_KERNEL is not set
 +# CONFIG_HARDLOCKUP_DETECTOR is not set
++# CONFIG_SLUB_DEBUG_ON is not set
++# CONFIG_SLUB_STATS is not set
 +# CONFIG_SPARSE_RCU_POINTER is not set
 +CONFIG_DEBUG_BUGVERBOSE=y
 +# CONFIG_DEBUG_MEMORY_INIT is not set
@@ -2997,6 +3067,7 @@ index 0000000..35e4cc3
 +# CONFIG_CRYPTO_USER_API_HASH is not set
 +# CONFIG_CRYPTO_USER_API_SKCIPHER is not set
 +CONFIG_CRYPTO_HW=y
++# CONFIG_CRYPTO_DEV_HIFN_795X is not set
 +CONFIG_CRYPTO_DEV_FSL_CAAM=y
 +CONFIG_CRYPTO_DEV_FSL_CAAM_RINGSIZE=9
 +CONFIG_CRYPTO_DEV_FSL_CAAM_INTC=y
@@ -3018,7 +3089,7 @@ index 0000000..35e4cc3
 +# CONFIG_CRC_T10DIF is not set
 +# CONFIG_CRC_ITU_T is not set
 +CONFIG_CRC32=y
-+# CONFIG_CRC7 is not set
++CONFIG_CRC7=y
 +# CONFIG_LIBCRC32C is not set
 +CONFIG_ZLIB_INFLATE=y
 +CONFIG_ZLIB_DEFLATE=y
@@ -3026,13 +3097,14 @@ index 0000000..35e4cc3
 +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_NLATTR=y
-+# CONFIG_AVERAGE is not set
++CONFIG_AVERAGE=y
 diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
 old mode 100755
 new mode 100644
@@ -3172,7 +3244,7 @@ index 45ae9ea..fad950e 100644
  	  Include support for i.MX 6Quad SABRE Lite platform. This includes specific
  	  configurations for the board and its peripherals.
 diff --git a/arch/arm/mach-mx6/board-mx6q_sabrelite.c b/arch/arm/mach-mx6/board-mx6q_sabrelite.c
-index eff81ac..6b66ea3 100644
+index eff81ac..2c0cbe2 100644
 --- a/arch/arm/mach-mx6/board-mx6q_sabrelite.c
 +++ b/arch/arm/mach-mx6/board-mx6q_sabrelite.c
 @@ -56,12 +56,15 @@
@@ -3777,10 +3849,10 @@ index eff81ac..6b66ea3 100644
 +	/* Camera reset */
 +	gpio_direction_output(reset_gp, 0);
 +	gpio_direction_output(reset_gp2, 0);
-+	msleep(1);
-+	gpio_set_value(power_gp, 0);
  	msleep(1);
 -	gpio_set_value(MX6Q_SABRELITE_CSI0_PWN, 0);
++	gpio_set_value(power_gp, 0);
++	msleep(1);
 +	gpio_set_value(reset_gp, 1);
 +	gpio_set_value(reset_gp2, 1);
 +}
@@ -3874,13 +3946,13 @@ index eff81ac..6b66ea3 100644
 +		I2C_BOARD_INFO("tsc2004", 0x48),
 +		.platform_data	= &tsc2007_info,
 +		.irq = gpio_to_irq(MX6_SABRELITE_DRGB_IRQGPIO),
-+	},
+ 	},
 +#if defined(CONFIG_TOUCHSCREEN_FT5X06) \
 +	|| defined(CONFIG_TOUCHSCREEN_FT5X06_MODULE)
 +	{
 +		I2C_BOARD_INFO("ft5x06-ts", 0x38),
 +		.irq = gpio_to_irq(MX6_SABRELITE_CAP_TCH_INT1),
- 	},
++	},
 +#endif
  };
  
@@ -3979,14 +4051,14 @@ index eff81ac..6b66ea3 100644
 -	.transceiver_switch = mx6q_sabrelite_flexcan0_switch,
 +	mx6_sabrelite_flexcan0_mc33902_pdata __initconst = {
 +	.transceiver_switch = mx6_sabrelite_flexcan0_mc33902_switch,
- };
- 
--static struct viv_gpu_platform_data imx6q_gpu_pdata __initdata = {
++};
++
 +static const struct flexcan_platform_data
 +	mx6_sabrelite_flexcan0_tja1040_pdata __initconst = {
 +	.transceiver_switch = mx6_sabrelite_flexcan0_tja1040_switch,
-+};
-+
+ };
+ 
+-static struct viv_gpu_platform_data imx6q_gpu_pdata __initdata = {
 +static struct viv_gpu_platform_data imx6_gpu_pdata __initdata = {
  	.reserved_mem_size = SZ_128M,
  };
@@ -4017,7 +4089,7 @@ index eff81ac..6b66ea3 100644
  };
  
  static struct fsl_mxc_lcd_platform_data lcdif_data = {
-@@ -904,7 +774,7 @@ static void sabrelite_suspend_exit(void)
+@@ -904,13 +774,12 @@ static void sabrelite_suspend_exit(void)
  {
  	/* resume restore */
  }
@@ -4026,7 +4098,13 @@ index eff81ac..6b66ea3 100644
  	.name = "imx_pm",
  	.suspend_enter = sabrelite_suspend_enter,
  	.suspend_exit = sabrelite_suspend_exit,
-@@ -922,12 +792,12 @@ static const struct pm_platform_data mx6q_sabrelite_pm_data __initconst = {
+ };
+ 
+-#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
+ #define GPIO_BUTTON(gpio_num, ev_code, act_low, descr, wake)	\
+ {								\
+ 	.gpio		= gpio_num,				\
+@@ -922,14 +791,15 @@ static const struct pm_platform_data mx6q_sabrelite_pm_data __initconst = {
  }
  
  static struct gpio_keys_button sabrelite_buttons[] = {
@@ -4044,11 +4122,26 @@ index eff81ac..6b66ea3 100644
 +	GPIO_BUTTON(MX6_SABRELITE_VOL_DOWN_KEY, KEY_VOLUMEDOWN, 1, "volume-down", 0),
  };
  
++#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
  static struct gpio_keys_platform_data sabrelite_button_data = {
-@@ -952,6 +822,54 @@ static void __init sabrelite_add_device_buttons(void)
- static void __init sabrelite_add_device_buttons(void) {}
- #endif
- 
+ 	.buttons	= sabrelite_buttons,
+ 	.nbuttons	= ARRAY_SIZE(sabrelite_buttons),
+@@ -949,7 +819,63 @@ static void __init sabrelite_add_device_buttons(void)
+ 	platform_device_register(&sabrelite_button_device);
+ }
+ #else
+-static void __init sabrelite_add_device_buttons(void) {}
++static void __init sabrelite_add_device_buttons(void)
++{
++	int i;
++	for (i=0; i < ARRAY_SIZE(sabrelite_buttons);i++) {
++		int gpio = sabrelite_buttons[i].gpio;
++		pr_debug("%s: exporting gpio %d\n", __func__, gpio);
++		gpio_export(gpio,1);
++	}
++}
++#endif
++
 +#ifdef CONFIG_WL12XX_PLATFORM_DATA
 +static void wl1271_set_power(bool enable)
 +{
@@ -4095,12 +4188,10 @@ index eff81ac..6b66ea3 100644
 +		.platform_data = &n6q_vwl1271_reg_config,
 +	},
 +};
-+#endif
-+
+ #endif
+ 
  static struct regulator_consumer_supply sabrelite_vmmc_consumers[] = {
- 	REGULATOR_SUPPLY("vmmc", "sdhci-esdhc-imx.2"),
- 	REGULATOR_SUPPLY("vmmc", "sdhci-esdhc-imx.3"),
-@@ -1056,7 +974,7 @@ static struct platform_device sgtl5000_sabrelite_vddd_reg_devices = {
+@@ -1056,7 +982,7 @@ static struct platform_device sgtl5000_sabrelite_vddd_reg_devices = {
  
  #endif /* CONFIG_SND_SOC_SGTL5000 */
  
@@ -4109,7 +4200,7 @@ index eff81ac..6b66ea3 100644
  {
  	mxc_register_device(&mx6_sabrelite_audio_device,
  			    &mx6_sabrelite_audio_data);
-@@ -1069,6 +987,15 @@ static int imx6q_init_audio(void)
+@@ -1069,6 +995,15 @@ static int imx6q_init_audio(void)
  	return 0;
  }
  
@@ -4125,7 +4216,7 @@ index eff81ac..6b66ea3 100644
  static struct platform_pwm_backlight_data mx6_sabrelite_pwm_backlight_data = {
  	.pwm_id = 3,
  	.max_brightness = 255,
-@@ -1115,19 +1042,37 @@ static struct mipi_csi2_platform_data mipi_csi2_pdata = {
+@@ -1115,19 +1050,37 @@ static struct mipi_csi2_platform_data mipi_csi2_pdata = {
  	.pixel_clk = "emi_clk",
  };
  
@@ -4166,7 +4257,7 @@ index eff81ac..6b66ea3 100644
  
  #ifdef CONFIG_FEC_1588
  	/* Set GPIO_16 input for IEEE-1588 ts_clk and RMII reference clock
-@@ -1141,13 +1086,26 @@ static void __init mx6_sabrelite_board_init(void)
+@@ -1141,13 +1094,26 @@ static void __init mx6_sabrelite_board_init(void)
  	gp_reg_id = sabrelite_dvfscore_data.reg_id;
  	soc_reg_id = sabrelite_dvfscore_data.soc_id;
  	pu_reg_id = sabrelite_dvfscore_data.pu_id;
@@ -4197,7 +4288,7 @@ index eff81ac..6b66ea3 100644
  		imx6q_add_ipuv3fb(i, &sabrelite_fb_data[i]);
  
  	imx6q_add_vdoa();
-@@ -1161,9 +1119,9 @@ static void __init mx6_sabrelite_board_init(void)
+@@ -1161,9 +1127,9 @@ static void __init mx6_sabrelite_board_init(void)
  
  	imx6q_add_imx_caam();
  
@@ -4210,7 +4301,7 @@ index eff81ac..6b66ea3 100644
  	i2c_register_board_info(0, mxc_i2c0_board_info,
  			ARRAY_SIZE(mxc_i2c0_board_info));
  	i2c_register_board_info(1, mxc_i2c1_board_info,
-@@ -1172,33 +1130,35 @@ static void __init mx6_sabrelite_board_init(void)
+@@ -1172,33 +1138,35 @@ static void __init mx6_sabrelite_board_init(void)
  			ARRAY_SIZE(mxc_i2c2_board_info));
  
  	/* SPI */
@@ -4256,7 +4347,7 @@ index eff81ac..6b66ea3 100644
  	imx6q_add_mxc_pwm_backlight(3, &mx6_sabrelite_pwm_backlight_data);
  
  	imx6q_add_otp();
-@@ -1214,12 +1174,23 @@ static void __init mx6_sabrelite_board_init(void)
+@@ -1214,12 +1182,23 @@ static void __init mx6_sabrelite_board_init(void)
  	imx6q_add_hdmi_soc();
  	imx6q_add_hdmi_soc_dai();
  
@@ -4285,7 +4376,7 @@ index eff81ac..6b66ea3 100644
  
  	clko2 = clk_get(NULL, "clko2_clk");
  	if (IS_ERR(clko2))
-@@ -1235,6 +1206,28 @@ static void __init mx6_sabrelite_board_init(void)
+@@ -1235,6 +1214,28 @@ static void __init mx6_sabrelite_board_init(void)
  	clk_enable(clko2);
  	imx6q_add_busfreq();
  
@@ -4314,7 +4405,7 @@ index eff81ac..6b66ea3 100644
  	imx6q_add_perfmon(0);
  	imx6q_add_perfmon(1);
  	imx6q_add_perfmon(2);
-@@ -1258,16 +1251,16 @@ static struct sys_timer mx6_sabrelite_timer = {
+@@ -1258,16 +1259,16 @@ static struct sys_timer mx6_sabrelite_timer = {
  	.init   = mx6_sabrelite_timer_init,
  };
  
@@ -4336,7 +4427,7 @@ index eff81ac..6b66ea3 100644
  	}
  #endif
  }
-@@ -1283,5 +1276,5 @@ MACHINE_START(MX6Q_SABRELITE, "Freescale i.MX 6Quad Sabre-Lite Board")
+@@ -1283,5 +1284,5 @@ MACHINE_START(MX6Q_SABRELITE, "Freescale i.MX 6Quad Sabre-Lite Board")
  	.init_irq = mx6_init_irq,
  	.init_machine = mx6_sabrelite_board_init,
  	.timer = &mx6_sabrelite_timer,
@@ -6349,13 +6440,270 @@ new mode 100644
 diff --git a/drivers/mxc/mlb/mxc_mlb150.c b/drivers/mxc/mlb/mxc_mlb150.c
 old mode 100755
 new mode 100644
+diff --git a/drivers/mxc/thermal/thermal.c b/drivers/mxc/thermal/thermal.c
+index 0982a7b..cb52033 100644
+--- a/drivers/mxc/thermal/thermal.c
++++ b/drivers/mxc/thermal/thermal.c
+@@ -131,17 +131,22 @@
+ #define MEASURE_FREQ			3276  /* 3276 RTC clocks delay, 100ms */
+ #define KELVIN_TO_CEL(t, off) (((t) - (off)))
+ #define CEL_TO_KELVIN(t, off) (((t) + (off)))
+-#define DEFAULT_RATIO			145
+-#define DEFAULT_N40C			1563
+-#define REG_VALUE_TO_CEL(ratio, raw) ((raw_n40c - raw) * 100 / ratio - 40)
++
++#define DEFAULT_RAW_25C		1469
++#define DEFAULT_RAW_HOT		1375
++#define DEFAULT_TEMP_HOT	90
++
+ #define ANATOP_DEBUG			false
+ #define THERMAL_FUSE_NAME		"/sys/fsl_otp/HW_OCOTP_ANA1"
+ 
+ /* variables */
+ unsigned long anatop_base;
+-unsigned int ratio;
+-unsigned int raw_25c, raw_hot, hot_temp, raw_n40c, raw_125c, raw_critical;
++unsigned int raw_critical;
+ static struct clk *pll3_clk;
++unsigned raw_25c;
++unsigned long long cvt_to_celsius;
++unsigned long long cvt_to_raw;
++
+ static bool full_run = true;
+ static bool suspend_flag;
+ static unsigned int thermal_irq;
+@@ -255,6 +260,7 @@ static int anatop_dump_temperature_register(void)
+ 			__raw_readl(anatop_base + HW_ANADIG_ANA_MISC1));
+ 	return 0;
+ }
++
+ static void anatop_update_alarm(unsigned int alarm_value)
+ {
+ 	if (cooling_device_disable || suspend_flag)
+@@ -267,6 +273,21 @@ static void anatop_update_alarm(unsigned int alarm_value)
+ 
+ 	return;
+ }
++
++int cvt_raw_to_celius(unsigned raw)
++{
++	int change = (raw_25c - raw);
++	change = (int)((change * cvt_to_celsius) >> 32);
++	return 25 + change;
++}
++
++int cvt_celius_to_raw(int celius)
++{
++	int change = (celius - 25);
++	change = (int)((change * cvt_to_raw) >> 32);
++	return raw_25c - change;
++}
++
+ static int anatop_thermal_get_temp(struct thermal_zone_device *thermal,
+ 			    long *temp)
+ {
+@@ -277,7 +298,7 @@ static int anatop_thermal_get_temp(struct thermal_zone_device *thermal,
+ 	if (!tz)
+ 		return -EINVAL;
+ 
+-	if (!ratio || suspend_flag) {
++	if (!raw_25c || suspend_flag) {
+ 		*temp = KELVIN_TO_CEL(TEMP_ACTIVE, KELVIN_OFFSET);
+ 		return 0;
+ 	}
+@@ -322,10 +343,10 @@ static int anatop_thermal_get_temp(struct thermal_zone_device *thermal,
+ 		anatop_dump_temperature_register();
+ 	/* only the temp between -40C and 125C is valid, this
+ 	is for save */
+-	if (tmp <= raw_n40c && tmp >= raw_125c)
+-		tz->temperature = REG_VALUE_TO_CEL(ratio, tmp);
+-	else {
+-		printk(KERN_WARNING "Invalid temperature, force it to 25C\n");
++	tz->temperature = cvt_raw_to_celius(tmp);
++	if ((tz->temperature < -25) || (tz->temperature > 125)) {
++		pr_warn("Invalid temperature %ld C, force it to 25C\n",
++				tz->temperature);
+ 		tz->temperature = 25;
+ 	}
+ 
+@@ -482,7 +503,7 @@ static int anatop_thermal_set_trip_temp(struct thermal_zone_device *thermal,
+ 		if (tz->trips.critical.flags.valid) {
+ 			tz->trips.critical.temperature = CEL_TO_KELVIN(
+ 				*temp, tz->kelvin_offset);
+-			raw_critical = raw_25c - ratio * (*temp - 25) / 100;
++			raw_critical = cvt_celius_to_raw(*temp);
+ 			anatop_update_alarm(raw_critical);
+ 		}
+ 		break;
+@@ -826,31 +847,48 @@ __setup("no_cooling_device", anatop_thermal_cooling_device_disable);
+ 
+ static int anatop_thermal_counting_ratio(unsigned int fuse_data)
+ {
++	unsigned raw25c, raw_hot, hot_temp;
+ 	int ret = -EINVAL;
+ 
+ 	pr_info("Thermal calibration data is 0x%x\n", fuse_data);
+-	if (fuse_data == 0 || fuse_data == 0xffffffff || (fuse_data & 0xff) == 0) {
+-		pr_info("%s: invalid calibration data, disable cooling!!!\n", __func__);
+-		cooling_device_disable = true;
+-		ratio = DEFAULT_RATIO;
+-		disable_irq(thermal_irq);
+-		return ret;
+-	}
+ 
+ 	ret = 0;
+ 	/* Fuse data layout:
+ 	 * [31:20] sensor value @ 25C
+ 	 * [19:8] sensor value of hot
+ 	 * [7:0] hot temperature value */
+-	raw_25c = fuse_data >> 20;
++	raw25c = fuse_data >> 20;
+ 	raw_hot = (fuse_data & 0xfff00) >> 8;
+ 	hot_temp = fuse_data & 0xff;
+ 
+-	ratio = ((raw_25c - raw_hot) * 100) / (hot_temp - 25);
+-	raw_n40c = raw_25c + (13 * ratio) / 20;
+-	raw_125c = raw_25c - ratio;
++	if ((raw25c <= raw_hot) || (hot_temp <= 25)) {
++		pr_info("%s: invalid calibration data, disable cooling!!! raw25c=%x raw_hot=%x hot_temp=%x\n",
++				__func__, raw25c, raw_hot, hot_temp);
++		cooling_device_disable = true;
++		raw_25c = DEFAULT_RAW_25C;
++		disable_irq(thermal_irq);
++		cvt_to_celsius = (DEFAULT_TEMP_HOT - 25);
++		cvt_to_celsius <<= 32;
++		cvt_to_celsius /= DEFAULT_RAW_25C - DEFAULT_RAW_HOT;
++
++		cvt_to_raw = DEFAULT_RAW_25C - DEFAULT_RAW_HOT;
++		cvt_to_raw <<= 32;
++		cvt_to_raw /= (DEFAULT_TEMP_HOT - 25);
++		return ret;
++	}
++	ret = 0;
++	raw_25c = raw25c;
++	cvt_to_celsius = hot_temp - 25;		/* hot_temp > 25 */
++	cvt_to_celsius <<= 32;
++	do_div(cvt_to_celsius, raw25c - raw_hot);	/* raw25c > raw_hot */
++
++	cvt_to_raw = raw25c - raw_hot;
++	cvt_to_raw <<= 32;
++	do_div(cvt_to_raw, hot_temp - 25);
++	pr_info("%s: raw25c=%d raw_hot=%d hot_temp=%d\n", __func__, raw25c, raw_hot, hot_temp);
++
+ 	/* Init default critical temp to set alarm */
+-	raw_critical = raw_25c - ratio * (KELVIN_TO_CEL(TEMP_CRITICAL, KELVIN_OFFSET) - 25) / 100;
++	raw_critical = cvt_celius_to_raw(KELVIN_TO_CEL(TEMP_CRITICAL, KELVIN_OFFSET));
+ 	clk_enable(pll3_clk);
+ 	anatop_update_alarm(raw_critical);
+ 
+@@ -877,6 +915,7 @@ static int anatop_thermal_probe(struct platform_device *pdev)
+ 	struct resource *res_io, *res_irq, *res_calibration;
+ 	void __iomem *base, *calibration_addr;
+ 	struct anatop_device *device;
++	unsigned fuse_data;
+ 
+ 	device = kzalloc(sizeof(*device), GFP_KERNEL);
+ 	if (!device) {
+@@ -919,9 +958,13 @@ static int anatop_thermal_probe(struct platform_device *pdev)
+ 		goto anatop_failed;
+ 	}
+ 
+-	raw_n40c = DEFAULT_N40C;
+ 	/* use calibration data to get ratio */
+-	anatop_thermal_counting_ratio(__raw_readl(calibration_addr));
++	fuse_data = __raw_readl(calibration_addr);
++#if 1
++	if (!fuse_data)
++		fuse_data = (0x552 << 8) | 58 | (0x58e << 20);
++#endif
++	anatop_thermal_counting_ratio(fuse_data);
+ 
+ 	res_irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
+ 	if (res_irq == NULL) {
 diff --git a/drivers/net/fec.c b/drivers/net/fec.c
 old mode 100755
 new mode 100644
-index 5af378f..c92bca0
+index 5af378f..b74b1d9
 --- a/drivers/net/fec.c
 +++ b/drivers/net/fec.c
-@@ -1054,7 +1054,7 @@ static int fec_enet_mii_probe(struct net_device *ndev)
+@@ -159,7 +159,9 @@ MODULE_PARM_DESC(macaddr, "FEC Ethernet MAC address");
+ /* Pause frame feild and FIFO threshold */
+ #define FEC_ENET_FCE		(1 << 5)
+ #define FEC_ENET_RSEM_V		0x84
++#define FEC_ENET_RSEM_V_TO1	0x10
+ #define FEC_ENET_RSFL_V		16
++#define FEC_ENET_RSFL_V_TO1     0x20
+ #define FEC_ENET_RAEM_V		0x8
+ #define FEC_ENET_RAFL_V		0x8
+ #define FEC_ENET_OPD_V		0xFFF0
+@@ -557,28 +559,33 @@ static int fec_rx_poll(struct napi_struct *napi, int budget)
+ 			goto rx_processing_done;
+ 
+ 		/* Check for errors. */
++		status ^= BD_ENET_RX_LAST;
+ 		if (status & (BD_ENET_RX_LG | BD_ENET_RX_SH | BD_ENET_RX_NO |
+-			   BD_ENET_RX_CR | BD_ENET_RX_OV)) {
++			   BD_ENET_RX_CR | BD_ENET_RX_OV | BD_ENET_RX_LAST |
++			   BD_ENET_RX_CL)) {
+ 			ndev->stats.rx_errors++;
+-			if (status & (BD_ENET_RX_LG | BD_ENET_RX_SH)) {
+-				/* Frame too long or too short. */
+-				ndev->stats.rx_length_errors++;
+-			}
+-			if (status & BD_ENET_RX_NO)	/* Frame alignment */
+-				ndev->stats.rx_frame_errors++;
+-			if (status & BD_ENET_RX_CR)	/* CRC Error */
+-				ndev->stats.rx_crc_errors++;
+-			if (status & BD_ENET_RX_OV)	/* FIFO overrun */
+-				ndev->stats.rx_fifo_errors++;
+-		}
+ 
+-		/* Report late collisions as a frame error.
+-		 * On this error, the BD is closed, but we don't know what we
+-		 * have in the buffer.  So, just drop this frame on the floor.
+-		 */
+-		if (status & BD_ENET_RX_CL) {
+-			ndev->stats.rx_errors++;
+-			ndev->stats.rx_frame_errors++;
++			if (status & BD_ENET_RX_OV) {
++				/* FIFO overrun */
++				ndev->stats.rx_fifo_errors++;
++			} else {
++				if (status & (BD_ENET_RX_LG | BD_ENET_RX_SH
++						| BD_ENET_RX_LAST)) {
++					/* Frame too long or too short. */
++					ndev->stats.rx_length_errors++;
++					if (status & BD_ENET_RX_LAST)
++						dev_err(&ndev->dev,
++							"rcv is not +last, "
++							"0x%x\n", status);
++				}
++				if (status & BD_ENET_RX_CR)	/* CRC Error */
++					ndev->stats.rx_crc_errors++;
++				/*
++				 * Report late collisions as a frame error.
++				 */
++				if (status & (BD_ENET_RX_NO | BD_ENET_RX_CL))
++					ndev->stats.rx_frame_errors++;
++			}
+ 			goto rx_processing_done;
+ 		}
+ 
+@@ -1035,9 +1042,10 @@ static int fec_enet_mii_probe(struct net_device *ndev)
+ 	}
+ 
+ 	/* mask with MAC supported features */
+-	if (cpu_is_mx6q() || cpu_is_mx6dl())
+-		phy_dev->supported &= PHY_GBIT_FEATURES;
+-	else
++	if (cpu_is_mx6q() || cpu_is_mx6dl()) {
++		/* SUPPORTED_Asym_Pause prevents my switch from linking up */
++		phy_dev->supported &= PHY_GBIT_FEATURES | SUPPORTED_Pause;
++	} else
+ 		phy_dev->supported &= PHY_BASIC_FEATURES;
+ 
+ 	phy_dev->advertising = phy_dev->supported;
+@@ -1054,7 +1062,7 @@ static int fec_enet_mii_probe(struct net_device *ndev)
  	return 0;
  }
  
@@ -6364,7 +6712,7 @@ index 5af378f..c92bca0
  {
  	static struct mii_bus *fec0_mii_bus;
  	struct net_device *ndev = platform_get_drvdata(pdev);
-@@ -1120,7 +1120,7 @@ static int fec_enet_mii_init(struct platform_device *pdev)
+@@ -1120,7 +1128,7 @@ static int fec_enet_mii_init(struct platform_device *pdev)
  	}
  
  	for (i = 0; i < PHY_MAX_ADDR; i++)
@@ -6373,7 +6721,76 @@ index 5af378f..c92bca0
  
  	if (mdiobus_register(fep->mii_bus))
  		goto err_out_free_mdio_irq;
-@@ -1772,6 +1772,7 @@ fec_probe(struct platform_device *pdev)
+@@ -1611,6 +1619,9 @@ fec_restart(struct net_device *dev, int duplex)
+ 		writel(OPT_FRAME_SIZE | 0x06, fep->hwp + FEC_R_CNTRL);
+ 		writel(0x0, fep->hwp + FEC_X_CNTRL);
+ 	}
++#ifdef FEC_FTRL
++	writel(PKT_MAXBUF_SIZE, fep->hwp + FEC_FTRL);
++#endif
+ 	fep->full_duplex = duplex;
+ 
+ 	/* Set MII speed */
+@@ -1641,12 +1652,9 @@ fec_restart(struct net_device *dev, int duplex)
+ 		 * ENET pause frame has two issues as ticket TKT116501
+ 		 * The issues have been fixed on Rigel TO1.1 and Arik TO1.2
+ 		 */
+-		if ((cpu_is_mx6q() &&
+-			(mx6q_revision() >= IMX_CHIP_REVISION_1_2)) ||
+-			(cpu_is_mx6dl() &&
+-			(mx6dl_revision() >= IMX_CHIP_REVISION_1_1)))
++		if (cpu_is_mx6q() || (cpu_is_mx6dl()
++				&& (mx6dl_revision() >= IMX_CHIP_REVISION_1_1)))
+ 			val |= FEC_ENET_FCE;
+-
+ 		writel(val, fep->hwp + FEC_R_CNTRL);
+ 	}
+ 
+@@ -1700,24 +1708,31 @@ fec_restart(struct net_device *dev, int duplex)
+ 		fep->phy_dev->speed == SPEED_1000)
+ 		val |= (0x1 << 5);
+ 
+-	/* RX FIFO threshold setting for ENET pause frame feature
+-	 * Only set the parameters after ticket TKT116501 fixed.
+-	 * The issue has been fixed on Rigel TO1.1 and Arik TO1.2
+-	 */
+-	if ((cpu_is_mx6q() &&
+-		(mx6q_revision() >= IMX_CHIP_REVISION_1_2)) ||
+-		(cpu_is_mx6dl() &&
+-		(mx6dl_revision() >= IMX_CHIP_REVISION_1_1))) {
+-		writel(FEC_ENET_RSEM_V, fep->hwp + FEC_R_FIFO_RSEM);
+-		writel(FEC_ENET_RSFL_V, fep->hwp + FEC_R_FIFO_RSFL);
++	if (cpu_is_mx6q() || cpu_is_mx6dl()) {
++		u32 rsem_val = 0;
++		/* RX FIFO threshold setting for ENET pause frame feature
++		 * Only set the parameters after ticket TKT116501 fixed.
++		 * The issue has been fixed on Rigel TO1.1 and Arik TO1.2
++		 */
++		if (cpu_is_mx6q() || (cpu_is_mx6dl()
++				&& (mx6dl_revision() >= IMX_CHIP_REVISION_1_1))) {
++			if (cpu_is_mx6q() && (mx6q_revision() < IMX_CHIP_REVISION_1_1)) {
++                                rsem_val = FEC_ENET_RSEM_V_TO1;
++			} else
++                                rsem_val = FEC_ENET_RSEM_V;
++		}
++
++		writel(rsem_val, fep->hwp + FEC_R_FIFO_RSEM);
++		if (cpu_is_mx6q() && (mx6q_revision() < IMX_CHIP_REVISION_1_1))
++			writel(FEC_ENET_RSFL_V_TO1, fep->hwp + FEC_R_FIFO_RSFL);
++		else
++			writel(FEC_ENET_RSFL_V, fep->hwp + FEC_R_FIFO_RSFL);
+ 		writel(FEC_ENET_RAEM_V, fep->hwp + FEC_R_FIFO_RAEM);
+ 		writel(FEC_ENET_RAFL_V, fep->hwp + FEC_R_FIFO_RAFL);
+ 
+ 		/* OPD */
+ 		writel(FEC_ENET_OPD_V, fep->hwp + FEC_OPD);
+-	}
+ 
+-	if (cpu_is_mx6q() || cpu_is_mx6dl()) {
+ 		/* enable endian swap */
+ 		val |= (0x1 << 8);
+ 		/* enable ENET store and forward mode */
+@@ -1772,6 +1787,7 @@ fec_probe(struct platform_device *pdev)
  	struct net_device *ndev;
  	int i, irq, ret = 0;
  	struct resource *r;
@@ -6381,7 +6798,7 @@ index 5af378f..c92bca0
  
  	r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
  	if (!r)
-@@ -1804,8 +1805,11 @@ fec_probe(struct platform_device *pdev)
+@@ -1804,8 +1820,11 @@ fec_probe(struct platform_device *pdev)
  	platform_set_drvdata(pdev, ndev);
  
  	pdata = pdev->dev.platform_data;
@@ -6394,7 +6811,7 @@ index 5af378f..c92bca0
  
  	/* This device has up to three irqs on some platforms */
  	for (i = 0; i < 3; i++) {
-@@ -1833,7 +1837,7 @@ fec_probe(struct platform_device *pdev)
+@@ -1833,7 +1852,7 @@ fec_probe(struct platform_device *pdev)
  	if (ret)
  		goto failed_init;
  
@@ -6403,6 +6820,18 @@ index 5af378f..c92bca0
  	if (ret)
  		goto failed_mii_init;
  
+diff --git a/drivers/net/fec.h b/drivers/net/fec.h
+index 0c26c6c..49eb060 100644
+--- a/drivers/net/fec.h
++++ b/drivers/net/fec.h
+@@ -49,6 +49,7 @@
+ #define FEC_R_FIFO_RSEM		0x194 /* Receive FIFO section empty threshold */
+ #define FEC_R_FIFO_RAEM		0x198 /* Receive FIFO almost empty threshold */
+ #define FEC_R_FIFO_RAFL		0x19c /* Receive FIFO almost full threshold */
++#define FEC_FTRL		0x1b0 /* Frame truncation receive length*/
+ #define FEC_MIIGSK_CFGR		0x300 /* MIIGSK Configuration reg */
+ #define FEC_MIIGSK_ENR		0x308 /* MIIGSK Enable reg */
+ 
 diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c
 index 80747d2..6eafb5c 100644
 --- a/drivers/net/phy/micrel.c
@@ -6901,3 +7330,46 @@ new mode 100644
 diff --git a/include/linux/mfd/da9052/tsi_filter.h b/include/linux/mfd/da9052/tsi_filter.h
 old mode 100755
 new mode 100644
+diff --git a/localversion b/localversion
+new file mode 100644
+index 0000000..e02409d
+--- /dev/null
++++ b/localversion
+@@ -0,0 +1 @@
++-2026-geaaf30e
+diff --git a/sound/soc/codecs/sgtl5000.c b/sound/soc/codecs/sgtl5000.c
+index fd05514..45191d1 100644
+--- a/sound/soc/codecs/sgtl5000.c
++++ b/sound/soc/codecs/sgtl5000.c
+@@ -602,7 +602,7 @@ static const struct snd_kcontrol_new sgtl5000_snd_controls[] = {
+ 			5, 1, 0),
+ 
+ 	SOC_SINGLE_TLV("Mic Volume", SGTL5000_CHIP_MIC_CTRL,
+-			0, 4, 0, mic_gain_tlv),
++			0, 3, 0, mic_gain_tlv),
+ 
+ 	/* Bass Enhance enable */
+ 	SOC_SINGLE("Bass Enable", SGTL5000_DAP_BASS_ENHANCE,
+@@ -1614,7 +1614,7 @@ static int sgtl5000_probe(struct snd_soc_codec *codec)
+ 			SGTL5000_HP_ZCD_EN |
+ 			SGTL5000_ADC_ZCD_EN);
+ 
+-	snd_soc_write(codec, SGTL5000_CHIP_MIC_CTRL, 0);
++	snd_soc_write(codec, SGTL5000_CHIP_MIC_CTRL, 2);
+ 
+ 	snd_soc_write(codec, SGTL5000_CHIP_DAC_VOL, 0x6060);
+ 	snd_soc_write(codec, SGTL5000_CHIP_ANA_ADC_CTRL,
+diff --git a/tools/perf/util/include/linux/compiler.h b/tools/perf/util/include/linux/compiler.h
+index 547628e..791f9dd 100644
+--- a/tools/perf/util/include/linux/compiler.h
++++ b/tools/perf/util/include/linux/compiler.h
+@@ -5,9 +5,7 @@
+ #define __always_inline	inline
+ #endif
+ #define __user
+-#ifndef __attribute_const__
+ #define __attribute_const__
+-#endif
+ 
+ #define __used		__attribute__((__unused__))
+ 
-- 
1.7.9.5




More information about the meta-freescale mailing list