Compare commits
	
		
			70 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 70255e3d62 | ||
|   | 5eb055306f | ||
|   | e11df1eac6 | ||
|   | 033472e1bd | ||
|   | bfc9a4401b | ||
|   | 75e4d2d18c | ||
|   | 5b1c6570ca | ||
|   | 1fe7a17aed | ||
|   | 9cc774f91a | ||
|   | 508adbd871 | ||
|   | ec1c66f53f | ||
|   | 9866622d81 | ||
|   | c448f79840 | ||
|   | 67f91dfa51 | ||
|   | e4a5750931 | ||
|   | 433c94f296 | ||
|   | 2a8d8adfb0 | ||
|   | 9fe68b4369 | ||
|   | bd451d46a6 | ||
|   | aeec1dd7ba | ||
|   | 8d903be35a | ||
|   | 1e4b5c8b1f | ||
|   | ea22e3df3e | ||
|   | 0d5a041095 | ||
|   | 69c75f076a | ||
|   | 6603a0c232 | ||
|   | ae1ae07513 | ||
|   | fb5f026160 | ||
|   | 16d89ef291 | ||
|   | ca3174e4e9 | ||
|   | 0990dfc9ce | ||
|   | be4ab7e178 | ||
|   | 6a27c2f4b1 | ||
|   | fe90d14880 | ||
|   | eb06fa6cf7 | ||
|   | 25cb85abe7 | ||
|   | 7e03be7e2e | ||
|   | 8139438fc0 | ||
|   | c3df07ab3b | ||
|   | 5a430bd13f | ||
|   | 888cc05cf5 | ||
|   | da9a7a9a51 | ||
|   | d101899395 | ||
|   | 1e5bd42d63 | ||
|   | c61f543532 | ||
|   | 4017c528ca | ||
|   | e3ab280e47 | ||
|   | 5742a2ba35 | ||
|   | 23d4f663e3 | ||
|   | cb043ad8da | ||
|   | 6c075777d5 | ||
|   | b40316c21a | ||
|   | f63463591b | ||
|   | 9ce7aa325e | ||
|   | 9e1530b2a3 | ||
|   | 8be3af93b4 | ||
|   | 2589f8589c | ||
|   | 7d15f96eaf | ||
|   | 4f3082583a | ||
|   | 5f23d0f3db | ||
|   | 5828113986 | ||
|   | f7e647ca7b | ||
|   | 9c110b97c6 | ||
|   | b5b5f5dfa6 | ||
|   | f8e57f450d | ||
|   | f7668334a8 | ||
|   | d700eb187b | ||
|   | 20c64dabb6 | ||
|   | 93782d5e8e | ||
|   | ce234299bc | 
							
								
								
									
										2
									
								
								.github/pull_request_template
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/pull_request_template
									
									
									
									
										vendored
									
									
								
							| @@ -3,6 +3,6 @@ Thanks for your contribution to OpenWrt! | |||||||
| To help keep the codebase consistent and readable, | To help keep the codebase consistent and readable, | ||||||
| and to help people review your contribution, | and to help people review your contribution, | ||||||
| we ask you to follow the rules you find in the wiki at this link | we ask you to follow the rules you find in the wiki at this link | ||||||
| https://lede-project.org/submitting-patches | https://openwrt.org/submitting-patches | ||||||
|  |  | ||||||
| Please remove this message before posting the pull request. | Please remove this message before posting the pull request. | ||||||
|   | |||||||
							
								
								
									
										37
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										37
									
								
								README
									
									
									
									
									
								
							| @@ -1,26 +1,31 @@ | |||||||
