Merge Official Source

This commit is contained in:
AmadeusGhost 2020-12-16 00:17:00 +08:00
commit b4bdbe2151
54 changed files with 472 additions and 378 deletions

View File

@ -532,20 +532,20 @@ endif
config KERNEL_KEYS config KERNEL_KEYS
bool "Enable kernel access key retention support" bool "Enable kernel access key retention support"
default n default !SMALL_FLASH
config KERNEL_PERSISTENT_KEYRINGS config KERNEL_PERSISTENT_KEYRINGS
bool "Enable kernel persistent keyrings" bool "Enable kernel persistent keyrings"
depends on KERNEL_KEYS depends on KERNEL_KEYS
default n default n
config KERNEL_BIG_KEYS config KERNEL_KEYS_REQUEST_CACHE
bool "Enable large payload keys on kernel keyrings" bool "Enable temporary caching of the last request_key() result"
depends on KERNEL_KEYS depends on KERNEL_KEYS
default n default n
config KERNEL_ENCRYPTED_KEYS config KERNEL_BIG_KEYS
tristate "Enable keys with encrypted payloads on kernel keyrings" bool "Enable large payload keys on kernel keyrings"
depends on KERNEL_KEYS depends on KERNEL_KEYS
default n default n

View File

@ -568,6 +568,7 @@ define Device/Build/image
SOURCE_DATE_EPOCH=$(SOURCE_DATE_EPOCH) \ SOURCE_DATE_EPOCH=$(SOURCE_DATE_EPOCH) \
IMAGE_NAME="$(IMAGE_NAME)" \ IMAGE_NAME="$(IMAGE_NAME)" \
IMAGE_TYPE=$(word 1,$(subst ., ,$(2))) \ IMAGE_TYPE=$(word 1,$(subst ., ,$(2))) \
IMAGE_FILESYSTEM="$(1)" \
IMAGE_PREFIX="$(IMAGE_PREFIX)" \ IMAGE_PREFIX="$(IMAGE_PREFIX)" \
DEVICE_VENDOR="$(DEVICE_VENDOR)" \ DEVICE_VENDOR="$(DEVICE_VENDOR)" \
DEVICE_MODEL="$(DEVICE_MODEL)" \ DEVICE_MODEL="$(DEVICE_MODEL)" \

View File

@ -6,9 +6,9 @@ ifdef CONFIG_TESTING_KERNEL
KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER) KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
endif endif
LINUX_VERSION-5.4 = .82 LINUX_VERSION-5.4 = .83
LINUX_KERNEL_HASH-5.4.82 = fb4458e4ea38b6c5df4ee8cee0d9b0420b5aed07e273787b045c0db48709ddaf LINUX_KERNEL_HASH-5.4.83 = beec970bbb93de8ab839f27930f7ab00c7bd65af0ffa07a50e765affdc2561c6
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)))))))

View File

