From a816921188b9682f4058a7eb7cbdf43ac695ef47 Mon Sep 17 00:00:00 2001 From: Eric Nelson Date: Sun, 23 Dec 2012 10:03:08 -0700 Subject: [PATCH] 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 --- .../linux-imx-3.0.35/imx6qsabrelite/defconfig | 7 +- .../sync-boundary-changes.patch | 614 ++++++++++++++++-- 2 files changed, 545 insertions(+), 76 deletions(-) diff --git a/meta-fsl-arm/recipes-kernel/linux/linux-imx-3.0.35/imx6qsabrelite/defconfig b/meta-fsl-arm/recipes-kernel/linux/linux-imx-3.0.35/imx6qsabrelite/defconfig index 1c8d6f38..49419489 100644 --- a/meta-fsl-arm/recipes-kernel/linux/linux-imx-3.0.35/imx6qsabrelite/defconfig +++ b/meta-fsl-arm/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/meta-fsl-arm/recipes-kernel/linux/linux-imx-3.0.35/imx6qsabrelite/sync-boundary-changes.patch b/meta-fsl-arm/recipes-kernel/linux/linux-imx-3.0.35/imx6qsabrelite/sync-boundary-changes.patch index 5f22380a..d0b6b0a8 100644 --- a/meta-fsl-arm/recipes-kernel/linux/linux-imx-3.0.35/imx6qsabrelite/sync-boundary-changes.patch +++ b/meta-fsl-arm/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__)) + -- 2.40.1