aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Nelson <eric.nelson@boundarydevices.com>2012-12-23 10:03:08 -0700
committerOtavio Salvador <otavio@ossystems.com.br>2013-02-19 17:26:48 -0300
commit27dbcadaa61bfb762eb931a73ddaa975d9a8f236 (patch)
tree9ad9784ca9a5d532b98655e81b414ba8e2ad6d77
parent4f50cc743174357bf44bcaaaf525fc1b5ae5f79e (diff)
downloadmeta-fsl-arm-27dbcadaa61bfb762eb931a73ddaa975d9a8f236.tar.gz
meta-fsl-arm-27dbcadaa61bfb762eb931a73ddaa975d9a8f236.tar.bz2
meta-fsl-arm-27dbcadaa61bfb762eb931a73ddaa975d9a8f236.zip
linux-imx (3.0.35): Synchronize Boundary Devices changes
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>
-rw-r--r--recipes-kernel/linux/linux-imx-3.0.35/imx6qsabrelite/defconfig7
-rw-r--r--recipes-kernel/linux/linux-imx-3.0.35/imx6qsabrelite/sync-boundary-changes.patch614
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 43db544..632fb3a 100644
--- a/recipes-kernel/linux/linux-imx-3.0.35/imx6qsabrelite/defconfig
+++ b/recipes-kernel/linux/linux-imx-3.0.35/imx6qsabrelite/defconfig
@@ -87,9 +87,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
@@ -111,6 +111,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
@@ -158,11 +159,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 3e5ea68..48cf7a7 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,
@@ -6299,13 +6390,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;
}
@@ -6314,7 +6662,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++)
@@ -6323,7 +6671,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;
@@ -6331,7 +6748,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;
@@ -6344,7 +6761,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;
@@ -6353,6 +6770,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
@@ -6851,3 +7280,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__))
+