@ -0,0 +1,48 @@
From e33a814e772cdc36436c8c188d8c42d019fda639 Mon Sep 17 00:00:00 2001
From: Dirk Mueller <dmueller@suse.com>
Date: Tue, 14 Jan 2020 18:53:41 +0100
Subject: [PATCH] scripts/dtc: Remove redundant YYLOC global declaration
gcc 10 will default to -fno-common, which causes this error at link
time:
(.text+0x0): multiple definition of `yylloc'; dtc-lexer.lex.o (symbol from plugin):(.text+0x0): first defined here
This is because both dtc-lexer as well as dtc-parser define the same
global symbol yyloc. Before with -fcommon those were merged into one
defintion. The proper solution would be to to mark this as "extern",
however that leads to:
dtc-lexer.l:26:16: error: redundant redeclaration of 'yylloc' [-Werror=redundant-decls]
26 | extern YYLTYPE yylloc;
| ^~~~~~
In file included from dtc-lexer.l:24:
dtc-parser.tab.h:127:16: note: previous declaration of 'yylloc' was here
127 | extern YYLTYPE yylloc;
| ^~~~~~
cc1: all warnings being treated as errors
which means the declaration is completely redundant and can just be
dropped.
Signed-off-by: Dirk Mueller <dmueller@suse.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
[robh: cherry-pick from upstream]
Cc: stable@vger.kernel.org
Signed-off-by: Rob Herring <robh@kernel.org>
---
scripts/dtc/dtc-lexer.l | 1 -
1 file changed, 1 deletion(-)
diff --git a/scripts/dtc/dtc-lexer.l b/scripts/dtc/dtc-lexer.l
index 5c6c3fd557d7f..b3b7270300de5 100644
--- a/scripts/dtc/dtc-lexer.l
+++ b/scripts/dtc/dtc-lexer.l
@@ -38,7 +38,6 @@ LINECOMMENT "//".*\n
#include "srcpos.h"
#include "dtc-parser.tab.h"
-YYLTYPE yylloc;
extern bool treesource_error;
/* CAUTION: this will stop working if we ever use yyless() or yyunput() */

View File

@ -1103,6 +1103,47 @@ endef
$(eval $(call KernelPackage,echo)) $(eval $(call KernelPackage,echo))
define KernelPackage/keys-encrypted
SUBMENU:=$(OTHER_MENU)
TITLE:=encrypted keys on kernel keyring
DEPENDS:=@KERNEL_KEYS +kmod-crypto-cbc +kmod-crypto-hmac +kmod-crypto-rng \
+kmod-crypto-sha256 +kmod-keys-trusted
KCONFIG:=CONFIG_ENCRYPTED_KEYS
FILES:=$(LINUX_DIR)/security/keys/encrypted-keys/encrypted-keys.ko
AUTOLOAD:=$(call AutoLoad,01,encrypted-keys,1)
endef
define KernelPackage/keys-encrypted/description
This module provides support for create/encrypting/decrypting keys
in the kernel. Encrypted keys are kernel generated random numbers,
which are encrypted/decrypted with a 'master' symmetric key. The
'master' key can be either a trusted-key or user-key type.
Userspace only ever sees/stores encrypted blobs.
endef
$(eval $(call KernelPackage,keys-encrypted))
define KernelPackage/keys-trusted
SUBMENU:=$(OTHER_MENU)
TITLE:=TPM trusted keys on kernel keyring
DEPENDS:=@KERNEL_KEYS +kmod-crypto-hash +kmod-crypto-hmac +kmod-crypto-sha1 +kmod-tpm
KCONFIG:=CONFIG_TRUSTED_KEYS
FILES:=$(LINUX_DIR)/security/keys/trusted.ko
AUTOLOAD:=$(call AutoLoad,01,trusted-keys,1)
endef
define KernelPackage/keys-trusted/description
This module provides support for creating, sealing, and unsealing
keys in the kernel. Trusted keys are random number symmetric keys,
generated and RSA-sealed by the TPM. The TPM only unseals the keys,
if the boot PCRs and other criteria match. Userspace will only ever
see encrypted blobs.
endef
$(eval $(call KernelPackage,keys-trusted))
define KernelPackage/tpm define KernelPackage/tpm
SUBMENU:=$(OTHER_MENU) SUBMENU:=$(OTHER_MENU)
TITLE:=TPM Hardware Support TITLE:=TPM Hardware Support

View File

@ -7,7 +7,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
LUCI_TITLE:=Luci for Docker-CE LUCI_TITLE:=Luci for Docker-CE
LUCI_DEPENDS:=+docker-ce +e2fsprogs +fdisk LUCI_DEPENDS:=+docker +e2fsprogs +fdisk
LUCI_PKGARCH:=all LUCI_PKGARCH:=all
PKG_VERSION:=1 PKG_VERSION:=1
PKG_RELEASE:=9 PKG_RELEASE:=9

View File

@ -8,20 +8,19 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=libnetfilter_conntrack PKG_NAME:=libnetfilter_conntrack
PKG_RELEASE:=2 PKG_VERSION:=1.0.8
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://git.netfilter.org/libnetfilter_conntrack PKG_SOURCE_URL:=https://www.netfilter.org/projects/libnetfilter_conntrack/files
PKG_SOURCE_DATE:=2018-05-01 PKG_HASH:=0cd13be008923528687af6c6b860f35392d49251c04ee0648282d36b1faec1cf
PKG_SOURCE_VERSION:=3ccae9f5b2a9564cd63699ba60e54a46bc0d73b6
PKG_MIRROR_HASH:=c978ef0fa5b7379de2909ca5d9c599ac63b4f8166f5971d58f6e074a922d996f
PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io> PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
PKG_LICENSE:=GPL-2.0-or-later
PKG_FIXUP:=autoreconf PKG_LICENSE_FILES:=COPYING
PKG_LICENSE:=GPL-2.0+
PKG_INSTALL:=1 PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk

View File

@ -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_MIRROR_HASH:=05962d4edbe7b856e017d974c3d7e34dfa5f905821ab7a3534acc5886af4e5c7 PKG_MIRROR_HASH:=532016a283722f21dd450e388060af0db765972956eee288c7cabf102c8303d0
PKG_SOURCE_DATE:=2020-06-17 PKG_SOURCE_DATE:=2020-12-10
PKG_SOURCE_VERSION:=c66098611f16806a936a3a3f92113a16382fc4d9 PKG_SOURCE_VERSION:=2c843b2bc04c34403d9a6b4de025447e4b5d8aa4
CMAKE_INSTALL:=1 CMAKE_INSTALL:=1
PKG_BUILD_DEPENDS:=ustream-ssl PKG_BUILD_DEPENDS:=ustream-ssl
@ -24,7 +24,7 @@ define Package/libuclient
SECTION:=libs SECTION:=libs
CATEGORY:=Libraries CATEGORY:=Libraries
TITLE:=HTTP/1.1 client library TITLE:=HTTP/1.1 client library
ABI_VERSION:=20160123 ABI_VERSION:=20201210
DEPENDS:=+libubox DEPENDS:=+libubox
endef endef

View File

@ -5,9 +5,9 @@ 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:=2020-03-13 PKG_SOURCE_DATE:=2020-12-10
PKG_SOURCE_VERSION:=5e1bc3429cbf9c3be4db65ef5dbf21ea99cf5b95 PKG_SOURCE_VERSION:=68d09243b6fd4473004b27ff6483352e76e6af1a
PKG_MIRROR_HASH:=c59dea9b98d3ce88d886f7c7b3b252c55312ad281b731ab9172ae78570f1b643 PKG_MIRROR_HASH:=a620090dee08c0624d167c10e9e45d54aa2b953a1f356eff7325a8fe53c622e6
CMAKE_INSTALL:=1 CMAKE_INSTALL:=1
PKG_LICENSE:=ISC PKG_LICENSE:=ISC
@ -23,7 +23,7 @@ define Package/libustream/default
CATEGORY:=Libraries CATEGORY:=Libraries
TITLE:=ustream SSL Library TITLE:=ustream SSL Library
DEPENDS:=+libubox DEPENDS:=+libubox
ABI_VERSION:=20200215 ABI_VERSION:=20201210
endef endef
define Package/libustream-openssl define Package/libustream-openssl

View File

@ -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:=2020-11-30 PKG_SOURCE_DATE:=2020-12-13
PKG_SOURCE_VERSION:=42c48866f1c1fce068f41536baa8dd2e80fc08d7 PKG_SOURCE_VERSION:=458b1a7e9473c150a40cae5d8be174f4bb03bd39
PKG_MIRROR_HASH:=7eeec56364f1e6de8f0917f16ae933ca9bd0298e6a68e330025282164ea9af63 PKG_MIRROR_HASH:=424aefb55aedebfcffd540a2c02a42aeb574b7ebb1a6b546ca9965d9280d82e5
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name> PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
PKG_LICENSE:=GPL-2.0 PKG_LICENSE:=GPL-2.0

View File

@ -97,19 +97,6 @@ zram_comp_algo()
fi fi
} }
zram_comp_streams()
{
local dev="$1"
local logical_cpus=$( grep -ci "^processor" /proc/cpuinfo )
[ $logical_cpus -gt 1 ] || return 1
local zram_comp_streams="$( uci -q get system.@system[0].zram_comp_streams )"
[ -n "$zram_comp_streams" ] && [ "$zram_comp_streams" -le "$logical_cpus" ] || zram_comp_streams=$logical_cpus
if [ -e /sys/block/$( basename $dev )/max_comp_streams ]; then
logger -s -t zram_comp_streams -p daemon.debug "Set max compression streams to '$zram_comp_streams' for zram '$dev'"
echo $zram_comp_streams > /sys/block/$( basename $dev )/max_comp_streams
fi
}
#print various stats info about zram swap device #print various stats info about zram swap device
zram_stats() zram_stats()
{ {
@ -121,7 +108,6 @@ zram_stats()
printf "%-25s - %s\n" "Block device" $zdev printf "%-25s - %s\n" "Block device" $zdev
awk '{ printf "%-25s - %d MiB\n", "Device size", $1/1024/1024 }' <$zdev/disksize awk '{ printf "%-25s - %d MiB\n", "Device size", $1/1024/1024 }' <$zdev/disksize
printf "%-25s - %s\n" "Compression algo" "$(cat $zdev/comp_algorithm)" printf "%-25s - %s\n" "Compression algo" "$(cat $zdev/comp_algorithm)"
printf "%-25s - %s\n" "Compression streams" "$( cat $zdev/max_comp_streams)"
awk 'BEGIN { fmt = "%-25s - %.2f %s\n" awk 'BEGIN { fmt = "%-25s - %.2f %s\n"
fmt2 = "%-25s - %d\n" fmt2 = "%-25s - %d\n"
@ -179,7 +165,6 @@ start()
zram_reset "$zram_dev" "enforcing defaults" zram_reset "$zram_dev" "enforcing defaults"
zram_comp_algo "$zram_dev" zram_comp_algo "$zram_dev"
zram_comp_streams "$zram_dev"
echo $(( $zram_size * 1024 * 1024 )) >"/sys/block/$( basename "$zram_dev" )/disksize" echo $(( $zram_size * 1024 * 1024 )) >"/sys/block/$( basename "$zram_dev" )/disksize"
/sbin/mkswap "$zram_dev" /sbin/mkswap "$zram_dev"
/sbin/swapon -d $zram_priority "$zram_dev" /sbin/swapon -d $zram_priority "$zram_dev"

View File

@ -51,6 +51,7 @@ image_info = {
"images": [ "images": [
{ {
"type": getenv("IMAGE_TYPE"), "type": getenv("IMAGE_TYPE"),
"filesystem": getenv("IMAGE_FILESYSTEM"),
"name": getenv("IMAGE_NAME"), "name": getenv("IMAGE_NAME"),
"sha256": image_hash, "sha256": image_hash,
} }

View File

@ -1,6 +1,7 @@
ARCH:=aarch64 ARCH:=aarch64
SUBTARGET:=64 SUBTARGET:=64
BOARDNAME:=ARMv8 multiplatform BOARDNAME:=QEMU ARMv8 Virtual Machine (cortex-a53)
CPU_TYPE:=cortex-a53
KERNELNAME:=Image KERNELNAME:=Image
define Target/Description define Target/Description

View File

@ -1,4 +1,4 @@
This is intended to be used with LEDE project to provide image for use with This is intended to be used with OpenWrt project to provide image for use with
QEMU ARM virt machine. QEMU ARM virt machine.
Run with qemu-system-arm Run with qemu-system-arm

View File

@ -1,229 +1,8 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
#include "qca955x.dtsi" #include "qca9558_belkin_f9x-v2.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
/ { / {
model = "Belkin F9J1108 v2 (AC1750 DB Wi-Fi)"; model = "Belkin F9J1108 v2 (AC1750 DB Wi-Fi)";
compatible = "belkin,f9j1108-v2", "qca,qca9558"; compatible = "belkin,f9j1108-v2", "qca,qca9558";
aliases {
led-boot = &led_system;
led-failsafe = &led_system;
led-running = &led_system;
led-upgrade = &led_system;
label-mac-device = &eth1;
};
leds {
compatible = "gpio-leds";
usb {
label = "green:usb2";
gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
trigger-sources = <&hub_port0>;
linux,default-trigger = "usbport";
};
status {
label = "amber:status";
gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
};
wps-amber {
label = "amber:wps";
gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
};
wps-blue {
label = "blue:wps";
gpios = <&gpio 19 GPIO_ACTIVE_LOW>;
};
led_system: system {
label = "blue:system";
gpios = <&gpio 20 GPIO_ACTIVE_LOW>;
};
};
gpio-export {
compatible = "gpio-export";
#size-cells = <0>;
usb2_power {
gpio-export,name = "usb2:power";
gpio-export,output = <1>;
gpios = <&gpio 21 GPIO_ACTIVE_HIGH>;
};
};
keys {
compatible = "gpio-keys";
wps {
label = "WPS button";
linux,code = <KEY_WPS_BUTTON>;
gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
debounce-interval = <60>;
};
reset {
label = "Reset button";
linux,code = <KEY_RESTART>;
gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
debounce-interval = <60>;
};
};
virtual_flash {
compatible = "mtd-concat";
devices = <&fwpart1 &fwpart2>;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
compatible = "openwrt,okli";
label = "firmware";
reg = <0x0 0x0>;
};
};
};
};
&pcie1 {
status = "okay";
};
&uart {
status = "okay";
};
&usb_phy0 {
status = "okay";
};
&usb0 {
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
hub_port0: port@1 {
reg = <1>;
#trigger-source-cells = <0>;
};
};
&spi {
status = "okay";
flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <80000000>;
m25p,fast-read;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
uboot: partition@0 {
label = "u-boot";
reg = <0x000000 0x040000>;
read-only;
};
partition@40000 {
label = "u-boot-env";
reg = <0x040000 0x010000>;
};
fwpart1: partition@50000 {
label = "fwpart1";
reg = <0x050000 0xe20000>;
};
partition@e70000 {
label = "loader";
reg = <0xe70000 0x10000>;
read-only;
};
fwpart2: partition@e80000 {
label = "fwpart2";
reg = <0xe80000 0x170000>;
};
art: partition@ff0000 {
label = "art";
reg = <0xff0000 0x010000>;
};
};
};
};
&mdio0 {
status = "okay";
phy0: ethernet-phy@0 {
reg = <0>;
qca,ar8327-initvals = <
0x04 0x00080080 /* PORT0 PAD MODE CTRL */
0x0c 0x07600000 /* PORT6 PAD MODE CTRL */
0x50 0xc737c737 /* LED_CTRL0 */
0x54 0x00000000 /* LED_CTRL1 */
0x58 0x00000000 /* LED_CTRL2 */
0x5c 0x0030c300 /* LED_CTRL3 */
0x7c 0x0000007e /* PORT0_STATUS */
0x94 0x0000007e /* PORT6 STATUS */
>;
};
};
&eth0 {
status = "okay";
mtd-mac-address = <&art 0x0>;
phy-handle = <&phy0>;
pll-data = <0xa6000000 0x00000101 0x00001616>;
gmac-config {
device = <&gmac>;
rgmii-enabled = <1>;
};
};
&eth1 {
status = "okay";
mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <(-1)>;
pll-data = <0x03000101 0x00000101 0x00001616>;
fixed-link {
speed = <1000>;
full-duplex;
};
};
&pcie0 {
status = "okay";
wifi@0,0 {
compatible = "qcom,ath10k";
reg = <0 0 0 0 0>;
};
};
&wmac {
status = "okay";
mtd-cal-data = <&art 0x1000>;
}; };

View File

@ -0,0 +1,8 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
#include "qca9558_belkin_f9x-v2.dtsi"
/ {
model = "Belkin F9K1115 v2 (AC 1750 DB)";
compatible = "belkin,f9k1115-v2", "qca,qca9558";
};

View File

@ -0,0 +1,226 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
#include "qca955x.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
/ {
aliases {
led-boot = &led_system;
led-failsafe = &led_system;
led-running = &led_system;
led-upgrade = &led_system;
label-mac-device = &eth1;
};
leds {
compatible = "gpio-leds";
usb {
label = "green:usb2";
gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
trigger-sources = <&hub_port0>;
linux,default-trigger = "usbport";
};
status {
label = "amber:status";
gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
};
wps-amber {
label = "amber:wps";
gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
};
wps-blue {
label = "blue:wps";
gpios = <&gpio 19 GPIO_ACTIVE_LOW>;
};
led_system: system {
label = "blue:system";
gpios = <&gpio 20 GPIO_ACTIVE_LOW>;
};
};
gpio-export {
compatible = "gpio-export";
#size-cells = <0>;
usb2_power {
gpio-export,name = "usb2:power";
gpio-export,output = <1>;
gpios = <&gpio 21 GPIO_ACTIVE_HIGH>;
};
};
keys {
compatible = "gpio-keys";
wps {
label = "WPS button";
linux,code = <KEY_WPS_BUTTON>;
gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
debounce-interval = <60>;
};
reset {
label = "Reset button";
linux,code = <KEY_RESTART>;
gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
debounce-interval = <60>;
};
};
virtual_flash {
compatible = "mtd-concat";
devices = <&fwpart1 &fwpart2>;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
compatible = "openwrt,okli";
label = "firmware";
reg = <0x0 0x0>;
};
};
};
};
&pcie1 {
status = "okay";
};
&uart {
status = "okay";
};
&usb_phy0 {
status = "okay";
};
&usb0 {
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
hub_port0: port@1 {
reg = <1>;
#trigger-source-cells = <0>;
};
};
&spi {
status = "okay";
flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <80000000>;
m25p,fast-read;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
uboot: partition@0 {
label = "u-boot";
reg = <0x000000 0x040000>;
read-only;
};
partition@40000 {
label = "u-boot-env";
reg = <0x040000 0x010000>;
};
fwpart1: partition@50000 {
label = "fwpart1";
reg = <0x050000 0xe20000>;
};
partition@e70000 {
label = "loader";
reg = <0xe70000 0x10000>;
read-only;
};
fwpart2: partition@e80000 {
label = "fwpart2";
reg = <0xe80000 0x170000>;
};
art: partition@ff0000 {
label = "art";
reg = <0xff0000 0x010000>;
};
};
};
};
&mdio0 {
status = "okay";
phy0: ethernet-phy@0 {
reg = <0>;
qca,ar8327-initvals = <
0x04 0x00080080 /* PORT0 PAD MODE CTRL */
0x0c 0x07600000 /* PORT6 PAD MODE CTRL */
0x50 0xc737c737 /* LED_CTRL0 */
0x54 0x00000000 /* LED_CTRL1 */
0x58 0x00000000 /* LED_CTRL2 */
0x5c 0x0030c300 /* LED_CTRL3 */
0x7c 0x0000007e /* PORT0_STATUS */
0x94 0x0000007e /* PORT6 STATUS */
>;
};
};
&eth0 {
status = "okay";
mtd-mac-address = <&art 0x0>;
phy-handle = <&phy0>;
pll-data = <0xa6000000 0x00000101 0x00001616>;
gmac-config {
device = <&gmac>;
rgmii-enabled = <1>;
};
};
&eth1 {
status = "okay";
mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <(-1)>;
pll-data = <0x03000101 0x00000101 0x00001616>;
fixed-link {
speed = <1000>;
full-duplex;
};
};
&pcie0 {
status = "okay";
wifi@0,0 {
compatible = "qcom,ath10k";
reg = <0 0 0 0 0>;
};
};
&wmac {
status = "okay";
mtd-cal-data = <&art 0x1000>;
};

View File

@ -101,6 +101,7 @@ ath79_setup_interfaces()
"0@eth0" "1:lan:1" "2:lan:4" "3:lan:3" "4:lan:2" "0@eth0" "1:lan:1" "2:lan:4" "3:lan:3" "4:lan:2"
;; ;;
belkin,f9j1108-v2|\ belkin,f9j1108-v2|\
belkin,f9k1115-v2|\
tplink,archer-c5-v1|\ tplink,archer-c5-v1|\
tplink,archer-c7-v1|\ tplink,archer-c7-v1|\
tplink,archer-c7-v2|\ tplink,archer-c7-v2|\

View File

@ -7,6 +7,7 @@ DEVICE_VARS += ADDPATTERN_ID ADDPATTERN_VERSION
DEVICE_VARS += SEAMA_SIGNATURE SEAMA_MTDBLOCK DEVICE_VARS += SEAMA_SIGNATURE SEAMA_MTDBLOCK
DEVICE_VARS += KERNEL_INITRAMFS_PREFIX DEVICE_VARS += KERNEL_INITRAMFS_PREFIX
DEVICE_VARS += DAP_SIGNATURE ENGENIUS_IMGNAME DEVICE_VARS += DAP_SIGNATURE ENGENIUS_IMGNAME
DEVICE_VARS += EDIMAX_HEADER_MAGIC EDIMAX_HEADER_MODEL
define Build/add-elecom-factory-initramfs define Build/add-elecom-factory-initramfs
$(eval edimax_model=$(word 1,$(1))) $(eval edimax_model=$(word 1,$(1)))
@ -408,10 +409,9 @@ define Device/avm_fritzdvbc
endef endef
TARGET_DEVICES += avm_fritzdvbc TARGET_DEVICES += avm_fritzdvbc
define Device/belkin_f9j1108-v2 define Device/belkin_f9x-v2
SOC := qca9558 SOC := qca9558
DEVICE_VENDOR := Belkin DEVICE_VENDOR := Belkin
DEVICE_MODEL := F9J1108 v2 (AC1750 DB Wi-Fi)
IMAGE_SIZE := 14464k IMAGE_SIZE := 14464k
DEVICE_PACKAGES += kmod-ath10k-ct ath10k-firmware-qca988x-ct kmod-usb2 \ DEVICE_PACKAGES += kmod-ath10k-ct ath10k-firmware-qca988x-ct kmod-usb2 \
kmod-usb3 kmod-usb-ledtrig-usbport kmod-usb3 kmod-usb-ledtrig-usbport
@ -425,10 +425,26 @@ define Device/belkin_f9j1108-v2
IMAGES += factory.bin IMAGES += factory.bin
IMAGE/factory.bin := append-kernel | pad-to $$$$(BLOCKSIZE) | \ IMAGE/factory.bin := append-kernel | pad-to $$$$(BLOCKSIZE) | \
append-rootfs | pad-rootfs | check-size | \ append-rootfs | pad-rootfs | check-size | \
edimax-headers F9J1108v1 BR-6679BAC | pad-to $$$$(BLOCKSIZE) edimax-headers $$$$(EDIMAX_HEADER_MAGIC) $$$$(EDIMAX_HEADER_MODEL) | \
pad-to $$$$(BLOCKSIZE)
endef
define Device/belkin_f9j1108-v2
$(Device/belkin_f9x-v2)
DEVICE_MODEL := F9J1108 v2 (AC1750 DB Wi-Fi)
EDIMAX_HEADER_MAGIC := F9J1108v1
EDIMAX_HEADER_MODEL := BR-6679BAC
endef endef
TARGET_DEVICES += belkin_f9j1108-v2 TARGET_DEVICES += belkin_f9j1108-v2
define Device/belkin_f9k1115-v2
$(Device/belkin_f9x-v2)
DEVICE_MODEL := F9K1115 v2 (AC1750 DB Wi-Fi)
EDIMAX_HEADER_MAGIC := eDiMaX
EDIMAX_HEADER_MODEL := F9K1115V2
endef
TARGET_DEVICES += belkin_f9k1115-v2
define Device/buffalo_bhr-4grv define Device/buffalo_bhr-4grv
$(Device/buffalo_common) $(Device/buffalo_common)
SOC := ar7242 SOC := ar7242

View File

@ -321,7 +321,7 @@ endef
TARGET_DEVICES += luxul_xwr-3150 TARGET_DEVICES += luxul_xwr-3150
define Device/meraki_mr32 define Device/meraki_mr32
DEVICE_VENODR := Meraki DEVICE_VENDOR := Meraki
DEVICE_MODEL := MR32 DEVICE_MODEL := MR32
DEVICE_PACKAGES := $(B43) kmod-i2c-bcm-iproc kmod-i2c-gpio kmod-eeprom-at24 \ DEVICE_PACKAGES := $(B43) kmod-i2c-bcm-iproc kmod-i2c-gpio kmod-eeprom-at24 \
kmod-leds-pwm kmod-hwmon-ina2xx kmod-bluetooth kmod-leds-pwm kmod-hwmon-ina2xx kmod-bluetooth

View File

@ -506,7 +506,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
+MODULE_ALIAS("nf-flow-table-hw"); +MODULE_ALIAS("nf-flow-table-hw");
--- a/net/netfilter/nf_tables_api.c --- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c +++ b/net/netfilter/nf_tables_api.c
@@ -5742,6 +5742,13 @@ static int nf_tables_flowtable_parse_hoo @@ -5743,6 +5743,13 @@ static int nf_tables_flowtable_parse_hoo
if (err < 0) if (err < 0)
return err; return err;
@ -520,7 +520,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
ops = kcalloc(n, sizeof(struct nf_hook_ops), GFP_KERNEL); ops = kcalloc(n, sizeof(struct nf_hook_ops), GFP_KERNEL);
if (!ops) if (!ops)
return -ENOMEM; return -ENOMEM;
@@ -5872,10 +5879,19 @@ static int nf_tables_newflowtable(struct @@ -5873,10 +5880,19 @@ static int nf_tables_newflowtable(struct
} }
flowtable->data.type = type; flowtable->data.type = type;
@ -540,7 +540,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
err = nf_tables_flowtable_parse_hook(&ctx, nla[NFTA_FLOWTABLE_HOOK], err = nf_tables_flowtable_parse_hook(&ctx, nla[NFTA_FLOWTABLE_HOOK],
flowtable); flowtable);
if (err < 0) if (err < 0)
@@ -6001,7 +6017,8 @@ static int nf_tables_fill_flowtable_info @@ -6002,7 +6018,8 @@ static int nf_tables_fill_flowtable_info
nla_put_string(skb, NFTA_FLOWTABLE_NAME, flowtable->name) || nla_put_string(skb, NFTA_FLOWTABLE_NAME, flowtable->name) ||
nla_put_be32(skb, NFTA_FLOWTABLE_USE, htonl(flowtable->use)) || nla_put_be32(skb, NFTA_FLOWTABLE_USE, htonl(flowtable->use)) ||
nla_put_be64(skb, NFTA_FLOWTABLE_HANDLE, cpu_to_be64(flowtable->handle), nla_put_be64(skb, NFTA_FLOWTABLE_HANDLE, cpu_to_be64(flowtable->handle),

View File

@ -176,6 +176,22 @@
bias-pull-down; bias-pull-down;
}; };
}; };
enable_ext_pa_high {
gpio-hog;
gpios = <44 GPIO_ACTIVE_HIGH>,
<46 GPIO_ACTIVE_HIGH>;
output-high;
bias-pull-down;
line-name = "enable external PA output-high";
};
enable_ext_pa_low {
gpio-hog;
gpios = <45 GPIO_ACTIVE_HIGH>,
<47 GPIO_ACTIVE_HIGH>;
output-low;
bias-pull-down;
line-name = "enable external PA output-low";
};
}; };
&cryptobam { &cryptobam {

View File

@ -969,7 +969,7 @@ static int edma_axi_probe(struct platform_device *pdev)
edma_netdev[i]->max_mtu = 9000; edma_netdev[i]->max_mtu = 9000;
edma_netdev[i]->features = NETIF_F_HW_CSUM | NETIF_F_RXCSUM edma_netdev[i]->features = NETIF_F_HW_CSUM | NETIF_F_RXCSUM
| NETIF_F_HW_VLAN_CTAG_RX | NETIF_F_SG | | NETIF_F_HW_VLAN_CTAG_RX | NETIF_F_SG |
NETIF_F_TSO | NETIF_F_GRO; NETIF_F_TSO | NETIF_F_GRO | NETIF_F_HW_VLAN_CTAG_TX;
edma_netdev[i]->hw_features = NETIF_F_HW_CSUM | NETIF_F_RXCSUM | edma_netdev[i]->hw_features = NETIF_F_HW_CSUM | NETIF_F_RXCSUM |
NETIF_F_HW_VLAN_CTAG_RX NETIF_F_HW_VLAN_CTAG_RX
| NETIF_F_SG | NETIF_F_TSO | NETIF_F_GRO; | NETIF_F_SG | NETIF_F_TSO | NETIF_F_GRO;
@ -978,20 +978,11 @@ static int edma_axi_probe(struct platform_device *pdev)
edma_netdev[i]->wanted_features = NETIF_F_HW_CSUM | NETIF_F_SG | edma_netdev[i]->wanted_features = NETIF_F_HW_CSUM | NETIF_F_SG |
NETIF_F_TSO | NETIF_F_GRO; NETIF_F_TSO | NETIF_F_GRO;
if (of_property_read_bool(np, "qcom,single-phy") && edma_cinfo->num_gmac == 1)
edma_netdev[i]->features |= NETIF_F_HW_VLAN_CTAG_TX;
#ifdef CONFIG_RFS_ACCEL #ifdef CONFIG_RFS_ACCEL
edma_netdev[i]->features |= NETIF_F_NTUPLE; edma_netdev[i]->features |= NETIF_F_NTUPLE | NETIF_F_RXHASH;
edma_netdev[i]->hw_features |= NETIF_F_NTUPLE; edma_netdev[i]->hw_features |= NETIF_F_NTUPLE | NETIF_F_RXHASH;
edma_netdev[i]->vlan_features |= NETIF_F_NTUPLE; edma_netdev[i]->vlan_features |= NETIF_F_NTUPLE | NETIF_F_RXHASH;
edma_netdev[i]->wanted_features |= NETIF_F_NTUPLE; edma_netdev[i]->wanted_features |= NETIF_F_NTUPLE | NETIF_F_RXHASH;
if (of_property_read_bool(np, "qcom,single-phy") && edma_cinfo->num_gmac == 1) {
edma_netdev[i]->features |= NETIF_F_RXHASH;
edma_netdev[i]->hw_features |= NETIF_F_RXHASH;
edma_netdev[i]->vlan_features |= NETIF_F_RXHASH;
edma_netdev[i]->wanted_features |= NETIF_F_RXHASH;
}
#endif #endif
edma_set_ethtool_ops(edma_netdev[i]); edma_set_ethtool_ops(edma_netdev[i]);

View File

@ -1232,10 +1232,6 @@ ar40xx_init_port(struct ar40xx_priv *priv, int port)
ar40xx_rmw(priv, AR40XX_REG_PORT_STATUS(port), ar40xx_rmw(priv, AR40XX_REG_PORT_STATUS(port),
AR40XX_PORT_AUTO_LINK_EN, 0); AR40XX_PORT_AUTO_LINK_EN, 0);
/* CPU port is setting headers to limit output ports */
if (port == 0)
ar40xx_write(priv, AR40XX_REG_PORT_HEADER(port), 0x8);
else
ar40xx_write(priv, AR40XX_REG_PORT_HEADER(port), 0); ar40xx_write(priv, AR40XX_REG_PORT_HEADER(port), 0);
ar40xx_write(priv, AR40XX_REG_PORT_VLAN0(port), 0); ar40xx_write(priv, AR40XX_REG_PORT_VLAN0(port), 0);
@ -1279,10 +1275,6 @@ ar40xx_init_globals(struct ar40xx_priv *priv)
t = (AR40XX_PORT0_FC_THRESH_ON_DFLT << 16) | t = (AR40XX_PORT0_FC_THRESH_ON_DFLT << 16) |
AR40XX_PORT0_FC_THRESH_OFF_DFLT; AR40XX_PORT0_FC_THRESH_OFF_DFLT;
ar40xx_write(priv, AR40XX_REG_PORT_FLOWCTRL_THRESH(0), t); ar40xx_write(priv, AR40XX_REG_PORT_FLOWCTRL_THRESH(0), t);
/* set service tag to 802.1q */
t = ETH_P_8021Q | AR40XX_ESS_SERVICE_TAG_STAG;
ar40xx_write(priv, AR40XX_ESS_SERVICE_TAG, t);
} }
static void static void
@ -1608,9 +1600,6 @@ ar40xx_setup_port(struct ar40xx_priv *priv, int port, u32 members)
u32 pvid = priv->vlan_id[priv->pvid[port]]; u32 pvid = priv->vlan_id[priv->pvid[port]];
if (priv->vlan) { if (priv->vlan) {
if (priv->vlan_tagged & BIT(port))
egress = AR40XX_PORT_VLAN1_OUT_MODE_TAG;
else
egress = AR40XX_PORT_VLAN1_OUT_MODE_UNMOD; egress = AR40XX_PORT_VLAN1_OUT_MODE_UNMOD;
ingress = AR40XX_IN_SECURE; ingress = AR40XX_IN_SECURE;
@ -1623,16 +1612,8 @@ ar40xx_setup_port(struct ar40xx_priv *priv, int port, u32 members)
t |= pvid << AR40XX_PORT_VLAN0_DEF_CVID_S; t |= pvid << AR40XX_PORT_VLAN0_DEF_CVID_S;
ar40xx_write(priv, AR40XX_REG_PORT_VLAN0(port), t); ar40xx_write(priv, AR40XX_REG_PORT_VLAN0(port), t);
t = egress << AR40XX_PORT_VLAN1_OUT_MODE_S; t = AR40XX_PORT_VLAN1_PORT_VLAN_PROP;
t |= egress << AR40XX_PORT_VLAN1_OUT_MODE_S;
/* set CPU port to core port */
if (port == 0)
t |= AR40XX_PORT_VLAN1_CORE_PORT;
if (priv->vlan_tagged & BIT(port))
t |= AR40XX_PORT_VLAN1_PORT_VLAN_PROP;
else
t |= AR40XX_PORT_VLAN1_PORT_TLS_MODE;
ar40xx_write(priv, AR40XX_REG_PORT_VLAN1(port), t); ar40xx_write(priv, AR40XX_REG_PORT_VLAN1(port), t);

View File

@ -18,7 +18,7 @@ Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
--- a/drivers/mtd/spi-nor/spi-nor.c --- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c +++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -2344,6 +2344,8 @@ static const struct flash_info spi_nor_i @@ -2351,6 +2351,8 @@ static const struct flash_info spi_nor_i
{ "mx25u6435f", INFO(0xc22537, 0, 64 * 1024, 128, SECT_4K) }, { "mx25u6435f", INFO(0xc22537, 0, 64 * 1024, 128, SECT_4K) },
{ "mx25l12805d", INFO(0xc22018, 0, 64 * 1024, 256, 0) }, { "mx25l12805d", INFO(0xc22018, 0, 64 * 1024, 256, 0) },
{ "mx25l12855e", INFO(0xc22618, 0, 64 * 1024, 256, 0) }, { "mx25l12855e", INFO(0xc22618, 0, 64 * 1024, 256, 0) },

View File

@ -70,7 +70,7 @@
}; };
&eth0 { &eth0 {
lan: interface@0 { interface@0 {
compatible = "lantiq,xrx200-pdi"; compatible = "lantiq,xrx200-pdi";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;

View File

@ -94,7 +94,7 @@
}; };
&eth0 { &eth0 {
lan: interface@0 { interface@0 {
compatible = "lantiq,xrx200-pdi"; compatible = "lantiq,xrx200-pdi";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;

View File

@ -112,7 +112,7 @@
<&gphy1_led0_pins>, <&gphy1_led1_pins>; <&gphy1_led0_pins>, <&gphy1_led1_pins>;
pinctrl-names = "default"; pinctrl-names = "default";
lan: interface@0 { interface@0 {
compatible = "lantiq,xrx200-pdi"; compatible = "lantiq,xrx200-pdi";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;

View File

@ -130,7 +130,7 @@
pinctrl-0 = <&mdio_pins>, <&gphy0_led1_pins>, <&gphy1_led0_pins>; pinctrl-0 = <&mdio_pins>, <&gphy0_led1_pins>, <&gphy1_led0_pins>;
pinctrl-names = "default"; pinctrl-names = "default";
lan: interface@0 { interface@0 {
compatible = "lantiq,xrx200-pdi"; compatible = "lantiq,xrx200-pdi";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;

View File

@ -115,7 +115,7 @@
}; };
&eth0 { &eth0 {
lan: interface@0 { interface@0 {
compatible = "lantiq,xrx200-pdi"; compatible = "lantiq,xrx200-pdi";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;

View File

@ -81,7 +81,7 @@
}; };
&eth0 { &eth0 {
lan: interface@0 { interface@0 {
compatible = "lantiq,xrx200-pdi"; compatible = "lantiq,xrx200-pdi";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;

View File

@ -115,7 +115,7 @@
}; };
&eth0 { &eth0 {
lan: interface@0 { interface@0 {
compatible = "lantiq,xrx200-pdi"; compatible = "lantiq,xrx200-pdi";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;

View File

@ -153,7 +153,7 @@
}; };
&eth0 { &eth0 {
lan: interface@0 { interface@0 {
compatible = "lantiq,xrx200-pdi"; compatible = "lantiq,xrx200-pdi";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;

View File

@ -96,7 +96,7 @@
}; };
&eth0 { &eth0 {
lan: interface@0 { interface@0 {
compatible = "lantiq,xrx200-pdi"; compatible = "lantiq,xrx200-pdi";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
@ -129,7 +129,7 @@
}; };
}; };
wan: interface@1 { interface@1 {
compatible = "lantiq,xrx200-pdi"; compatible = "lantiq,xrx200-pdi";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;

View File

@ -86,7 +86,7 @@
&eth0 { &eth0 {
lantiq,phys = <&gphy1>; lantiq,phys = <&gphy1>;
lan: interface@0 { interface@0 {
compatible = "lantiq,xrx200-pdi"; compatible = "lantiq,xrx200-pdi";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;

View File

@ -111,7 +111,7 @@
pinctrl-0 = <&mdio_pins>, <&gphy0_led1_pins>, <&gphy1_led1_pins>; pinctrl-0 = <&mdio_pins>, <&gphy0_led1_pins>, <&gphy1_led1_pins>;
pinctrl-names = "default"; pinctrl-names = "default";
lan: interface@0 { interface@0 {
compatible = "lantiq,xrx200-pdi"; compatible = "lantiq,xrx200-pdi";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;

View File

@ -116,7 +116,7 @@
<&gphy1_led1_pins>, <&gphy1_led2_pins>; <&gphy1_led1_pins>, <&gphy1_led2_pins>;
pinctrl-names = "default"; pinctrl-names = "default";
lan: interface@0 { interface@0 {
compatible = "lantiq,xrx200-pdi"; compatible = "lantiq,xrx200-pdi";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;

View File

@ -17,7 +17,7 @@ Signed-off-by: Vipul Kumar <vipul_kumar@mentor.com>
--- a/drivers/i2c/busses/i2c-imx.c --- a/drivers/i2c/busses/i2c-imx.c
+++ b/drivers/i2c/busses/i2c-imx.c +++ b/drivers/i2c/busses/i2c-imx.c
@@ -1131,7 +1131,8 @@ static int i2c_imx_probe(struct platform @@ -1159,7 +1159,8 @@ static int i2c_imx_probe(struct platform
goto rpm_disable; goto rpm_disable;
/* Request IRQ */ /* Request IRQ */

View File

@ -15,7 +15,7 @@ Signed-off-by: Vipul Kumar <vipul_kumar@mentor.com>
--- a/drivers/i2c/busses/i2c-imx.c --- a/drivers/i2c/busses/i2c-imx.c
+++ b/drivers/i2c/busses/i2c-imx.c +++ b/drivers/i2c/busses/i2c-imx.c
@@ -1229,7 +1229,8 @@ static int __maybe_unused i2c_imx_runtim @@ -1257,7 +1257,8 @@ static int __maybe_unused i2c_imx_runtim
{ {
struct imx_i2c_struct *i2c_imx = dev_get_drvdata(dev); struct imx_i2c_struct *i2c_imx = dev_get_drvdata(dev);
@ -25,7 +25,7 @@ Signed-off-by: Vipul Kumar <vipul_kumar@mentor.com>
return 0; return 0;
} }
@@ -1239,14 +1240,28 @@ static int __maybe_unused i2c_imx_runtim @@ -1267,14 +1268,28 @@ static int __maybe_unused i2c_imx_runtim
struct imx_i2c_struct *i2c_imx = dev_get_drvdata(dev); struct imx_i2c_struct *i2c_imx = dev_get_drvdata(dev);
int ret; int ret;

View File

@ -19,7 +19,7 @@ Signed-off-by: Vipul Kumar <vipul_kumar@mentor.com>
--- a/drivers/i2c/busses/i2c-imx.c --- a/drivers/i2c/busses/i2c-imx.c
+++ b/drivers/i2c/busses/i2c-imx.c +++ b/drivers/i2c/busses/i2c-imx.c
@@ -896,10 +896,17 @@ static int i2c_imx_xfer(struct i2c_adapt @@ -924,10 +924,17 @@ static int i2c_imx_xfer(struct i2c_adapt
unsigned int i, temp; unsigned int i, temp;
int result; int result;
bool is_lastmsg = false; bool is_lastmsg = false;
@ -37,7 +37,7 @@ Signed-off-by: Vipul Kumar <vipul_kumar@mentor.com>
result = pm_runtime_get_sync(i2c_imx->adapter.dev.parent); result = pm_runtime_get_sync(i2c_imx->adapter.dev.parent);
if (result < 0) if (result < 0)
goto out; goto out;
@@ -971,6 +978,9 @@ fail0: @@ -999,6 +1006,9 @@ fail0:
pm_runtime_put_autosuspend(i2c_imx->adapter.dev.parent); pm_runtime_put_autosuspend(i2c_imx->adapter.dev.parent);
out: out:
@ -47,7 +47,7 @@ Signed-off-by: Vipul Kumar <vipul_kumar@mentor.com>
dev_dbg(&i2c_imx->adapter.dev, "<%s> exit with: %s: %d\n", __func__, dev_dbg(&i2c_imx->adapter.dev, "<%s> exit with: %s: %d\n", __func__,
(result < 0) ? "error" : "success msg", (result < 0) ? "error" : "success msg",
(result < 0) ? result : num); (result < 0) ? result : num);
@@ -1261,7 +1271,7 @@ static int i2c_imx_resume(struct device @@ -1289,7 +1299,7 @@ static int i2c_imx_resume(struct device
} }
static const struct dev_pm_ops i2c_imx_pm_ops = { static const struct dev_pm_ops i2c_imx_pm_ops = {

View File

@ -77,7 +77,7 @@ Signed-off-by: Clark Wang <xiaoning.wang@nxp.com>
static inline void imx_i2c_write_reg(unsigned int val, static inline void imx_i2c_write_reg(unsigned int val,
struct imx_i2c_struct *i2c_imx, unsigned int reg) struct imx_i2c_struct *i2c_imx, unsigned int reg)
{ {
@@ -1159,6 +1177,14 @@ static int i2c_imx_probe(struct platform @@ -1187,6 +1205,14 @@ static int i2c_imx_probe(struct platform
clk_notifier_register(i2c_imx->clk, &i2c_imx->clk_change_nb); clk_notifier_register(i2c_imx->clk, &i2c_imx->clk_change_nb);
i2c_imx_set_clk(i2c_imx, clk_get_rate(i2c_imx->clk)); i2c_imx_set_clk(i2c_imx, clk_get_rate(i2c_imx->clk));

View File

@ -19,7 +19,7 @@ Signed-off-by: Shrikant Bobade <Shrikant_Bobade@mentor.com>
--- a/drivers/i2c/busses/i2c-imx.c --- a/drivers/i2c/busses/i2c-imx.c
+++ b/drivers/i2c/busses/i2c-imx.c +++ b/drivers/i2c/busses/i2c-imx.c
@@ -492,16 +492,24 @@ static int i2c_imx_acked(struct imx_i2c_ @@ -514,16 +514,24 @@ static int i2c_imx_acked(struct imx_i2c_
return 0; return 0;
} }
@ -47,7 +47,7 @@ Signed-off-by: Shrikant Bobade <Shrikant_Bobade@mentor.com>
i2c_imx->cur_clk = i2c_clk_rate; i2c_imx->cur_clk = i2c_clk_rate;
@@ -532,20 +540,23 @@ static void i2c_imx_set_clk(struct imx_i @@ -554,20 +562,23 @@ static void i2c_imx_set_clk(struct imx_i
dev_dbg(&i2c_imx->adapter.dev, "IFDR[IC]=0x%x, REAL DIV=%d\n", dev_dbg(&i2c_imx->adapter.dev, "IFDR[IC]=0x%x, REAL DIV=%d\n",
i2c_clk_div[i].val, i2c_clk_div[i].div); i2c_clk_div[i].val, i2c_clk_div[i].div);
#endif #endif
@ -73,7 +73,7 @@ Signed-off-by: Shrikant Bobade <Shrikant_Bobade@mentor.com>
} }
static int i2c_imx_start(struct imx_i2c_struct *i2c_imx) static int i2c_imx_start(struct imx_i2c_struct *i2c_imx)
@@ -555,6 +566,10 @@ static int i2c_imx_start(struct imx_i2c_ @@ -577,6 +588,10 @@ static int i2c_imx_start(struct imx_i2c_
dev_dbg(&i2c_imx->adapter.dev, "<%s>\n", __func__); dev_dbg(&i2c_imx->adapter.dev, "<%s>\n", __func__);
@ -84,7 +84,7 @@ Signed-off-by: Shrikant Bobade <Shrikant_Bobade@mentor.com>
imx_i2c_write_reg(i2c_imx->ifdr, i2c_imx, IMX_I2C_IFDR); imx_i2c_write_reg(i2c_imx->ifdr, i2c_imx, IMX_I2C_IFDR);
/* Enable I2C controller */ /* Enable I2C controller */
imx_i2c_write_reg(i2c_imx->hwdata->i2sr_clr_opcode, i2c_imx, IMX_I2C_I2SR); imx_i2c_write_reg(i2c_imx->hwdata->i2sr_clr_opcode, i2c_imx, IMX_I2C_I2SR);
@@ -1175,7 +1190,11 @@ static int i2c_imx_probe(struct platform @@ -1203,7 +1218,11 @@ static int i2c_imx_probe(struct platform
i2c_imx->bitrate = pdata->bitrate; i2c_imx->bitrate = pdata->bitrate;
i2c_imx->clk_change_nb.notifier_call = i2c_imx_clk_notifier_call; i2c_imx->clk_change_nb.notifier_call = i2c_imx_clk_notifier_call;
clk_notifier_register(i2c_imx->clk, &i2c_imx->clk_change_nb); clk_notifier_register(i2c_imx->clk, &i2c_imx->clk_change_nb);

View File

@ -17,7 +17,7 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com>
--- a/drivers/i2c/busses/i2c-imx.c --- a/drivers/i2c/busses/i2c-imx.c
+++ b/drivers/i2c/busses/i2c-imx.c +++ b/drivers/i2c/busses/i2c-imx.c
@@ -940,6 +940,14 @@ static int i2c_imx_xfer(struct i2c_adapt @@ -968,6 +968,14 @@ static int i2c_imx_xfer(struct i2c_adapt
enable_runtime_pm = true; enable_runtime_pm = true;
} }

View File

@ -106,7 +106,7 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com>
}; };
static const struct imx_i2c_hwdata imx1_i2c_hwdata = { static const struct imx_i2c_hwdata imx1_i2c_hwdata = {
@@ -923,6 +983,78 @@ static int i2c_imx_read(struct imx_i2c_s @@ -951,6 +1011,78 @@ static int i2c_imx_read(struct imx_i2c_s
return 0; return 0;
} }
@ -185,7 +185,7 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com>
static int i2c_imx_xfer(struct i2c_adapter *adapter, static int i2c_imx_xfer(struct i2c_adapter *adapter,
struct i2c_msg *msgs, int num) struct i2c_msg *msgs, int num)
{ {
@@ -945,8 +1077,13 @@ static int i2c_imx_xfer(struct i2c_adapt @@ -973,8 +1105,13 @@ static int i2c_imx_xfer(struct i2c_adapt
* before switching to master mode and attempting a Start cycle * before switching to master mode and attempting a Start cycle
*/ */
result = i2c_imx_bus_busy(i2c_imx, 0); result = i2c_imx_bus_busy(i2c_imx, 0);
@ -201,7 +201,7 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com>
result = pm_runtime_get_sync(i2c_imx->adapter.dev.parent); result = pm_runtime_get_sync(i2c_imx->adapter.dev.parent);
if (result < 0) if (result < 0)
@@ -1093,6 +1230,50 @@ static int i2c_imx_init_recovery_info(st @@ -1121,6 +1258,50 @@ static int i2c_imx_init_recovery_info(st
return 0; return 0;
} }
@ -252,7 +252,7 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com>
static u32 i2c_imx_func(struct i2c_adapter *adapter) static u32 i2c_imx_func(struct i2c_adapter *adapter)
{ {
return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL
@@ -1217,8 +1398,13 @@ static int i2c_imx_probe(struct platform @@ -1245,8 +1426,13 @@ static int i2c_imx_probe(struct platform
i2c_imx, IMX_I2C_I2CR); i2c_imx, IMX_I2C_I2CR);
imx_i2c_write_reg(i2c_imx->hwdata->i2sr_clr_opcode, i2c_imx, IMX_I2C_I2SR); imx_i2c_write_reg(i2c_imx->hwdata->i2sr_clr_opcode, i2c_imx, IMX_I2C_I2SR);

View File

@ -14,7 +14,7 @@ Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
--- a/drivers/i2c/busses/i2c-imx.c --- a/drivers/i2c/busses/i2c-imx.c
+++ b/drivers/i2c/busses/i2c-imx.c +++ b/drivers/i2c/busses/i2c-imx.c
@@ -1398,13 +1398,12 @@ static int i2c_imx_probe(struct platform @@ -1426,13 +1426,12 @@ static int i2c_imx_probe(struct platform
i2c_imx, IMX_I2C_I2CR); i2c_imx, IMX_I2C_I2CR);
imx_i2c_write_reg(i2c_imx->hwdata->i2sr_clr_opcode, i2c_imx, IMX_I2C_I2SR); imx_i2c_write_reg(i2c_imx->hwdata->i2sr_clr_opcode, i2c_imx, IMX_I2C_I2SR);

View File

@ -22,7 +22,7 @@ Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
--- a/drivers/i2c/busses/i2c-imx.c --- a/drivers/i2c/busses/i2c-imx.c
+++ b/drivers/i2c/busses/i2c-imx.c +++ b/drivers/i2c/busses/i2c-imx.c
@@ -1066,12 +1066,15 @@ static int i2c_imx_xfer(struct i2c_adapt @@ -1094,12 +1094,15 @@ static int i2c_imx_xfer(struct i2c_adapt
dev_dbg(&i2c_imx->adapter.dev, "<%s>\n", __func__); dev_dbg(&i2c_imx->adapter.dev, "<%s>\n", __func__);
@ -39,7 +39,7 @@ Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
/* /*
* workround for ERR010027: ensure that the I2C BUS is idle * workround for ERR010027: ensure that the I2C BUS is idle
* before switching to master mode and attempting a Start cycle * before switching to master mode and attempting a Start cycle
@@ -1085,10 +1088,6 @@ static int i2c_imx_xfer(struct i2c_adapt @@ -1113,10 +1116,6 @@ static int i2c_imx_xfer(struct i2c_adapt
goto out; goto out;
} }

View File

@ -38,7 +38,7 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com>
/* Functions for DMA support */ /* Functions for DMA support */
static void i2c_imx_dma_request(struct imx_i2c_struct *i2c_imx, static void i2c_imx_dma_request(struct imx_i2c_struct *i2c_imx,
dma_addr_t phy_addr) dma_addr_t phy_addr)
@@ -681,23 +692,33 @@ static void i2c_imx_stop(struct imx_i2c_ @@ -705,21 +716,33 @@ static void i2c_imx_stop(struct imx_i2c_
imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR); imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR);
} }
@ -57,9 +57,7 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com>
- if (temp & I2SR_IIF) { - if (temp & I2SR_IIF) {
- /* save status register */ - /* save status register */
- i2c_imx->i2csr = temp; - i2c_imx->i2csr = temp;
- temp &= ~I2SR_IIF; - i2c_imx_clear_irq(i2c_imx, I2SR_IIF);
- temp |= (i2c_imx->hwdata->i2sr_clr_opcode & I2SR_IIF);
- imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2SR);
- wake_up(&i2c_imx->queue); - wake_up(&i2c_imx->queue);
- return IRQ_HANDLED; - return IRQ_HANDLED;
- } - }
@ -70,8 +68,7 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com>
+ status |= (i2c_imx->hwdata->i2sr_clr_opcode & I2SR_IAL); + status |= (i2c_imx->hwdata->i2sr_clr_opcode & I2SR_IAL);
+ imx_i2c_write_reg(status, i2c_imx, IMX_I2C_I2SR); + imx_i2c_write_reg(status, i2c_imx, IMX_I2C_I2SR);
+} +}
+
- return IRQ_NONE;
+static irqreturn_t i2c_imx_master_isr(struct imx_i2c_struct *i2c_imx) +static irqreturn_t i2c_imx_master_isr(struct imx_i2c_struct *i2c_imx)
+{ +{
+ unsigned int status; + unsigned int status;
@ -81,12 +78,13 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com>
+ i2c_imx->i2csr = status | I2SR_IIF; + i2c_imx->i2csr = status | I2SR_IIF;
+ +
+ wake_up(&i2c_imx->queue); + wake_up(&i2c_imx->queue);
+
- return IRQ_NONE;
+ return IRQ_HANDLED; + return IRQ_HANDLED;
} }
static int i2c_imx_dma_write(struct imx_i2c_struct *i2c_imx, static int i2c_imx_dma_write(struct imx_i2c_struct *i2c_imx,
@@ -1066,6 +1087,13 @@ static int i2c_imx_xfer(struct i2c_adapt @@ -1094,6 +1117,13 @@ static int i2c_imx_xfer(struct i2c_adapt
dev_dbg(&i2c_imx->adapter.dev, "<%s>\n", __func__); dev_dbg(&i2c_imx->adapter.dev, "<%s>\n", __func__);
@ -100,7 +98,7 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com>
if (!pm_runtime_enabled(i2c_imx->adapter.dev.parent)) { if (!pm_runtime_enabled(i2c_imx->adapter.dev.parent)) {
pm_runtime_enable(i2c_imx->adapter.dev.parent); pm_runtime_enable(i2c_imx->adapter.dev.parent);
enable_runtime_pm = true; enable_runtime_pm = true;
@@ -1279,11 +1307,169 @@ static u32 i2c_imx_func(struct i2c_adapt @@ -1307,11 +1337,169 @@ static u32 i2c_imx_func(struct i2c_adapt
| I2C_FUNC_SMBUS_READ_BLOCK_DATA; | I2C_FUNC_SMBUS_READ_BLOCK_DATA;
} }
@ -270,7 +268,7 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com>
static int i2c_imx_probe(struct platform_device *pdev) static int i2c_imx_probe(struct platform_device *pdev)
{ {
struct imx_i2c_struct *i2c_imx; struct imx_i2c_struct *i2c_imx;
@@ -1392,10 +1578,7 @@ static int i2c_imx_probe(struct platform @@ -1420,10 +1608,7 @@ static int i2c_imx_probe(struct platform
if (is_imx7d_i2c(i2c_imx) && i2c_imx->bitrate > IMX_I2C_MAX_E_BIT_RATE) if (is_imx7d_i2c(i2c_imx) && i2c_imx->bitrate > IMX_I2C_MAX_E_BIT_RATE)
i2c_imx->bitrate = IMX_I2C_MAX_E_BIT_RATE; i2c_imx->bitrate = IMX_I2C_MAX_E_BIT_RATE;

View File

@ -17,8 +17,8 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com>
--- a/drivers/i2c/busses/i2c-imx.c --- a/drivers/i2c/busses/i2c-imx.c
+++ b/drivers/i2c/busses/i2c-imx.c +++ b/drivers/i2c/busses/i2c-imx.c
@@ -503,6 +503,14 @@ static void i2c_imx_dma_free(struct imx_ @@ -516,6 +516,14 @@ static void i2c_imx_clear_irq(struct imx
dma->chan_using = NULL; imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2SR);
} }
+/* Clear arbitration lost bit */ +/* Clear arbitration lost bit */
@ -32,17 +32,16 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com>
static int i2c_imx_bus_busy(struct imx_i2c_struct *i2c_imx, int for_busy) static int i2c_imx_bus_busy(struct imx_i2c_struct *i2c_imx, int for_busy)
{ {
unsigned long orig_jiffies = jiffies; unsigned long orig_jiffies = jiffies;
@@ -515,8 +523,7 @@ static int i2c_imx_bus_busy(struct imx_i @@ -528,7 +536,7 @@ static int i2c_imx_bus_busy(struct imx_i
/* check for arbitration lost */ /* check for arbitration lost */
if (temp & I2SR_IAL) { if (temp & I2SR_IAL) {
- temp &= ~I2SR_IAL; - i2c_imx_clear_irq(i2c_imx, I2SR_IAL);
- imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2SR);
+ i2c_imx_clr_al_bit(temp, i2c_imx); + i2c_imx_clr_al_bit(temp, i2c_imx);
return -EAGAIN; return -EAGAIN;
} }
@@ -700,14 +707,6 @@ static void i2c_imx_clr_if_bit(unsigned @@ -724,14 +732,6 @@ static void i2c_imx_clr_if_bit(unsigned
imx_i2c_write_reg(status, i2c_imx, IMX_I2C_I2SR); imx_i2c_write_reg(status, i2c_imx, IMX_I2C_I2SR);
} }
@ -57,7 +56,7 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com>
static irqreturn_t i2c_imx_master_isr(struct imx_i2c_struct *i2c_imx) static irqreturn_t i2c_imx_master_isr(struct imx_i2c_struct *i2c_imx)
{ {
unsigned int status; unsigned int status;
@@ -1050,12 +1049,14 @@ static int i2c_imx_recovery_for_layersca @@ -1080,12 +1080,14 @@ static int i2c_imx_recovery_for_layersca
gpio_set_value(i2c_imx->gpio, 1); gpio_set_value(i2c_imx->gpio, 1);
/* /*
@ -77,7 +76,7 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com>
/* Restore the saved value of the register SCFG_RCWPMUXCR0 */ /* Restore the saved value of the register SCFG_RCWPMUXCR0 */
if (i2c_imx->need_set_pmuxcr == 1) { if (i2c_imx->need_set_pmuxcr == 1) {
@@ -1069,10 +1070,9 @@ static int i2c_imx_recovery_for_layersca @@ -1099,10 +1101,9 @@ static int i2c_imx_recovery_for_layersca
* I2C_IBSR[IBAL] = 1 * I2C_IBSR[IBAL] = 1
*/ */
temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2SR); temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2SR);

View File

@ -15,7 +15,7 @@ Signed-off-by: Clark Wang <xiaoning.wang@nxp.com>
--- a/drivers/i2c/busses/i2c-imx.c --- a/drivers/i2c/busses/i2c-imx.c
+++ b/drivers/i2c/busses/i2c-imx.c +++ b/drivers/i2c/busses/i2c-imx.c
@@ -1451,23 +1451,20 @@ static const struct i2c_algorithm i2c_im @@ -1482,23 +1482,20 @@ static const struct i2c_algorithm i2c_im
static irqreturn_t i2c_imx_isr(int irq, void *dev_id) static irqreturn_t i2c_imx_isr(int irq, void *dev_id)
{ {
struct imx_i2c_struct *i2c_imx = dev_id; struct imx_i2c_struct *i2c_imx = dev_id;

View File

@ -52,7 +52,7 @@ Signed-off-by: Peng Ma <peng.ma@nxp.com>
} }
static void i2c_imx_dma_callback(void *arg) static void i2c_imx_dma_callback(void *arg)
@@ -1602,10 +1604,14 @@ static int i2c_imx_probe(struct platform @@ -1633,10 +1635,14 @@ static int i2c_imx_probe(struct platform
dev_info(&i2c_imx->adapter.dev, "IMX I2C adapter registered\n"); dev_info(&i2c_imx->adapter.dev, "IMX I2C adapter registered\n");
/* Init DMA config if supported */ /* Init DMA config if supported */

View File

@ -11,7 +11,7 @@ Signed-off-by: Kuldeep Singh <kuldeep.singh@nxp.com>
--- a/drivers/mtd/spi-nor/spi-nor.c --- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c +++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -2410,7 +2410,7 @@ static const struct flash_info spi_nor_i @@ -2417,7 +2417,7 @@ static const struct flash_info spi_nor_i
{ "s25fl512s", INFO6(0x010220, 0x4d0080, 256 * 1024, 256, { "s25fl512s", INFO6(0x010220, 0x4d0080, 256 * 1024, 256,
SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ |
SPI_NOR_HAS_LOCK | USE_CLSR) }, SPI_NOR_HAS_LOCK | USE_CLSR) },

View File

@ -10,7 +10,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
--- a/drivers/mtd/spi-nor/spi-nor.c --- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c +++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -4930,6 +4930,7 @@ int spi_nor_scan(struct spi_nor *nor, co @@ -4937,6 +4937,7 @@ int spi_nor_scan(struct spi_nor *nor, co
struct mtd_info *mtd = &nor->mtd; struct mtd_info *mtd = &nor->mtd;
struct device_node *np = spi_nor_get_flash_node(nor); struct device_node *np = spi_nor_get_flash_node(nor);
struct spi_nor_flash_parameter *params = &nor->params; struct spi_nor_flash_parameter *params = &nor->params;
@ -18,7 +18,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
int ret; int ret;
int i; int i;
@@ -4992,7 +4993,12 @@ int spi_nor_scan(struct spi_nor *nor, co @@ -4999,7 +5000,12 @@ int spi_nor_scan(struct spi_nor *nor, co
/* Init flash parameters based on flash_info struct and SFDP */ /* Init flash parameters based on flash_info struct and SFDP */
spi_nor_init_params(nor); spi_nor_init_params(nor);

View File

@ -1,6 +1,6 @@
--- a/drivers/mtd/spi-nor/spi-nor.c --- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c +++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -2296,6 +2296,11 @@ static const struct flash_info spi_nor_i @@ -2303,6 +2303,11 @@ static const struct flash_info spi_nor_i
SPI_NOR_4B_OPCODES | SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB) SPI_NOR_4B_OPCODES | SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
.fixups = &gd25q256_fixups, .fixups = &gd25q256_fixups,
}, },

View File

@ -430,7 +430,10 @@ static struct device_info boards[] = {
"CPE510(TP-LINK|US|N300-5|55530000):3.0\r\n" "CPE510(TP-LINK|US|N300-5|55530000):3.0\r\n"
"CPE510(TP-LINK|UN|N300-5):3.0\r\n" "CPE510(TP-LINK|UN|N300-5):3.0\r\n"
"CPE510(TP-LINK|EU|N300-5):3.0\r\n" "CPE510(TP-LINK|EU|N300-5):3.0\r\n"
"CPE510(TP-LINK|US|N300-5):3.0\r\n", "CPE510(TP-LINK|US|N300-5):3.0\r\n"
"CPE510(TP-LINK|UN|N300-5|00000000):3.20\r\n"
"CPE510(TP-LINK|US|N300-5|55530000):3.20\r\n"
"CPE510(TP-LINK|EU|N300-5|45550000):3.20\r\n",
.part_trail = 0xff, .part_trail = 0xff,
.soft_ver = NULL, .soft_ver = NULL,