mirror of
https://github.com/hanwckf/immortalwrt-mt798x.git
synced 2025-01-09 02:43:53 +08:00
Merge Official Source
This commit is contained in:
commit
a2e3981cf7
@ -6,13 +6,13 @@ ifdef CONFIG_TESTING_KERNEL
|
||||
KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
|
||||
endif
|
||||
|
||||
LINUX_VERSION-4.9 = .202
|
||||
LINUX_VERSION-4.14 = .155
|
||||
LINUX_VERSION-4.19 = .85
|
||||
LINUX_VERSION-4.9 = .205
|
||||
LINUX_VERSION-4.14 = .156
|
||||
LINUX_VERSION-4.19 = .86
|
||||
|
||||
LINUX_KERNEL_HASH-4.9.202 = 8108ec1cd10fc40821c84e9f087dba10b1767aad66596f4a36925faef55e4ebf
|
||||
LINUX_KERNEL_HASH-4.14.155 = 77d61979556b81c95b81452fa10e1fe9368cbe2f9f80a13e4669b0464722e481
|
||||
LINUX_KERNEL_HASH-4.19.85 = 7bf435970aeeafd46263f49730087a61c4858d8b8fc5a4002ceac971b45f4fb7
|
||||
LINUX_KERNEL_HASH-4.9.205 = 98b9e8644706acc0cf51022372bb263b59a1d2bbe3ccd7ce6bd9bc7378c78b05
|
||||
LINUX_KERNEL_HASH-4.14.156 = f8889feb0cbd7df36ff35bd4c72c1e2010567621bfcb218fcfa501bc5c7787c0
|
||||
LINUX_KERNEL_HASH-4.19.86 = bf2cbba319d43d1bd9e876ac0b55ab83118d1a1e61cce3c929d5371f7567bff6
|
||||
|
||||
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
|
||||
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
|
||||
|
@ -41,24 +41,3 @@ define KernelPackage/net-rtl8192su/description
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,net-rtl8192su))
|
||||
|
||||
|
||||
define KernelPackage/owl-loader
|
||||
SUBMENU:=$(WIRELESS_MENU)
|
||||
TITLE:=Owl loader for initializing Atheros PCI(e) Wifi chips
|
||||
DEPENDS:=@PCI_SUPPORT
|
||||
KCONFIG:=CONFIG_OWL_LOADER
|
||||
FILES:=$(LINUX_DIR)/drivers/misc/owl-loader.ko
|
||||
AUTOLOAD:=$(call AutoProbe,owl-loader)
|
||||
endef
|
||||
|
||||
define KernelPackage/owl-loader/description
|
||||
Kernel module that helps to initialize certain Qualcomm
|
||||
Atheros' PCI(e) Wifi chips, which have the init data
|
||||
(which contains the PCI device ID for example) stored
|
||||
together with the calibration data in the file system.
|
||||
|
||||
This is necessary for devices like the Cisco Meraki Z1.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,owl-loader))
|
||||
|
@ -1,6 +1,6 @@
|
||||
PKG_DRIVERS += \
|
||||
ath ath5k ath6kl ath6kl-sdio ath6kl-usb ath9k ath9k-common ath9k-htc ath10k \
|
||||
carl9170
|
||||
carl9170 owl-loader
|
||||
|
||||
PKG_CONFIG_DEPENDS += \
|
||||
CONFIG_PACKAGE_ATH_DEBUG \
|
||||
@ -38,6 +38,7 @@ config-$(CONFIG_PACKAGE_ATH_SPECTRAL) += ATH9K_COMMON_SPECTRAL ATH10K_SPECTRAL
|
||||
config-$(CONFIG_PACKAGE_ATH_DYNACK) += ATH9K_DYNACK
|
||||
config-$(call config_package,ath9k) += ATH9K
|
||||
config-$(call config_package,ath9k-common) += ATH9K_COMMON
|
||||
config-$(call config_package,owl-loader) += ATH9K_PCI_NO_EEPROM
|
||||
config-$(CONFIG_TARGET_ar71xx) += ATH9K_AHB
|
||||
config-$(CONFIG_TARGET_ath79) += ATH9K_AHB
|
||||
config-$(CONFIG_TARGET_ipq40xx) += ATH10K_AHB
|
||||
@ -274,3 +275,20 @@ define KernelPackage/carl9170
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/carl9170/carl9170.ko
|
||||
AUTOLOAD:=$(call AutoProbe,carl9170)
|
||||
endef
|
||||
|
||||
define KernelPackage/owl-loader
|
||||
$(call KernelPackage/mac80211/Default)
|
||||
TITLE:=Owl loader for initializing Atheros PCI(e) Wifi chips
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-ath9k
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath9k/ath9k_pci_owl_loader.ko
|
||||
AUTOLOAD:=$(call AutoProbe,ath9k_pci_owl_loader)
|
||||
endef
|
||||
|
||||
define KernelPackage/owl-loader/description
|
||||
Kernel module that helps to initialize certain Qualcomm
|
||||
Atheros' PCI(e) Wifi chips, which have the init data
|
||||
(which contains the PCI device ID for example) stored
|
||||
together with the calibration data in the file system.
|
||||
|
||||
This is necessary for devices like the Cisco Meraki Z1.
|
||||
endef
|
||||
|
@ -551,7 +551,7 @@ mac80211_prepare_vif() {
|
||||
|
||||
case "$mode" in
|
||||
monitor|mesh)
|
||||
[ "$auto_channel" -gt 0 ] || iw dev "$ifname" set channel "$channel" $htmode
|
||||
[ "$auto_channel" -gt 0 ] || iw dev "$ifname" set channel "$channel" $iw_htmode
|
||||
;;
|
||||
esac
|
||||
|
||||
@ -625,40 +625,40 @@ mac80211_setup_supplicant_noctl() {
|
||||
fi
|
||||
}
|
||||
|
||||
mac80211_setup_adhoc_htmode() {
|
||||
mac80211_prepare_iw_htmode() {
|
||||
case "$htmode" in
|
||||
VHT20|HT20) ibss_htmode=HT20;;
|
||||
VHT20|HT20) iw_htmode=HT20;;
|
||||
HT40*|VHT40|VHT160)
|
||||
case "$hwmode" in
|
||||
a)
|
||||
case "$(( ($channel / 4) % 2 ))" in
|
||||
1) ibss_htmode="HT40+" ;;
|
||||
0) ibss_htmode="HT40-";;
|
||||
1) iw_htmode="HT40+" ;;
|
||||
0) iw_htmode="HT40-";;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
case "$htmode" in
|
||||
HT40+) ibss_htmode="HT40+";;
|
||||
HT40-) ibss_htmode="HT40-";;
|
||||
HT40+) iw_htmode="HT40+";;
|
||||
HT40-) iw_htmode="HT40-";;
|
||||
*)
|
||||
if [ "$channel" -lt 7 ]; then
|
||||
ibss_htmode="HT40+"
|
||||
iw_htmode="HT40+"
|
||||
else
|
||||
ibss_htmode="HT40-"
|
||||
iw_htmode="HT40-"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
[ "$auto_channel" -gt 0 ] && ibss_htmode="HT40+"
|
||||
[ "$auto_channel" -gt 0 ] && iw_htmode="HT40+"
|
||||
;;
|
||||
VHT80)
|
||||
ibss_htmode="80MHZ"
|
||||
iw_htmode="80MHZ"
|
||||
;;
|
||||
NONE|NOHT)
|
||||
ibss_htmode="NOHT"
|
||||
iw_htmode="NOHT"
|
||||
;;
|
||||
*) ibss_htmode="" ;;
|
||||
*) iw_htmode="" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
@ -701,7 +701,7 @@ mac80211_setup_adhoc() {
|
||||
mcval=
|
||||
[ -n "$mcast_rate" ] && wpa_supplicant_add_rate mcval "$mcast_rate"
|
||||
|
||||
iw dev "$ifname" ibss join "$ssid" $freq $ibss_htmode fixed-freq $bssid \
|
||||
iw dev "$ifname" ibss join "$ssid" $freq $iw_htmode fixed-freq $bssid \
|
||||
beacon-interval $beacon_int \
|
||||
${brstr:+basic-rates $brstr} \
|
||||
${mcval:+mcast-rate $mcval} \
|
||||
@ -721,40 +721,7 @@ mac80211_setup_mesh() {
|
||||
[ -n "$mcast_rate" ] && wpa_supplicant_add_rate mcval "$mcast_rate"
|
||||
[ -n "$mesh_id" ] && ssid="$mesh_id"
|
||||
|
||||
case "$htmode" in
|
||||
VHT20|HT20) mesh_htmode=HT20;;
|
||||
HT40*|VHT40)
|
||||
case "$hwmode" in
|
||||
a)
|
||||
case "$(( ($channel / 4) % 2 ))" in
|
||||
1) mesh_htmode="HT40+" ;;
|
||||
0) mesh_htmode="HT40-";;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
case "$htmode" in
|
||||
HT40+) mesh_htmode="HT40+";;
|
||||
HT40-) mesh_htmode="HT40-";;
|
||||
*)
|
||||
if [ "$channel" -lt 7 ]; then
|
||||
mesh_htmode="HT40+"
|
||||
else
|
||||
mesh_htmode="HT40-"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
VHT80)
|
||||
mesh_htmode="80Mhz"
|
||||
;;
|
||||
VHT160)
|
||||
mesh_htmode="160Mhz"
|
||||
;;
|
||||
*) mesh_htmode="NOHT" ;;
|
||||
esac
|
||||
iw dev "$ifname" mesh join "$ssid" freq $freq $mesh_htmode \
|
||||
iw dev "$ifname" mesh join "$ssid" freq $freq $iw_htmode \
|
||||
${mcval:+mcast-rate $mcval} \
|
||||
beacon-interval $beacon_int
|
||||
}
|
||||
@ -799,7 +766,6 @@ mac80211_setup_vif() {
|
||||
;;
|
||||
adhoc)
|
||||
wireless_vif_parse_encryption
|
||||
mac80211_setup_adhoc_htmode
|
||||
if [ "$wpa" -gt 0 -o "$auto_channel" -gt 0 ]; then
|
||||
freq="$(get_freq "$phy" "$channel")"
|
||||
mac80211_setup_supplicant_noctl $vif_enable || failed=1
|
||||
@ -926,6 +892,7 @@ drv_mac80211_setup() {
|
||||
for_each_interface "sta adhoc mesh" mac80211_set_noscan
|
||||
[ -n "$has_ap" ] && mac80211_hostapd_setup_base "$phy"
|
||||
|
||||
mac80211_prepare_iw_htmode
|
||||
for_each_interface "sta adhoc mesh monitor" mac80211_prepare_vif
|
||||
NEWAPLIST=
|
||||
for_each_interface "ap" mac80211_prepare_vif
|
||||
|
@ -0,0 +1,40 @@
|
||||
From bd8eca2c0f5542c5b20b1c2cc506b8b8a46018df Mon Sep 17 00:00:00 2001
|
||||
From: Christian Lamparter <chunkeey@gmail.com>
|
||||
Date: Sun, 24 Nov 2019 15:22:55 +0100
|
||||
Subject: [PATCH] ath9k: use iowrite32 over __raw_writel
|
||||
To: linux-wireless@vger.kernel.org
|
||||
Cc: QCA ath9k Development <ath9k-devel@qca.qualcomm.com>,
|
||||
Kalle Valo <kvalo@codeaurora.org>,
|
||||
Hauke Mehrtens <hauke@hauke-m.de>,
|
||||
Mathias Kresin <dev@kresin.me>,
|
||||
Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
|
||||
This patch changes the ath9k_pci_owl_loader to use the
|
||||
same iowrite32 memory accessor that ath9k_pci is using
|
||||
to communicate with the PCI(e) chip.
|
||||
|
||||
This will fix endian issues that came up during testing
|
||||
with loaned AVM Fritz!Box 7360 (Lantiq MIPS SoCs + AR9287).
|
||||
|
||||
Fixes: 5a4f2040fd07 ("ath9k: add loader for AR92XX (and older) pci(e)")
|
||||
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
||||
---
|
||||
drivers/net/wireless/ath/ath9k/ath9k_pci_owl_loader.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/ath/ath9k/ath9k_pci_owl_loader.c b/drivers/net/wireless/ath/ath9k/ath9k_pci_owl_loader.c
|
||||
index 956fa7828d0c..56d1a7764b9f 100644
|
||||
--- a/drivers/net/wireless/ath/ath9k/ath9k_pci_owl_loader.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/ath9k_pci_owl_loader.c
|
||||
@@ -83,7 +83,7 @@ static int ath9k_pci_fixup(struct pci_dev *pdev, const u16 *cal_data,
|
||||
val = swahb32(val);
|
||||
}
|
||||
|
||||
- __raw_writel(val, mem + reg);
|
||||
+ iowrite32(val, mem + reg);
|
||||
usleep_range(100, 120);
|
||||
}
|
||||
|
||||
--
|
||||
2.24.0
|
||||
|
@ -0,0 +1,53 @@
|
||||
From: Christian Lamparter <chunkeey@gmail.com>
|
||||
Date: Sat, 16 Nov 2019 19:25:24 +0100
|
||||
Subject: [PATCH] owl_loader: compatibility patch
|
||||
|
||||
This patch includes OpenWrt specific changes that are
|
||||
not included in the upstream owl-loader.
|
||||
|
||||
This includes a platform data handling changes for ar71xx.
|
||||
|
||||
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath9k/ath9k_pci_owl_loader.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/ath9k_pci_owl_loader.c
|
||||
@@ -104,6 +104,7 @@
|
||||
{
|
||||
struct pci_dev *pdev = (struct pci_dev *)context;
|
||||
struct owl_ctx *ctx = (struct owl_ctx *)pci_get_drvdata(pdev);
|
||||
+ struct ath9k_platform_data *pdata = dev_get_platdata(&pdev->dev);
|
||||
struct pci_bus *bus;
|
||||
|
||||
complete(&ctx->eeprom_load);
|
||||
@@ -121,6 +122,16 @@
|
||||
goto release;
|
||||
}
|
||||
|
||||
+ if (pdata) {
|
||||
+ memcpy(pdata->eeprom_data, fw->data, fw->size);
|
||||
+
|
||||
+ /*
|
||||
+ * eeprom has been successfully loaded - pass the data to ath9k
|
||||
+ * but remove the eeprom_name, so it doesn't try to load it too.
|
||||
+ */
|
||||
+ pdata->eeprom_name = NULL;
|
||||
+ }
|
||||
+
|
||||
if (ath9k_pci_fixup(pdev, (const u16 *)fw->data, fw->size))
|
||||
goto release;
|
||||
|
||||
@@ -138,8 +149,14 @@
|
||||
static const char *owl_get_eeprom_name(struct pci_dev *pdev)
|
||||
{
|
||||
struct device *dev = &pdev->dev;
|
||||
+ struct ath9k_platform_data *pdata;
|
||||
char *eeprom_name;
|
||||
|
||||
+ /* try the existing platform data first */
|
||||
+ pdata = dev_get_platdata(dev);
|
||||
+ if (pdata && pdata->eeprom_name)
|
||||
+ return pdata->eeprom_name;
|
||||
+
|
||||
dev_dbg(dev, "using auto-generated eeprom filename\n");
|
||||
|
||||
eeprom_name = devm_kzalloc(dev, EEPROM_FILENAME_LEN, GFP_KERNEL);
|
@ -144,7 +144,6 @@ define KernelPackage/mt7615e
|
||||
DEPENDS+=@PCI_SUPPORT +kmod-mt76-core
|
||||
FILES:=\
|
||||
$(PKG_BUILD_DIR)/mt7615/mt7615e.ko
|
||||
MODPARAMS:=async_probe
|
||||
AUTOLOAD:=$(call AutoProbe,mt7615e)
|
||||
endef
|
||||
|
||||
|
@ -5,9 +5,9 @@ PKG_RELEASE:=2
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/netifd.git
|
||||
PKG_SOURCE_DATE:=2019-11-12
|
||||
PKG_SOURCE_VERSION:=e15147c272201eb17320c10ec95919e641bd03c5
|
||||
PKG_MIRROR_HASH:=af830967d3d9f20d8d3c01b1931e501e075984043e38c23ac649faced34e896a
|
||||
PKG_SOURCE_DATE:=2019-11-20
|
||||
PKG_SOURCE_VERSION:=e45b1408284c05984b38a910a1f0a07d6c761397
|
||||
PKG_MIRROR_HASH:=5f9b96a20bef71dc42492a8eaf407276a656ff00cce18ed8d0c7391c0a52d3e8
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
|
@ -5,9 +5,9 @@ PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/ucert.git
|
||||
PKG_SOURCE_DATE:=2018-09-18
|
||||
PKG_SOURCE_VERSION:=e1c722b1b6cbf2527b3178342464e56b97825874
|
||||
PKG_MIRROR_HASH:=36dcca7c2d649a6c34a8daaaef4698fbeb808fd6580c6bfb1ca35f4f06825d17
|
||||
PKG_SOURCE_DATE:=2019-11-29
|
||||
PKG_SOURCE_VERSION:=e4bd927cc7c756de5f3005824b63a7a6d827e1ee
|
||||
PKG_MIRROR_HASH:=cc6853e861110dd89cc8bd909c5f02150c2c3f9a77de66017393515644a7ac36
|
||||
|
||||
CMAKE_INSTALL:=1
|
||||
PKG_CHECK_FORMAT_SECURITY:=1
|
||||
|
@ -126,8 +126,9 @@ config BUSYBOX_CONFIG_FEATURE_VI_SEARCH
|
||||
|
||||
config BUSYBOX_CONFIG_FEATURE_VI_REGEX_SEARCH
|
||||
bool "Enable regex in search and replace"
|
||||
default BUSYBOX_DEFAULT_FEATURE_VI_REGEX_SEARCH # Uses GNU regex, which may be unavailable. FIXME
|
||||
default BUSYBOX_DEFAULT_FEATURE_VI_REGEX_SEARCH
|
||||
depends on BUSYBOX_CONFIG_FEATURE_VI_SEARCH
|
||||
depends on USE_GLIBC
|
||||
help
|
||||
Use extended regex search.
|
||||
|
||||
|
@ -327,7 +327,7 @@
|
||||
return neigh_create(&arp_tbl, pkey, dev);
|
||||
--- a/net/ipv4/tcp_output.c
|
||||
+++ b/net/ipv4/tcp_output.c
|
||||
@@ -461,48 +461,53 @@ static void tcp_options_write(__be32 *pt
|
||||
@@ -444,48 +444,53 @@ static void tcp_options_write(__be32 *pt
|
||||
u16 options = opts->options; /* mungable copy */
|
||||
|
||||
if (unlikely(OPTION_MD5 & options)) {
|
||||
@ -404,7 +404,7 @@
|
||||
}
|
||||
|
||||
if (unlikely(opts->num_sack_blocks)) {
|
||||
@@ -510,16 +515,17 @@ static void tcp_options_write(__be32 *pt
|
||||
@@ -493,16 +498,17 @@ static void tcp_options_write(__be32 *pt
|
||||
tp->duplicate_sack : tp->selective_acks;
|
||||
int this_sack;
|
||||
|
||||
@ -428,7 +428,7 @@
|
||||
}
|
||||
|
||||
tp->rx_opt.dsack = 0;
|
||||
@@ -532,13 +538,14 @@ static void tcp_options_write(__be32 *pt
|
||||
@@ -515,13 +521,14 @@ static void tcp_options_write(__be32 *pt
|
||||
|
||||
if (foc->exp) {
|
||||
len = TCPOLEN_EXP_FASTOPEN_BASE + foc->len;
|
||||
@ -728,7 +728,7 @@
|
||||
EXPORT_SYMBOL(xfrm_parse_spi);
|
||||
--- a/net/ipv4/tcp_input.c
|
||||
+++ b/net/ipv4/tcp_input.c
|
||||
@@ -3912,14 +3912,16 @@ static bool tcp_parse_aligned_timestamp(
|
||||
@@ -3891,14 +3891,16 @@ static bool tcp_parse_aligned_timestamp(
|
||||
{
|
||||
const __be32 *ptr = (const __be32 *)(th + 1);
|
||||
|
||||
|
@ -93,7 +93,7 @@ Signed-off-by: James Hughes <james.hughes@raspberrypi.org>
|
||||
|
||||
--- a/drivers/video/fbdev/Kconfig
|
||||
+++ b/drivers/video/fbdev/Kconfig
|
||||
@@ -236,6 +236,20 @@ config FB_TILEBLITTING
|
||||
@@ -242,6 +242,20 @@ config FB_TILEBLITTING
|
||||
comment "Frame buffer hardware drivers"
|
||||
depends on FB
|
||||
|
||||
|
@ -390,11 +390,10 @@ Subject: [PATCH 064/806] mfd: Add Raspberry Pi Sense HAT core driver
|
||||
+
|
||||
--- a/drivers/video/fbdev/Kconfig
|
||||
+++ b/drivers/video/fbdev/Kconfig
|
||||
@@ -2355,3 +2355,16 @@ config FB_SM712
|
||||
This driver is also available as a module. The module will be
|
||||
@@ -2350,6 +2350,19 @@ config FB_SM712
|
||||
called sm712fb. If you want to compile it as a module, say M
|
||||
here and read <file:Documentation/kbuild/modules.txt>.
|
||||
+
|
||||
|
||||
+config FB_RPISENSE
|
||||
+ tristate "Raspberry Pi Sense HAT framebuffer"
|
||||
+ depends on FB
|
||||
@ -407,6 +406,10 @@ Subject: [PATCH 064/806] mfd: Add Raspberry Pi Sense HAT core driver
|
||||
+
|
||||
+ help
|
||||
+ This is the framebuffer driver for the Raspberry Pi Sense HAT
|
||||
+
|
||||
source "drivers/video/fbdev/omap/Kconfig"
|
||||
source "drivers/video/fbdev/omap2/Kconfig"
|
||||
source "drivers/video/fbdev/mmp/Kconfig"
|
||||
--- a/drivers/video/fbdev/Makefile
|
||||
+++ b/drivers/video/fbdev/Makefile
|
||||
@@ -138,6 +138,7 @@ obj-$(CONFIG_FB_DA8XX) += da8xx-fb.o
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/i2c/busses/Kconfig
|
||||
+++ b/drivers/i2c/busses/Kconfig
|
||||
@@ -473,6 +473,18 @@ config I2C_CBUS_GPIO
|
||||
@@ -474,6 +474,18 @@ config I2C_CBUS_GPIO
|
||||
This driver can also be built as a module. If so, the module
|
||||
will be called i2c-cbus-gpio.
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/i2c/busses/Kconfig
|
||||
+++ b/drivers/i2c/busses/Kconfig
|
||||
@@ -459,6 +459,18 @@ config I2C_CBUS_GPIO
|
||||
@@ -460,6 +460,18 @@ config I2C_CBUS_GPIO
|
||||
This driver can also be built as a module. If so, the module
|
||||
will be called i2c-cbus-gpio.
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/usb/dwc2/params.c
|
||||
+++ b/drivers/usb/dwc2/params.c
|
||||
@@ -151,6 +151,36 @@ static void dwc2_set_stm32f7_hsotg_param
|
||||
@@ -152,6 +152,36 @@ static void dwc2_set_stm32f7_hsotg_param
|
||||
p->host_perio_tx_fifo_size = 256;
|
||||
}
|
||||
|
||||
@ -37,7 +37,7 @@
|
||||
const struct of_device_id dwc2_of_match_table[] = {
|
||||
{ .compatible = "brcm,bcm2835-usb", .data = dwc2_set_bcm_params },
|
||||
{ .compatible = "hisilicon,hi6220-usb", .data = dwc2_set_his_params },
|
||||
@@ -819,17 +849,23 @@ int dwc2_get_hwparams(struct dwc2_hsotg
|
||||
@@ -820,17 +850,23 @@ int dwc2_get_hwparams(struct dwc2_hsotg
|
||||
|
||||
int dwc2_init_params(struct dwc2_hsotg *hsotg)
|
||||
{
|
||||
|
@ -14,7 +14,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
|
||||
--- a/drivers/pinctrl/pinctrl-gemini.c
|
||||
+++ b/drivers/pinctrl/pinctrl-gemini.c
|
||||
@@ -2074,6 +2074,16 @@ static const struct gemini_pmx_func gemi
|
||||
@@ -2102,6 +2102,16 @@ static const struct gemini_pmx_func gemi
|
||||
.num_groups = ARRAY_SIZE(satagrps),
|
||||
},
|
||||
{
|
||||
|
@ -34,7 +34,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/regmap.h>
|
||||
@@ -1918,73 +1920,13 @@ static void gemini_pin_dbg_show(struct p
|
||||
@@ -1946,73 +1948,13 @@ static void gemini_pin_dbg_show(struct p
|
||||
seq_printf(s, " " DRIVER_NAME);
|
||||
}
|
||||
|
||||
|
@ -97,7 +97,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
#define GLOBAL_MISC_CTRL 0x30
|
||||
#define TVC_CLK_PAD_ENABLE BIT(20)
|
||||
#define PCI_CLK_PAD_ENABLE BIT(17)
|
||||
@@ -1925,7 +1946,7 @@ static const struct pinctrl_ops gemini_p
|
||||
@@ -1953,7 +1974,7 @@ static const struct pinctrl_ops gemini_p
|
||||
.get_group_name = gemini_get_group_name,
|
||||
.get_group_pins = gemini_get_group_pins,
|
||||
.pin_dbg_show = gemini_pin_dbg_show,
|
||||
@ -106,7 +106,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
.dt_free_map = pinconf_generic_dt_free_map,
|
||||
};
|
||||
|
||||
@@ -2203,10 +2224,155 @@ static const struct pinmux_ops gemini_pm
|
||||
@@ -2232,10 +2253,155 @@ static const struct pinmux_ops gemini_pm
|
||||
.set_mux = gemini_pmx_set_mux,
|
||||
};
|
||||
|
||||
@ -262,7 +262,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
.owner = THIS_MODULE,
|
||||
};
|
||||
|
||||
@@ -2249,11 +2415,15 @@ static int gemini_pmx_probe(struct platf
|
||||
@@ -2278,11 +2444,15 @@ static int gemini_pmx_probe(struct platf
|
||||
val &= 0xffff;
|
||||
if (val == 0x3512) {
|
||||
pmx->is_3512 = true;
|
||||
|
@ -55,7 +55,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
};
|
||||
|
||||
static const unsigned int pci_3512_pins[] = {
|
||||
@@ -668,10 +678,10 @@ static const unsigned int gpio1c_3512_pi
|
||||
@@ -671,10 +681,10 @@ static const unsigned int gpio1c_3512_pi
|
||||
/* The GPIO1D (28-31) pins overlap with LCD and TVC */
|
||||
static const unsigned int gpio1d_3512_pins[] = { 246, 319, 301, 283 };
|
||||
|
||||
@ -68,7 +68,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
static const unsigned int gpio2b_3512_pins[] = { 262, 244, 317, 299 };
|
||||
|
||||
/* The GPIO2C (8-31) pins overlap with PCI */
|
||||
@@ -738,9 +748,16 @@ static const struct gemini_pin_group gem
|
||||
@@ -741,9 +751,16 @@ static const struct gemini_pin_group gem
|
||||
.num_pins = ARRAY_SIZE(usb_3512_pins),
|
||||
},
|
||||
{
|
||||
@ -88,7 +88,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
},
|
||||
{
|
||||
.name = "pcigrp",
|
||||
@@ -954,14 +971,15 @@ static const struct gemini_pin_group gem
|
||||
@@ -963,14 +980,15 @@ static const struct gemini_pin_group gem
|
||||
.name = "gpio2agrp",
|
||||
.pins = gpio2a_3512_pins,
|
||||
.num_pins = ARRAY_SIZE(gpio2a_3512_pins),
|
||||
@ -107,7 +107,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
},
|
||||
{
|
||||
.name = "gpio2cgrp",
|
||||
@@ -1441,9 +1459,12 @@ static const unsigned int usb_3516_pins[
|
||||
@@ -1450,9 +1468,12 @@ static const unsigned int usb_3516_pins[
|
||||
};
|
||||
|
||||
/* GMII, ethernet pins */
|
||||
@ -123,7 +123,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
};
|
||||
|
||||
static const unsigned int pci_3516_pins[] = {
|
||||
@@ -1585,10 +1606,10 @@ static const unsigned int gpio1c_3516_pi
|
||||
@@ -1600,10 +1621,10 @@ static const unsigned int gpio1c_3516_pi
|
||||
/* The GPIO1D (28-31) pins overlap with TVC */
|
||||
static const unsigned int gpio1d_3516_pins[] = { 353, 311, 394, 374 };
|
||||
|
||||
@ -136,7 +136,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
static const unsigned int gpio2b_3516_pins[] = { 391, 351, 310, 371 };
|
||||
|
||||
/* The GPIO2C (8-31) pins overlap with PCI */
|
||||
@@ -1660,9 +1681,16 @@ static const struct gemini_pin_group gem
|
||||
@@ -1675,9 +1696,16 @@ static const struct gemini_pin_group gem
|
||||
.num_pins = ARRAY_SIZE(usb_3516_pins),
|
||||
},
|
||||
{
|
||||
@ -156,7 +156,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
},
|
||||
{
|
||||
.name = "pcigrp",
|
||||
@@ -1861,14 +1889,15 @@ static const struct gemini_pin_group gem
|
||||
@@ -1889,14 +1917,15 @@ static const struct gemini_pin_group gem
|
||||
.name = "gpio2agrp",
|
||||
.pins = gpio2a_3516_pins,
|
||||
.num_pins = ARRAY_SIZE(gpio2a_3516_pins),
|
||||
@ -175,7 +175,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
},
|
||||
{
|
||||
.name = "gpio2cgrp",
|
||||
@@ -1971,7 +2000,7 @@ static const char * const icegrps[] = {
|
||||
@@ -1999,7 +2028,7 @@ static const char * const icegrps[] = {
|
||||
static const char * const idegrps[] = { "idegrp" };
|
||||
static const char * const satagrps[] = { "satagrp" };
|
||||
static const char * const usbgrps[] = { "usbgrp" };
|
||||
|
@ -13,7 +13,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
|
||||
--- a/drivers/pinctrl/pinctrl-gemini.c
|
||||
+++ b/drivers/pinctrl/pinctrl-gemini.c
|
||||
@@ -2015,7 +2015,8 @@ static const char * const sflashgrps[] =
|
||||
@@ -2043,7 +2043,8 @@ static const char * const sflashgrps[] =
|
||||
static const char * const gpio0grps[] = { "gpio0agrp", "gpio0bgrp", "gpio0cgrp",
|
||||
"gpio0dgrp", "gpio0egrp", "gpio0fgrp",
|
||||
"gpio0ggrp", "gpio0hgrp", "gpio0igrp",
|
||||
|
@ -14,7 +14,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
|
||||
--- a/drivers/pinctrl/pinctrl-gemini.c
|
||||
+++ b/drivers/pinctrl/pinctrl-gemini.c
|
||||
@@ -2323,7 +2323,7 @@ static const struct gemini_pin_conf *gem
|
||||
@@ -2352,7 +2352,7 @@ static const struct gemini_pin_conf *gem
|
||||
int i;
|
||||
|
||||
for (i = 0; i < pmx->nconfs; i++) {
|
||||
|
@ -54,7 +54,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
#define GLOBAL_GMAC_CTRL_SKEW 0x1c
|
||||
#define GLOBAL_GMAC0_DATA_SKEW 0x20
|
||||
#define GLOBAL_GMAC1_DATA_SKEW 0x24
|
||||
@@ -738,6 +743,7 @@ static const struct gemini_pin_group gem
|
||||
@@ -741,6 +746,7 @@ static const struct gemini_pin_group gem
|
||||
/* Conflict with all flash usage */
|
||||
.value = IDE_PADS_ENABLE | NAND_PADS_DISABLE |
|
||||
PFLASH_PADS_DISABLE | SFLASH_PADS_DISABLE,
|
||||
@ -62,7 +62,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
},
|
||||
{
|
||||
.name = "satagrp",
|
||||
@@ -753,6 +759,7 @@ static const struct gemini_pin_group gem
|
||||
@@ -756,6 +762,7 @@ static const struct gemini_pin_group gem
|
||||
.name = "gmii_gmac0_grp",
|
||||
.pins = gmii_gmac0_3512_pins,
|
||||
.num_pins = ARRAY_SIZE(gmii_gmac0_3512_pins),
|
||||
@ -70,7 +70,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
},
|
||||
{
|
||||
.name = "gmii_gmac1_grp",
|
||||
@@ -760,6 +767,7 @@ static const struct gemini_pin_group gem
|
||||
@@ -763,6 +770,7 @@ static const struct gemini_pin_group gem
|
||||
.num_pins = ARRAY_SIZE(gmii_gmac1_3512_pins),
|
||||
/* Bring out RGMII on the GMAC1 pins */
|
||||
.value = GEMINI_GMAC_IOSEL_GMAC0_GMAC1_RGMII,
|
||||
@ -78,7 +78,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
},
|
||||
{
|
||||
.name = "pcigrp",
|
||||
@@ -767,6 +775,7 @@ static const struct gemini_pin_group gem
|
||||
@@ -770,6 +778,7 @@ static const struct gemini_pin_group gem
|
||||
.num_pins = ARRAY_SIZE(pci_3512_pins),
|
||||
/* Conflict only with GPIO2 */
|
||||
.value = PCI_PADS_ENABLE | PCI_CLK_PAD_ENABLE,
|
||||
@ -86,7 +86,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
},
|
||||
{
|
||||
.name = "lpcgrp",
|
||||
@@ -1671,6 +1680,7 @@ static const struct gemini_pin_group gem
|
||||
@@ -1686,6 +1695,7 @@ static const struct gemini_pin_group gem
|
||||
/* Conflict with all flash usage */
|
||||
.value = IDE_PADS_ENABLE | NAND_PADS_DISABLE |
|
||||
PFLASH_PADS_DISABLE | SFLASH_PADS_DISABLE,
|
||||
@ -94,7 +94,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
},
|
||||
{
|
||||
.name = "satagrp",
|
||||
@@ -1686,6 +1696,7 @@ static const struct gemini_pin_group gem
|
||||
@@ -1701,6 +1711,7 @@ static const struct gemini_pin_group gem
|
||||
.name = "gmii_gmac0_grp",
|
||||
.pins = gmii_gmac0_3516_pins,
|
||||
.num_pins = ARRAY_SIZE(gmii_gmac0_3516_pins),
|
||||
@ -102,7 +102,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
},
|
||||
{
|
||||
.name = "gmii_gmac1_grp",
|
||||
@@ -1693,6 +1704,7 @@ static const struct gemini_pin_group gem
|
||||
@@ -1708,6 +1719,7 @@ static const struct gemini_pin_group gem
|
||||
.num_pins = ARRAY_SIZE(gmii_gmac1_3516_pins),
|
||||
/* Bring out RGMII on the GMAC1 pins */
|
||||
.value = GEMINI_GMAC_IOSEL_GMAC0_GMAC1_RGMII,
|
||||
@ -110,7 +110,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
},
|
||||
{
|
||||
.name = "pcigrp",
|
||||
@@ -1700,6 +1712,7 @@ static const struct gemini_pin_group gem
|
||||
@@ -1715,6 +1727,7 @@ static const struct gemini_pin_group gem
|
||||
.num_pins = ARRAY_SIZE(pci_3516_pins),
|
||||
/* Conflict only with GPIO2 */
|
||||
.value = PCI_PADS_ENABLE | PCI_CLK_PAD_ENABLE,
|
||||
@ -118,7 +118,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
},
|
||||
{
|
||||
.name = "lpcgrp",
|
||||
@@ -2394,9 +2407,77 @@ static int gemini_pinconf_set(struct pin
|
||||
@@ -2423,9 +2436,77 @@ static int gemini_pinconf_set(struct pin
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -1,31 +0,0 @@
|
||||
From f8ac3d3472a8dc99c8647a637611d146d88be8cb Mon Sep 17 00:00:00 2001
|
||||
From: Linus Walleij <linus.walleij@linaro.org>
|
||||
Date: Tue, 9 Oct 2018 10:09:14 +0200
|
||||
Subject: [PATCH 01/18] pinctrl: gemini: Mask and set properly
|
||||
|
||||
The code was written under the assumption that the
|
||||
regmap_update_bits() would mask the bits in the mask and
|
||||
set the bits in the value.
|
||||
|
||||
It missed the points that it will not set bits in the value
|
||||
unless these are also masked in the mask. Set value bits
|
||||
that are not in the mask will simply be ignored.
|
||||
|
||||
Fixes: 06351d133dea ("pinctrl: add a Gemini SoC pin controller")
|
||||
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
---
|
||||
drivers/pinctrl/pinctrl-gemini.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/pinctrl/pinctrl-gemini.c
|
||||
+++ b/drivers/pinctrl/pinctrl-gemini.c
|
||||
@@ -2184,7 +2184,8 @@ static int gemini_pmx_set_mux(struct pin
|
||||
func->name, grp->name);
|
||||
|
||||
regmap_read(pmx->map, GLOBAL_MISC_CTRL, &before);
|
||||
- regmap_update_bits(pmx->map, GLOBAL_MISC_CTRL, grp->mask,
|
||||
+ regmap_update_bits(pmx->map, GLOBAL_MISC_CTRL,
|
||||
+ grp->mask | grp->value,
|
||||
grp->value);
|
||||
regmap_read(pmx->map, GLOBAL_MISC_CTRL, &after);
|
||||
|
@ -1,141 +0,0 @@
|
||||
From ce81398dccb984855de606b75db25eddecdaa9e5 Mon Sep 17 00:00:00 2001
|
||||
From: Linus Walleij <linus.walleij@linaro.org>
|
||||
Date: Wed, 10 Oct 2018 20:25:39 +0200
|
||||
Subject: [PATCH 02/18] pinctrl: gemini: Fix up TVC clock group
|
||||
|
||||
The previous fix made the TVC clock get muxed in on the
|
||||
D-Link DIR-685 instead of giving nagging warnings of this
|
||||
not working. Not good. We didn't want that, as it breaks
|
||||
video.
|
||||
|
||||
Create a specific group for the TVC CLK, and break out
|
||||
a specific GPIO group for it on the SL3516 so we can use
|
||||
that line as GPIO if we don't need the TVC CLK.
|
||||
|
||||
Fixes: d17f477c5bc6 ("pinctrl: gemini: Mask and set properly")
|
||||
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
---
|
||||
drivers/pinctrl/pinctrl-gemini.c | 44 ++++++++++++++++++++++++++------
|
||||
1 file changed, 36 insertions(+), 8 deletions(-)
|
||||
|
||||
--- a/drivers/pinctrl/pinctrl-gemini.c
|
||||
+++ b/drivers/pinctrl/pinctrl-gemini.c
|
||||
@@ -591,13 +591,16 @@ static const unsigned int tvc_3512_pins[
|
||||
319, /* TVC_DATA[1] */
|
||||
301, /* TVC_DATA[2] */
|
||||
283, /* TVC_DATA[3] */
|
||||
- 265, /* TVC_CLK */
|
||||
320, /* TVC_DATA[4] */
|
||||
302, /* TVC_DATA[5] */
|
||||
284, /* TVC_DATA[6] */
|
||||
266, /* TVC_DATA[7] */
|
||||
};
|
||||
|
||||
+static const unsigned int tvc_clk_3512_pins[] = {
|
||||
+ 265, /* TVC_CLK */
|
||||
+};
|
||||
+
|
||||
/* NAND flash pins */
|
||||
static const unsigned int nflash_3512_pins[] = {
|
||||
199, 200, 201, 202, 216, 217, 218, 219, 220, 234, 235, 236, 237, 252,
|
||||
@@ -629,7 +632,7 @@ static const unsigned int pflash_3512_pi
|
||||
/* Serial flash pins CE0, CE1, DI, DO, CK */
|
||||
static const unsigned int sflash_3512_pins[] = { 230, 231, 232, 233, 211 };
|
||||
|
||||
-/* The GPIO0A (0) pin overlap with TVC and extended parallel flash */
|
||||
+/* The GPIO0A (0) pin overlap with TVC CLK and extended parallel flash */
|
||||
static const unsigned int gpio0a_3512_pins[] = { 265 };
|
||||
|
||||
/* The GPIO0B (1-4) pins overlap with TVC and ICE */
|
||||
@@ -823,7 +826,13 @@ static const struct gemini_pin_group gem
|
||||
.num_pins = ARRAY_SIZE(tvc_3512_pins),
|
||||
/* Conflict with character LCD and ICE */
|
||||
.mask = LCD_PADS_ENABLE,
|
||||
- .value = TVC_PADS_ENABLE | TVC_CLK_PAD_ENABLE,
|
||||
+ .value = TVC_PADS_ENABLE,
|
||||
+ },
|
||||
+ {
|
||||
+ .name = "tvcclkgrp",
|
||||
+ .pins = tvc_clk_3512_pins,
|
||||
+ .num_pins = ARRAY_SIZE(tvc_clk_3512_pins),
|
||||
+ .value = TVC_CLK_PAD_ENABLE,
|
||||
},
|
||||
/*
|
||||
* The construction is done such that it is possible to use a serial
|
||||
@@ -860,8 +869,8 @@ static const struct gemini_pin_group gem
|
||||
.name = "gpio0agrp",
|
||||
.pins = gpio0a_3512_pins,
|
||||
.num_pins = ARRAY_SIZE(gpio0a_3512_pins),
|
||||
- /* Conflict with TVC */
|
||||
- .mask = TVC_PADS_ENABLE,
|
||||
+ /* Conflict with TVC CLK */
|
||||
+ .mask = TVC_CLK_PAD_ENABLE,
|
||||
},
|
||||
{
|
||||
.name = "gpio0bgrp",
|
||||
@@ -1531,13 +1540,16 @@ static const unsigned int tvc_3516_pins[
|
||||
311, /* TVC_DATA[1] */
|
||||
394, /* TVC_DATA[2] */
|
||||
374, /* TVC_DATA[3] */
|
||||
- 333, /* TVC_CLK */
|
||||
354, /* TVC_DATA[4] */
|
||||
395, /* TVC_DATA[5] */
|
||||
312, /* TVC_DATA[6] */
|
||||
334, /* TVC_DATA[7] */
|
||||
};
|
||||
|
||||
+static const unsigned int tvc_clk_3516_pins[] = {
|
||||
+ 333, /* TVC_CLK */
|
||||
+};
|
||||
+
|
||||
/* NAND flash pins */
|
||||
static const unsigned int nflash_3516_pins[] = {
|
||||
243, 260, 261, 224, 280, 262, 281, 264, 300, 263, 282, 301, 320, 283,
|
||||
@@ -1570,7 +1582,7 @@ static const unsigned int pflash_3516_pi
|
||||
static const unsigned int sflash_3516_pins[] = { 296, 338, 295, 359, 339 };
|
||||
|
||||
/* The GPIO0A (0-4) pins overlap with TVC and extended parallel flash */
|
||||
-static const unsigned int gpio0a_3516_pins[] = { 333, 354, 395, 312, 334 };
|
||||
+static const unsigned int gpio0a_3516_pins[] = { 354, 395, 312, 334 };
|
||||
|
||||
/* The GPIO0B (5-7) pins overlap with ICE */
|
||||
static const unsigned int gpio0b_3516_pins[] = { 375, 396, 376 };
|
||||
@@ -1602,6 +1614,9 @@ static const unsigned int gpio0j_3516_pi
|
||||
/* The GPIO0K (30,31) pins overlap with NAND flash */
|
||||
static const unsigned int gpio0k_3516_pins[] = { 275, 298 };
|
||||
|
||||
+/* The GPIO0L (0) pins overlap with TVC_CLK */
|
||||
+static const unsigned int gpio0l_3516_pins[] = { 333 };
|
||||
+
|
||||
/* The GPIO1A (0-4) pins that overlap with IDE and parallel flash */
|
||||
static const unsigned int gpio1a_3516_pins[] = { 221, 200, 222, 201, 220 };
|
||||
|
||||
@@ -1761,7 +1776,13 @@ static const struct gemini_pin_group gem
|
||||
.num_pins = ARRAY_SIZE(tvc_3516_pins),
|
||||
/* Conflict with character LCD */
|
||||
.mask = LCD_PADS_ENABLE,
|
||||
- .value = TVC_PADS_ENABLE | TVC_CLK_PAD_ENABLE,
|
||||
+ .value = TVC_PADS_ENABLE,
|
||||
+ },
|
||||
+ {
|
||||
+ .name = "tvcclkgrp",
|
||||
+ .pins = tvc_clk_3516_pins,
|
||||
+ .num_pins = ARRAY_SIZE(tvc_clk_3516_pins),
|
||||
+ .value = TVC_CLK_PAD_ENABLE,
|
||||
},
|
||||
/*
|
||||
* The construction is done such that it is possible to use a serial
|
||||
@@ -1873,6 +1894,13 @@ static const struct gemini_pin_group gem
|
||||
.value = PFLASH_PADS_DISABLE | NAND_PADS_DISABLE,
|
||||
},
|
||||
{
|
||||
+ .name = "gpio0lgrp",
|
||||
+ .pins = gpio0l_3516_pins,
|
||||
+ .num_pins = ARRAY_SIZE(gpio0l_3516_pins),
|
||||
+ /* Conflict with TVE CLK */
|
||||
+ .mask = TVC_CLK_PAD_ENABLE,
|
||||
+ },
|
||||
+ {
|
||||
.name = "gpio1agrp",
|
||||
.pins = gpio1a_3516_pins,
|
||||
.num_pins = ARRAY_SIZE(gpio1a_3516_pins),
|
@ -16,32 +16,22 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
|
||||
--- a/drivers/mtd/maps/physmap_of_core.c
|
||||
+++ b/drivers/mtd/maps/physmap_of_core.c
|
||||
@@ -239,13 +239,6 @@ static int of_flash_probe(struct platfor
|
||||
@@ -231,6 +231,9 @@ static int of_flash_probe(struct platfor
|
||||
else if (of_property_read_bool(dp, "little-endian"))
|
||||
info->list[i].map.swap = CFI_LITTLE_ENDIAN;
|
||||
|
||||
- err = of_flash_probe_gemini(dev, dp, &info->list[i].map);
|
||||
- if (err)
|
||||
- goto err_out;
|
||||
- err = of_flash_probe_versatile(dev, dp, &info->list[i].map);
|
||||
- if (err)
|
||||
- goto err_out;
|
||||
-
|
||||
err = -ENOMEM;
|
||||
info->list[i].map.virt = ioremap(info->list[i].map.phys,
|
||||
info->list[i].map.size);
|
||||
@@ -257,6 +250,14 @@ static int of_flash_probe(struct platfor
|
||||
|
||||
simple_map_init(&info->list[i].map);
|
||||
|
||||
+ /* Variants can override map accessors */
|
||||
+ err = of_flash_probe_gemini(dev, dp, &info->list[i].map);
|
||||
+ if (err)
|
||||
+ goto err_out;
|
||||
+ err = of_flash_probe_versatile(dev, dp, &info->list[i].map);
|
||||
+ if (err)
|
||||
+ goto err_out;
|
||||
+ simple_map_init(&info->list[i].map);
|
||||
+
|
||||
+ /* Variants can override map accessors */
|
||||
err = of_flash_probe_gemini(dev, dp, &info->list[i].map);
|
||||
if (err)
|
||||
goto err_out;
|
||||
@@ -238,8 +241,6 @@ static int of_flash_probe(struct platfor
|
||||
if (err)
|
||||
goto err_out;
|
||||
|
||||
- simple_map_init(&info->list[i].map);
|
||||
-
|
||||
/*
|
||||
* On some platforms (e.g. MPC5200) a direct 1:1 mapping
|
||||
* may cause problems with JFFS2 usage, as the local bus (LPB)
|
||||
|
@ -361,7 +361,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||
|
||||
par->hook_mask = 1 << ops->hooknum;
|
||||
} else {
|
||||
@@ -318,7 +318,7 @@ static int nft_target_validate(const str
|
||||
@@ -337,7 +337,7 @@ static int nft_target_validate(const str
|
||||
if (nft_is_base_chain(ctx->chain)) {
|
||||
const struct nft_base_chain *basechain =
|
||||
nft_base_chain(ctx->chain);
|
||||
@ -370,7 +370,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||
|
||||
hook_mask = 1 << ops->hooknum;
|
||||
if (target->hooks && !(hook_mask & target->hooks))
|
||||
@@ -415,7 +415,7 @@ nft_match_set_mtchk_param(struct xt_mtch
|
||||
@@ -434,7 +434,7 @@ nft_match_set_mtchk_param(struct xt_mtch
|
||||
if (nft_is_base_chain(ctx->chain)) {
|
||||
const struct nft_base_chain *basechain =
|
||||
nft_base_chain(ctx->chain);
|
||||
@ -379,7 +379,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||
|
||||
par->hook_mask = 1 << ops->hooknum;
|
||||
} else {
|
||||
@@ -566,7 +566,7 @@ static int nft_match_validate(const stru
|
||||
@@ -586,7 +586,7 @@ static int nft_match_validate(const stru
|
||||
if (nft_is_base_chain(ctx->chain)) {
|
||||
const struct nft_base_chain *basechain =
|
||||
nft_base_chain(ctx->chain);
|
||||
|
@ -1237,7 +1237,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||
if (par.target->destroy != NULL)
|
||||
par.target->destroy(&par);
|
||||
|
||||
@@ -390,7 +390,7 @@ nft_match_set_mtchk_param(struct xt_mtch
|
||||
@@ -409,7 +409,7 @@ nft_match_set_mtchk_param(struct xt_mtch
|
||||
{
|
||||
par->net = ctx->net;
|
||||
par->table = ctx->table->name;
|
||||
@ -1246,7 +1246,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||
case AF_INET:
|
||||
entry->e4.ip.proto = proto;
|
||||
entry->e4.ip.invflags = inv ? IPT_INV_PROTO : 0;
|
||||
@@ -421,7 +421,7 @@ nft_match_set_mtchk_param(struct xt_mtch
|
||||
@@ -440,7 +440,7 @@ nft_match_set_mtchk_param(struct xt_mtch
|
||||
} else {
|
||||
par->hook_mask = 0;
|
||||
}
|
||||
@ -1255,7 +1255,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||
par->nft_compat = true;
|
||||
}
|
||||
|
||||
@@ -504,7 +504,7 @@ __nft_match_destroy(const struct nft_ctx
|
||||
@@ -523,7 +523,7 @@ __nft_match_destroy(const struct nft_ctx
|
||||
par.net = ctx->net;
|
||||
par.match = match;
|
||||
par.matchinfo = info;
|
||||
@ -1264,7 +1264,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||
if (par.match->destroy != NULL)
|
||||
par.match->destroy(&par);
|
||||
|
||||
@@ -734,7 +734,7 @@ nft_match_select_ops(const struct nft_ct
|
||||
@@ -754,7 +754,7 @@ nft_match_select_ops(const struct nft_ct
|
||||
|
||||
mt_name = nla_data(tb[NFTA_MATCH_NAME]);
|
||||
rev = ntohl(nla_get_be32(tb[NFTA_MATCH_REV]));
|
||||
@ -1273,7 +1273,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||
|
||||
/* Re-use the existing match if it's already loaded. */
|
||||
list_for_each_entry(nft_match, &nft_match_list, head) {
|
||||
@@ -825,7 +825,7 @@ nft_target_select_ops(const struct nft_c
|
||||
@@ -845,7 +845,7 @@ nft_target_select_ops(const struct nft_c
|
||||
|
||||
tg_name = nla_data(tb[NFTA_TARGET_NAME]);
|
||||
rev = ntohl(nla_get_be32(tb[NFTA_TARGET_REV]));
|
||||
|
@ -17,7 +17,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
|
||||
--- a/drivers/usb/dwc2/params.c
|
||||
+++ b/drivers/usb/dwc2/params.c
|
||||
@@ -272,6 +272,23 @@ static void dwc2_set_param_power_down(st
|
||||
@@ -273,6 +273,23 @@ static void dwc2_set_param_power_down(st
|
||||
hsotg->params.power_down = val;
|
||||
}
|
||||
|
||||
@ -41,7 +41,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
/**
|
||||
* dwc2_set_default_params() - Set all core parameters to their
|
||||
* auto-detected default values.
|
||||
@@ -290,6 +307,7 @@ static void dwc2_set_default_params(stru
|
||||
@@ -291,6 +308,7 @@ static void dwc2_set_default_params(stru
|
||||
dwc2_set_param_speed(hsotg);
|
||||
dwc2_set_param_phy_utmi_width(hsotg);
|
||||
dwc2_set_param_power_down(hsotg);
|
||||
@ -49,7 +49,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
p->phy_ulpi_ddr = false;
|
||||
p->phy_ulpi_ext_vbus = false;
|
||||
|
||||
@@ -302,11 +320,6 @@ static void dwc2_set_default_params(stru
|
||||
@@ -303,11 +321,6 @@ static void dwc2_set_default_params(stru
|
||||
p->reload_ctl = (hw->snpsid >= DWC2_CORE_REV_2_92a);
|
||||
p->uframe_sched = true;
|
||||
p->external_id_pin_ctl = false;
|
||||
|
@ -1150,7 +1150,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
return work_done;
|
||||
--- a/drivers/net/ethernet/ti/cpsw.c
|
||||
+++ b/drivers/net/ethernet/ti/cpsw.c
|
||||
@@ -843,7 +843,7 @@ static int cpsw_rx_poll(struct napi_stru
|
||||
@@ -844,7 +844,7 @@ static int cpsw_rx_poll(struct napi_stru
|
||||
}
|
||||
|
||||
if (num_rx < budget) {
|
||||
@ -1227,7 +1227,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
}
|
||||
--- a/drivers/net/ethernet/toshiba/tc35815.c
|
||||
+++ b/drivers/net/ethernet/toshiba/tc35815.c
|
||||
@@ -1639,7 +1639,7 @@ static int tc35815_poll(struct napi_stru
|
||||
@@ -1641,7 +1641,7 @@ static int tc35815_poll(struct napi_stru
|
||||
spin_unlock(&lp->rx_lock);
|
||||
|
||||
if (received < budget) {
|
||||
@ -1346,7 +1346,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath10k/pci.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/pci.c
|
||||
@@ -2804,7 +2804,7 @@ static int ath10k_pci_napi_poll(struct n
|
||||
@@ -2803,7 +2803,7 @@ static int ath10k_pci_napi_poll(struct n
|
||||
done = ath10k_htt_txrx_compl_task(ar, budget);
|
||||
|
||||
if (done < budget) {
|
||||
|
@ -1,246 +0,0 @@
|
||||
/*
|
||||
* Initialize Owl Emulation Devices
|
||||
*
|
||||
* Copyright (C) 2016 Christian Lamparter <chunkeey@googlemail.com>
|
||||
* Copyright (C) 2016 Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 as published
|
||||
* by the Free Software Foundation.
|
||||
*
|
||||
* Some devices (like the Cisco Meraki Z1 Cloud Managed Teleworker Gateway)
|
||||
* need to be able to initialize the PCIe wifi device. Normally, this is done
|
||||
* during the early stages of booting linux, because the necessary init code
|
||||
* is read from the memory mapped SPI and passed to pci_enable_ath9k_fixup.
|
||||
* However,this isn't possible for devices which have the init code for the
|
||||
* Atheros chip stored on NAND. Hence, this module can be used to initialze
|
||||
* the chip when the user-space is ready to extract the init code.
|
||||
*/
|
||||
#include <linux/module.h>
|
||||
#include <linux/version.h>
|
||||
#include <linux/completion.h>
|
||||
#include <linux/etherdevice.h>
|
||||
#include <linux/firmware.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/ath9k_platform.h>
|
||||
|
||||
struct owl_ctx {
|
||||
struct completion eeprom_load;
|
||||
};
|
||||
|
||||
#define EEPROM_FILENAME_LEN 100
|
||||
|
||||
#define AR5416_EEPROM_MAGIC 0xa55a
|
||||
|
||||
static int ath9k_pci_fixup(struct pci_dev *pdev, const u16 *cal_data,
|
||||
size_t cal_len)
|
||||
{
|
||||
void __iomem *mem;
|
||||
const void *cal_end = (void *)cal_data + cal_len;
|
||||
const struct {
|
||||
u16 reg;
|
||||
u16 low_val;
|
||||
u16 high_val;
|
||||
} __packed *data;
|
||||
u16 cmd;
|
||||
u32 bar0;
|
||||
bool swap_needed = false;
|
||||
|
||||
if (*cal_data != AR5416_EEPROM_MAGIC) {
|
||||
if (*cal_data != swab16(AR5416_EEPROM_MAGIC)) {
|
||||
dev_err(&pdev->dev, "invalid calibration data\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
dev_dbg(&pdev->dev, "calibration data needs swapping\n");
|
||||
swap_needed = true;
|
||||
}
|
||||
|
||||
dev_info(&pdev->dev, "fixup device configuration\n");
|
||||
|
||||
mem = pcim_iomap(pdev, 0, 0);
|
||||
if (!mem) {
|
||||
dev_err(&pdev->dev, "ioremap error\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
pci_read_config_dword(pdev, PCI_BASE_ADDRESS_0, &bar0);
|
||||
pci_write_config_dword(pdev, PCI_BASE_ADDRESS_0,
|
||||
pci_resource_start(pdev, 0));
|
||||
pci_read_config_word(pdev, PCI_COMMAND, &cmd);
|
||||
cmd |= PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY;
|
||||
pci_write_config_word(pdev, PCI_COMMAND, cmd);
|
||||
|
||||
/* set pointer to first reg address */
|
||||
for (data = (const void *) (cal_data + 3);
|
||||
(const void *) data <= cal_end && data->reg != (u16)~0;
|
||||
data++) {
|
||||
u32 val;
|
||||
u16 reg;
|
||||
|
||||
reg = data->reg;
|
||||
val = data->low_val;
|
||||
val |= ((u32)data->high_val) << 16;
|
||||
|
||||
if (swap_needed) {
|
||||
reg = swab16(reg);
|
||||
val = swahb32(val);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_LANTIQ
|
||||
val = swab32(val);
|
||||
#endif
|
||||
|
||||
__raw_writel(val, mem + reg);
|
||||
udelay(100);
|
||||
}
|
||||
|
||||
pci_read_config_word(pdev, PCI_COMMAND, &cmd);
|
||||
cmd &= ~(PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY);
|
||||
pci_write_config_word(pdev, PCI_COMMAND, cmd);
|
||||
|
||||
pci_write_config_dword(pdev, PCI_BASE_ADDRESS_0, bar0);
|
||||
pcim_iounmap(pdev, mem);
|
||||
|
||||
pci_disable_device(pdev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void owl_fw_cb(const struct firmware *fw, void *context)
|
||||
{
|
||||
struct pci_dev *pdev = (struct pci_dev *) context;
|
||||
struct owl_ctx *ctx = (struct owl_ctx *) pci_get_drvdata(pdev);
|
||||
struct ath9k_platform_data *pdata = dev_get_platdata(&pdev->dev);
|
||||
struct pci_bus *bus;
|
||||
|
||||
complete(&ctx->eeprom_load);
|
||||
|
||||
if (!fw) {
|
||||
dev_err(&pdev->dev, "no eeprom data received.\n");
|
||||
goto release;
|
||||
}
|
||||
|
||||
/* also note that we are doing *u16 operations on the file */
|
||||
if (fw->size > sizeof(pdata->eeprom_data) || fw->size < 0x200 ||
|
||||
(fw->size & 1) == 1) {
|
||||
dev_err(&pdev->dev, "eeprom file has an invalid size.\n");
|
||||
goto release;
|
||||
}
|
||||
|
||||
if (pdata) {
|
||||
memcpy(pdata->eeprom_data, fw->data, fw->size);
|
||||
|
||||
/*
|
||||
* eeprom has been successfully loaded - pass the data to ath9k
|
||||
* but remove the eeprom_name, so it doesn't try to load it too.
|
||||
*/
|
||||
pdata->eeprom_name = NULL;
|
||||
}
|
||||
|
||||
if (ath9k_pci_fixup(pdev, (const u16 *) fw->data, fw->size))
|
||||
goto release;
|
||||
|
||||
pci_lock_rescan_remove();
|
||||
bus = pdev->bus;
|
||||
pci_stop_and_remove_bus_device(pdev);
|
||||
/*
|
||||
* the device should come back with the proper
|
||||
* ProductId. But we have to initiate a rescan.
|
||||
*/
|
||||
pci_rescan_bus(bus);
|
||||
pci_unlock_rescan_remove();
|
||||
|
||||
release:
|
||||
release_firmware(fw);
|
||||
}
|
||||
|
||||
static const char *owl_get_eeprom_name(struct pci_dev *pdev)
|
||||
{
|
||||
struct device *dev = &pdev->dev;
|
||||
struct ath9k_platform_data *pdata;
|
||||
char *eeprom_name;
|
||||
|
||||
/* try the existing platform data first */
|
||||
pdata = dev_get_platdata(dev);
|
||||
if (pdata && pdata->eeprom_name)
|
||||
return pdata->eeprom_name;
|
||||
|
||||
dev_dbg(dev, "using auto-generated eeprom filename\n");
|
||||
|
||||
eeprom_name = devm_kzalloc(dev, EEPROM_FILENAME_LEN, GFP_KERNEL);
|
||||
if (!eeprom_name)
|
||||
return NULL;
|
||||
|
||||
/* this should match the pattern used in ath9k/init.c */
|
||||
scnprintf(eeprom_name, EEPROM_FILENAME_LEN, "ath9k-eeprom-pci-%s.bin",
|
||||
dev_name(dev));
|
||||
|
||||
return eeprom_name;
|
||||
}
|
||||
|
||||
static int owl_probe(struct pci_dev *pdev,
|
||||
const struct pci_device_id *id)
|
||||
{
|
||||
struct owl_ctx *ctx;
|
||||
const char *eeprom_name;
|
||||
int err = 0;
|
||||
|
||||
if (pcim_enable_device(pdev))
|
||||
return -EIO;
|
||||
|
||||
pcim_pin_device(pdev);
|
||||
|
||||
eeprom_name = owl_get_eeprom_name(pdev);
|
||||
if (!eeprom_name) {
|
||||
dev_err(&pdev->dev, "no eeprom filename found.\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
ctx = kzalloc(sizeof(*ctx), GFP_KERNEL);
|
||||
if (!ctx) {
|
||||
dev_err(&pdev->dev, "failed to alloc device context.\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
init_completion(&ctx->eeprom_load);
|
||||
|
||||
pci_set_drvdata(pdev, ctx);
|
||||
err = request_firmware_nowait(THIS_MODULE, true, eeprom_name,
|
||||
&pdev->dev, GFP_KERNEL, pdev, owl_fw_cb);
|
||||
if (err) {
|
||||
dev_err(&pdev->dev, "failed to request caldata (%d).\n", err);
|
||||
kfree(ctx);
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
static void owl_remove(struct pci_dev *pdev)
|
||||
{
|
||||
struct owl_ctx *ctx = pci_get_drvdata(pdev);
|
||||
|
||||
if (ctx) {
|
||||
wait_for_completion(&ctx->eeprom_load);
|
||||
pci_set_drvdata(pdev, NULL);
|
||||
kfree(ctx);
|
||||
}
|
||||
}
|
||||
|
||||
static const struct pci_device_id owl_pci_table[] = {
|
||||
{ PCI_VDEVICE(ATHEROS, 0xff1c) }, /* PCIe */
|
||||
{ PCI_VDEVICE(ATHEROS, 0xff1d) }, /* PCI */
|
||||
{ },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(pci, owl_pci_table);
|
||||
|
||||
static struct pci_driver owl_driver = {
|
||||
.name = "owl-loader",
|
||||
.id_table = owl_pci_table,
|
||||
.probe = owl_probe,
|
||||
.remove = owl_remove,
|
||||
};
|
||||
module_pci_driver(owl_driver);
|
||||
MODULE_AUTHOR("Christian Lamparter <chunkeey@googlemail.com>");
|
||||
MODULE_DESCRIPTION("Initializes Atheros' Owl Emulation devices");
|
||||
MODULE_LICENSE("GPL v2");
|
@ -1,52 +0,0 @@
|
||||
From dd36f935973d91644449bd9749f6062a2bed821b Mon Sep 17 00:00:00 2001
|
||||
From: Christian Lamparter <chunkeey@googlemail.com>
|
||||
Date: Fri, 7 Jul 2017 17:26:46 +0200
|
||||
Subject: misc: owl-loader for delayed Atheros ath9k fixup
|
||||
|
||||
Some devices (like the Cisco Meraki Z1 Cloud Managed Teleworker Gateway)
|
||||
need to be able to initialize the PCIe wifi device. Normally, this is done
|
||||
during the early stages of booting linux, because the necessary init code
|
||||
is read from the memory mapped SPI and passed to pci_enable_ath9k_fixup.
|
||||
However,this isn't possible for devices which have the init code for the
|
||||
Atheros chip stored on NAND in an UBI volume. Hence, this module can be
|
||||
used to initialze the chip when the user-space is ready to extract the
|
||||
init code.
|
||||
|
||||
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
|
||||
---
|
||||
drivers/misc/Kconfig | 12 ++++++++++++
|
||||
drivers/misc/Makefile | 1 +
|
||||
2 files changed, 13 insertions(+)
|
||||
|
||||
--- a/drivers/misc/Kconfig
|
||||
+++ b/drivers/misc/Kconfig
|
||||
@@ -151,6 +151,18 @@ config SGI_IOC4
|
||||
If you have an SGI Altix with an IOC4-based card say Y.
|
||||
Otherwise say N.
|
||||
|
||||
+config OWL_LOADER
|
||||
+ tristate "Owl loader for initializing Atheros PCI(e) Wifi chips"
|
||||
+ depends on PCI
|
||||
+ ---help---
|
||||
+ This kernel module helps to initialize certain Qualcomm
|
||||
+ Atheros' PCI(e) Wifi chips, which have the init data
|
||||
+ (which contains the PCI device ID for example) stored
|
||||
+ together with the calibration data in the file system.
|
||||
+
|
||||
+ This is necessary for devices like the Cisco Meraki Z1, say M.
|
||||
+ Otherwise say N.
|
||||
+
|
||||
config TIFM_CORE
|
||||
tristate "TI Flash Media interface support"
|
||||
depends on PCI
|
||||
--- a/drivers/misc/Makefile
|
||||
+++ b/drivers/misc/Makefile
|
||||
@@ -13,6 +13,7 @@ obj-$(CONFIG_ATMEL_TCLIB) += atmel_tclib
|
||||
obj-$(CONFIG_DUMMY_IRQ) += dummy-irq.o
|
||||
obj-$(CONFIG_ICS932S401) += ics932s401.o
|
||||
obj-$(CONFIG_LKDTM) += lkdtm.o
|
||||
+obj-$(CONFIG_OWL_LOADER) += owl-loader.o
|
||||
obj-$(CONFIG_TIFM_CORE) += tifm_core.o
|
||||
obj-$(CONFIG_TIFM_7XX1) += tifm_7xx1.o
|
||||
obj-$(CONFIG_PHANTOM) += phantom.o
|
@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
EXPORT_SYMBOL(default_qdisc_ops);
|
||||
|
||||
/* Main transmission queue. */
|
||||
@@ -1013,7 +1013,7 @@ static void attach_one_default_qdisc(str
|
||||
@@ -1025,7 +1025,7 @@ static void attach_one_default_qdisc(str
|
||||
void *_unused)
|
||||
{
|
||||
struct Qdisc *qdisc;
|
||||
|
@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/net/sched/sch_generic.c
|
||||
+++ b/net/sched/sch_generic.c
|
||||
@@ -600,207 +600,6 @@ struct Qdisc_ops noqueue_qdisc_ops __rea
|
||||
@@ -612,207 +612,6 @@ struct Qdisc_ops noqueue_qdisc_ops __rea
|
||||
.owner = THIS_MODULE,
|
||||
};
|
||||
|
||||
|
@ -1,52 +0,0 @@
|
||||
From dd36f935973d91644449bd9749f6062a2bed821b Mon Sep 17 00:00:00 2001
|
||||
From: Christian Lamparter <chunkeey@googlemail.com>
|
||||
Date: Fri, 7 Jul 2017 17:26:46 +0200
|
||||
Subject: misc: owl-loader for delayed Atheros ath9k fixup
|
||||
|
||||
Some devices (like the Cisco Meraki Z1 Cloud Managed Teleworker Gateway)
|
||||
need to be able to initialize the PCIe wifi device. Normally, this is done
|
||||
during the early stages of booting linux, because the necessary init code
|
||||
is read from the memory mapped SPI and passed to pci_enable_ath9k_fixup.
|
||||
However,this isn't possible for devices which have the init code for the
|
||||
Atheros chip stored on NAND in an UBI volume. Hence, this module can be
|
||||
used to initialze the chip when the user-space is ready to extract the
|
||||
init code.
|
||||
|
||||
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
|
||||
---
|
||||
drivers/misc/Kconfig | 12 ++++++++++++
|
||||
drivers/misc/Makefile | 1 +
|
||||
2 files changed, 13 insertions(+)
|
||||
|
||||
--- a/drivers/misc/Kconfig
|
||||
+++ b/drivers/misc/Kconfig
|
||||
@@ -164,6 +164,18 @@ config SGI_IOC4
|
||||
If you have an SGI Altix with an IOC4-based card say Y.
|
||||
Otherwise say N.
|
||||
|
||||
+config OWL_LOADER
|
||||
+ tristate "Owl loader for initializing Atheros PCI(e) Wifi chips"
|
||||
+ depends on PCI
|
||||
+ ---help---
|
||||
+ This kernel module helps to initialize certain Qualcomm
|
||||
+ Atheros' PCI(e) Wifi chips, which have the init data
|
||||
+ (which contains the PCI device ID for example) stored
|
||||
+ together with the calibration data in the file system.
|
||||
+
|
||||
+ This is necessary for devices like the Cisco Meraki Z1, say M.
|
||||
+ Otherwise say N.
|
||||
+
|
||||
config TIFM_CORE
|
||||
tristate "TI Flash Media interface support"
|
||||
depends on PCI
|
||||
--- a/drivers/misc/Makefile
|
||||
+++ b/drivers/misc/Makefile
|
||||
@@ -14,6 +14,7 @@ obj-$(CONFIG_ATMEL_TCLIB) += atmel_tclib
|
||||
obj-$(CONFIG_DUMMY_IRQ) += dummy-irq.o
|
||||
obj-$(CONFIG_ICS932S401) += ics932s401.o
|
||||
obj-$(CONFIG_LKDTM) += lkdtm/
|
||||
+obj-$(CONFIG_OWL_LOADER) += owl-loader.o
|
||||
obj-$(CONFIG_TIFM_CORE) += tifm_core.o
|
||||
obj-$(CONFIG_TIFM_7XX1) += tifm_7xx1.o
|
||||
obj-$(CONFIG_PHANTOM) += phantom.o
|
@ -1,52 +0,0 @@
|
||||
From dd36f935973d91644449bd9749f6062a2bed821b Mon Sep 17 00:00:00 2001
|
||||
From: Christian Lamparter <chunkeey@googlemail.com>
|
||||
Date: Fri, 7 Jul 2017 17:26:46 +0200
|
||||
Subject: misc: owl-loader for delayed Atheros ath9k fixup
|
||||
|
||||
Some devices (like the Cisco Meraki Z1 Cloud Managed Teleworker Gateway)
|
||||
need to be able to initialize the PCIe wifi device. Normally, this is done
|
||||
during the early stages of booting linux, because the necessary init code
|
||||
is read from the memory mapped SPI and passed to pci_enable_ath9k_fixup.
|
||||
However,this isn't possible for devices which have the init code for the
|
||||
Atheros chip stored on NAND in an UBI volume. Hence, this module can be
|
||||
used to initialze the chip when the user-space is ready to extract the
|
||||
init code.
|
||||
|
||||
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
|
||||
---
|
||||
drivers/misc/Kconfig | 12 ++++++++++++
|
||||
drivers/misc/Makefile | 1 +
|
||||
2 files changed, 13 insertions(+)
|
||||
|
||||
--- a/drivers/misc/Kconfig
|
||||
+++ b/drivers/misc/Kconfig
|
||||
@@ -151,6 +151,18 @@ config SGI_IOC4
|
||||
If you have an SGI Altix with an IOC4-based card say Y.
|
||||
Otherwise say N.
|
||||
|
||||
+config OWL_LOADER
|
||||
+ tristate "Owl loader for initializing Atheros PCI(e) Wifi chips"
|
||||
+ depends on PCI
|
||||
+ ---help---
|
||||
+ This kernel module helps to initialize certain Qualcomm
|
||||
+ Atheros' PCI(e) Wifi chips, which have the init data
|
||||
+ (which contains the PCI device ID for example) stored
|
||||
+ together with the calibration data in the file system.
|
||||
+
|
||||
+ This is necessary for devices like the Cisco Meraki Z1, say M.
|
||||
+ Otherwise say N.
|
||||
+
|
||||
config TIFM_CORE
|
||||
tristate "TI Flash Media interface support"
|
||||
depends on PCI
|
||||
--- a/drivers/misc/Makefile
|
||||
+++ b/drivers/misc/Makefile
|
||||
@@ -12,6 +12,7 @@ obj-$(CONFIG_ATMEL_TCLIB) += atmel_tclib
|
||||
obj-$(CONFIG_DUMMY_IRQ) += dummy-irq.o
|
||||
obj-$(CONFIG_ICS932S401) += ics932s401.o
|
||||
obj-$(CONFIG_LKDTM) += lkdtm.o
|
||||
+obj-$(CONFIG_OWL_LOADER) += owl-loader.o
|
||||
obj-$(CONFIG_TIFM_CORE) += tifm_core.o
|
||||
obj-$(CONFIG_TIFM_7XX1) += tifm_7xx1.o
|
||||
obj-$(CONFIG_PHANTOM) += phantom.o
|
@ -46,7 +46,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
errors per {size} bytes".
|
||||
--- a/drivers/mtd/maps/physmap_of_core.c
|
||||
+++ b/drivers/mtd/maps/physmap_of_core.c
|
||||
@@ -114,37 +114,9 @@ static struct mtd_info *obsolete_probe(s
|
||||
@@ -105,37 +105,9 @@ static struct mtd_info *obsolete_probe(s
|
||||
static const char * const part_probe_types_def[] = {
|
||||
"cmdlinepart", "RedBoot", "ofpart", "ofoldpart", NULL };
|
||||
|
||||
@ -84,7 +84,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
const struct of_device_id *match;
|
||||
struct device_node *dp = dev->dev.of_node;
|
||||
struct resource res;
|
||||
@@ -310,14 +282,8 @@ static int of_flash_probe(struct platfor
|
||||
@@ -293,14 +265,8 @@ static int of_flash_probe(struct platfor
|
||||
|
||||
info->cmtd->dev.parent = &dev->dev;
|
||||
mtd_set_of_node(info->cmtd, dp);
|
||||
|
@ -122,7 +122,7 @@
|
||||
{
|
||||
int set;
|
||||
|
||||
@@ -982,7 +982,7 @@ void radix__tlb_flush(struct mmu_gather
|
||||
@@ -983,7 +983,7 @@ void radix__tlb_flush(struct mmu_gather
|
||||
tlb->need_flush_all = 0;
|
||||
}
|
||||
|
||||
|
@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
__u16 tc_index; /* traffic control index */
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -5468,6 +5468,9 @@ static enum gro_result dev_gro_receive(s
|
||||
@@ -5482,6 +5482,9 @@ static enum gro_result dev_gro_receive(s
|
||||
int same_flow;
|
||||
int grow;
|
||||
|
||||
@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (netif_elide_gro(skb->dev))
|
||||
goto normal;
|
||||
|
||||
@@ -6962,6 +6965,48 @@ static void __netdev_adjacent_dev_unlink
|
||||
@@ -6976,6 +6979,48 @@ static void __netdev_adjacent_dev_unlink
|
||||
&upper_dev->adj_list.lower);
|
||||
}
|
||||
|
||||
@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
static int __netdev_upper_dev_link(struct net_device *dev,
|
||||
struct net_device *upper_dev, bool master,
|
||||
void *upper_priv, void *upper_info,
|
||||
@@ -7009,6 +7054,7 @@ static int __netdev_upper_dev_link(struc
|
||||
@@ -7023,6 +7068,7 @@ static int __netdev_upper_dev_link(struc
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -99,7 +99,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
|
||||
&changeupper_info.info);
|
||||
ret = notifier_to_errno(ret);
|
||||
@@ -7095,6 +7141,7 @@ void netdev_upper_dev_unlink(struct net_
|
||||
@@ -7109,6 +7155,7 @@ void netdev_upper_dev_unlink(struct net_
|
||||
|
||||
__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev);
|
||||
|
||||
@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
|
||||
&changeupper_info.info);
|
||||
}
|
||||
@@ -7718,6 +7765,7 @@ int dev_set_mac_address(struct net_devic
|
||||
@@ -7732,6 +7779,7 @@ int dev_set_mac_address(struct net_devic
|
||||
if (err)
|
||||
return err;
|
||||
dev->addr_assign_type = NET_ADDR_SET;
|
||||
|
@ -40,7 +40,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
errors per {size} bytes".
|
||||
--- a/drivers/mtd/maps/physmap_of.c
|
||||
+++ b/drivers/mtd/maps/physmap_of.c
|
||||
@@ -113,47 +113,9 @@ static struct mtd_info *obsolete_probe(s
|
||||
@@ -104,47 +104,9 @@ static struct mtd_info *obsolete_probe(s
|
||||
static const char * const part_probe_types_def[] = {
|
||||
"cmdlinepart", "RedBoot", "ofpart", "ofoldpart", NULL };
|
||||
|
||||
@ -88,7 +88,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
const struct of_device_id *match;
|
||||
struct device_node *dp = dev->dev.of_node;
|
||||
struct resource res;
|
||||
@@ -317,14 +279,8 @@ static int of_flash_probe(struct platfor
|
||||
@@ -300,14 +262,8 @@ static int of_flash_probe(struct platfor
|
||||
|
||||
info->cmtd->dev.parent = &dev->dev;
|
||||
mtd_set_of_node(info->cmtd, dp);
|
||||
|
@ -18,6 +18,7 @@ ipq40xx_setup_interfaces()
|
||||
ucidef_set_interfaces_lan_wan "eth0" "eth1"
|
||||
;;
|
||||
asus,map-ac2200|\
|
||||
cilab,meshpoint-one|\
|
||||
openmesh,a42|\
|
||||
openmesh,a62)
|
||||
ucidef_set_interfaces_lan_wan "eth1" "eth0"
|
||||
@ -84,6 +85,9 @@ ipq40xx_setup_macs()
|
||||
wan_mac=$(mtd_get_mac_binary_ubi Factory 0x5006)
|
||||
lan_mac=$(mtd_get_mac_binary_ubi Factory 0x1006)
|
||||
;;
|
||||
cilab,meshpoint-one)
|
||||
label_mac=$(mtd_get_mac_binary "ART" 0x1006)
|
||||
;;
|
||||
engenius,ens620ext)
|
||||
wan_mac=$(mtd_get_mac_ascii u-boot-env ethaddr)
|
||||
lan_mac=$(macaddr_add "$wan_mac" 1)
|
||||
@ -96,6 +100,7 @@ ipq40xx_setup_macs()
|
||||
|
||||
[ -n "$lan_mac" ] && ucidef_set_interface_macaddr "lan" $lan_mac
|
||||
[ -n "$wan_mac" ] && ucidef_set_interface_macaddr "wan" $wan_mac
|
||||
[ -n "$label_mac" ] && ucidef_set_label_macaddr $label_mac
|
||||
}
|
||||
|
||||
board_config_update
|
||||
|
@ -7,6 +7,9 @@ board_config_update
|
||||
board=$(board_name)
|
||||
|
||||
case "$board" in
|
||||
cilab,meshpoint-one)
|
||||
ucidef_add_gpio_switch "poe_passtrough" "POE passtrough enable" "413" "1"
|
||||
;;
|
||||
compex,wpj428)
|
||||
ucidef_add_gpio_switch "sim_card_select" "SIM card select" "3" "0"
|
||||
;;
|
||||
|
@ -45,6 +45,7 @@ case "$FIRMWARE" in
|
||||
case "$board" in
|
||||
8dev,jalapeno |\
|
||||
alfa-network,ap120c-ac |\
|
||||
cilab,meshpoint-one |\
|
||||
glinet,gl-b1300 |\
|
||||
linksys,ea6350v3 |\
|
||||
qcom,ap-dk01.1-c1)
|
||||
@ -109,6 +110,7 @@ case "$FIRMWARE" in
|
||||
case "$board" in
|
||||
8dev,jalapeno |\
|
||||
alfa-network,ap120c-ac |\
|
||||
cilab,meshpoint-one |\
|
||||
glinet,gl-b1300 |\
|
||||
linksys,ea6350v3 |\
|
||||
qcom,ap-dk01.1-c1)
|
||||
|
@ -50,6 +50,7 @@ platform_do_upgrade() {
|
||||
avm,fritzbox-7530 |\
|
||||
avm,fritzrepeater-1200 |\
|
||||
avm,fritzrepeater-3000 |\
|
||||
cilab,meshpoint-one |\
|
||||
qxwlan,e2600ac-c2)
|
||||
nand_do_upgrade "$1"
|
||||
;;
|
||||
|
@ -1,266 +1,9 @@
|
||||
/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2018, Robert Marko <robimarko@gmail.com>
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
*/
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
// Copyright (c) 2018, Robert Marko <robimarko@gmail.com>
|
||||
|
||||
#include "qcom-ipq4019.dtsi"
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/soc/qcom,tcsr.h>
|
||||
#include "qcom-ipq4018-jalapeno.dtsi"
|
||||
|
||||
/ {
|
||||
model = "8devices Jalapeno";
|
||||
compatible = "8dev,jalapeno";
|
||||
|
||||
soc {
|
||||
rng@22000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
mdio@90000 {
|
||||
status = "okay";
|
||||
pinctrl-0 = <&mdio_pins>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
ess-psgmii@98000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
counter@4a1000 {
|
||||
compatible = "qcom,qca-gcnt";
|
||||
reg = <0x4a1000 0x4>;
|
||||
};
|
||||
|
||||
tcsr@1949000 {
|
||||
compatible = "qcom,tcsr";
|
||||
reg = <0x1949000 0x100>;
|
||||
qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>;
|
||||
};
|
||||
|
||||
tcsr@194b000 {
|
||||
/* select hostmode */
|
||||
compatible = "qcom,tcsr";
|
||||
reg = <0x194b000 0x100>;
|
||||
qcom,usb-hsphy-mode-select = <TCSR_USB_HSPHY_HOST_MODE>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
ess_tcsr@1953000 {
|
||||
compatible = "qcom,tcsr";
|
||||
reg = <0x1953000 0x1000>;
|
||||
qcom,ess-interface-select = <TCSR_ESS_PSGMII>;
|
||||
};
|
||||
|
||||
tcsr@1957000 {
|
||||
compatible = "qcom,tcsr";
|
||||
reg = <0x1957000 0x100>;
|
||||
qcom,wifi_noc_memtype_m0_m2 = <TCSR_WIFI_NOC_MEMTYPE_M0_M2>;
|
||||
};
|
||||
|
||||
usb2: usb2@60f8800 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
usb3: usb3@8af8800 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
crypto@8e3a000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
watchdog@b017000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
ess-switch@c000000 {
|
||||
status = "okay";
|
||||
switch_lan_bmp = <0x10>; /* lan port bitmap */
|
||||
};
|
||||
|
||||
edma@c080000 {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&tlmm {
|
||||
mdio_pins: mdio_pinmux {
|
||||
pinmux_1 {
|
||||
pins = "gpio53";
|
||||
function = "mdio";
|
||||
};
|
||||
pinmux_2 {
|
||||
pins = "gpio52";
|
||||
function = "mdc";
|
||||
};
|
||||
pinconf {
|
||||
pins = "gpio52", "gpio53";
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
|
||||
serial_pins: serial_pinmux {
|
||||
mux {
|
||||
pins = "gpio60", "gpio61";
|
||||
function = "blsp_uart0";
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
spi_0_pins: spi_0_pinmux {
|
||||
pin {
|
||||
function = "blsp_spi0";
|
||||
pins = "gpio55", "gpio56", "gpio57";
|
||||
drive-strength = <2>;
|
||||
bias-disable;
|
||||
};
|
||||
pin_cs {
|
||||
function = "gpio";
|
||||
pins = "gpio54", "gpio59";
|
||||
drive-strength = <2>;
|
||||
bias-disable;
|
||||
output-high;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&blsp_dma {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&blsp1_spi1 {
|
||||
pinctrl-0 = <&spi_0_pins>;
|
||||
pinctrl-names = "default";
|
||||
cs-gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>, <&tlmm 59 GPIO_ACTIVE_HIGH>;
|
||||
status = "okay";
|
||||
|
||||
m25p80@0 {
|
||||
reg = <0>;
|
||||
compatible = "jedec,spi-nor";
|
||||
spi-max-frequency = <24000000>;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition0@0 {
|
||||
label = "SBL1";
|
||||
reg = <0x00000000 0x00040000>;
|
||||
read-only;
|
||||
};
|
||||
partition1@40000 {
|
||||
label = "MIBIB";
|
||||
reg = <0x00040000 0x00020000>;
|
||||
read-only;
|
||||
};
|
||||
partition2@60000 {
|
||||
label = "QSEE";
|
||||
reg = <0x00060000 0x00060000>;
|
||||
read-only;
|
||||
};
|
||||
partition3@c0000 {
|
||||
label = "CDT";
|
||||
reg = <0x000c0000 0x00010000>;
|
||||
read-only;
|
||||
};
|
||||
partition4@d0000 {
|
||||
label = "DDRPARAMS";
|
||||
reg = <0x000d0000 0x00010000>;
|
||||
read-only;
|
||||
};
|
||||
partition5@e0000 {
|
||||
label = "APPSBLENV"; /* uboot env*/
|
||||
reg = <0x000e0000 0x00010000>;
|
||||
read-only;
|
||||
};
|
||||
partition5@f0000 {
|
||||
label = "APPSBL"; /* uboot */
|
||||
reg = <0x000f0000 0x00080000>;
|
||||
read-only;
|
||||
};
|
||||
partition5@170000 {
|
||||
label = "ART";
|
||||
reg = <0x00170000 0x00010000>;
|
||||
read-only;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
spi-nand@1 {
|
||||
status = "okay";
|
||||
compatible = "spi-nand";
|
||||
reg = <1>;
|
||||
spi-max-frequency = <24000000>;
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition0@0 {
|
||||
label = "ubi";
|
||||
reg = <0x00000000 0x08000000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&blsp1_uart1 {
|
||||
pinctrl-0 = <&serial_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&cryptobam {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gmac0 {
|
||||
qcom,poll_required = <1>;
|
||||
qcom,poll_required_dynamic = <1>;
|
||||
qcom,phy_mdio_addr = <3>;
|
||||
vlan_tag = <1 0x10>;
|
||||
};
|
||||
|
||||
&gmac1 {
|
||||
qcom,poll_required = <1>;
|
||||
qcom,poll_required_dynamic = <1>;
|
||||
qcom,phy_mdio_addr = <4>;
|
||||
vlan_tag = <2 0x20>;
|
||||
};
|
||||
|
||||
&wifi0 {
|
||||
status = "okay";
|
||||
qcom,ath10k-calibration-variant = "8devices-Jalapeno";
|
||||
};
|
||||
|
||||
&wifi1 {
|
||||
status = "okay";
|
||||
qcom,ath10k-calibration-variant = "8devices-Jalapeno";
|
||||
};
|
||||
|
||||
&usb3_ss_phy {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb3_hs_phy {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2_hs_phy {
|
||||
status = "okay";
|
||||
};
|
||||
|
@ -0,0 +1,269 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
// Copyright (c) 2018, Robert Marko <robimarko@gmail.com>
|
||||
|
||||
#include "qcom-ipq4019.dtsi"
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/soc/qcom,tcsr.h>
|
||||
|
||||
/ {
|
||||
soc {
|
||||
rng@22000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
mdio@90000 {
|
||||
status = "okay";
|
||||
|
||||
pinctrl-0 = <&mdio_pins>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
ess-psgmii@98000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
counter@4a1000 {
|
||||
compatible = "qcom,qca-gcnt";
|
||||
reg = <0x4a1000 0x4>;
|
||||
};
|
||||
|
||||
tcsr@1949000 {
|
||||
compatible = "qcom,tcsr";
|
||||
reg = <0x1949000 0x100>;
|
||||
qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>;
|
||||
};
|
||||
|
||||
tcsr@194b000 {
|
||||
status = "okay";
|
||||
|
||||
compatible = "qcom,tcsr";
|
||||
reg = <0x194b000 0x100>;
|
||||
qcom,usb-hsphy-mode-select = <TCSR_USB_HSPHY_HOST_MODE>;
|
||||
};
|
||||
|
||||
ess_tcsr@1953000 {
|
||||
compatible = "qcom,tcsr";
|
||||
reg = <0x1953000 0x1000>;
|
||||
qcom,ess-interface-select = <TCSR_ESS_PSGMII>;
|
||||
};
|
||||
|
||||
tcsr@1957000 {
|
||||
compatible = "qcom,tcsr";
|
||||
reg = <0x1957000 0x100>;
|
||||
qcom,wifi_noc_memtype_m0_m2 = <TCSR_WIFI_NOC_MEMTYPE_M0_M2>;
|
||||
};
|
||||
|
||||
usb2: usb2@60f8800 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
usb3: usb3@8af8800 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
crypto@8e3a000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
watchdog@b017000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
ess-switch@c000000 {
|
||||
status = "okay";
|
||||
|
||||
switch_lan_bmp = <0x10>; /* lan port bitmap */
|
||||
};
|
||||
|
||||
edma@c080000 {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&tlmm {
|
||||
mdio_pins: mdio_pinmux {
|
||||
pinmux_1 {
|
||||
pins = "gpio53";
|
||||
function = "mdio";
|
||||
};
|
||||
|
||||
pinmux_2 {
|
||||
pins = "gpio52";
|
||||
function = "mdc";
|
||||
};
|
||||
|
||||
pinconf {
|
||||
pins = "gpio52", "gpio53";
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
|
||||
serial_pins: serial_pinmux {
|
||||
mux {
|
||||
pins = "gpio60", "gpio61";
|
||||
function = "blsp_uart0";
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
spi_0_pins: spi_0_pinmux {
|
||||
pin {
|
||||
function = "blsp_spi0";
|
||||
pins = "gpio55", "gpio56", "gpio57";
|
||||
drive-strength = <2>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pin_cs {
|
||||
function = "gpio";
|
||||
pins = "gpio54", "gpio59";
|
||||
drive-strength = <2>;
|
||||
bias-disable;
|
||||
output-high;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&blsp_dma {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&blsp1_spi1 {
|
||||
status = "okay";
|
||||
|
||||
pinctrl-0 = <&spi_0_pins>;
|
||||
pinctrl-names = "default";
|
||||
cs-gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>, <&tlmm 59 GPIO_ACTIVE_HIGH>;
|
||||
|
||||
flash@0 {
|
||||
status = "okay";
|
||||
|
||||
compatible = "jedec,spi-nor";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <24000000>;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "SBL1";
|
||||
reg = <0x00000000 0x00040000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@40000 {
|
||||
label = "MIBIB";
|
||||
reg = <0x00040000 0x00020000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@60000 {
|
||||
label = "QSEE";
|
||||
reg = <0x00060000 0x00060000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@c0000 {
|
||||
label = "CDT";
|
||||
reg = <0x000c0000 0x00010000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@d0000 {
|
||||
label = "DDRPARAMS";
|
||||
reg = <0x000d0000 0x00010000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@e0000 {
|
||||
label = "APPSBLENV"; /* uboot env*/
|
||||
reg = <0x000e0000 0x00010000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@f0000 {
|
||||
label = "APPSBL"; /* uboot */
|
||||
reg = <0x000f0000 0x00080000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@170000 {
|
||||
label = "ART";
|
||||
reg = <0x00170000 0x00010000>;
|
||||
read-only;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
spi-nand@1 {
|
||||
status = "okay";
|
||||
|
||||
compatible = "spi-nand";
|
||||
reg = <1>;
|
||||
spi-max-frequency = <24000000>;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "ubi";
|
||||
reg = <0x00000000 0x08000000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&blsp1_uart1 {
|
||||
status = "okay";
|
||||
|
||||
pinctrl-0 = <&serial_pins>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
&cryptobam {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gmac0 {
|
||||
qcom,poll_required = <1>;
|
||||
qcom,poll_required_dynamic = <1>;
|
||||
qcom,phy_mdio_addr = <3>;
|
||||
vlan_tag = <1 0x10>;
|
||||
};
|
||||
|
||||
&gmac1 {
|
||||
qcom,poll_required = <1>;
|
||||
qcom,poll_required_dynamic = <1>;
|
||||
qcom,phy_mdio_addr = <4>;
|
||||
vlan_tag = <2 0x20>;
|
||||
};
|
||||
|
||||
&wifi0 {
|
||||
status = "okay";
|
||||
|
||||
qcom,ath10k-calibration-variant = "8devices-Jalapeno";
|
||||
};
|
||||
|
||||
&wifi1 {
|
||||
status = "okay";
|
||||
|
||||
qcom,ath10k-calibration-variant = "8devices-Jalapeno";
|
||||
};
|
||||
|
||||
&usb3_ss_phy {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb3_hs_phy {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2_hs_phy {
|
||||
status = "okay";
|
||||
};
|
@ -0,0 +1,81 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
/* Copyright (c) 2019, CRISIS INNOVATION LAB d.o.o.
|
||||
* Author: Robert Marko <robert@meshpoint.me>
|
||||
*/
|
||||
|
||||
#include "qcom-ipq4018-jalapeno.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Crisis Innovation Lab MeshPoint.One";
|
||||
compatible = "cilab,meshpoint-one";
|
||||
|
||||
aliases {
|
||||
led-boot = &led_status;
|
||||
led-failsafe = &led_status;
|
||||
led-running = &led_status;
|
||||
led-upgrade = &led_status;
|
||||
};
|
||||
|
||||
soc {
|
||||
i2c-gpio {
|
||||
status = "okay";
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
compatible = "i2c-gpio";
|
||||
gpios = <&tlmm 0 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN) /* sda */
|
||||
&tlmm 4 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN) /* scl */
|
||||
>;
|
||||
|
||||
bme280@76 {
|
||||
status = "okay";
|
||||
|
||||
compatible = "bosch,bme280";
|
||||
reg = <0x76>;
|
||||
};
|
||||
|
||||
pcf2129@51 {
|
||||
status = "okay";
|
||||
|
||||
compatible = "nxp,pcf2129";
|
||||
reg = <0x51>;
|
||||
};
|
||||
|
||||
ina230@40 {
|
||||
status = "okay";
|
||||
|
||||
compatible = "ti,ina230";
|
||||
reg = <0x40>;
|
||||
shunt-resistor = <2000>;
|
||||
};
|
||||
|
||||
ina230@44 {
|
||||
status = "okay";
|
||||
|
||||
compatible = "ti,ina230";
|
||||
reg = <0x44>;
|
||||
shunt-resistor = <2000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
reset {
|
||||
label = "reset";
|
||||
gpios = <&tlmm 5 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_RESTART >;
|
||||
};
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
led_status: status {
|
||||
label = "meshpoint-one:blue:status";
|
||||
gpios = <&tlmm 63 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
};
|
@ -60,14 +60,18 @@ define Build/SenaoFW
|
||||
@cp $@.new $@
|
||||
endef
|
||||
|
||||
define Device/8dev_jalapeno
|
||||
define Device/8dev_jalapeno-common
|
||||
$(call Device/FitImage)
|
||||
$(call Device/UbiFit)
|
||||
BLOCKSIZE := 128k
|
||||
PAGESIZE := 2048
|
||||
endef
|
||||
|
||||
define Device/8dev_jalapeno
|
||||
$(call Device/8dev_jalapeno-common)
|
||||
DEVICE_VENDOR := 8devices
|
||||
DEVICE_MODEL := Jalapeno
|
||||
DEVICE_DTS := qcom-ipq4018-jalapeno
|
||||
BLOCKSIZE := 128k
|
||||
PAGESIZE := 2048
|
||||
endef
|
||||
TARGET_DEVICES += 8dev_jalapeno
|
||||
|
||||
@ -164,6 +168,15 @@ define Device/avm_fritzrepeater-3000
|
||||
endef
|
||||
TARGET_DEVICES += avm_fritzrepeater-3000
|
||||
|
||||
define Device/cilab_meshpoint-one
|
||||
$(call Device/8dev_jalapeno-common)
|
||||
DEVICE_DTS := qcom-ipq4018-meshpoint-one
|
||||
DEVICE_VENDOR := Crisis Innovation Lab
|
||||
DEVICE_MODEL := MeshPoint.One
|
||||
DEVICE_PACKAGES := kmod-i2c-gpio kmod-iio-bmp280-i2c kmod-hwmon-ina2xx kmod-rtc-pcf2127
|
||||
endef
|
||||
TARGET_DEVICES += cilab_meshpoint-one
|
||||
|
||||
define Device/compex_wpj419
|
||||
$(call Device/FitImage)
|
||||
$(call Device/UbiFit)
|
||||
|
@ -10,7 +10,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
|
||||
--- a/arch/arm/boot/dts/Makefile
|
||||
+++ b/arch/arm/boot/dts/Makefile
|
||||
@@ -785,11 +785,36 @@ dtb-$(CONFIG_ARCH_QCOM) += \
|
||||
@@ -785,11 +785,37 @@ dtb-$(CONFIG_ARCH_QCOM) += \
|
||||
qcom-apq8074-dragonboard.dtb \
|
||||
qcom-apq8084-ifc6540.dtb \
|
||||
qcom-apq8084-mtp.dtb \
|
||||
@ -23,6 +23,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
+ qcom-ipq4018-ex6150v2.dtb \
|
||||
+ qcom-ipq4018-fritz4040.dtb \
|
||||
+ qcom-ipq4018-jalapeno.dtb \
|
||||
+ qcom-ipq4018-meshpoint-one.dtb \
|
||||
+ qcom-ipq4018-nbg6617.dtb \
|
||||
+ qcom-ipq4018-rt-ac58u.dtb \
|
||||
+ qcom-ipq4018-wre6606.dtb \
|
||||
|
@ -10,7 +10,7 @@ Signed-off-by: Georgi Djakov <georgi.djakov@linaro.org>
|
||||
|
||||
--- a/drivers/base/power/opp/core.c
|
||||
+++ b/drivers/base/power/opp/core.c
|
||||
@@ -1292,11 +1292,13 @@ struct opp_table *dev_pm_opp_set_regulat
|
||||
@@ -1280,11 +1280,13 @@ struct opp_table *dev_pm_opp_set_regulat
|
||||
if (!opp_table)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
|
@ -27,7 +27,7 @@ Signed-off-by: Georgi Djakov <georgi.djakov@linaro.org>
|
||||
|
||||
--- a/drivers/base/power/opp/core.c
|
||||
+++ b/drivers/base/power/opp/core.c
|
||||
@@ -1620,6 +1620,83 @@ put_table:
|
||||
@@ -1608,6 +1608,83 @@ put_table:
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -12,7 +12,7 @@ Signed-off-by: Georgi Djakov <georgi.djakov@linaro.org>
|
||||
|
||||
--- a/drivers/base/power/opp/core.c
|
||||
+++ b/drivers/base/power/opp/core.c
|
||||
@@ -131,6 +131,27 @@ unsigned long dev_pm_opp_get_freq(struct
|
||||
@@ -126,6 +126,27 @@ unsigned long dev_pm_opp_get_freq(struct
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(dev_pm_opp_get_freq);
|
||||
|
||||
|
@ -17,7 +17,7 @@ Signed-off-by: Georgi Djakov <georgi.djakov@linaro.org>
|
||||
|
||||
--- a/drivers/base/power/opp/core.c
|
||||
+++ b/drivers/base/power/opp/core.c
|
||||
@@ -1664,6 +1664,7 @@ int dev_pm_opp_adjust_voltage(struct dev
|
||||
@@ -1652,6 +1652,7 @@ int dev_pm_opp_adjust_voltage(struct dev
|
||||
struct opp_table *opp_table;
|
||||
struct dev_pm_opp *new_opp, *tmp_opp, *opp = ERR_PTR(-ENODEV);
|
||||
int r = 0;
|
||||
@ -25,7 +25,7 @@ Signed-off-by: Georgi Djakov <georgi.djakov@linaro.org>
|
||||
|
||||
/* keep the node allocated */
|
||||
new_opp = kmalloc(sizeof(*new_opp), GFP_KERNEL);
|
||||
@@ -1700,6 +1701,10 @@ int dev_pm_opp_adjust_voltage(struct dev
|
||||
@@ -1688,6 +1689,10 @@ int dev_pm_opp_adjust_voltage(struct dev
|
||||
|
||||
/* plug in new node */
|
||||
new_opp->supplies[0].u_volt = u_volt;
|
||||
|
@ -22,7 +22,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
|
||||
#include <linux/mtd/mtd.h>
|
||||
#include <linux/mtd/partitions.h>
|
||||
@@ -180,6 +181,10 @@ static int m25p_probe(struct spi_mem *sp
|
||||
@@ -173,6 +174,10 @@ static int m25p_probe(struct spi_mem *sp
|
||||
};
|
||||
char *flash_name;
|
||||
int ret;
|
||||
@ -33,7 +33,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
|
||||
data = dev_get_platdata(&spimem->spi->dev);
|
||||
|
||||
@@ -218,6 +223,8 @@ static int m25p_probe(struct spi_mem *sp
|
||||
@@ -211,6 +216,8 @@ static int m25p_probe(struct spi_mem *sp
|
||||
|
||||
if (data && data->name)
|
||||
nor->mtd.name = data->name;
|
||||
|
@ -18,7 +18,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
|
||||
--- a/drivers/i2c/busses/Kconfig
|
||||
+++ b/drivers/i2c/busses/Kconfig
|
||||
@@ -690,6 +690,16 @@ config I2C_MESON
|
||||
@@ -691,6 +691,16 @@ config I2C_MESON
|
||||
If you say yes to this option, support will be included for the
|
||||
I2C interface on the Amlogic Meson family of SoCs.
|
||||
|
||||
|
@ -23,8 +23,8 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
|
||||
--- a/drivers/usb/dwc2/params.c
|
||||
+++ b/drivers/usb/dwc2/params.c
|
||||
@@ -90,7 +90,14 @@ static void dwc2_set_rk_params(struct dw
|
||||
GAHBCFG_HBSTLEN_SHIFT;
|
||||
@@ -91,7 +91,14 @@ static void dwc2_set_rk_params(struct dw
|
||||
p->power_down = 0;
|
||||
}
|
||||
|
||||
-static void dwc2_set_ltq_params(struct dwc2_hsotg *hsotg)
|
||||
@ -39,7 +39,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
{
|
||||
struct dwc2_core_params *p = &hsotg->params;
|
||||
|
||||
@@ -98,12 +105,20 @@ static void dwc2_set_ltq_params(struct d
|
||||
@@ -99,12 +106,20 @@ static void dwc2_set_ltq_params(struct d
|
||||
p->host_rx_fifo_size = 288;
|
||||
p->host_nperio_tx_fifo_size = 128;
|
||||
p->host_perio_tx_fifo_size = 96;
|
||||
@ -62,7 +62,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
static void dwc2_set_amlogic_params(struct dwc2_hsotg *hsotg)
|
||||
{
|
||||
struct dwc2_core_params *p = &hsotg->params;
|
||||
@@ -155,8 +170,11 @@ const struct of_device_id dwc2_of_match_
|
||||
@@ -156,8 +171,11 @@ const struct of_device_id dwc2_of_match_
|
||||
{ .compatible = "brcm,bcm2835-usb", .data = dwc2_set_bcm_params },
|
||||
{ .compatible = "hisilicon,hi6220-usb", .data = dwc2_set_his_params },
|
||||
{ .compatible = "rockchip,rk3066-usb", .data = dwc2_set_rk_params },
|
||||
|
@ -528,7 +528,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com>
|
||||
reg &= ~DWC3_DCTL_INITU2ENA;
|
||||
--- a/drivers/usb/dwc3/gadget.c
|
||||
+++ b/drivers/usb/dwc3/gadget.c
|
||||
@@ -3211,6 +3211,7 @@ int dwc3_gadget_init(struct dwc3 *dwc)
|
||||
@@ -3220,6 +3220,7 @@ int dwc3_gadget_init(struct dwc3 *dwc)
|
||||
{
|
||||
int ret;
|
||||
int irq;
|
||||
@ -536,7 +536,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com>
|
||||
|
||||
irq = dwc3_gadget_get_irq(dwc);
|
||||
if (irq < 0) {
|
||||
@@ -3290,6 +3291,12 @@ int dwc3_gadget_init(struct dwc3 *dwc)
|
||||
@@ -3299,6 +3300,12 @@ int dwc3_gadget_init(struct dwc3 *dwc)
|
||||
|
||||
dwc3_gadget_set_speed(&dwc->gadget, dwc->maximum_speed);
|
||||
|
||||
|
@ -74,7 +74,7 @@ Signed-off-by: Signed-off-by: Biwen Li <biwen.li@nxp.com>
|
||||
kvmppc_booke_queue_irqprio(vcpu, BOOKE_IRQPRIO_DECREMENTER);
|
||||
--- a/virt/kvm/arm/mmu.c
|
||||
+++ b/virt/kvm/arm/mmu.c
|
||||
@@ -1027,9 +1027,11 @@ static int stage2_pmdp_test_and_clear_yo
|
||||
@@ -1028,9 +1028,11 @@ static int stage2_pmdp_test_and_clear_yo
|
||||
* @guest_ipa: The IPA at which to insert the mapping
|
||||
* @pa: The physical address of the device
|
||||
* @size: The size of the mapping
|
||||
@ -87,7 +87,7 @@ Signed-off-by: Signed-off-by: Biwen Li <biwen.li@nxp.com>
|
||||
{
|
||||
phys_addr_t addr, end;
|
||||
int ret = 0;
|
||||
@@ -1040,7 +1042,7 @@ int kvm_phys_addr_ioremap(struct kvm *kv
|
||||
@@ -1041,7 +1043,7 @@ int kvm_phys_addr_ioremap(struct kvm *kv
|
||||
pfn = __phys_to_pfn(pa);
|
||||
|
||||
for (addr = guest_ipa; addr < end; addr += PAGE_SIZE) {
|
||||
@ -96,7 +96,7 @@ Signed-off-by: Signed-off-by: Biwen Li <biwen.li@nxp.com>
|
||||
|
||||
if (writable)
|
||||
pte = kvm_s2pte_mkwrite(pte);
|
||||
@@ -1064,6 +1066,30 @@ out:
|
||||
@@ -1065,6 +1067,30 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -127,7 +127,7 @@ Signed-off-by: Signed-off-by: Biwen Li <biwen.li@nxp.com>
|
||||
static bool transparent_hugepage_adjust(kvm_pfn_t *pfnp, phys_addr_t *ipap)
|
||||
{
|
||||
kvm_pfn_t pfn = *pfnp;
|
||||
@@ -1340,6 +1366,18 @@ static int user_mem_abort(struct kvm_vcp
|
||||
@@ -1341,6 +1367,18 @@ static int user_mem_abort(struct kvm_vcp
|
||||
hugetlb = true;
|
||||
gfn = (fault_ipa & PMD_MASK) >> PAGE_SHIFT;
|
||||
} else {
|
||||
@ -146,7 +146,7 @@ Signed-off-by: Signed-off-by: Biwen Li <biwen.li@nxp.com>
|
||||
/*
|
||||
* Pages belonging to memslots that don't have the same
|
||||
* alignment for userspace and IPA cannot be mapped using
|
||||
@@ -1381,6 +1419,11 @@ static int user_mem_abort(struct kvm_vcp
|
||||
@@ -1382,6 +1420,11 @@ static int user_mem_abort(struct kvm_vcp
|
||||
if (is_error_noslot_pfn(pfn))
|
||||
return -EFAULT;
|
||||
|
||||
@ -158,7 +158,7 @@ Signed-off-by: Signed-off-by: Biwen Li <biwen.li@nxp.com>
|
||||
if (kvm_is_device_pfn(pfn)) {
|
||||
mem_type = PAGE_S2_DEVICE;
|
||||
flags |= KVM_S2PTE_FLAG_IS_IOMAP;
|
||||
@@ -1917,6 +1960,9 @@ int kvm_arch_prepare_memory_region(struc
|
||||
@@ -1918,6 +1961,9 @@ int kvm_arch_prepare_memory_region(struc
|
||||
gpa_t gpa = mem->guest_phys_addr +
|
||||
(vm_start - mem->userspace_addr);
|
||||
phys_addr_t pa;
|
||||
@ -168,7 +168,7 @@ Signed-off-by: Signed-off-by: Biwen Li <biwen.li@nxp.com>
|
||||
|
||||
pa = (phys_addr_t)vma->vm_pgoff << PAGE_SHIFT;
|
||||
pa += vm_start - vma->vm_start;
|
||||
@@ -1927,9 +1973,13 @@ int kvm_arch_prepare_memory_region(struc
|
||||
@@ -1928,9 +1974,13 @@ int kvm_arch_prepare_memory_region(struc
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
@ -321,7 +321,7 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/of_platform.h>
|
||||
@@ -205,6 +206,9 @@ static int of_flash_probe(struct platfor
|
||||
@@ -197,6 +198,9 @@ static int of_flash_probe(struct platfor
|
||||
info->list[i].map.bankwidth = be32_to_cpup(width);
|
||||
info->list[i].map.device_node = dp;
|
||||
|
||||
|
@ -5841,7 +5841,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
#endif /* __UAPI_LINUX_PCITEST_H */
|
||||
--- a/tools/pci/pcitest.c
|
||||
+++ b/tools/pci/pcitest.c
|
||||
@@ -31,12 +31,17 @@
|
||||
@@ -30,12 +30,17 @@
|
||||
#define BILLION 1E9
|
||||
|
||||
static char *result[] = { "NOT OKAY", "OKAY" };
|
||||
@ -5859,7 +5859,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
bool read;
|
||||
bool write;
|
||||
bool copy;
|
||||
@@ -65,6 +70,24 @@ static int run_test(struct pci_test *tes
|
||||
@@ -62,6 +67,24 @@ static int run_test(struct pci_test *tes
|
||||
fprintf(stdout, "%s\n", result[ret]);
|
||||
}
|
||||
|
||||
@ -5884,7 +5884,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
if (test->legacyirq) {
|
||||
ret = ioctl(fd, PCITEST_LEGACY_IRQ, 0);
|
||||
fprintf(stdout, "LEGACY IRQ:\t");
|
||||
@@ -83,6 +106,15 @@ static int run_test(struct pci_test *tes
|
||||
@@ -80,6 +103,15 @@ static int run_test(struct pci_test *tes
|
||||
fprintf(stdout, "%s\n", result[ret]);
|
||||
}
|
||||
|
||||
@ -5900,7 +5900,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
if (test->write) {
|
||||
ret = ioctl(fd, PCITEST_WRITE, test->size);
|
||||
fprintf(stdout, "WRITE (%7ld bytes):\t\t", test->size);
|
||||
@@ -133,7 +165,7 @@ int main(int argc, char **argv)
|
||||
@@ -130,7 +162,7 @@ int main(int argc, char **argv)
|
||||
/* set default endpoint device */
|
||||
test->device = "/dev/pci-endpoint-test.0";
|
||||
|
||||
@ -5909,7 +5909,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
switch (c) {
|
||||
case 'D':
|
||||
test->device = optarg;
|
||||
@@ -151,6 +183,20 @@ int main(int argc, char **argv)
|
||||
@@ -148,6 +180,20 @@ int main(int argc, char **argv)
|
||||
if (test->msinum < 1 || test->msinum > 32)
|
||||
goto usage;
|
||||
continue;
|
||||
@ -5930,7 +5930,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
case 'r':
|
||||
test->read = true;
|
||||
continue;
|
||||
@@ -173,6 +219,9 @@ usage:
|
||||
@@ -170,6 +216,9 @@ usage:
|
||||
"\t-D <dev> PCI endpoint test device {default: /dev/pci-endpoint-test.0}\n"
|
||||
"\t-b <bar num> BAR test (bar number between 0..5)\n"
|
||||
"\t-m <msi num> MSI test (msi number between 1..32)\n"
|
||||
|
@ -16,8 +16,8 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||
|
||||
--- a/drivers/clk/Makefile
|
||||
+++ b/drivers/clk/Makefile
|
||||
@@ -67,7 +67,7 @@ obj-$(CONFIG_ARCH_MXC) += imx/
|
||||
obj-$(CONFIG_MACH_INGENIC) += ingenic/
|
||||
@@ -68,7 +68,7 @@ obj-$(CONFIG_MACH_INGENIC) += ingenic/
|
||||
obj-$(CONFIG_ARCH_K3) += keystone/
|
||||
obj-$(CONFIG_ARCH_KEYSTONE) += keystone/
|
||||
obj-$(CONFIG_MACH_LOONGSON32) += loongson1/
|
||||
-obj-$(CONFIG_ARCH_MEDIATEK) += mediatek/
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/ata/Kconfig
|
||||
+++ b/drivers/ata/Kconfig
|
||||
@@ -492,6 +492,13 @@ config SATA_VITESSE
|
||||
@@ -493,6 +493,13 @@ config SATA_VITESSE
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
|
@ -45,7 +45,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
+};
|
||||
--- a/drivers/i2c/busses/Kconfig
|
||||
+++ b/drivers/i2c/busses/Kconfig
|
||||
@@ -863,6 +863,11 @@ config I2C_RK3X
|
||||
@@ -864,6 +864,11 @@ config I2C_RK3X
|
||||
This driver can also be built as a module. If so, the module will
|
||||
be called i2c-rk3x.
|
||||
|
||||
|
@ -13,7 +13,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
|
||||
--- a/drivers/i2c/busses/Kconfig
|
||||
+++ b/drivers/i2c/busses/Kconfig
|
||||
@@ -868,6 +868,11 @@ config I2C_RALINK
|
||||
@@ -869,6 +869,11 @@ config I2C_RALINK
|
||||
depends on RALINK && !SOC_MT7621
|
||||
select OF_I2C
|
||||
|
||||
|
26
toolchain/glibc/patches/001-regex-read-overrun.patch
Normal file
26
toolchain/glibc/patches/001-regex-read-overrun.patch
Normal file
@ -0,0 +1,26 @@
|
||||
commit 583dd860d5b833037175247230a328f0050dbfe9
|
||||
Author: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Date: Mon Jan 21 11:08:13 2019 -0800
|
||||
|
||||
regex: fix read overrun [BZ #24114]
|
||||
|
||||
Problem found by AddressSanitizer, reported by Hongxu Chen in:
|
||||
https://debbugs.gnu.org/34140
|
||||
* posix/regexec.c (proceed_next_node):
|
||||
Do not read past end of input buffer.
|
||||
|
||||
--- a/posix/regexec.c
|
||||
+++ b/posix/regexec.c
|
||||
@@ -1293,8 +1293,10 @@ proceed_next_node (const re_match_context_t *mctx, Idx nregs, regmatch_t *regs,
|
||||
else if (naccepted)
|
||||
{
|
||||
char *buf = (char *) re_string_get_buffer (&mctx->input);
|
||||
- if (memcmp (buf + regs[subexp_idx].rm_so, buf + *pidx,
|
||||
- naccepted) != 0)
|
||||
+ if (mctx->input.valid_len - *pidx < naccepted
|
||||
+ || (memcmp (buf + regs[subexp_idx].rm_so, buf + *pidx,
|
||||
+ naccepted)
|
||||
+ != 0))
|
||||
return -1;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user