All of lore.kernel.org
 help / color / mirror / Atom feed
* [meta-fsl-arm][PATCH][master]: linux-imx (3.0.35): Synchronize Boundary Devices changes
@ 2012-12-23 17:03 Eric Nelson
  2012-12-23 17:43 ` Fabio Estevam
  2012-12-25 18:33 ` Otavio Salvador
  0 siblings, 2 replies; 5+ messages in thread
From: Eric Nelson @ 2012-12-23 17:03 UTC (permalink / raw)
  To: meta-freescale; +Cc: otavio, troy.kisky

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@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



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

* Re: [meta-fsl-arm][PATCH][master]: linux-imx (3.0.35): Synchronize Boundary Devices changes
  2012-12-23 17:03 [meta-fsl-arm][PATCH][master]: linux-imx (3.0.35): Synchronize Boundary Devices changes Eric Nelson
@ 2012-12-23 17:43 ` Fabio Estevam
  2012-12-23 19:39   ` Eric Nelson
  2012-12-25 18:33 ` Otavio Salvador
  1 sibling, 1 reply; 5+ messages in thread
From: Fabio Estevam @ 2012-12-23 17:43 UTC (permalink / raw)
  To: Eric Nelson; +Cc: meta-freescale, otavio, troy.kisky

Hi Eric,

On Sun, Dec 23, 2012 at 3:03 PM, Eric Nelson
<eric.nelson@boundarydevices.com> wrote:

> 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/

I have just sent this sgtl5000 patch to the alsa-devel list, thanks.

Should we upstream the FEC optimizations as well?

Regards,

Fabio Estevam


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

* Re: [meta-fsl-arm][PATCH][master]: linux-imx (3.0.35): Synchronize Boundary Devices changes
  2012-12-23 17:43 ` Fabio Estevam
@ 2012-12-23 19:39   ` Eric Nelson
  2012-12-23 22:59     ` Fabio Estevam
  0 siblings, 1 reply; 5+ messages in thread
From: Eric Nelson @ 2012-12-23 19:39 UTC (permalink / raw)
  To: Fabio Estevam; +Cc: meta-freescale, otavio, troy.kisky

On 12/23/2012 10:43 AM, Fabio Estevam wrote:
> Hi Eric,
>
> On Sun, Dec 23, 2012 at 3:03 PM, Eric Nelson
> <eric.nelson@boundarydevices.com> wrote:
>
>> 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/
>
> I have just sent this sgtl5000 patch to the alsa-devel list, thanks.
>
> Should we upstream the FEC optimizations as well?
>
> Regards,
>
> Fabio Estevam
>

Thanks Fabio,

I think the FEC changes are needed in main-line as well, but we
haven't had a chance to review and test.

They are helpful on SABRE SD boards as well (we've only tested
TO 1.1), so feeding them into the Freescale releases is probably
appropriate.

We also haven't (yet) tested on Dual, Dual-Lite or Solo.

Regards,


Eric


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

* Re: [meta-fsl-arm][PATCH][master]: linux-imx (3.0.35): Synchronize Boundary Devices changes
  2012-12-23 19:39   ` Eric Nelson
@ 2012-12-23 22:59     ` Fabio Estevam
  0 siblings, 0 replies; 5+ messages in thread
From: Fabio Estevam @ 2012-12-23 22:59 UTC (permalink / raw)
  To: Eric Nelson; +Cc: meta-freescale, otavio, troy.kisky

On Sun, Dec 23, 2012 at 5:39 PM, Eric Nelson
<eric.nelson@boundarydevices.com> wrote:

> They are helpful on SABRE SD boards as well (we've only tested
> TO 1.1), so feeding them into the Freescale releases is probably
> appropriate.

Yes, I agree and forwarded your FEC blog internally for review.

Regards,

Fabio Estevam


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

* Re: [meta-fsl-arm][PATCH][master]: linux-imx (3.0.35): Synchronize Boundary Devices changes
  2012-12-23 17:03 [meta-fsl-arm][PATCH][master]: linux-imx (3.0.35): Synchronize Boundary Devices changes Eric Nelson
  2012-12-23 17:43 ` Fabio Estevam
@ 2012-12-25 18:33 ` Otavio Salvador
  1 sibling, 0 replies; 5+ messages in thread
From: Otavio Salvador @ 2012-12-25 18:33 UTC (permalink / raw)
  To: Eric Nelson; +Cc: meta-freescale, Troy Kisky

Hello Eric,

Merry Christmas ;-)

On Sun, Dec 23, 2012 at 3:03 PM, Eric Nelson
<eric.nelson@boundarydevices.com> wrote:
> 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@boundarydevices.com>

It seems you are getting used to Yocto pretty fast ;-)

Thanks by the patch and fixes. I applied those to master :-)

Regards,


--
Otavio Salvador                             O.S. Systems
E-mail: otavio@ossystems.com.br  http://www.ossystems.com.br
Mobile: +55 53 9981-7854              http://projetos.ossystems.com.br


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

end of thread, other threads:[~2012-12-25 18:33 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-12-23 17:03 [meta-fsl-arm][PATCH][master]: linux-imx (3.0.35): Synchronize Boundary Devices changes Eric Nelson
2012-12-23 17:43 ` Fabio Estevam
2012-12-23 19:39   ` Eric Nelson
2012-12-23 22:59     ` Fabio Estevam
2012-12-25 18:33 ` 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.