|  |   _______                     ________        __ | ||||||
|  |  |       |.-----.-----.-----.|  |  |  |.----.|  |_ | ||||||
|  |  |   -   ||  _  |  -__|     ||  |  |  ||   _||   _| | ||||||
|  |  |_______||   __|_____|__|__||________||__|  |____| | ||||||
|  |           |__| W I R E L E S S   F R E E D O M | ||||||
|  |  ----------------------------------------------------- | ||||||
|  |  | ||||||
| This is the buildsystem for the OpenWrt Linux distribution. | This is the buildsystem for the OpenWrt Linux distribution. | ||||||
|  |  | ||||||
| Please use "make menuconfig" to choose your preferred | To build your own firmware you need a Linux, BSD or MacOSX system (case | ||||||
| configuration for the toolchain and firmware. | sensitive filesystem required). Cygwin is unsupported because of the lack | ||||||
|  | of a case sensitive file system. | ||||||
|  |  | ||||||
| You need to have installed gcc, binutils, bzip2, flex, python, perl, make, | You need gcc, binutils, bzip2, flex, python, perl, make, find, grep, diff, | ||||||
| find, grep, diff, unzip, gawk, getopt, subversion, libz-dev and libc headers. | unzip, gawk, getopt, subversion, libz-dev and libc headers installed. | ||||||
|  |  | ||||||
| Run "./scripts/feeds update -a" to get all the latest package definitions | 1. Run "./scripts/feeds update -a" to obtain all the latest package definitions | ||||||
| defined in feeds.conf / feeds.conf.default respectively | defined in feeds.conf / feeds.conf.default | ||||||
| and "./scripts/feeds install -a" to install symlinks of all of them into |  | ||||||
| package/feeds/. |  | ||||||
|  |  | ||||||
| Use "make menuconfig" to configure your image. | 2. Run "./scripts/feeds install -a" to install symlinks for all obtained | ||||||
|  | packages into package/feeds/ | ||||||
|  |  | ||||||
| Simply running "make" will build your firmware. | 3. Run "make menuconfig" to select your preferred configuration for the | ||||||
| It will download all sources, build the cross-compile toolchain,  | toolchain, target system & firmware packages. | ||||||
| the kernel and all choosen applications. |  | ||||||
|  |  | ||||||
| To build your own firmware you need to have access to a Linux, BSD or MacOSX system |  | ||||||
| (case-sensitive filesystem required). Cygwin will not be supported because of |  | ||||||
| the lack of case sensitiveness in the file system. |  | ||||||
|  |  | ||||||
|  | 4. Run "make" to build your firmware. This will download all sources, build | ||||||
|  | the cross-compile toolchain and then cross-compile the Linux kernel & all | ||||||
|  | chosen applications for your target system. | ||||||
|  |  | ||||||
| Sunshine! | Sunshine! | ||||||
| 	Your OpenWrt Community | 	Your OpenWrt Community | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| src-git packages https://git.openwrt.org/feed/packages.git^8bf5fc17db6072549a4e3bd8230d7962364f2043 | src-git packages https://git.openwrt.org/feed/packages.git^35e0b737ab496f5b51e80079b0d8c9b442e223f5 | ||||||
| src-git luci https://git.openwrt.org/project/luci.git^6df9a57ef0773c7158dadbb5054a58cb3d70c621 | src-git luci https://git.openwrt.org/project/luci.git^f64b1523447547032d5280fb0bcdde570f2ca913 | ||||||
| src-git routing https://git.openwrt.org/feed/routing.git^1b9d1c419f0ecefda51922a7845ab2183d6acd76 | src-git routing https://git.openwrt.org/feed/routing.git^1b9d1c419f0ecefda51922a7845ab2183d6acd76 | ||||||
| src-git telephony https://git.openwrt.org/feed/telephony.git^88b12368f11f3feeefcd4dcbe54f21159b8356c1 | src-git telephony https://git.openwrt.org/feed/telephony.git^b9d7b321d15a44c5abb9e5d43a4ec78abfd9031b | ||||||
|   | |||||||
| @@ -34,8 +34,8 @@ endef | |||||||
| define FeedSourcesAppend | define FeedSourcesAppend | ||||||
| ( \ | ( \ | ||||||
|   echo 'src/gz %d_core %U/targets/%S/packages'; \ |   echo 'src/gz %d_core %U/targets/%S/packages'; \ | ||||||
|   echo 'src/gz %d_base %U/packages/%A/base'; \ |  | ||||||
|   $(strip $(if $(CONFIG_PER_FEED_REPO), \ |   $(strip $(if $(CONFIG_PER_FEED_REPO), \ | ||||||
|  | 	echo 'src/gz %d_base %U/packages/%A/base'; \ | ||||||
| 	$(foreach feed,$(FEEDS_AVAILABLE), \ | 	$(foreach feed,$(FEEDS_AVAILABLE), \ | ||||||
| 		$(if $(CONFIG_FEED_$(feed)), \ | 		$(if $(CONFIG_FEED_$(feed)), \ | ||||||
| 			echo '$(if $(filter m,$(CONFIG_FEED_$(feed))),# )src/gz %d_$(feed) %U/packages/%A/$(feed)';)))) \ | 			echo '$(if $(filter m,$(CONFIG_FEED_$(feed))),# )src/gz %d_$(feed) %U/packages/%A/$(feed)';)))) \ | ||||||
|   | |||||||
| @@ -2,15 +2,11 @@ | |||||||
|  |  | ||||||
| LINUX_RELEASE?=1 | LINUX_RELEASE?=1 | ||||||
|  |  | ||||||
| LINUX_VERSION-3.18 = .71 | LINUX_VERSION-4.9 = .120 | ||||||
| LINUX_VERSION-4.4 = .121 | LINUX_VERSION-4.14 = .63 | ||||||
| LINUX_VERSION-4.9 = .111 |  | ||||||
| LINUX_VERSION-4.14 = .54 |  | ||||||
|  |  | ||||||
| LINUX_KERNEL_HASH-3.18.71 = 5abc9778ad44ce02ed6c8ab52ece8a21c6d20d21f6ed8a19287b4a38a50c1240 | LINUX_KERNEL_HASH-4.9.120 = d75af506865edc8145a344c4e73c3bb1000e6c9f1c3489b8dae47ca8f033fd91 | ||||||
| LINUX_KERNEL_HASH-4.4.121 = 44a88268b5088dc326b30c9b9133ac35a9a200b636b7268d08f32abeae6ca729 | LINUX_KERNEL_HASH-4.14.63 = cd2e52f0e7ba861afa91cf487b2f45e5174115870f256a1d65996647b7bcc6d3 | ||||||
| LINUX_KERNEL_HASH-4.9.111 = 5966558959dc580f163766f3fdefd7e57c01b2b45d51202d00b3807c253759dd |  | ||||||
| LINUX_KERNEL_HASH-4.14.54 = 451642ac28c539a91072f1fb83b1c061d6d44df870ddf5562400ade5e1c4b6c6 |  | ||||||
|  |  | ||||||
| remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1)))) | remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1)))) | ||||||
| sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1))))))) | sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1))))))) | ||||||
|   | |||||||
| @@ -51,7 +51,7 @@ else | |||||||
|   endif |   endif | ||||||
| endif | endif | ||||||
|  |  | ||||||
| ifneq ($(filter 3.18 4.4 4.9,$(KERNEL_PATCHVER)),) | ifneq ($(filter 4.9,$(KERNEL_PATCHVER)),) | ||||||
|   DEFAULT_PACKAGES.router:=$(filter-out kmod-ipt-offload,$(DEFAULT_PACKAGES.router)) |   DEFAULT_PACKAGES.router:=$(filter-out kmod-ipt-offload,$(DEFAULT_PACKAGES.router)) | ||||||
| endif | endif | ||||||
|  |  | ||||||
|   | |||||||
| @@ -25,13 +25,13 @@ PKG_CONFIG_DEPENDS += \ | |||||||
| sanitize = $(call tolower,$(subst _,-,$(subst $(space),-,$(1)))) | sanitize = $(call tolower,$(subst _,-,$(subst $(space),-,$(1)))) | ||||||
|  |  | ||||||
| VERSION_NUMBER:=$(call qstrip,$(CONFIG_VERSION_NUMBER)) | VERSION_NUMBER:=$(call qstrip,$(CONFIG_VERSION_NUMBER)) | ||||||
| VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),18.06.0) | VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),18.06.1) | ||||||
|  |  | ||||||
| VERSION_CODE:=$(call qstrip,$(CONFIG_VERSION_CODE)) | VERSION_CODE:=$(call qstrip,$(CONFIG_VERSION_CODE)) | ||||||
| VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),r7188-b0b5c64c22) | VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),r7258-5eb055306f) | ||||||
|  |  | ||||||
| VERSION_REPO:=$(call qstrip,$(CONFIG_VERSION_REPO)) | VERSION_REPO:=$(call qstrip,$(CONFIG_VERSION_REPO)) | ||||||
| VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),http://downloads.openwrt.org/releases/18.06.0) | VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),http://downloads.openwrt.org/releases/18.06.1) | ||||||
|  |  | ||||||
| VERSION_DIST:=$(call qstrip,$(CONFIG_VERSION_DIST)) | VERSION_DIST:=$(call qstrip,$(CONFIG_VERSION_DIST)) | ||||||
| VERSION_DIST:=$(if $(VERSION_DIST),$(VERSION_DIST),OpenWrt) | VERSION_DIST:=$(if $(VERSION_DIST),$(VERSION_DIST),OpenWrt) | ||||||
|   | |||||||
| @@ -1,7 +1,3 @@ | |||||||
| fwtool_pre_upgrade() { |  | ||||||
| 	fwtool -q -i /dev/null "$1" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| fwtool_check_image() { | fwtool_check_image() { | ||||||
| 	[ $# -gt 1 ] && return 1 | 	[ $# -gt 1 ] && return 1 | ||||||
|  |  | ||||||
|   | |||||||
| @@ -137,7 +137,6 @@ add_overlayfiles() { | |||||||
|  |  | ||||||
| # hooks | # hooks | ||||||
| sysupgrade_image_check="fwtool_check_image platform_check_image" | sysupgrade_image_check="fwtool_check_image platform_check_image" | ||||||
| sysupgrade_pre_upgrade="fwtool_pre_upgrade" |  | ||||||
|  |  | ||||||
| if [ $SAVE_OVERLAY = 1 ]; then | if [ $SAVE_OVERLAY = 1 ]; then | ||||||
| 	[ ! -d /overlay/upper/etc ] && { | 	[ ! -d /overlay/upper/etc ] && { | ||||||
| @@ -264,10 +263,8 @@ else | |||||||
| 	rm -f /tmp/sysupgrade.always.overwrite.bootdisk.partmap | 	rm -f /tmp/sysupgrade.always.overwrite.bootdisk.partmap | ||||||
| fi | fi | ||||||
|  |  | ||||||
| run_hooks "" $sysupgrade_pre_upgrade |  | ||||||
|  |  | ||||||
| install_bin /sbin/upgraded | install_bin /sbin/upgraded | ||||||
| v "Commencing upgrade. All shell sessions will be closed now." | v "Commencing upgrade. Closing all shell sessions." | ||||||
|  |  | ||||||
| COMMAND='. /lib/functions.sh; include /lib/upgrade; do_upgrade_stage2' | COMMAND='. /lib/functions.sh; include /lib/upgrade; do_upgrade_stage2' | ||||||
|  |  | ||||||
|   | |||||||
| @@ -183,7 +183,7 @@ if VERSIONOPT | |||||||
| 	config VERSION_REPO | 	config VERSION_REPO | ||||||
| 		string | 		string | ||||||
| 		prompt "Release repository" | 		prompt "Release repository" | ||||||
| 		default "http://downloads.openwrt.org/releases/18.06.0" | 		default "http://downloads.openwrt.org/releases/18.06.1" | ||||||
| 		help | 		help | ||||||
| 			This is the repository address embedded in the image, it defaults | 			This is the repository address embedded in the image, it defaults | ||||||
| 			to the trunk snapshot repo; the url may contain the following placeholders: | 			to the trunk snapshot repo; the url may contain the following placeholders: | ||||||
|   | |||||||
| @@ -8,12 +8,12 @@ | |||||||
| include $(TOPDIR)/rules.mk | include $(TOPDIR)/rules.mk | ||||||
|  |  | ||||||
| PKG_NAME:=amd64-microcode | PKG_NAME:=amd64-microcode | ||||||
| PKG_VERSION:=20171205 | PKG_VERSION:=20180524 | ||||||
| PKG_RELEASE:=1 | PKG_RELEASE:=1 | ||||||
|  |  | ||||||
| PKG_SOURCE:=amd64-microcode_3.$(PKG_VERSION).$(PKG_RELEASE).tar.xz | PKG_SOURCE:=amd64-microcode_3.$(PKG_VERSION).$(PKG_RELEASE).tar.xz | ||||||
| PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/non-free/a/amd64-microcode/ | PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/non-free/a/amd64-microcode/ | ||||||
| PKG_HASH:=a38bc072f535a3d3c1bf4e9e545197aa5114e979e94ef7e4a67e615df2f853a7 | PKG_HASH:=7c389c357c242e7161f6872bf4e12011a71e4c0683f06fb1bcfad650a78bf0a9 | ||||||
| PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-3.$(PKG_VERSION).$(PKG_RELEASE) | PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-3.$(PKG_VERSION).$(PKG_RELEASE) | ||||||
|  |  | ||||||
| PKG_LICENSE_FILE:=LICENSE.amd-ucode | PKG_LICENSE_FILE:=LICENSE.amd-ucode | ||||||
|   | |||||||
| @@ -8,12 +8,12 @@ | |||||||
| include $(TOPDIR)/rules.mk | include $(TOPDIR)/rules.mk | ||||||
|  |  | ||||||
| PKG_NAME:=intel-microcode | PKG_NAME:=intel-microcode | ||||||
| PKG_VERSION:=20180312 | PKG_VERSION:=20180703 | ||||||
| PKG_RELEASE:=1 | PKG_RELEASE:=2 | ||||||
|  |  | ||||||
| PKG_SOURCE:=intel-microcode_3.$(PKG_VERSION).$(PKG_RELEASE).tar.xz | PKG_SOURCE:=intel-microcode_3.$(PKG_VERSION).$(PKG_RELEASE).tar.xz | ||||||
| PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/non-free/i/intel-microcode/ | PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/non-free/i/intel-microcode/ | ||||||
| PKG_HASH:=6ccb295d23961c7b96a69280e30fdce939e1d905147b22b8428886b173812d52 | PKG_HASH:=26dfaa47100ce3d06f968edefa7539da10de7b96d5d8e26ee8174a040ee5cdae | ||||||
| PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-3.$(PKG_VERSION).$(PKG_RELEASE) | PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-3.$(PKG_VERSION).$(PKG_RELEASE) | ||||||
|  |  | ||||||
| PKG_BUILD_DEPENDS:=iucode-tool/host | PKG_BUILD_DEPENDS:=iucode-tool/host | ||||||
| @@ -36,14 +36,14 @@ endef | |||||||
|  |  | ||||||
| define Build/Compile | define Build/Compile | ||||||
| 	IUCODE_TOOL=$(STAGING_DIR)/../host/bin/iucode_tool $(MAKE) -C $(PKG_BUILD_DIR) | 	IUCODE_TOOL=$(STAGING_DIR)/../host/bin/iucode_tool $(MAKE) -C $(PKG_BUILD_DIR) | ||||||
| 	mkdir $(PKG_BUILD_DIR)/intel-ucode | 	mkdir $(PKG_BUILD_DIR)/intel-ucode-ipkg | ||||||
| 	$(STAGING_DIR)/../host/bin/iucode_tool -q \ | 	$(STAGING_DIR)/../host/bin/iucode_tool -q \ | ||||||
| 		--write-firmware=$(PKG_BUILD_DIR)/intel-ucode $(PKG_BUILD_DIR)/$(MICROCODE).bin | 		--write-firmware=$(PKG_BUILD_DIR)/intel-ucode-ipkg $(PKG_BUILD_DIR)/$(MICROCODE).bin | ||||||
| endef | endef | ||||||
|  |  | ||||||
| define Package/intel-microcode/install | define Package/intel-microcode/install | ||||||
| 	$(INSTALL_DIR) $(1)/lib/firmware/intel-ucode | 	$(INSTALL_DIR) $(1)/lib/firmware/intel-ucode | ||||||
| 	$(INSTALL_DATA) $(PKG_BUILD_DIR)/intel-ucode/* $(1)/lib/firmware/intel-ucode | 	$(INSTALL_DATA) $(PKG_BUILD_DIR)/intel-ucode-ipkg/* $(1)/lib/firmware/intel-ucode | ||||||
| endef | endef | ||||||
|  |  | ||||||
| $(eval $(call BuildPackage,intel-microcode)) | $(eval $(call BuildPackage,intel-microcode)) | ||||||
|   | |||||||
| @@ -434,11 +434,6 @@ static int __init nct5104d_gpio_init(void) | |||||||
| 	const char *board_vendor = dmi_get_system_info(DMI_BOARD_VENDOR); | 	const char *board_vendor = dmi_get_system_info(DMI_BOARD_VENDOR); | ||||||
| 	const char *board_name = dmi_get_system_info(DMI_BOARD_NAME); | 	const char *board_name = dmi_get_system_info(DMI_BOARD_NAME); | ||||||
|  |  | ||||||
|  	/* Make sure we only run on PC Engine APU boards */ |  | ||||||
| 	if (!board_name || !board_vendor || strcasecmp(board_vendor, "PC Engines") || strncasecmp(board_name, "apu", 3)) { |  | ||||||
| 		return -ENODEV; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if (nct5104d_find(0x2e, &sio) && | 	if (nct5104d_find(0x2e, &sio) && | ||||||
| 	    nct5104d_find(0x4e, &sio)) | 	    nct5104d_find(0x4e, &sio)) | ||||||
| 		return -ENODEV; | 		return -ENODEV; | ||||||
|   | |||||||
| @@ -331,18 +331,6 @@ static int __init gpio_apu2_init (void) | |||||||
| 	const char *board_vendor = dmi_get_system_info(DMI_BOARD_VENDOR); | 	const char *board_vendor = dmi_get_system_info(DMI_BOARD_VENDOR); | ||||||
| 	const char *board_name = dmi_get_system_info(DMI_BOARD_NAME); | 	const char *board_name = dmi_get_system_info(DMI_BOARD_NAME); | ||||||
|  |  | ||||||
| 	/* Match the device name/model */ |  | ||||||
| 	if (!board_name \ |  | ||||||
| 			|| !board_vendor \ |  | ||||||
| 			|| strcasecmp(board_vendor, "PC Engines") \ |  | ||||||
| 			|| (strcasecmp(board_name, "apu2") \ |  | ||||||
| 				&& strcasecmp(board_name, "apu3") \ |  | ||||||
| 				&& strcasecmp(board_name, "PC Engines apu2") \ |  | ||||||
| 				&& strcasecmp(board_name, "PC Engines apu3"))) { |  | ||||||
| 		err = -ENODEV; |  | ||||||
| 		goto exit; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	pr_info ("%s: load APU2/LED GPIO driver module\n", DEVNAME); | 	pr_info ("%s: load APU2/LED GPIO driver module\n", DEVNAME); | ||||||
|  |  | ||||||
| 	err = platform_driver_register (&gpio_apu2_driver); | 	err = platform_driver_register (&gpio_apu2_driver); | ||||||
|   | |||||||
| @@ -14,7 +14,7 @@ PKG_FLAGS:=hold | |||||||
| PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/packages | PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/packages | ||||||
| SCAN_DEPS=modules/*.mk $(TOPDIR)/target/linux/*/modules.mk $(TOPDIR)/include/netfilter.mk | SCAN_DEPS=modules/*.mk $(TOPDIR)/target/linux/*/modules.mk $(TOPDIR)/include/netfilter.mk | ||||||
|  |  | ||||||
| PKG_LICENSE:=GPLv2 | PKG_LICENSE:=GPL-2.0 | ||||||
| PKG_LICENSE_FILES:= | PKG_LICENSE_FILES:= | ||||||
|  |  | ||||||
| export SHELL:=/bin/sh | export SHELL:=/bin/sh | ||||||
|   | |||||||
| @@ -15,9 +15,9 @@ PKG_LICENSE_FILES:= | |||||||
|  |  | ||||||
| PKG_SOURCE_URL:=https://github.com/kaloz/mwlwifi | PKG_SOURCE_URL:=https://github.com/kaloz/mwlwifi | ||||||
| PKG_SOURCE_PROTO:=git | PKG_SOURCE_PROTO:=git | ||||||
| PKG_SOURCE_DATE:=2018-03-30 | PKG_SOURCE_DATE:=2018-06-15 | ||||||
| PKG_SOURCE_VERSION:=fcaea79ad33d6ae3c381d9e96bf77d6870ca8e79 | PKG_SOURCE_VERSION:=8683de8e97a31fe01cfd4e63ef6e9867b50aadae | ||||||
| PKG_MIRROR_HASH:=1c0fa04ca80939038139dd50a50d9dc0d879b7cb594770282e3ec0008a479452 | PKG_MIRROR_HASH:=69cd9f7c79564e444edf423133b13dcfbba9f66c051516606049087fa1973a20 | ||||||
|  |  | ||||||
| PKG_MAINTAINER:=Imre Kaloz <kaloz@openwrt.org> | PKG_MAINTAINER:=Imre Kaloz <kaloz@openwrt.org> | ||||||
| PKG_BUILD_PARALLEL:=1 | PKG_BUILD_PARALLEL:=1 | ||||||
| @@ -27,7 +27,7 @@ include $(INCLUDE_DIR)/package.mk | |||||||
|  |  | ||||||
| define KernelPackage/mwlwifi | define KernelPackage/mwlwifi | ||||||
|   SUBMENU:=Wireless Drivers |   SUBMENU:=Wireless Drivers | ||||||
|   TITLE:=Marvell 88W8864/88W8897/88W8964 wireless driver |   TITLE:=Marvell 88W8864/88W8897/88W8964/88W8997 wireless driver | ||||||
|   DEPENDS:=+kmod-mac80211 +@DRIVER_11N_SUPPORT +@DRIVER_11AC_SUPPORT +@DRIVER_11W_SUPPORT @PCI_SUPPORT @TARGET_mvebu |   DEPENDS:=+kmod-mac80211 +@DRIVER_11N_SUPPORT +@DRIVER_11AC_SUPPORT +@DRIVER_11W_SUPPORT @PCI_SUPPORT @TARGET_mvebu | ||||||
|   FILES:=$(PKG_BUILD_DIR)/mwlwifi.ko |   FILES:=$(PKG_BUILD_DIR)/mwlwifi.ko | ||||||
|   AUTOLOAD:=$(call AutoLoad,50,mwlwifi) |   AUTOLOAD:=$(call AutoLoad,50,mwlwifi) | ||||||
| @@ -87,7 +87,16 @@ define Package/mwlwifi-firmware-88w8964/install | |||||||
| 	$(call Package/mwlwifi-firmware/install,$(1),88W8964.bin) | 	$(call Package/mwlwifi-firmware/install,$(1),88W8964.bin) | ||||||
| endef | endef | ||||||
|  |  | ||||||
|  | define Package/mwlwifi-firmware-88w8997 | ||||||
|  | $(call Package/mwlwifi-firmware-default,88W8997) | ||||||
|  | endef | ||||||
|  |  | ||||||
|  | define Package/mwlwifi-firmware-88w8997/install | ||||||
|  | 	$(call Package/mwlwifi-firmware/install,$(1),88W8997.bin) | ||||||
|  | endef | ||||||
|  |  | ||||||
| $(eval $(call KernelPackage,mwlwifi)) | $(eval $(call KernelPackage,mwlwifi)) | ||||||
| $(eval $(call BuildPackage,mwlwifi-firmware-88w8864)) | $(eval $(call BuildPackage,mwlwifi-firmware-88w8864)) | ||||||
| $(eval $(call BuildPackage,mwlwifi-firmware-88w8897)) | $(eval $(call BuildPackage,mwlwifi-firmware-88w8897)) | ||||||
| $(eval $(call BuildPackage,mwlwifi-firmware-88w8964)) | $(eval $(call BuildPackage,mwlwifi-firmware-88w8964)) | ||||||
|  | $(eval $(call BuildPackage,mwlwifi-firmware-88w8997)) | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ PKG_SOURCE_PROTO:=git | |||||||
| PKG_SOURCE_URL=$(PROJECT_GIT)/project/libubox.git | PKG_SOURCE_URL=$(PROJECT_GIT)/project/libubox.git | ||||||
| PKG_SOURCE_DATE:=2018-07-25 | PKG_SOURCE_DATE:=2018-07-25 | ||||||
| PKG_SOURCE_VERSION:=c83a84afbef2b24f960ddeda0b5e2ab01fba6981 | PKG_SOURCE_VERSION:=c83a84afbef2b24f960ddeda0b5e2ab01fba6981 | ||||||
| PKG_MIRROR_HASH:=9ab6dc6e300cb56ed503425c9fe060a154bcab8067da5615c0428c968947484f | PKG_MIRROR_HASH:=4a9594d2ae3706174d182a21fe815f1d18c20beca6593707cc757994975dc670 | ||||||
| CMAKE_INSTALL:=1 | CMAKE_INSTALL:=1 | ||||||
|  |  | ||||||
| PKG_LICENSE:=ISC | PKG_LICENSE:=ISC | ||||||
|   | |||||||
| @@ -8,13 +8,13 @@ | |||||||
| include $(TOPDIR)/rules.mk | include $(TOPDIR)/rules.mk | ||||||
|  |  | ||||||
| PKG_NAME:=mbedtls | PKG_NAME:=mbedtls | ||||||
| PKG_VERSION:=2.8.0 | PKG_VERSION:=2.12.0 | ||||||
| PKG_RELEASE:=1 | PKG_RELEASE:=1 | ||||||
| PKG_USE_MIPS16:=0 | PKG_USE_MIPS16:=0 | ||||||
|  |  | ||||||
| PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-gpl.tgz | PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-gpl.tgz | ||||||
| PKG_SOURCE_URL:=https://tls.mbed.org/download/ | PKG_SOURCE_URL:=https://tls.mbed.org/download/ | ||||||
| PKG_HASH:=649eb27187154590edda52943a7f468e740ec08807e5bf68ff45f4e8ffd68923 | PKG_HASH:=8661d19a896a5a7a232ed01ac7f05cf0ec3514798f18076c2c9ef965fbeb5a28 | ||||||
|  |  | ||||||
| PKG_BUILD_PARALLEL:=1 | PKG_BUILD_PARALLEL:=1 | ||||||
| PKG_LICENSE:=GPL-2.0+ | PKG_LICENSE:=GPL-2.0+ | ||||||
|   | |||||||
| @@ -1,6 +1,23 @@ | |||||||
| --- a/include/mbedtls/config.h | --- a/include/mbedtls/config.h | ||||||
| +++ b/include/mbedtls/config.h | +++ b/include/mbedtls/config.h | ||||||
| @@ -566,17 +566,17 @@ | @@ -548,14 +548,14 @@ | ||||||
|  |   * | ||||||
|  |   * Enable Output Feedback mode (OFB) for symmetric ciphers. | ||||||
|  |   */ | ||||||
|  | -#define MBEDTLS_CIPHER_MODE_OFB | ||||||
|  | +//#define MBEDTLS_CIPHER_MODE_OFB | ||||||
|  |   | ||||||
|  |  /** | ||||||
|  |   * \def MBEDTLS_CIPHER_MODE_XTS | ||||||
|  |   * | ||||||
|  |   * Enable Xor-encrypt-xor with ciphertext stealing mode (XTS) for AES. | ||||||
|  |   */ | ||||||
|  | -#define MBEDTLS_CIPHER_MODE_XTS | ||||||
|  | +//#define MBEDTLS_CIPHER_MODE_XTS | ||||||
|  |   | ||||||
|  |  /** | ||||||
|  |   * \def MBEDTLS_CIPHER_NULL_CIPHER | ||||||
|  | @@ -645,19 +645,19 @@ | ||||||
|   * |   * | ||||||
|   * Comment macros to disable the curve and functions for it |   * Comment macros to disable the curve and functions for it | ||||||
|   */ |   */ | ||||||
| @@ -24,19 +41,21 @@ | |||||||
| +//#define MBEDTLS_ECP_DP_BP384R1_ENABLED | +//#define MBEDTLS_ECP_DP_BP384R1_ENABLED | ||||||
| +//#define MBEDTLS_ECP_DP_BP512R1_ENABLED | +//#define MBEDTLS_ECP_DP_BP512R1_ENABLED | ||||||
|  #define MBEDTLS_ECP_DP_CURVE25519_ENABLED |  #define MBEDTLS_ECP_DP_CURVE25519_ENABLED | ||||||
|  | -#define MBEDTLS_ECP_DP_CURVE448_ENABLED | ||||||
|  | +//#define MBEDTLS_ECP_DP_CURVE448_ENABLED | ||||||
|   |   | ||||||
|  /** |  /** | ||||||
| @@ -601,8 +601,8 @@ |   * \def MBEDTLS_ECP_NIST_OPTIM | ||||||
|   * Requires: MBEDTLS_HMAC_DRBG_C | @@ -682,7 +682,7 @@ | ||||||
|   * |   * | ||||||
|   * Comment this macro to disable deterministic ECDSA. |   * Comment this macro to disable deterministic ECDSA. | ||||||
| - */ |   */ | ||||||
|  #define MBEDTLS_ECDSA_DETERMINISTIC | -#define MBEDTLS_ECDSA_DETERMINISTIC | ||||||
| + */ | +//#define MBEDTLS_ECDSA_DETERMINISTIC | ||||||
|   |   | ||||||
|  /** |  /** | ||||||
|   * \def MBEDTLS_KEY_EXCHANGE_PSK_ENABLED |   * \def MBEDTLS_KEY_EXCHANGE_PSK_ENABLED | ||||||
| @@ -655,7 +655,7 @@ | @@ -735,7 +735,7 @@ | ||||||
|   *             See dhm.h for more details. |   *             See dhm.h for more details. | ||||||
|   * |   * | ||||||
|   */ |   */ | ||||||
| @@ -45,17 +64,16 @@ | |||||||
|   |   | ||||||
|  /** |  /** | ||||||
|   * \def MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED |   * \def MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED | ||||||
| @@ -674,8 +674,8 @@ | @@ -755,7 +755,7 @@ | ||||||
|   *      MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 |  | ||||||
|   *      MBEDTLS_TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA |   *      MBEDTLS_TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA | ||||||
|   *      MBEDTLS_TLS_ECDHE_PSK_WITH_RC4_128_SHA |   *      MBEDTLS_TLS_ECDHE_PSK_WITH_RC4_128_SHA | ||||||
| - */ |   */ | ||||||
|  #define MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED | -#define MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED | ||||||
| + */ | +//#define MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED | ||||||
|   |   | ||||||
|  /** |  /** | ||||||
|   * \def MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED |   * \def MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED | ||||||
| @@ -700,7 +700,7 @@ | @@ -780,7 +780,7 @@ | ||||||
|   *      MBEDTLS_TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA |   *      MBEDTLS_TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA | ||||||
|   *      MBEDTLS_TLS_RSA_PSK_WITH_RC4_128_SHA |   *      MBEDTLS_TLS_RSA_PSK_WITH_RC4_128_SHA | ||||||
|   */ |   */ | ||||||
| @@ -64,7 +82,7 @@ | |||||||
|   |   | ||||||
|  /** |  /** | ||||||
|   * \def MBEDTLS_KEY_EXCHANGE_RSA_ENABLED |   * \def MBEDTLS_KEY_EXCHANGE_RSA_ENABLED | ||||||
| @@ -834,7 +834,7 @@ | @@ -914,7 +914,7 @@ | ||||||
|   *      MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 |   *      MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 | ||||||
|   *      MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 |   *      MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 | ||||||
|   */ |   */ | ||||||
| @@ -73,7 +91,7 @@ | |||||||
|   |   | ||||||
|  /** |  /** | ||||||
|   * \def MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED |   * \def MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED | ||||||
| @@ -858,7 +858,7 @@ | @@ -938,7 +938,7 @@ | ||||||
|   *      MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256 |   *      MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256 | ||||||
|   *      MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384 |   *      MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384 | ||||||
|   */ |   */ | ||||||
| @@ -82,7 +100,7 @@ | |||||||
|   |   | ||||||
|  /** |  /** | ||||||
|   * \def MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED |   * \def MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED | ||||||
| @@ -962,7 +962,7 @@ | @@ -1042,7 +1042,7 @@ | ||||||
|   * This option is only useful if both MBEDTLS_SHA256_C and |   * This option is only useful if both MBEDTLS_SHA256_C and | ||||||
|   * MBEDTLS_SHA512_C are defined. Otherwise the available hash module is used. |   * MBEDTLS_SHA512_C are defined. Otherwise the available hash module is used. | ||||||
|   */ |   */ | ||||||
| @@ -91,7 +109,7 @@ | |||||||
|   |   | ||||||
|  /** |  /** | ||||||
|   * \def MBEDTLS_ENTROPY_NV_SEED |   * \def MBEDTLS_ENTROPY_NV_SEED | ||||||
| @@ -1057,14 +1057,14 @@ | @@ -1137,14 +1137,14 @@ | ||||||
|   * Uncomment this macro to disable the use of CRT in RSA. |   * Uncomment this macro to disable the use of CRT in RSA. | ||||||
|   * |   * | ||||||
|   */ |   */ | ||||||
| @@ -108,7 +126,7 @@ | |||||||
|   |   | ||||||
|  /** |  /** | ||||||
|   * \def MBEDTLS_SHA256_SMALLER |   * \def MBEDTLS_SHA256_SMALLER | ||||||
| @@ -1080,7 +1080,7 @@ | @@ -1160,7 +1160,7 @@ | ||||||
|   * |   * | ||||||
|   * Uncomment to enable the smaller implementation of SHA256. |   * Uncomment to enable the smaller implementation of SHA256. | ||||||
|   */ |   */ | ||||||
| @@ -117,7 +135,7 @@ | |||||||
|   |   | ||||||
|  /** |  /** | ||||||
|   * \def MBEDTLS_SSL_ALL_ALERT_MESSAGES |   * \def MBEDTLS_SSL_ALL_ALERT_MESSAGES | ||||||
| @@ -1207,7 +1207,7 @@ | @@ -1298,7 +1298,7 @@ | ||||||
|   *          configuration of this extension). |   *          configuration of this extension). | ||||||
|   * |   * | ||||||
|   */ |   */ | ||||||
| @@ -126,17 +144,16 @@ | |||||||
|   |   | ||||||
|  /** |  /** | ||||||
|   * \def MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO |   * \def MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO | ||||||
| @@ -1381,8 +1381,8 @@ | @@ -1473,7 +1473,7 @@ | ||||||
|   * callbacks are provided by MBEDTLS_SSL_TICKET_C. |  | ||||||
|   * |   * | ||||||
|   * Comment this macro to disable support for SSL session tickets |   * Comment this macro to disable support for SSL session tickets | ||||||
| - */ |   */ | ||||||
|  #define MBEDTLS_SSL_SESSION_TICKETS | -#define MBEDTLS_SSL_SESSION_TICKETS | ||||||
| + */ | +//#define MBEDTLS_SSL_SESSION_TICKETS | ||||||
|   |   | ||||||
|  /** |  /** | ||||||
|   * \def MBEDTLS_SSL_EXPORT_KEYS |   * \def MBEDTLS_SSL_EXPORT_KEYS | ||||||
| @@ -1412,7 +1412,7 @@ | @@ -1503,7 +1503,7 @@ | ||||||
|   * |   * | ||||||
|   * Comment this macro to disable support for truncated HMAC in SSL |   * Comment this macro to disable support for truncated HMAC in SSL | ||||||
|   */ |   */ | ||||||
| @@ -145,17 +162,16 @@ | |||||||
|   |   | ||||||
|  /** |  /** | ||||||
|   * \def MBEDTLS_SSL_TRUNCATED_HMAC_COMPAT |   * \def MBEDTLS_SSL_TRUNCATED_HMAC_COMPAT | ||||||
| @@ -1470,8 +1470,8 @@ | @@ -1562,7 +1562,7 @@ | ||||||
|   * Requires: MBEDTLS_VERSION_C |  | ||||||
|   * |   * | ||||||
|   * Comment this to disable run-time checking and save ROM space |   * Comment this to disable run-time checking and save ROM space | ||||||
| - */ |   */ | ||||||
|  #define MBEDTLS_VERSION_FEATURES | -#define MBEDTLS_VERSION_FEATURES | ||||||
| + */ | +//#define MBEDTLS_VERSION_FEATURES | ||||||
|   |   | ||||||
|  /** |  /** | ||||||
|   * \def MBEDTLS_X509_ALLOW_EXTENSIONS_NON_V3 |   * \def MBEDTLS_X509_ALLOW_EXTENSIONS_NON_V3 | ||||||
| @@ -1801,7 +1801,7 @@ | @@ -1892,7 +1892,7 @@ | ||||||
|   *      MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256 |   *      MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256 | ||||||
|   *      MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256 |   *      MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256 | ||||||
|   */ |   */ | ||||||
| @@ -163,8 +179,8 @@ | |||||||
| +//#define MBEDTLS_CAMELLIA_C | +//#define MBEDTLS_CAMELLIA_C | ||||||
|   |   | ||||||
|  /** |  /** | ||||||
|   * \def MBEDTLS_CCM_C |   * \def MBEDTLS_ARIA_C | ||||||
| @@ -1815,7 +1815,7 @@ | @@ -1958,7 +1958,7 @@ | ||||||
|   * This module enables the AES-CCM ciphersuites, if other requisites are |   * This module enables the AES-CCM ciphersuites, if other requisites are | ||||||
|   * enabled as well. |   * enabled as well. | ||||||
|   */ |   */ | ||||||
| @@ -173,16 +189,34 @@ | |||||||
|   |   | ||||||
|  /** |  /** | ||||||
|   * \def MBEDTLS_CERTS_C |   * \def MBEDTLS_CERTS_C | ||||||
| @@ -1827,7 +1827,7 @@ | @@ -1970,7 +1970,7 @@ | ||||||
|   * |   * | ||||||
|   * This module is used for testing (ssl_client/server). |   * This module is used for testing (ssl_client/server). | ||||||
|   */ |   */ | ||||||
| -#define MBEDTLS_CERTS_C | -#define MBEDTLS_CERTS_C | ||||||
| +//#define MBEDTLS_CERTS_C | +//#define MBEDTLS_CERTS_C | ||||||
|   |   | ||||||
|  |  /** | ||||||
|  |   * \def MBEDTLS_CHACHA20_C | ||||||
|  | @@ -1979,7 +1979,7 @@ | ||||||
|  |   * | ||||||
|  |   * Module:  library/chacha20.c | ||||||
|  |   */ | ||||||
|  | -#define MBEDTLS_CHACHA20_C | ||||||
|  | +//#define MBEDTLS_CHACHA20_C | ||||||
|  |   | ||||||
|  |  /** | ||||||
|  |   * \def MBEDTLS_CHACHAPOLY_C | ||||||
|  | @@ -1990,7 +1990,7 @@ | ||||||
|  |   * | ||||||
|  |   * This module requires: MBEDTLS_CHACHA20_C, MBEDTLS_POLY1305_C | ||||||
|  |   */ | ||||||
|  | -#define MBEDTLS_CHACHAPOLY_C | ||||||
|  | +//#define MBEDTLS_CHACHAPOLY_C | ||||||
|  |   | ||||||
|  /** |  /** | ||||||
|   * \def MBEDTLS_CIPHER_C |   * \def MBEDTLS_CIPHER_C | ||||||
| @@ -1880,7 +1880,7 @@ | @@ -2043,7 +2043,7 @@ | ||||||
|   * |   * | ||||||
|   * This module provides debugging functions. |   * This module provides debugging functions. | ||||||
|   */ |   */ | ||||||
| @@ -191,7 +225,7 @@ | |||||||
|   |   | ||||||
|  /** |  /** | ||||||
|   * \def MBEDTLS_DES_C |   * \def MBEDTLS_DES_C | ||||||
| @@ -1909,7 +1909,7 @@ | @@ -2072,7 +2072,7 @@ | ||||||
|   * \warning   DES is considered a weak cipher and its use constitutes a |   * \warning   DES is considered a weak cipher and its use constitutes a | ||||||
|   *            security risk. We recommend considering stronger ciphers instead. |   *            security risk. We recommend considering stronger ciphers instead. | ||||||
|   */ |   */ | ||||||
| @@ -200,17 +234,43 @@ | |||||||
|   |   | ||||||
|  /** |  /** | ||||||
|   * \def MBEDTLS_DHM_C |   * \def MBEDTLS_DHM_C | ||||||
| @@ -2070,8 +2070,8 @@ | @@ -2235,7 +2235,7 @@ | ||||||
|   * Requires: MBEDTLS_MD_C |   * This module adds support for the Hashed Message Authentication Code | ||||||
|   * |   * (HMAC)-based key derivation function (HKDF). | ||||||
|   * Uncomment to enable the HMAC_DRBG random number geerator. |   */ | ||||||
| - */ | -#define MBEDTLS_HKDF_C | ||||||
|  #define MBEDTLS_HMAC_DRBG_C | +//#define MBEDTLS_HKDF_C | ||||||
| + */ |  | ||||||
|   |   | ||||||
|  /** |  /** | ||||||
|   * \def MBEDTLS_MD_C |   * \def MBEDTLS_HMAC_DRBG_C | ||||||
| @@ -2365,7 +2365,7 @@ | @@ -2249,7 +2249,7 @@ | ||||||
|  |   * | ||||||
|  |   * Uncomment to enable the HMAC_DRBG random number geerator. | ||||||
|  |   */ | ||||||
|  | -#define MBEDTLS_HMAC_DRBG_C | ||||||
|  | +//#define MBEDTLS_HMAC_DRBG_C | ||||||
|  |   | ||||||
|  |  /** | ||||||
|  |   * \def MBEDTLS_NIST_KW_C | ||||||
|  | @@ -2545,7 +2545,7 @@ | ||||||
|  |   * | ||||||
|  |   * This module enables abstraction of common (libc) functions. | ||||||
|  |   */ | ||||||
|  | -#define MBEDTLS_PLATFORM_C | ||||||
|  | +//#define MBEDTLS_PLATFORM_C | ||||||
|  |   | ||||||
|  |  /** | ||||||
|  |   * \def MBEDTLS_POLY1305_C | ||||||
|  | @@ -2555,7 +2555,7 @@ | ||||||
|  |   * Module:  library/poly1305.c | ||||||
|  |   * Caller:  library/chachapoly.c | ||||||
|  |   */ | ||||||
|  | -#define MBEDTLS_POLY1305_C | ||||||
|  | +//#define MBEDTLS_POLY1305_C | ||||||
|  |   | ||||||
|  |  /** | ||||||
|  |   * \def MBEDTLS_RIPEMD160_C | ||||||
|  | @@ -2566,7 +2566,7 @@ | ||||||
|   * Caller:  library/md.c |   * Caller:  library/md.c | ||||||
|   * |   * | ||||||
|   */ |   */ | ||||||
| @@ -219,37 +279,25 @@ | |||||||
|   |   | ||||||
|  /** |  /** | ||||||
|   * \def MBEDTLS_RSA_C |   * \def MBEDTLS_RSA_C | ||||||
| @@ -2449,8 +2449,8 @@ | @@ -2673,7 +2673,7 @@ | ||||||
|   * Caller: |  | ||||||
|   * |  | ||||||
|   * Requires: MBEDTLS_SSL_CACHE_C |  | ||||||
| - */ |  | ||||||
|  #define MBEDTLS_SSL_CACHE_C |  | ||||||
| + */ |  | ||||||
|   |  | ||||||
|  /** |  | ||||||
|   * \def MBEDTLS_SSL_COOKIE_C |  | ||||||
| @@ -2471,8 +2471,8 @@ |  | ||||||
|   * Caller: |  | ||||||
|   * |   * | ||||||
|   * Requires: MBEDTLS_CIPHER_C |   * Requires: MBEDTLS_CIPHER_C | ||||||
| - */ |   */ | ||||||
|  #define MBEDTLS_SSL_TICKET_C | -#define MBEDTLS_SSL_TICKET_C | ||||||
| + */ | +//#define MBEDTLS_SSL_TICKET_C | ||||||
|   |   | ||||||
|  /** |  /** | ||||||
|   * \def MBEDTLS_SSL_CLI_C |   * \def MBEDTLS_SSL_CLI_C | ||||||
| @@ -2571,8 +2571,8 @@ | @@ -2773,7 +2773,7 @@ | ||||||
|   * Module:  library/version.c |  | ||||||
|   * |   * | ||||||
|   * This module provides run-time version information. |   * This module provides run-time version information. | ||||||
| - */ |   */ | ||||||
|  #define MBEDTLS_VERSION_C | -#define MBEDTLS_VERSION_C | ||||||
| + */ | +//#define MBEDTLS_VERSION_C | ||||||
|   |   | ||||||
|  /** |  /** | ||||||
|   * \def MBEDTLS_X509_USE_C |   * \def MBEDTLS_X509_USE_C | ||||||
| @@ -2682,7 +2682,7 @@ | @@ -2883,7 +2883,7 @@ | ||||||
|   * Module:  library/xtea.c |   * Module:  library/xtea.c | ||||||
|   * Caller: |   * Caller: | ||||||
|   */ |   */ | ||||||
|   | |||||||
| @@ -0,0 +1,34 @@ | |||||||
|  | --- a/library/CMakeLists.txt | ||||||
|  | +++ b/library/CMakeLists.txt | ||||||
|  | @@ -159,7 +159,7 @@ endif(USE_STATIC_MBEDTLS_LIBRARY) | ||||||
|  |   | ||||||
|  |  if(USE_SHARED_MBEDTLS_LIBRARY) | ||||||
|  |      add_library(mbedcrypto SHARED ${src_crypto}) | ||||||
|  | -    set_target_properties(mbedcrypto PROPERTIES VERSION 2.12.0 SOVERSION 3) | ||||||
|  | +    set_target_properties(mbedcrypto PROPERTIES VERSION 2.12.0 SOVERSION 1) | ||||||
|  |      target_link_libraries(mbedcrypto ${libs}) | ||||||
|  |   | ||||||
|  |      add_library(mbedx509 SHARED ${src_x509}) | ||||||
|  | @@ -167,7 +167,7 @@ if(USE_SHARED_MBEDTLS_LIBRARY) | ||||||
|  |      target_link_libraries(mbedx509 ${libs} mbedcrypto) | ||||||
|  |   | ||||||
|  |      add_library(mbedtls SHARED ${src_tls}) | ||||||
|  | -    set_target_properties(mbedtls PROPERTIES VERSION 2.12.0 SOVERSION 11) | ||||||
|  | +    set_target_properties(mbedtls PROPERTIES VERSION 2.12.0 SOVERSION 10) | ||||||
|  |      target_link_libraries(mbedtls ${libs} mbedx509) | ||||||
|  |   | ||||||
|  |      install(TARGETS mbedtls mbedx509 mbedcrypto | ||||||
|  | --- a/library/Makefile | ||||||
|  | +++ b/library/Makefile | ||||||
|  | @@ -35,9 +35,9 @@ LOCAL_CFLAGS += -fPIC -fpic | ||||||
|  |  endif | ||||||
|  |  endif | ||||||
|  |   | ||||||
|  | -SOEXT_TLS=so.11 | ||||||
|  | +SOEXT_TLS=so.10 | ||||||
|  |  SOEXT_X509=so.0 | ||||||
|  | -SOEXT_CRYPTO=so.3 | ||||||
|  | +SOEXT_CRYPTO=so.1 | ||||||
|  |   | ||||||
|  |  # Set AR_DASH= (empty string) to use an ar implentation that does not accept | ||||||
|  |  # the - prefix for command line options (e.g. llvm-ar) | ||||||
| @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk | |||||||
|  |  | ||||||
| PKG_NAME:=openssl | PKG_NAME:=openssl | ||||||
| PKG_BASE:=1.0.2 | PKG_BASE:=1.0.2 | ||||||
| PKG_BUGFIX:=o | PKG_BUGFIX:=p | ||||||
| PKG_VERSION:=$(PKG_BASE)$(PKG_BUGFIX) | PKG_VERSION:=$(PKG_BASE)$(PKG_BUGFIX) | ||||||
| PKG_RELEASE:=1 | PKG_RELEASE:=1 | ||||||
| PKG_USE_MIPS16:=0 | PKG_USE_MIPS16:=0 | ||||||
| @@ -24,7 +24,7 @@ PKG_SOURCE_URL:= \ | |||||||
| 	http://gd.tuwien.ac.at/infosys/security/openssl/source/ \ | 	http://gd.tuwien.ac.at/infosys/security/openssl/source/ \ | ||||||
| 	http://www.openssl.org/source/ \ | 	http://www.openssl.org/source/ \ | ||||||
| 	http://www.openssl.org/source/old/$(PKG_BASE)/ | 	http://www.openssl.org/source/old/$(PKG_BASE)/ | ||||||
| PKG_HASH:=ec3f5c9714ba0fd45cb4e087301eb1336c317e0d20b575a125050470e8089e4d | PKG_HASH:=50a98e07b1a89eb8f6a99477f262df71c6fa7bef77df4dc83025a2845c827d00 | ||||||
|  |  | ||||||
| PKG_LICENSE:=OpenSSL | PKG_LICENSE:=OpenSSL | ||||||
| PKG_LICENSE_FILES:=LICENSE | PKG_LICENSE_FILES:=LICENSE | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| --- a/Configure | --- a/Configure | ||||||
| +++ b/Configure | +++ b/Configure | ||||||
| @@ -2136,6 +2136,11 @@ EOF | @@ -2144,6 +2144,11 @@ EOF | ||||||
|  	close(OUT); |  	close(OUT); | ||||||
|    } |    } | ||||||
|     |     | ||||||
|   | |||||||
| @@ -173,7 +173,7 @@ | |||||||
|   |   | ||||||
|  apps: |  apps: | ||||||
|  	@(cd ..; $(MAKE) DIRS=apps all) |  	@(cd ..; $(MAKE) DIRS=apps all) | ||||||
| @@ -586,7 +586,7 @@ $(DTLSTEST)$(EXE_EXT): $(DTLSTEST).o ssl | @@ -593,7 +593,7 @@ $(DTLSTEST)$(EXE_EXT): $(DTLSTEST).o ssl | ||||||
|  #	fi |  #	fi | ||||||
|   |   | ||||||
|  dummytest$(EXE_EXT): dummytest.o $(DLIBCRYPTO) |  dummytest$(EXE_EXT): dummytest.o $(DLIBCRYPTO) | ||||||
|   | |||||||
| @@ -5,9 +5,9 @@ PKG_RELEASE=1 | |||||||
|  |  | ||||||
| PKG_SOURCE_PROTO:=git | PKG_SOURCE_PROTO:=git | ||||||
| PKG_SOURCE_URL=$(PROJECT_GIT)/project/uclient.git | PKG_SOURCE_URL=$(PROJECT_GIT)/project/uclient.git | ||||||
| PKG_SOURCE_DATE:=2017-11-02 | PKG_SOURCE_DATE:=2018-08-03 | ||||||
| PKG_SOURCE_VERSION:=4b87d83160fec70d50b7fcd736a8c538c28a016c | PKG_SOURCE_VERSION:=ae1c656ff041c6f1ccb37b070fa261e0d71f2b12 | ||||||
| PKG_MIRROR_HASH:=4bbb4d5f295ebdcd67fec87a6794168bea2176a42cb2907c47d8566fb33dafb3 | PKG_MIRROR_HASH:=e88c92f880d3c1cf4162f62c4eeb8986baa8d73772e51eed3a60a8346aeb1b7c | ||||||
| CMAKE_INSTALL:=1 | CMAKE_INSTALL:=1 | ||||||
|  |  | ||||||
| PKG_BUILD_DEPENDS:=ustream-ssl | PKG_BUILD_DEPENDS:=ustream-ssl | ||||||
|   | |||||||
| @@ -1,13 +1,13 @@ | |||||||
| include $(TOPDIR)/rules.mk | include $(TOPDIR)/rules.mk | ||||||
|  |  | ||||||
| PKG_NAME:=ustream-ssl | PKG_NAME:=ustream-ssl | ||||||
| PKG_RELEASE:=3 | PKG_RELEASE:=1 | ||||||
|  |  | ||||||
| PKG_SOURCE_PROTO:=git | PKG_SOURCE_PROTO:=git | ||||||
| PKG_SOURCE_URL=$(PROJECT_GIT)/project/ustream-ssl.git | PKG_SOURCE_URL=$(PROJECT_GIT)/project/ustream-ssl.git | ||||||
| PKG_SOURCE_DATE:=2018-04-30 | PKG_SOURCE_DATE:=2018-05-22 | ||||||
| PKG_SOURCE_VERSION:=527e7002d0429465bd49c0c0d416ef22fbf5ae86 | PKG_SOURCE_VERSION:=5322f9db23b69fdc2b4760a6cfd67848a11818a4 | ||||||
| PKG_MIRROR_HASH:=b0b4219730a369741a192a67d4fbf7328bd62df8ae4f0d0e3084461e3bbaba54 | PKG_MIRROR_HASH:=c943f6e603b1309b33fd276acddffb33a171b6370455b6c21200897012e42d05 | ||||||
| CMAKE_INSTALL:=1 | CMAKE_INSTALL:=1 | ||||||
|  |  | ||||||
| PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_SOURCE_SUBDIR) | PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_SOURCE_SUBDIR) | ||||||
|   | |||||||
| @@ -5,9 +5,9 @@ PKG_RELEASE:=1 | |||||||
|  |  | ||||||
| PKG_SOURCE_PROTO:=git | PKG_SOURCE_PROTO:=git | ||||||
| PKG_SOURCE_URL=$(PROJECT_GIT)/project/netifd.git | PKG_SOURCE_URL=$(PROJECT_GIT)/project/netifd.git | ||||||
| PKG_SOURCE_DATE:=2018-05-30 | PKG_SOURCE_DATE:=2018-07-30 | ||||||
| PKG_SOURCE_VERSION:=a580028dae5b7bebcc14c240fe7dac31cbd89355 | PKG_SOURCE_VERSION:=a0a1e52eb300b574098ae18fc7e6849ff50c2e5e | ||||||
| PKG_MIRROR_HASH:=41a645bc322c6a444bcc74cd099af6aead30924594aecf4e433204f8524a470e | PKG_MIRROR_HASH:=f2a556e0de1e04d4e7b6ca30d3e7c65710659201fc81efb10420cd895d72a307 | ||||||
| PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name> | PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name> | ||||||
|  |  | ||||||
| PKG_LICENSE:=GPL-2.0 | PKG_LICENSE:=GPL-2.0 | ||||||
|   | |||||||
| @@ -148,6 +148,11 @@ service_triggers() | |||||||
| 	procd_add_validation validate_section_dropbear | 	procd_add_validation validate_section_dropbear | ||||||
| } | } | ||||||
|  |  | ||||||
|  | shutdown() { | ||||||
|  | 	# close all open connections | ||||||
|  | 	killall dropbear | ||||||
|  | } | ||||||
|  |  | ||||||
| killclients() | killclients() | ||||||
| { | { | ||||||
| 	local ignore='' | 	local ignore='' | ||||||
|   | |||||||
| @@ -0,0 +1,48 @@ | |||||||
|  | From 3e34cfdff6b192fe337c6fb3f487f73e96582961 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be> | ||||||
|  | Date: Sun, 15 Jul 2018 01:25:53 +0200 | ||||||
|  | Subject: [PATCH] WPA: Ignore unauthenticated encrypted EAPOL-Key data | ||||||
|  |  | ||||||
|  | Ignore unauthenticated encrypted EAPOL-Key data in supplicant | ||||||
|  | processing. When using WPA2, these are frames that have the Encrypted | ||||||
|  | flag set, but not the MIC flag. | ||||||
|  |  | ||||||
|  | When using WPA2, EAPOL-Key frames that had the Encrypted flag set but | ||||||
|  | not the MIC flag, had their data field decrypted without first verifying | ||||||
|  | the MIC. In case the data field was encrypted using RC4 (i.e., when | ||||||
|  | negotiating TKIP as the pairwise cipher), this meant that | ||||||
|  | unauthenticated but decrypted data would then be processed. An adversary | ||||||
|  | could abuse this as a decryption oracle to recover sensitive information | ||||||
|  | in the data field of EAPOL-Key messages (e.g., the group key). | ||||||
|  | (CVE-2018-14526) | ||||||
|  |  | ||||||
|  | Signed-off-by: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be> | ||||||
|  | --- | ||||||
|  |  src/rsn_supp/wpa.c | 11 +++++++++++ | ||||||
|  |  1 file changed, 11 insertions(+) | ||||||
|  |  | ||||||
|  | diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c | ||||||
|  | index 56f3af7..db94a49 100644 | ||||||
|  | --- a/src/rsn_supp/wpa.c | ||||||
|  | +++ b/src/rsn_supp/wpa.c | ||||||
|  | @@ -2215,6 +2215,17 @@ int wpa_sm_rx_eapol(struct wpa_sm *sm, const u8 *src_addr, | ||||||
|  |   | ||||||
|  |  	if ((sm->proto == WPA_PROTO_RSN || sm->proto == WPA_PROTO_OSEN) && | ||||||
|  |  	    (key_info & WPA_KEY_INFO_ENCR_KEY_DATA) && mic_len) { | ||||||
|  | +		/* | ||||||
|  | +		 * Only decrypt the Key Data field if the frame's authenticity | ||||||
|  | +		 * was verified. When using AES-SIV (FILS), the MIC flag is not | ||||||
|  | +		 * set, so this check should only be performed if mic_len != 0 | ||||||
|  | +		 * which is the case in this code branch. | ||||||
|  | +		 */ | ||||||
|  | +		if (!(key_info & WPA_KEY_INFO_MIC)) { | ||||||
|  | +			wpa_msg(sm->ctx->msg_ctx, MSG_WARNING, | ||||||
|  | +				"WPA: Ignore EAPOL-Key with encrypted but unauthenticated data"); | ||||||
|  | +			goto out; | ||||||
|  | +		} | ||||||
|  |  		if (wpa_supplicant_decrypt_key_data(sm, key, mic_len, | ||||||
|  |  						    ver, key_data, | ||||||
|  |  						    &key_data_len)) | ||||||
|  | --  | ||||||
|  | 2.7.4 | ||||||
|  |  | ||||||
| @@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk | |||||||
| PKG_NAME:=openvpn | PKG_NAME:=openvpn | ||||||
|  |  | ||||||
| PKG_VERSION:=2.4.5 | PKG_VERSION:=2.4.5 | ||||||
| PKG_RELEASE:=3 | PKG_RELEASE:=4 | ||||||
|  |  | ||||||
| PKG_SOURCE_URL:=\ | PKG_SOURCE_URL:=\ | ||||||
| 	https://build.openvpn.net/downloads/releases/ \ | 	https://build.openvpn.net/downloads/releases/ \ | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk | |||||||
|  |  | ||||||
| PKG_NAME:=curl | PKG_NAME:=curl | ||||||
| PKG_VERSION:=7.60.0 | PKG_VERSION:=7.60.0 | ||||||
| PKG_RELEASE:=1 | PKG_RELEASE:=3 | ||||||
|  |  | ||||||
| PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz | PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz | ||||||
| PKG_SOURCE_URL:=https://dl.uxnr.de/mirror/curl/ \ | PKG_SOURCE_URL:=https://dl.uxnr.de/mirror/curl/ \ | ||||||
|   | |||||||
							
								
								
									
										32
									
								
								package/network/utils/curl/patches/400-CVE-2018-0500.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								package/network/utils/curl/patches/400-CVE-2018-0500.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | |||||||
|  | From ba1dbd78e5f1ed67c1b8d37ac89d90e5e330b628 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Daniel Stenberg <daniel@haxx.se> | ||||||
|  | Date: Wed, 13 Jun 2018 12:24:40 +0200 | ||||||
|  | Subject: [PATCH] smtp: use the upload buffer size for scratch buffer malloc | ||||||
|  |  | ||||||
|  | ... not the read buffer size, as that can be set smaller and thus cause | ||||||
|  | a buffer overflow! CVE-2018-0500 | ||||||
|  |  | ||||||
|  | Reported-by: Peter Wu | ||||||
|  | Bug: https://curl.haxx.se/docs/adv_2018-70a2.html | ||||||
|  | --- | ||||||
|  |  lib/smtp.c | 3 ++- | ||||||
|  |  1 file changed, 2 insertions(+), 1 deletion(-) | ||||||
|  |  | ||||||
|  | --- a/lib/smtp.c | ||||||
|  | +++ b/lib/smtp.c | ||||||
|  | @@ -1563,13 +1563,14 @@ CURLcode Curl_smtp_escape_eob(struct con | ||||||
|  |    if(!scratch || data->set.crlf) { | ||||||
|  |      oldscratch = scratch; | ||||||
|  |   | ||||||
|  | -    scratch = newscratch = malloc(2 * data->set.buffer_size); | ||||||
|  | +    scratch = newscratch = malloc(2 * UPLOAD_BUFSIZE); | ||||||
|  |      if(!newscratch) { | ||||||
|  |        failf(data, "Failed to alloc scratch buffer!"); | ||||||
|  |   | ||||||
|  |        return CURLE_OUT_OF_MEMORY; | ||||||
|  |      } | ||||||
|  |    } | ||||||
|  | +  DEBUGASSERT(UPLOAD_BUFSIZE >= nread); | ||||||
|  |   | ||||||
|  |    /* Have we already sent part of the EOB? */ | ||||||
|  |    eob_sent = smtp->eob; | ||||||
| @@ -8,11 +8,11 @@ | |||||||
| include $(TOPDIR)/rules.mk | include $(TOPDIR)/rules.mk | ||||||
|  |  | ||||||
| PKG_NAME:=iperf | PKG_NAME:=iperf | ||||||
| PKG_VERSION:=2.0.10 | PKG_VERSION:=2.0.12 | ||||||
| PKG_RELEASE:=1 | PKG_RELEASE:=1 | ||||||
|  |  | ||||||
| PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz | PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz | ||||||
| PKG_HASH:=7fe4348dcca313b74e0aa9c34a8ccd713b84a5615b8578f4aa94cedce9891ef2 | PKG_HASH:=367f651fb1264b13f6518e41b8a7e08ce3e41b2a1c80e99ff0347561eed32646 | ||||||
| PKG_SOURCE_URL:=@SF/iperf2 | PKG_SOURCE_URL:=@SF/iperf2 | ||||||
|  |  | ||||||
| PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name> | PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name> | ||||||
|   | |||||||
| @@ -110,7 +110,7 @@ proto_wwan_teardown() { | |||||||
| 	case $driver in | 	case $driver in | ||||||
| 	qmi_wwan)		proto_qmi_teardown $@ ;; | 	qmi_wwan)		proto_qmi_teardown $@ ;; | ||||||
| 	cdc_mbim)		proto_mbim_teardown $@ ;; | 	cdc_mbim)		proto_mbim_teardown $@ ;; | ||||||
| 	sierra_net)		proto_mbim_teardown $@ ;; | 	sierra_net)		proto_directip_teardown $@ ;; | ||||||
| 	comgt)			proto_3g_teardown $@ ;; | 	comgt)			proto_3g_teardown $@ ;; | ||||||
| 	cdc_ether|*cdc_ncm)	proto_ncm_teardown $@ ;; | 	cdc_ether|*cdc_ncm)	proto_ncm_teardown $@ ;; | ||||||
| 	esac | 	esac | ||||||
|   | |||||||
| @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk | |||||||
|  |  | ||||||
| PKG_NAME:=ca-certificates | PKG_NAME:=ca-certificates | ||||||
| PKG_VERSION:=20180409 | PKG_VERSION:=20180409 | ||||||
| PKG_MAINTAINER:=Christian Schoenebeck <christian.schoenebeck@gmail.com> | PKG_MAINTAINER:= | ||||||
|  |  | ||||||
| PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).tar.xz | PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).tar.xz | ||||||
| PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/main/c/ca-certificates | PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/main/c/ca-certificates | ||||||
|   | |||||||
| @@ -12,10 +12,10 @@ PKG_RELEASE:=1 | |||||||
|  |  | ||||||
| PKG_SOURCE_PROTO:=git | PKG_SOURCE_PROTO:=git | ||||||
| PKG_SOURCE_URL=$(PROJECT_GIT)/project/rpcd.git | PKG_SOURCE_URL=$(PROJECT_GIT)/project/rpcd.git | ||||||
| PKG_SOURCE_DATE:=2018-05-13 | PKG_SOURCE_DATE:=2018-08-16 | ||||||
| PKG_SOURCE_VERSION:=820621952d537c49deba470c6f61c40df93f4ba8 | PKG_SOURCE_VERSION:=41333abee4c57e3de2bcfa08972954e2af20705a | ||||||
| PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io> | PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io> | ||||||
| PKG_MIRROR_HASH:=24322b547cb062e9676da51d09de19d1cb9fb07df9e82b2b63fc0f714ec1c14b | PKG_MIRROR_HASH:=a6d3c2228836a738919dfbd57a9e3ae5d427d5f94607b7e78b92b03f09f59731 | ||||||
|  |  | ||||||
| PKG_LICENSE:=ISC | PKG_LICENSE:=ISC | ||||||
| PKG_LICENSE_FILES:= | PKG_LICENSE_FILES:= | ||||||
|   | |||||||
| @@ -13,9 +13,9 @@ PKG_RELEASE:=1 | |||||||
|  |  | ||||||
| PKG_SOURCE_URL=$(PROJECT_GIT)/project/uci.git | PKG_SOURCE_URL=$(PROJECT_GIT)/project/uci.git | ||||||
| PKG_SOURCE_PROTO:=git | PKG_SOURCE_PROTO:=git | ||||||
| PKG_SOURCE_DATE=2018-03-24 | PKG_SOURCE_DATE=2018-08-11 | ||||||
| PKG_SOURCE_VERSION:=5d2bf09ec594d97eb9284b8c721dbfe10b81a6f6 | PKG_SOURCE_VERSION:=4c8b4d6efc8302b508d261573351fffb75bd98c2 | ||||||
| PKG_MIRROR_HASH:=61f8cf52950edae851892ed0914dea8e1ab796bcefc095aa5dab28f672dc3301 | PKG_MIRROR_HASH:=c1f0f565921c71ff9231508c7c249baacad4c3ae1a3fade25c37bcb2bf7a7b5f | ||||||
|  |  | ||||||
| PKG_LICENSE:=LGPL-2.1 | PKG_LICENSE:=LGPL-2.1 | ||||||
| PKG_LICENSE_FILES:= | PKG_LICENSE_FILES:= | ||||||
|   | |||||||
| @@ -8,7 +8,7 @@ | |||||||
| include $(TOPDIR)/rules.mk | include $(TOPDIR)/rules.mk | ||||||
|  |  | ||||||
| PKG_NAME:=px5g | PKG_NAME:=px5g | ||||||
| PKG_RELEASE:=5 | PKG_RELEASE:=6 | ||||||
| PKG_LICENSE:=LGPL-2.1 | PKG_LICENSE:=LGPL-2.1 | ||||||
| PKG_BUILD_DIR:=$(BUILD_DIR)/px5g-$(BUILD_VARIANT) | PKG_BUILD_DIR:=$(BUILD_DIR)/px5g-$(BUILD_VARIANT) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,32 +0,0 @@ | |||||||
| From a728a196d253530f17da5c86dc7dfbe58c5f7094 Mon Sep 17 00:00:00 2001 |  | ||||||
| From: Christian Lamparter <chunkeey@googlemail.com> |  | ||||||
| Date: Fri, 25 Aug 2017 15:47:14 +0200 |  | ||||||
| Subject: [PATCH 01/25] crypto: crypto4xx - remove bad list_del |  | ||||||
|  |  | ||||||
| alg entries are only added to the list, after the registration |  | ||||||
| was successful. If the registration failed, it was never added |  | ||||||
| to the list in the first place. |  | ||||||
|  |  | ||||||
| Signed-off-by: Christian Lamparter <chunkeey@googlemail.com> |  | ||||||
| Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> |  | ||||||
| --- |  | ||||||
|  drivers/crypto/amcc/crypto4xx_core.c | 6 ++---- |  | ||||||
|  1 file changed, 2 insertions(+), 4 deletions(-) |  | ||||||
|  |  | ||||||
| --- a/drivers/crypto/amcc/crypto4xx_core.c |  | ||||||
| +++ b/drivers/crypto/amcc/crypto4xx_core.c |  | ||||||
| @@ -1033,12 +1033,10 @@ int crypto4xx_register_alg(struct crypto |  | ||||||
|  			break; |  | ||||||
|  		} |  | ||||||
|   |  | ||||||
| -		if (rc) { |  | ||||||
| -			list_del(&alg->entry); |  | ||||||
| +		if (rc) |  | ||||||
|  			kfree(alg); |  | ||||||
| -		} else { |  | ||||||
| +		else |  | ||||||
|  			list_add_tail(&alg->entry, &sec_dev->alg_list); |  | ||||||
| -		} |  | ||||||
|  	} |  | ||||||
|   |  | ||||||
|  	return 0; |  | ||||||
| @@ -67,7 +67,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> | |||||||
|   |   | ||||||
| --- a/drivers/crypto/amcc/crypto4xx_core.c | --- a/drivers/crypto/amcc/crypto4xx_core.c | ||||||
| +++ b/drivers/crypto/amcc/crypto4xx_core.c | +++ b/drivers/crypto/amcc/crypto4xx_core.c | ||||||
| @@ -962,7 +962,7 @@ u32 crypto4xx_build_pd(struct crypto_asy | @@ -964,7 +964,7 @@ u32 crypto4xx_build_pd(struct crypto_asy | ||||||
|   |   | ||||||
|  	sa->sa_command_1.bf.hash_crypto_offset = 0; |  	sa->sa_command_1.bf.hash_crypto_offset = 0; | ||||||
|  	pd->pd_ctl.w = ctx->pd_ctl; |  	pd->pd_ctl.w = ctx->pd_ctl; | ||||||
|   | |||||||
| @@ -18,7 +18,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> | |||||||
|  |  | ||||||
| --- a/drivers/crypto/amcc/crypto4xx_core.c | --- a/drivers/crypto/amcc/crypto4xx_core.c | ||||||
| +++ b/drivers/crypto/amcc/crypto4xx_core.c | +++ b/drivers/crypto/amcc/crypto4xx_core.c | ||||||
| @@ -1114,7 +1114,9 @@ struct crypto4xx_alg_common crypto4xx_al | @@ -1116,7 +1116,9 @@ struct crypto4xx_alg_common crypto4xx_al | ||||||
|  		.cra_name 	= "cbc(aes)", |  		.cra_name 	= "cbc(aes)", | ||||||
|  		.cra_driver_name = "cbc-aes-ppc4xx", |  		.cra_driver_name = "cbc-aes-ppc4xx", | ||||||
|  		.cra_priority 	= CRYPTO4XX_CRYPTO_PRIORITY, |  		.cra_priority 	= CRYPTO4XX_CRYPTO_PRIORITY, | ||||||
|   | |||||||
| @@ -14,7 +14,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> | |||||||
|  |  | ||||||
| --- a/drivers/crypto/amcc/crypto4xx_core.c | --- a/drivers/crypto/amcc/crypto4xx_core.c | ||||||
| +++ b/drivers/crypto/amcc/crypto4xx_core.c | +++ b/drivers/crypto/amcc/crypto4xx_core.c | ||||||
| @@ -1079,7 +1079,6 @@ static void crypto4xx_bh_tasklet_cb(unsi | @@ -1081,7 +1081,6 @@ static void crypto4xx_bh_tasklet_cb(unsi | ||||||
|  			pd->pd_ctl.bf.pe_done = 0; |  			pd->pd_ctl.bf.pe_done = 0; | ||||||
|  			crypto4xx_pd_done(core_dev->dev, tail); |  			crypto4xx_pd_done(core_dev->dev, tail); | ||||||
|  			crypto4xx_put_pd_to_pdr(core_dev->dev, tail); |  			crypto4xx_put_pd_to_pdr(core_dev->dev, tail); | ||||||
|   | |||||||
| @@ -109,7 +109,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> | |||||||
|  #include <crypto/sha.h> |  #include <crypto/sha.h> | ||||||
|  #include "crypto4xx_reg_def.h" |  #include "crypto4xx_reg_def.h" | ||||||
|  #include "crypto4xx_core.h" |  #include "crypto4xx_core.h" | ||||||
| @@ -1133,6 +1134,103 @@ struct crypto4xx_alg_common crypto4xx_al | @@ -1135,6 +1136,103 @@ struct crypto4xx_alg_common crypto4xx_al | ||||||
|  			} |  			} | ||||||
|  		} |  		} | ||||||
|  	}}, |  	}}, | ||||||
|   | |||||||
| @@ -27,7 +27,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> | |||||||
|  #include "crypto4xx_reg_def.h" |  #include "crypto4xx_reg_def.h" | ||||||
|  #include "crypto4xx_core.h" |  #include "crypto4xx_core.h" | ||||||
|  #include "crypto4xx_sa.h" |  #include "crypto4xx_sa.h" | ||||||
| @@ -481,111 +482,44 @@ static inline struct ce_sd *crypto4xx_ge | @@ -483,111 +484,44 @@ static inline struct ce_sd *crypto4xx_ge | ||||||
|  	return  (struct ce_sd *)(dev->sdr + sizeof(struct ce_sd) * idx); |  	return  (struct ce_sd *)(dev->sdr + sizeof(struct ce_sd) * idx); | ||||||
|  } |  } | ||||||
|   |   | ||||||
|   | |||||||
| @@ -17,7 +17,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> | |||||||
|  |  | ||||||
| --- a/drivers/crypto/amcc/crypto4xx_core.c | --- a/drivers/crypto/amcc/crypto4xx_core.c | ||||||
| +++ b/drivers/crypto/amcc/crypto4xx_core.c | +++ b/drivers/crypto/amcc/crypto4xx_core.c | ||||||
| @@ -394,10 +394,9 @@ static u32 crypto4xx_build_sdr(struct cr | @@ -396,10 +396,9 @@ static u32 crypto4xx_build_sdr(struct cr | ||||||
|  	if (!dev->sdr) |  	if (!dev->sdr) | ||||||
|  		return -ENOMEM; |  		return -ENOMEM; | ||||||
|   |   | ||||||
| @@ -29,7 +29,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> | |||||||
|  			&dev->scatter_buffer_pa, GFP_ATOMIC); |  			&dev->scatter_buffer_pa, GFP_ATOMIC); | ||||||
|  	if (!dev->scatter_buffer_va) { |  	if (!dev->scatter_buffer_va) { | ||||||
|  		dma_free_coherent(dev->core_dev->device, |  		dma_free_coherent(dev->core_dev->device, | ||||||
| @@ -410,7 +409,7 @@ static u32 crypto4xx_build_sdr(struct cr | @@ -412,7 +411,7 @@ static u32 crypto4xx_build_sdr(struct cr | ||||||
|   |   | ||||||
|  	for (i = 0; i < PPC4XX_NUM_SD; i++) { |  	for (i = 0; i < PPC4XX_NUM_SD; i++) { | ||||||
|  		sd_array[i].ptr = dev->scatter_buffer_pa + |  		sd_array[i].ptr = dev->scatter_buffer_pa + | ||||||
| @@ -38,9 +38,9 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> | |||||||
|  	} |  	} | ||||||
|   |   | ||||||
|  	return 0; |  	return 0; | ||||||
| @@ -425,7 +424,7 @@ static void crypto4xx_destroy_sdr(struct | @@ -427,7 +426,7 @@ static void crypto4xx_destroy_sdr(struct | ||||||
|   |   | ||||||
|  	if (dev->scatter_buffer_va != NULL) |  	if (dev->scatter_buffer_va) | ||||||
|  		dma_free_coherent(dev->core_dev->device, |  		dma_free_coherent(dev->core_dev->device, | ||||||
| -				  dev->scatter_buffer_size * PPC4XX_NUM_SD, | -				  dev->scatter_buffer_size * PPC4XX_NUM_SD, | ||||||
| +				  PPC4XX_SD_BUFFER_SIZE * PPC4XX_NUM_SD, | +				  PPC4XX_SD_BUFFER_SIZE * PPC4XX_NUM_SD, | ||||||
|   | |||||||
| @@ -1,84 +0,0 @@ | |||||||
| From 5d59ad6eea82ef8df92b4109615a0dde9d8093e9 Mon Sep 17 00:00:00 2001 |  | ||||||
| From: Christian Lamparter <chunkeey@googlemail.com> |  | ||||||
| Date: Fri, 25 Aug 2017 15:47:24 +0200 |  | ||||||
| Subject: [PATCH 11/25] crypto: crypto4xx - fix crypto4xx_build_pdr, |  | ||||||
|  crypto4xx_build_sdr leak |  | ||||||
|  |  | ||||||
| If one of the later memory allocations in rypto4xx_build_pdr() |  | ||||||
| fails: dev->pdr (and/or) dev->pdr_uinfo wouldn't be freed. |  | ||||||
|  |  | ||||||
| crypto4xx_build_sdr() has the same issue with dev->sdr. |  | ||||||
|  |  | ||||||
| Signed-off-by: Christian Lamparter <chunkeey@googlemail.com> |  | ||||||
| Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> |  | ||||||
| --- |  | ||||||
|  drivers/crypto/amcc/crypto4xx_core.c | 17 +++++++++-------- |  | ||||||
|  1 file changed, 9 insertions(+), 8 deletions(-) |  | ||||||
|  |  | ||||||
| --- a/drivers/crypto/amcc/crypto4xx_core.c |  | ||||||
| +++ b/drivers/crypto/amcc/crypto4xx_core.c |  | ||||||
| @@ -209,7 +209,7 @@ static u32 crypto4xx_build_pdr(struct cr |  | ||||||
|  				  dev->pdr_pa); |  | ||||||
|  		return -ENOMEM; |  | ||||||
|  	} |  | ||||||
| -	memset(dev->pdr, 0,  sizeof(struct ce_pd) * PPC4XX_NUM_PD); |  | ||||||
| +	memset(dev->pdr, 0, sizeof(struct ce_pd) * PPC4XX_NUM_PD); |  | ||||||
|  	dev->shadow_sa_pool = dma_alloc_coherent(dev->core_dev->device, |  | ||||||
|  				   256 * PPC4XX_NUM_PD, |  | ||||||
|  				   &dev->shadow_sa_pool_pa, |  | ||||||
| @@ -242,13 +242,15 @@ static u32 crypto4xx_build_pdr(struct cr |  | ||||||
|   |  | ||||||
|  static void crypto4xx_destroy_pdr(struct crypto4xx_device *dev) |  | ||||||
|  { |  | ||||||
| -	if (dev->pdr != NULL) |  | ||||||
| +	if (dev->pdr) |  | ||||||
|  		dma_free_coherent(dev->core_dev->device, |  | ||||||
|  				  sizeof(struct ce_pd) * PPC4XX_NUM_PD, |  | ||||||
|  				  dev->pdr, dev->pdr_pa); |  | ||||||
| + |  | ||||||
|  	if (dev->shadow_sa_pool) |  | ||||||
|  		dma_free_coherent(dev->core_dev->device, 256 * PPC4XX_NUM_PD, |  | ||||||
|  				  dev->shadow_sa_pool, dev->shadow_sa_pool_pa); |  | ||||||
| + |  | ||||||
|  	if (dev->shadow_sr_pool) |  | ||||||
|  		dma_free_coherent(dev->core_dev->device, |  | ||||||
|  			sizeof(struct sa_state_record) * PPC4XX_NUM_PD, |  | ||||||
| @@ -417,12 +419,12 @@ static u32 crypto4xx_build_sdr(struct cr |  | ||||||
|   |  | ||||||
|  static void crypto4xx_destroy_sdr(struct crypto4xx_device *dev) |  | ||||||
|  { |  | ||||||
| -	if (dev->sdr != NULL) |  | ||||||
| +	if (dev->sdr) |  | ||||||
|  		dma_free_coherent(dev->core_dev->device, |  | ||||||
|  				  sizeof(struct ce_sd) * PPC4XX_NUM_SD, |  | ||||||
|  				  dev->sdr, dev->sdr_pa); |  | ||||||
|   |  | ||||||
| -	if (dev->scatter_buffer_va != NULL) |  | ||||||
| +	if (dev->scatter_buffer_va) |  | ||||||
|  		dma_free_coherent(dev->core_dev->device, |  | ||||||
|  				  PPC4XX_SD_BUFFER_SIZE * PPC4XX_NUM_SD, |  | ||||||
|  				  dev->scatter_buffer_va, |  | ||||||
| @@ -1223,7 +1225,7 @@ static int crypto4xx_probe(struct platfo |  | ||||||
|   |  | ||||||
|  	rc = crypto4xx_build_gdr(core_dev->dev); |  | ||||||
|  	if (rc) |  | ||||||
| -		goto err_build_gdr; |  | ||||||
| +		goto err_build_pdr; |  | ||||||
|   |  | ||||||
|  	rc = crypto4xx_build_sdr(core_dev->dev); |  | ||||||
|  	if (rc) |  | ||||||
| @@ -1266,12 +1268,11 @@ err_iomap: |  | ||||||
|  err_request_irq: |  | ||||||
|  	irq_dispose_mapping(core_dev->irq); |  | ||||||
|  	tasklet_kill(&core_dev->tasklet); |  | ||||||
| -	crypto4xx_destroy_sdr(core_dev->dev); |  | ||||||
|  err_build_sdr: |  | ||||||
| +	crypto4xx_destroy_sdr(core_dev->dev); |  | ||||||
|  	crypto4xx_destroy_gdr(core_dev->dev); |  | ||||||
| -err_build_gdr: |  | ||||||
| -	crypto4xx_destroy_pdr(core_dev->dev); |  | ||||||
|  err_build_pdr: |  | ||||||
| +	crypto4xx_destroy_pdr(core_dev->dev); |  | ||||||
|  	kfree(core_dev->dev); |  | ||||||
|  err_alloc_dev: |  | ||||||
|  	kfree(core_dev); |  | ||||||
| @@ -44,7 +44,7 @@ produce a noisy warning. | |||||||
|  		hcd->msi_enabled = 1; |  		hcd->msi_enabled = 1; | ||||||
| --- a/drivers/usb/host/xhci.h | --- a/drivers/usb/host/xhci.h | ||||||
| +++ b/drivers/usb/host/xhci.h | +++ b/drivers/usb/host/xhci.h | ||||||
| @@ -1850,6 +1850,7 @@ struct xhci_hcd { | @@ -1854,6 +1854,7 @@ struct xhci_hcd { | ||||||
|  	/* support xHCI 0.96 spec USB2 software LPM */ |  	/* support xHCI 0.96 spec USB2 software LPM */ | ||||||
|  	unsigned		sw_lpm_support:1; |  	unsigned		sw_lpm_support:1; | ||||||
|  	/* support xHCI 1.0 spec USB2 hardware LPM */ |  	/* support xHCI 1.0 spec USB2 hardware LPM */ | ||||||
|   | |||||||
| @@ -1,129 +0,0 @@ | |||||||
| CONFIG_ADM6996_PHY=y |  | ||||||
| CONFIG_AR7=y |  | ||||||
| CONFIG_AR7_TI=y |  | ||||||
| # CONFIG_AR7_TYPE_AC49X is not set |  | ||||||
| CONFIG_AR7_TYPE_TI=y |  | ||||||
| CONFIG_AR7_WDT=y |  | ||||||
| CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y |  | ||||||
| CONFIG_ARCH_DISCARD_MEMBLOCK=y |  | ||||||
| CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y |  | ||||||
| CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y |  | ||||||
| CONFIG_ARCH_HIBERNATION_POSSIBLE=y |  | ||||||
| CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y |  | ||||||
| CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y |  | ||||||
| CONFIG_ARCH_REQUIRE_GPIOLIB=y |  | ||||||
| CONFIG_ARCH_SUSPEND_POSSIBLE=y |  | ||||||
| CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y |  | ||||||
| CONFIG_BOOT_ELF32=y |  | ||||||
| CONFIG_CEVT_R4K=y |  | ||||||
| CONFIG_CLONE_BACKWARDS=y |  | ||||||
| CONFIG_CMDLINE="rootfstype=squashfs,jffs2" |  | ||||||
| CONFIG_CMDLINE_BOOL=y |  | ||||||
| # CONFIG_CMDLINE_OVERRIDE is not set |  | ||||||
| CONFIG_CPMAC=y |  | ||||||
| CONFIG_CPU_GENERIC_DUMP_TLB=y |  | ||||||
| CONFIG_CPU_HAS_PREFETCH=y |  | ||||||
| CONFIG_CPU_HAS_SYNC=y |  | ||||||
| CONFIG_CPU_LITTLE_ENDIAN=y |  | ||||||
| CONFIG_CPU_MIPS32=y |  | ||||||
| CONFIG_CPU_MIPS32_R1=y |  | ||||||
| CONFIG_CPU_MIPSR1=y |  | ||||||
| CONFIG_CPU_R4K_CACHE_TLB=y |  | ||||||
| CONFIG_CPU_R4K_FPU=y |  | ||||||
| CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y |  | ||||||
| CONFIG_CPU_SUPPORTS_HIGHMEM=y |  | ||||||
| CONFIG_CSRC_R4K=y |  | ||||||
| CONFIG_DMA_NONCOHERENT=y |  | ||||||
| CONFIG_EARLY_PRINTK=y |  | ||||||
| CONFIG_ETHERNET_PACKET_MANGLE=y |  | ||||||
| CONFIG_FIXED_PHY=y |  | ||||||
| CONFIG_GENERIC_ATOMIC64=y |  | ||||||
| CONFIG_GENERIC_CLOCKEVENTS=y |  | ||||||
| CONFIG_GENERIC_CLOCKEVENTS_BUILD=y |  | ||||||
| CONFIG_GENERIC_CMOS_UPDATE=y |  | ||||||
| CONFIG_GENERIC_IO=y |  | ||||||
| CONFIG_GENERIC_IRQ_SHOW=y |  | ||||||
| CONFIG_GENERIC_PCI_IOMAP=y |  | ||||||
| CONFIG_GENERIC_SMP_IDLE_THREAD=y |  | ||||||
| CONFIG_GPIOLIB=y |  | ||||||
| CONFIG_GPIO_DEVRES=y |  | ||||||
| CONFIG_HARDWARE_WATCHPOINTS=y |  | ||||||
| CONFIG_HAS_DMA=y |  | ||||||
| CONFIG_HAS_IOMEM=y |  | ||||||
| CONFIG_HAS_IOPORT=y |  | ||||||
| # CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set |  | ||||||
| CONFIG_HAVE_ARCH_JUMP_LABEL=y |  | ||||||
| CONFIG_HAVE_ARCH_KGDB=y |  | ||||||
| CONFIG_HAVE_ARCH_TRACEHOOK=y |  | ||||||
| # CONFIG_HAVE_BOOTMEM_INFO_NODE is not set |  | ||||||
| CONFIG_HAVE_CC_STACKPROTECTOR=y |  | ||||||
| CONFIG_HAVE_CLK=y |  | ||||||
| CONFIG_HAVE_CONTEXT_TRACKING=y |  | ||||||
| CONFIG_HAVE_C_RECORDMCOUNT=y |  | ||||||
| CONFIG_HAVE_DEBUG_KMEMLEAK=y |  | ||||||
| CONFIG_HAVE_DEBUG_STACKOVERFLOW=y |  | ||||||
| CONFIG_HAVE_DMA_API_DEBUG=y |  | ||||||
| CONFIG_HAVE_DMA_ATTRS=y |  | ||||||
| CONFIG_HAVE_DYNAMIC_FTRACE=y |  | ||||||
| CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y |  | ||||||
| CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y |  | ||||||
| CONFIG_HAVE_FUNCTION_TRACER=y |  | ||||||
| CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y |  | ||||||
| CONFIG_HAVE_GENERIC_DMA_COHERENT=y |  | ||||||
| CONFIG_HAVE_IDE=y |  | ||||||
| CONFIG_HAVE_KERNEL_BZIP2=y |  | ||||||
| CONFIG_HAVE_KERNEL_GZIP=y |  | ||||||
| CONFIG_HAVE_KERNEL_LZ4=y |  | ||||||
| CONFIG_HAVE_KERNEL_LZMA=y |  | ||||||
| CONFIG_HAVE_KERNEL_LZO=y |  | ||||||
| CONFIG_HAVE_KERNEL_XZ=y |  | ||||||
| CONFIG_HAVE_MEMBLOCK=y |  | ||||||
| CONFIG_HAVE_MEMBLOCK_NODE_MAP=y |  | ||||||
| CONFIG_HAVE_MOD_ARCH_SPECIFIC=y |  | ||||||
| CONFIG_HAVE_NET_DSA=y |  | ||||||
| CONFIG_HAVE_OPROFILE=y |  | ||||||
| CONFIG_HAVE_PERF_EVENTS=y |  | ||||||
| CONFIG_HAVE_SYSCALL_TRACEPOINTS=y |  | ||||||
| CONFIG_HW_RANDOM=y |  | ||||||
| CONFIG_HZ_PERIODIC=y |  | ||||||
| CONFIG_INITRAMFS_SOURCE="" |  | ||||||
| CONFIG_IP17XX_PHY=y |  | ||||||
| CONFIG_IRQ_CPU=y |  | ||||||
| CONFIG_IRQ_FORCED_THREADING=y |  | ||||||
| CONFIG_IRQ_WORK=y |  | ||||||
| CONFIG_KALLSYMS=y |  | ||||||
| CONFIG_LEDS_GPIO=y |  | ||||||
| CONFIG_LEDS_TRIGGER_HEARTBEAT=y |  | ||||||
| CONFIG_MDIO_BOARDINFO=y |  | ||||||
| CONFIG_MIPS=y |  | ||||||
| # CONFIG_MIPS_HUGE_TLB_SUPPORT is not set |  | ||||||
| CONFIG_MIPS_L1_CACHE_SHIFT=5 |  | ||||||
| # CONFIG_MIPS_MACHINE is not set |  | ||||||
| CONFIG_MIPS_MT_DISABLED=y |  | ||||||
| CONFIG_MODULES_USE_ELF_REL=y |  | ||||||
| # CONFIG_MTD_AC49X_PARTS is not set |  | ||||||
| CONFIG_MTD_CFI_STAA=y |  | ||||||
| CONFIG_MTD_PHYSMAP=y |  | ||||||
| CONFIG_MVSWITCH_PHY=y |  | ||||||
| CONFIG_NEED_DMA_MAP_STATE=y |  | ||||||
| CONFIG_NEED_PER_CPU_KM=y |  | ||||||
| CONFIG_NO_EXCEPT_FILL=y |  | ||||||
| CONFIG_PAGEFLAGS_EXTENDED=y |  | ||||||
| CONFIG_PERF_USE_VMALLOC=y |  | ||||||
| CONFIG_PHYLIB=y |  | ||||||
| # CONFIG_PREEMPT_RCU is not set |  | ||||||
| # CONFIG_RCU_STALL_COMMON is not set |  | ||||||
| # CONFIG_SCSI_DMA is not set |  | ||||||
| CONFIG_SWAP_IO_SPACE=y |  | ||||||
| CONFIG_SWCONFIG=y |  | ||||||
| CONFIG_SYS_HAS_CPU_MIPS32_R1=y |  | ||||||
| CONFIG_SYS_HAS_EARLY_PRINTK=y |  | ||||||
| CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y |  | ||||||
| CONFIG_SYS_SUPPORTS_ARBIT_HZ=y |  | ||||||
| CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y |  | ||||||
| CONFIG_SYS_SUPPORTS_ZBOOT=y |  | ||||||
| CONFIG_SYS_SUPPORTS_ZBOOT_UART16550=y |  | ||||||
| CONFIG_TICK_CPU_ACCOUNTING=y |  | ||||||
| CONFIG_VLYNQ=y |  | ||||||
| # CONFIG_VLYNQ_DEBUG is not set |  | ||||||
| CONFIG_ZONE_DMA_FLAG=0 |  | ||||||
| @@ -1,23 +0,0 @@ | |||||||
| From 443ab715a40881d6c9ba11b027ba154bac904cb0 Mon Sep 17 00:00:00 2001 |  | ||||||
| From: Oswald Buddenhagen <oswald.buddenhagen@gmx.de> |  | ||||||
| Date: Sat, 10 May 2014 23:19:08 +0200 |  | ||||||
| Subject: [PATCH] MIPS/AR7: ensure that serial ports are properly set up |  | ||||||
|  |  | ||||||
| without UPF_FIXED_TYPE, the data from the PORT_AR7 uart_config entry is |  | ||||||
| never copied, resulting in a dead port. |  | ||||||
|  |  | ||||||
| Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de> |  | ||||||
| --- |  | ||||||
|  arch/mips/ar7/platform.c | 1 + |  | ||||||
|  1 file changed, 1 insertion(+) |  | ||||||
|  |  | ||||||
| --- a/arch/mips/ar7/platform.c |  | ||||||
| +++ b/arch/mips/ar7/platform.c |  | ||||||
| @@ -581,6 +581,7 @@ static int __init ar7_register_uarts(voi |  | ||||||
|  	uart_port.type		= PORT_AR7; |  | ||||||
|  	uart_port.uartclk	= clk_get_rate(bus_clk) / 2; |  | ||||||
|  	uart_port.iotype	= UPIO_MEM32; |  | ||||||
| +	uart_port.flags		= UPF_FIXED_TYPE; |  | ||||||
|  	uart_port.regshift	= 2; |  | ||||||
|   |  | ||||||
|  	uart_port.line		= 0; |  | ||||||
| @@ -1,48 +0,0 @@ | |||||||
| From ee6c9d41de084b2cefd90e5e0c9f30a35f6d3967 Mon Sep 17 00:00:00 2001 |  | ||||||
| From: Jonas Gorski <jonas.gorski@gmail.com> |  | ||||||
| Date: Sun, 29 Oct 2017 15:50:42 +0100 |  | ||||||
| Subject: [PATCH RFC 3/3] MIPS: AR7: ensure the port type's FCR value is used |  | ||||||
|  |  | ||||||
| Since commit aef9a7bd9b67 ("serial/uart/8250: Add tunable RX interrupt |  | ||||||
| trigger I/F of FIFO buffers"), the port's default FCR value isn't used |  | ||||||
| in serial8250_do_set_termios anymore, but copied over once in |  | ||||||
| serial8250_config_port and then modified as needed. |  | ||||||
|  |  | ||||||
| Unfortunately, serial8250_config_port will never be called if the port |  | ||||||
| is shared between kernel and userspace, and the port's flag doesn't have |  | ||||||
| UPF_BOOT_AUTOCONF, which would trigger a serial8250_config_port as well. |  | ||||||
|  |  | ||||||
| This causes garbled output from userspace: |  | ||||||
|  |  | ||||||
| [    5.220000] random: procd urandom read with 49 bits of entropy available |  | ||||||
| ers |  | ||||||
|    [kee |  | ||||||
|  |  | ||||||
| Fix this by forcing it to be configured on boot, resulting in the |  | ||||||
| expected output: |  | ||||||
|  |  | ||||||
| [    5.250000] random: procd urandom read with 50 bits of entropy available |  | ||||||
| Press the [f] key and hit [enter] to enter failsafe mode |  | ||||||
| Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level |  | ||||||
|  |  | ||||||
| Fixes: aef9a7bd9b67 ("serial/uart/8250: Add tunable RX interrupt trigger I/F of FIFO buffers") |  | ||||||
| Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com> |  | ||||||
| --- |  | ||||||
| I'm not sure if this is just AR7's issue, or if this points to a general |  | ||||||
| issue for UARTs used as kernel console and login console with the "fixed" |  | ||||||
| commit. |  | ||||||
|  |  | ||||||
|  arch/mips/ar7/platform.c | 2 +- |  | ||||||
|  1 file changed, 1 insertion(+), 1 deletion(-) |  | ||||||
|  |  | ||||||
| --- a/arch/mips/ar7/platform.c |  | ||||||
| +++ b/arch/mips/ar7/platform.c |  | ||||||
| @@ -581,7 +581,7 @@ static int __init ar7_register_uarts(voi |  | ||||||
|  	uart_port.type		= PORT_AR7; |  | ||||||
|  	uart_port.uartclk	= clk_get_rate(bus_clk) / 2; |  | ||||||
|  	uart_port.iotype	= UPIO_MEM32; |  | ||||||
| -	uart_port.flags		= UPF_FIXED_TYPE; |  | ||||||
| +	uart_port.flags		= UPF_FIXED_TYPE | UPF_BOOT_AUTOCONF; |  | ||||||
|  	uart_port.regshift	= 2; |  | ||||||
|   |  | ||||||
|  	uart_port.line		= 0; |  | ||||||
| @@ -1,11 +0,0 @@ | |||||||
| --- a/arch/mips/include/asm/mach-ar7/spaces.h |  | ||||||
| +++ b/arch/mips/include/asm/mach-ar7/spaces.h |  | ||||||
| @@ -20,6 +20,8 @@ |  | ||||||
|  #define UNCAC_BASE	_AC(0xb4000000, UL)	/* 0xa0000000 + PHYS_OFFSET */ |  | ||||||
|  #define IO_BASE		UNCAC_BASE |  | ||||||
|   |  | ||||||
| +#define HIGHMEM_START	_AC(0x20000000, UL) |  | ||||||
| + |  | ||||||
|  #include <asm/mach-generic/spaces.h> |  | ||||||
|   |  | ||||||
|  #endif /* __ASM_AR7_SPACES_H */ |  | ||||||
| @@ -1,45 +0,0 @@ | |||||||
| From patchwork Tue Jul 18 10:17:26 2017 |  | ||||||
| Content-Type: text/plain; charset="utf-8" |  | ||||||
| MIME-Version: 1.0 |  | ||||||
| Content-Transfer-Encoding: 7bit |  | ||||||
| Subject: [5/9] MIPS: AR7: allow NULL clock for clk_get_rate |  | ||||||
| X-Patchwork-Submitter: Jonas Gorski <jonas.gorski@gmail.com> |  | ||||||
| X-Patchwork-Id: 16775 |  | ||||||
| Message-Id: <20170718101730.2541-6-jonas.gorski@gmail.com> |  | ||||||
| To: unlisted-recipients:; (no To-header on input) |  | ||||||
| Cc: Ralf Baechle <ralf@linux-mips.org>, |  | ||||||
|  Paul Gortmaker <paul.gortmaker@windriver.com>, |  | ||||||
|  James Hogan <james.hogan@imgtec.com>, |  | ||||||
|  linux-mips@linux-mips.org, linux-kernel@vger.kernel.org |  | ||||||
| Date: Tue, 18 Jul 2017 12:17:26 +0200 |  | ||||||
| From: Jonas Gorski <jonas.gorski@gmail.com> |  | ||||||
| List-Id: linux-mips <linux-mips.eddie.linux-mips.org> |  | ||||||
|  |  | ||||||
| Make the behaviour of clk_get_rate consistent with common clk's |  | ||||||
| clk_get_rate by accepting NULL clocks as parameter. Some device |  | ||||||
| drivers rely on this, and will cause an OOPS otherwise. |  | ||||||
|  |  | ||||||
| Fixes: 780019ddf02f ("MIPS: AR7: Implement clock API") |  | ||||||
| Cc: Ralf Baechle <ralf@linux-mips.org> |  | ||||||
| Cc: Paul Gortmaker <paul.gortmaker@windriver.com> |  | ||||||
| Cc: James Hogan <james.hogan@imgtec.com> |  | ||||||
| Cc: linux-mips@linux-mips.org |  | ||||||
| Cc: linux-kernel@vger.kernel.org |  | ||||||
| Reported-by: Mathias Kresin <dev@kresin.me> |  | ||||||
| Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com> |  | ||||||
| --- |  | ||||||
|  arch/mips/ar7/clock.c | 3 +++ |  | ||||||
|  1 file changed, 3 insertions(+) |  | ||||||
|  |  | ||||||
| --- a/arch/mips/ar7/clock.c |  | ||||||
| +++ b/arch/mips/ar7/clock.c |  | ||||||
| @@ -430,6 +430,9 @@ EXPORT_SYMBOL(clk_disable); |  | ||||||
|   |  | ||||||
|  unsigned long clk_get_rate(struct clk *clk) |  | ||||||
|  { |  | ||||||
| +	if (!clk) |  | ||||||
| +		return 0; |  | ||||||
| + |  | ||||||
|  	return clk->rate; |  | ||||||
|  } |  | ||||||
|  EXPORT_SYMBOL(clk_get_rate); |  | ||||||
| @@ -1,22 +0,0 @@ | |||||||
| --- a/drivers/mtd/Makefile |  | ||||||
| +++ b/drivers/mtd/Makefile |  | ||||||
| @@ -12,7 +12,7 @@ obj-$(CONFIG_MTD_OF_PARTS)	+= ofpart.o |  | ||||||
|  obj-$(CONFIG_MTD_REDBOOT_PARTS) += redboot.o |  | ||||||
|  obj-$(CONFIG_MTD_CMDLINE_PARTS) += cmdlinepart.o |  | ||||||
|  obj-$(CONFIG_MTD_AFS_PARTS)	+= afs.o |  | ||||||
| -obj-$(CONFIG_MTD_AR7_PARTS)	+= ar7part.o |  | ||||||
| +obj-$(CONFIG_MTD_AR7_PARTS)	+= ar7part.o titanpart.o |  | ||||||
|  obj-$(CONFIG_MTD_BCM63XX_PARTS)	+= bcm63xxpart.o |  | ||||||
|  obj-$(CONFIG_MTD_BCM47XX_PARTS)	+= bcm47xxpart.o |  | ||||||
|  obj-$(CONFIG_MTD_MYLOADER_PARTS) += myloader.o |  | ||||||
| --- a/arch/mips/ar7/platform.c |  | ||||||
| +++ b/arch/mips/ar7/platform.c |  | ||||||
| @@ -199,7 +199,7 @@ static struct resource physmap_flash_res |  | ||||||
|  	.name	= "mem", |  | ||||||
|  	.flags	= IORESOURCE_MEM, |  | ||||||
|  	.start	= 0x10000000, |  | ||||||
| -	.end	= 0x107fffff, |  | ||||||
| +	.end	= 0x11ffffff, |  | ||||||
|  }; |  | ||||||
|   |  | ||||||
|  static const char *ar7_probe_types[] = { "ar7part", NULL }; |  | ||||||
| @@ -1,300 +0,0 @@ | |||||||
| --- a/drivers/vlynq/vlynq.c |  | ||||||
| +++ b/drivers/vlynq/vlynq.c |  | ||||||
| @@ -119,20 +119,40 @@ static int vlynq_linked(struct vlynq_dev |  | ||||||
|  	return 0; |  | ||||||
|  } |  | ||||||
|   |  | ||||||
| +static volatile int vlynq_delay_value_new = 0; |  | ||||||
| + |  | ||||||
| +static void vlynq_delay_wait(u32 count) |  | ||||||
| +{ |  | ||||||
| +	/* Code adopted from original vlynq driver */ |  | ||||||
| +	int i = 0; |  | ||||||
| +	volatile int *ptr = &vlynq_delay_value_new; |  | ||||||
| +	*ptr = 0; |  | ||||||
| + |  | ||||||
| +	/* We are assuming that the each cycle takes about |  | ||||||
| +	 * 23 assembly instructions. */ |  | ||||||
| +	for(i = 0; i < (count + 23)/23; i++) |  | ||||||
| +		*ptr = *ptr + 1; |  | ||||||
| +} |  | ||||||
| + |  | ||||||
|  static void vlynq_reset(struct vlynq_device *dev) |  | ||||||
|  { |  | ||||||
| +	u32 rtm = readl(&dev->local->revision); |  | ||||||
| + |  | ||||||
| +	rtm = rtm < 0x00010205 || readl(&dev->local->status) & 0x800 == 0 ? |  | ||||||
| +			0 : 0x600000; |  | ||||||
| + |  | ||||||
|  	writel(readl(&dev->local->control) | VLYNQ_CTRL_RESET, |  | ||||||
|  			&dev->local->control); |  | ||||||
|   |  | ||||||
|  	/* Wait for the devices to finish resetting */ |  | ||||||
| -	msleep(5); |  | ||||||
| +	vlynq_delay_wait(0xffffff); |  | ||||||
|   |  | ||||||
|  	/* Remove reset bit */ |  | ||||||
| -	writel(readl(&dev->local->control) & ~VLYNQ_CTRL_RESET, |  | ||||||
| +	writel(readl(&dev->local->control) & ~VLYNQ_CTRL_RESET | rtm, |  | ||||||
|  			&dev->local->control); |  | ||||||
|   |  | ||||||
|  	/* Give some time for the devices to settle */ |  | ||||||
| -	msleep(5); |  | ||||||
| +	vlynq_delay_wait(0xffffff); |  | ||||||
|  } |  | ||||||
|   |  | ||||||
|  static void vlynq_irq_unmask(struct irq_data *d) |  | ||||||
| @@ -379,6 +399,61 @@ void vlynq_unregister_driver(struct vlyn |  | ||||||
|  } |  | ||||||
|  EXPORT_SYMBOL(vlynq_unregister_driver); |  | ||||||
|   |  | ||||||
| +enum vlynq_clk_src { |  | ||||||
| +	vlynq_clk_external, |  | ||||||
| +	vlynq_clk_local, |  | ||||||
| +	vlynq_clk_remote, |  | ||||||
| +	vlynq_clk_invalid, |  | ||||||
| +}; |  | ||||||
| + |  | ||||||
| +static int __vlynq_set_clocks(struct vlynq_device *dev, |  | ||||||
| +				enum vlynq_clk_src clk_dir, |  | ||||||
| +				int lclk_div, int rclk_div) |  | ||||||
| +{ |  | ||||||
| +	u32 reg; |  | ||||||
| + |  | ||||||
| +	if (clk_dir == vlynq_clk_invalid) { |  | ||||||
| +		printk(KERN_ERR "%s: attempt to set invalid clocking\n", |  | ||||||
| +				dev_name(&dev->dev)); |  | ||||||
| +		return -EINVAL; |  | ||||||
| +	} |  | ||||||
| + |  | ||||||
| +	reg = readl(&dev->local->control); |  | ||||||
| +	if (readl(&dev->local->revision) < 0x00010205) { |  | ||||||
| +		if (clk_dir & vlynq_clk_local) |  | ||||||
| +			reg |= VLYNQ_CTRL_CLOCK_INT; |  | ||||||
| +		else |  | ||||||
| +			reg &= ~VLYNQ_CTRL_CLOCK_INT; |  | ||||||
| +	} |  | ||||||
| +	reg &= ~VLYNQ_CTRL_CLOCK_MASK; |  | ||||||
| +	reg |= VLYNQ_CTRL_CLOCK_DIV(lclk_div); |  | ||||||
| +	writel(reg, &dev->local->control); |  | ||||||
| + |  | ||||||
| +	if (!vlynq_linked(dev)) |  | ||||||
| +		return -ENODEV; |  | ||||||
| + |  | ||||||
| +	printk(KERN_INFO "%s: local VLYNQ protocol rev. is 0x%08x\n", |  | ||||||
| +			dev_name(&dev->dev), readl(&dev->local->revision)); |  | ||||||
| +	printk(KERN_INFO "%s: remote VLYNQ protocol rev. is 0x%08x\n", |  | ||||||
| +			dev_name(&dev->dev), readl(&dev->remote->revision)); |  | ||||||
| + |  | ||||||
| +	reg = readl(&dev->remote->control); |  | ||||||
| +	if (readl(&dev->remote->revision) < 0x00010205) { |  | ||||||
| +		if (clk_dir & vlynq_clk_remote) |  | ||||||
| +			reg |= VLYNQ_CTRL_CLOCK_INT; |  | ||||||
| +		else |  | ||||||
| +			reg &= ~VLYNQ_CTRL_CLOCK_INT; |  | ||||||
| +	} |  | ||||||
| +	reg &= ~VLYNQ_CTRL_CLOCK_MASK; |  | ||||||
| +	reg |= VLYNQ_CTRL_CLOCK_DIV(rclk_div); |  | ||||||
| +	writel(reg, &dev->remote->control); |  | ||||||
| + |  | ||||||
| +	if (!vlynq_linked(dev)) |  | ||||||
| +		return -ENODEV; |  | ||||||
| + |  | ||||||
| +	return 0; |  | ||||||
| +} |  | ||||||
| + |  | ||||||
|  /* |  | ||||||
|   * A VLYNQ remote device can clock the VLYNQ bus master |  | ||||||
|   * using a dedicated clock line. In that case, both the |  | ||||||
| @@ -392,29 +467,16 @@ static int __vlynq_try_remote(struct vly |  | ||||||
|  	int i; |  | ||||||
|   |  | ||||||
|  	vlynq_reset(dev); |  | ||||||
| -	for (i = dev->dev_id ? vlynq_rdiv2 : vlynq_rdiv8; dev->dev_id ? |  | ||||||
| -			i <= vlynq_rdiv8 : i >= vlynq_rdiv2; |  | ||||||
| -		dev->dev_id ? i++ : i--) { |  | ||||||
| +	for (i = 0; i <= 7; i++) { |  | ||||||
|   |  | ||||||
|  		if (!vlynq_linked(dev)) |  | ||||||
|  			break; |  | ||||||
|   |  | ||||||
| -		writel((readl(&dev->remote->control) & |  | ||||||
| -				~VLYNQ_CTRL_CLOCK_MASK) | |  | ||||||
| -				VLYNQ_CTRL_CLOCK_INT | |  | ||||||
| -				VLYNQ_CTRL_CLOCK_DIV(i - vlynq_rdiv1), |  | ||||||
| -				&dev->remote->control); |  | ||||||
| -		writel((readl(&dev->local->control) |  | ||||||
| -				& ~(VLYNQ_CTRL_CLOCK_INT | |  | ||||||
| -				VLYNQ_CTRL_CLOCK_MASK)) | |  | ||||||
| -				VLYNQ_CTRL_CLOCK_DIV(i - vlynq_rdiv1), |  | ||||||
| -				&dev->local->control); |  | ||||||
| - |  | ||||||
| -		if (vlynq_linked(dev)) { |  | ||||||
| -			printk(KERN_DEBUG |  | ||||||
| -				"%s: using remote clock divisor %d\n", |  | ||||||
| -				dev_name(&dev->dev), i - vlynq_rdiv1 + 1); |  | ||||||
| -			dev->divisor = i; |  | ||||||
| +		if (!__vlynq_set_clocks(dev, vlynq_clk_remote, i, i)) { |  | ||||||
| +			printk(KERN_INFO |  | ||||||
| +					"%s: using remote clock divisor %d\n", |  | ||||||
| +					dev_name(&dev->dev), i + 1); |  | ||||||
| +			dev->divisor = i + vlynq_rdiv1; |  | ||||||
|  			return 0; |  | ||||||
|  		} else { |  | ||||||
|  			vlynq_reset(dev); |  | ||||||
| @@ -433,25 +495,17 @@ static int __vlynq_try_remote(struct vly |  | ||||||
|   */ |  | ||||||
|  static int __vlynq_try_local(struct vlynq_device *dev) |  | ||||||
|  { |  | ||||||
| -	int i; |  | ||||||
| +	int i, dir = !dev->dev_id; |  | ||||||
|   |  | ||||||
|  	vlynq_reset(dev); |  | ||||||
|   |  | ||||||
| -	for (i = dev->dev_id ? vlynq_ldiv2 : vlynq_ldiv8; dev->dev_id ? |  | ||||||
| -			i <= vlynq_ldiv8 : i >= vlynq_ldiv2; |  | ||||||
| -		dev->dev_id ? i++ : i--) { |  | ||||||
| - |  | ||||||
| -		writel((readl(&dev->local->control) & |  | ||||||
| -				~VLYNQ_CTRL_CLOCK_MASK) | |  | ||||||
| -				VLYNQ_CTRL_CLOCK_INT | |  | ||||||
| -				VLYNQ_CTRL_CLOCK_DIV(i - vlynq_ldiv1), |  | ||||||
| -				&dev->local->control); |  | ||||||
| - |  | ||||||
| -		if (vlynq_linked(dev)) { |  | ||||||
| -			printk(KERN_DEBUG |  | ||||||
| -				"%s: using local clock divisor %d\n", |  | ||||||
| -				dev_name(&dev->dev), i - vlynq_ldiv1 + 1); |  | ||||||
| -			dev->divisor = i; |  | ||||||
| +	for (i = dir ? 7 : 0; dir ? i >= 0 : i <= 7; dir ? i-- : i++) { |  | ||||||
| + |  | ||||||
| +		if (!__vlynq_set_clocks(dev, vlynq_clk_local, i, 0)) { |  | ||||||
| +			printk(KERN_INFO |  | ||||||
| +					"%s: using local clock divisor %d\n", |  | ||||||
| +					dev_name(&dev->dev), i + 1); |  | ||||||
| +			dev->divisor = i + vlynq_ldiv1; |  | ||||||
|  			return 0; |  | ||||||
|  		} else { |  | ||||||
|  			vlynq_reset(dev); |  | ||||||
| @@ -473,18 +527,10 @@ static int __vlynq_try_external(struct v |  | ||||||
|  	if (!vlynq_linked(dev)) |  | ||||||
|  		return -ENODEV; |  | ||||||
|   |  | ||||||
| -	writel((readl(&dev->remote->control) & |  | ||||||
| -			~VLYNQ_CTRL_CLOCK_INT), |  | ||||||
| -			&dev->remote->control); |  | ||||||
| - |  | ||||||
| -	writel((readl(&dev->local->control) & |  | ||||||
| -			~VLYNQ_CTRL_CLOCK_INT), |  | ||||||
| -			&dev->local->control); |  | ||||||
| - |  | ||||||
| -	if (vlynq_linked(dev)) { |  | ||||||
| -		printk(KERN_DEBUG "%s: using external clock\n", |  | ||||||
| -			dev_name(&dev->dev)); |  | ||||||
| -			dev->divisor = vlynq_div_external; |  | ||||||
| +	if (!__vlynq_set_clocks(dev, vlynq_clk_external, 0, 0)) { |  | ||||||
| +		printk(KERN_INFO "%s: using external clock\n", |  | ||||||
| +				dev_name(&dev->dev)); |  | ||||||
| +				dev->divisor = vlynq_div_external; |  | ||||||
|  		return 0; |  | ||||||
|  	} |  | ||||||
|   |  | ||||||
| @@ -501,24 +547,16 @@ static int __vlynq_enable_device(struct |  | ||||||
|  		return result; |  | ||||||
|   |  | ||||||
|  	switch (dev->divisor) { |  | ||||||
| -	case vlynq_div_external: |  | ||||||
|  	case vlynq_div_auto: |  | ||||||
|  		/* When the device is brought from reset it should have clock |  | ||||||
|  		 * generation negotiated by hardware. |  | ||||||
|  		 * Check which device is generating clocks and perform setup |  | ||||||
|  		 * accordingly */ |  | ||||||
| -		if (vlynq_linked(dev) && readl(&dev->remote->control) & |  | ||||||
| -		   VLYNQ_CTRL_CLOCK_INT) { |  | ||||||
| -			if (!__vlynq_try_remote(dev) || |  | ||||||
| -				!__vlynq_try_local(dev)  || |  | ||||||
| -				!__vlynq_try_external(dev)) |  | ||||||
| -				return 0; |  | ||||||
| -		} else { |  | ||||||
| -			if (!__vlynq_try_external(dev) || |  | ||||||
| -				!__vlynq_try_local(dev)    || |  | ||||||
| -				!__vlynq_try_remote(dev)) |  | ||||||
| -				return 0; |  | ||||||
| -		} |  | ||||||
| +		if (!__vlynq_try_remote(dev) || !__vlynq_try_local(dev)) |  | ||||||
| +			return 0; |  | ||||||
| +	case vlynq_div_external: |  | ||||||
| +		if (!__vlynq_try_external(dev)) |  | ||||||
| +			return 0; |  | ||||||
|  		break; |  | ||||||
|  	case vlynq_ldiv1: |  | ||||||
|  	case vlynq_ldiv2: |  | ||||||
| @@ -528,15 +566,12 @@ static int __vlynq_enable_device(struct |  | ||||||
|  	case vlynq_ldiv6: |  | ||||||
|  	case vlynq_ldiv7: |  | ||||||
|  	case vlynq_ldiv8: |  | ||||||
| -		writel(VLYNQ_CTRL_CLOCK_INT | |  | ||||||
| -			VLYNQ_CTRL_CLOCK_DIV(dev->divisor - |  | ||||||
| -			vlynq_ldiv1), &dev->local->control); |  | ||||||
| -		writel(0, &dev->remote->control); |  | ||||||
| -		if (vlynq_linked(dev)) { |  | ||||||
| -			printk(KERN_DEBUG |  | ||||||
| -				"%s: using local clock divisor %d\n", |  | ||||||
| -				dev_name(&dev->dev), |  | ||||||
| -				dev->divisor - vlynq_ldiv1 + 1); |  | ||||||
| +		if (!__vlynq_set_clocks(dev, vlynq_clk_local, dev->divisor - |  | ||||||
| +				vlynq_ldiv1, 0)) { |  | ||||||
| +			printk(KERN_INFO |  | ||||||
| +					"%s: using local clock divisor %d\n", |  | ||||||
| +					dev_name(&dev->dev), |  | ||||||
| +					dev->divisor - vlynq_ldiv1 + 1); |  | ||||||
|  			return 0; |  | ||||||
|  		} |  | ||||||
|  		break; |  | ||||||
| @@ -548,20 +583,17 @@ static int __vlynq_enable_device(struct |  | ||||||
|  	case vlynq_rdiv6: |  | ||||||
|  	case vlynq_rdiv7: |  | ||||||
|  	case vlynq_rdiv8: |  | ||||||
| -		writel(0, &dev->local->control); |  | ||||||
| -		writel(VLYNQ_CTRL_CLOCK_INT | |  | ||||||
| -			VLYNQ_CTRL_CLOCK_DIV(dev->divisor - |  | ||||||
| -			vlynq_rdiv1), &dev->remote->control); |  | ||||||
| -		if (vlynq_linked(dev)) { |  | ||||||
| -			printk(KERN_DEBUG |  | ||||||
| -				"%s: using remote clock divisor %d\n", |  | ||||||
| -				dev_name(&dev->dev), |  | ||||||
| -				dev->divisor - vlynq_rdiv1 + 1); |  | ||||||
| +		if (!__vlynq_set_clocks(dev, vlynq_clk_remote, 0, |  | ||||||
| +				dev->divisor - vlynq_rdiv1)) { |  | ||||||
| +			printk(KERN_INFO |  | ||||||
| +					"%s: using remote clock divisor %d\n", |  | ||||||
| +					dev_name(&dev->dev), |  | ||||||
| +					dev->divisor - vlynq_rdiv1 + 1); |  | ||||||
|  			return 0; |  | ||||||
|  		} |  | ||||||
|  		break; |  | ||||||
|  	} |  | ||||||
| - |  | ||||||
| +	vlynq_reset(dev); |  | ||||||
|  	ops->off(dev); |  | ||||||
|  	return -ENODEV; |  | ||||||
|  } |  | ||||||
| @@ -732,14 +764,14 @@ static int vlynq_probe(struct platform_d |  | ||||||
|  	platform_set_drvdata(pdev, dev); |  | ||||||
|   |  | ||||||
|  	printk(KERN_INFO "%s: regs 0x%p, irq %d, mem 0x%p\n", |  | ||||||
| -	       dev_name(&dev->dev), (void *)dev->regs_start, dev->irq, |  | ||||||
| -	       (void *)dev->mem_start); |  | ||||||
| +			dev_name(&dev->dev), (void *)dev->regs_start, |  | ||||||
| +			dev->irq, (void *)dev->mem_start); |  | ||||||
|   |  | ||||||
|  	dev->dev_id = 0; |  | ||||||
|  	dev->divisor = vlynq_div_auto; |  | ||||||
| -	result = __vlynq_enable_device(dev); |  | ||||||
| -	if (result == 0) { |  | ||||||
| +	if (!__vlynq_enable_device(dev)) { |  | ||||||
|  		dev->dev_id = readl(&dev->remote->chip); |  | ||||||
| +		vlynq_reset(dev); |  | ||||||
|  		((struct plat_vlynq_ops *)(dev->dev.platform_data))->off(dev); |  | ||||||
|  	} |  | ||||||
|  	if (dev->dev_id) |  | ||||||
| @@ -1,15 +0,0 @@ | |||||||
| --- a/arch/mips/ar7/memory.c |  | ||||||
| +++ b/arch/mips/ar7/memory.c |  | ||||||
| @@ -66,5 +66,11 @@ void __init prom_meminit(void) |  | ||||||
|   |  | ||||||
|  void __init prom_free_prom_memory(void) |  | ||||||
|  { |  | ||||||
| -	/* Nothing to free */ |  | ||||||
| +	/* adapted from arch/mips/txx9/generic/setup.c */ |  | ||||||
| +	unsigned long saddr = PHYS_OFFSET + PAGE_SIZE; |  | ||||||
| +	unsigned long eaddr = __pa_symbol(&_text); |  | ||||||
| + |  | ||||||
| +	/* free memory between prom-record and kernel _text base */ |  | ||||||
| +	if (saddr < eaddr) |  | ||||||
| +		free_init_pages("prom memory", saddr, eaddr); |  | ||||||
|  } |  | ||||||
| @@ -1,85 +0,0 @@ | |||||||
| --- a/arch/mips/ar7/Platform |  | ||||||
| +++ b/arch/mips/ar7/Platform |  | ||||||
| @@ -3,4 +3,9 @@ |  | ||||||
|  # |  | ||||||
|  platform-$(CONFIG_AR7)		+= ar7/ |  | ||||||
|  cflags-$(CONFIG_AR7)		+= -I$(srctree)/arch/mips/include/asm/mach-ar7 |  | ||||||
| -load-$(CONFIG_AR7)		+= 0xffffffff94100000 |  | ||||||
| +load-$(CONFIG_AR7_TI)		+= 0xffffffff94100000 |  | ||||||
| + |  | ||||||
| +# |  | ||||||
| +# AudioCodes AC49x |  | ||||||
| +# |  | ||||||
| +load-$(CONFIG_AR7_AC49X)	+= 0xffffffff945ca000 |  | ||||||
| --- a/arch/mips/ar7/setup.c |  | ||||||
| +++ b/arch/mips/ar7/setup.c |  | ||||||
| @@ -69,6 +69,10 @@ const char *get_system_type(void) |  | ||||||
|  			return "TI AR7 (TNETV1056)"; |  | ||||||
|  		case TITAN_CHIP_1060: |  | ||||||
|  			return "TI AR7 (TNETV1060)"; |  | ||||||
| +		case TITAN_CHIP_AC495: |  | ||||||
| +			return "AudioCodes AC495"; |  | ||||||
| +		case TITAN_CHIP_AC496: |  | ||||||
| +			return "AudioCodes AC496"; |  | ||||||
|  		} |  | ||||||
|  	default: |  | ||||||
|  		return "TI AR7 (unknown)"; |  | ||||||
| --- a/arch/mips/include/asm/mach-ar7/ar7.h |  | ||||||
| +++ b/arch/mips/include/asm/mach-ar7/ar7.h |  | ||||||
| @@ -92,6 +92,8 @@ |  | ||||||
|  #define TITAN_CHIP_1055 0x0e |  | ||||||
|  #define TITAN_CHIP_1056 0x0d |  | ||||||
|  #define TITAN_CHIP_1060 0x07 |  | ||||||
| +#define TITAN_CHIP_AC495	0x00 |  | ||||||
| +#define TITAN_CHIP_AC496	0x02 |  | ||||||
|   |  | ||||||
|  /* Interrupts */ |  | ||||||
|  #define AR7_IRQ_UART0	15 |  | ||||||
| --- a/arch/mips/Kconfig |  | ||||||
| +++ b/arch/mips/Kconfig |  | ||||||
| @@ -94,7 +94,7 @@ config AR7 |  | ||||||
|  	select HAVE_CLK |  | ||||||
|  	help |  | ||||||
|  	  Support for the Texas Instruments AR7 System-on-a-Chip |  | ||||||
| -	  family: TNETD7100, 7200 and 7300. |  | ||||||
| +	  family: TI TNETD7100, 7200, 7300 and AudioCodes AC49x. |  | ||||||
|   |  | ||||||
|  config ATH79 |  | ||||||
|  	bool "Atheros AR71XX/AR724X/AR913X based boards" |  | ||||||
| @@ -835,6 +835,7 @@ config MIPS_PARAVIRT |  | ||||||
|  endchoice |  | ||||||
|   |  | ||||||
|  source "arch/mips/alchemy/Kconfig" |  | ||||||
| +source "arch/mips/ar7/Kconfig" |  | ||||||
|  source "arch/mips/ath79/Kconfig" |  | ||||||
|  source "arch/mips/bcm47xx/Kconfig" |  | ||||||
|  source "arch/mips/bcm63xx/Kconfig" |  | ||||||
| --- /dev/null |  | ||||||
| +++ b/arch/mips/ar7/Kconfig |  | ||||||
| @@ -0,0 +1,26 @@ |  | ||||||
| +if AR7 |  | ||||||
| + |  | ||||||
| +config AR7_TI |  | ||||||
| +	bool |  | ||||||
| + |  | ||||||
| +config AR7_AC49X |  | ||||||
| +	bool |  | ||||||
| + |  | ||||||
| +choice |  | ||||||
| +	prompt "AR7 SoC family selection" |  | ||||||
| +	default AR7_TYPE_TI |  | ||||||
| +	depends on AR7 |  | ||||||
| +	help |  | ||||||
| +	  Select AR7 MIPS SoC implementation. |  | ||||||
| + |  | ||||||
| +	config AR7_TYPE_TI |  | ||||||
| +		bool "Texas Instruments AR7" |  | ||||||
| +		select AR7_TI |  | ||||||
| + |  | ||||||
| +	config AR7_TYPE_AC49X |  | ||||||
| +		bool "AudioCodes AC49X" |  | ||||||
| +		select AR7_AC49X |  | ||||||
| + |  | ||||||
| +endchoice |  | ||||||
| + |  | ||||||
| +endif |  | ||||||
| @@ -1,20 +0,0 @@ | |||||||
| --- a/arch/mips/ar7/prom.c |  | ||||||
| +++ b/arch/mips/ar7/prom.c |  | ||||||
| @@ -70,6 +70,7 @@ struct psbl_rec { |  | ||||||
|  }; |  | ||||||
|   |  | ||||||
|  static const char psp_env_version[] __initconst = "TIENV0.8"; |  | ||||||
| +static const char psp_env_version_ac49x[] __initconst = "MaxENV0.2"; |  | ||||||
|   |  | ||||||
|  struct psp_env_chunk { |  | ||||||
|  	u8	num; |  | ||||||
| @@ -186,7 +187,8 @@ static void __init ar7_init_env(struct e |  | ||||||
|  	struct psbl_rec *psbl = (struct psbl_rec *)(KSEG1ADDR(0x14000300)); |  | ||||||
|  	void *psp_env = (void *)KSEG1ADDR(psbl->env_base); |  | ||||||
|   |  | ||||||
| -	if (strcmp(psp_env, psp_env_version) == 0) { |  | ||||||
| +	if (strcmp(psp_env, psp_env_version) == 0 || |  | ||||||
| +	    strcmp(psp_env, psp_env_version_ac49x) == 0) { |  | ||||||
|  		parse_psp_env(psp_env); |  | ||||||
|  	} else { |  | ||||||
|  		for (i = 0; i < MAX_ENTRY; i++, env++) |  | ||||||
| @@ -1,35 +0,0 @@ | |||||||
| --- a/drivers/mtd/Kconfig |  | ||||||
| +++ b/drivers/mtd/Kconfig |  | ||||||
| @@ -164,6 +164,11 @@ config MTD_OF_PARTS |  | ||||||
|  	  the partition map from the children of the flash node, |  | ||||||
|  	  as described in Documentation/devicetree/booting-without-of.txt. |  | ||||||
|   |  | ||||||
| +config MTD_AC49X_PARTS |  | ||||||
| +	tristate "AudioCodes AC49X partitioning support" |  | ||||||
| +	---help--- |  | ||||||
| +	  AudioCodes AC49X partitioning support |  | ||||||
| + |  | ||||||
|  config MTD_AR7_PARTS |  | ||||||
|  	tristate "TI AR7 partitioning support" |  | ||||||
|  	---help--- |  | ||||||
| --- a/drivers/mtd/Makefile |  | ||||||
| +++ b/drivers/mtd/Makefile |  | ||||||
| @@ -11,6 +11,7 @@ obj-$(CONFIG_MTD_SPLIT)		+= mtdsplit/ |  | ||||||
|  obj-$(CONFIG_MTD_OF_PARTS)	+= ofpart.o |  | ||||||
|  obj-$(CONFIG_MTD_REDBOOT_PARTS) += redboot.o |  | ||||||
|  obj-$(CONFIG_MTD_CMDLINE_PARTS) += cmdlinepart.o |  | ||||||
| +obj-$(CONFIG_MTD_AC49X_PARTS)	+= ac49xpart.o |  | ||||||
|  obj-$(CONFIG_MTD_AFS_PARTS)	+= afs.o |  | ||||||
|  obj-$(CONFIG_MTD_AR7_PARTS)	+= ar7part.o titanpart.o |  | ||||||
|  obj-$(CONFIG_MTD_BCM63XX_PARTS)	+= bcm63xxpart.o |  | ||||||
| --- a/arch/mips/ar7/platform.c |  | ||||||
| +++ b/arch/mips/ar7/platform.c |  | ||||||
| @@ -202,7 +202,7 @@ static struct resource physmap_flash_res |  | ||||||
|  	.end	= 0x11ffffff, |  | ||||||
|  }; |  | ||||||
|   |  | ||||||
| -static const char *ar7_probe_types[] = { "ar7part", NULL }; |  | ||||||
| +static const char *ar7_probe_types[] = { "ac49xpart", "ar7part", NULL }; |  | ||||||
|   |  | ||||||
|  static struct physmap_flash_data physmap_flash_data = { |  | ||||||
|  	.width	= 2, |  | ||||||
| @@ -1,118 +0,0 @@ | |||||||
| --- a/drivers/mtd/ar7part.c |  | ||||||
| +++ b/drivers/mtd/ar7part.c |  | ||||||
| @@ -30,11 +30,14 @@ |  | ||||||
|   |  | ||||||
|  #include <uapi/linux/magic.h> |  | ||||||
|   |  | ||||||
| +#include <asm/mach-ar7/prom.h> |  | ||||||
| + |  | ||||||
|  #define AR7_PARTS	4 |  | ||||||
|  #define ROOT_OFFSET	0xe0000 |  | ||||||
|   |  | ||||||
|  #define LOADER_MAGIC1	le32_to_cpu(0xfeedfa42) |  | ||||||
|  #define LOADER_MAGIC2	le32_to_cpu(0xfeed1281) |  | ||||||
| +#define LOADER_MAGIC3	le32_to_cpu(0x434d4d4c) |  | ||||||
|   |  | ||||||
|  struct ar7_bin_rec { |  | ||||||
|  	unsigned int checksum; |  | ||||||
| @@ -42,12 +45,16 @@ struct ar7_bin_rec { |  | ||||||
|  	unsigned int address; |  | ||||||
|  }; |  | ||||||
|   |  | ||||||
| +int create_titan_partitions(struct mtd_info *master, |  | ||||||
| +        struct mtd_partition **pparts, |  | ||||||
| +        struct mtd_part_parser_data *data); |  | ||||||
| + |  | ||||||
|  static int create_mtd_partitions(struct mtd_info *master, |  | ||||||
|  				 struct mtd_partition **pparts, |  | ||||||
|  				 struct mtd_part_parser_data *data) |  | ||||||
|  { |  | ||||||
|  	struct ar7_bin_rec header; |  | ||||||
| -	unsigned int offset; |  | ||||||
| +	unsigned int offset, mtd_start, mtd_end; |  | ||||||
|  	size_t len; |  | ||||||
|  	unsigned int pre_size = master->erasesize, post_size = 0; |  | ||||||
|  	unsigned int root_offset = ROOT_OFFSET; |  | ||||||
| @@ -55,6 +62,16 @@ static int create_mtd_partitions(struct |  | ||||||
|  	int retries = 10; |  | ||||||
|  	struct mtd_partition *ar7_parts; |  | ||||||
|   |  | ||||||
| +	const char *prom_str = prom_getenv("ProductID"); |  | ||||||
| +	char mtd_name[] = "mtd1"; |  | ||||||
| +	if(prom_str && |  | ||||||
| +		(strcmp(prom_str, "CYWL")==0 || |  | ||||||
| +		strcmp(prom_str, "CYWM")==0 || |  | ||||||
| +		strcmp(prom_str, "CYLM")==0 || |  | ||||||
| +		strcmp(prom_str, "CYLL")==0)){ |  | ||||||
| +		return create_titan_partitions(master, pparts, data); |  | ||||||
| +	} |  | ||||||
| + |  | ||||||
|  	ar7_parts = kzalloc(sizeof(*ar7_parts) * AR7_PARTS, GFP_KERNEL); |  | ||||||
|  	if (!ar7_parts) |  | ||||||
|  		return -ENOMEM; |  | ||||||
| @@ -83,34 +100,39 @@ static int create_mtd_partitions(struct |  | ||||||
|   |  | ||||||
|  	pre_size = offset; |  | ||||||
|   |  | ||||||
| -	if (!ar7_parts[1].offset) { |  | ||||||
| -		ar7_parts[1].offset = master->size - master->erasesize; |  | ||||||
| -		post_size = master->erasesize; |  | ||||||
| -	} |  | ||||||
| - |  | ||||||
|  	switch (header.checksum) { |  | ||||||
| -	case LOADER_MAGIC1: |  | ||||||
| -		while (header.length) { |  | ||||||
| -			offset += sizeof(header) + header.length; |  | ||||||
| -			mtd_read(master, offset, sizeof(header), &len, |  | ||||||
| -				 (uint8_t *)&header); |  | ||||||
| -		} |  | ||||||
| -		root_offset = offset + sizeof(header) + 4; |  | ||||||
| -		break; |  | ||||||
|  	case LOADER_MAGIC2: |  | ||||||
| +		for (retries = 0; retries <= 9; retries++) { |  | ||||||
| +			mtd_name[3] = '0' + retries; |  | ||||||
| +			prom_str = prom_getenv(mtd_name); |  | ||||||
| +			if (prom_str == NULL) |  | ||||||
| +				continue; |  | ||||||
| +			sscanf(prom_str, "%i,%i", &mtd_start, &mtd_end); |  | ||||||
| +			if (pre_size == (mtd_start & 0x1ffffff)) { |  | ||||||
| +				ar7_parts[1].offset = mtd_end &= 0x1ffffff; |  | ||||||
| +				ar7_parts[1].size = post_size = master->size - mtd_end; |  | ||||||
| +				break; |  | ||||||
| +			} |  | ||||||
| +		} |  | ||||||
| +	case LOADER_MAGIC1: |  | ||||||
| +		root_offset = (header.checksum == LOADER_MAGIC1) ? 4 : 0; |  | ||||||
|  		while (header.length) { |  | ||||||
|  			offset += sizeof(header) + header.length; |  | ||||||
|  			mtd_read(master, offset, sizeof(header), &len, |  | ||||||
|  				 (uint8_t *)&header); |  | ||||||
|  		} |  | ||||||
| -		root_offset = offset + sizeof(header) + 4 + 0xff; |  | ||||||
| -		root_offset &= ~(uint32_t)0xff; |  | ||||||
| +		root_offset += offset + sizeof(header); |  | ||||||
|  		break; |  | ||||||
|  	default: |  | ||||||
|  		printk(KERN_WARNING "Unknown magic: %08x\n", header.checksum); |  | ||||||
|  		break; |  | ||||||
|  	} |  | ||||||
|   |  | ||||||
| +	if (!ar7_parts[1].offset) { |  | ||||||
| +		post_size = master->erasesize; |  | ||||||
| +		ar7_parts[1].offset = master->size - post_size; |  | ||||||
| +	} |  | ||||||
| + |  | ||||||
|  	mtd_read(master, root_offset, sizeof(header), &len, (u8 *)&header); |  | ||||||
|  	if (header.checksum != SQUASHFS_MAGIC) { |  | ||||||
|  		root_offset += master->erasesize - 1; |  | ||||||
| --- a/drivers/mtd/titanpart.c |  | ||||||
| +++ b/drivers/mtd/titanpart.c |  | ||||||
| @@ -149,7 +149,7 @@ static void titan_add_partition(char * e |  | ||||||
|  } |  | ||||||
|  int create_titan_partitions(struct mtd_info *master, |  | ||||||
|  	struct mtd_partition **pparts, |  | ||||||
| -	unsigned long origin) |  | ||||||
| +	struct mtd_part_parser_data *data) |  | ||||||
|  { |  | ||||||
|  	struct nsp_img_hdr_head		hdr; |  | ||||||
|  	struct nsp_img_hdr_section_info	sect_info; |  | ||||||
| @@ -1,95 +0,0 @@ | |||||||
| --- a/arch/mips/ar7/platform.c |  | ||||||
| +++ b/arch/mips/ar7/platform.c |  | ||||||
| @@ -465,31 +465,22 @@ static struct gpio_led fb_fon_leds[] = { |  | ||||||
|  	}, |  | ||||||
|  }; |  | ||||||
|   |  | ||||||
| -static struct gpio_led gt701_leds[] = { |  | ||||||
| +static struct gpio_led actiontec_leds[] = { |  | ||||||
|  	{ |  | ||||||
|  		.name			= "inet:green", |  | ||||||
|  		.gpio			= 13, |  | ||||||
| -		.active_low		= 1, |  | ||||||
| -	}, |  | ||||||
| -	{ |  | ||||||
| -		.name			= "usb", |  | ||||||
| -		.gpio			= 12, |  | ||||||
| -		.active_low		= 1, |  | ||||||
|  	}, |  | ||||||
|  	{ |  | ||||||
|  		.name			= "inet:red", |  | ||||||
|  		.gpio			= 9, |  | ||||||
| -		.active_low		= 1, |  | ||||||
|  	}, |  | ||||||
|  	{ |  | ||||||
| -		.name			= "power:red", |  | ||||||
| +		.name			= "power:green", |  | ||||||
|  		.gpio			= 7, |  | ||||||
| -		.active_low		= 1, |  | ||||||
|  	}, |  | ||||||
|  	{ |  | ||||||
| -		.name			= "power:green", |  | ||||||
| +		.name			= "power:red", |  | ||||||
|  		.gpio			= 8, |  | ||||||
| -		.active_low		= 1, |  | ||||||
|  		.default_trigger	= "default-on", |  | ||||||
|  	}, |  | ||||||
|  	{ |  | ||||||
| @@ -497,6 +488,44 @@ static struct gpio_led gt701_leds[] = { |  | ||||||
|  		.gpio			= 10, |  | ||||||
|  		.active_low		= 1, |  | ||||||
|  	}, |  | ||||||
| +	{ |  | ||||||
| +		.name			= "wifi", |  | ||||||
| +		.gpio			= 6, |  | ||||||
| +		.active_low		= 1, |  | ||||||
| +	}, |  | ||||||
| +	{ |  | ||||||
| +		.name			= "wifi:red", |  | ||||||
| +		.gpio			= 3, |  | ||||||
| +	}, |  | ||||||
| +	{ |  | ||||||
| +		.name			= "standby", |  | ||||||
| +		.gpio			= 4, |  | ||||||
| +	}, |  | ||||||
| +	{ |  | ||||||
| +		.name			= "wps", |  | ||||||
| +		.gpio			= 16, |  | ||||||
| +		.active_low		= 1, |  | ||||||
| +	}, |  | ||||||
| +	{ |  | ||||||
| +		.name			= "usb", |  | ||||||
| +		.gpio			= 12, |  | ||||||
| +		.active_low		= 1, |  | ||||||
| +	}, |  | ||||||
| +	{ |  | ||||||
| +		.name			= "voip", |  | ||||||
| +		.gpio			= 15, |  | ||||||
| +		.active_low		= 1, |  | ||||||
| +        }, |  | ||||||
| +        { |  | ||||||
| +                .name			= "line1", |  | ||||||
| +                .gpio			= 23, |  | ||||||
| +                .active_low		= 1, |  | ||||||
| +	}, |  | ||||||
| +	{ |  | ||||||
| +		.name			= "line2", |  | ||||||
| +		.gpio			= 25, |  | ||||||
| +		.active_low		= 1, |  | ||||||
| +	}, |  | ||||||
|  }; |  | ||||||
|   |  | ||||||
|  static struct gpio_led_platform_data ar7_led_data; |  | ||||||
| @@ -540,9 +569,9 @@ static void __init detect_leds(void) |  | ||||||
|  	} else if (strstr(prid, "CYWM") || strstr(prid, "CYWL")) { |  | ||||||
|  		ar7_led_data.num_leds = ARRAY_SIZE(titan_leds); |  | ||||||
|  		ar7_led_data.leds = titan_leds; |  | ||||||
| -	} else if (strstr(prid, "GT701")) { |  | ||||||
| -		ar7_led_data.num_leds = ARRAY_SIZE(gt701_leds); |  | ||||||
| -		ar7_led_data.leds = gt701_leds; |  | ||||||
| +	} else if (strstr(prid, "GT7") || strstr(prid, "PK5000")) { |  | ||||||
| +		ar7_led_data.num_leds = ARRAY_SIZE(actiontec_leds); |  | ||||||
| +		ar7_led_data.leds = actiontec_leds; |  | ||||||
|  	} |  | ||||||
|  } |  | ||||||
|   |  | ||||||
| @@ -1,52 +0,0 @@ | |||||||
| --- a/drivers/net/ethernet/ti/cpmac.c |  | ||||||
| +++ b/drivers/net/ethernet/ti/cpmac.c |  | ||||||
| @@ -1147,6 +1147,8 @@ static int cpmac_probe(struct platform_d |  | ||||||
|  		goto out; |  | ||||||
|  	} |  | ||||||
|   |  | ||||||
| +	ar7_device_reset(pdata->reset_bit); |  | ||||||
| + |  | ||||||
|  	dev->irq = platform_get_irq_byname(pdev, "irq"); |  | ||||||
|   |  | ||||||
|  	dev->netdev_ops = &cpmac_netdev_ops; |  | ||||||
| @@ -1228,7 +1230,7 @@ int cpmac_init(void) |  | ||||||
|  	cpmac_mii->reset = cpmac_mdio_reset; |  | ||||||
|  	cpmac_mii->irq = mii_irqs; |  | ||||||
|   |  | ||||||
| -	cpmac_mii->priv = ioremap(AR7_REGS_MDIO, 256); |  | ||||||
| +	cpmac_mii->priv = ioremap(ar7_is_titan() ? TITAN_REGS_MDIO : AR7_REGS_MDIO, 256); |  | ||||||
|   |  | ||||||
|  	if (!cpmac_mii->priv) { |  | ||||||
|  		pr_err("Can't ioremap mdio registers\n"); |  | ||||||
| @@ -1239,10 +1241,16 @@ int cpmac_init(void) |  | ||||||
|  	/* FIXME: unhardcode gpio&reset bits */ |  | ||||||
|  	ar7_gpio_disable(26); |  | ||||||
|  	ar7_gpio_disable(27); |  | ||||||
| -	ar7_device_reset(AR7_RESET_BIT_CPMAC_LO); |  | ||||||
| -	ar7_device_reset(AR7_RESET_BIT_CPMAC_HI); |  | ||||||
| + |  | ||||||
| +	if (!ar7_is_titan()) { |  | ||||||
| +		ar7_device_reset(AR7_RESET_BIT_CPMAC_LO); |  | ||||||
| +		ar7_device_reset(AR7_RESET_BIT_CPMAC_HI); |  | ||||||
| +	} |  | ||||||
|  	ar7_device_reset(AR7_RESET_BIT_EPHY); |  | ||||||
|   |  | ||||||
| +	if (ar7_is_titan()) |  | ||||||
| +		ar7_device_reset(TITAN_RESET_BIT_EPHY1); |  | ||||||
| + |  | ||||||
|  	cpmac_mii->reset(cpmac_mii); |  | ||||||
|   |  | ||||||
|  	for (i = 0; i < 300; i++) { |  | ||||||
| @@ -1259,7 +1267,11 @@ int cpmac_init(void) |  | ||||||
|  		mask = 0; |  | ||||||
|  	} |  | ||||||
|   |  | ||||||
| -	cpmac_mii->phy_mask = ~(mask | 0x80000000); |  | ||||||
| +	if (ar7_is_titan()) |  | ||||||
| +		cpmac_mii->phy_mask = ~(mask | 0x80000000 | 0x40000000); |  | ||||||
| +	else |  | ||||||
| +		cpmac_mii->phy_mask = ~(mask | 0x80000000); |  | ||||||
| + |  | ||||||
|  	snprintf(cpmac_mii->id, MII_BUS_ID_SIZE, "cpmac-1"); |  | ||||||
|   |  | ||||||
|  	res = mdiobus_register(cpmac_mii); |  | ||||||
| @@ -1,23 +0,0 @@ | |||||||
| From: Felix Fietkau <nbd@nbd.name> |  | ||||||
| Date: Wed, 18 May 2016 18:03:31 +0200 |  | ||||||
| Subject: [PATCH] MIPS: ath79: fix register address in ath79_ddr_wb_flush() |  | ||||||
|  |  | ||||||
| ath79_ddr_wb_flush_base has the type void __iomem *, so register offsets |  | ||||||
| need to be a multiple of 4. |  | ||||||
|  |  | ||||||
| Cc: Alban Bedel <albeu@free.fr> |  | ||||||
| Fixes: 24b0e3e84fbf ("MIPS: ath79: Improve the DDR controller interface") |  | ||||||
| Signed-off-by: Felix Fietkau <nbd@nbd.name> |  | ||||||
| --- |  | ||||||
|  |  | ||||||
| --- a/arch/mips/ath79/common.c |  | ||||||
| +++ b/arch/mips/ath79/common.c |  | ||||||
| @@ -58,7 +58,7 @@ EXPORT_SYMBOL_GPL(ath79_ddr_ctrl_init); |  | ||||||
|   |  | ||||||
|  void ath79_ddr_wb_flush(u32 reg) |  | ||||||
|  { |  | ||||||
| -	void __iomem *flush_reg = ath79_ddr_wb_flush_base + reg; |  | ||||||
| +	void __iomem *flush_reg = ath79_ddr_wb_flush_base + reg * 4; |  | ||||||
|   |  | ||||||
|  	/* Flush the DDR write buffer. */ |  | ||||||
|  	__raw_writel(0x1, flush_reg); |  | ||||||
| @@ -1,69 +0,0 @@ | |||||||
| --- a/drivers/mtd/chips/cfi_cmdset_0002.c |  | ||||||
| +++ b/drivers/mtd/chips/cfi_cmdset_0002.c |  | ||||||
| @@ -1631,8 +1631,8 @@ static int __xipram do_write_oneword(str |  | ||||||
|  			break; |  | ||||||
|  		} |  | ||||||
|   |  | ||||||
| -		if (chip_ready(map, adr)) |  | ||||||
| -			break; |  | ||||||
| +		if (chip_good(map, adr, datum)) |  | ||||||
| +			goto enable_xip; |  | ||||||
|   |  | ||||||
|  		/* Latency issues. Drop the lock, wait a while and retry */ |  | ||||||
|  		UDELAY(map, chip, adr, 1); |  | ||||||
| @@ -1648,6 +1648,8 @@ static int __xipram do_write_oneword(str |  | ||||||
|   |  | ||||||
|  		ret = -EIO; |  | ||||||
|  	} |  | ||||||
| + |  | ||||||
| + enable_xip: |  | ||||||
|  	xip_enable(map, chip, adr); |  | ||||||
|   op_done: |  | ||||||
|  	if (mode == FL_OTP_WRITE) |  | ||||||
| @@ -2226,7 +2228,6 @@ static int cfi_amdstd_panic_write(struct |  | ||||||
|  	return 0; |  | ||||||
|  } |  | ||||||
|   |  | ||||||
| - |  | ||||||
|  /* |  | ||||||
|   * Handle devices with one erase region, that only implement |  | ||||||
|   * the chip erase command. |  | ||||||
| @@ -2291,8 +2292,8 @@ static int __xipram do_erase_chip(struct |  | ||||||
|  			chip->erase_suspended = 0; |  | ||||||
|  		} |  | ||||||
|   |  | ||||||
| -		if (chip_ready(map, adr)) |  | ||||||
| -			break; |  | ||||||
| +		if (chip_good(map, adr, map_word_ff(map))) |  | ||||||
| +			goto op_done; |  | ||||||
|   |  | ||||||
|  		if (time_after(jiffies, timeo)) { |  | ||||||
|  			printk(KERN_WARNING "MTD %s(): software timeout\n", |  | ||||||
| @@ -2312,6 +2313,7 @@ static int __xipram do_erase_chip(struct |  | ||||||
|  		ret = -EIO; |  | ||||||
|  	} |  | ||||||
|   |  | ||||||
| + op_done: |  | ||||||
|  	chip->state = FL_READY; |  | ||||||
|  	xip_enable(map, chip, adr); |  | ||||||
|  	DISABLE_VPP(map); |  | ||||||
| @@ -2381,9 +2383,9 @@ static int __xipram do_erase_oneblock(st |  | ||||||
|  			chip->erase_suspended = 0; |  | ||||||
|  		} |  | ||||||
|   |  | ||||||
| -		if (chip_ready(map, adr)) { |  | ||||||
| +		if (chip_good(map, adr, map_word_ff(map))) { |  | ||||||
|  			xip_enable(map, chip, adr); |  | ||||||
| -			break; |  | ||||||
| +			goto op_done; |  | ||||||
|  		} |  | ||||||
|   |  | ||||||
|  		if (time_after(jiffies, timeo)) { |  | ||||||
| @@ -2405,6 +2407,7 @@ static int __xipram do_erase_oneblock(st |  | ||||||
|  		ret = -EIO; |  | ||||||
|  	} |  | ||||||
|   |  | ||||||
| + op_done: |  | ||||||
|  	chip->state = FL_READY; |  | ||||||
|  	DISABLE_VPP(map); |  | ||||||
|  	put_chip(map, chip, adr); |  | ||||||
| @@ -1,6 +1,6 @@ | |||||||
| --- a/drivers/mtd/devices/m25p80.c | --- a/drivers/mtd/devices/m25p80.c | ||||||
| +++ b/drivers/mtd/devices/m25p80.c | +++ b/drivers/mtd/devices/m25p80.c | ||||||
| @@ -194,6 +194,7 @@ static ssize_t m25p80_read(struct spi_no | @@ -195,6 +195,7 @@ static ssize_t m25p80_read(struct spi_no | ||||||
|   */ |   */ | ||||||
|  static int m25p_probe(struct spi_device *spi) |  static int m25p_probe(struct spi_device *spi) | ||||||
|  { |  { | ||||||
| @@ -8,7 +8,7 @@ | |||||||
|  	struct flash_platform_data	*data; |  	struct flash_platform_data	*data; | ||||||
|  	struct m25p *flash; |  	struct m25p *flash; | ||||||
|  	struct spi_nor *nor; |  	struct spi_nor *nor; | ||||||
| @@ -246,8 +247,11 @@ static int m25p_probe(struct spi_device | @@ -247,8 +248,11 @@ static int m25p_probe(struct spi_device | ||||||
|  	if (ret) |  	if (ret) | ||||||
|  		return ret; |  		return ret; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ | |||||||
| -#define FORCE_WORD_WRITE 0 | -#define FORCE_WORD_WRITE 0 | ||||||
| +#define FORCE_WORD_WRITE 1 | +#define FORCE_WORD_WRITE 1 | ||||||
|   |   | ||||||
|  #define MAX_WORD_RETRIES 3 |  #define MAX_RETRIES 3 | ||||||
|   |   | ||||||
| @@ -51,7 +51,9 @@ | @@ -51,7 +51,9 @@ | ||||||
|   |   | ||||||
| @@ -35,7 +35,7 @@ | |||||||
|   |   | ||||||
|  /* Atmel chips don't use the same PRI format as AMD chips */ |  /* Atmel chips don't use the same PRI format as AMD chips */ | ||||||
|  static void fixup_convert_atmel_pri(struct mtd_info *mtd) |  static void fixup_convert_atmel_pri(struct mtd_info *mtd) | ||||||
| @@ -1790,6 +1794,7 @@ static int cfi_amdstd_write_words(struct | @@ -1788,6 +1792,7 @@ static int cfi_amdstd_write_words(struct | ||||||
|  /* |  /* | ||||||
|   * FIXME: interleaved mode not tested, and probably not supported! |   * FIXME: interleaved mode not tested, and probably not supported! | ||||||
|   */ |   */ | ||||||
| @@ -43,7 +43,7 @@ | |||||||
|  static int __xipram do_write_buffer(struct map_info *map, struct flchip *chip, |  static int __xipram do_write_buffer(struct map_info *map, struct flchip *chip, | ||||||
|  				    unsigned long adr, const u_char *buf, |  				    unsigned long adr, const u_char *buf, | ||||||
|  				    int len) |  				    int len) | ||||||
| @@ -1918,7 +1923,6 @@ static int __xipram do_write_buffer(stru | @@ -1916,7 +1921,6 @@ static int __xipram do_write_buffer(stru | ||||||
|  	return ret; |  	return ret; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -51,7 +51,7 @@ | |||||||
|  static int cfi_amdstd_write_buffers(struct mtd_info *mtd, loff_t to, size_t len, |  static int cfi_amdstd_write_buffers(struct mtd_info *mtd, loff_t to, size_t len, | ||||||
|  				    size_t *retlen, const u_char *buf) |  				    size_t *retlen, const u_char *buf) | ||||||
|  { |  { | ||||||
| @@ -1993,6 +1997,7 @@ static int cfi_amdstd_write_buffers(stru | @@ -1991,6 +1995,7 @@ static int cfi_amdstd_write_buffers(stru | ||||||
|   |   | ||||||
|  	return 0; |  	return 0; | ||||||
|  } |  } | ||||||
|   | |||||||
| @@ -16,7 +16,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  #endif /* _PHY_AT803X_PDATA_H */ |  #endif /* _PHY_AT803X_PDATA_H */ | ||||||
| --- a/drivers/net/phy/at803x.c | --- a/drivers/net/phy/at803x.c | ||||||
| +++ b/drivers/net/phy/at803x.c | +++ b/drivers/net/phy/at803x.c | ||||||
| @@ -263,6 +263,7 @@ static int at803x_resume(struct phy_devi | @@ -261,6 +261,7 @@ static int at803x_resume(struct phy_devi | ||||||
|   |   | ||||||
|  static int at803x_probe(struct phy_device *phydev) |  static int at803x_probe(struct phy_device *phydev) | ||||||
|  { |  { | ||||||
| @@ -24,8 +24,8 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  	struct device *dev = &phydev->mdio.dev; |  	struct device *dev = &phydev->mdio.dev; | ||||||
|  	struct at803x_priv *priv; |  	struct at803x_priv *priv; | ||||||
|  	struct gpio_desc *gpiod_reset; |  	struct gpio_desc *gpiod_reset; | ||||||
| @@ -274,6 +275,12 @@ static int at803x_probe(struct phy_devic | @@ -273,6 +274,12 @@ static int at803x_probe(struct phy_devic | ||||||
|  	if (phydev->drv->phy_id != ATH8030_PHY_ID) |  	    phydev->drv->phy_id != ATH8032_PHY_ID) | ||||||
|  		goto does_not_require_reset_workaround; |  		goto does_not_require_reset_workaround; | ||||||
|   |   | ||||||
| +	pdata = dev_get_platdata(dev); | +	pdata = dev_get_platdata(dev); | ||||||
| @@ -37,7 +37,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  	gpiod_reset = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW); |  	gpiod_reset = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW); | ||||||
|  	if (IS_ERR(gpiod_reset)) |  	if (IS_ERR(gpiod_reset)) | ||||||
|  		return PTR_ERR(gpiod_reset); |  		return PTR_ERR(gpiod_reset); | ||||||
| @@ -405,15 +412,23 @@ static void at803x_link_change_notify(st | @@ -404,15 +411,23 @@ static void at803x_link_change_notify(st | ||||||
|  	 * cannot recover from by software. |  	 * cannot recover from by software. | ||||||
|  	 */ |  	 */ | ||||||
|  	if (phydev->state == PHY_NOLINK) { |  	if (phydev->state == PHY_NOLINK) { | ||||||
|   | |||||||
| @@ -250,7 +250,7 @@ | |||||||
|  					       &sin->sin6_addr); |  					       &sin->sin6_addr); | ||||||
|  			sin->sin6_scope_id = 0; |  			sin->sin6_scope_id = 0; | ||||||
|  		} |  		} | ||||||
| @@ -814,12 +814,12 @@ int ip6_datagram_send_ctl(struct net *ne | @@ -817,12 +817,12 @@ int ip6_datagram_send_ctl(struct net *ne | ||||||
|  			} |  			} | ||||||
|   |   | ||||||
|  			if (fl6->flowlabel&IPV6_FLOWINFO_MASK) { |  			if (fl6->flowlabel&IPV6_FLOWINFO_MASK) { | ||||||
| @@ -327,7 +327,7 @@ | |||||||
|  	return neigh_create(&arp_tbl, pkey, dev); |  	return neigh_create(&arp_tbl, pkey, dev); | ||||||
| --- a/net/ipv4/tcp_output.c | --- a/net/ipv4/tcp_output.c | ||||||
| +++ b/net/ipv4/tcp_output.c | +++ b/net/ipv4/tcp_output.c | ||||||
| @@ -448,48 +448,53 @@ static void tcp_options_write(__be32 *pt | @@ -453,48 +453,53 @@ static void tcp_options_write(__be32 *pt | ||||||
|  	u16 options = opts->options;	/* mungable copy */ |  	u16 options = opts->options;	/* mungable copy */ | ||||||
|   |   | ||||||
|  	if (unlikely(OPTION_MD5 & options)) { |  	if (unlikely(OPTION_MD5 & options)) { | ||||||
| @@ -404,7 +404,7 @@ | |||||||
|  	} |  	} | ||||||
|   |   | ||||||
|  	if (unlikely(opts->num_sack_blocks)) { |  	if (unlikely(opts->num_sack_blocks)) { | ||||||
| @@ -497,16 +502,17 @@ static void tcp_options_write(__be32 *pt | @@ -502,16 +507,17 @@ static void tcp_options_write(__be32 *pt | ||||||
|  			tp->duplicate_sack : tp->selective_acks; |  			tp->duplicate_sack : tp->selective_acks; | ||||||
|  		int this_sack; |  		int this_sack; | ||||||
|   |   | ||||||
| @@ -428,7 +428,7 @@ | |||||||
|  		} |  		} | ||||||
|   |   | ||||||
|  		tp->rx_opt.dsack = 0; |  		tp->rx_opt.dsack = 0; | ||||||
| @@ -519,13 +525,14 @@ static void tcp_options_write(__be32 *pt | @@ -524,13 +530,14 @@ static void tcp_options_write(__be32 *pt | ||||||
|   |   | ||||||
|  		if (foc->exp) { |  		if (foc->exp) { | ||||||
|  			len = TCPOLEN_EXP_FASTOPEN_BASE + foc->len; |  			len = TCPOLEN_EXP_FASTOPEN_BASE + foc->len; | ||||||
| @@ -795,7 +795,7 @@ | |||||||
|   |   | ||||||
| --- a/net/ipv4/tcp_input.c | --- a/net/ipv4/tcp_input.c | ||||||
| +++ b/net/ipv4/tcp_input.c | +++ b/net/ipv4/tcp_input.c | ||||||
| @@ -3896,14 +3896,16 @@ static bool tcp_parse_aligned_timestamp( | @@ -3910,14 +3910,16 @@ static bool tcp_parse_aligned_timestamp( | ||||||
|  { |  { | ||||||
|  	const __be32 *ptr = (const __be32 *)(th + 1); |  	const __be32 *ptr = (const __be32 *)(th + 1); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -42,6 +42,7 @@ CONFIG_ARM64_PAN=y | |||||||
| # CONFIG_ARM64_PTDUMP is not set | # CONFIG_ARM64_PTDUMP is not set | ||||||
| # CONFIG_ARM64_PTDUMP_DEBUGFS is not set | # CONFIG_ARM64_PTDUMP_DEBUGFS is not set | ||||||
| # CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET is not set | # CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET is not set | ||||||
|  | CONFIG_ARM64_SSBD=y | ||||||
| # CONFIG_ARM64_SW_TTBR0_PAN is not set | # CONFIG_ARM64_SW_TTBR0_PAN is not set | ||||||
| CONFIG_ARM64_UAO=y | CONFIG_ARM64_UAO=y | ||||||
| CONFIG_ARM64_VA_BITS=39 | CONFIG_ARM64_VA_BITS=39 | ||||||
|   | |||||||
| @@ -115,7 +115,7 @@ define Device/at91-q5xr5 | |||||||
|   DEVICE_TITLE := Exegin Q5XR5 |   DEVICE_TITLE := Exegin Q5XR5 | ||||||
|   KERNEL_SIZE := 2048k |   KERNEL_SIZE := 2048k | ||||||
| endef | endef | ||||||
| TARGET_DEVICES += at91-q5xr5 | #TARGET_DEVICES += at91-q5xr5 | ||||||
|  |  | ||||||
| define Device/wb45n | define Device/wb45n | ||||||
|   $(Device/evaluation-fit) |   $(Device/evaluation-fit) | ||||||
|   | |||||||
| @@ -82,13 +82,13 @@ define Device/ubnt2 | |||||||
|   DEVICE_TITLE := Ubiquiti XS2 |   DEVICE_TITLE := Ubiquiti XS2 | ||||||
|   IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | pad-to 128k | mkfwimage XS2 -v XS2.ar2316 |   IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | pad-to 128k | mkfwimage XS2 -v XS2.ar2316 | ||||||
| endef | endef | ||||||
| TARGET_DEVICES += ubnt2 | #TARGET_DEVICES += ubnt2 | ||||||
|  |  | ||||||
| define Device/ubnt5 | define Device/ubnt5 | ||||||
|   DEVICE_TITLE := Ubiquiti XS5 |   DEVICE_TITLE := Ubiquiti XS5 | ||||||
|   IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | pad-to 128k | mkfwimage XS5 -v XS5.ar2313 |   IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | pad-to 128k | mkfwimage XS5 -v XS5.ar2313 | ||||||
| endef | endef | ||||||
| TARGET_DEVICES += ubnt5 | #TARGET_DEVICES += ubnt5 | ||||||
|  |  | ||||||
| define Device/np25g | define Device/np25g | ||||||
|   DEVICE_TITLE := np25g |   DEVICE_TITLE := np25g | ||||||
|   | |||||||
| @@ -327,7 +327,7 @@ platform_do_upgrade() { | |||||||
| 	case "$file_type" in | 	case "$file_type" in | ||||||
| 		"chk")		cmd=$(platform_trx_from_chk_cmd "$trx");; | 		"chk")		cmd=$(platform_trx_from_chk_cmd "$trx");; | ||||||
| 		"cybertan")	cmd=$(platform_trx_from_cybertan_cmd "$trx");; | 		"cybertan")	cmd=$(platform_trx_from_cybertan_cmd "$trx");; | ||||||
| 		"safeloader")	trx=$(platform_img_from_safeloader "$trx");; | 		"safeloader")	trx=$(platform_img_from_safeloader "$trx"); PART_NAME=os-image;; | ||||||
| 		"seama")	trx=$(platform_img_from_seama "$trx");; | 		"seama")	trx=$(platform_img_from_seama "$trx");; | ||||||
| 	esac | 	esac | ||||||
|  |  | ||||||
|   | |||||||
| @@ -227,9 +227,11 @@ CONFIG_LIBFDT=y | |||||||
| CONFIG_LOCK_SPIN_ON_OWNER=y | CONFIG_LOCK_SPIN_ON_OWNER=y | ||||||
| CONFIG_LZO_COMPRESS=y | CONFIG_LZO_COMPRESS=y | ||||||
| CONFIG_LZO_DECOMPRESS=y | CONFIG_LZO_DECOMPRESS=y | ||||||
| # CONFIG_MDIO_BCM_IPROC is not set | CONFIG_MDIO_BCM_IPROC=y | ||||||
| CONFIG_MDIO_BUS=y | CONFIG_MDIO_BUS=y | ||||||
|  | CONFIG_MDIO_BUS_MUX=y | ||||||
| # CONFIG_MDIO_BUS_MUX_BCM_IPROC is not set | # CONFIG_MDIO_BUS_MUX_BCM_IPROC is not set | ||||||
|  | CONFIG_MDIO_BUS_MUX_MMIOREG=y | ||||||
| CONFIG_MDIO_DEVICE=y | CONFIG_MDIO_DEVICE=y | ||||||
| CONFIG_MFD_SYSCON=y | CONFIG_MFD_SYSCON=y | ||||||
| CONFIG_MIGHT_HAVE_CACHE_L2X0=y | CONFIG_MIGHT_HAVE_CACHE_L2X0=y | ||||||
|   | |||||||
| @@ -0,0 +1,24 @@ | |||||||
|  | From a0a8338e905734518ab9b10b06e7fd0201228f8b Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Florian Fainelli <f.fainelli@gmail.com> | ||||||
|  | Date: Mon, 11 Jun 2018 15:53:40 -0700 | ||||||
|  | Subject: [PATCH] ARM: dts: BCM5301x: Fix i2c controller interrupt type | ||||||
|  |  | ||||||
|  | The i2c controller should be using IRQ_TYPE_LEVEL_HIGH, fix that. | ||||||
|  |  | ||||||
|  | Fixes: bb097e3e0045 ("ARM: dts: BCM5301X: Add I2C support to the DT") | ||||||
|  | Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> | ||||||
|  | --- | ||||||
|  |  arch/arm/boot/dts/bcm5301x.dtsi | 2 +- | ||||||
|  |  1 file changed, 1 insertion(+), 1 deletion(-) | ||||||
|  |  | ||||||
|  | --- a/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
|  | +++ b/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
|  | @@ -365,7 +365,7 @@ | ||||||
|  |  	i2c0: i2c@18009000 { | ||||||
|  |  		compatible = "brcm,iproc-i2c"; | ||||||
|  |  		reg = <0x18009000 0x50>; | ||||||
|  | -		interrupts = <GIC_SPI 121 IRQ_TYPE_NONE>; | ||||||
|  | +		interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>; | ||||||
|  |  		#address-cells = <1>; | ||||||
|  |  		#size-cells = <0>; | ||||||
|  |  		clock-frequency = <100000>; | ||||||
| @@ -0,0 +1,456 @@ | |||||||
|  | From 37f6130ec39fe14e923d472746a51e6f06f761b7 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Vivek Unune <npcomplete13@gmail.com> | ||||||
|  | Date: Mon, 9 Apr 2018 18:31:53 -0400 | ||||||
|  | Subject: [PATCH] ARM: dts: BCM5301X: Make USB 3.0 PHY use MDIO PHY driver | ||||||
|  | MIME-Version: 1.0 | ||||||
|  | Content-Type: text/plain; charset=UTF-8 | ||||||
|  | Content-Transfer-Encoding: 8bit | ||||||
|  |  | ||||||
|  | Currently, the USB 3.0 PHY in bcm5301x.dtsi uses platform driver which | ||||||
|  | requires register range "ccb-mii" <0x18003000 0x1000>. This range | ||||||
|  | overlaps with MDIO cmd and param registers (<0x18003000 0x8>). | ||||||
|  | Essentially, the platform driver partly acts like a MDIO bus driver, | ||||||
|  | hence to use of this register range. | ||||||
|  |  | ||||||
|  | In some Northstar devices like Linksys EA9500, secondary switch is | ||||||
|  | connected via external MDIO. The only way to access and configure the | ||||||
|  | external switch is via MDIO bus. When we enable the MDIO bus in it's | ||||||
|  | current state, the MDIO bus and any child buses fail to register because | ||||||
|  | of the register range overlap. | ||||||
|  |  | ||||||
|  | On Northstar, the USB 3.0 PHY is connected at address 0x10 on the | ||||||
|  | internal MDIO bus. This change moves the usb3_phy node and makes it a | ||||||
|  | child node of internal MDIO bus. | ||||||
|  |  | ||||||
|  | Thanks to Rafał Miłecki's commit af850e14a7ae ("phy: bcm-ns-usb3: add | ||||||
|  | MDIO driver using proper bus layer") the same USB 3.0 platform driver | ||||||
|  | can now act as USB 3.0 PHY MDIO driver. | ||||||
|  |  | ||||||
|  | Tested on Linksys Panamera (EA9500) | ||||||
|  |  | ||||||
|  | Signed-off-by: Vivek Unune <npcomplete13@gmail.com> | ||||||
|  | Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> | ||||||
|  | --- | ||||||
|  |  arch/arm/boot/dts/bcm4708-asus-rt-ac56u.dts        |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm4708-asus-rt-ac68u.dts        |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm4708-buffalo-wzr-1750dhp.dts  |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm4708-linksys-ea6300-v1.dts    |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm4708-luxul-xap-1510.dts       |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm4708-luxul-xwc-1000.dts       |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm4708-netgear-r6250.dts        |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm4708-netgear-r6300-v2.dts     |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm4708-smartrg-sr400ac.dts      |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm47081-asus-rt-n18u.dts        |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm47081-buffalo-wzr-600dhp2.dts |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm47081-buffalo-wzr-900dhp.dts  |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm47081-luxul-xap-1410.dts      |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm47081-luxul-xwr-1200.dts      |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm47081-tplink-archer-c5-v2.dts |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts        |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dts  |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm4709-linksys-ea9200.dts       |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm4709-netgear-r7000.dts        |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm4709-netgear-r8000.dts        |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm4709-tplink-archer-c9-v1.dts  |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts      |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm47094-linksys-panamera.dts    |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts      |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts      |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts      |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm47094-netgear-r8500.dts       |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm47094.dtsi                    |  7 +++-- | ||||||
|  |  arch/arm/boot/dts/bcm5301x.dtsi                    | 35 +++++++++++++++++----- | ||||||
|  |  arch/arm/boot/dts/bcm94708.dts                     |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm94709.dts                     |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm953012er.dts                  |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm953012hr.dts                  |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm953012k.dts                   |  4 +++ | ||||||
|  |  34 files changed, 159 insertions(+), 11 deletions(-) | ||||||
|  |  | ||||||
|  | --- a/arch/arm/boot/dts/bcm4708-asus-rt-ac56u.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm4708-asus-rt-ac56u.dts | ||||||
|  | @@ -90,3 +90,7 @@ | ||||||
|  |  		}; | ||||||
|  |  	}; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm4708-asus-rt-ac68u.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm4708-asus-rt-ac68u.dts | ||||||
|  | @@ -80,3 +80,7 @@ | ||||||
|  |  		}; | ||||||
|  |  	}; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm4708-buffalo-wzr-1750dhp.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm4708-buffalo-wzr-1750dhp.dts | ||||||
|  | @@ -146,3 +146,7 @@ | ||||||
|  |  &spi_nor { | ||||||
|  |  	status = "okay"; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm4708-linksys-ea6300-v1.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm4708-linksys-ea6300-v1.dts | ||||||
|  | @@ -38,3 +38,7 @@ | ||||||
|  |  		}; | ||||||
|  |  	}; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm4708-luxul-xap-1510.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm4708-luxul-xap-1510.dts | ||||||
|  | @@ -57,3 +57,7 @@ | ||||||
|  |  &spi_nor { | ||||||
|  |  	status = "okay"; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm4708-luxul-xwc-1000.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm4708-luxul-xwc-1000.dts | ||||||
|  | @@ -64,3 +64,7 @@ | ||||||
|  |  &spi_nor { | ||||||
|  |  	status = "okay"; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm4708-netgear-r6250.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm4708-netgear-r6250.dts | ||||||
|  | @@ -91,3 +91,7 @@ | ||||||
|  |  &spi_nor { | ||||||
|  |  	status = "okay"; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm4708-netgear-r6300-v2.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm4708-netgear-r6300-v2.dts | ||||||
|  | @@ -83,3 +83,7 @@ | ||||||
|  |  &spi_nor { | ||||||
|  |  	status = "okay"; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm4708-smartrg-sr400ac.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm4708-smartrg-sr400ac.dts | ||||||
|  | @@ -158,3 +158,7 @@ | ||||||
|  |  		}; | ||||||
|  |  	}; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm47081-asus-rt-n18u.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm47081-asus-rt-n18u.dts | ||||||
|  | @@ -74,3 +74,7 @@ | ||||||
|  |  		}; | ||||||
|  |  	}; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm47081-buffalo-wzr-600dhp2.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm47081-buffalo-wzr-600dhp2.dts | ||||||
|  | @@ -118,3 +118,7 @@ | ||||||
|  |  		}; | ||||||
|  |  	}; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm47081-buffalo-wzr-900dhp.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm47081-buffalo-wzr-900dhp.dts | ||||||
|  | @@ -104,3 +104,7 @@ | ||||||
|  |  		}; | ||||||
|  |  	}; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm47081-luxul-xap-1410.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm47081-luxul-xap-1410.dts | ||||||
|  | @@ -57,3 +57,7 @@ | ||||||
|  |  &spi_nor { | ||||||
|  |  	status = "okay"; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm47081-luxul-xwr-1200.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm47081-luxul-xwr-1200.dts | ||||||
|  | @@ -105,3 +105,7 @@ | ||||||
|  |  &spi_nor { | ||||||
|  |  	status = "okay"; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm47081-tplink-archer-c5-v2.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm47081-tplink-archer-c5-v2.dts | ||||||
|  | @@ -99,3 +99,7 @@ | ||||||
|  |  &usb2 { | ||||||
|  |  	vcc-gpio = <&chipcommon 9 GPIO_ACTIVE_HIGH>; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts | ||||||
|  | @@ -62,3 +62,7 @@ | ||||||
|  |  		}; | ||||||
|  |  	}; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dts | ||||||
|  | @@ -127,3 +127,7 @@ | ||||||
|  |  &spi_nor { | ||||||
|  |  	status = "okay"; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm4709-linksys-ea9200.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm4709-linksys-ea9200.dts | ||||||
|  | @@ -39,3 +39,7 @@ | ||||||
|  |  		}; | ||||||
|  |  	}; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm4709-netgear-r7000.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm4709-netgear-r7000.dts | ||||||
|  | @@ -101,3 +101,7 @@ | ||||||
|  |  &usb3 { | ||||||
|  |  	vcc-gpio = <&chipcommon 0 GPIO_ACTIVE_HIGH>; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm4709-netgear-r8000.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm4709-netgear-r8000.dts | ||||||
|  | @@ -182,3 +182,7 @@ | ||||||
|  |  &usb3 { | ||||||
|  |  	vcc-gpio = <&chipcommon 0 GPIO_ACTIVE_HIGH>; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm4709-tplink-archer-c9-v1.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm4709-tplink-archer-c9-v1.dts | ||||||
|  | @@ -104,3 +104,7 @@ | ||||||
|  |  &spi_nor { | ||||||
|  |  	status = "okay"; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts | ||||||
|  | @@ -115,3 +115,7 @@ | ||||||
|  |  &spi_nor { | ||||||
|  |  	status = "okay"; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm47094-linksys-panamera.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm47094-linksys-panamera.dts | ||||||
|  | @@ -33,3 +33,7 @@ | ||||||
|  |  		}; | ||||||
|  |  	}; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts | ||||||
|  | @@ -60,3 +60,7 @@ | ||||||
|  |  &spi_nor { | ||||||
|  |  	status = "okay"; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts | ||||||
|  | @@ -60,3 +60,7 @@ | ||||||
|  |  &spi_nor { | ||||||
|  |  	status = "okay"; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts | ||||||
|  | @@ -100,3 +100,7 @@ | ||||||
|  |  &spi_nor { | ||||||
|  |  	status = "okay"; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm47094-netgear-r8500.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm47094-netgear-r8500.dts | ||||||
|  | @@ -91,3 +91,7 @@ | ||||||
|  |  		}; | ||||||
|  |  	}; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm47094.dtsi | ||||||
|  | +++ b/arch/arm/boot/dts/bcm47094.dtsi | ||||||
|  | @@ -7,9 +7,10 @@ | ||||||
|  |  #include "bcm4708.dtsi" | ||||||
|  |   | ||||||
|  |  / { | ||||||
|  | -	usb3_phy: usb3-phy { | ||||||
|  | -		compatible = "brcm,ns-bx-usb3-phy"; | ||||||
|  | -	}; | ||||||
|  | +}; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	compatible = "brcm,ns-bx-usb3-phy"; | ||||||
|  |  }; | ||||||
|  |   | ||||||
|  |  &uart0 { | ||||||
|  | --- a/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
|  | +++ b/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
|  | @@ -154,13 +154,6 @@ | ||||||
|  |  		clock-names = "phy-ref-clk"; | ||||||
|  |  	}; | ||||||
|  |   | ||||||
|  | -	usb3_phy: usb3-phy { | ||||||
|  | -		compatible = "brcm,ns-ax-usb3-phy"; | ||||||
|  | -		reg = <0x18105000 0x1000>, <0x18003000 0x1000>; | ||||||
|  | -		reg-names = "dmp", "ccb-mii"; | ||||||
|  | -		#phy-cells = <0>; | ||||||
|  | -	}; | ||||||
|  | - | ||||||
|  |  	axi@18000000 { | ||||||
|  |  		compatible = "brcm,bus-axi"; | ||||||
|  |  		reg = <0x18000000 0x1000>; | ||||||
|  | @@ -359,7 +352,33 @@ | ||||||
|  |  		reg = <0x18003000 0x8>; | ||||||
|  |  		#size-cells = <1>; | ||||||
|  |  		#address-cells = <0>; | ||||||
|  | -		status = "disabled"; | ||||||
|  | +	}; | ||||||
|  | + | ||||||
|  | +	mdio-bus-mux { | ||||||
|  | +		compatible = "mdio-mux-mmioreg"; | ||||||
|  | +		mdio-parent-bus = <&mdio>; | ||||||
|  | +		#address-cells = <1>; | ||||||
|  | +		#size-cells = <0>; | ||||||
|  | +		reg = <0x18003000 0x4>; | ||||||
|  | +		mux-mask = <0x200>; | ||||||
|  | + | ||||||
|  | +		mdio@0 { | ||||||
|  | +			reg = <0x0>; | ||||||
|  | +			#address-cells = <1>; | ||||||
|  | +			#size-cells = <0>; | ||||||
|  | + | ||||||
|  | +			usb3_phy: usb3-phy@10 { | ||||||
|  | +				compatible = "brcm,ns-ax-usb3-phy"; | ||||||
|  | +				reg = <0x10>; | ||||||
|  | +				usb3-dmp-syscon = <&usb3_dmp>; | ||||||
|  | +				#phy-cells = <0>; | ||||||
|  | +				status = "disabled"; | ||||||
|  | +			}; | ||||||
|  | +		}; | ||||||
|  | +	}; | ||||||
|  | + | ||||||
|  | +	usb3_dmp: syscon@18105000 { | ||||||
|  | +		reg = <0x18105000 0x1000>; | ||||||
|  |  	}; | ||||||
|  |   | ||||||
|  |  	i2c0: i2c@18009000 { | ||||||
|  | --- a/arch/arm/boot/dts/bcm94708.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm94708.dts | ||||||
|  | @@ -42,3 +42,7 @@ | ||||||
|  |  		reg = <0x00000000 0x08000000>; | ||||||
|  |  	}; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm94709.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm94709.dts | ||||||
|  | @@ -42,3 +42,7 @@ | ||||||
|  |  		reg = <0x00000000 0x08000000>; | ||||||
|  |  	}; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm953012er.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm953012er.dts | ||||||
|  | @@ -90,3 +90,7 @@ | ||||||
|  |  		}; | ||||||
|  |  	}; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm953012hr.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm953012hr.dts | ||||||
|  | @@ -95,3 +95,7 @@ | ||||||
|  |  		reg = <0x00700000 0x00900000>; | ||||||
|  |  	}; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm953012k.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm953012k.dts | ||||||
|  | @@ -113,3 +113,7 @@ | ||||||
|  |  &uart1 { | ||||||
|  |  	status = "okay"; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&usb3_phy { | ||||||
|  | +	status = "okay"; | ||||||
|  | +}; | ||||||
| @@ -0,0 +1,34 @@ | |||||||
|  | From a21e7548438f3a8f59f9b9f3a8bc973613d3726a Mon Sep 17 00:00:00 2001 | ||||||
|  | From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl> | ||||||
|  | Date: Thu, 14 Jun 2018 18:41:47 +0200 | ||||||
|  | Subject: [PATCH] ARM: dts: BCM53573: Add architected timer | ||||||
|  | MIME-Version: 1.0 | ||||||
|  | Content-Type: text/plain; charset=UTF-8 | ||||||
|  | Content-Transfer-Encoding: 8bit | ||||||
|  |  | ||||||
|  | It's a standard ARM architected timer that was simply missed when | ||||||
|  | initially adding this .dtsi file. | ||||||
|  |  | ||||||
|  | Signed-off-by: Rafał Miłecki <rafal@milecki.pl> | ||||||
|  | Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> | ||||||
|  | --- | ||||||
|  |  arch/arm/boot/dts/bcm53573.dtsi | 8 ++++++++ | ||||||
|  |  1 file changed, 8 insertions(+) | ||||||
|  |  | ||||||
|  | --- a/arch/arm/boot/dts/bcm53573.dtsi | ||||||
|  | +++ b/arch/arm/boot/dts/bcm53573.dtsi | ||||||
|  | @@ -48,6 +48,14 @@ | ||||||
|  |  		}; | ||||||
|  |  	}; | ||||||
|  |   | ||||||
|  | +	timer { | ||||||
|  | +		compatible = "arm,armv7-timer"; | ||||||
|  | +		interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>, | ||||||
|  | +			     <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>, | ||||||
|  | +			     <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>, | ||||||
|  | +			     <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>; | ||||||
|  | +	}; | ||||||
|  | + | ||||||
|  |  	clocks { | ||||||
|  |  		#address-cells = <1>; | ||||||
|  |  		#size-cells = <1>; | ||||||
| @@ -0,0 +1,269 @@ | |||||||
|  | From 2bebdfcdcd0feb58d5df419532a2cedc78a336d7 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Vivek Unune <npcomplete13@gmail.com> | ||||||
|  | Date: Mon, 18 Jun 2018 13:41:59 -0400 | ||||||
|  | Subject: [PATCH] ARM: dts: BCM5301X: Add support for Linksys EA9500 | ||||||
|  | MIME-Version: 1.0 | ||||||
|  | Content-Type: text/plain; charset=UTF-8 | ||||||
|  | Content-Transfer-Encoding: 8bit | ||||||
|  |  | ||||||
|  | Hardware Info | ||||||
|  | ------------- | ||||||
|  |  | ||||||
|  | Processor	- Broadcom BCM4709C0KFEBG dual-core @ 1.4 GHz | ||||||
|  | Switch		- BCM53012 in BCM4709C0KFEBG & external BCM53125 | ||||||
|  | DDR3 RAM	- 256 MB | ||||||
|  | Flash		- 128 MB (Toshiba TC58BVG0S3HTA00) | ||||||
|  | 2.4GHz		- BCM4366 4×4 2.4/5G single chip 802.11ac SoC | ||||||
|  | Power Amp	- Skyworks SE2623L 2.4 GHz power amp (x4) | ||||||
|  | 5GHz x 2	- BCM4366 4×4 2.4/5G single chip 802.11ac SoC | ||||||
|  | Power Amp	- PLX Technology PEX8603 3-lane, 3-port PCIe switch | ||||||
|  | Ports		- 8 Ports, 1 WAN Ports | ||||||
|  | Antennas	- 8 Antennas | ||||||
|  | Serial Port	- @J6 [GND,TX,RX] (VCC NC)    115200 8n1 | ||||||
|  |  | ||||||
|  | Tested with OpenWrt built with DSA driver and Kernel v4.14 | ||||||
|  |  | ||||||
|  | Signed-off-by: Vivek Unune <npcomplete13@gmail.com> | ||||||
|  | Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> | ||||||
|  | --- | ||||||
|  |  arch/arm/boot/dts/bcm47094-linksys-panamera.dts | 229 ++++++++++++++++++++++++ | ||||||
|  |  1 file changed, 229 insertions(+) | ||||||
|  |  | ||||||
|  | --- a/arch/arm/boot/dts/bcm47094-linksys-panamera.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm47094-linksys-panamera.dts | ||||||
|  | @@ -31,6 +31,235 @@ | ||||||
|  |  			linux,code = <KEY_WPS_BUTTON>; | ||||||
|  |  			gpios = <&chipcommon 3 GPIO_ACTIVE_LOW>; | ||||||
|  |  		}; | ||||||
|  | + | ||||||
|  | +		rfkill { | ||||||
|  | +				label = "WiFi"; | ||||||
|  | +				linux,code = <KEY_RFKILL>; | ||||||
|  | +				gpios = <&chipcommon 16 GPIO_ACTIVE_LOW>; | ||||||
|  | +		}; | ||||||
|  | + | ||||||
|  | +		reset { | ||||||
|  | +				label = "Reset"; | ||||||
|  | +				linux,code = <KEY_RESTART>; | ||||||
|  | +				gpios = <&chipcommon 17 GPIO_ACTIVE_LOW>; | ||||||
|  | +		}; | ||||||
|  | +	}; | ||||||
|  | + | ||||||
|  | +	leds { | ||||||
|  | +		compatible = "gpio-leds"; | ||||||
|  | + | ||||||
|  | +		wps { | ||||||
|  | +			label = "bcm53xx:white:wps"; | ||||||
|  | +			gpios = <&chipcommon 22 GPIO_ACTIVE_LOW>; | ||||||
|  | +		}; | ||||||
|  | + | ||||||
|  | +		usb2 { | ||||||
|  | +			label = "bcm53xx:green:usb2"; | ||||||
|  | +			gpios = <&chipcommon 1 GPIO_ACTIVE_LOW>; | ||||||
|  | +			trigger-sources = <&ohci_port2>, <&ehci_port2>; | ||||||
|  | +			linux,default-trigger = "usbport"; | ||||||
|  | +		}; | ||||||
|  | + | ||||||
|  | +		usb3 { | ||||||
|  | +			label = "bcm53xx:green:usb3"; | ||||||
|  | +			gpios = <&chipcommon 2 GPIO_ACTIVE_LOW>; | ||||||
|  | +			trigger-sources = <&ohci_port1>, <&ehci_port1>, | ||||||
|  | +					  <&xhci_port1>; | ||||||
|  | +			linux,default-trigger = "usbport"; | ||||||
|  | +		}; | ||||||
|  | + | ||||||
|  | +		power { | ||||||
|  | +			label = "bcm53xx:white:power"; | ||||||
|  | +			gpios = <&chipcommon 4 GPIO_ACTIVE_HIGH>; | ||||||
|  | +		}; | ||||||
|  | + | ||||||
|  | +		wifi-disabled { | ||||||
|  | +			label = "bcm53xx:amber:wifi-disabled"; | ||||||
|  | +			gpios = <&chipcommon 0 GPIO_ACTIVE_LOW>; | ||||||
|  | +		}; | ||||||
|  | + | ||||||
|  | +		wifi-enabled { | ||||||
|  | +			label = "bcm53xx:white:wifi-enabled"; | ||||||
|  | +			gpios = <&chipcommon 5 GPIO_ACTIVE_HIGH>; | ||||||
|  | +		}; | ||||||
|  | + | ||||||
|  | +		bluebar1 { | ||||||
|  | +			label = "bcm53xx:white:bluebar1"; | ||||||
|  | +			gpios = <&chipcommon 11 GPIO_ACTIVE_HIGH>; | ||||||
|  | +		}; | ||||||
|  | + | ||||||
|  | +		bluebar2 { | ||||||
|  | +			label = "bcm53xx:white:bluebar2"; | ||||||
|  | +			gpios = <&chipcommon 12 GPIO_ACTIVE_HIGH>; | ||||||
|  | +		}; | ||||||
|  | + | ||||||
|  | +		bluebar3 { | ||||||
|  | +			label = "bcm53xx:white:bluebar3"; | ||||||
|  | +			gpios = <&chipcommon 15 GPIO_ACTIVE_LOW>; | ||||||
|  | +		}; | ||||||
|  | + | ||||||
|  | +		bluebar4 { | ||||||
|  | +			label = "bcm53xx:white:bluebar4"; | ||||||
|  | +			gpios = <&chipcommon 18 GPIO_ACTIVE_HIGH>; | ||||||
|  | +		}; | ||||||
|  | + | ||||||
|  | +		bluebar5 { | ||||||
|  | +			label = "bcm53xx:white:bluebar5"; | ||||||
|  | +			gpios = <&chipcommon 19 GPIO_ACTIVE_HIGH>; | ||||||
|  | +		}; | ||||||
|  | + | ||||||
|  | +		bluebar6 { | ||||||
|  | +			label = "bcm53xx:white:bluebar6"; | ||||||
|  | +			gpios = <&chipcommon 20 GPIO_ACTIVE_HIGH>; | ||||||
|  | +		}; | ||||||
|  | + | ||||||
|  | +		bluebar7 { | ||||||
|  | +			label = "bcm53xx:white:bluebar7"; | ||||||
|  | +			gpios = <&chipcommon 21 GPIO_ACTIVE_HIGH>; | ||||||
|  | +		}; | ||||||
|  | + | ||||||
|  | +		bluebar8 { | ||||||
|  | +			label = "bcm53xx:white:bluebar8"; | ||||||
|  | +			gpios = <&chipcommon 8 GPIO_ACTIVE_HIGH>; | ||||||
|  | +		}; | ||||||
|  | +	}; | ||||||
|  | + | ||||||
|  | +	mdio-bus-mux { | ||||||
|  | +		/* BIT(9) = 1 => external mdio */ | ||||||
|  | +		mdio_ext: mdio@200 { | ||||||
|  | +			reg = <0x200>; | ||||||
|  | +			#address-cells = <1>; | ||||||
|  | +			#size-cells = <0>; | ||||||
|  | +		}; | ||||||
|  | +	}; | ||||||
|  | + | ||||||
|  | +	mdio-mii-mux { | ||||||
|  | +		compatible = "mdio-mux-mmioreg"; | ||||||
|  | +		mdio-parent-bus = <&mdio_ext>; | ||||||
|  | +		#address-cells = <1>; | ||||||
|  | +		#size-cells = <0>; | ||||||
|  | +		reg = <0x1800c1c0 0x4>; | ||||||
|  | + | ||||||
|  | +		/* BIT(6) = mdc, BIT(7) = mdio */ | ||||||
|  | +		mux-mask = <0xc0>; | ||||||
|  | + | ||||||
|  | +		mdio-mii@0 { | ||||||
|  | +			/* Enable MII function */ | ||||||
|  | +			reg = <0x0>; | ||||||
|  | +			#address-cells = <1>; | ||||||
|  | +			#size-cells = <0>; | ||||||
|  | + | ||||||
|  | +			switch@0  { | ||||||
|  | +				compatible = "brcm,bcm53125"; | ||||||
|  | +				#address-cells = <1>; | ||||||
|  | +				#size-cells = <0>; | ||||||
|  | +				reset-gpios = <&chipcommon 10 GPIO_ACTIVE_LOW>; | ||||||
|  | +				reset-names = "robo_reset"; | ||||||
|  | +				reg = <0>; | ||||||
|  | +				dsa,member = <1 0>; | ||||||
|  | + | ||||||
|  | +				ports { | ||||||
|  | +					#address-cells = <1>; | ||||||
|  | +					#size-cells = <0>; | ||||||
|  | + | ||||||
|  | +					port@0 { | ||||||
|  | +						reg = <0>; | ||||||
|  | +						label = "lan1"; | ||||||
|  | +					}; | ||||||
|  | + | ||||||
|  | +					port@1 { | ||||||
|  | +						reg = <1>; | ||||||
|  | +						label = "lan5"; | ||||||
|  | +					}; | ||||||
|  | + | ||||||
|  | +					port@2 { | ||||||
|  | +						reg = <2>; | ||||||
|  | +						label = "lan2"; | ||||||
|  | +					}; | ||||||
|  | + | ||||||
|  | +					port@3 { | ||||||
|  | +						reg = <3>; | ||||||
|  | +						label = "lan6"; | ||||||
|  | +					}; | ||||||
|  | + | ||||||
|  | +					port@4 { | ||||||
|  | +						reg = <4>; | ||||||
|  | +						label = "lan3"; | ||||||
|  | +					}; | ||||||
|  | + | ||||||
|  | +					sw1_p8: port@8 { | ||||||
|  | +						reg = <8>; | ||||||
|  | +						ethernet = <&sw0_p0>; | ||||||
|  | +						label = "cpu"; | ||||||
|  | + | ||||||
|  | +						fixed-link { | ||||||
|  | +							speed = <1000>; | ||||||
|  | +							full-duplex; | ||||||
|  | +						}; | ||||||
|  | +					}; | ||||||
|  | +				}; | ||||||
|  | +			}; | ||||||
|  | +		}; | ||||||
|  | +	}; | ||||||
|  | +}; | ||||||
|  | + | ||||||
|  | +&usb2 { | ||||||
|  | +	vcc-gpio = <&chipcommon 13 GPIO_ACTIVE_HIGH>; | ||||||
|  | +}; | ||||||
|  | + | ||||||
|  | +&usb3 { | ||||||
|  | +	vcc-gpio = <&chipcommon 14 GPIO_ACTIVE_HIGH>; | ||||||
|  | +}; | ||||||
|  | + | ||||||
|  | +&srab { | ||||||
|  | +	compatible = "brcm,bcm53012-srab", "brcm,bcm5301x-srab"; | ||||||
|  | +	status = "okay"; | ||||||
|  | +	dsa,member = <0 0>; | ||||||
|  | + | ||||||
|  | +	ports { | ||||||
|  | +		#address-cells = <1>; | ||||||
|  | +		#size-cells = <0>; | ||||||
|  | + | ||||||
|  | +		port@1 { | ||||||
|  | +			reg = <1>; | ||||||
|  | +			label = "lan7"; | ||||||
|  | +		}; | ||||||
|  | + | ||||||
|  | +		port@2 { | ||||||
|  | +			reg = <2>; | ||||||
|  | +			label = "lan4"; | ||||||
|  | +		}; | ||||||
|  | + | ||||||
|  | +		port@3 { | ||||||
|  | +			reg = <3>; | ||||||
|  | +			label = "lan8"; | ||||||
|  | +		}; | ||||||
|  | + | ||||||
|  | +		port@4 { | ||||||
|  | +			reg = <4>; | ||||||
|  | +			label = "wan"; | ||||||
|  | +		}; | ||||||
|  | + | ||||||
|  | +		port@8 { | ||||||
|  | +			reg = <8>; | ||||||
|  | +			ethernet = <&gmac2>; | ||||||
|  | +			label = "cpu"; | ||||||
|  | + | ||||||
|  | +			fixed-link { | ||||||
|  | +				speed = <1000>; | ||||||
|  | +				full-duplex; | ||||||
|  | +			}; | ||||||
|  | +		}; | ||||||
|  | + | ||||||
|  | +		sw0_p0: port@0 { | ||||||
|  | +			reg = <0>; | ||||||
|  | +			label = "extsw"; | ||||||
|  | + | ||||||
|  | +			fixed-link { | ||||||
|  | +				speed = <1000>; | ||||||
|  | +				full-duplex; | ||||||
|  | +			}; | ||||||
|  | +		}; | ||||||
|  |  	}; | ||||||
|  |  }; | ||||||
|  |   | ||||||
| @@ -0,0 +1,166 @@ | |||||||
|  | From ed4728d9fa0b19687caa964cf5c2082b80208167 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl> | ||||||
|  | Date: Sat, 28 Jul 2018 13:25:48 +0200 | ||||||
|  | Subject: [PATCH] ARM: dts: BCM5301X: Specify flash partitions | ||||||
|  | MIME-Version: 1.0 | ||||||
|  | Content-Type: text/plain; charset=UTF-8 | ||||||
|  | Content-Transfer-Encoding: 8bit | ||||||
|  |  | ||||||
|  | Most devices use Broadcom standard partitions which allows them to be | ||||||
|  | described with the "brcm,bcm947xx-cfe-partitions". Exceptions are: | ||||||
|  | 1) TP-LINK devices which use "os-image" partition with TRX containing | ||||||
|  |    kernel only + separated rootfs partition. | ||||||
|  | 2) Asus RT-AC87U with custom "asus" partition. | ||||||
|  |  | ||||||
|  | This commit also removes undocumented and unsupported linux,part-probe | ||||||
|  | binding which got accidentally upstreamed while describing SPI | ||||||
|  | controller. | ||||||
|  |  | ||||||
|  | Signed-off-by: Rafał Miłecki <rafal@milecki.pl> | ||||||
|  | --- | ||||||
|  |  arch/arm/boot/dts/bcm47081-tplink-archer-c5-v2.dts | 28 +++++++++++++++++++ | ||||||
|  |  arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts        | 31 ++++++++++++++++++++++ | ||||||
|  |  arch/arm/boot/dts/bcm4709-tplink-archer-c9-v1.dts  | 28 +++++++++++++++++++ | ||||||
|  |  arch/arm/boot/dts/bcm5301x-nand-cs0.dtsi           |  4 +++ | ||||||
|  |  arch/arm/boot/dts/bcm5301x.dtsi                    |  5 +++- | ||||||
|  |  5 files changed, 95 insertions(+), 1 deletion(-) | ||||||
|  |  | ||||||
|  | --- a/arch/arm/boot/dts/bcm47081-tplink-archer-c5-v2.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm47081-tplink-archer-c5-v2.dts | ||||||
|  | @@ -94,6 +94,34 @@ | ||||||
|  |   | ||||||
|  |  &spi_nor { | ||||||
|  |  	status = "okay"; | ||||||
|  | + | ||||||
|  | +	partitions { | ||||||
|  | +		compatible = "fixed-partitions"; | ||||||
|  | +		#address-cells = <1>; | ||||||
|  | +		#size-cells = <1>; | ||||||
|  | + | ||||||
|  | +		boot@0 { | ||||||
|  | +			label = "boot"; | ||||||
|  | +			reg = <0x000000 0x040000>; | ||||||
|  | +			read-only; | ||||||
|  | +		}; | ||||||
|  | + | ||||||
|  | +		os-image@100000 { | ||||||
|  | +			label = "os-image"; | ||||||
|  | +			reg = <0x040000 0x200000>; | ||||||
|  | +			compatible = "brcm,trx"; | ||||||
|  | +		}; | ||||||
|  | + | ||||||
|  | +		rootfs@240000 { | ||||||
|  | +			label = "rootfs"; | ||||||
|  | +			reg = <0x240000 0xc00000>; | ||||||
|  | +		}; | ||||||
|  | + | ||||||
|  | +		nvram@ff0000 { | ||||||
|  | +			label = "nvram"; | ||||||
|  | +			reg = <0xff0000 0x010000>; | ||||||
|  | +		}; | ||||||
|  | +	}; | ||||||
|  |  }; | ||||||
|  |   | ||||||
|  |  &usb2 { | ||||||
|  | --- a/arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts | ||||||
|  | @@ -66,3 +66,34 @@ | ||||||
|  |  &usb3_phy { | ||||||
|  |  	status = "okay"; | ||||||
|  |  }; | ||||||
|  | + | ||||||
|  | +&nandcs { | ||||||
|  | +	partitions { | ||||||
|  | +		compatible = "fixed-partitions"; | ||||||
|  | +		#address-cells = <1>; | ||||||
|  | +		#size-cells = <1>; | ||||||
|  | + | ||||||
|  | +		boot@0 { | ||||||
|  | +			label = "boot"; | ||||||
|  | +			reg = <0x00000000 0x00080000>; | ||||||
|  | +			read-only; | ||||||
|  | +		}; | ||||||
|  | + | ||||||
|  | +		nvram@80000 { | ||||||
|  | +			label = "nvram"; | ||||||
|  | +			reg = <0x00080000 0x00180000>; | ||||||
|  | +		}; | ||||||
|  | + | ||||||
|  | +		firmware@200000 { | ||||||
|  | +			label = "firmware"; | ||||||
|  | +			reg = <0x00200000 0x07cc0000>; | ||||||
|  | +			compatible = "brcm,trx"; | ||||||
|  | +		}; | ||||||
|  | + | ||||||
|  | +		asus@7ec0000 { | ||||||
|  | +			label = "asus"; | ||||||
|  | +			reg = <0x07ec0000 0x00140000>; | ||||||
|  | +			read-only; | ||||||
|  | +		}; | ||||||
|  | +	}; | ||||||
|  | +}; | ||||||
|  | --- a/arch/arm/boot/dts/bcm4709-tplink-archer-c9-v1.dts | ||||||
|  | +++ b/arch/arm/boot/dts/bcm4709-tplink-archer-c9-v1.dts | ||||||
|  | @@ -103,6 +103,34 @@ | ||||||
|  |   | ||||||
|  |  &spi_nor { | ||||||
|  |  	status = "okay"; | ||||||
|  | + | ||||||
|  | +	partitions { | ||||||
|  | +		compatible = "fixed-partitions"; | ||||||
|  | +		#address-cells = <1>; | ||||||
|  | +		#size-cells = <1>; | ||||||
|  | + | ||||||
|  | +		boot@0 { | ||||||
|  | +			label = "boot"; | ||||||
|  | +			reg = <0x000000 0x040000>; | ||||||
|  | +			read-only; | ||||||
|  | +		}; | ||||||
|  | + | ||||||
|  | +		os-image@100000 { | ||||||
|  | +			label = "os-image"; | ||||||
|  | +			reg = <0x040000 0x200000>; | ||||||
|  | +			compatible = "brcm,trx"; | ||||||
|  | +		}; | ||||||
|  | + | ||||||
|  | +		rootfs@240000 { | ||||||
|  | +			label = "rootfs"; | ||||||
|  | +			reg = <0x240000 0xc00000>; | ||||||
|  | +		}; | ||||||
|  | + | ||||||
|  | +		nvram@ff0000 { | ||||||
|  | +			label = "nvram"; | ||||||
|  | +			reg = <0xff0000 0x010000>; | ||||||
|  | +		}; | ||||||
|  | +	}; | ||||||
|  |  }; | ||||||
|  |   | ||||||
|  |  &usb3_phy { | ||||||
|  | --- a/arch/arm/boot/dts/bcm5301x-nand-cs0.dtsi | ||||||
|  | +++ b/arch/arm/boot/dts/bcm5301x-nand-cs0.dtsi | ||||||
|  | @@ -12,6 +12,10 @@ | ||||||
|  |  			reg = <0>; | ||||||
|  |  			#address-cells = <1>; | ||||||
|  |  			#size-cells = <1>; | ||||||
|  | + | ||||||
|  | +			partitions { | ||||||
|  | +				compatible = "brcm,bcm947xx-cfe-partitions"; | ||||||
|  | +			}; | ||||||
|  |  		}; | ||||||
|  |  	}; | ||||||
|  |  }; | ||||||
|  | --- a/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
|  | +++ b/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
|  | @@ -475,8 +475,11 @@ | ||||||
|  |  			compatible = "jedec,spi-nor"; | ||||||
|  |  			reg = <0>; | ||||||
|  |  			spi-max-frequency = <20000000>; | ||||||
|  | -			linux,part-probe = "ofpart", "bcm47xxpart"; | ||||||
|  |  			status = "disabled"; | ||||||
|  | + | ||||||
|  | +			partitions { | ||||||
|  | +				compatible = "brcm,bcm947xx-cfe-partitions"; | ||||||
|  | +			}; | ||||||
|  |  		}; | ||||||
|  |  	}; | ||||||
|  |   | ||||||
| @@ -127,7 +127,7 @@ it on BCM4708 family. | |||||||
|  /* |  /* | ||||||
| --- a/drivers/usb/host/xhci.h | --- a/drivers/usb/host/xhci.h | ||||||
| +++ b/drivers/usb/host/xhci.h | +++ b/drivers/usb/host/xhci.h | ||||||
| @@ -1831,6 +1831,7 @@ struct xhci_hcd { | @@ -1835,6 +1835,7 @@ struct xhci_hcd { | ||||||
|  #define XHCI_LIMIT_ENDPOINT_INTERVAL_7	(1 << 26) |  #define XHCI_LIMIT_ENDPOINT_INTERVAL_7	(1 << 26) | ||||||
|  #define XHCI_U2_DISABLE_WAKE	(1 << 27) |  #define XHCI_U2_DISABLE_WAKE	(1 << 27) | ||||||
|  #define XHCI_ASMEDIA_MODIFY_FLOWCONTROL	(1 << 28) |  #define XHCI_ASMEDIA_MODIFY_FLOWCONTROL	(1 << 28) | ||||||
|   | |||||||
| @@ -1,53 +0,0 @@ | |||||||
| From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl> |  | ||||||
| Subject: [PATCH] Use "brcm,bcm947xx-cfe-partitions" binding for Broadcom |  | ||||||
|  partitions |  | ||||||
|  |  | ||||||
| --- |  | ||||||
|  |  | ||||||
| --- a/arch/arm/boot/dts/bcm5301x-nand-cs0.dtsi |  | ||||||
| +++ b/arch/arm/boot/dts/bcm5301x-nand-cs0.dtsi |  | ||||||
| @@ -12,6 +12,10 @@ |  | ||||||
|  			reg = <0>; |  | ||||||
|  			#address-cells = <1>; |  | ||||||
|  			#size-cells = <1>; |  | ||||||
| + |  | ||||||
| +			partitions { |  | ||||||
| +				compatible = "brcm,bcm947xx-cfe-partitions"; |  | ||||||
| +			}; |  | ||||||
|  		}; |  | ||||||
|  	}; |  | ||||||
|  }; |  | ||||||
| --- a/arch/arm/boot/dts/bcm5301x.dtsi |  | ||||||
| +++ b/arch/arm/boot/dts/bcm5301x.dtsi |  | ||||||
| @@ -456,8 +456,11 @@ |  | ||||||
|  			compatible = "jedec,spi-nor"; |  | ||||||
|  			reg = <0>; |  | ||||||
|  			spi-max-frequency = <20000000>; |  | ||||||
| -			linux,part-probe = "ofpart", "bcm47xxpart"; |  | ||||||
|  			status = "disabled"; |  | ||||||
| + |  | ||||||
| +			partitions { |  | ||||||
| +				compatible = "brcm,bcm947xx-cfe-partitions"; |  | ||||||
| +			}; |  | ||||||
|  		}; |  | ||||||
|  	}; |  | ||||||
|   |  | ||||||
| --- a/drivers/mtd/bcm47xxpart.c |  | ||||||
| +++ b/drivers/mtd/bcm47xxpart.c |  | ||||||
| @@ -314,9 +314,16 @@ static int bcm47xxpart_parse(struct mtd_ |  | ||||||
|  	return curr_part; |  | ||||||
|  }; |  | ||||||
|   |  | ||||||
| +static const struct of_device_id bcm47xxpart_of_match_table[] = { |  | ||||||
| +	{ .compatible = "brcm,bcm947xx-cfe-partitions" }, |  | ||||||
| +	{}, |  | ||||||
| +}; |  | ||||||
| +MODULE_DEVICE_TABLE(of, bcm47xxpart_of_match_table); |  | ||||||
| + |  | ||||||
|  static struct mtd_part_parser bcm47xxpart_mtd_parser = { |  | ||||||
|  	.parse_fn = bcm47xxpart_parse, |  | ||||||
|  	.name = "bcm47xxpart", |  | ||||||
| +	.of_match_table = bcm47xxpart_of_match_table, |  | ||||||
|  }; |  | ||||||
|  module_mtd_part_parser(bcm47xxpart_mtd_parser); |  | ||||||
|   |  | ||||||
| @@ -1,56 +0,0 @@ | |||||||
| From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl> |  | ||||||
| Subject: [PATCH] mtd: bcm47xxpart: add device specific workarounds |  | ||||||
| MIME-Version: 1.0 |  | ||||||
| Content-Type: text/plain; charset=UTF-8 |  | ||||||
| Content-Transfer-Encoding: 8bit |  | ||||||
|  |  | ||||||
| Signed-off-by: Rafał Miłecki <rafal@milecki.pl> |  | ||||||
| --- |  | ||||||
|  |  | ||||||
| --- a/drivers/mtd/bcm47xxpart.c |  | ||||||
| +++ b/drivers/mtd/bcm47xxpart.c |  | ||||||
| @@ -15,6 +15,7 @@ |  | ||||||
|  #include <linux/slab.h> |  | ||||||
|  #include <linux/mtd/mtd.h> |  | ||||||
|  #include <linux/mtd/partitions.h> |  | ||||||
| +#include <linux/of.h> |  | ||||||
|   |  | ||||||
|  #include <uapi/linux/magic.h> |  | ||||||
|   |  | ||||||
| @@ -134,6 +135,36 @@ static int bcm47xxpart_parse(struct mtd_ |  | ||||||
|  			break; |  | ||||||
|  		} |  | ||||||
|   |  | ||||||
| +		/* |  | ||||||
| +		 * Device specific workarounds (hacks). We should use DT to |  | ||||||
| +		 * define partitions but we need a working TRX firmware splitter |  | ||||||
| +		 * first. |  | ||||||
| +		 */ |  | ||||||
| +		if (of_machine_is_compatible("asus,rt-ac87u") && offset == 0x7ec0000) { |  | ||||||
| +			/* |  | ||||||
| +			 * "asus" partition uses JFFS2 which we don't detect and |  | ||||||
| +			 * we don't want to as this could affect other devices. |  | ||||||
| +			 */ |  | ||||||
| +			bcm47xxpart_add_part(&parts[curr_part++], "asus", offset, MTD_WRITEABLE); |  | ||||||
| +			continue; |  | ||||||
| +		} else  if (of_machine_is_compatible("tplink,archer-c5-v2") && offset == 0xe40000) { |  | ||||||
| +			/* |  | ||||||
| +			 * There is a whole set of partitions (not even listed |  | ||||||
| +			 * by original firmware): "default-mac", "pin", |  | ||||||
| +			 * "partition-table", etc. |  | ||||||
| +			 */ |  | ||||||
| +			bcm47xxpart_add_part(&parts[curr_part++], "tplink", offset, MTD_WRITEABLE); |  | ||||||
| +			continue; |  | ||||||
| +		} else  if (of_machine_is_compatible("tplink,archer-c9-v1") && offset == 0xe40000) { |  | ||||||
| +			/* |  | ||||||
| +			 * There is a whole set of partitions (not even listed |  | ||||||
| +			 * by original firmware): "default-mac", "pin", |  | ||||||
| +			 * "partition-table", etc. |  | ||||||
| +			 */ |  | ||||||
| +			bcm47xxpart_add_part(&parts[curr_part++], "tplink", offset, MTD_WRITEABLE); |  | ||||||
| +			continue; |  | ||||||
| +		} |  | ||||||
| + |  | ||||||
|  		/* Read beginning of the block */ |  | ||||||
|  		err = mtd_read(master, offset, BCM47XXPART_BYTES_TO_READ, |  | ||||||
|  			       &bytes_read, (uint8_t *)buf); |  | ||||||
| @@ -11,22 +11,14 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl> | |||||||
|  |  | ||||||
| --- a/arch/arm/boot/dts/bcm53573.dtsi | --- a/arch/arm/boot/dts/bcm53573.dtsi | ||||||
| +++ b/arch/arm/boot/dts/bcm53573.dtsi | +++ b/arch/arm/boot/dts/bcm53573.dtsi | ||||||
| @@ -48,6 +48,15 @@ | @@ -54,6 +54,7 @@ | ||||||
|  		}; |  			     <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>, | ||||||
|  |  			     <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>, | ||||||
|  |  			     <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>; | ||||||
|  | +		clocks = <&ilp>; | ||||||
|  	}; |  	}; | ||||||
|   |   | ||||||
| +	timer { |  | ||||||
| +		compatible = "arm,armv7-timer"; |  | ||||||
| +		interrupts = <GIC_PPI 13 0>, |  | ||||||
| +			     <GIC_PPI 14 0>, |  | ||||||
| +			     <GIC_PPI 11 0>, |  | ||||||
| +			     <GIC_PPI 10 0>; |  | ||||||
| +		clocks = <&ilp>; |  | ||||||
| +	}; |  | ||||||
| + |  | ||||||
|  	clocks { |  	clocks { | ||||||
|  		#address-cells = <1>; |  | ||||||
|  		#size-cells = <1>; |  | ||||||
| --- a/drivers/bcma/main.c | --- a/drivers/bcma/main.c | ||||||
| +++ b/drivers/bcma/main.c | +++ b/drivers/bcma/main.c | ||||||
| @@ -348,14 +348,6 @@ static int bcma_register_devices(struct | @@ -348,14 +348,6 @@ static int bcma_register_devices(struct | ||||||
|   | |||||||
| @@ -47,6 +47,7 @@ CONFIG_ARM64_PAGE_SHIFT=12 | |||||||
| CONFIG_ARM64_PAN=y | CONFIG_ARM64_PAN=y | ||||||
| # CONFIG_ARM64_PTDUMP is not set | # CONFIG_ARM64_PTDUMP is not set | ||||||
| # CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET is not set | # CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET is not set | ||||||
|  | CONFIG_ARM64_SSBD=y | ||||||
| CONFIG_ARM64_UAO=y | CONFIG_ARM64_UAO=y | ||||||
| CONFIG_ARM64_VA_BITS=39 | CONFIG_ARM64_VA_BITS=39 | ||||||
| CONFIG_ARM64_VA_BITS_39=y | CONFIG_ARM64_VA_BITS_39=y | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ Subject: [PATCH] kbuild: Ignore dtco targets when filtering symbols | |||||||
|  |  | ||||||
| --- a/scripts/Kbuild.include | --- a/scripts/Kbuild.include | ||||||
| +++ b/scripts/Kbuild.include | +++ b/scripts/Kbuild.include | ||||||
| @@ -284,7 +284,7 @@ ksym_dep_filter = | @@ -285,7 +285,7 @@ ksym_dep_filter = | ||||||
|  	    $(CPP) $(call flags_nodeps,c_flags) -D__KSYM_DEPS__ $< ;;        \ |  	    $(CPP) $(call flags_nodeps,c_flags) -D__KSYM_DEPS__ $< ;;        \ | ||||||
|  	  as_*_S|cpp_s_S)                                                    \ |  	  as_*_S|cpp_s_S)                                                    \ | ||||||
|  	    $(CPP) $(call flags_nodeps,a_flags) -D__KSYM_DEPS__ $< ;;        \ |  	    $(CPP) $(call flags_nodeps,a_flags) -D__KSYM_DEPS__ $< ;;        \ | ||||||
|   | |||||||
| @@ -696,7 +696,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org> | |||||||
|  } |  } | ||||||
| --- a/drivers/usb/core/hub.c
 | --- a/drivers/usb/core/hub.c
 | ||||||
| +++ b/drivers/usb/core/hub.c
 | +++ b/drivers/usb/core/hub.c
 | ||||||
| @@ -5064,7 +5064,7 @@ static void port_event(struct usb_hub *h
 | @@ -5072,7 +5072,7 @@ static void port_event(struct usb_hub *h
 | ||||||
|  	if (portchange & USB_PORT_STAT_C_OVERCURRENT) { |  	if (portchange & USB_PORT_STAT_C_OVERCURRENT) { | ||||||
|  		u16 status = 0, unused; |  		u16 status = 0, unused; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -94,28 +94,7 @@ w1-gpio: Sort out the pullup/parasitic power tangle | |||||||
|   |   | ||||||
|  	pdev->dev.platform_data = pdata; |  	pdev->dev.platform_data = pdata; | ||||||
|   |   | ||||||
| @@ -113,13 +140,15 @@ static int w1_gpio_probe_dt(struct platf | @@ -135,6 +162,22 @@ static int w1_gpio_probe(struct platform | ||||||
|  static int w1_gpio_probe(struct platform_device *pdev) |  | ||||||
|  { |  | ||||||
|  	struct w1_bus_master *master; |  | ||||||
| -	struct w1_gpio_platform_data *pdata; |  | ||||||
| +	struct w1_gpio_platform_data *pdata = pdev->dev.platform_data; |  | ||||||
|  	int err; |  | ||||||
|   |  | ||||||
| -	if (of_have_populated_dt()) { |  | ||||||
| -		err = w1_gpio_probe_dt(pdev); |  | ||||||
| -		if (err < 0) |  | ||||||
| -			return err; |  | ||||||
| +	if(pdata == NULL) { |  | ||||||
| +		if (of_have_populated_dt()) { |  | ||||||
| +			err = w1_gpio_probe_dt(pdev); |  | ||||||
| +			if (err < 0) |  | ||||||
| +				return err; |  | ||||||
| +		} |  | ||||||
|  	} |  | ||||||
|   |  | ||||||
|  	pdata = dev_get_platdata(&pdev->dev); |  | ||||||
| @@ -136,6 +165,22 @@ static int w1_gpio_probe(struct platform |  | ||||||
|  		return -ENOMEM; |  		return -ENOMEM; | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
| @@ -138,7 +117,7 @@ w1-gpio: Sort out the pullup/parasitic power tangle | |||||||
|  	err = devm_gpio_request(&pdev->dev, pdata->pin, "w1"); |  	err = devm_gpio_request(&pdev->dev, pdata->pin, "w1"); | ||||||
|  	if (err) { |  	if (err) { | ||||||
|  		dev_err(&pdev->dev, "gpio_request (pin) failed\n"); |  		dev_err(&pdev->dev, "gpio_request (pin) failed\n"); | ||||||
| @@ -165,6 +210,14 @@ static int w1_gpio_probe(struct platform | @@ -164,6 +207,14 @@ static int w1_gpio_probe(struct platform | ||||||
|  		master->set_pullup = w1_gpio_set_pullup; |  		master->set_pullup = w1_gpio_set_pullup; | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
| @@ -153,7 +132,7 @@ w1-gpio: Sort out the pullup/parasitic power tangle | |||||||
|  	err = w1_add_master_device(master); |  	err = w1_add_master_device(master); | ||||||
|  	if (err) { |  	if (err) { | ||||||
|  		dev_err(&pdev->dev, "w1_add_master device failed\n"); |  		dev_err(&pdev->dev, "w1_add_master device failed\n"); | ||||||
| @@ -195,6 +248,10 @@ static int w1_gpio_remove(struct platfor | @@ -194,6 +245,10 @@ static int w1_gpio_remove(struct platfor | ||||||
|   |   | ||||||
|  	w1_remove_master_device(master); |  	w1_remove_master_device(master); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -39,7 +39,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> | |||||||
|  |  | ||||||
| --- a/drivers/usb/dwc2/hcd.c | --- a/drivers/usb/dwc2/hcd.c | ||||||
| +++ b/drivers/usb/dwc2/hcd.c | +++ b/drivers/usb/dwc2/hcd.c | ||||||
| @@ -4381,6 +4381,9 @@ static int _dwc2_hcd_suspend(struct usb_ | @@ -4383,6 +4383,9 @@ static int _dwc2_hcd_suspend(struct usb_ | ||||||
|  	if (!HCD_HW_ACCESSIBLE(hcd)) |  	if (!HCD_HW_ACCESSIBLE(hcd)) | ||||||
|  		goto unlock; |  		goto unlock; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -39,7 +39,7 @@ configure_by_vlanports() { | |||||||
| 			"1:lan" "2:lan" "3:lan" "4:lan" "0:wan" "5@eth0" | 			"1:lan" "2:lan" "3:lan" "4:lan" "0:wan" "5@eth0" | ||||||
|  |  | ||||||
| 	else | 	else | ||||||
| 		logger -t "01_detect" "Unable to determine network configuration" | 		logger -t "01_network" "Unable to determine network configuration" | ||||||
| 		ucidef_set_interface_lan "eth0" | 		ucidef_set_interface_lan "eth0" | ||||||
| 	fi | 	fi | ||||||
| } | } | ||||||
|   | |||||||
| @@ -8,7 +8,7 @@ | |||||||
|  #include <asm/bootinfo.h> |  #include <asm/bootinfo.h> | ||||||
|  #include <asm/idle.h> |  #include <asm/idle.h> | ||||||
|  #include <asm/prom.h> |  #include <asm/prom.h> | ||||||
| @@ -231,6 +232,33 @@ static struct fixed_phy_status bcm47xx_f | @@ -225,6 +226,33 @@ static struct fixed_phy_status bcm47xx_f | ||||||
|  	.duplex	= DUPLEX_FULL, |  	.duplex	= DUPLEX_FULL, | ||||||
|  }; |  }; | ||||||
|   |   | ||||||
| @@ -42,7 +42,7 @@ | |||||||
|  static int __init bcm47xx_register_bus_complete(void) |  static int __init bcm47xx_register_bus_complete(void) | ||||||
|  { |  { | ||||||
|  	switch (bcm47xx_bus_type) { |  	switch (bcm47xx_bus_type) { | ||||||
| @@ -250,6 +278,7 @@ static int __init bcm47xx_register_bus_c | @@ -244,6 +272,7 @@ static int __init bcm47xx_register_bus_c | ||||||
|  	bcm47xx_workarounds(); |  	bcm47xx_workarounds(); | ||||||
|   |   | ||||||
|  	fixed_phy_add(PHY_POLL, 0, &bcm47xx_fixed_phy_status, -1); |  	fixed_phy_add(PHY_POLL, 0, &bcm47xx_fixed_phy_status, -1); | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| --- a/drivers/mtd/bcm47xxpart.c | --- a/drivers/mtd/bcm47xxpart.c | ||||||
| +++ b/drivers/mtd/bcm47xxpart.c | +++ b/drivers/mtd/bcm47xxpart.c | ||||||
| @@ -102,6 +102,7 @@ static int bcm47xxpart_parse(struct mtd_ | @@ -103,6 +103,7 @@ static int bcm47xxpart_parse(struct mtd_ | ||||||
|  	int trx_num = 0; /* Number of found TRX partitions */ |  	int trx_num = 0; /* Number of found TRX partitions */ | ||||||
|  	int possible_nvram_sizes[] = { 0x8000, 0xF000, 0x10000, }; |  	int possible_nvram_sizes[] = { 0x8000, 0xF000, 0x10000, }; | ||||||
|  	int err; |  	int err; | ||||||
| @@ -8,7 +8,7 @@ | |||||||
|   |   | ||||||
|  	/* |  	/* | ||||||
|  	 * Some really old flashes (like AT45DB*) had smaller erasesize-s, but |  	 * Some really old flashes (like AT45DB*) had smaller erasesize-s, but | ||||||
| @@ -283,12 +284,23 @@ static int bcm47xxpart_parse(struct mtd_ | @@ -284,12 +285,23 @@ static int bcm47xxpart_parse(struct mtd_ | ||||||
|  		if (buf[0] == NVRAM_HEADER) { |  		if (buf[0] == NVRAM_HEADER) { | ||||||
|  			bcm47xxpart_add_part(&parts[curr_part++], "nvram", |  			bcm47xxpart_add_part(&parts[curr_part++], "nvram", | ||||||
|  					     master->size - blocksize, 0); |  					     master->size - blocksize, 0); | ||||||
|   | |||||||
| @@ -1,101 +0,0 @@ | |||||||
| From d0423d3e4fa7ae305729cb50369427f075ccb279 Mon Sep 17 00:00:00 2001 |  | ||||||
| From: Jonas Gorski <jonas.gorski@gmail.com> |  | ||||||
| Date: Sat, 25 Feb 2017 12:41:28 +0100 |  | ||||||
| Subject: [PATCH 1/6] bcm63xx_enet: correct clock usage |  | ||||||
|  |  | ||||||
| Check the return code of prepare_enable and change one last instance of |  | ||||||
| enable only to prepare_enable. Also properly disable and release the |  | ||||||
| clock in error paths and on remove for enetsw. |  | ||||||
|  |  | ||||||
| Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com> |  | ||||||
| --- |  | ||||||
|  drivers/net/ethernet/broadcom/bcm63xx_enet.c | 31 +++++++++++++++++++++------- |  | ||||||
|  1 file changed, 23 insertions(+), 8 deletions(-) |  | ||||||
|  |  | ||||||
| --- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c |  | ||||||
| +++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c |  | ||||||
| @@ -1773,7 +1773,9 @@ static int bcm_enet_probe(struct platfor |  | ||||||
|  		ret = PTR_ERR(priv->mac_clk); |  | ||||||
|  		goto out; |  | ||||||
|  	} |  | ||||||
| -	clk_prepare_enable(priv->mac_clk); |  | ||||||
| +	ret = clk_prepare_enable(priv->mac_clk); |  | ||||||
| +	if (ret) |  | ||||||
| +		goto out_put_clk_mac; |  | ||||||
|   |  | ||||||
|  	/* initialize default and fetch platform data */ |  | ||||||
|  	priv->rx_ring_size = BCMENET_DEF_RX_DESC; |  | ||||||
| @@ -1805,9 +1807,11 @@ static int bcm_enet_probe(struct platfor |  | ||||||
|  		if (IS_ERR(priv->phy_clk)) { |  | ||||||
|  			ret = PTR_ERR(priv->phy_clk); |  | ||||||
|  			priv->phy_clk = NULL; |  | ||||||
| -			goto out_put_clk_mac; |  | ||||||
| +			goto out_disable_clk_mac; |  | ||||||
|  		} |  | ||||||
| -		clk_prepare_enable(priv->phy_clk); |  | ||||||
| +		ret = clk_prepare_enable(priv->phy_clk); |  | ||||||
| +		if (ret) |  | ||||||
| +			goto out_put_clk_phy; |  | ||||||
|  	} |  | ||||||
|   |  | ||||||
|  	/* do minimal hardware init to be able to probe mii bus */ |  | ||||||
| @@ -1901,13 +1905,16 @@ out_free_mdio: |  | ||||||
|  out_uninit_hw: |  | ||||||
|  	/* turn off mdc clock */ |  | ||||||
|  	enet_writel(priv, 0, ENET_MIISC_REG); |  | ||||||
| -	if (priv->phy_clk) { |  | ||||||
| +	if (priv->phy_clk) |  | ||||||
|  		clk_disable_unprepare(priv->phy_clk); |  | ||||||
| + |  | ||||||
| +out_put_clk_phy: |  | ||||||
| +	if (priv->phy_clk) |  | ||||||
|  		clk_put(priv->phy_clk); |  | ||||||
| -	} |  | ||||||
|   |  | ||||||
| -out_put_clk_mac: |  | ||||||
| +out_disable_clk_mac: |  | ||||||
|  	clk_disable_unprepare(priv->mac_clk); |  | ||||||
| +out_put_clk_mac: |  | ||||||
|  	clk_put(priv->mac_clk); |  | ||||||
|  out: |  | ||||||
|  	free_netdev(dev); |  | ||||||
| @@ -2752,7 +2759,9 @@ static int bcm_enetsw_probe(struct platf |  | ||||||
|  		ret = PTR_ERR(priv->mac_clk); |  | ||||||
|  		goto out_unmap; |  | ||||||
|  	} |  | ||||||
| -	clk_enable(priv->mac_clk); |  | ||||||
| +	ret = clk_prepare_enable(priv->mac_clk); |  | ||||||
| +	if (ret) |  | ||||||
| +		goto out_put_clk; |  | ||||||
|   |  | ||||||
|  	priv->rx_chan = 0; |  | ||||||
|  	priv->tx_chan = 1; |  | ||||||
| @@ -2773,7 +2782,7 @@ static int bcm_enetsw_probe(struct platf |  | ||||||
|   |  | ||||||
|  	ret = register_netdev(dev); |  | ||||||
|  	if (ret) |  | ||||||
| -		goto out_put_clk; |  | ||||||
| +		goto out_disable_clk; |  | ||||||
|   |  | ||||||
|  	netif_carrier_off(dev); |  | ||||||
|  	platform_set_drvdata(pdev, dev); |  | ||||||
| @@ -2782,6 +2791,9 @@ static int bcm_enetsw_probe(struct platf |  | ||||||
|   |  | ||||||
|  	return 0; |  | ||||||
|   |  | ||||||
| +out_disable_clk: |  | ||||||
| +	clk_disable_unprepare(priv->mac_clk); |  | ||||||
| + |  | ||||||
|  out_put_clk: |  | ||||||
|  	clk_put(priv->mac_clk); |  | ||||||
|   |  | ||||||
| @@ -2813,6 +2825,9 @@ static int bcm_enetsw_remove(struct plat |  | ||||||
|  	res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |  | ||||||
|  	release_mem_region(res->start, resource_size(res)); |  | ||||||
|   |  | ||||||
| +	clk_disable_unprepare(priv->mac_clk); |  | ||||||
| +	clk_put(priv->mac_clk); |  | ||||||
| + |  | ||||||
|  	free_netdev(dev); |  | ||||||
|  	return 0; |  | ||||||
|  } |  | ||||||
| @@ -1,29 +0,0 @@ | |||||||
| From 23d94cb855b6f4f0ee1c01679224472104ac6440 Mon Sep 17 00:00:00 2001 |  | ||||||
| From: Jonas Gorski <jonas.gorski@gmail.com> |  | ||||||
| Date: Sat, 30 Sep 2017 14:10:18 +0200 |  | ||||||
| Subject: [PATCH 2/6] bcm63xx_enet: do not write to random DMA channel on |  | ||||||
|  BCM6345 |  | ||||||
|  |  | ||||||
| The DMA controller regs actually point to DMA channel 0, so the write to |  | ||||||
| ENETDMA_CFG_REG will actually modify a random DMA channel. |  | ||||||
|  |  | ||||||
| Since DMA controller registers do not exist on BCM6345, guard the write |  | ||||||
| with the usual check for dma_has_sram. |  | ||||||
|  |  | ||||||
| Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com> |  | ||||||
| --- |  | ||||||
|  drivers/net/ethernet/broadcom/bcm63xx_enet.c | 3 ++- |  | ||||||
|  1 file changed, 2 insertions(+), 1 deletion(-) |  | ||||||
|  |  | ||||||
| --- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c |  | ||||||
| +++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c |  | ||||||
| @@ -1062,7 +1062,8 @@ static int bcm_enet_open(struct net_devi |  | ||||||
|  	val = enet_readl(priv, ENET_CTL_REG); |  | ||||||
|  	val |= ENET_CTL_ENABLE_MASK; |  | ||||||
|  	enet_writel(priv, val, ENET_CTL_REG); |  | ||||||
| -	enet_dma_writel(priv, ENETDMA_CFG_EN_MASK, ENETDMA_CFG_REG); |  | ||||||
| +	if (priv->dma_has_sram) |  | ||||||
| +		enet_dma_writel(priv, ENETDMA_CFG_EN_MASK, ENETDMA_CFG_REG); |  | ||||||
|  	enet_dmac_writel(priv, priv->dma_chan_en_mask, |  | ||||||
|  			 ENETDMAC_CHANCFG, priv->rx_chan); |  | ||||||
|   |  | ||||||
| @@ -0,0 +1,81 @@ | |||||||
|  | From e62ff8f02eb3ae35ae7ece7c5272a689fd8b0bcd Mon Sep 17 00:00:00 2001 | ||||||
|  | From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl> | ||||||
|  | Date: Fri, 27 Jul 2018 21:37:48 +0200 | ||||||
|  | Subject: [PATCH] Revert "mtd: partitions: use DT info for parsing partitions | ||||||
|  |  with "compatible" prop" | ||||||
|  |  | ||||||
|  | This reverts commit 76a832254ab05502c9394cc51ded6f0abe0e0bee. | ||||||
|  | --- | ||||||
|  |  drivers/mtd/mtdpart.c | 33 ++++++++++++++++++++------------- | ||||||
|  |  1 file changed, 20 insertions(+), 13 deletions(-) | ||||||
|  |  | ||||||
|  | --- a/drivers/mtd/mtdpart.c | ||||||
|  | +++ b/drivers/mtd/mtdpart.c | ||||||
|  | @@ -453,6 +453,22 @@ static inline void free_partition(struct | ||||||
|  |  	kfree(p); | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | +/** | ||||||
|  | + * mtd_parse_part - parse MTD partition looking for subpartitions | ||||||
|  | + * | ||||||
|  | + * @slave: part that is supposed to be a container and should be parsed | ||||||
|  | + * @types: NULL-terminated array with names of partition parsers to try | ||||||
|  | + * | ||||||
|  | + * Some partitions are kind of containers with extra subpartitions (volumes). | ||||||
|  | + * There can be various formats of such containers. This function tries to use | ||||||
|  | + * specified parsers to analyze given partition and registers found | ||||||
|  | + * subpartitions on success. | ||||||
|  | + */ | ||||||
|  | +static int mtd_parse_part(struct mtd_part *slave, const char *const *types) | ||||||
|  | +{ | ||||||
|  | +	return parse_mtd_partitions(&slave->mtd, types, NULL); | ||||||
|  | +} | ||||||
|  | + | ||||||
|  |  static struct mtd_part *allocate_partition(struct mtd_info *parent, | ||||||
|  |  			const struct mtd_partition *part, int partno, | ||||||
|  |  			uint64_t cur_offset) | ||||||
|  | @@ -932,8 +948,8 @@ int add_mtd_partitions(struct mtd_info * | ||||||
|  |  		add_mtd_device(&slave->mtd); | ||||||
|  |  		mtd_partition_split(master, slave); | ||||||
|  |  		mtd_add_partition_attrs(slave); | ||||||
|  | -		/* Look for subpartitions */ | ||||||
|  | -		parse_mtd_partitions(&slave->mtd, parts[i].types, NULL); | ||||||
|  | +		if (parts[i].types) | ||||||
|  | +			mtd_parse_part(slave, parts[i].types); | ||||||
|  |   | ||||||
|  |  		cur_offset = slave->offset + slave->mtd.size; | ||||||
|  |  	} | ||||||
|  | @@ -1035,12 +1051,6 @@ static const char * const default_mtd_pa | ||||||
|  |  	NULL | ||||||
|  |  }; | ||||||
|  |   | ||||||
|  | -/* Check DT only when looking for subpartitions. */ | ||||||
|  | -static const char * const default_subpartition_types[] = { | ||||||
|  | -	"ofpart", | ||||||
|  | -	NULL | ||||||
|  | -}; | ||||||
|  | - | ||||||
|  |  static int mtd_part_do_parse(struct mtd_part_parser *parser, | ||||||
|  |  			     struct mtd_info *master, | ||||||
|  |  			     struct mtd_partitions *pparts, | ||||||
|  | @@ -1111,9 +1121,7 @@ static int mtd_part_of_parse(struct mtd_ | ||||||
|  |  	const char *fixed = "fixed-partitions"; | ||||||
|  |  	int ret, err = 0; | ||||||
|  |   | ||||||
|  | -	np = mtd_get_of_node(master); | ||||||
|  | -	if (!mtd_is_partition(master)) | ||||||
|  | -		np = of_get_child_by_name(np, "partitions"); | ||||||
|  | +	np = of_get_child_by_name(mtd_get_of_node(master), "partitions"); | ||||||
|  |  	of_property_for_each_string(np, "compatible", prop, compat) { | ||||||
|  |  		parser = mtd_part_get_compatible_parser(compat); | ||||||
|  |  		if (!parser) | ||||||
|  | @@ -1183,8 +1191,7 @@ int parse_mtd_partitions(struct mtd_info | ||||||
|  |  	} | ||||||
|  |   | ||||||
|  |  	if (!types) | ||||||
|  | -		types = mtd_is_partition(master) ? default_subpartition_types : | ||||||
|  | -			default_mtd_part_types; | ||||||
|  | +		types = default_mtd_part_types; | ||||||
|  |   | ||||||
|  |  	for ( ; *types; types++) { | ||||||
|  |  		/* | ||||||
| @@ -1,30 +0,0 @@ | |||||||
| From 80a79a889ce5df16c5261ab2f1e8e63b94b78102 Mon Sep 17 00:00:00 2001 |  | ||||||
| From: Heiner Kallweit <hkallweit1@gmail.com> |  | ||||||
| Date: Fri, 28 Oct 2016 07:58:46 +0200 |  | ||||||
| Subject: [PATCH 1/8] mtd: m25p80: consider max message size in m25p80_read |  | ||||||
|  |  | ||||||
| Consider a message size limit when calculating the maximum amount |  | ||||||
| of data that can be read. |  | ||||||
|  |  | ||||||
| The message size limit has been introduced with 4.9, so cc it |  | ||||||
| to stable. |  | ||||||
|  |  | ||||||
| Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> |  | ||||||
| Cc: <stable@vger.kernel.org> # 4.9.x |  | ||||||
| Signed-off-by: Cyrille Pitchen <cyrille.pitchen@atmel.com> |  | ||||||
| --- |  | ||||||
|  drivers/mtd/devices/m25p80.c | 3 ++- |  | ||||||
|  1 file changed, 2 insertions(+), 1 deletion(-) |  | ||||||
|  |  | ||||||
| --- a/drivers/mtd/devices/m25p80.c |  | ||||||
| +++ b/drivers/mtd/devices/m25p80.c |  | ||||||
| @@ -174,7 +174,8 @@ static ssize_t m25p80_read(struct spi_no |  | ||||||
|   |  | ||||||
|  	t[1].rx_buf = buf; |  | ||||||
|  	t[1].rx_nbits = m25p80_rx_nbits(nor); |  | ||||||
| -	t[1].len = min(len, spi_max_transfer_size(spi)); |  | ||||||
| +	t[1].len = min3(len, spi_max_transfer_size(spi), |  | ||||||
| +			spi_max_message_size(spi) - t[0].len); |  | ||||||
|  	spi_message_add_tail(&t[1], &m); |  | ||||||
|   |  | ||||||
|  	ret = spi_sync(spi, &m); |  | ||||||
| @@ -1,101 +0,0 @@ | |||||||
| From d0423d3e4fa7ae305729cb50369427f075ccb279 Mon Sep 17 00:00:00 2001 |  | ||||||
| From: Jonas Gorski <jonas.gorski@gmail.com> |  | ||||||
| Date: Sat, 25 Feb 2017 12:41:28 +0100 |  | ||||||
| Subject: [PATCH 1/6] bcm63xx_enet: correct clock usage |  | ||||||
|  |  | ||||||
| Check the return code of prepare_enable and change one last instance of |  | ||||||
| enable only to prepare_enable. Also properly disable and release the |  | ||||||
| clock in error paths and on remove for enetsw. |  | ||||||
|  |  | ||||||
| Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com> |  | ||||||
| --- |  | ||||||
|  drivers/net/ethernet/broadcom/bcm63xx_enet.c | 31 +++++++++++++++++++++------- |  | ||||||
|  1 file changed, 23 insertions(+), 8 deletions(-) |  | ||||||
|  |  | ||||||
| --- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c |  | ||||||
| +++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c |  | ||||||
| @@ -1790,7 +1790,9 @@ static int bcm_enet_probe(struct platfor |  | ||||||
|  		ret = PTR_ERR(priv->mac_clk); |  | ||||||
|  		goto out; |  | ||||||
|  	} |  | ||||||
| -	clk_prepare_enable(priv->mac_clk); |  | ||||||
| +	ret = clk_prepare_enable(priv->mac_clk); |  | ||||||
| +	if (ret) |  | ||||||
| +		goto out_put_clk_mac; |  | ||||||
|   |  | ||||||
|  	/* initialize default and fetch platform data */ |  | ||||||
|  	priv->rx_ring_size = BCMENET_DEF_RX_DESC; |  | ||||||
| @@ -1822,9 +1824,11 @@ static int bcm_enet_probe(struct platfor |  | ||||||
|  		if (IS_ERR(priv->phy_clk)) { |  | ||||||
|  			ret = PTR_ERR(priv->phy_clk); |  | ||||||
|  			priv->phy_clk = NULL; |  | ||||||
| -			goto out_put_clk_mac; |  | ||||||
| +			goto out_disable_clk_mac; |  | ||||||
|  		} |  | ||||||
| -		clk_prepare_enable(priv->phy_clk); |  | ||||||
| +		ret = clk_prepare_enable(priv->phy_clk); |  | ||||||
| +		if (ret) |  | ||||||
| +			goto out_put_clk_phy; |  | ||||||
|  	} |  | ||||||
|   |  | ||||||
|  	/* do minimal hardware init to be able to probe mii bus */ |  | ||||||
| @@ -1915,13 +1919,16 @@ out_free_mdio: |  | ||||||
|  out_uninit_hw: |  | ||||||
|  	/* turn off mdc clock */ |  | ||||||
|  	enet_writel(priv, 0, ENET_MIISC_REG); |  | ||||||
| -	if (priv->phy_clk) { |  | ||||||
| +	if (priv->phy_clk) |  | ||||||
|  		clk_disable_unprepare(priv->phy_clk); |  | ||||||
| + |  | ||||||
| +out_put_clk_phy: |  | ||||||
| +	if (priv->phy_clk) |  | ||||||
|  		clk_put(priv->phy_clk); |  | ||||||
| -	} |  | ||||||
|   |  | ||||||
| -out_put_clk_mac: |  | ||||||
| +out_disable_clk_mac: |  | ||||||
|  	clk_disable_unprepare(priv->mac_clk); |  | ||||||
| +out_put_clk_mac: |  | ||||||
|  	clk_put(priv->mac_clk); |  | ||||||
|  out: |  | ||||||
|  	free_netdev(dev); |  | ||||||
| @@ -2766,7 +2773,9 @@ static int bcm_enetsw_probe(struct platf |  | ||||||
|  		ret = PTR_ERR(priv->mac_clk); |  | ||||||
|  		goto out_unmap; |  | ||||||
|  	} |  | ||||||
| -	clk_enable(priv->mac_clk); |  | ||||||
| +	ret = clk_prepare_enable(priv->mac_clk); |  | ||||||
| +	if (ret) |  | ||||||
| +		goto out_put_clk; |  | ||||||
|   |  | ||||||
|  	priv->rx_chan = 0; |  | ||||||
|  	priv->tx_chan = 1; |  | ||||||
| @@ -2787,7 +2796,7 @@ static int bcm_enetsw_probe(struct platf |  | ||||||
|   |  | ||||||
|  	ret = register_netdev(dev); |  | ||||||
|  	if (ret) |  | ||||||
| -		goto out_put_clk; |  | ||||||
| +		goto out_disable_clk; |  | ||||||
|   |  | ||||||
|  	netif_carrier_off(dev); |  | ||||||
|  	platform_set_drvdata(pdev, dev); |  | ||||||
| @@ -2796,6 +2805,9 @@ static int bcm_enetsw_probe(struct platf |  | ||||||
|   |  | ||||||
|  	return 0; |  | ||||||
|   |  | ||||||
| +out_disable_clk: |  | ||||||
| +	clk_disable_unprepare(priv->mac_clk); |  | ||||||
| + |  | ||||||
|  out_put_clk: |  | ||||||
|  	clk_put(priv->mac_clk); |  | ||||||
|   |  | ||||||
| @@ -2827,6 +2839,9 @@ static int bcm_enetsw_remove(struct plat |  | ||||||
|  	res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |  | ||||||
|  	release_mem_region(res->start, resource_size(res)); |  | ||||||
|   |  | ||||||
| +	clk_disable_unprepare(priv->mac_clk); |  | ||||||
| +	clk_put(priv->mac_clk); |  | ||||||
| + |  | ||||||
|  	free_netdev(dev); |  | ||||||
|  	return 0; |  | ||||||
|  } |  | ||||||
| @@ -1,29 +0,0 @@ | |||||||
| From 23d94cb855b6f4f0ee1c01679224472104ac6440 Mon Sep 17 00:00:00 2001 |  | ||||||
| From: Jonas Gorski <jonas.gorski@gmail.com> |  | ||||||
| Date: Sat, 30 Sep 2017 14:10:18 +0200 |  | ||||||
| Subject: [PATCH 2/6] bcm63xx_enet: do not write to random DMA channel on |  | ||||||
|  BCM6345 |  | ||||||
|  |  | ||||||
| The DMA controller regs actually point to DMA channel 0, so the write to |  | ||||||
| ENETDMA_CFG_REG will actually modify a random DMA channel. |  | ||||||
|  |  | ||||||
| Since DMA controller registers do not exist on BCM6345, guard the write |  | ||||||
| with the usual check for dma_has_sram. |  | ||||||
|  |  | ||||||
| Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com> |  | ||||||
| --- |  | ||||||
|  drivers/net/ethernet/broadcom/bcm63xx_enet.c | 3 ++- |  | ||||||
|  1 file changed, 2 insertions(+), 1 deletion(-) |  | ||||||
|  |  | ||||||
| --- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c |  | ||||||
| +++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c |  | ||||||
| @@ -1063,7 +1063,8 @@ static int bcm_enet_open(struct net_devi |  | ||||||
|  	val = enet_readl(priv, ENET_CTL_REG); |  | ||||||
|  	val |= ENET_CTL_ENABLE_MASK; |  | ||||||
|  	enet_writel(priv, val, ENET_CTL_REG); |  | ||||||
| -	enet_dma_writel(priv, ENETDMA_CFG_EN_MASK, ENETDMA_CFG_REG); |  | ||||||
| +	if (priv->dma_has_sram) |  | ||||||
| +		enet_dma_writel(priv, ENETDMA_CFG_EN_MASK, ENETDMA_CFG_REG); |  | ||||||
|  	enet_dmac_writel(priv, priv->dma_chan_en_mask, |  | ||||||
|  			 ENETDMAC_CHANCFG, priv->rx_chan); |  | ||||||
|   |  | ||||||
| @@ -0,0 +1,81 @@ | |||||||
|  | From e62ff8f02eb3ae35ae7ece7c5272a689fd8b0bcd Mon Sep 17 00:00:00 2001 | ||||||
|  | From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl> | ||||||
|  | Date: Fri, 27 Jul 2018 21:37:48 +0200 | ||||||
|  | Subject: [PATCH] Revert "mtd: partitions: use DT info for parsing partitions | ||||||
|  |  with "compatible" prop" | ||||||
|  |  | ||||||
|  | This reverts commit 76a832254ab05502c9394cc51ded6f0abe0e0bee. | ||||||
|  | --- | ||||||
|  |  drivers/mtd/mtdpart.c | 33 ++++++++++++++++++++------------- | ||||||
|  |  1 file changed, 20 insertions(+), 13 deletions(-) | ||||||
|  |  | ||||||
|  | --- a/drivers/mtd/mtdpart.c | ||||||
|  | +++ b/drivers/mtd/mtdpart.c | ||||||
|  | @@ -453,6 +453,22 @@ static inline void free_partition(struct | ||||||
|  |  	kfree(p); | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | +/** | ||||||
|  | + * mtd_parse_part - parse MTD partition looking for subpartitions | ||||||
|  | + * | ||||||
|  | + * @slave: part that is supposed to be a container and should be parsed | ||||||
|  | + * @types: NULL-terminated array with names of partition parsers to try | ||||||
|  | + * | ||||||
|  | + * Some partitions are kind of containers with extra subpartitions (volumes). | ||||||
|  | + * There can be various formats of such containers. This function tries to use | ||||||
|  | + * specified parsers to analyze given partition and registers found | ||||||
|  | + * subpartitions on success. | ||||||
|  | + */ | ||||||
|  | +static int mtd_parse_part(struct mtd_part *slave, const char *const *types) | ||||||
|  | +{ | ||||||
|  | +	return parse_mtd_partitions(&slave->mtd, types, NULL); | ||||||
|  | +} | ||||||
|  | + | ||||||
|  |  static struct mtd_part *allocate_partition(struct mtd_info *parent, | ||||||
|  |  			const struct mtd_partition *part, int partno, | ||||||
|  |  			uint64_t cur_offset) | ||||||
|  | @@ -924,8 +940,8 @@ int add_mtd_partitions(struct mtd_info * | ||||||
|  |  		add_mtd_device(&slave->mtd); | ||||||
|  |  		mtd_partition_split(master, slave); | ||||||
|  |  		mtd_add_partition_attrs(slave); | ||||||
|  | -		/* Look for subpartitions */ | ||||||
|  | -		parse_mtd_partitions(&slave->mtd, parts[i].types, NULL); | ||||||
|  | +		if (parts[i].types) | ||||||
|  | +			mtd_parse_part(slave, parts[i].types); | ||||||
|  |   | ||||||
|  |  		cur_offset = slave->offset + slave->mtd.size; | ||||||
|  |  	} | ||||||
|  | @@ -1037,12 +1053,6 @@ static const char * const default_mtd_pa | ||||||
|  |  	NULL | ||||||
|  |  }; | ||||||
|  |   | ||||||
|  | -/* Check DT only when looking for subpartitions. */ | ||||||
|  | -static const char * const default_subpartition_types[] = { | ||||||
|  | -	"ofpart", | ||||||
|  | -	NULL | ||||||
|  | -}; | ||||||
|  | - | ||||||
|  |  static int mtd_part_do_parse(struct mtd_part_parser *parser, | ||||||
|  |  			     struct mtd_info *master, | ||||||
|  |  			     struct mtd_partitions *pparts, | ||||||
|  | @@ -1113,9 +1123,7 @@ static int mtd_part_of_parse(struct mtd_ | ||||||
|  |  	const char *fixed = "fixed-partitions"; | ||||||
|  |  	int ret, err = 0; | ||||||
|  |   | ||||||
|  | -	np = mtd_get_of_node(master); | ||||||
|  | -	if (!mtd_is_partition(master)) | ||||||
|  | -		np = of_get_child_by_name(np, "partitions"); | ||||||
|  | +	np = of_get_child_by_name(mtd_get_of_node(master), "partitions"); | ||||||
|  |  	of_property_for_each_string(np, "compatible", prop, compat) { | ||||||
|  |  		parser = mtd_part_get_compatible_parser(compat); | ||||||
|  |  		if (!parser) | ||||||
|  | @@ -1185,8 +1193,7 @@ int parse_mtd_partitions(struct mtd_info | ||||||
|  |  	} | ||||||
|  |   | ||||||
|  |  	if (!types) | ||||||
|  | -		types = mtd_is_partition(master) ? default_subpartition_types : | ||||||
|  | -			default_mtd_part_types; | ||||||
|  | +		types = default_mtd_part_types; | ||||||
|  |   | ||||||
|  |  	for ( ; *types; types++) { | ||||||
|  |  		/* | ||||||
| @@ -1,6 +1,6 @@ | |||||||
| --- a/drivers/pci/probe.c | --- a/drivers/pci/probe.c | ||||||
| +++ b/drivers/pci/probe.c | +++ b/drivers/pci/probe.c | ||||||
| @@ -2303,7 +2303,8 @@ static void pcie_write_mrrs(struct pci_d | @@ -2305,7 +2305,8 @@ static void pcie_write_mrrs(struct pci_d | ||||||
|  	/* In the "safe" case, do not configure the MRRS.  There appear to be |  	/* In the "safe" case, do not configure the MRRS.  There appear to be | ||||||
|  	 * issues with setting MRRS to 0 on a number of devices. |  	 * issues with setting MRRS to 0 on a number of devices. | ||||||
|  	 */ |  	 */ | ||||||
|   | |||||||
| @@ -65,7 +65,7 @@ Cc: Kir Kolyshkin <kir@openvz.org> | |||||||
|  	 * Before updating sk_refcnt, we must commit prior changes to memory |  	 * Before updating sk_refcnt, we must commit prior changes to memory | ||||||
| --- a/net/ipv4/tcp_output.c | --- a/net/ipv4/tcp_output.c | ||||||
| +++ b/net/ipv4/tcp_output.c | +++ b/net/ipv4/tcp_output.c | ||||||
| @@ -1671,7 +1671,7 @@ u32 tcp_tso_autosize(const struct sock * | @@ -1683,7 +1683,7 @@ u32 tcp_tso_autosize(const struct sock * | ||||||
|  { |  { | ||||||
|  	u32 bytes, segs; |  	u32 bytes, segs; | ||||||
|   |   | ||||||
| @@ -74,7 +74,7 @@ Cc: Kir Kolyshkin <kir@openvz.org> | |||||||
|  		    sk->sk_gso_max_size - 1 - MAX_TCP_HEADER); |  		    sk->sk_gso_max_size - 1 - MAX_TCP_HEADER); | ||||||
|   |   | ||||||
|  	/* Goal is to send at least one packet per ms, |  	/* Goal is to send at least one packet per ms, | ||||||
| @@ -2172,7 +2172,7 @@ static bool tcp_small_queue_check(struct | @@ -2184,7 +2184,7 @@ static bool tcp_small_queue_check(struct | ||||||
|  { |  { | ||||||
|  	unsigned int limit; |  	unsigned int limit; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -0,0 +1,39 @@ | |||||||
|  | From cf589ce71e84d3b8811c65740645af254c5248c0 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl> | ||||||
|  | Date: Wed, 9 May 2018 10:17:29 +0200 | ||||||
|  | Subject: [PATCH] mtd: bcm47xxpart: add of_match_table with a new DT binding | ||||||
|  | MIME-Version: 1.0 | ||||||
|  | Content-Type: text/plain; charset=UTF-8 | ||||||
|  | Content-Transfer-Encoding: 8bit | ||||||
|  |  | ||||||
|  | This allows using bcm47xxpart parser to find partitions on flash | ||||||
|  | described in DT using the "brcm,bcm947xx-cfe-partitions" compatible | ||||||
|  | property. It means this parser doesn't have to be explicitly selected by | ||||||
|  | a flash driver anymore. It can be used e.g. together with a generic | ||||||
|  | m25p80 / spi-nor if device is just properly described. | ||||||
|  |  | ||||||
|  | Signed-off-by: Rafał Miłecki <rafal@milecki.pl> | ||||||
|  | Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com> | ||||||
|  | --- | ||||||
|  |  drivers/mtd/bcm47xxpart.c | 7 +++++++ | ||||||
|  |  1 file changed, 7 insertions(+) | ||||||
|  |  | ||||||
|  | --- a/drivers/mtd/bcm47xxpart.c | ||||||
|  | +++ b/drivers/mtd/bcm47xxpart.c | ||||||
|  | @@ -304,9 +304,16 @@ static int bcm47xxpart_parse(struct mtd_ | ||||||
|  |  	return curr_part; | ||||||
|  |  }; | ||||||
|  |   | ||||||
|  | +static const struct of_device_id bcm47xxpart_of_match_table[] = { | ||||||
|  | +	{ .compatible = "brcm,bcm947xx-cfe-partitions" }, | ||||||
|  | +	{}, | ||||||
|  | +}; | ||||||
|  | +MODULE_DEVICE_TABLE(of, bcm47xxpart_of_match_table); | ||||||
|  | + | ||||||
|  |  static struct mtd_part_parser bcm47xxpart_mtd_parser = { | ||||||
|  |  	.parse_fn = bcm47xxpart_parse, | ||||||
|  |  	.name = "bcm47xxpart", | ||||||
|  | +	.of_match_table = bcm47xxpart_of_match_table, | ||||||
|  |  }; | ||||||
|  |  module_mtd_part_parser(bcm47xxpart_mtd_parser); | ||||||
|  |   | ||||||
| @@ -0,0 +1,37 @@ | |||||||
|  | From 98534a58c8a40cdc9e3bcb04d74719fbcedfeb52 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl> | ||||||
|  | Date: Tue, 26 Jun 2018 00:05:08 +0200 | ||||||
|  | Subject: [PATCH] mtd: parsers: trx: add of_match_table with the new DT binding | ||||||
|  | MIME-Version: 1.0 | ||||||
|  | Content-Type: text/plain; charset=UTF-8 | ||||||
|  | Content-Transfer-Encoding: 8bit | ||||||
|  |  | ||||||
|  | This allows using TRX parser to find TRX partitions on flash device | ||||||
|  | described in DT using a proper binding. It's useful for devices storing | ||||||
|  | firmware on a separated flash and having rootfs partition in it. | ||||||
|  |  | ||||||
|  | Signed-off-by: Rafał Miłecki <rafal@milecki.pl> | ||||||
|  | Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com> | ||||||
|  | --- | ||||||
|  |  drivers/mtd/parsers/parser_trx.c | 7 +++++++ | ||||||
|  |  1 file changed, 7 insertions(+) | ||||||
|  |  | ||||||
|  | --- a/drivers/mtd/parsers/parser_trx.c | ||||||
|  | +++ b/drivers/mtd/parsers/parser_trx.c | ||||||
|  | @@ -116,9 +116,16 @@ static int parser_trx_parse(struct mtd_i | ||||||
|  |  	return i; | ||||||
|  |  }; | ||||||
|  |   | ||||||
|  | +static const struct of_device_id mtd_parser_trx_of_match_table[] = { | ||||||
|  | +	{ .compatible = "brcm,trx" }, | ||||||
|  | +	{}, | ||||||
|  | +}; | ||||||
|  | +MODULE_DEVICE_TABLE(of, mtd_parser_trx_of_match_table); | ||||||
|  | + | ||||||
|  |  static struct mtd_part_parser mtd_parser_trx = { | ||||||
|  |  	.parse_fn = parser_trx_parse, | ||||||
|  |  	.name = "trx", | ||||||
|  | +	.of_match_table = mtd_parser_trx_of_match_table, | ||||||
|  |  }; | ||||||
|  |  module_mtd_part_parser(mtd_parser_trx); | ||||||
|  |   | ||||||
| @@ -0,0 +1,102 @@ | |||||||
|  | From 76a832254ab05502c9394cc51ded6f0abe0e0bee Mon Sep 17 00:00:00 2001 | ||||||
|  | From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl> | ||||||
|  | Date: Fri, 13 Jul 2018 16:32:21 +0200 | ||||||
|  | Subject: [PATCH] mtd: partitions: use DT info for parsing partitions with | ||||||
|  |  "compatible" prop | ||||||
|  | MIME-Version: 1.0 | ||||||
|  | Content-Type: text/plain; charset=UTF-8 | ||||||
|  | Content-Transfer-Encoding: 8bit | ||||||
|  |  | ||||||
|  | So far only flash devices could be described in DT regarding partitions | ||||||
|  | parsing. That could be done with "partitions" subnode and a proper | ||||||
|  | "compatible" string. | ||||||
|  |  | ||||||
|  | Some devices may use hierarchical (multi-level) layouts and may mix used | ||||||
|  | layouts (fixed and dynamic). Describing that in DT is done by specifying | ||||||
|  | "compatible" for DT-represented partition plus optionally more | ||||||
|  | properties and/or subnodes. | ||||||
|  |  | ||||||
|  | To support such layouts each DT partition has to be checked for | ||||||
|  | additional description. | ||||||
|  |  | ||||||
|  | Please note this implementation will work in parallel with support for | ||||||
|  | partition type specified for non-DT setups. That already works since | ||||||
|  | commit 1a0915be1926 ("mtd: partitions: add support for partition | ||||||
|  | parsers"). | ||||||
|  |  | ||||||
|  | Signed-off-by: Rafał Miłecki <rafal@milecki.pl> | ||||||
|  | Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com> | ||||||
|  | --- | ||||||
|  |  drivers/mtd/mtdpart.c | 33 +++++++++++++-------------------- | ||||||
|  |  1 file changed, 13 insertions(+), 20 deletions(-) | ||||||
|  |  | ||||||
|  | --- a/drivers/mtd/mtdpart.c | ||||||
|  | +++ b/drivers/mtd/mtdpart.c | ||||||
|  | @@ -370,22 +370,6 @@ static inline void free_partition(struct | ||||||
|  |  	kfree(p); | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | -/** | ||||||
|  | - * mtd_parse_part - parse MTD partition looking for subpartitions | ||||||
|  | - * | ||||||
|  | - * @slave: part that is supposed to be a container and should be parsed | ||||||
|  | - * @types: NULL-terminated array with names of partition parsers to try | ||||||
|  | - * | ||||||
|  | - * Some partitions are kind of containers with extra subpartitions (volumes). | ||||||
|  | - * There can be various formats of such containers. This function tries to use | ||||||
|  | - * specified parsers to analyze given partition and registers found | ||||||
|  | - * subpartitions on success. | ||||||
|  | - */ | ||||||
|  | -static int mtd_parse_part(struct mtd_part *slave, const char *const *types) | ||||||
|  | -{ | ||||||
|  | -	return parse_mtd_partitions(&slave->mtd, types, NULL); | ||||||
|  | -} | ||||||
|  | - | ||||||
|  |  static struct mtd_part *allocate_partition(struct mtd_info *parent, | ||||||
|  |  			const struct mtd_partition *part, int partno, | ||||||
|  |  			uint64_t cur_offset) | ||||||
|  | @@ -783,8 +767,8 @@ int add_mtd_partitions(struct mtd_info * | ||||||
|  |   | ||||||
|  |  		add_mtd_device(&slave->mtd); | ||||||
|  |  		mtd_add_partition_attrs(slave); | ||||||
|  | -		if (parts[i].types) | ||||||
|  | -			mtd_parse_part(slave, parts[i].types); | ||||||
|  | +		/* Look for subpartitions */ | ||||||
|  | +		parse_mtd_partitions(&slave->mtd, parts[i].types, NULL); | ||||||
|  |   | ||||||
|  |  		cur_offset = slave->offset + slave->mtd.size; | ||||||
|  |  	} | ||||||
|  | @@ -860,6 +844,12 @@ static const char * const default_mtd_pa | ||||||
|  |  	NULL | ||||||
|  |  }; | ||||||
|  |   | ||||||
|  | +/* Check DT only when looking for subpartitions. */ | ||||||
|  | +static const char * const default_subpartition_types[] = { | ||||||
|  | +	"ofpart", | ||||||
|  | +	NULL | ||||||
|  | +}; | ||||||
|  | + | ||||||
|  |  static int mtd_part_do_parse(struct mtd_part_parser *parser, | ||||||
|  |  			     struct mtd_info *master, | ||||||
|  |  			     struct mtd_partitions *pparts, | ||||||
|  | @@ -930,7 +920,9 @@ static int mtd_part_of_parse(struct mtd_ | ||||||
|  |  	const char *fixed = "fixed-partitions"; | ||||||
|  |  	int ret, err = 0; | ||||||
|  |   | ||||||
|  | -	np = of_get_child_by_name(mtd_get_of_node(master), "partitions"); | ||||||
|  | +	np = mtd_get_of_node(master); | ||||||
|  | +	if (!mtd_is_partition(master)) | ||||||
|  | +		np = of_get_child_by_name(np, "partitions"); | ||||||
|  |  	of_property_for_each_string(np, "compatible", prop, compat) { | ||||||
|  |  		parser = mtd_part_get_compatible_parser(compat); | ||||||
|  |  		if (!parser) | ||||||
|  | @@ -993,7 +985,8 @@ int parse_mtd_partitions(struct mtd_info | ||||||
|  |  	int ret, err = 0; | ||||||
|  |   | ||||||
|  |  	if (!types) | ||||||
|  | -		types = default_mtd_part_types; | ||||||
|  | +		types = mtd_is_partition(master) ? default_subpartition_types : | ||||||
|  | +			default_mtd_part_types; | ||||||
|  |   | ||||||
|  |  	for ( ; *types; types++) { | ||||||
|  |  		/* | ||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user