Orange PI + / PC / 2 (Allwinner H3) related fixes and patches
This commit is contained in:
parent
2283913ac8
commit
ce3ec05ab4
@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm 3.4.39 Kernel Configuration
|
||||
# Linux/arm 3.4.40 Kernel Configuration
|
||||
#
|
||||
CONFIG_ARM=y
|
||||
CONFIG_ARM_HAS_SG_CHAIN=y
|
||||
@ -485,12 +485,13 @@ CONFIG_ARM_FLUSH_CONSOLE_ON_RESTART=y
|
||||
# CONFIG_USE_OF is not set
|
||||
CONFIG_ZBOOT_ROM_TEXT=0
|
||||
CONFIG_ZBOOT_ROM_BSS=0
|
||||
CONFIG_CMDLINE="earlyprintk=ttyS0,115200 loglevel=8 initcall_debug=0 console=ttyS0,115200 console=tty0 init=/init"
|
||||
# CONFIG_CMDLINE_FROM_BOOTLOADER is not set
|
||||
CONFIG_CMDLINE="earlyprintk=ttyS0,115200 root=/dev/mmcblk0p1 loglevel=8 initcall_debug=0 console=ttyS0,115200 console=tty0 init=/init"
|
||||
CONFIG_CMDLINE_FROM_BOOTLOADER=y
|
||||
# CONFIG_CMDLINE_EXTEND is not set
|
||||
CONFIG_CMDLINE_FORCE=y
|
||||
# CONFIG_CMDLINE_FORCE is not set
|
||||
# CONFIG_XIP_KERNEL is not set
|
||||
# CONFIG_KEXEC is not set
|
||||
CONFIG_KEXEC=y
|
||||
CONFIG_ATAGS_PROC=y
|
||||
# CONFIG_CRASH_DUMP is not set
|
||||
# CONFIG_AUTO_ZRELADDR is not set
|
||||
|
||||
@ -961,22 +962,25 @@ CONFIG_BT_HIDP=y
|
||||
# Bluetooth device drivers
|
||||
#
|
||||
CONFIG_BT_HCIBTUSB=m
|
||||
# CONFIG_BT_HCIBTSDIO is not set
|
||||
CONFIG_BT_HCIUART=y
|
||||
# CONFIG_BT_HCIUART_H4 is not set
|
||||
# CONFIG_BT_HCIUART_BCSP is not set
|
||||
# CONFIG_BT_HCIUART_ATH3K is not set
|
||||
CONFIG_BT_HCIUART_RTKH5=y
|
||||
# CONFIG_BT_HCIUART_LL is not set
|
||||
# CONFIG_BT_HCIBCM203X is not set
|
||||
# CONFIG_BT_HCIBPA10X is not set
|
||||
# CONFIG_BT_HCIBFUSB is not set
|
||||
CONFIG_BT_HCIBTSDIO=m
|
||||
CONFIG_BT_HCIUART=m
|
||||
CONFIG_BT_HCIUART_H4=y
|
||||
CONFIG_BT_HCIUART_BCSP=y
|
||||
CONFIG_BT_HCIUART_ATH3K=y
|
||||
# CONFIG_BT_HCIUART_RTKH5 is not set
|
||||
CONFIG_BT_HCIUART_LL=y
|
||||
CONFIG_BT_HCIBCM203X=m
|
||||
CONFIG_BT_HCIBPA10X=m
|
||||
CONFIG_BT_HCIBFUSB=m
|
||||
# CONFIG_BT_HCIVHCI is not set
|
||||
CONFIG_BCM_BT_LPM=m
|
||||
CONFIG_RTL_BT_LPM=m
|
||||
# CONFIG_BT_MRVL is not set
|
||||
# CONFIG_BT_ATH3K is not set
|
||||
# CONFIG_AF_RXRPC is not set
|
||||
# CONFIG_BCM_BT_LPM is not set
|
||||
# CONFIG_RTL_BT_LPM is not set
|
||||
CONFIG_BT_MRVL=m
|
||||
CONFIG_BT_MRVL_SDIO=m
|
||||
CONFIG_BT_ATH3K=m
|
||||
CONFIG_AF_RXRPC=m
|
||||
# CONFIG_AF_RXRPC_DEBUG is not set
|
||||
CONFIG_RXKAD=m
|
||||
CONFIG_FIB_RULES=y
|
||||
CONFIG_WIRELESS=y
|
||||
CONFIG_WIRELESS_EXT=y
|
||||
@ -985,15 +989,16 @@ CONFIG_WEXT_PROC=y
|
||||
CONFIG_WEXT_PRIV=y
|
||||
CONFIG_CFG80211=y
|
||||
# CONFIG_NL80211_TESTMODE is not set
|
||||
# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
|
||||
CONFIG_CFG80211_DEVELOPER_WARNINGS=y
|
||||
# CONFIG_CFG80211_REG_DEBUG is not set
|
||||
CONFIG_CFG80211_DEFAULT_PS=y
|
||||
# CONFIG_CFG80211_DEBUGFS is not set
|
||||
# CONFIG_CFG80211_INTERNAL_REGDB is not set
|
||||
CONFIG_CFG80211_WEXT=y
|
||||
# CONFIG_WIRELESS_EXT_SYSFS is not set
|
||||
# CONFIG_LIB80211 is not set
|
||||
# CONFIG_CFG80211_ALLOW_RECONNECT is not set
|
||||
CONFIG_WIRELESS_EXT_SYSFS=y
|
||||
CONFIG_LIB80211=m
|
||||
# CONFIG_LIB80211_DEBUG is not set
|
||||
CONFIG_CFG80211_ALLOW_RECONNECT=y
|
||||
CONFIG_MAC80211=m
|
||||
CONFIG_MAC80211_HAS_RC=y
|
||||
# CONFIG_MAC80211_RC_PID is not set
|
||||
@ -1001,15 +1006,22 @@ CONFIG_MAC80211_RC_MINSTREL=y
|
||||
CONFIG_MAC80211_RC_MINSTREL_HT=y
|
||||
CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
|
||||
CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
|
||||
# CONFIG_MAC80211_MESH is not set
|
||||
# CONFIG_MAC80211_LEDS is not set
|
||||
CONFIG_MAC80211_MESH=y
|
||||
CONFIG_MAC80211_LEDS=y
|
||||
# CONFIG_MAC80211_DEBUGFS is not set
|
||||
# CONFIG_MAC80211_DEBUG_MENU is not set
|
||||
# CONFIG_WIMAX is not set
|
||||
# CONFIG_RFKILL is not set
|
||||
CONFIG_WIMAX=m
|
||||
CONFIG_WIMAX_DEBUG_LEVEL=8
|
||||
CONFIG_RFKILL=y
|
||||
CONFIG_RFKILL_PM=y
|
||||
CONFIG_RFKILL_LEDS=y
|
||||
CONFIG_RFKILL_INPUT=y
|
||||
# CONFIG_RFKILL_GPIO is not set
|
||||
# CONFIG_NET_9P is not set
|
||||
# CONFIG_CAIF is not set
|
||||
# CONFIG_CEPH_LIB is not set
|
||||
CONFIG_CEPH_LIB=m
|
||||
# CONFIG_CEPH_LIB_PRETTYDEBUG is not set
|
||||
# CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set
|
||||
# CONFIG_NFC is not set
|
||||
|
||||
#
|
||||
@ -1101,6 +1113,7 @@ CONFIG_BLK_DEV_CRYPTOLOOP=y
|
||||
CONFIG_UID_STAT=y
|
||||
# CONFIG_BMP085 is not set
|
||||
# CONFIG_USB_SWITCH_FSA9480 is not set
|
||||
# CONFIG_WL127X_RFKILL is not set
|
||||
# CONFIG_SUNXI_BROM_READ is not set
|
||||
# CONFIG_C2PORT is not set
|
||||
|
||||
@ -1237,6 +1250,7 @@ CONFIG_NET_VENDOR_SUNXI=y
|
||||
CONFIG_SUNXI_GETH=y
|
||||
CONFIG_GETH_SCRIPT_SYS=y
|
||||
CONFIG_GETH_CLK_SYS=y
|
||||
CONFIG_GMAC_PHY_POWER=y
|
||||
CONFIG_PHYLIB=y
|
||||
|
||||
#
|
||||
@ -1302,6 +1316,7 @@ CONFIG_USB_NET_MCS7830=m
|
||||
# CONFIG_USB_NET_CX82310_ETH is not set
|
||||
# CONFIG_USB_NET_KALMIA is not set
|
||||
# CONFIG_USB_NET_QMI_WWAN is not set
|
||||
# CONFIG_USB_HSO is not set
|
||||
# CONFIG_USB_NET_INT51X1 is not set
|
||||
# CONFIG_USB_IPHETH is not set
|
||||
# CONFIG_USB_SIERRA_NET is not set
|
||||
@ -1312,6 +1327,7 @@ CONFIG_WLAN=y
|
||||
CONFIG_USB_ZD1201=m
|
||||
# CONFIG_USB_NET_RNDIS_WLAN is not set
|
||||
CONFIG_RTL8187=m
|
||||
CONFIG_RTL8187_LEDS=y
|
||||
# CONFIG_MAC80211_HWSIM is not set
|
||||
# CONFIG_WIFI_CONTROL_FUNC is not set
|
||||
# CONFIG_ATH_COMMON is not set
|
||||
@ -1357,8 +1373,10 @@ CONFIG_RTL8189ES=m
|
||||
CONFIG_RTL8723BS=m
|
||||
|
||||
#
|
||||
# Enable WiMAX (Networking options) to see the WiMAX drivers
|
||||
# WiMAX Wireless Broadband devices
|
||||
#
|
||||
# CONFIG_WIMAX_I2400M_USB is not set
|
||||
# CONFIG_WIMAX_I2400M_SDIO is not set
|
||||
# CONFIG_WAN is not set
|
||||
# CONFIG_ISDN is not set
|
||||
|
||||
@ -1409,7 +1427,7 @@ CONFIG_KEYBOARD_ATKBD=y
|
||||
# CONFIG_KEYBOARD_SUNKBD is not set
|
||||
# CONFIG_KEYBOARD_OMAP4 is not set
|
||||
# CONFIG_KEYBOARD_XTKBD is not set
|
||||
CONFIG_KEYBOARD_SUNXI=y
|
||||
CONFIG_KEYBOARD_SUNXI=m
|
||||
CONFIG_IR_RX_SUNXI=m
|
||||
# CONFIG_SUNXI_ANYIR_SUPPORT is not set
|
||||
# CONFIG_IR_TX_SUNXI is not set
|
||||
@ -1960,7 +1978,6 @@ CONFIG_BCMA_POSSIBLE=y
|
||||
# CONFIG_MFD_RC5T583 is not set
|
||||
# CONFIG_REGULATOR is not set
|
||||
# CONFIG_PWM is not set
|
||||
# CONFIG_PWM_SUNXI is not set
|
||||
CONFIG_MEDIA_SUPPORT=y
|
||||
|
||||
#
|
||||
@ -2208,6 +2225,7 @@ CONFIG_RADIO_ADAPTERS=y
|
||||
#
|
||||
# Texas Instruments WL128x FM driver (ST based)
|
||||
#
|
||||
# CONFIG_RADIO_WL128X is not set
|
||||
CONFIG_DVB_MAX_ADAPTERS=8
|
||||
# CONFIG_DVB_DYNAMIC_MINORS is not set
|
||||
CONFIG_DVB_CAPTURE_DRIVERS=y
|
||||
@ -2408,6 +2426,31 @@ CONFIG_VIDEO_ENCODER_DECODER_SUNXI=y
|
||||
#
|
||||
# Graphics support
|
||||
#
|
||||
CONFIG_FB_TFT=m
|
||||
CONFIG_FB_TFT_BD663474=m
|
||||
CONFIG_FB_TFT_HX8340BN=m
|
||||
CONFIG_FB_TFT_HX8347D=m
|
||||
CONFIG_FB_TFT_HX8353D=m
|
||||
CONFIG_FB_TFT_ILI9320=m
|
||||
CONFIG_FB_TFT_ILI9325=m
|
||||
CONFIG_FB_TFT_ILI9340=m
|
||||
CONFIG_FB_TFT_ILI9341=m
|
||||
CONFIG_FB_TFT_ILI9486=m
|
||||
CONFIG_FB_TFT_PCD8544=m
|
||||
CONFIG_FB_TFT_RA8875=m
|
||||
CONFIG_FB_TFT_S6D02A1=m
|
||||
CONFIG_FB_TFT_S6D1121=m
|
||||
CONFIG_FB_TFT_SSD1289=m
|
||||
CONFIG_FB_TFT_SSD1306=m
|
||||
CONFIG_FB_TFT_SSD1331=m
|
||||
CONFIG_FB_TFT_SSD1351=m
|
||||
CONFIG_FB_TFT_ST7735R=m
|
||||
CONFIG_FB_TFT_TINYLCD=m
|
||||
CONFIG_FB_TFT_TLS8204=m
|
||||
CONFIG_FB_TFT_UPD161704=m
|
||||
CONFIG_FB_TFT_WATTEROTT=m
|
||||
CONFIG_FB_FLEX=m
|
||||
CONFIG_FB_TFT_FBTFT_DEVICE=m
|
||||
CONFIG_DRM=m
|
||||
# CONFIG_DRM_UDL is not set
|
||||
CONFIG_ION=y
|
||||
@ -2425,15 +2468,16 @@ CONFIG_FB_CFB_FILLRECT=y
|
||||
CONFIG_FB_CFB_COPYAREA=y
|
||||
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||
# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
|
||||
# CONFIG_FB_SYS_FILLRECT is not set
|
||||
# CONFIG_FB_SYS_COPYAREA is not set
|
||||
# CONFIG_FB_SYS_IMAGEBLIT is not set
|
||||
CONFIG_FB_SYS_FILLRECT=m
|
||||
CONFIG_FB_SYS_COPYAREA=m
|
||||
CONFIG_FB_SYS_IMAGEBLIT=m
|
||||
# CONFIG_FB_FOREIGN_ENDIAN is not set
|
||||
# CONFIG_FB_SYS_FOPS is not set
|
||||
CONFIG_FB_SYS_FOPS=m
|
||||
# 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
|
||||
CONFIG_FB_BACKLIGHT=y
|
||||
# CONFIG_FB_MODE_HELPERS is not set
|
||||
# CONFIG_FB_TILEBLITTING is not set
|
||||
|
||||
@ -2457,7 +2501,22 @@ CONFIG_DISP2_SUNXI_DEBUG=y
|
||||
# CONFIG_FB_METRONOME is not set
|
||||
# CONFIG_FB_BROADSHEET is not set
|
||||
# CONFIG_EXYNOS_VIDEO is not set
|
||||
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
|
||||
CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
||||
CONFIG_LCD_CLASS_DEVICE=m
|
||||
# CONFIG_LCD_L4F00242T03 is not set
|
||||
# CONFIG_LCD_LMS283GF05 is not set
|
||||
# CONFIG_LCD_LTV350QV is not set
|
||||
# CONFIG_LCD_TDO24M is not set
|
||||
# CONFIG_LCD_VGG2432A4 is not set
|
||||
# CONFIG_LCD_PLATFORM is not set
|
||||
# CONFIG_LCD_S6E63M0 is not set
|
||||
# CONFIG_LCD_LD9040 is not set
|
||||
# CONFIG_LCD_AMS369FG06 is not set
|
||||
CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
||||
CONFIG_BACKLIGHT_GENERIC=m
|
||||
# CONFIG_BACKLIGHT_ADP8860 is not set
|
||||
# CONFIG_BACKLIGHT_ADP8870 is not set
|
||||
# CONFIG_BACKLIGHT_LP855X is not set
|
||||
|
||||
#
|
||||
# Console display driver support
|
||||
@ -2654,12 +2713,12 @@ CONFIG_USB_SUNXI_HCD0=y
|
||||
CONFIG_USB_SUNXI_HCI=y
|
||||
CONFIG_USB_SUNXI_EHCI0=y
|
||||
CONFIG_USB_SUNXI_EHCI1=y
|
||||
CONFIG_USB_SUNXI_OHCI0=y
|
||||
# CONFIG_USB_SUNXI_OHCI0 is not set
|
||||
CONFIG_USB_SUNXI_OHCI1=y
|
||||
CONFIG_USB_SUNXI_EHCI2=y
|
||||
CONFIG_USB_SUNXI_OHCI2=y
|
||||
# CONFIG_USB_SUNXI_OHCI2 is not set
|
||||
CONFIG_USB_SUNXI_EHCI3=y
|
||||
CONFIG_USB_SUNXI_OHCI3=y
|
||||
# CONFIG_USB_SUNXI_OHCI3 is not set
|
||||
CONFIG_USB_SUNXI_HSIC=y
|
||||
# CONFIG_SW_USB_3G is not set
|
||||
# CONFIG_USB_MUSB_HDRC is not set
|
||||
@ -2902,8 +2961,7 @@ CONFIG_LEDS_TRIGGER_TIMER=y
|
||||
# CONFIG_ACCESSIBILITY is not set
|
||||
CONFIG_RTC_LIB=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_HCTOSYS=y
|
||||
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
|
||||
# CONFIG_RTC_HCTOSYS is not set
|
||||
# CONFIG_RTC_DEBUG is not set
|
||||
|
||||
#
|
||||
@ -3087,7 +3145,7 @@ CONFIG_INOTIFY_USER=y
|
||||
CONFIG_FANOTIFY=y
|
||||
# CONFIG_QUOTA is not set
|
||||
# CONFIG_QUOTACTL is not set
|
||||
# CONFIG_AUTOFS4_FS is not set
|
||||
CONFIG_AUTOFS4_FS=y
|
||||
CONFIG_FUSE_FS=y
|
||||
CONFIG_CUSE=y
|
||||
CONFIG_GENERIC_ACL=y
|
||||
@ -3292,7 +3350,6 @@ CONFIG_STACKTRACE=y
|
||||
# CONFIG_DEBUG_HIGHMEM is not set
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
# CONFIG_DEBUG_INFO is not set
|
||||
# CONFIG_DEBUG_INFO_REDUCED is not set
|
||||
# CONFIG_DEBUG_VM is not set
|
||||
# CONFIG_DEBUG_WRITECOUNT is not set
|
||||
CONFIG_DEBUG_MEMORY_INIT=y
|
||||
@ -3434,7 +3491,7 @@ CONFIG_CRYPTO_CBC=y
|
||||
# CONFIG_CRYPTO_CTS is not set
|
||||
CONFIG_CRYPTO_ECB=y
|
||||
# CONFIG_CRYPTO_LRW is not set
|
||||
# CONFIG_CRYPTO_PCBC is not set
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
# CONFIG_CRYPTO_XTS is not set
|
||||
|
||||
#
|
||||
@ -3473,7 +3530,7 @@ CONFIG_CRYPTO_ARC4=y
|
||||
# CONFIG_CRYPTO_CAST5 is not set
|
||||
# CONFIG_CRYPTO_CAST6 is not set
|
||||
CONFIG_CRYPTO_DES=y
|
||||
# CONFIG_CRYPTO_FCRYPT is not set
|
||||
CONFIG_CRYPTO_FCRYPT=m
|
||||
# CONFIG_CRYPTO_KHAZAD is not set
|
||||
# CONFIG_CRYPTO_SALSA20 is not set
|
||||
# CONFIG_CRYPTO_SEED is not set
|
||||
|
||||
@ -24,8 +24,7 @@ next_work = 2
|
||||
;storage_type = boot medium, 0-nand, 1-card0, 2-card2, -1(defualt)auto scan
|
||||
;----------------------------------------------------------------------------------
|
||||
[target]
|
||||
#boot_clock = 1008
|
||||
boot_clock = 1200
|
||||
boot_clock = 1008
|
||||
storage_type = -1
|
||||
|
||||
;---------------------------------------------------------------------------------
|
||||
@ -1100,42 +1099,24 @@ pmuic_type = 2
|
||||
pmu_gpio0 = port:PL06<1><1><2><1>
|
||||
pmu_level0 = 11300
|
||||
pmu_level1 = 01100
|
||||
;extremity_freq = 1344000000
|
||||
#max_freq = 1200000000
|
||||
max_freq = 1536000000
|
||||
extremity_freq = 1296000000
|
||||
max_freq = 1200000000
|
||||
min_freq = 480000000
|
||||
|
||||
LV_count = 8
|
||||
|
||||
#LV1_freq = 1200000000
|
||||
LV1_freq = 1536000000
|
||||
#LV1_volt = 1300
|
||||
LV1_volt = 1500
|
||||
|
||||
#LV2_freq = 1008000000
|
||||
LV_count = 7
|
||||
LV1_freq = 1296000000
|
||||
LV1_volt = 1320
|
||||
LV2_freq = 1200000000
|
||||
#LV2_volt = 1200
|
||||
LV2_volt = 1300
|
||||
|
||||
LV3_freq = 0
|
||||
#LV3_freq = 1008000000
|
||||
LV3_volt = 1100
|
||||
#LV3_volt = 1200
|
||||
|
||||
LV4_freq = 0
|
||||
LV4_volt = 1100
|
||||
|
||||
LV5_freq = 0
|
||||
LV5_volt = 1100
|
||||
|
||||
LV6_freq = 0
|
||||
LV6_volt = 1100
|
||||
|
||||
LV7_freq = 0
|
||||
LV7_volt = 1100
|
||||
|
||||
LV8_freq = 0
|
||||
LV8_volt = 1100
|
||||
LV2_volt = 1240
|
||||
LV3_freq = 1104000000
|
||||
LV3_volt = 1180
|
||||
LV4_freq = 1008000000
|
||||
LV4_volt = 1140
|
||||
LV5_freq = 960000000
|
||||
LV5_volt = 1080
|
||||
LV6_freq = 816000000
|
||||
LV6_volt = 1020
|
||||
LV7_freq = 480000000
|
||||
LV7_volt = 980
|
||||
|
||||
[gpu_dvfs_table]
|
||||
|
||||
|
||||
@ -8,8 +8,7 @@ eraseflag = 1
|
||||
next_work = 2
|
||||
|
||||
[target]
|
||||
#boot_clock = 1008
|
||||
boot_clock = 1200
|
||||
boot_clock = 1008
|
||||
storage_type = -1
|
||||
|
||||
[key_detect_en]
|
||||
@ -739,25 +738,24 @@ pmuic_type = 2
|
||||
pmu_gpio0 = port:PL06<1><1><2><1>
|
||||
pmu_level0 = 11300
|
||||
pmu_level1 = 1100
|
||||
max_freq = 1296000000
|
||||
min_freq = 648000000
|
||||
LV_count = 8
|
||||
extremity_freq = 1296000000
|
||||
max_freq = 1200000000
|
||||
min_freq = 480000000
|
||||
LV_count = 7
|
||||
LV1_freq = 1296000000
|
||||
LV1_volt = 1340
|
||||
LV1_volt = 1320
|
||||
LV2_freq = 1200000000
|
||||
LV2_volt = 1320
|
||||
LV3_freq = 1008000000
|
||||
LV3_volt = 1200
|
||||
LV4_freq = 816000000
|
||||
LV4_volt = 1100
|
||||
LV5_freq = 648000000
|
||||
LV5_volt = 1040
|
||||
LV6_freq = 0
|
||||
LV6_volt = 1040
|
||||
LV7_freq = 0
|
||||
LV7_volt = 1040
|
||||
LV8_freq = 0
|
||||
LV8_volt = 1040
|
||||
LV2_volt = 1240
|
||||
LV3_freq = 1104000000
|
||||
LV3_volt = 1180
|
||||
LV4_freq = 1008000000
|
||||
LV4_volt = 1140
|
||||
LV5_freq = 960000000
|
||||
LV5_volt = 1080
|
||||
LV6_freq = 816000000
|
||||
LV6_volt = 1020
|
||||
LV7_freq = 480000000
|
||||
LV7_volt = 980
|
||||
|
||||
[gpu_dvfs_table]
|
||||
G_LV_count = 3
|
||||
|
||||
@ -24,9 +24,7 @@ next_work = 2
|
||||
;storage_type = boot medium, 0-nand, 1-card0, 2-card2, -1(defualt)auto scan
|
||||
;----------------------------------------------------------------------------------
|
||||
[target]
|
||||
#boot_clock = 1008
|
||||
#boot_clock = 1200
|
||||
boot_clock = 1536
|
||||
boot_clock = 1008
|
||||
storage_type = -1
|
||||
|
||||
;---------------------------------------------------------------------------------
|
||||
@ -1139,42 +1137,24 @@ pmuic_type = 2
|
||||
pmu_gpio0 = port:PL06<1><1><2><1>
|
||||
pmu_level0 = 11300
|
||||
pmu_level1 = 01100
|
||||
extremity_freq = 1536000000
|
||||
#max_freq = 1200000000
|
||||
max_freq = 1536000000
|
||||
extremity_freq = 1296000000
|
||||
max_freq = 1200000000
|
||||
min_freq = 480000000
|
||||
|
||||
LV_count = 8
|
||||
|
||||
#LV1_freq = 1200000000
|
||||
LV1_freq = 1536000000
|
||||
#LV1_volt = 1300
|
||||
LV1_volt = 1500
|
||||
|
||||
#LV2_freq = 1008000000
|
||||
LV_count = 7
|
||||
LV1_freq = 1296000000
|
||||
LV1_volt = 1320
|
||||
LV2_freq = 1200000000
|
||||
#LV2_volt = 1200
|
||||
LV2_volt = 1300
|
||||
|
||||
LV3_freq = 0
|
||||
#LV3_freq = 1008000000
|
||||
LV3_volt = 1100
|
||||
#LV3_volt = 1200
|
||||
|
||||
LV4_freq = 0
|
||||
LV4_volt = 1100
|
||||
|
||||
LV5_freq = 0
|
||||
LV5_volt = 1100
|
||||
|
||||
LV6_freq = 0
|
||||
LV6_volt = 1100
|
||||
|
||||
LV7_freq = 0
|
||||
LV7_volt = 1100
|
||||
|
||||
LV8_freq = 0
|
||||
LV8_volt = 1100
|
||||
LV2_volt = 1240
|
||||
LV3_freq = 1104000000
|
||||
LV3_volt = 1180
|
||||
LV4_freq = 1008000000
|
||||
LV4_volt = 1140
|
||||
LV5_freq = 960000000
|
||||
LV5_volt = 1080
|
||||
LV6_freq = 816000000
|
||||
LV6_volt = 1020
|
||||
LV7_freq = 480000000
|
||||
LV7_volt = 980
|
||||
|
||||
[gpu_dvfs_table]
|
||||
|
||||
|
||||
9505
patch/kernel/sun8i-default/fbtft_for_older.patch
Normal file
9505
patch/kernel/sun8i-default/fbtft_for_older.patch
Normal file
File diff suppressed because it is too large
Load Diff
94
patch/kernel/sun8i-default/opi_plus_gmac.patch.disabled
Normal file
94
patch/kernel/sun8i-default/opi_plus_gmac.patch.disabled
Normal file
@ -0,0 +1,94 @@
|
||||
diff --git a/drivers/net/ethernet/sunxi/eth/Kconfig b/drivers/net/ethernet/sunxi/eth/Kconfig
|
||||
index 13787db..af930df 100755
|
||||
--- a/drivers/net/ethernet/sunxi/eth/Kconfig
|
||||
+++ b/drivers/net/ethernet/sunxi/eth/Kconfig
|
||||
@@ -35,5 +35,13 @@ config GETH_PHY_POWER
|
||||
If external PHY power is exist, and it want to be controled,
|
||||
select it. If not, it mean the power of PHY already on.
|
||||
|
||||
+config GMAC_PHY_POWER
|
||||
+ bool "External PHY power control"
|
||||
+ depends on SUNXI_GETH
|
||||
+ default y
|
||||
+ ---help---
|
||||
+ If external PHY power is exist, and it want to be controled,
|
||||
+ select it. If not, it mean the power of PHY already on.
|
||||
+
|
||||
endif
|
||||
|
||||
diff --git a/drivers/net/ethernet/sunxi/eth/sunxi_geth.c b/drivers/net/ethernet/sunxi/eth/sunxi_geth.c
|
||||
index 7c48f7b..96be5a3 100755
|
||||
--- a/drivers/net/ethernet/sunxi/eth/sunxi_geth.c
|
||||
+++ b/drivers/net/ethernet/sunxi/eth/sunxi_geth.c
|
||||
@@ -154,6 +154,9 @@ struct geth_priv {
|
||||
|
||||
spinlock_t lock;
|
||||
spinlock_t tx_lock;
|
||||
+#ifdef CONFIG_GMAC_PHY_POWER
|
||||
+ u32 gpio_power_hd;
|
||||
+#endif
|
||||
};
|
||||
|
||||
#ifdef CONFIG_GETH_PHY_POWER
|
||||
@@ -195,6 +198,11 @@ static void desc_print(struct dma_desc *desc, int size)
|
||||
static int geth_power_on(struct geth_priv *priv)
|
||||
{
|
||||
int value;
|
||||
+
|
||||
+#ifdef CONFIG_GMAC_PHY_POWER
|
||||
+ gpio_set_value(priv->gpio_power_hd, 1);
|
||||
+#endif
|
||||
+
|
||||
#ifdef CONFIG_GETH_PHY_POWER
|
||||
struct regulator **regu;
|
||||
int ret = 0, i = 0;
|
||||
@@ -258,6 +266,11 @@ err:
|
||||
static void geth_power_off(struct geth_priv *priv)
|
||||
{
|
||||
int value;
|
||||
+
|
||||
+#ifdef CONFIG_GMAC_PHY_POWER
|
||||
+ gpio_set_value(priv->gpio_power_hd, 0);
|
||||
+#endif
|
||||
+
|
||||
#ifdef CONFIG_GETH_PHY_POWER
|
||||
struct regulator **regu = priv->power;
|
||||
int i = 0;
|
||||
@@ -1607,7 +1620,13 @@ static int geth_sys_request(struct platform_device *pdev)
|
||||
struct geth_priv *priv = netdev_priv(ndev);
|
||||
int ret = 0;
|
||||
struct resource *res;
|
||||
-
|
||||
+
|
||||
+#ifdef CONFIG_GMAC_PHY_POWER
|
||||
+ script_item_value_type_e type;
|
||||
+ script_item_u item;
|
||||
+ int req_status;
|
||||
+#endif
|
||||
+
|
||||
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "geth_extclk");
|
||||
if (unlikely(!res)){
|
||||
ret = -ENODEV;
|
||||
@@ -1681,6 +1700,22 @@ static int geth_sys_request(struct platform_device *pdev)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
+
|
||||
+#ifdef CONFIG_GMAC_PHY_POWER && CONFIG_GETH_SCRIPT_SYS
|
||||
+ type = script_get_item("gmac_phy_power", "gmac_phy_power_en", &item);
|
||||
+ if (SCIRPT_ITEM_VALUE_TYPE_PIO != type) {
|
||||
+ pr_err("script_get_item return type err\n");
|
||||
+ return -EFAULT;
|
||||
+ }
|
||||
+ /*request gpio*/
|
||||
+ req_status = gpio_request(item.gpio.gpio, NULL);
|
||||
+ if (0 != req_status) {
|
||||
+ pr_err("request gpio failed!\n");
|
||||
+ }
|
||||
+ gpio_direction_output(item.gpio.gpio, 1);
|
||||
+ priv->gpio_power_hd = item.gpio.gpio;
|
||||
+ #endif
|
||||
+
|
||||
return 0;
|
||||
|
||||
pin_err:
|
||||
801
patch/kernel/sun8i-default/patch-3.4.39-40.patch
Normal file
801
patch/kernel/sun8i-default/patch-3.4.39-40.patch
Normal file
@ -0,0 +1,801 @@
|
||||
diff --git a/Makefile b/Makefile
|
||||
index 5de9b43..3efde3d 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -1,6 +1,6 @@
|
||||
VERSION = 3
|
||||
PATCHLEVEL = 4
|
||||
-SUBLEVEL = 39
|
||||
+SUBLEVEL = 40
|
||||
EXTRAVERSION =
|
||||
NAME = Saber-toothed Squirrel
|
||||
|
||||
diff --git a/arch/alpha/kernel/sys_nautilus.c b/arch/alpha/kernel/sys_nautilus.c
|
||||
index 4d4c046..1383f86 100644
|
||||
--- a/arch/alpha/kernel/sys_nautilus.c
|
||||
+++ b/arch/alpha/kernel/sys_nautilus.c
|
||||
@@ -188,6 +188,10 @@ nautilus_machine_check(unsigned long vector, unsigned long la_ptr)
|
||||
extern void free_reserved_mem(void *, void *);
|
||||
extern void pcibios_claim_one_bus(struct pci_bus *);
|
||||
|
||||
+static struct resource irongate_io = {
|
||||
+ .name = "Irongate PCI IO",
|
||||
+ .flags = IORESOURCE_IO,
|
||||
+};
|
||||
static struct resource irongate_mem = {
|
||||
.name = "Irongate PCI MEM",
|
||||
.flags = IORESOURCE_MEM,
|
||||
@@ -209,6 +213,7 @@ nautilus_init_pci(void)
|
||||
|
||||
irongate = pci_get_bus_and_slot(0, 0);
|
||||
bus->self = irongate;
|
||||
+ bus->resource[0] = &irongate_io;
|
||||
bus->resource[1] = &irongate_mem;
|
||||
|
||||
pci_bus_size_bridges(bus);
|
||||
diff --git a/arch/powerpc/platforms/pseries/lpar.c b/arch/powerpc/platforms/pseries/lpar.c
|
||||
index 5f3ef87..9cfdcc9 100644
|
||||
--- a/arch/powerpc/platforms/pseries/lpar.c
|
||||
+++ b/arch/powerpc/platforms/pseries/lpar.c
|
||||
@@ -187,7 +187,13 @@ static long pSeries_lpar_hpte_remove(unsigned long hpte_group)
|
||||
(0x1UL << 4), &dummy1, &dummy2);
|
||||
if (lpar_rc == H_SUCCESS)
|
||||
return i;
|
||||
- BUG_ON(lpar_rc != H_NOT_FOUND);
|
||||
+
|
||||
+ /*
|
||||
+ * The test for adjunct partition is performed before the
|
||||
+ * ANDCOND test. H_RESOURCE may be returned, so we need to
|
||||
+ * check for that as well.
|
||||
+ */
|
||||
+ BUG_ON(lpar_rc != H_NOT_FOUND && lpar_rc != H_RESOURCE);
|
||||
|
||||
slot_offset++;
|
||||
slot_offset &= 0x7;
|
||||
diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile
|
||||
index 8a84501..5ef205c 100644
|
||||
--- a/arch/x86/boot/compressed/Makefile
|
||||
+++ b/arch/x86/boot/compressed/Makefile
|
||||
@@ -4,7 +4,7 @@
|
||||
# create a compressed vmlinux image from the original vmlinux
|
||||
#
|
||||
|
||||
-targets := vmlinux.lds vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma vmlinux.bin.xz vmlinux.bin.lzo head_$(BITS).o misc.o string.o cmdline.o early_serial_console.o piggy.o
|
||||
+targets := vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma vmlinux.bin.xz vmlinux.bin.lzo
|
||||
|
||||
KBUILD_CFLAGS := -m$(BITS) -D__KERNEL__ $(LINUX_INCLUDE) -O2
|
||||
KBUILD_CFLAGS += -fno-strict-aliasing -fPIC
|
||||
@@ -29,7 +29,6 @@ VMLINUX_OBJS = $(obj)/vmlinux.lds $(obj)/head_$(BITS).o $(obj)/misc.o \
|
||||
$(obj)/piggy.o
|
||||
|
||||
$(obj)/eboot.o: KBUILD_CFLAGS += -fshort-wchar -mno-red-zone
|
||||
-$(obj)/efi_stub_$(BITS).o: KBUILD_CLFAGS += -fshort-wchar -mno-red-zone
|
||||
|
||||
ifeq ($(CONFIG_EFI_STUB), y)
|
||||
VMLINUX_OBJS += $(obj)/eboot.o $(obj)/efi_stub_$(BITS).o
|
||||
@@ -43,7 +42,7 @@ OBJCOPYFLAGS_vmlinux.bin := -R .comment -S
|
||||
$(obj)/vmlinux.bin: vmlinux FORCE
|
||||
$(call if_changed,objcopy)
|
||||
|
||||
-targets += vmlinux.bin.all vmlinux.relocs
|
||||
+targets += $(patsubst $(obj)/%,%,$(VMLINUX_OBJS)) vmlinux.bin.all vmlinux.relocs
|
||||
|
||||
CMD_RELOCS = arch/x86/tools/relocs
|
||||
quiet_cmd_relocs = RELOCS $@
|
||||
diff --git a/arch/x86/include/asm/syscall.h b/arch/x86/include/asm/syscall.h
|
||||
index 386b786..1d82a11 100644
|
||||
--- a/arch/x86/include/asm/syscall.h
|
||||
+++ b/arch/x86/include/asm/syscall.h
|
||||
@@ -27,13 +27,13 @@ extern const unsigned long sys_call_table[];
|
||||
*/
|
||||
static inline int syscall_get_nr(struct task_struct *task, struct pt_regs *regs)
|
||||
{
|
||||
- return regs->orig_ax & __SYSCALL_MASK;
|
||||
+ return regs->orig_ax;
|
||||
}
|
||||
|
||||
static inline void syscall_rollback(struct task_struct *task,
|
||||
struct pt_regs *regs)
|
||||
{
|
||||
- regs->ax = regs->orig_ax & __SYSCALL_MASK;
|
||||
+ regs->ax = regs->orig_ax;
|
||||
}
|
||||
|
||||
static inline long syscall_get_error(struct task_struct *task,
|
||||
diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c
|
||||
index cf15001..262ed81 100644
|
||||
--- a/block/blk-sysfs.c
|
||||
+++ b/block/blk-sysfs.c
|
||||
@@ -200,6 +200,8 @@ queue_store_##name(struct request_queue *q, const char *page, size_t count) \
|
||||
unsigned long val; \
|
||||
ssize_t ret; \
|
||||
ret = queue_var_store(&val, page, count); \
|
||||
+ if (ret < 0) \
|
||||
+ return ret; \
|
||||
if (neg) \
|
||||
val = !val; \
|
||||
\
|
||||
diff --git a/crypto/gcm.c b/crypto/gcm.c
|
||||
index 1a25263..b97b186 100644
|
||||
--- a/crypto/gcm.c
|
||||
+++ b/crypto/gcm.c
|
||||
@@ -44,6 +44,7 @@ struct crypto_rfc4543_ctx {
|
||||
|
||||
struct crypto_rfc4543_req_ctx {
|
||||
u8 auth_tag[16];
|
||||
+ u8 assocbuf[32];
|
||||
struct scatterlist cipher[1];
|
||||
struct scatterlist payload[2];
|
||||
struct scatterlist assoc[2];
|
||||
@@ -1142,9 +1143,19 @@ static struct aead_request *crypto_rfc4543_crypt(struct aead_request *req,
|
||||
scatterwalk_crypto_chain(payload, dst, vdst == req->iv + 8, 2);
|
||||
assoclen += 8 + req->cryptlen - (enc ? 0 : authsize);
|
||||
|
||||
- sg_init_table(assoc, 2);
|
||||
- sg_set_page(assoc, sg_page(req->assoc), req->assoc->length,
|
||||
- req->assoc->offset);
|
||||
+ if (req->assoc->length == req->assoclen) {
|
||||
+ sg_init_table(assoc, 2);
|
||||
+ sg_set_page(assoc, sg_page(req->assoc), req->assoc->length,
|
||||
+ req->assoc->offset);
|
||||
+ } else {
|
||||
+ BUG_ON(req->assoclen > sizeof(rctx->assocbuf));
|
||||
+
|
||||
+ scatterwalk_map_and_copy(rctx->assocbuf, req->assoc, 0,
|
||||
+ req->assoclen, 0);
|
||||
+
|
||||
+ sg_init_table(assoc, 2);
|
||||
+ sg_set_buf(assoc, rctx->assocbuf, req->assoclen);
|
||||
+ }
|
||||
scatterwalk_crypto_chain(assoc, payload, 0, 2);
|
||||
|
||||
aead_request_set_tfm(subreq, ctx->child);
|
||||
diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
|
||||
index 47bd6ab..f67fc41 100644
|
||||
--- a/drivers/ata/ata_piix.c
|
||||
+++ b/drivers/ata/ata_piix.c
|
||||
@@ -150,6 +150,7 @@ enum piix_controller_ids {
|
||||
tolapai_sata,
|
||||
piix_pata_vmw, /* PIIX4 for VMware, spurious DMA_ERR */
|
||||
ich8_sata_snb,
|
||||
+ ich8_2port_sata_snb,
|
||||
};
|
||||
|
||||
struct piix_map_db {
|
||||
@@ -326,7 +327,7 @@ static const struct pci_device_id piix_pci_tbl[] = {
|
||||
/* SATA Controller IDE (Lynx Point) */
|
||||
{ 0x8086, 0x8c01, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_snb },
|
||||
/* SATA Controller IDE (Lynx Point) */
|
||||
- { 0x8086, 0x8c08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata },
|
||||
+ { 0x8086, 0x8c08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata_snb },
|
||||
/* SATA Controller IDE (Lynx Point) */
|
||||
{ 0x8086, 0x8c09, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata },
|
||||
/* SATA Controller IDE (DH89xxCC) */
|
||||
@@ -511,6 +512,7 @@ static const struct piix_map_db *piix_map_db_table[] = {
|
||||
[ich8m_apple_sata] = &ich8m_apple_map_db,
|
||||
[tolapai_sata] = &tolapai_map_db,
|
||||
[ich8_sata_snb] = &ich8_map_db,
|
||||
+ [ich8_2port_sata_snb] = &ich8_2port_map_db,
|
||||
};
|
||||
|
||||
static struct ata_port_info piix_port_info[] = {
|
||||
@@ -652,6 +654,15 @@ static struct ata_port_info piix_port_info[] = {
|
||||
.port_ops = &piix_sata_ops,
|
||||
},
|
||||
|
||||
+ [ich8_2port_sata_snb] =
|
||||
+ {
|
||||
+ .flags = PIIX_SATA_FLAGS | PIIX_FLAG_SIDPR
|
||||
+ | PIIX_FLAG_PIO16,
|
||||
+ .pio_mask = ATA_PIO4,
|
||||
+ .mwdma_mask = ATA_MWDMA2,
|
||||
+ .udma_mask = ATA_UDMA6,
|
||||
+ .port_ops = &piix_sata_ops,
|
||||
+ },
|
||||
};
|
||||
|
||||
static struct pci_bits piix_enable_bits[] = {
|
||||
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
|
||||
index 4b4caa3..02dd34c 100644
|
||||
--- a/drivers/ata/libata-core.c
|
||||
+++ b/drivers/ata/libata-core.c
|
||||
@@ -2408,6 +2408,9 @@ int ata_dev_configure(struct ata_device *dev)
|
||||
dev->max_sectors = min_t(unsigned int, ATA_MAX_SECTORS_128,
|
||||
dev->max_sectors);
|
||||
|
||||
+ if (dev->horkage & ATA_HORKAGE_MAX_SEC_LBA48)
|
||||
+ dev->max_sectors = ATA_MAX_SECTORS_LBA48;
|
||||
+
|
||||
if (ap->ops->dev_config)
|
||||
ap->ops->dev_config(dev);
|
||||
|
||||
@@ -4064,6 +4067,7 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {
|
||||
/* Weird ATAPI devices */
|
||||
{ "TORiSAN DVD-ROM DRD-N216", NULL, ATA_HORKAGE_MAX_SEC_128 },
|
||||
{ "QUANTUM DAT DAT72-000", NULL, ATA_HORKAGE_ATAPI_MOD16_DMA },
|
||||
+ { "Slimtype DVD A DS8A8SH", NULL, ATA_HORKAGE_MAX_SEC_LBA48 },
|
||||
|
||||
/* Devices we expect to fail diagnostics */
|
||||
|
||||
diff --git a/drivers/base/regmap/regcache-rbtree.c b/drivers/base/regmap/regcache-rbtree.c
|
||||
index 92b779e..17aa318 100644
|
||||
--- a/drivers/base/regmap/regcache-rbtree.c
|
||||
+++ b/drivers/base/regmap/regcache-rbtree.c
|
||||
@@ -392,7 +392,7 @@ static int regcache_rbtree_sync(struct regmap *map, unsigned int min,
|
||||
base = 0;
|
||||
|
||||
if (max < rbnode->base_reg + rbnode->blklen)
|
||||
- end = rbnode->base_reg + rbnode->blklen - max;
|
||||
+ end = max - rbnode->base_reg + 1;
|
||||
else
|
||||
end = rbnode->blklen;
|
||||
|
||||
diff --git a/drivers/eisa/pci_eisa.c b/drivers/eisa/pci_eisa.c
|
||||
index cdae207..6c3fca9 100644
|
||||
--- a/drivers/eisa/pci_eisa.c
|
||||
+++ b/drivers/eisa/pci_eisa.c
|
||||
@@ -19,10 +19,10 @@
|
||||
/* There is only *one* pci_eisa device per machine, right ? */
|
||||
static struct eisa_root_device pci_eisa_root;
|
||||
|
||||
-static int __init pci_eisa_init(struct pci_dev *pdev,
|
||||
- const struct pci_device_id *ent)
|
||||
+static int __init pci_eisa_init(struct pci_dev *pdev)
|
||||
{
|
||||
- int rc;
|
||||
+ int rc, i;
|
||||
+ struct resource *res, *bus_res = NULL;
|
||||
|
||||
if ((rc = pci_enable_device (pdev))) {
|
||||
printk (KERN_ERR "pci_eisa : Could not enable device %s\n",
|
||||
@@ -30,9 +30,30 @@ static int __init pci_eisa_init(struct pci_dev *pdev,
|
||||
return rc;
|
||||
}
|
||||
|
||||
+ /*
|
||||
+ * The Intel 82375 PCI-EISA bridge is a subtractive-decode PCI
|
||||
+ * device, so the resources available on EISA are the same as those
|
||||
+ * available on the 82375 bus. This works the same as a PCI-PCI
|
||||
+ * bridge in subtractive-decode mode (see pci_read_bridge_bases()).
|
||||
+ * We assume other PCI-EISA bridges are similar.
|
||||
+ *
|
||||
+ * eisa_root_register() can only deal with a single io port resource,
|
||||
+ * so we use the first valid io port resource.
|
||||
+ */
|
||||
+ pci_bus_for_each_resource(pdev->bus, res, i)
|
||||
+ if (res && (res->flags & IORESOURCE_IO)) {
|
||||
+ bus_res = res;
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (!bus_res) {
|
||||
+ dev_err(&pdev->dev, "No resources available\n");
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
pci_eisa_root.dev = &pdev->dev;
|
||||
- pci_eisa_root.res = pdev->bus->resource[0];
|
||||
- pci_eisa_root.bus_base_addr = pdev->bus->resource[0]->start;
|
||||
+ pci_eisa_root.res = bus_res;
|
||||
+ pci_eisa_root.bus_base_addr = bus_res->start;
|
||||
pci_eisa_root.slots = EISA_MAX_SLOTS;
|
||||
pci_eisa_root.dma_mask = pdev->dma_mask;
|
||||
dev_set_drvdata(pci_eisa_root.dev, &pci_eisa_root);
|
||||
@@ -45,22 +66,26 @@ static int __init pci_eisa_init(struct pci_dev *pdev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static struct pci_device_id pci_eisa_pci_tbl[] = {
|
||||
- { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
|
||||
- PCI_CLASS_BRIDGE_EISA << 8, 0xffff00, 0 },
|
||||
- { 0, }
|
||||
-};
|
||||
+/*
|
||||
+ * We have to call pci_eisa_init_early() before pnpacpi_init()/isapnp_init().
|
||||
+ * Otherwise pnp resource will get enabled early and could prevent eisa
|
||||
+ * to be initialized.
|
||||
+ * Also need to make sure pci_eisa_init_early() is called after
|
||||
+ * x86/pci_subsys_init().
|
||||
+ * So need to use subsys_initcall_sync with it.
|
||||
+ */
|
||||
+static int __init pci_eisa_init_early(void)
|
||||
+{
|
||||
+ struct pci_dev *dev = NULL;
|
||||
+ int ret;
|
||||
|
||||
-static struct pci_driver __refdata pci_eisa_driver = {
|
||||
- .name = "pci_eisa",
|
||||
- .id_table = pci_eisa_pci_tbl,
|
||||
- .probe = pci_eisa_init,
|
||||
-};
|
||||
+ for_each_pci_dev(dev)
|
||||
+ if ((dev->class >> 8) == PCI_CLASS_BRIDGE_EISA) {
|
||||
+ ret = pci_eisa_init(dev);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+ }
|
||||
|
||||
-static int __init pci_eisa_init_module (void)
|
||||
-{
|
||||
- return pci_register_driver (&pci_eisa_driver);
|
||||
+ return 0;
|
||||
}
|
||||
-
|
||||
-device_initcall(pci_eisa_init_module);
|
||||
-MODULE_DEVICE_TABLE(pci, pci_eisa_pci_tbl);
|
||||
+subsys_initcall_sync(pci_eisa_init_early);
|
||||
diff --git a/drivers/hwspinlock/hwspinlock_core.c b/drivers/hwspinlock/hwspinlock_core.c
|
||||
index 1201a15..08e7e72 100644
|
||||
--- a/drivers/hwspinlock/hwspinlock_core.c
|
||||
+++ b/drivers/hwspinlock/hwspinlock_core.c
|
||||
@@ -416,6 +416,8 @@ static int __hwspin_lock_request(struct hwspinlock *hwlock)
|
||||
ret = pm_runtime_get_sync(dev);
|
||||
if (ret < 0) {
|
||||
dev_err(dev, "%s: can't power on device\n", __func__);
|
||||
+ pm_runtime_put_noidle(dev);
|
||||
+ module_put(dev->driver->owner);
|
||||
return ret;
|
||||
}
|
||||
|
||||
diff --git a/drivers/net/wireless/mwifiex/init.c b/drivers/net/wireless/mwifiex/init.c
|
||||
index f9d9aed..54bb483 100644
|
||||
--- a/drivers/net/wireless/mwifiex/init.c
|
||||
+++ b/drivers/net/wireless/mwifiex/init.c
|
||||
@@ -584,14 +584,6 @@ mwifiex_shutdown_drv(struct mwifiex_adapter *adapter)
|
||||
return ret;
|
||||
}
|
||||
|
||||
- /* cancel current command */
|
||||
- if (adapter->curr_cmd) {
|
||||
- dev_warn(adapter->dev, "curr_cmd is still in processing\n");
|
||||
- del_timer(&adapter->cmd_timer);
|
||||
- mwifiex_insert_cmd_to_free_q(adapter, adapter->curr_cmd);
|
||||
- adapter->curr_cmd = NULL;
|
||||
- }
|
||||
-
|
||||
/* shut down mwifiex */
|
||||
dev_dbg(adapter->dev, "info: shutdown mwifiex...\n");
|
||||
|
||||
diff --git a/drivers/net/wireless/rt2x00/rt2x00pci.c b/drivers/net/wireless/rt2x00/rt2x00pci.c
|
||||
index 17148bb..10fe07d 100644
|
||||
--- a/drivers/net/wireless/rt2x00/rt2x00pci.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2x00pci.c
|
||||
@@ -52,8 +52,8 @@ int rt2x00pci_regbusy_read(struct rt2x00_dev *rt2x00dev,
|
||||
udelay(REGISTER_BUSY_DELAY);
|
||||
}
|
||||
|
||||
- ERROR(rt2x00dev, "Indirect register access failed: "
|
||||
- "offset=0x%.08x, value=0x%.08x\n", offset, *reg);
|
||||
+ printk_once(KERN_ERR "%s() Indirect register access failed: "
|
||||
+ "offset=0x%.08x, value=0x%.08x\n", __func__, offset, *reg);
|
||||
*reg = ~0;
|
||||
|
||||
return 0;
|
||||
diff --git a/drivers/spi/spi-mpc512x-psc.c b/drivers/spi/spi-mpc512x-psc.c
|
||||
index 4c63f77..2e2b04f 100644
|
||||
--- a/drivers/spi/spi-mpc512x-psc.c
|
||||
+++ b/drivers/spi/spi-mpc512x-psc.c
|
||||
@@ -164,7 +164,7 @@ static int mpc512x_psc_spi_transfer_rxtx(struct spi_device *spi,
|
||||
|
||||
for (i = count; i > 0; i--) {
|
||||
data = tx_buf ? *tx_buf++ : 0;
|
||||
- if (len == EOFBYTE)
|
||||
+ if (len == EOFBYTE && t->cs_change)
|
||||
setbits32(&fifo->txcmd, MPC512x_PSC_FIFO_EOF);
|
||||
out_8(&fifo->txdata_8, data);
|
||||
len--;
|
||||
diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c
|
||||
index 972a94c..486e864 100644
|
||||
--- a/drivers/spi/spi-s3c64xx.c
|
||||
+++ b/drivers/spi/spi-s3c64xx.c
|
||||
@@ -889,25 +889,30 @@ static irqreturn_t s3c64xx_spi_irq(int irq, void *data)
|
||||
{
|
||||
struct s3c64xx_spi_driver_data *sdd = data;
|
||||
struct spi_master *spi = sdd->master;
|
||||
- unsigned int val;
|
||||
+ unsigned int val, clr = 0;
|
||||
|
||||
- val = readl(sdd->regs + S3C64XX_SPI_PENDING_CLR);
|
||||
+ val = readl(sdd->regs + S3C64XX_SPI_STATUS);
|
||||
|
||||
- val &= S3C64XX_SPI_PND_RX_OVERRUN_CLR |
|
||||
- S3C64XX_SPI_PND_RX_UNDERRUN_CLR |
|
||||
- S3C64XX_SPI_PND_TX_OVERRUN_CLR |
|
||||
- S3C64XX_SPI_PND_TX_UNDERRUN_CLR;
|
||||
-
|
||||
- writel(val, sdd->regs + S3C64XX_SPI_PENDING_CLR);
|
||||
-
|
||||
- if (val & S3C64XX_SPI_PND_RX_OVERRUN_CLR)
|
||||
+ if (val & S3C64XX_SPI_ST_RX_OVERRUN_ERR) {
|
||||
+ clr = S3C64XX_SPI_PND_RX_OVERRUN_CLR;
|
||||
dev_err(&spi->dev, "RX overrun\n");
|
||||
- if (val & S3C64XX_SPI_PND_RX_UNDERRUN_CLR)
|
||||
+ }
|
||||
+ if (val & S3C64XX_SPI_ST_RX_UNDERRUN_ERR) {
|
||||
+ clr |= S3C64XX_SPI_PND_RX_UNDERRUN_CLR;
|
||||
dev_err(&spi->dev, "RX underrun\n");
|
||||
- if (val & S3C64XX_SPI_PND_TX_OVERRUN_CLR)
|
||||
+ }
|
||||
+ if (val & S3C64XX_SPI_ST_TX_OVERRUN_ERR) {
|
||||
+ clr |= S3C64XX_SPI_PND_TX_OVERRUN_CLR;
|
||||
dev_err(&spi->dev, "TX overrun\n");
|
||||
- if (val & S3C64XX_SPI_PND_TX_UNDERRUN_CLR)
|
||||
+ }
|
||||
+ if (val & S3C64XX_SPI_ST_TX_UNDERRUN_ERR) {
|
||||
+ clr |= S3C64XX_SPI_PND_TX_UNDERRUN_CLR;
|
||||
dev_err(&spi->dev, "TX underrun\n");
|
||||
+ }
|
||||
+
|
||||
+ /* Clear the pending irq by setting and then clearing it */
|
||||
+ writel(clr, sdd->regs + S3C64XX_SPI_PENDING_CLR);
|
||||
+ writel(0, sdd->regs + S3C64XX_SPI_PENDING_CLR);
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
@@ -931,9 +936,13 @@ static void s3c64xx_spi_hwinit(struct s3c64xx_spi_driver_data *sdd, int channel)
|
||||
writel(0, regs + S3C64XX_SPI_MODE_CFG);
|
||||
writel(0, regs + S3C64XX_SPI_PACKET_CNT);
|
||||
|
||||
- /* Clear any irq pending bits */
|
||||
- writel(readl(regs + S3C64XX_SPI_PENDING_CLR),
|
||||
- regs + S3C64XX_SPI_PENDING_CLR);
|
||||
+ /* Clear any irq pending bits, should set and clear the bits */
|
||||
+ val = S3C64XX_SPI_PND_RX_OVERRUN_CLR |
|
||||
+ S3C64XX_SPI_PND_RX_UNDERRUN_CLR |
|
||||
+ S3C64XX_SPI_PND_TX_OVERRUN_CLR |
|
||||
+ S3C64XX_SPI_PND_TX_UNDERRUN_CLR;
|
||||
+ writel(val, regs + S3C64XX_SPI_PENDING_CLR);
|
||||
+ writel(0, regs + S3C64XX_SPI_PENDING_CLR);
|
||||
|
||||
writel(0, regs + S3C64XX_SPI_SWAP_CFG);
|
||||
|
||||
diff --git a/drivers/thermal/thermal_sys.c b/drivers/thermal/thermal_sys.c
|
||||
index 022bacb..5c26dda 100644
|
||||
--- a/drivers/thermal/thermal_sys.c
|
||||
+++ b/drivers/thermal/thermal_sys.c
|
||||
@@ -1383,6 +1383,7 @@ static int __init thermal_init(void)
|
||||
idr_destroy(&thermal_cdev_idr);
|
||||
mutex_destroy(&thermal_idr_lock);
|
||||
mutex_destroy(&thermal_list_lock);
|
||||
+ return result;
|
||||
}
|
||||
result = genetlink_init();
|
||||
return result;
|
||||
diff --git a/fs/reiserfs/xattr.c b/fs/reiserfs/xattr.c
|
||||
index 46fc1c2..048d990 100644
|
||||
--- a/fs/reiserfs/xattr.c
|
||||
+++ b/fs/reiserfs/xattr.c
|
||||
@@ -187,8 +187,8 @@ fill_with_dentries(void *buf, const char *name, int namelen, loff_t offset,
|
||||
if (dbuf->count == ARRAY_SIZE(dbuf->dentries))
|
||||
return -ENOSPC;
|
||||
|
||||
- if (name[0] == '.' && (name[1] == '\0' ||
|
||||
- (name[1] == '.' && name[2] == '\0')))
|
||||
+ if (name[0] == '.' && (namelen < 2 ||
|
||||
+ (namelen == 2 && name[1] == '.')))
|
||||
return 0;
|
||||
|
||||
dentry = lookup_one_len(name, dbuf->xadir, namelen);
|
||||
diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c
|
||||
index 76e4e05..d867bd9 100644
|
||||
--- a/fs/ubifs/super.c
|
||||
+++ b/fs/ubifs/super.c
|
||||
@@ -1582,6 +1582,12 @@ static int ubifs_remount_rw(struct ubifs_info *c)
|
||||
c->remounting_rw = 1;
|
||||
c->ro_mount = 0;
|
||||
|
||||
+ if (c->space_fixup) {
|
||||
+ err = ubifs_fixup_free_space(c);
|
||||
+ if (err)
|
||||
+ return err;
|
||||
+ }
|
||||
+
|
||||
err = check_free_space(c);
|
||||
if (err)
|
||||
goto out;
|
||||
@@ -1698,12 +1704,6 @@ static int ubifs_remount_rw(struct ubifs_info *c)
|
||||
err = dbg_check_space_info(c);
|
||||
}
|
||||
|
||||
- if (c->space_fixup) {
|
||||
- err = ubifs_fixup_free_space(c);
|
||||
- if (err)
|
||||
- goto out;
|
||||
- }
|
||||
-
|
||||
mutex_unlock(&c->umount_mutex);
|
||||
return err;
|
||||
|
||||
diff --git a/include/linux/ata.h b/include/linux/ata.h
|
||||
index 32df2b6..5856c9e 100644
|
||||
--- a/include/linux/ata.h
|
||||
+++ b/include/linux/ata.h
|
||||
@@ -937,7 +937,7 @@ static inline int atapi_cdb_len(const u16 *dev_id)
|
||||
}
|
||||
}
|
||||
|
||||
-static inline bool atapi_command_packet_set(const u16 *dev_id)
|
||||
+static inline int atapi_command_packet_set(const u16 *dev_id)
|
||||
{
|
||||
return (dev_id[ATA_ID_CONFIG] >> 8) & 0x1f;
|
||||
}
|
||||
diff --git a/include/linux/libata.h b/include/linux/libata.h
|
||||
index 6e887c7..7e13eb4 100644
|
||||
--- a/include/linux/libata.h
|
||||
+++ b/include/linux/libata.h
|
||||
@@ -393,6 +393,7 @@ enum {
|
||||
ATA_HORKAGE_NOSETXFER = (1 << 14), /* skip SETXFER, SATA only */
|
||||
ATA_HORKAGE_BROKEN_FPDMA_AA = (1 << 15), /* skip AA */
|
||||
ATA_HORKAGE_DUMP_ID = (1 << 16), /* dump IDENTIFY data */
|
||||
+ ATA_HORKAGE_MAX_SEC_LBA48 = (1 << 17), /* Set max sects to 65535 */
|
||||
|
||||
/* DMA mask for user DMA control: User visible values; DO NOT
|
||||
renumber */
|
||||
diff --git a/include/linux/preempt.h b/include/linux/preempt.h
|
||||
index 5a710b9..87a03c7 100644
|
||||
--- a/include/linux/preempt.h
|
||||
+++ b/include/linux/preempt.h
|
||||
@@ -93,14 +93,20 @@ do { \
|
||||
|
||||
#else /* !CONFIG_PREEMPT_COUNT */
|
||||
|
||||
-#define preempt_disable() do { } while (0)
|
||||
-#define sched_preempt_enable_no_resched() do { } while (0)
|
||||
-#define preempt_enable_no_resched() do { } while (0)
|
||||
-#define preempt_enable() do { } while (0)
|
||||
-
|
||||
-#define preempt_disable_notrace() do { } while (0)
|
||||
-#define preempt_enable_no_resched_notrace() do { } while (0)
|
||||
-#define preempt_enable_notrace() do { } while (0)
|
||||
+/*
|
||||
+ * Even if we don't have any preemption, we need preempt disable/enable
|
||||
+ * to be barriers, so that we don't have things like get_user/put_user
|
||||
+ * that can cause faults and scheduling migrate into our preempt-protected
|
||||
+ * region.
|
||||
+ */
|
||||
+#define preempt_disable() barrier()
|
||||
+#define sched_preempt_enable_no_resched() barrier()
|
||||
+#define preempt_enable_no_resched() barrier()
|
||||
+#define preempt_enable() barrier()
|
||||
+
|
||||
+#define preempt_disable_notrace() barrier()
|
||||
+#define preempt_enable_no_resched_notrace() barrier()
|
||||
+#define preempt_enable_notrace() barrier()
|
||||
|
||||
#endif /* CONFIG_PREEMPT_COUNT */
|
||||
|
||||
diff --git a/include/linux/spinlock_up.h b/include/linux/spinlock_up.h
|
||||
index a26e2fb..e2369c1 100644
|
||||
--- a/include/linux/spinlock_up.h
|
||||
+++ b/include/linux/spinlock_up.h
|
||||
@@ -16,7 +16,10 @@
|
||||
* In the debug case, 1 means unlocked, 0 means locked. (the values
|
||||
* are inverted, to catch initialization bugs)
|
||||
*
|
||||
- * No atomicity anywhere, we are on UP.
|
||||
+ * No atomicity anywhere, we are on UP. However, we still need
|
||||
+ * the compiler barriers, because we do not want the compiler to
|
||||
+ * move potentially faulting instructions (notably user accesses)
|
||||
+ * into the locked sequence, resulting in non-atomic execution.
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_DEBUG_SPINLOCK
|
||||
@@ -25,6 +28,7 @@
|
||||
static inline void arch_spin_lock(arch_spinlock_t *lock)
|
||||
{
|
||||
lock->slock = 0;
|
||||
+ barrier();
|
||||
}
|
||||
|
||||
static inline void
|
||||
@@ -32,6 +36,7 @@ arch_spin_lock_flags(arch_spinlock_t *lock, unsigned long flags)
|
||||
{
|
||||
local_irq_save(flags);
|
||||
lock->slock = 0;
|
||||
+ barrier();
|
||||
}
|
||||
|
||||
static inline int arch_spin_trylock(arch_spinlock_t *lock)
|
||||
@@ -39,32 +44,34 @@ static inline int arch_spin_trylock(arch_spinlock_t *lock)
|
||||
char oldval = lock->slock;
|
||||
|
||||
lock->slock = 0;
|
||||
+ barrier();
|
||||
|
||||
return oldval > 0;
|
||||
}
|
||||
|
||||
static inline void arch_spin_unlock(arch_spinlock_t *lock)
|
||||
{
|
||||
+ barrier();
|
||||
lock->slock = 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Read-write spinlocks. No debug version.
|
||||
*/
|
||||
-#define arch_read_lock(lock) do { (void)(lock); } while (0)
|
||||
-#define arch_write_lock(lock) do { (void)(lock); } while (0)
|
||||
-#define arch_read_trylock(lock) ({ (void)(lock); 1; })
|
||||
-#define arch_write_trylock(lock) ({ (void)(lock); 1; })
|
||||
-#define arch_read_unlock(lock) do { (void)(lock); } while (0)
|
||||
-#define arch_write_unlock(lock) do { (void)(lock); } while (0)
|
||||
+#define arch_read_lock(lock) do { barrier(); (void)(lock); } while (0)
|
||||
+#define arch_write_lock(lock) do { barrier(); (void)(lock); } while (0)
|
||||
+#define arch_read_trylock(lock) ({ barrier(); (void)(lock); 1; })
|
||||
+#define arch_write_trylock(lock) ({ barrier(); (void)(lock); 1; })
|
||||
+#define arch_read_unlock(lock) do { barrier(); (void)(lock); } while (0)
|
||||
+#define arch_write_unlock(lock) do { barrier(); (void)(lock); } while (0)
|
||||
|
||||
#else /* DEBUG_SPINLOCK */
|
||||
#define arch_spin_is_locked(lock) ((void)(lock), 0)
|
||||
/* for sched.c and kernel_lock.c: */
|
||||
-# define arch_spin_lock(lock) do { (void)(lock); } while (0)
|
||||
-# define arch_spin_lock_flags(lock, flags) do { (void)(lock); } while (0)
|
||||
-# define arch_spin_unlock(lock) do { (void)(lock); } while (0)
|
||||
-# define arch_spin_trylock(lock) ({ (void)(lock); 1; })
|
||||
+# define arch_spin_lock(lock) do { barrier(); (void)(lock); } while (0)
|
||||
+# define arch_spin_lock_flags(lock, flags) do { barrier(); (void)(lock); } while (0)
|
||||
+# define arch_spin_unlock(lock) do { barrier(); (void)(lock); } while (0)
|
||||
+# define arch_spin_trylock(lock) ({ barrier(); (void)(lock); 1; })
|
||||
#endif /* DEBUG_SPINLOCK */
|
||||
|
||||
#define arch_spin_is_contended(lock) (((void)(lock), 0))
|
||||
diff --git a/kernel/panic.c b/kernel/panic.c
|
||||
index 9ed023b..10b7685 100644
|
||||
--- a/kernel/panic.c
|
||||
+++ b/kernel/panic.c
|
||||
@@ -75,6 +75,14 @@ void panic(const char *fmt, ...)
|
||||
int state = 0;
|
||||
|
||||
/*
|
||||
+ * Disable local interrupts. This will prevent panic_smp_self_stop
|
||||
+ * from deadlocking the first cpu that invokes the panic, since
|
||||
+ * there is nothing to prevent an interrupt handler (that runs
|
||||
+ * after the panic_lock is acquired) from invoking panic again.
|
||||
+ */
|
||||
+ local_irq_disable();
|
||||
+
|
||||
+ /*
|
||||
* It's possible to come here directly from a panic-assertion and
|
||||
* not have preempt disabled. Some functions called from here want
|
||||
* preempt to be disabled. No point enabling it later though...
|
||||
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
|
||||
index 62f3751..e539dfa 100644
|
||||
--- a/kernel/trace/ftrace.c
|
||||
+++ b/kernel/trace/ftrace.c
|
||||
@@ -4381,12 +4381,8 @@ ftrace_enable_sysctl(struct ctl_table *table, int write,
|
||||
ftrace_startup_sysctl();
|
||||
|
||||
/* we are starting ftrace again */
|
||||
- if (ftrace_ops_list != &ftrace_list_end) {
|
||||
- if (ftrace_ops_list->next == &ftrace_list_end)
|
||||
- ftrace_trace_function = ftrace_ops_list->func;
|
||||
- else
|
||||
- ftrace_trace_function = ftrace_ops_list_func;
|
||||
- }
|
||||
+ if (ftrace_ops_list != &ftrace_list_end)
|
||||
+ update_ftrace_function();
|
||||
|
||||
} else {
|
||||
/* stopping ftrace calls (just send to ftrace_stub) */
|
||||
diff --git a/mm/mmap.c b/mm/mmap.c
|
||||
index 848ef52..2add0a1 100644
|
||||
--- a/mm/mmap.c
|
||||
+++ b/mm/mmap.c
|
||||
@@ -1619,7 +1619,7 @@ struct vm_area_struct *find_vma(struct mm_struct *mm, unsigned long addr)
|
||||
if (mm) {
|
||||
/* Check the cache first. */
|
||||
/* (Cache hit rate is typically around 35%.) */
|
||||
- vma = mm->mmap_cache;
|
||||
+ vma = ACCESS_ONCE(mm->mmap_cache);
|
||||
if (!(vma && vma->vm_end > addr && vma->vm_start <= addr)) {
|
||||
struct rb_node * rb_node;
|
||||
|
||||
diff --git a/mm/nommu.c b/mm/nommu.c
|
||||
index bb8f4f0..b0956e3 100644
|
||||
--- a/mm/nommu.c
|
||||
+++ b/mm/nommu.c
|
||||
@@ -807,7 +807,7 @@ struct vm_area_struct *find_vma(struct mm_struct *mm, unsigned long addr)
|
||||
struct vm_area_struct *vma;
|
||||
|
||||
/* check the cache first */
|
||||
- vma = mm->mmap_cache;
|
||||
+ vma = ACCESS_ONCE(mm->mmap_cache);
|
||||
if (vma && vma->vm_start <= addr && vma->vm_end > addr)
|
||||
return vma;
|
||||
|
||||
diff --git a/net/can/gw.c b/net/can/gw.c
|
||||
index 3d79b12..f78f898 100644
|
||||
--- a/net/can/gw.c
|
||||
+++ b/net/can/gw.c
|
||||
@@ -436,7 +436,7 @@ static int cgw_notifier(struct notifier_block *nb,
|
||||
if (gwj->src.dev == dev || gwj->dst.dev == dev) {
|
||||
hlist_del(&gwj->list);
|
||||
cgw_unregister_filter(gwj);
|
||||
- kfree(gwj);
|
||||
+ kmem_cache_free(cgw_cache, gwj);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -850,7 +850,7 @@ static void cgw_remove_all_jobs(void)
|
||||
hlist_for_each_entry_safe(gwj, n, nx, &cgw_list, list) {
|
||||
hlist_del(&gwj->list);
|
||||
cgw_unregister_filter(gwj);
|
||||
- kfree(gwj);
|
||||
+ kmem_cache_free(cgw_cache, gwj);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -903,7 +903,7 @@ static int cgw_remove_job(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg)
|
||||
|
||||
hlist_del(&gwj->list);
|
||||
cgw_unregister_filter(gwj);
|
||||
- kfree(gwj);
|
||||
+ kmem_cache_free(cgw_cache, gwj);
|
||||
err = 0;
|
||||
break;
|
||||
}
|
||||
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
|
||||
index 28e070a..c72dce0 100644
|
||||
--- a/sound/pci/hda/hda_codec.c
|
||||
+++ b/sound/pci/hda/hda_codec.c
|
||||
@@ -165,7 +165,7 @@ const char *snd_hda_get_jack_type(u32 cfg)
|
||||
"Line Out", "Speaker", "HP Out", "CD",
|
||||
"SPDIF Out", "Digital Out", "Modem Line", "Modem Hand",
|
||||
"Line In", "Aux", "Mic", "Telephony",
|
||||
- "SPDIF In", "Digitial In", "Reserved", "Other"
|
||||
+ "SPDIF In", "Digital In", "Reserved", "Other"
|
||||
};
|
||||
|
||||
return jack_types[(cfg & AC_DEFCFG_DEVICE)
|
||||
diff --git a/sound/pci/hda/hda_eld.c b/sound/pci/hda/hda_eld.c
|
||||
index 4c054f4..86f6468 100644
|
||||
--- a/sound/pci/hda/hda_eld.c
|
||||
+++ b/sound/pci/hda/hda_eld.c
|
||||
@@ -322,7 +322,7 @@ int snd_hdmi_get_eld(struct hdmi_eld *eld,
|
||||
struct hda_codec *codec, hda_nid_t nid)
|
||||
{
|
||||
int i;
|
||||
- int ret;
|
||||
+ int ret = 0;
|
||||
int size;
|
||||
unsigned char *buf;
|
||||
|
||||
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
|
||||
index adb97d6..353b32a 100644
|
||||
--- a/sound/pci/hda/patch_realtek.c
|
||||
+++ b/sound/pci/hda/patch_realtek.c
|
||||
@@ -6629,7 +6629,8 @@ static int alc662_parse_auto_config(struct hda_codec *codec)
|
||||
const hda_nid_t *ssids;
|
||||
|
||||
if (codec->vendor_id == 0x10ec0272 || codec->vendor_id == 0x10ec0663 ||
|
||||
- codec->vendor_id == 0x10ec0665 || codec->vendor_id == 0x10ec0670)
|
||||
+ codec->vendor_id == 0x10ec0665 || codec->vendor_id == 0x10ec0670 ||
|
||||
+ codec->vendor_id == 0x10ec0671)
|
||||
ssids = alc663_ssids;
|
||||
else
|
||||
ssids = alc662_ssids;
|
||||
@@ -7056,6 +7057,7 @@ static const struct hda_codec_preset snd_hda_preset_realtek[] = {
|
||||
{ .id = 0x10ec0665, .name = "ALC665", .patch = patch_alc662 },
|
||||
{ .id = 0x10ec0668, .name = "ALC668", .patch = patch_alc662 },
|
||||
{ .id = 0x10ec0670, .name = "ALC670", .patch = patch_alc662 },
|
||||
+ { .id = 0x10ec0671, .name = "ALC671", .patch = patch_alc662 },
|
||||
{ .id = 0x10ec0680, .name = "ALC680", .patch = patch_alc680 },
|
||||
{ .id = 0x10ec0880, .name = "ALC880", .patch = patch_alc880 },
|
||||
{ .id = 0x10ec0882, .name = "ALC882", .patch = patch_alc882 },
|
||||
diff --git a/sound/soc/sh/dma-sh7760.c b/sound/soc/sh/dma-sh7760.c
|
||||
index 7da2018..312715f 100644
|
||||
--- a/sound/soc/sh/dma-sh7760.c
|
||||
+++ b/sound/soc/sh/dma-sh7760.c
|
||||
@@ -342,8 +342,8 @@ static int camelot_pcm_new(struct snd_soc_pcm_runtime *rtd)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static struct snd_soc_platform sh7760_soc_platform = {
|
||||
- .pcm_ops = &camelot_pcm_ops,
|
||||
+static struct snd_soc_platform_driver sh7760_soc_platform = {
|
||||
+ .ops = &camelot_pcm_ops,
|
||||
.pcm_new = camelot_pcm_new,
|
||||
.pcm_free = camelot_pcm_free,
|
||||
};
|
||||
@ -51,7 +51,9 @@ if [ "$ARCH" = "armv7l" ]; then
|
||||
if [ $HARDWARE = "gs705a" ]; then
|
||||
ID="Guitar"
|
||||
fi
|
||||
|
||||
if [ $HARDWARE = "sun8i" ]; then
|
||||
ID="Orange H3"
|
||||
fi
|
||||
if [ $HARDWARE = "sun4i" ] || [ $HARDWARE = "Allwinner" ]; then
|
||||
ID="Cubieboard"
|
||||
fi
|
||||
|
||||
@ -120,6 +120,11 @@ if [[ -d "/sys/devices/virtual/thermal/thermal_zone1/" && $board_temp == "0" ]];
|
||||
board_temp=$(cat /sys/devices/virtual/thermal/thermal_zone1/temp | awk '{printf("%d",$1/1000)}')
|
||||
fi
|
||||
|
||||
# H3 based boards, legacy kernel
|
||||
if [[ -d "/sys/class/thermal/thermal_zone1" && $board_temp == "0" ]]; then
|
||||
board_temp=$(cat /sys/class/thermal/thermal_zone1/temp)
|
||||
fi
|
||||
|
||||
# read ambient temperature from USB device
|
||||
if which temper >/dev/null; then
|
||||
amb_temp=$(temper -c)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user