Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
commit
0f3f11ab79
@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-6.1 = .94
|
||||
LINUX_KERNEL_HASH-6.1.94 = 38ea71ad22ae0187fd8ee5ff879b33b0d9bd58161ac9a3e868ae0b4c66b95369
|
||||
LINUX_VERSION-6.1 = .95
|
||||
LINUX_KERNEL_HASH-6.1.95 = 2960f0aa1d75665f39114ad3c272a999c54796e553a2355d0379f5188d14dfbd
|
||||
|
@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-6.6 = .34
|
||||
LINUX_KERNEL_HASH-6.6.34 = c4e0ec8f593aa3717e85abad940466e7d7cbc362989426eb37f499330a461ba0
|
||||
LINUX_VERSION-6.6 = .35
|
||||
LINUX_KERNEL_HASH-6.6.35 = fce3ee728712ed063aa8c14a8756c8ff8c7a46ba3827f61d2b04a73c7cf5dd9e
|
||||
|
@ -13,7 +13,7 @@ define Package/r8169-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/rtl_nic
|
||||
$(CP) \
|
||||
$(PKG_BUILD_DIR)/rtl_nic/rtl810* \
|
||||
$(PKG_BUILD_DIR)/rtl_nic/rtl8125* \
|
||||
$(PKG_BUILD_DIR)/rtl_nic/rtl812* \
|
||||
$(PKG_BUILD_DIR)/rtl_nic/rtl8168* \
|
||||
$(PKG_BUILD_DIR)/rtl_nic/rtl84* \
|
||||
$(1)/lib/firmware/rtl_nic
|
||||
|
@ -752,7 +752,6 @@ define KernelPackage/crypto-misc
|
||||
CONFIG_CRYPTO_CAMELLIA \
|
||||
CONFIG_CRYPTO_CAST5 \
|
||||
CONFIG_CRYPTO_CAST6 \
|
||||
CONFIG_CRYPTO_FCRYPT \
|
||||
CONFIG_CRYPTO_KHAZAD \
|
||||
CONFIG_CRYPTO_SERPENT \
|
||||
CONFIG_CRYPTO_TEA \
|
||||
|
@ -779,8 +779,7 @@ define KernelPackage/r8169
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-mii +r8169-firmware +kmod-phy-realtek +kmod-mdio-devres
|
||||
KCONFIG:= \
|
||||
CONFIG_R8169 \
|
||||
CONFIG_R8169_NAPI=y \
|
||||
CONFIG_R8169_VLAN=n
|
||||
CONFIG_R8169_LEDS=y@ge6.6
|
||||
FILES:=$(LINUX_DIR)/drivers/net/ethernet/realtek/r8169.ko
|
||||
AUTOLOAD:=$(call AutoProbe,r8169)
|
||||
endef
|
||||
|
@ -1297,13 +1297,20 @@ define KernelPackage/rxrpc
|
||||
HIDDEN:=1
|
||||
KCONFIG:= \
|
||||
CONFIG_AF_RXRPC \
|
||||
CONFIG_RXKAD=m \
|
||||
CONFIG_AF_RXRPC_IPV6=y \
|
||||
CONFIG_RXKAD \
|
||||
CONFIG_AF_RXRPC_DEBUG=n
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/net/rxrpc/rxrpc.ko
|
||||
AUTOLOAD:=$(call AutoLoad,30,rxrpc.ko)
|
||||
DEPENDS:= +kmod-crypto-manager +kmod-crypto-pcbc +kmod-crypto-fcrypt \
|
||||
+kmod-udptunnel4 +kmod-udptunnel6
|
||||
AUTOLOAD:=$(call AutoLoad,30,rxrpc)
|
||||
DEPENDS:= \
|
||||
+kmod-crypto-fcrypt \
|
||||
+kmod-crypto-hmac \
|
||||
+kmod-crypto-manager \
|
||||
+kmod-crypto-md5 \
|
||||
+kmod-crypto-pcbc \
|
||||
+kmod-udptunnel4 \
|
||||
+IPV6:kmod-udptunnel6
|
||||
endef
|
||||
|
||||
define KernelPackage/rxrpc/description
|
||||
|
@ -1,13 +1,13 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=qca-ssdk
|
||||
PKG_RELEASE:=2
|
||||
PKG_RELEASE:=3
|
||||
|
||||
PKG_SOURCE_URL:=https://git.codelinaro.org/clo/qsdk/oss/lklm/qca-ssdk.git
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_DATE:=2024-04-17
|
||||
PKG_SOURCE_VERSION:=3d060f7ad70d087f6b0452abe79ab6d042e8cd53
|
||||
PKG_MIRROR_HASH:=6f5e390b294e699491584094f5d7eb941de6237ad8c5320191e9e306fbcd8eb5
|
||||
PKG_SOURCE_DATE:=2024-06-13
|
||||
PKG_SOURCE_VERSION:=c451136ba69d51d60f770365b6d6d60ff2801998
|
||||
PKG_MIRROR_HASH:=4c54f2d77b5abeb96bddceb4a9eb58aa2c8fb12b58d5d666196224a35ac107dc
|
||||
|
||||
PKG_FLAGS:=nonshared
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
@ -47,8 +47,9 @@ MAKE_FLAGS+= \
|
||||
SoC=$(CONFIG_TARGET_SUBTARGET) \
|
||||
SHELL="$(BASH)" \
|
||||
PTP_FEATURE=disable SWCONFIG_FEATURE=disable \
|
||||
ISISC_ENABLE=disable IN_QCA803X_PHY=FALSE \
|
||||
IN_QCA808X_PHY=FALSE IN_MALIBU_PHY=FALSE \
|
||||
ISISC_ENABLE=disable MHT_ENABLE=disable \
|
||||
IN_QCA803X_PHY=FALSE IN_QCA808X_PHY=FALSE \
|
||||
IN_MALIBU_PHY=FALSE \
|
||||
$(LNX_CONFIG_OPTS)
|
||||
|
||||
ifeq ($(CONFIG_TARGET_SUBTARGET), "ipq807x")
|
||||
|
@ -1,25 +0,0 @@
|
||||
From e3763fd77e41b2f2495672c6a5898d69892fbf9f Mon Sep 17 00:00:00 2001
|
||||
From: Christian Marangi <ansuelsmth@gmail.com>
|
||||
Date: Wed, 15 Nov 2023 00:57:41 +0100
|
||||
Subject: [PATCH] hsl_phy: add support for detection PSGMII PHY mode
|
||||
|
||||
Add support for detection of PSGMII PHY mode to correctly detect qca807x
|
||||
PHY upstream driver.
|
||||
|
||||
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
||||
---
|
||||
src/hsl/phy/hsl_phy.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
--- a/src/hsl/phy/hsl_phy.c
|
||||
+++ b/src/hsl/phy/hsl_phy.c
|
||||
@@ -1322,6 +1322,9 @@ hsl_port_phydev_interface_mode_status_ge
|
||||
case PHY_INTERFACE_MODE_10GKR:
|
||||
*interface_mode_status = PORT_10GBASE_R;
|
||||
break;
|
||||
+ case PHY_INTERFACE_MODE_PSGMII:
|
||||
+ *interface_mode_status = PHY_PSGMII_BASET;
|
||||
+ break;
|
||||
case PHY_INTERFACE_MODE_QSGMII:
|
||||
*interface_mode_status = PORT_QSGMII;
|
||||
break;
|
@ -40,7 +40,7 @@
|
||||
kslib_c:
|
||||
--- a/make/linux_opt.mk
|
||||
+++ b/make/linux_opt.mk
|
||||
@@ -778,6 +778,6 @@ LOCAL_CFLAGS += $(CPU_CFLAG) -D"KBUILD_M
|
||||
@@ -782,6 +782,6 @@ LOCAL_CFLAGS += $(CPU_CFLAG) -D"KBUILD_M
|
||||
####################################################################
|
||||
# cflags for LNX Modules-Style Makefile
|
||||
####################################################################
|
||||
|
@ -1,31 +0,0 @@
|
||||
--- a/src/fal/fal_port_ctrl.c
|
||||
+++ b/src/fal/fal_port_ctrl.c
|
||||
@@ -2089,7 +2089,7 @@ fal_port_hibernate_get (a_uint32_t dev_i
|
||||
*/
|
||||
sw_error_t
|
||||
fal_port_cdt (a_uint32_t dev_id, fal_port_t port_id, a_uint32_t mdi_pair,
|
||||
- a_uint32_t * cable_status, a_uint32_t * cable_len)
|
||||
+ fal_cable_status_t * cable_status, a_uint32_t * cable_len)
|
||||
{
|
||||
sw_error_t rv;
|
||||
|
||||
--- a/src/fal/fal_portvlan.c
|
||||
+++ b/src/fal/fal_portvlan.c
|
||||
@@ -2173,7 +2173,7 @@ fal_netisolate_get(a_uint32_t dev_id, a_
|
||||
* @return SW_OK or error code
|
||||
*/
|
||||
sw_error_t
|
||||
-fal_eg_trans_filter_bypass_en_set(a_uint32_t dev_id, a_bool_t enable)
|
||||
+fal_eg_trans_filter_bypass_en_set(a_uint32_t dev_id, a_uint32_t enable)
|
||||
{
|
||||
sw_error_t rv;
|
||||
|
||||
@@ -2190,7 +2190,7 @@ fal_eg_trans_filter_bypass_en_set(a_uint
|
||||
* @return SW_OK or error code
|
||||
*/
|
||||
sw_error_t
|
||||
-fal_eg_trans_filter_bypass_en_get(a_uint32_t dev_id, a_bool_t* enable)
|
||||
+fal_eg_trans_filter_bypass_en_get(a_uint32_t dev_id, a_uint32_t* enable)
|
||||
{
|
||||
sw_error_t rv;
|
||||
|
@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=openssl
|
||||
PKG_VERSION:=3.0.14
|
||||
PKG_RELEASE:=1
|
||||
PKG_RELEASE:=2
|
||||
PKG_BUILD_FLAGS:=no-mips16 gc-sections no-lto
|
||||
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
@ -418,6 +418,8 @@ define Package/libopenssl-conf/install
|
||||
$(INSTALL_BIN) ./files/openssl.init $(1)/etc/init.d/openssl
|
||||
$(SED) 's!%ENGINES_DIR%!/usr/lib/$(ENGINES_DIR)!' $(1)/etc/init.d/openssl
|
||||
touch $(1)/etc/config/openssl
|
||||
$(if $(CONFIG_OPENSSL_ENGINE),,
|
||||
$(SED) 's!engines = engines_sect!#&!' $(1)/etc/ssl/openssl.cnf)
|
||||
$(if $(CONFIG_OPENSSL_ENGINE_BUILTIN_DEVCRYPTO),
|
||||
$(CP) ./files/devcrypto.cnf $(1)/etc/ssl/modules.cnf.d/
|
||||
echo -e "config engine 'devcrypto'\n\toption enabled '1'\n\toption builtin '1'" >> $(1)/etc/config/openssl)
|
||||
|
@ -1021,7 +1021,7 @@ $1 ~ /Band/ {
|
||||
}
|
||||
|
||||
band_match && $3 == "MHz" && $4 == channel {
|
||||
print $2
|
||||
print int($2)
|
||||
exit
|
||||
}
|
||||
'
|
||||
|
@ -1,217 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
append DRIVERS "mac80211"
|
||||
|
||||
check_mac80211_device() {
|
||||
local device="$1"
|
||||
local path="$2"
|
||||
local macaddr="$3"
|
||||
|
||||
[ -n "$found" ] && return 0
|
||||
|
||||
phy_path=
|
||||
config_get phy "$device" phy
|
||||
json_select wlan
|
||||
[ -n "$phy" ] && case "$phy" in
|
||||
phy*)
|
||||
[ -d /sys/class/ieee80211/$phy ] && \
|
||||
phy_path="$(iwinfo nl80211 path "$dev")"
|
||||
;;
|
||||
*)
|
||||
if json_is_a "$phy" object; then
|
||||
json_select "$phy"
|
||||
json_get_var phy_path path
|
||||
json_select ..
|
||||
elif json_is_a "${phy%.*}" object; then
|
||||
json_select "${phy%.*}"
|
||||
json_get_var phy_path path
|
||||
json_select ..
|
||||
phy_path="$phy_path+${phy##*.}"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
json_select ..
|
||||
[ -n "$phy_path" ] || config_get phy_path "$device" path
|
||||
[ -n "$path" -a "$phy_path" = "$path" ] && {
|
||||
found=1
|
||||
return 0
|
||||
}
|
||||
|
||||
config_get dev_macaddr "$device" macaddr
|
||||
|
||||
[ -n "$macaddr" -a "$dev_macaddr" = "$macaddr" ] && found=1
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
__get_band_defaults() {
|
||||
local phy="$1"
|
||||
|
||||
( iw phy "$phy" info; echo ) | awk '
|
||||
BEGIN {
|
||||
bands = ""
|
||||
}
|
||||
|
||||
($1 == "Band" || $1 == "") && band {
|
||||
if (channel) {
|
||||
mode="NOHT"
|
||||
if (ht) mode="HT20"
|
||||
if (vht && band != "1:") mode="VHT80"
|
||||
if (he) mode="HE80"
|
||||
if (he && band == "1:") mode="HE20"
|
||||
sub("\\[", "", channel)
|
||||
sub("\\]", "", channel)
|
||||
bands = bands band channel ":" mode " "
|
||||
}
|
||||
band=""
|
||||
}
|
||||
|
||||
$1 == "Band" {
|
||||
band = $2
|
||||
channel = ""
|
||||
vht = ""
|
||||
ht = ""
|
||||
he = ""
|
||||
}
|
||||
|
||||
$0 ~ "Capabilities:" {
|
||||
ht=1
|
||||
}
|
||||
|
||||
$0 ~ "VHT Capabilities" {
|
||||
vht=1
|
||||
}
|
||||
|
||||
$0 ~ "HE Iftypes" {
|
||||
he=1
|
||||
}
|
||||
|
||||
$1 == "*" && $3 == "MHz" && $0 !~ /disabled/ && band && !channel {
|
||||
channel = $4
|
||||
}
|
||||
|
||||
END {
|
||||
print bands
|
||||
}'
|
||||
}
|
||||
|
||||
get_band_defaults() {
|
||||
local phy="$1"
|
||||
|
||||
for c in $(__get_band_defaults "$phy"); do
|
||||
local band="${c%%:*}"
|
||||
c="${c#*:}"
|
||||
local chan="${c%%:*}"
|
||||
c="${c#*:}"
|
||||
local mode="${c%%:*}"
|
||||
|
||||
case "$band" in
|
||||
1) band=2g;;
|
||||
2) band=5g;;
|
||||
3) band=60g;;
|
||||
4) band=6g;;
|
||||
*) band="";;
|
||||
esac
|
||||
|
||||
[ -n "$band" ] || continue
|
||||
[ -n "$mode_band" -a "$band" = "6g" ] && return
|
||||
|
||||
mode_band="$band"
|
||||
channel="$chan"
|
||||
htmode="$mode"
|
||||
done
|
||||
}
|
||||
|
||||
check_devidx() {
|
||||
case "$1" in
|
||||
radio[0-9]*)
|
||||
local idx="${1#radio}"
|
||||
[ "$devidx" -ge "${1#radio}" ] && devidx=$((idx + 1))
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
check_board_phy() {
|
||||
local name="$2"
|
||||
|
||||
json_select "$name"
|
||||
json_get_var phy_path path
|
||||
json_select ..
|
||||
|
||||
if [ "$path" = "$phy_path" ]; then
|
||||
board_dev="$name"
|
||||
elif [ "${path%+*}" = "$phy_path" ]; then
|
||||
fallback_board_dev="$name.${path#*+}"
|
||||
fi
|
||||
}
|
||||
|
||||
detect_mac80211() {
|
||||
devidx=0
|
||||
config_load wireless
|
||||
config_foreach check_devidx wifi-device
|
||||
|
||||
json_load_file /etc/board.json
|
||||
|
||||
for _dev in /sys/class/ieee80211/*; do
|
||||
[ -e "$_dev" ] || continue
|
||||
|
||||
dev="${_dev##*/}"
|
||||
|
||||
mode_band=""
|
||||
channel=""
|
||||
htmode=""
|
||||
ht_capab=""
|
||||
|
||||
get_band_defaults "$dev"
|
||||
|
||||
path="$(iwinfo nl80211 path "$dev")"
|
||||
macaddr="$(cat /sys/class/ieee80211/${dev}/macaddress)"
|
||||
|
||||
# work around phy rename related race condition
|
||||
[ -n "$path" -o -n "$macaddr" ] || continue
|
||||
|
||||
board_dev=
|
||||
fallback_board_dev=
|
||||
json_for_each_item check_board_phy wlan
|
||||
[ -n "$board_dev" ] || board_dev="$fallback_board_dev"
|
||||
[ -n "$board_dev" ] && dev="$board_dev"
|
||||
|
||||
found=
|
||||
config_foreach check_mac80211_device wifi-device "$path" "$macaddr"
|
||||
[ -n "$found" ] && continue
|
||||
|
||||
name="radio${devidx}"
|
||||
devidx=$(($devidx + 1))
|
||||
case "$dev" in
|
||||
phy*)
|
||||
if [ -n "$path" ]; then
|
||||
dev_id="set wireless.${name}.path='$path'"
|
||||
else
|
||||
dev_id="set wireless.${name}.macaddr='$macaddr'"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
dev_id="set wireless.${name}.phy='$dev'"
|
||||
;;
|
||||
esac
|
||||
|
||||
uci -q batch <<-EOF
|
||||
set wireless.${name}=wifi-device
|
||||
set wireless.${name}.type=mac80211
|
||||
${dev_id}
|
||||
set wireless.${name}.channel=${channel}
|
||||
set wireless.${name}.band=${mode_band}
|
||||
set wireless.${name}.htmode=$htmode
|
||||
set wireless.${name}.disabled=0
|
||||
|
||||
set wireless.default_${name}=wifi-iface
|
||||
set wireless.default_${name}.device=${name}
|
||||
set wireless.default_${name}.network=lan
|
||||
set wireless.default_${name}.mode=ap
|
||||
set wireless.default_${name}.ssid=ImmortalWrt
|
||||
set wireless.default_${name}.encryption=none
|
||||
EOF
|
||||
uci -q commit wireless
|
||||
done
|
||||
}
|
@ -0,0 +1,94 @@
|
||||
#!/usr/bin/env ucode
|
||||
import { readfile } from "fs";
|
||||
import * as uci from 'uci';
|
||||
|
||||
const bands_order = [ "6G", "5G", "2G" ];
|
||||
const htmode_order = [ "HE", "VHT", "HT" ];
|
||||
|
||||
let board = json(readfile("/etc/board.json"));
|
||||
if (!board.wlan)
|
||||
exit(0);
|
||||
|
||||
let idx = 0;
|
||||
let commit;
|
||||
|
||||
let config = uci.cursor().get_all("wireless") ?? {};
|
||||
|
||||
function radio_exists(path, macaddr, phy) {
|
||||
for (let name, s in config) {
|
||||
if (s[".type"] != "wifi-device")
|
||||
continue;
|
||||
if (s.macaddr & lc(s.macaddr) == lc(macaddr))
|
||||
return true;
|
||||
if (s.phy == phy)
|
||||
return true;
|
||||
if (!s.path || !path)
|
||||
continue;
|
||||
if (substr(s.path, -length(path)) == path)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
for (let phy_name, phy in board.wlan) {
|
||||
let info = phy.info;
|
||||
if (!info || !length(info.bands))
|
||||
continue;
|
||||
|
||||
while (config[`radio${idx}`])
|
||||
idx++;
|
||||
let name = "radio" + idx++;
|
||||
|
||||
let s = "wireless." + name;
|
||||
let si = "wireless.default_" + name;
|
||||
|
||||
let band_name = filter(bands_order, (b) => info.bands[b])[0];
|
||||
if (!band_name)
|
||||
continue;
|
||||
|
||||
let band = info.bands[band_name];
|
||||
let channel = band.default_channel ?? "auto";
|
||||
|
||||
let width = band.max_width;
|
||||
if (band_name == "2G")
|
||||
width = 20;
|
||||
else if (width > 80)
|
||||
width = 80;
|
||||
|
||||
let htmode = filter(htmode_order, (m) => band[lc(m)])[0];
|
||||
if (htmode)
|
||||
htmode += width;
|
||||
else
|
||||
htmode = "NOHT";
|
||||
|
||||
if (!phy.path)
|
||||
continue;
|
||||
|
||||
let macaddr = trim(readfile(`/sys/class/ieee80211/${phy_name}/macaddress`));
|
||||
if (radio_exists(phy.path, macaddr, phy_name))
|
||||
continue;
|
||||
|
||||
let id = `phy='${phy_name}'`;
|
||||
if (match(phy_name, /^phy[0-9]/))
|
||||
id = `path='${phy.path}'`;
|
||||
|
||||
print(`set ${s}=wifi-device
|
||||
set ${s}.type='mac80211'
|
||||
set ${s}.${id}
|
||||
set ${s}.band='${lc(band_name)}'
|
||||
set ${s}.channel='${channel}'
|
||||
set ${s}.htmode='${htmode}'
|
||||
set ${s}.disabled='0'
|
||||
|
||||
set ${si}=wifi-iface
|
||||
set ${si}.device='${name}'
|
||||
set ${si}.network='lan'
|
||||
set ${si}.mode='ap'
|
||||
set ${si}.ssid='ImmortalWrt'
|
||||
set ${si}.encryption='none'
|
||||
|
||||
`);
|
||||
commit = true;
|
||||
}
|
||||
|
||||
if (commit)
|
||||
print("commit wireless\n");
|
@ -178,6 +178,7 @@ wifi_config() {
|
||||
[ -e /tmp/.config_pending ] && return
|
||||
ucode /usr/share/hostap/wifi-detect.uc
|
||||
[ ! -f /etc/config/wireless ] && touch /etc/config/wireless
|
||||
ucode /lib/wifi/mac80211.uc | uci -q batch
|
||||
|
||||
for driver in $DRIVERS; do (
|
||||
if eval "type detect_$driver" 2>/dev/null >/dev/null; then
|
||||
|
@ -53,6 +53,26 @@ function wiphy_get_entry(phy, path) {
|
||||
return wlan[phy];
|
||||
}
|
||||
|
||||
function freq_to_channel(freq) {
|
||||
if (freq < 1000)
|
||||
return 0;
|
||||
if (freq == 2484)
|
||||
return 14;
|
||||
if (freq == 5935)
|
||||
return 2;
|
||||
if (freq < 2484)
|
||||
return (freq - 2407) / 5;
|
||||
if (freq >= 4910 && freq <= 4980)
|
||||
return (freq - 4000) / 5;
|
||||
if (freq < 5950)
|
||||
return (freq - 5000) / 5;
|
||||
if (freq <= 45000)
|
||||
return (freq - 5950) / 5;
|
||||
if (freq >= 58320 && freq <= 70200)
|
||||
return (freq - 56160) / 2160;
|
||||
return 0;
|
||||
}
|
||||
|
||||
function wiphy_detect() {
|
||||
let phys = nl.request(nl.const.NL80211_CMD_GET_WIPHY, nl.const.NLM_F_DUMP, { split_wiphy_dump: true });
|
||||
if (!phys)
|
||||
@ -80,8 +100,10 @@ function wiphy_detect() {
|
||||
band_name = "6G";
|
||||
else if (freq > 4000)
|
||||
band_name = "5G";
|
||||
else
|
||||
else if (freq > 2000)
|
||||
band_name = "2G";
|
||||
else
|
||||
continue;
|
||||
bands[band_name] = band_info;
|
||||
if (band.ht_capa > 0)
|
||||
band_info.ht = true;
|
||||
@ -124,6 +146,16 @@ function wiphy_detect() {
|
||||
if (he_phy_cap & 0x2)
|
||||
push(modes, "HE40");
|
||||
|
||||
for (let freq in band.freqs) {
|
||||
if (freq.disabled)
|
||||
continue;
|
||||
let chan = freq_to_channel(freq.freq);
|
||||
if (!chan)
|
||||
continue;
|
||||
band_info.default_channel = chan;
|
||||
break;
|
||||
}
|
||||
|
||||
if (band_name == "2G")
|
||||
continue;
|
||||
if (band_info.vht)
|
||||
|
@ -0,0 +1,21 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Fri, 14 Jun 2024 14:41:16 +0200
|
||||
Subject: [PATCH] nl80211: fix crash when adding an interface fails
|
||||
|
||||
When adding an interface fails early, the bss link is still NULL.
|
||||
Avoid crashing on deleting beacons.
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/src/drivers/driver_nl80211.c
|
||||
+++ b/src/drivers/driver_nl80211.c
|
||||
@@ -3071,7 +3071,7 @@ static int wpa_driver_nl80211_del_beacon
|
||||
struct wpa_driver_nl80211_data *drv = bss->drv;
|
||||
struct i802_link *link = nl80211_get_link(bss, link_id);
|
||||
|
||||
- if (!link->beacon_set)
|
||||
+ if (!link || !link->beacon_set)
|
||||
return 0;
|
||||
|
||||
wpa_printf(MSG_DEBUG, "nl80211: Remove beacon (ifindex=%d)",
|
@ -86,12 +86,16 @@ static uc_value_t *
|
||||
uc_hostapd_add_iface(uc_vm_t *vm, size_t nargs)
|
||||
{
|
||||
uc_value_t *iface = uc_fn_arg(0);
|
||||
char *data;
|
||||
int ret;
|
||||
|
||||
if (ucv_type(iface) != UC_STRING)
|
||||
return ucv_int64_new(-1);
|
||||
|
||||
ret = hostapd_add_iface(interfaces, ucv_string_get(iface));
|
||||
data = strdup(ucv_string_get(iface));
|
||||
ret = hostapd_add_iface(interfaces, data);
|
||||
free(data);
|
||||
|
||||
hostapd_ucode_update_interfaces();
|
||||
|
||||
return ucv_int64_new(ret);
|
||||
|
@ -8,12 +8,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=iw
|
||||
PKG_VERSION:=5.19
|
||||
PKG_VERSION:=6.9
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=@KERNEL/software/network/iw
|
||||
PKG_HASH:=f167bbe947dd53bb9ebc0c1dcef5db6ad73ac1d6084f2c6f9376c5c360cc4d4e
|
||||
PKG_HASH:=3f2db22ad41c675242b98ae3942dbf3112548c60a42ff739210f2de4e98e4894
|
||||
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
|
@ -16,7 +16,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -45,30 +45,30 @@ NLLIBNAME = libnl-1
|
||||
@@ -46,30 +46,30 @@ NLLIBNAME = libnl-1
|
||||
endif
|
||||
|
||||
ifeq ($(NL2FOUND),Y)
|
||||
@ -55,7 +55,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
NLLIBNAME = libnl-3.1
|
||||
endif
|
||||
|
||||
@@ -76,8 +76,8 @@ ifeq ($(NLLIBNAME),)
|
||||
@@ -77,8 +77,8 @@ ifeq ($(NLLIBNAME),)
|
||||
$(error Cannot find development files for any supported version of libnl)
|
||||
endif
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/event.c
|
||||
+++ b/event.c
|
||||
@@ -971,6 +971,7 @@ static int print_event(struct nl_msg *ms
|
||||
@@ -973,6 +973,7 @@ static int print_event(struct nl_msg *ms
|
||||
}
|
||||
|
||||
switch (gnlh->cmd) {
|
||||
@ -8,7 +8,7 @@
|
||||
case NL80211_CMD_NEW_WIPHY:
|
||||
printf("renamed to %s\n", nla_get_string(tb[NL80211_ATTR_WIPHY_NAME]));
|
||||
break;
|
||||
@@ -1006,6 +1007,7 @@ static int print_event(struct nl_msg *ms
|
||||
@@ -1008,6 +1009,7 @@ static int print_event(struct nl_msg *ms
|
||||
case NL80211_CMD_SCHED_SCAN_RESULTS:
|
||||
printf("got scheduled scan results\n");
|
||||
break;
|
||||
@ -16,7 +16,7 @@
|
||||
case NL80211_CMD_WIPHY_REG_CHANGE:
|
||||
case NL80211_CMD_REG_CHANGE:
|
||||
if (gnlh->cmd == NL80211_CMD_WIPHY_REG_CHANGE)
|
||||
@@ -1088,6 +1090,7 @@ static int print_event(struct nl_msg *ms
|
||||
@@ -1090,6 +1092,7 @@ static int print_event(struct nl_msg *ms
|
||||
mac_addr_n2a(macbuf, nla_data(tb[NL80211_ATTR_MAC]));
|
||||
printf("del station %s\n", macbuf);
|
||||
break;
|
||||
@ -24,7 +24,7 @@
|
||||
case NL80211_CMD_JOIN_IBSS:
|
||||
mac_addr_n2a(macbuf, nla_data(tb[NL80211_ATTR_MAC]));
|
||||
printf("IBSS %s joined\n", macbuf);
|
||||
@@ -1295,9 +1298,9 @@ static int print_event(struct nl_msg *ms
|
||||
@@ -1297,9 +1300,9 @@ static int print_event(struct nl_msg *ms
|
||||
case NL80211_CMD_ASSOC_COMEBACK: /* 147 */
|
||||
parse_assoc_comeback(tb, gnlh->cmd);
|
||||
break;
|
||||
@ -38,7 +38,7 @@
|
||||
|
||||
--- a/info.c
|
||||
+++ b/info.c
|
||||
@@ -309,6 +309,7 @@ next:
|
||||
@@ -446,6 +446,7 @@ next:
|
||||
}
|
||||
}
|
||||
|
||||
@ -46,7 +46,7 @@
|
||||
if (tb_band[NL80211_BAND_ATTR_RATES]) {
|
||||
printf("\t\tBitrates (non-HT):\n");
|
||||
nla_for_each_nested(nl_rate, tb_band[NL80211_BAND_ATTR_RATES], rem_rate) {
|
||||
@@ -325,6 +326,7 @@ next:
|
||||
@@ -462,6 +463,7 @@ next:
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
@ -54,7 +54,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -390,6 +392,7 @@ next:
|
||||
@@ -527,6 +529,7 @@ next:
|
||||
printf("\tCoverage class: %d (up to %dm)\n", coverage, 450 * coverage);
|
||||
}
|
||||
|
||||
@ -62,7 +62,7 @@
|
||||
if (tb_msg[NL80211_ATTR_CIPHER_SUITES]) {
|
||||
int num = nla_len(tb_msg[NL80211_ATTR_CIPHER_SUITES]) / sizeof(__u32);
|
||||
int i;
|
||||
@@ -401,6 +404,7 @@ next:
|
||||
@@ -538,6 +541,7 @@ next:
|
||||
cipher_name(ciphers[i]));
|
||||
}
|
||||
}
|
||||
@ -70,7 +70,7 @@
|
||||
|
||||
if (tb_msg[NL80211_ATTR_WIPHY_ANTENNA_AVAIL_TX] &&
|
||||
tb_msg[NL80211_ATTR_WIPHY_ANTENNA_AVAIL_RX])
|
||||
@@ -418,9 +422,11 @@ next:
|
||||
@@ -555,9 +559,11 @@ next:
|
||||
print_iftype_list("\tSupported interface modes", "\t\t",
|
||||
tb_msg[NL80211_ATTR_SUPPORTED_IFTYPES]);
|
||||
|
||||
@ -82,7 +82,7 @@
|
||||
|
||||
if (tb_msg[NL80211_ATTR_INTERFACE_COMBINATIONS]) {
|
||||
struct nlattr *nl_combi;
|
||||
@@ -510,6 +516,7 @@ broken_combination:
|
||||
@@ -647,6 +653,7 @@ broken_combination:
|
||||
printf("\tinterface combinations are not supported\n");
|
||||
}
|
||||
|
||||
@ -90,7 +90,7 @@
|
||||
if (tb_msg[NL80211_ATTR_SUPPORTED_COMMANDS]) {
|
||||
printf("\tSupported commands:\n");
|
||||
nla_for_each_nested(nl_cmd, tb_msg[NL80211_ATTR_SUPPORTED_COMMANDS], rem_cmd)
|
||||
@@ -607,6 +614,7 @@ broken_combination:
|
||||
@@ -744,6 +751,7 @@ broken_combination:
|
||||
printf("\t\t * wake up on TCP connection\n");
|
||||
}
|
||||
}
|
||||
@ -98,7 +98,7 @@
|
||||
|
||||
if (tb_msg[NL80211_ATTR_ROAM_SUPPORT])
|
||||
printf("\tDevice supports roaming.\n");
|
||||
@@ -645,6 +653,7 @@ broken_combination:
|
||||
@@ -782,6 +790,7 @@ broken_combination:
|
||||
}
|
||||
}
|
||||
|
||||
@ -106,7 +106,7 @@
|
||||
if (tb_msg[NL80211_ATTR_FEATURE_FLAGS]) {
|
||||
unsigned int features = nla_get_u32(tb_msg[NL80211_ATTR_FEATURE_FLAGS]);
|
||||
|
||||
@@ -709,6 +718,7 @@ broken_combination:
|
||||
@@ -846,6 +855,7 @@ broken_combination:
|
||||
if (features & NL80211_FEATURE_ND_RANDOM_MAC_ADDR)
|
||||
printf("\tDevice supports randomizing MAC-addr in net-detect scans.\n");
|
||||
}
|
||||
@ -114,7 +114,7 @@
|
||||
|
||||
if (tb_msg[NL80211_ATTR_TDLS_SUPPORT])
|
||||
printf("\tDevice supports T-DLS.\n");
|
||||
@@ -774,6 +784,7 @@ TOPLEVEL(list, NULL, NL80211_CMD_GET_WIP
|
||||
@@ -914,6 +924,7 @@ TOPLEVEL(list, NULL, NL80211_CMD_GET_WIP
|
||||
"List all wireless devices and their capabilities.");
|
||||
TOPLEVEL(phy, NULL, NL80211_CMD_GET_WIPHY, NLM_F_DUMP, CIB_NONE, handle_info, NULL);
|
||||
|
||||
@ -122,7 +122,7 @@
|
||||
static int handle_commands(struct nl80211_state *state, struct nl_msg *msg,
|
||||
int argc, char **argv, enum id_input id)
|
||||
{
|
||||
@@ -785,6 +796,7 @@ static int handle_commands(struct nl8021
|
||||
@@ -925,6 +936,7 @@ static int handle_commands(struct nl8021
|
||||
}
|
||||
TOPLEVEL(commands, NULL, NL80211_CMD_GET_WIPHY, 0, CIB_NONE, handle_commands,
|
||||
"list all known commands and their decimal & hex value");
|
||||
@ -132,7 +132,7 @@
|
||||
{
|
||||
--- a/scan.c
|
||||
+++ b/scan.c
|
||||
@@ -1306,6 +1306,9 @@ static void print_ht_op(const uint8_t ty
|
||||
@@ -1308,6 +1308,9 @@ static void print_ht_op(const uint8_t ty
|
||||
printf("\t\t * secondary channel offset: %s\n",
|
||||
ht_secondary_offset[data[1] & 0x3]);
|
||||
printf("\t\t * STA channel width: %s\n", sta_chan_width[(data[1] & 0x4)>>2]);
|
||||
@ -142,10 +142,11 @@
|
||||
printf("\t\t * RIFS: %d\n", (data[1] & 0x8)>>3);
|
||||
printf("\t\t * HT protection: %s\n", protection[data[2] & 0x3]);
|
||||
printf("\t\t * non-GF present: %d\n", (data[2] & 0x4) >> 2);
|
||||
@@ -1716,6 +1719,14 @@ static void print_ie(const struct ie_pri
|
||||
|
||||
@@ -1818,30 +1821,31 @@ static void print_ie(const struct ie_pri
|
||||
static const struct ie_print ieprinters[] = {
|
||||
[0] = { "SSID", print_ssid, 0, 32, BIT(PRINT_SCAN) | BIT(PRINT_LINK), },
|
||||
[0] = { "SSID", print_ssid, 0, 32,
|
||||
BIT(PRINT_SCAN) | BIT(PRINT_LINK) | BIT(PRINT_LINK_MLO_MLD), },
|
||||
+ [11] = { "BSS Load", print_bss_load, 5, 5, BIT(PRINT_SCAN), },
|
||||
+ [45] = { "HT capabilities", print_ht_capa, 26, 26, BIT(PRINT_SCAN), },
|
||||
+ [48] = { "RSN", print_rsn, 2, 255, BIT(PRINT_SCAN), },
|
||||
+ [61] = { "HT operation", print_ht_op, 22, 22, BIT(PRINT_SCAN), },
|
||||
@ -157,7 +158,9 @@
|
||||
[1] = { "Supported rates", print_supprates, 0, 255, BIT(PRINT_SCAN), },
|
||||
[3] = { "DS Parameter set", print_ds, 1, 1, BIT(PRINT_SCAN), },
|
||||
[5] = { "TIM", print_tim, 4, 255, BIT(PRINT_SCAN), },
|
||||
@@ -1725,26 +1736,20 @@ static const struct ie_print ieprinters[
|
||||
[6] = { "IBSS ATIM window", print_ibssatim, 2, 2, BIT(PRINT_SCAN), },
|
||||
[7] = { "Country", print_country, 3, 255, BIT(PRINT_SCAN), },
|
||||
- [11] = { "BSS Load", print_bss_load, 5, 5, BIT(PRINT_SCAN), },
|
||||
[32] = { "Power constraint", print_powerconstraint, 1, 1, BIT(PRINT_SCAN), },
|
||||
[35] = { "TPC report", print_tpcreport, 2, 2, BIT(PRINT_SCAN), },
|
||||
[42] = { "ERP", print_erp, 1, 255, BIT(PRINT_SCAN), },
|
||||
@ -179,13 +182,15 @@
|
||||
[127] = { "Extended capabilities", print_capabilities, 0, 255, BIT(PRINT_SCAN), },
|
||||
[107] = { "802.11u Interworking", print_interworking, 0, 255, BIT(PRINT_SCAN), },
|
||||
[108] = { "802.11u Advertisement", print_11u_advert, 0, 255, BIT(PRINT_SCAN), },
|
||||
[111] = { "802.11u Roaming Consortium", print_11u_rcon, 2, 255, BIT(PRINT_SCAN), },
|
||||
[195] = { "Transmit Power Envelope", print_tx_power_envelope, 2, 5, BIT(PRINT_SCAN), },
|
||||
@@ -1850,6 +1854,7 @@ static const struct ie_print ieprinters[
|
||||
[214] = { "Short beacon interval", print_short_beacon_int, 2, 2, BIT(PRINT_SCAN), },
|
||||
[217] = { "S1G capabilities", print_s1g_capa, 15, 15, BIT(PRINT_SCAN), },
|
||||
[232] = { "S1G operation", print_s1g_oper, 6, 6, BIT(PRINT_SCAN), },
|
||||
+#endif
|
||||
};
|
||||
|
||||
static void print_wifi_wpa(const uint8_t type, uint8_t len, const uint8_t *data,
|
||||
@@ -2080,8 +2085,10 @@ static void print_wifi_wps(const uint8_t
|
||||
@@ -2185,8 +2190,10 @@ static void print_wifi_wps(const uint8_t
|
||||
|
||||
static const struct ie_print wifiprinters[] = {
|
||||
[1] = { "WPA", print_wifi_wpa, 2, 255, BIT(PRINT_SCAN), },
|
||||
@ -196,7 +201,7 @@
|
||||
};
|
||||
|
||||
static inline void print_p2p(const uint8_t type, uint8_t len,
|
||||
@@ -2244,6 +2251,10 @@ static void print_vendor(unsigned char l
|
||||
@@ -2349,6 +2356,10 @@ static void print_vendor(unsigned char l
|
||||
return;
|
||||
}
|
||||
|
||||
@ -207,7 +212,7 @@
|
||||
if (len >= 4 && memcmp(data, wfa_oui, 3) == 0) {
|
||||
if (data[3] < ARRAY_SIZE(wfa_printers) &&
|
||||
wfa_printers[data[3]].name &&
|
||||
@@ -2377,6 +2388,7 @@ static void print_capa_non_dmg(__u16 cap
|
||||
@@ -2483,6 +2494,7 @@ static void print_capa_non_dmg(__u16 cap
|
||||
printf(" ESS");
|
||||
if (capa & WLAN_CAPABILITY_IBSS)
|
||||
printf(" IBSS");
|
||||
@ -215,7 +220,7 @@
|
||||
if (capa & WLAN_CAPABILITY_CF_POLLABLE)
|
||||
printf(" CfPollable");
|
||||
if (capa & WLAN_CAPABILITY_CF_POLL_REQUEST)
|
||||
@@ -2405,6 +2417,7 @@ static void print_capa_non_dmg(__u16 cap
|
||||
@@ -2511,6 +2523,7 @@ static void print_capa_non_dmg(__u16 cap
|
||||
printf(" DelayedBACK");
|
||||
if (capa & WLAN_CAPABILITY_IMM_BACK)
|
||||
printf(" ImmediateBACK");
|
||||
@ -223,10 +228,10 @@
|
||||
}
|
||||
|
||||
static int print_bss_handler(struct nl_msg *msg, void *arg)
|
||||
@@ -2489,8 +2502,10 @@ static int print_bss_handler(struct nl_m
|
||||
if (bss[NL80211_BSS_FREQUENCY]) {
|
||||
int freq = nla_get_u32(bss[NL80211_BSS_FREQUENCY]);
|
||||
printf("\tfreq: %d\n", freq);
|
||||
@@ -2601,8 +2614,10 @@ static int print_bss_handler(struct nl_m
|
||||
else
|
||||
printf("\tfreq: %d\n", freq);
|
||||
|
||||
+#ifdef IW_FULL
|
||||
if (freq > 45000)
|
||||
is_dmg = true;
|
||||
@ -234,7 +239,7 @@
|
||||
}
|
||||
if (bss[NL80211_BSS_BEACON_INTERVAL])
|
||||
printf("\tbeacon interval: %d TUs\n",
|
||||
@@ -2684,6 +2699,7 @@ static int handle_stop_sched_scan(struct
|
||||
@@ -2796,6 +2811,7 @@ static int handle_stop_sched_scan(struct
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -242,7 +247,7 @@
|
||||
COMMAND(scan, sched_start,
|
||||
SCHED_SCAN_OPTIONS,
|
||||
NL80211_CMD_START_SCHED_SCAN, 0, CIB_NETDEV, handle_start_sched_scan,
|
||||
@@ -2694,3 +2710,4 @@ COMMAND(scan, sched_start,
|
||||
@@ -2806,3 +2822,4 @@ COMMAND(scan, sched_start,
|
||||
COMMAND(scan, sched_stop, "",
|
||||
NL80211_CMD_STOP_SCHED_SCAN, 0, CIB_NETDEV, handle_stop_sched_scan,
|
||||
"Stop an ongoing scheduled scan.");
|
||||
@ -265,7 +270,7 @@
|
||||
|
||||
int ieee80211_channel_to_frequency(int chan, enum nl80211_band band)
|
||||
{
|
||||
@@ -311,6 +313,9 @@ int parse_keys(struct nl_msg *msg, char
|
||||
@@ -313,6 +315,9 @@ int parse_keys(struct nl_msg *msg, char
|
||||
char keybuf[13];
|
||||
int pos = 0;
|
||||
|
||||
@ -277,7 +282,7 @@
|
||||
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -23,6 +23,12 @@ _OBJS := $(sort $(patsubst %.c,%.o,$(wil
|
||||
@@ -24,6 +24,12 @@ _OBJS := $(sort $(patsubst %.c,%.o,$(wil
|
||||
VERSION_OBJS := $(filter-out version.o, $(_OBJS))
|
||||
OBJS := $(VERSION_OBJS) version.o
|
||||
|
||||
@ -292,7 +297,7 @@
|
||||
ifeq ($(NO_PKG_CONFIG),)
|
||||
--- a/station.c
|
||||
+++ b/station.c
|
||||
@@ -791,10 +791,12 @@ static int handle_station_set_plink(stru
|
||||
@@ -801,10 +801,12 @@ static int handle_station_set_plink(stru
|
||||
nla_put_failure:
|
||||
return -ENOBUFS;
|
||||
}
|
||||
@ -305,7 +310,7 @@
|
||||
|
||||
static int handle_station_set_vlan(struct nl80211_state *state,
|
||||
struct nl_msg *msg,
|
||||
@@ -889,11 +891,13 @@ static int handle_station_set_mesh_power
|
||||
@@ -899,11 +901,13 @@ static int handle_station_set_mesh_power
|
||||
nla_put_failure:
|
||||
return -ENOBUFS;
|
||||
}
|
||||
@ -321,7 +326,7 @@
|
||||
struct nl_msg *msg,
|
||||
--- a/interface.c
|
||||
+++ b/interface.c
|
||||
@@ -629,9 +629,11 @@ static int handle_interface_wds_peer(str
|
||||
@@ -668,9 +668,11 @@ static int handle_interface_wds_peer(str
|
||||
nla_put_failure:
|
||||
return -ENOBUFS;
|
||||
}
|
||||
@ -333,7 +338,7 @@
|
||||
|
||||
static int set_mcast_rate(struct nl80211_state *state,
|
||||
struct nl_msg *msg,
|
||||
@@ -721,6 +723,7 @@ static int handle_chan(struct nl80211_st
|
||||
@@ -760,6 +762,7 @@ static int handle_chan(struct nl80211_st
|
||||
return handle_chanfreq(state, msg, true, argc, argv, id);
|
||||
}
|
||||
|
||||
@ -341,14 +346,14 @@
|
||||
SECTION(switch);
|
||||
COMMAND(switch, freq,
|
||||
"<freq> [NOHT|HT20|HT40+|HT40-|5MHz|10MHz|80MHz] [beacons <count>] [block-tx]\n"
|
||||
@@ -992,3 +995,4 @@ COMMAND(set, tidconf, "[peer <MAC addres
|
||||
@@ -1031,3 +1034,4 @@ COMMAND(set, tidconf, "[peer <MAC addres
|
||||
" $ iw dev wlan0 set tidconf peer xx:xx:xx:xx:xx:xx tids 0x2 bitrates auto\n"
|
||||
" $ iw dev wlan0 set tidconf peer xx:xx:xx:xx:xx:xx tids 0x2 bitrates limit vht-mcs-5 4:9\n"
|
||||
);
|
||||
+#endif
|
||||
--- a/phy.c
|
||||
+++ b/phy.c
|
||||
@@ -369,6 +369,7 @@ err_out:
|
||||
@@ -403,6 +403,7 @@ err_out:
|
||||
free(cac_trigger_argv);
|
||||
return err;
|
||||
}
|
||||
@ -356,9 +361,9 @@
|
||||
TOPLEVEL(cac, "channel <channel> [NOHT|HT20|HT40+|HT40-|5MHz|10MHz|80MHz]\n"
|
||||
"freq <freq> [NOHT|HT20|HT40+|HT40-|5MHz|10MHz|80MHz]\n"
|
||||
"freq <control freq> [5|10|20|40|80|80+80|160] [<center1_freq> [<center2_freq>]]",
|
||||
@@ -380,6 +381,7 @@ COMMAND(cac, trigger,
|
||||
NL80211_CMD_RADAR_DETECT, 0, CIB_NETDEV, handle_cac_trigger,
|
||||
"Start or trigger a channel availability check (CAC) looking to look for\n"
|
||||
@@ -422,6 +423,7 @@ COMMAND(cac, background,
|
||||
NL80211_CMD_RADAR_DETECT, 0, CIB_NETDEV, handle_cac_background,
|
||||
"Start background channel availability check (CAC) looking to look for\n"
|
||||
"radars on the given channel.");
|
||||
+#endif
|
||||
|
||||
|
@ -7,9 +7,9 @@ PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/firmware-utils.git
|
||||
PKG_SOURCE_DATE:=2024-03-23
|
||||
PKG_SOURCE_VERSION:=6b242991a995c41769977efb010dc9f4e4ec3da2
|
||||
PKG_MIRROR_HASH:=00ff2661fda2eb299ccbfaa07dff8fbcf46b3441a6e9f6f46eaa119e66dbe142
|
||||
PKG_SOURCE_DATE:=2024-06-20
|
||||
PKG_SOURCE_VERSION:=6ac44974185a3e7dc7848e97b964339948e817a7
|
||||
PKG_MIRROR_HASH:=ee5b29f45593750a6806cfa7cad3fd766b321b44107a6b481b890efe82a7dbf5
|
||||
|
||||
PKG_BUILD_DEPENDS:=openssl zlib
|
||||
|
||||
|
@ -12,9 +12,9 @@ PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=https://github.com/jow-/ucode.git
|
||||
PKG_SOURCE_DATE:=2024-05-09
|
||||
PKG_SOURCE_VERSION:=0d823e702bfe5f2bb5be694030a98afedf34aa6b
|
||||
PKG_MIRROR_HASH:=c52d499d2490e958e36ed80c32e8fd6d94cacf3b43b9d14c45c68a25bc44d536
|
||||
PKG_SOURCE_DATE:=2024-06-18
|
||||
PKG_SOURCE_VERSION:=4dd98370ef558a62a9afd10ad6aa1cc658cf7339
|
||||
PKG_MIRROR_HASH:=c2cf650a3597457203040feebd6a9bff21be2dc55f80553cf998cff2c0d00244
|
||||
PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
|
||||
PKG_LICENSE:=ISC
|
||||
|
||||
|
@ -531,6 +531,7 @@ CONFIG_PHY_BCM_SR_PCIE=y
|
||||
CONFIG_PHY_BCM_SR_USB=y
|
||||
CONFIG_PHY_BRCM_SATA=y
|
||||
CONFIG_PHY_BRCM_USB=y
|
||||
CONFIG_PHY_FSL_IMX8MQ_USB=y
|
||||
CONFIG_PHY_FSL_IMX8M_PCIE=y
|
||||
# CONFIG_PHY_FSL_LYNX_28G is not set
|
||||
CONFIG_PHY_HI3660_USB=y
|
||||
|
@ -105,6 +105,9 @@ CONFIG_DMA_REMAP=y
|
||||
CONFIG_DMI=y
|
||||
CONFIG_DMIID=y
|
||||
CONFIG_DMI_SYSFS=y
|
||||
CONFIG_DRM_FBDEV_EMULATION=y
|
||||
CONFIG_DRM_FBDEV_OVERALLOC=100
|
||||
CONFIG_DRM_LOAD_EDID_FIRMWARE=y
|
||||
CONFIG_DTC=y
|
||||
CONFIG_EDAC_SUPPORT=y
|
||||
CONFIG_EFI=y
|
||||
|
@ -112,7 +112,8 @@ define Device/generic
|
||||
kmod-fsl-enetc-net kmod-dwmac-imx kmod-fsl-fec kmod-thunderx-net \
|
||||
kmod-dwmac-rockchip kmod-dwmac-sun8i kmod-phy-aquantia kmod-phy-broadcom \
|
||||
kmod-phy-marvell kmod-phy-marvell-10g kmod-sfp kmod-atlantic \
|
||||
kmod-bcmgenet kmod-octeontx2-net kmod-renesas-net-avb
|
||||
kmod-bcmgenet kmod-octeontx2-net kmod-renesas-net-avb \
|
||||
kmod-phy-realtek kmod-phy-smsc
|
||||
endef
|
||||
TARGET_DEVICES += generic
|
||||
|
||||
|
@ -1,26 +0,0 @@
|
||||
From: John Crispin <john@phrozen.org>
|
||||
Subject: ath79: Register GPIO driver earlier
|
||||
|
||||
HACK: register the GPIO driver earlier to ensure that gpio_request calls
|
||||
from mach files succeed.
|
||||
|
||||
Submitted-by: John Crispin <john@phrozen.org>
|
||||
---
|
||||
drivers/gpio/gpio-ath79.c | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/gpio/gpio-ath79.c
|
||||
+++ b/drivers/gpio/gpio-ath79.c
|
||||
@@ -302,7 +302,11 @@ static struct platform_driver ath79_gpio
|
||||
.probe = ath79_gpio_probe,
|
||||
};
|
||||
|
||||
-module_platform_driver(ath79_gpio_driver);
|
||||
+static int __init ath79_gpio_init(void)
|
||||
+{
|
||||
+ return platform_driver_register(&ath79_gpio_driver);
|
||||
+}
|
||||
+postcore_initcall(ath79_gpio_init);
|
||||
|
||||
MODULE_DESCRIPTION("Atheros AR71XX/AR724X/AR913X GPIO API support");
|
||||
MODULE_LICENSE("GPL v2");
|
@ -1,20 +0,0 @@
|
||||
From: Gabor Juhos <juhosg@openwrt.org>
|
||||
Subject: [PATCH] ar71xx: Link SPI before MTD
|
||||
|
||||
SVN-Revision: 22863
|
||||
---
|
||||
drivers/Makefile | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/Makefile
|
||||
+++ b/drivers/Makefile
|
||||
@@ -87,8 +87,8 @@ obj-y += scsi/
|
||||
obj-y += nvme/
|
||||
obj-$(CONFIG_ATA) += ata/
|
||||
obj-$(CONFIG_TARGET_CORE) += target/
|
||||
-obj-$(CONFIG_MTD) += mtd/
|
||||
obj-$(CONFIG_SPI) += spi/
|
||||
+obj-$(CONFIG_MTD) += mtd/
|
||||
obj-$(CONFIG_SPMI) += spmi/
|
||||
obj-$(CONFIG_HSI) += hsi/
|
||||
obj-$(CONFIG_SLIMBUS) += slimbus/
|
@ -14,7 +14,7 @@ We don't agree with upstream revert so undo it.
|
||||
|
||||
--- a/drivers/usb/host/xhci-pci.c
|
||||
+++ b/drivers/usb/host/xhci-pci.c
|
||||
@@ -479,8 +479,10 @@ static void xhci_pci_quirks(struct devic
|
||||
@@ -486,8 +486,10 @@ static void xhci_pci_quirks(struct devic
|
||||
pdev->device == 0x3432)
|
||||
xhci->quirks |= XHCI_BROKEN_STREAMS;
|
||||
|
||||
|
@ -52,7 +52,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
erst_base = xhci_read_64(xhci, &ir->ir_set->erst_base);
|
||||
--- a/drivers/usb/host/xhci.h
|
||||
+++ b/drivers/usb/host/xhci.h
|
||||
@@ -1679,8 +1679,9 @@ struct urb_priv {
|
||||
@@ -1680,8 +1680,9 @@ struct urb_priv {
|
||||
* Each segment table entry is 4*32bits long. 1K seems like an ok size:
|
||||
* (1K bytes * 8bytes/bit) / (4*32 bits) = 64 segment entries in the table,
|
||||
* meaning 64 ring segments.
|
||||
|
@ -24,7 +24,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
|
||||
--- a/drivers/usb/host/xhci-pci.c
|
||||
+++ b/drivers/usb/host/xhci-pci.c
|
||||
@@ -482,6 +482,7 @@ static void xhci_pci_quirks(struct devic
|
||||
@@ -489,6 +489,7 @@ static void xhci_pci_quirks(struct devic
|
||||
if (pdev->vendor == PCI_VENDOR_ID_VIA && pdev->device == 0x3483) {
|
||||
xhci->quirks |= XHCI_LPM_SUPPORT;
|
||||
xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS;
|
||||
@ -52,7 +52,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
addr = xhci_trb_virt_to_dma(new_seg, new_deq);
|
||||
--- a/drivers/usb/host/xhci.h
|
||||
+++ b/drivers/usb/host/xhci.h
|
||||
@@ -1914,6 +1914,9 @@ struct xhci_hcd {
|
||||
@@ -1915,6 +1915,9 @@ struct xhci_hcd {
|
||||
#define XHCI_ZHAOXIN_TRB_FETCH BIT_ULL(45)
|
||||
#define XHCI_ZHAOXIN_HOST BIT_ULL(46)
|
||||
|
||||
|
@ -22,7 +22,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
|
||||
--- a/drivers/usb/host/xhci-pci.c
|
||||
+++ b/drivers/usb/host/xhci-pci.c
|
||||
@@ -483,6 +483,7 @@ static void xhci_pci_quirks(struct devic
|
||||
@@ -490,6 +490,7 @@ static void xhci_pci_quirks(struct devic
|
||||
xhci->quirks |= XHCI_LPM_SUPPORT;
|
||||
xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS;
|
||||
xhci->quirks |= XHCI_AVOID_DQ_ON_LINK;
|
||||
|
@ -90,7 +90,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
/* Allow 3 retries for everything but isoc, set CErr = 3 */
|
||||
--- a/drivers/usb/host/xhci-pci.c
|
||||
+++ b/drivers/usb/host/xhci-pci.c
|
||||
@@ -484,6 +484,7 @@ static void xhci_pci_quirks(struct devic
|
||||
@@ -491,6 +491,7 @@ static void xhci_pci_quirks(struct devic
|
||||
xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS;
|
||||
xhci->quirks |= XHCI_AVOID_DQ_ON_LINK;
|
||||
xhci->quirks |= XHCI_ZHAOXIN_TRB_FETCH;
|
||||
@ -100,7 +100,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
|
||||
--- a/drivers/usb/host/xhci.h
|
||||
+++ b/drivers/usb/host/xhci.h
|
||||
@@ -1916,6 +1916,7 @@ struct xhci_hcd {
|
||||
@@ -1917,6 +1917,7 @@ struct xhci_hcd {
|
||||
|
||||
/* Downstream VLI fixes */
|
||||
#define XHCI_AVOID_DQ_ON_LINK BIT_ULL(56)
|
||||
|
@ -47,7 +47,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
/* Device for a quirk */
|
||||
#define PCI_VENDOR_ID_FRESCO_LOGIC 0x1b73
|
||||
#define PCI_DEVICE_ID_FRESCO_LOGIC_PDK 0x1000
|
||||
@@ -290,6 +292,16 @@ static int xhci_pci_reinit(struct xhci_h
|
||||
@@ -291,6 +293,16 @@ static int xhci_pci_reinit(struct xhci_h
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -64,7 +64,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
|
||||
{
|
||||
struct pci_dev *pdev = to_pci_dev(dev);
|
||||
@@ -485,6 +497,8 @@ static void xhci_pci_quirks(struct devic
|
||||
@@ -492,6 +504,8 @@ static void xhci_pci_quirks(struct devic
|
||||
xhci->quirks |= XHCI_AVOID_DQ_ON_LINK;
|
||||
xhci->quirks |= XHCI_ZHAOXIN_TRB_FETCH;
|
||||
xhci->quirks |= XHCI_VLI_SS_BULK_OUT_BUG;
|
||||
@ -75,7 +75,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
|
||||
--- a/drivers/usb/host/xhci-ring.c
|
||||
+++ b/drivers/usb/host/xhci-ring.c
|
||||
@@ -3626,6 +3626,48 @@ static int xhci_align_td(struct xhci_hcd
|
||||
@@ -3657,6 +3657,48 @@ static int xhci_align_td(struct xhci_hcd
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -124,7 +124,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
/* This is very similar to what ehci-q.c qtd_fill() does */
|
||||
int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
|
||||
struct urb *urb, int slot_id, unsigned int ep_index)
|
||||
@@ -3782,6 +3824,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||
@@ -3813,6 +3855,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||
}
|
||||
|
||||
check_trb_math(urb, enqd_len);
|
||||
@ -133,7 +133,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
giveback_first_trb(xhci, slot_id, ep_index, urb->stream_id,
|
||||
start_cycle, start_trb);
|
||||
return 0;
|
||||
@@ -3917,6 +3961,8 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
|
||||
@@ -3948,6 +3992,8 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
|
||||
/* Event on completion */
|
||||
field | TRB_IOC | TRB_TYPE(TRB_STATUS) | ep_ring->cycle_state);
|
||||
|
||||
@ -144,7 +144,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
return 0;
|
||||
--- a/drivers/usb/host/xhci.h
|
||||
+++ b/drivers/usb/host/xhci.h
|
||||
@@ -1917,6 +1917,7 @@ struct xhci_hcd {
|
||||
@@ -1918,6 +1918,7 @@ struct xhci_hcd {
|
||||
/* Downstream VLI fixes */
|
||||
#define XHCI_AVOID_DQ_ON_LINK BIT_ULL(56)
|
||||
#define XHCI_VLI_SS_BULK_OUT_BUG BIT_ULL(57)
|
||||
|
@ -1,52 +0,0 @@
|
||||
From 5c0f94088e0694220a2f0d8ad6e8216b50a80f2e Mon Sep 17 00:00:00 2001
|
||||
From: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
Date: Thu, 13 Jun 2024 15:01:02 +0100
|
||||
Subject: [PATCH 1133/1135] drivers: mmc: sdhci-brcmstb: improve bcm2712 card
|
||||
removal handling
|
||||
|
||||
If the controller is being reset, then the CQE needs to be reset as well.
|
||||
|
||||
For removable cards, CQHCI_SSC1 must specify a polling mode (CBC=0)
|
||||
otherwise it's possible that the controller stops emitting periodic
|
||||
CMD13s on card removal, without raising an error status interrupt.
|
||||
|
||||
Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
---
|
||||
drivers/mmc/host/sdhci-brcmstb.c | 19 ++++++++++++++++---
|
||||
1 file changed, 16 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/drivers/mmc/host/sdhci-brcmstb.c
|
||||
+++ b/drivers/mmc/host/sdhci-brcmstb.c
|
||||
@@ -365,8 +365,21 @@ static void sdhci_brcmstb_cqe_enable(str
|
||||
|
||||
sdhci_cqe_enable(mmc);
|
||||
|
||||
- /* Reset CMD13 polling timer back to eMMC specification default */
|
||||
- cqhci_writel(cq_host, 0x00011000, CQHCI_SSC1);
|
||||
+ /*
|
||||
+ * The controller resets this register to a very short default interval
|
||||
+ * whenever CQHCI is disabled.
|
||||
+ *
|
||||
+ * For removable cards CBC needs to be clear or card removal can hang
|
||||
+ * the CQE. In polling mode, a CIT of 0x4000 "cycles" seems to produce the best
|
||||
+ * throughput.
|
||||
+ *
|
||||
+ * For nonremovable cards, the specification default of CBC=1 CIT=0x1000
|
||||
+ * suffices.
|
||||
+ */
|
||||
+ if (mmc->caps & MMC_CAP_NONREMOVABLE)
|
||||
+ cqhci_writel(cq_host, 0x00011000, CQHCI_SSC1);
|
||||
+ else
|
||||
+ cqhci_writel(cq_host, 0x00004000, CQHCI_SSC1);
|
||||
}
|
||||
|
||||
static const struct cqhci_host_ops sdhci_brcmstb_cqhci_ops = {
|
||||
@@ -386,7 +399,7 @@ static struct sdhci_ops sdhci_brcmstb_op
|
||||
.set_clock = sdhci_bcm2712_set_clock,
|
||||
.set_power = sdhci_brcmstb_set_power,
|
||||
.set_bus_width = sdhci_set_bus_width,
|
||||
- .reset = sdhci_reset,
|
||||
+ .reset = brcmstb_reset,
|
||||
.set_uhs_signaling = sdhci_set_uhs_signaling,
|
||||
.init_sd_express = bcm2712_init_sd_express,
|
||||
};
|
@ -1,85 +0,0 @@
|
||||
From 333b34fa4845022d563e83f01a60af0abd080679 Mon Sep 17 00:00:00 2001
|
||||
From: Lars Kellogg-Stedman <lars@oddbit.com>
|
||||
Date: Wed, 29 May 2024 17:02:43 -0400
|
||||
Subject: [PATCH 1135/1135] ax25: Fix refcount imbalance on inbound connections
|
||||
|
||||
commit 3c34fb0bd4a4237592c5ecb5b2e2531900c55774 upstream.
|
||||
|
||||
When releasing a socket in ax25_release(), we call netdev_put() to
|
||||
decrease the refcount on the associated ax.25 device. However, the
|
||||
execution path for accepting an incoming connection never calls
|
||||
netdev_hold(). This imbalance leads to refcount errors, and ultimately
|
||||
to kernel crashes.
|
||||
|
||||
A typical call trace for the above situation will start with one of the
|
||||
following errors:
|
||||
|
||||
refcount_t: decrement hit 0; leaking memory.
|
||||
refcount_t: underflow; use-after-free.
|
||||
|
||||
And will then have a trace like:
|
||||
|
||||
Call Trace:
|
||||
<TASK>
|
||||
? show_regs+0x64/0x70
|
||||
? __warn+0x83/0x120
|
||||
? refcount_warn_saturate+0xb2/0x100
|
||||
? report_bug+0x158/0x190
|
||||
? prb_read_valid+0x20/0x30
|
||||
? handle_bug+0x3e/0x70
|
||||
? exc_invalid_op+0x1c/0x70
|
||||
? asm_exc_invalid_op+0x1f/0x30
|
||||
? refcount_warn_saturate+0xb2/0x100
|
||||
? refcount_warn_saturate+0xb2/0x100
|
||||
ax25_release+0x2ad/0x360
|
||||
__sock_release+0x35/0xa0
|
||||
sock_close+0x19/0x20
|
||||
[...]
|
||||
|
||||
On reboot (or any attempt to remove the interface), the kernel gets
|
||||
stuck in an infinite loop:
|
||||
|
||||
unregister_netdevice: waiting for ax0 to become free. Usage count = 0
|
||||
|
||||
This patch corrects these issues by ensuring that we call netdev_hold()
|
||||
and ax25_dev_hold() for new connections in ax25_accept(). This makes the
|
||||
logic leading to ax25_accept() match the logic for ax25_bind(): in both
|
||||
cases we increment the refcount, which is ultimately decremented in
|
||||
ax25_release().
|
||||
|
||||
Fixes: 9fd75b66b8f6 ("ax25: Fix refcount leaks caused by ax25_cb_del()")
|
||||
Signed-off-by: Lars Kellogg-Stedman <lars@oddbit.com>
|
||||
Tested-by: Duoming Zhou <duoming@zju.edu.cn>
|
||||
Tested-by: Dan Cross <crossd@gmail.com>
|
||||
Tested-by: Chris Maness <christopher.maness@gmail.com>
|
||||
Reviewed-by: Dan Carpenter <dan.carpenter@linaro.org>
|
||||
Link: https://lore.kernel.org/r/20240529210242.3346844-2-lars@oddbit.com
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
net/ax25/af_ax25.c | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
--- a/net/ax25/af_ax25.c
|
||||
+++ b/net/ax25/af_ax25.c
|
||||
@@ -1378,8 +1378,10 @@ static int ax25_accept(struct socket *so
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
struct sock *newsk;
|
||||
+ ax25_dev *ax25_dev;
|
||||
DEFINE_WAIT(wait);
|
||||
struct sock *sk;
|
||||
+ ax25_cb *ax25;
|
||||
int err = 0;
|
||||
|
||||
if (sock->state != SS_UNCONNECTED)
|
||||
@@ -1434,6 +1436,10 @@ static int ax25_accept(struct socket *so
|
||||
kfree_skb(skb);
|
||||
sk_acceptq_removed(sk);
|
||||
newsock->state = SS_CONNECTED;
|
||||
+ ax25 = sk_to_ax25(newsk);
|
||||
+ ax25_dev = ax25->ax25_dev;
|
||||
+ netdev_hold(ax25_dev->dev, &ax25->dev_tracker, GFP_ATOMIC);
|
||||
+ ax25_dev_hold(ax25_dev);
|
||||
|
||||
out:
|
||||
release_sock(sk);
|
@ -108,7 +108,7 @@ it on BCM4708 family.
|
||||
if (xhci->quirks & XHCI_NEC_HOST)
|
||||
--- a/drivers/usb/host/xhci.h
|
||||
+++ b/drivers/usb/host/xhci.h
|
||||
@@ -1907,6 +1907,7 @@ struct xhci_hcd {
|
||||
@@ -1908,6 +1908,7 @@ struct xhci_hcd {
|
||||
#define XHCI_RESET_TO_DEFAULT BIT_ULL(44)
|
||||
#define XHCI_ZHAOXIN_TRB_FETCH BIT_ULL(45)
|
||||
#define XHCI_ZHAOXIN_HOST BIT_ULL(46)
|
||||
|
@ -103,7 +103,7 @@ it on BCM4708 family.
|
||||
if (xhci->quirks & XHCI_NEC_HOST)
|
||||
--- a/drivers/usb/host/xhci.h
|
||||
+++ b/drivers/usb/host/xhci.h
|
||||
@@ -1912,6 +1912,7 @@ struct xhci_hcd {
|
||||
@@ -1913,6 +1913,7 @@ struct xhci_hcd {
|
||||
#define XHCI_RESET_TO_DEFAULT BIT_ULL(44)
|
||||
#define XHCI_ZHAOXIN_TRB_FETCH BIT_ULL(45)
|
||||
#define XHCI_ZHAOXIN_HOST BIT_ULL(46)
|
||||
|
@ -96,7 +96,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
*
|
||||
--- a/drivers/net/phy/sfp.c
|
||||
+++ b/drivers/net/phy/sfp.c
|
||||
@@ -2474,6 +2474,10 @@ static void sfp_stop(struct sfp *sfp)
|
||||
@@ -2473,6 +2473,10 @@ static void sfp_stop(struct sfp *sfp)
|
||||
sfp_sm_event(sfp, SFP_E_DEV_DOWN);
|
||||
}
|
||||
|
||||
@ -107,7 +107,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
static int sfp_module_info(struct sfp *sfp, struct ethtool_modinfo *modinfo)
|
||||
{
|
||||
/* locking... and check module is present */
|
||||
@@ -2552,6 +2556,7 @@ static const struct sfp_socket_ops sfp_m
|
||||
@@ -2551,6 +2555,7 @@ static const struct sfp_socket_ops sfp_m
|
||||
.detach = sfp_detach,
|
||||
.start = sfp_start,
|
||||
.stop = sfp_stop,
|
||||
|
@ -0,0 +1,28 @@
|
||||
From 27c42e925323b975a64429e313b0cf5c0c02a411 Mon Sep 17 00:00:00 2001
|
||||
From: Kathiravan Thirumoorthy <quic_kathirav@quicinc.com>
|
||||
Date: Mon, 25 Mar 2024 21:19:48 +0530
|
||||
Subject: dt-bindings: arm: qcom,ids: Add SoC ID for IPQ5321
|
||||
|
||||
Add the ID for the Qualcomm IPQ5321 SoC.
|
||||
|
||||
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
|
||||
Reviewed-by: Mukesh Ojha <quic_mojha@quicinc.com>
|
||||
Signed-off-by: Kathiravan Thirumoorthy <quic_kathirav@quicinc.com>
|
||||
Link: https://lore.kernel.org/r/20240325-ipq5321-sku-support-v2-1-f30ce244732f@quicinc.com
|
||||
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
|
||||
---
|
||||
include/dt-bindings/arm/qcom,ids.h | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
(limited to 'include/dt-bindings/arm/qcom,ids.h')
|
||||
|
||||
--- a/include/dt-bindings/arm/qcom,ids.h
|
||||
+++ b/include/dt-bindings/arm/qcom,ids.h
|
||||
@@ -260,6 +260,7 @@
|
||||
#define QCOM_ID_IPQ5312 594
|
||||
#define QCOM_ID_IPQ5302 595
|
||||
#define QCOM_ID_IPQ5300 624
|
||||
+#define QCOM_ID_IPQ5321 650
|
||||
|
||||
/*
|
||||
* The board type and revision information, used by Qualcomm bootloaders and
|
@ -1,9 +1,7 @@
|
||||
From acf5e70f3b261a2308bb3a1db985e2f3a423a5e5 Mon Sep 17 00:00:00 2001
|
||||
From 18764b883e157e28126b54e7d4ba9dd487d5bf54 Mon Sep 17 00:00:00 2001
|
||||
From: Heiner Kallweit <hkallweit1@gmail.com>
|
||||
Date: Sat, 16 Dec 2023 20:58:10 +0100
|
||||
Subject: [PATCH 0832/1085] r8169: add support for LED's on RTL8168/RTL8101
|
||||
|
||||
commit 18764b883e157e28126b54e7d4ba9dd487d5bf54 upstream.
|
||||
Subject: [PATCH] r8169: add support for LED's on RTL8168/RTL8101
|
||||
|
||||
This adds support for the LED's on most chip versions. Excluded are
|
||||
the old non-PCIe versions and RTL8125. RTL8125 has a different LED
|
@ -0,0 +1,75 @@
|
||||
From a2634a5ffcafc31c343c6153ae487eb184c433a6 Mon Sep 17 00:00:00 2001
|
||||
From: Heiner Kallweit <hkallweit1@gmail.com>
|
||||
Date: Wed, 3 Jan 2024 16:52:04 +0100
|
||||
Subject: [PATCH] r8169: fix building with CONFIG_LEDS_CLASS=m
|
||||
|
||||
When r8169 is built-in but LED support is a loadable module, the new
|
||||
code to drive the LED causes a link failure:
|
||||
|
||||
ld: drivers/net/ethernet/realtek/r8169_leds.o: in function `rtl8168_init_leds':
|
||||
r8169_leds.c:(.text+0x36c): undefined reference to `devm_led_classdev_register_ext'
|
||||
|
||||
LED support is an optional feature, so fix this issue by adding a Kconfig
|
||||
symbol R8169_LEDS that is guaranteed to be false if r8169 is built-in
|
||||
and LED core support is a module. As a positive side effect of this change
|
||||
r8169_leds.o no longer is built under this configuration.
|
||||
|
||||
Fixes: 18764b883e15 ("r8169: add support for LED's on RTL8168/RTL8101")
|
||||
Reported-by: kernel test robot <lkp@intel.com>
|
||||
Closes: https://lore.kernel.org/oe-kbuild-all/202312281159.9TPeXbNd-lkp@intel.com/
|
||||
Suggested-by: Arnd Bergmann <arnd@arndb.de>
|
||||
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
|
||||
Reviewed-by: Simon Horman <horms@kernel.org>
|
||||
Tested-by: Simon Horman <horms@kernel.org> # build-tested
|
||||
Tested-by: Arnd Bergmann <arnd@arndb.de>
|
||||
Link: https://lore.kernel.org/r/d055aeb5-fe5c-4ccf-987f-5af93a17537b@gmail.com
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/ethernet/realtek/Kconfig | 7 +++++++
|
||||
drivers/net/ethernet/realtek/Makefile | 6 ++----
|
||||
drivers/net/ethernet/realtek/r8169_main.c | 5 ++---
|
||||
3 files changed, 11 insertions(+), 7 deletions(-)
|
||||
|
||||
--- a/drivers/net/ethernet/realtek/Kconfig
|
||||
+++ b/drivers/net/ethernet/realtek/Kconfig
|
||||
@@ -113,4 +113,11 @@ config R8169
|
||||
To compile this driver as a module, choose M here: the module
|
||||
will be called r8169. This is recommended.
|
||||
|
||||
+config R8169_LEDS
|
||||
+ def_bool R8169 && LEDS_TRIGGER_NETDEV
|
||||
+ depends on !(R8169=y && LEDS_CLASS=m)
|
||||
+ help
|
||||
+ Optional support for controlling the NIC LED's with the netdev
|
||||
+ LED trigger.
|
||||
+
|
||||
endif # NET_VENDOR_REALTEK
|
||||
--- a/drivers/net/ethernet/realtek/Makefile
|
||||
+++ b/drivers/net/ethernet/realtek/Makefile
|
||||
@@ -6,8 +6,6 @@
|
||||
obj-$(CONFIG_8139CP) += 8139cp.o
|
||||
obj-$(CONFIG_8139TOO) += 8139too.o
|
||||
obj-$(CONFIG_ATP) += atp.o
|
||||
-r8169-objs += r8169_main.o r8169_firmware.o r8169_phy_config.o
|
||||
-ifdef CONFIG_LEDS_TRIGGER_NETDEV
|
||||
-r8169-objs += r8169_leds.o
|
||||
-endif
|
||||
+r8169-y += r8169_main.o r8169_firmware.o r8169_phy_config.o
|
||||
+r8169-$(CONFIG_R8169_LEDS) += r8169_leds.o
|
||||
obj-$(CONFIG_R8169) += r8169.o
|
||||
--- a/drivers/net/ethernet/realtek/r8169_main.c
|
||||
+++ b/drivers/net/ethernet/realtek/r8169_main.c
|
||||
@@ -5473,11 +5473,10 @@ static int rtl_init_one(struct pci_dev *
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
-#if IS_REACHABLE(CONFIG_LEDS_CLASS) && IS_ENABLED(CONFIG_LEDS_TRIGGER_NETDEV)
|
||||
- if (tp->mac_version > RTL_GIGA_MAC_VER_06 &&
|
||||
+ if (IS_ENABLED(CONFIG_R8169_LEDS) &&
|
||||
+ tp->mac_version > RTL_GIGA_MAC_VER_06 &&
|
||||
tp->mac_version < RTL_GIGA_MAC_VER_61)
|
||||
rtl8168_init_leds(dev);
|
||||
-#endif
|
||||
|
||||
netdev_info(dev, "%s, %pM, XID %03x, IRQ %d\n",
|
||||
rtl_chip_infos[chipset].name, dev->dev_addr, xid, tp->irq);
|
@ -0,0 +1,355 @@
|
||||
From 3907f1ffc0ecf466d5c04aadc44c4b9203f3ec9a Mon Sep 17 00:00:00 2001
|
||||
From: Heiner Kallweit <hkallweit1@gmail.com>
|
||||
Date: Thu, 1 Feb 2024 22:38:01 +0100
|
||||
Subject: [PATCH] r8169: add support for RTL8126A
|
||||
|
||||
This adds support for the RTL8126A found on Asus z790 Maximus Formula.
|
||||
It was successfully tested w/o the firmware at 1000Mbps. Firmware file
|
||||
has been provided by Realtek and submitted to linux-firmware.
|
||||
2.5G and 5G modes are untested.
|
||||
|
||||
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
drivers/net/ethernet/realtek/r8169.h | 1 +
|
||||
drivers/net/ethernet/realtek/r8169_main.c | 105 ++++++++++++++----
|
||||
.../net/ethernet/realtek/r8169_phy_config.c | 7 ++
|
||||
3 files changed, 89 insertions(+), 24 deletions(-)
|
||||
|
||||
--- a/drivers/net/ethernet/realtek/r8169.h
|
||||
+++ b/drivers/net/ethernet/realtek/r8169.h
|
||||
@@ -68,6 +68,7 @@ enum mac_version {
|
||||
/* support for RTL_GIGA_MAC_VER_60 has been removed */
|
||||
RTL_GIGA_MAC_VER_61,
|
||||
RTL_GIGA_MAC_VER_63,
|
||||
+ RTL_GIGA_MAC_VER_65,
|
||||
RTL_GIGA_MAC_NONE
|
||||
};
|
||||
|
||||
--- a/drivers/net/ethernet/realtek/r8169_main.c
|
||||
+++ b/drivers/net/ethernet/realtek/r8169_main.c
|
||||
@@ -55,6 +55,7 @@
|
||||
#define FIRMWARE_8107E_2 "rtl_nic/rtl8107e-2.fw"
|
||||
#define FIRMWARE_8125A_3 "rtl_nic/rtl8125a-3.fw"
|
||||
#define FIRMWARE_8125B_2 "rtl_nic/rtl8125b-2.fw"
|
||||
+#define FIRMWARE_8126A_2 "rtl_nic/rtl8126a-2.fw"
|
||||
|
||||
/* Maximum number of multicast addresses to filter (vs. Rx-all-multicast).
|
||||
The RTL chips use a 64 element hash table based on the Ethernet CRC. */
|
||||
@@ -140,6 +141,7 @@ static const struct {
|
||||
[RTL_GIGA_MAC_VER_61] = {"RTL8125A", FIRMWARE_8125A_3},
|
||||
/* reserve 62 for CFG_METHOD_4 in the vendor driver */
|
||||
[RTL_GIGA_MAC_VER_63] = {"RTL8125B", FIRMWARE_8125B_2},
|
||||
+ [RTL_GIGA_MAC_VER_65] = {"RTL8126A", FIRMWARE_8126A_2},
|
||||
};
|
||||
|
||||
static const struct pci_device_id rtl8169_pci_tbl[] = {
|
||||
@@ -162,6 +164,7 @@ static const struct pci_device_id rtl816
|
||||
{ PCI_VENDOR_ID_LINKSYS, 0x1032, PCI_ANY_ID, 0x0024 },
|
||||
{ 0x0001, 0x8168, PCI_ANY_ID, 0x2410 },
|
||||
{ PCI_VDEVICE(REALTEK, 0x8125) },
|
||||
+ { PCI_VDEVICE(REALTEK, 0x8126) },
|
||||
{ PCI_VDEVICE(REALTEK, 0x3000) },
|
||||
{}
|
||||
};
|
||||
@@ -331,8 +334,12 @@ enum rtl8168_registers {
|
||||
};
|
||||
|
||||
enum rtl8125_registers {
|
||||
+ INT_CFG0_8125 = 0x34,
|
||||
+#define INT_CFG0_ENABLE_8125 BIT(0)
|
||||
+#define INT_CFG0_CLKREQEN BIT(3)
|
||||
IntrMask_8125 = 0x38,
|
||||
IntrStatus_8125 = 0x3c,
|
||||
+ INT_CFG1_8125 = 0x7a,
|
||||
TxPoll_8125 = 0x90,
|
||||
MAC0_BKP = 0x19e0,
|
||||
EEE_TXIDLE_TIMER_8125 = 0x6048,
|
||||
@@ -1144,7 +1151,7 @@ static void rtl_writephy(struct rtl8169_
|
||||
case RTL_GIGA_MAC_VER_31:
|
||||
r8168dp_2_mdio_write(tp, location, val);
|
||||
break;
|
||||
- case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
|
||||
+ case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
|
||||
r8168g_mdio_write(tp, location, val);
|
||||
break;
|
||||
default:
|
||||
@@ -1159,7 +1166,7 @@ static int rtl_readphy(struct rtl8169_pr
|
||||
case RTL_GIGA_MAC_VER_28:
|
||||
case RTL_GIGA_MAC_VER_31:
|
||||
return r8168dp_2_mdio_read(tp, location);
|
||||
- case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
|
||||
+ case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
|
||||
return r8168g_mdio_read(tp, location);
|
||||
default:
|
||||
return r8169_mdio_read(tp, location);
|
||||
@@ -1368,7 +1375,7 @@ static void rtl_set_d3_pll_down(struct r
|
||||
case RTL_GIGA_MAC_VER_25 ... RTL_GIGA_MAC_VER_26:
|
||||
case RTL_GIGA_MAC_VER_29 ... RTL_GIGA_MAC_VER_30:
|
||||
case RTL_GIGA_MAC_VER_32 ... RTL_GIGA_MAC_VER_37:
|
||||
- case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_63:
|
||||
+ case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_65:
|
||||
if (enable)
|
||||
RTL_W8(tp, PMCH, RTL_R8(tp, PMCH) & ~D3_NO_PLL_DOWN);
|
||||
else
|
||||
@@ -1535,7 +1542,7 @@ static void __rtl8169_set_wol(struct rtl
|
||||
break;
|
||||
case RTL_GIGA_MAC_VER_34:
|
||||
case RTL_GIGA_MAC_VER_37:
|
||||
- case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_63:
|
||||
+ case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_65:
|
||||
if (wolopts)
|
||||
rtl_mod_config2(tp, 0, PME_SIGNAL);
|
||||
else
|
||||
@@ -2122,6 +2129,9 @@ static enum mac_version rtl8169_get_mac_
|
||||
u16 val;
|
||||
enum mac_version ver;
|
||||
} mac_info[] = {
|
||||
+ /* 8126A family. */
|
||||
+ { 0x7cf, 0x649, RTL_GIGA_MAC_VER_65 },
|
||||
+
|
||||
/* 8125B family. */
|
||||
{ 0x7cf, 0x641, RTL_GIGA_MAC_VER_63 },
|
||||
|
||||
@@ -2392,6 +2402,7 @@ static void rtl_init_rxcfg(struct rtl816
|
||||
RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
|
||||
break;
|
||||
case RTL_GIGA_MAC_VER_63:
|
||||
+ case RTL_GIGA_MAC_VER_65:
|
||||
RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST |
|
||||
RX_PAUSE_SLOT_ON);
|
||||
break;
|
||||
@@ -2578,7 +2589,7 @@ static void rtl_wait_txrx_fifo_empty(str
|
||||
case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_61:
|
||||
rtl_loop_wait_high(tp, &rtl_rxtx_empty_cond, 100, 42);
|
||||
break;
|
||||
- case RTL_GIGA_MAC_VER_63:
|
||||
+ case RTL_GIGA_MAC_VER_63 ... RTL_GIGA_MAC_VER_65:
|
||||
RTL_W8(tp, ChipCmd, RTL_R8(tp, ChipCmd) | StopReq);
|
||||
rtl_loop_wait_high(tp, &rtl_rxtx_empty_cond, 100, 42);
|
||||
rtl_loop_wait_high(tp, &rtl_rxtx_empty_cond_2, 100, 42);
|
||||
@@ -2822,7 +2833,7 @@ static void rtl_enable_exit_l1(struct rt
|
||||
case RTL_GIGA_MAC_VER_37 ... RTL_GIGA_MAC_VER_38:
|
||||
rtl_eri_set_bits(tp, 0xd4, 0x0c00);
|
||||
break;
|
||||
- case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
|
||||
+ case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
|
||||
r8168_mac_ocp_modify(tp, 0xc0ac, 0, 0x1f80);
|
||||
break;
|
||||
default:
|
||||
@@ -2836,7 +2847,7 @@ static void rtl_disable_exit_l1(struct r
|
||||
case RTL_GIGA_MAC_VER_34 ... RTL_GIGA_MAC_VER_38:
|
||||
rtl_eri_clear_bits(tp, 0xd4, 0x1f00);
|
||||
break;
|
||||
- case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
|
||||
+ case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
|
||||
r8168_mac_ocp_modify(tp, 0xc0ac, 0x1f80, 0);
|
||||
break;
|
||||
default:
|
||||
@@ -2846,6 +2857,8 @@ static void rtl_disable_exit_l1(struct r
|
||||
|
||||
static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable)
|
||||
{
|
||||
+ u8 val8;
|
||||
+
|
||||
if (tp->mac_version < RTL_GIGA_MAC_VER_32)
|
||||
return;
|
||||
|
||||
@@ -2859,11 +2872,19 @@ static void rtl_hw_aspm_clkreq_enable(st
|
||||
return;
|
||||
|
||||
rtl_mod_config5(tp, 0, ASPM_en);
|
||||
- rtl_mod_config2(tp, 0, ClkReqEn);
|
||||
+ switch (tp->mac_version) {
|
||||
+ case RTL_GIGA_MAC_VER_65:
|
||||
+ val8 = RTL_R8(tp, INT_CFG0_8125) | INT_CFG0_CLKREQEN;
|
||||
+ RTL_W8(tp, INT_CFG0_8125, val8);
|
||||
+ break;
|
||||
+ default:
|
||||
+ rtl_mod_config2(tp, 0, ClkReqEn);
|
||||
+ break;
|
||||
+ }
|
||||
|
||||
switch (tp->mac_version) {
|
||||
case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
|
||||
- case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
|
||||
+ case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_65:
|
||||
/* reset ephy tx/rx disable timer */
|
||||
r8168_mac_ocp_modify(tp, 0xe094, 0xff00, 0);
|
||||
/* chip can trigger L1.2 */
|
||||
@@ -2875,14 +2896,22 @@ static void rtl_hw_aspm_clkreq_enable(st
|
||||
} else {
|
||||
switch (tp->mac_version) {
|
||||
case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48:
|
||||
- case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
|
||||
+ case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_65:
|
||||
r8168_mac_ocp_modify(tp, 0xe092, 0x00ff, 0);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
- rtl_mod_config2(tp, ClkReqEn, 0);
|
||||
+ switch (tp->mac_version) {
|
||||
+ case RTL_GIGA_MAC_VER_65:
|
||||
+ val8 = RTL_R8(tp, INT_CFG0_8125) & ~INT_CFG0_CLKREQEN;
|
||||
+ RTL_W8(tp, INT_CFG0_8125, val8);
|
||||
+ break;
|
||||
+ default:
|
||||
+ rtl_mod_config2(tp, ClkReqEn, 0);
|
||||
+ break;
|
||||
+ }
|
||||
rtl_mod_config5(tp, ASPM_en, 0);
|
||||
}
|
||||
}
|
||||
@@ -3678,10 +3707,15 @@ static void rtl_hw_start_8125_common(str
|
||||
/* disable new tx descriptor format */
|
||||
r8168_mac_ocp_modify(tp, 0xeb58, 0x0001, 0x0000);
|
||||
|
||||
- if (tp->mac_version == RTL_GIGA_MAC_VER_63)
|
||||
+ if (tp->mac_version == RTL_GIGA_MAC_VER_65)
|
||||
+ RTL_W8(tp, 0xD8, RTL_R8(tp, 0xD8) & ~0x02);
|
||||
+
|
||||
+ if (tp->mac_version == RTL_GIGA_MAC_VER_65)
|
||||
+ r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400);
|
||||
+ else if (tp->mac_version == RTL_GIGA_MAC_VER_63)
|
||||
r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0200);
|
||||
else
|
||||
- r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0400);
|
||||
+ r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0300);
|
||||
|
||||
if (tp->mac_version == RTL_GIGA_MAC_VER_63)
|
||||
r8168_mac_ocp_modify(tp, 0xe63e, 0x0c30, 0x0000);
|
||||
@@ -3694,6 +3728,10 @@ static void rtl_hw_start_8125_common(str
|
||||
r8168_mac_ocp_modify(tp, 0xe056, 0x00f0, 0x0030);
|
||||
r8168_mac_ocp_modify(tp, 0xe040, 0x1000, 0x0000);
|
||||
r8168_mac_ocp_modify(tp, 0xea1c, 0x0003, 0x0001);
|
||||
+ if (tp->mac_version == RTL_GIGA_MAC_VER_65)
|
||||
+ r8168_mac_ocp_modify(tp, 0xea1c, 0x0300, 0x0000);
|
||||
+ else
|
||||
+ r8168_mac_ocp_modify(tp, 0xea1c, 0x0004, 0x0000);
|
||||
r8168_mac_ocp_modify(tp, 0xe0c0, 0x4f0f, 0x4403);
|
||||
r8168_mac_ocp_modify(tp, 0xe052, 0x0080, 0x0068);
|
||||
r8168_mac_ocp_modify(tp, 0xd430, 0x0fff, 0x047f);
|
||||
@@ -3708,10 +3746,10 @@ static void rtl_hw_start_8125_common(str
|
||||
|
||||
rtl_loop_wait_low(tp, &rtl_mac_ocp_e00e_cond, 1000, 10);
|
||||
|
||||
- if (tp->mac_version == RTL_GIGA_MAC_VER_63)
|
||||
- rtl8125b_config_eee_mac(tp);
|
||||
- else
|
||||
+ if (tp->mac_version == RTL_GIGA_MAC_VER_61)
|
||||
rtl8125a_config_eee_mac(tp);
|
||||
+ else
|
||||
+ rtl8125b_config_eee_mac(tp);
|
||||
|
||||
rtl_disable_rxdvgate(tp);
|
||||
}
|
||||
@@ -3755,6 +3793,12 @@ static void rtl_hw_start_8125b(struct rt
|
||||
rtl_hw_start_8125_common(tp);
|
||||
}
|
||||
|
||||
+static void rtl_hw_start_8126a(struct rtl8169_private *tp)
|
||||
+{
|
||||
+ rtl_set_def_aspm_entry_latency(tp);
|
||||
+ rtl_hw_start_8125_common(tp);
|
||||
+}
|
||||
+
|
||||
static void rtl_hw_config(struct rtl8169_private *tp)
|
||||
{
|
||||
static const rtl_generic_fct hw_configs[] = {
|
||||
@@ -3797,6 +3841,7 @@ static void rtl_hw_config(struct rtl8169
|
||||
[RTL_GIGA_MAC_VER_53] = rtl_hw_start_8117,
|
||||
[RTL_GIGA_MAC_VER_61] = rtl_hw_start_8125a_2,
|
||||
[RTL_GIGA_MAC_VER_63] = rtl_hw_start_8125b,
|
||||
+ [RTL_GIGA_MAC_VER_65] = rtl_hw_start_8126a,
|
||||
};
|
||||
|
||||
if (hw_configs[tp->mac_version])
|
||||
@@ -3807,9 +3852,23 @@ static void rtl_hw_start_8125(struct rtl
|
||||
{
|
||||
int i;
|
||||
|
||||
+ RTL_W8(tp, INT_CFG0_8125, 0x00);
|
||||
+
|
||||
/* disable interrupt coalescing */
|
||||
- for (i = 0xa00; i < 0xb00; i += 4)
|
||||
- RTL_W32(tp, i, 0);
|
||||
+ switch (tp->mac_version) {
|
||||
+ case RTL_GIGA_MAC_VER_61:
|
||||
+ for (i = 0xa00; i < 0xb00; i += 4)
|
||||
+ RTL_W32(tp, i, 0);
|
||||
+ break;
|
||||
+ case RTL_GIGA_MAC_VER_63:
|
||||
+ case RTL_GIGA_MAC_VER_65:
|
||||
+ for (i = 0xa00; i < 0xa80; i += 4)
|
||||
+ RTL_W32(tp, i, 0);
|
||||
+ RTL_W16(tp, INT_CFG1_8125, 0x0000);
|
||||
+ break;
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
|
||||
rtl_hw_config(tp);
|
||||
}
|
||||
@@ -3887,8 +3946,7 @@ static int rtl8169_change_mtu(struct net
|
||||
rtl_jumbo_config(tp);
|
||||
|
||||
switch (tp->mac_version) {
|
||||
- case RTL_GIGA_MAC_VER_61:
|
||||
- case RTL_GIGA_MAC_VER_63:
|
||||
+ case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_65:
|
||||
rtl8125_set_eee_txidle_timer(tp);
|
||||
break;
|
||||
default:
|
||||
@@ -4037,7 +4095,7 @@ static void rtl8169_cleanup(struct rtl81
|
||||
RTL_W8(tp, ChipCmd, RTL_R8(tp, ChipCmd) | StopReq);
|
||||
rtl_loop_wait_high(tp, &rtl_txcfg_empty_cond, 100, 666);
|
||||
break;
|
||||
- case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_63:
|
||||
+ case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_65:
|
||||
rtl_enable_rxdvgate(tp);
|
||||
fsleep(2000);
|
||||
break;
|
||||
@@ -4188,8 +4246,7 @@ static unsigned int rtl_quirk_packet_pad
|
||||
|
||||
switch (tp->mac_version) {
|
||||
case RTL_GIGA_MAC_VER_34:
|
||||
- case RTL_GIGA_MAC_VER_61:
|
||||
- case RTL_GIGA_MAC_VER_63:
|
||||
+ case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_65:
|
||||
padto = max_t(unsigned int, padto, ETH_ZLEN);
|
||||
break;
|
||||
default:
|
||||
@@ -5225,7 +5282,7 @@ static void rtl_hw_initialize(struct rtl
|
||||
case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_48:
|
||||
rtl_hw_init_8168g(tp);
|
||||
break;
|
||||
- case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_63:
|
||||
+ case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_65:
|
||||
rtl_hw_init_8125(tp);
|
||||
break;
|
||||
default:
|
||||
--- a/drivers/net/ethernet/realtek/r8169_phy_config.c
|
||||
+++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
|
||||
@@ -1102,6 +1102,12 @@ static void rtl8125b_hw_phy_config(struc
|
||||
rtl8125b_config_eee_phy(phydev);
|
||||
}
|
||||
|
||||
+static void rtl8126a_hw_phy_config(struct rtl8169_private *tp,
|
||||
+ struct phy_device *phydev)
|
||||
+{
|
||||
+ r8169_apply_firmware(tp);
|
||||
+}
|
||||
+
|
||||
void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
|
||||
enum mac_version ver)
|
||||
{
|
||||
@@ -1152,6 +1158,7 @@ void r8169_hw_phy_config(struct rtl8169_
|
||||
[RTL_GIGA_MAC_VER_53] = rtl8117_hw_phy_config,
|
||||
[RTL_GIGA_MAC_VER_61] = rtl8125a_2_hw_phy_config,
|
||||
[RTL_GIGA_MAC_VER_63] = rtl8125b_hw_phy_config,
|
||||
+ [RTL_GIGA_MAC_VER_65] = rtl8126a_hw_phy_config,
|
||||
};
|
||||
|
||||
if (phy_configs[ver])
|
@ -0,0 +1,81 @@
|
||||
From 4c49b6824a607af4760fac4f5c0b9954ab902cef Mon Sep 17 00:00:00 2001
|
||||
From: Heiner Kallweit <hkallweit1@gmail.com>
|
||||
Date: Wed, 7 Feb 2024 08:16:40 +0100
|
||||
Subject: [PATCH] r8169: improve checking for valid LED modes
|
||||
|
||||
After 3a2746320403 ("leds: trigger: netdev: Display only supported link
|
||||
speed attribute") the check for valid link modes can be simplified.
|
||||
In addition factor it out, so that it can be re-used by the upcoming
|
||||
LED support for RTL8125.
|
||||
|
||||
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
|
||||
Reviewed-by: Simon Horman <horms@kernel.org>
|
||||
Link: https://lore.kernel.org/r/8876a9f4-7a2d-48c3-8eae-0d834f5c27c5@gmail.com
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/ethernet/realtek/r8169_leds.c | 38 ++++++++++++-----------
|
||||
1 file changed, 20 insertions(+), 18 deletions(-)
|
||||
|
||||
--- a/drivers/net/ethernet/realtek/r8169_leds.c
|
||||
+++ b/drivers/net/ethernet/realtek/r8169_leds.c
|
||||
@@ -20,11 +20,6 @@
|
||||
|
||||
#define RTL8168_NUM_LEDS 3
|
||||
|
||||
-#define RTL8168_SUPPORTED_MODES \
|
||||
- (BIT(TRIGGER_NETDEV_LINK_1000) | BIT(TRIGGER_NETDEV_LINK_100) | \
|
||||
- BIT(TRIGGER_NETDEV_LINK_10) | BIT(TRIGGER_NETDEV_RX) | \
|
||||
- BIT(TRIGGER_NETDEV_TX))
|
||||
-
|
||||
struct r8169_led_classdev {
|
||||
struct led_classdev led;
|
||||
struct net_device *ndev;
|
||||
@@ -33,28 +28,35 @@ struct r8169_led_classdev {
|
||||
|
||||
#define lcdev_to_r8169_ldev(lcdev) container_of(lcdev, struct r8169_led_classdev, led)
|
||||
|
||||
+static bool r8169_trigger_mode_is_valid(unsigned long flags)
|
||||
+{
|
||||
+ bool rx, tx;
|
||||
+
|
||||
+ if (flags & BIT(TRIGGER_NETDEV_HALF_DUPLEX))
|
||||
+ return false;
|
||||
+ if (flags & BIT(TRIGGER_NETDEV_FULL_DUPLEX))
|
||||
+ return false;
|
||||
+
|
||||
+ rx = flags & BIT(TRIGGER_NETDEV_RX);
|
||||
+ tx = flags & BIT(TRIGGER_NETDEV_TX);
|
||||
+
|
||||
+ return rx == tx;
|
||||
+}
|
||||
+
|
||||
static int rtl8168_led_hw_control_is_supported(struct led_classdev *led_cdev,
|
||||
unsigned long flags)
|
||||
{
|
||||
struct r8169_led_classdev *ldev = lcdev_to_r8169_ldev(led_cdev);
|
||||
struct rtl8169_private *tp = netdev_priv(ldev->ndev);
|
||||
int shift = ldev->index * 4;
|
||||
- bool rx, tx;
|
||||
|
||||
- if (flags & ~RTL8168_SUPPORTED_MODES)
|
||||
- goto nosupp;
|
||||
-
|
||||
- rx = flags & BIT(TRIGGER_NETDEV_RX);
|
||||
- tx = flags & BIT(TRIGGER_NETDEV_TX);
|
||||
- if (rx != tx)
|
||||
- goto nosupp;
|
||||
+ if (!r8169_trigger_mode_is_valid(flags)) {
|
||||
+ /* Switch LED off to indicate that mode isn't supported */
|
||||
+ rtl8168_led_mod_ctrl(tp, 0x000f << shift, 0);
|
||||
+ return -EOPNOTSUPP;
|
||||
+ }
|
||||
|
||||
return 0;
|
||||
-
|
||||
-nosupp:
|
||||
- /* Switch LED off to indicate that mode isn't supported */
|
||||
- rtl8168_led_mod_ctrl(tp, 0x000f << shift, 0);
|
||||
- return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
static int rtl8168_led_hw_control_set(struct led_classdev *led_cdev,
|
@ -0,0 +1,244 @@
|
||||
From be51ed104ba9929c741afb718ef7198dbcecef94 Mon Sep 17 00:00:00 2001
|
||||
From: Heiner Kallweit <hkallweit1@gmail.com>
|
||||
Date: Mon, 12 Feb 2024 19:44:11 +0100
|
||||
Subject: [PATCH] r8169: add LED support for RTL8125/RTL8126
|
||||
|
||||
This adds LED support for RTL8125/RTL8126.
|
||||
|
||||
Note: Due to missing datasheets changing the 5Gbps link mode isn't
|
||||
supported for RTL8126.
|
||||
|
||||
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
|
||||
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
||||
Link: https://lore.kernel.org/r/f982602c-9de3-4ca6-85a3-2c1d118dcb15@gmail.com
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/ethernet/realtek/r8169.h | 3 +
|
||||
drivers/net/ethernet/realtek/r8169_leds.c | 106 ++++++++++++++++++++++
|
||||
drivers/net/ethernet/realtek/r8169_main.c | 61 ++++++++++++-
|
||||
3 files changed, 166 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/drivers/net/ethernet/realtek/r8169.h
|
||||
+++ b/drivers/net/ethernet/realtek/r8169.h
|
||||
@@ -85,3 +85,6 @@ void r8169_get_led_name(struct rtl8169_p
|
||||
int rtl8168_get_led_mode(struct rtl8169_private *tp);
|
||||
int rtl8168_led_mod_ctrl(struct rtl8169_private *tp, u16 mask, u16 val);
|
||||
void rtl8168_init_leds(struct net_device *ndev);
|
||||
+int rtl8125_get_led_mode(struct rtl8169_private *tp, int index);
|
||||
+int rtl8125_set_led_mode(struct rtl8169_private *tp, int index, u16 mode);
|
||||
+void rtl8125_init_leds(struct net_device *ndev);
|
||||
--- a/drivers/net/ethernet/realtek/r8169_leds.c
|
||||
+++ b/drivers/net/ethernet/realtek/r8169_leds.c
|
||||
@@ -18,7 +18,14 @@
|
||||
#define RTL8168_LED_CTRL_LINK_100 BIT(1)
|
||||
#define RTL8168_LED_CTRL_LINK_10 BIT(0)
|
||||
|
||||
+#define RTL8125_LED_CTRL_ACT BIT(9)
|
||||
+#define RTL8125_LED_CTRL_LINK_2500 BIT(5)
|
||||
+#define RTL8125_LED_CTRL_LINK_1000 BIT(3)
|
||||
+#define RTL8125_LED_CTRL_LINK_100 BIT(1)
|
||||
+#define RTL8125_LED_CTRL_LINK_10 BIT(0)
|
||||
+
|
||||
#define RTL8168_NUM_LEDS 3
|
||||
+#define RTL8125_NUM_LEDS 4
|
||||
|
||||
struct r8169_led_classdev {
|
||||
struct led_classdev led;
|
||||
@@ -157,3 +164,102 @@ void rtl8168_init_leds(struct net_device
|
||||
for (i = 0; i < RTL8168_NUM_LEDS; i++)
|
||||
rtl8168_setup_ldev(leds + i, ndev, i);
|
||||
}
|
||||
+
|
||||
+static int rtl8125_led_hw_control_is_supported(struct led_classdev *led_cdev,
|
||||
+ unsigned long flags)
|
||||
+{
|
||||
+ struct r8169_led_classdev *ldev = lcdev_to_r8169_ldev(led_cdev);
|
||||
+ struct rtl8169_private *tp = netdev_priv(ldev->ndev);
|
||||
+
|
||||
+ if (!r8169_trigger_mode_is_valid(flags)) {
|
||||
+ /* Switch LED off to indicate that mode isn't supported */
|
||||
+ rtl8125_set_led_mode(tp, ldev->index, 0);
|
||||
+ return -EOPNOTSUPP;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int rtl8125_led_hw_control_set(struct led_classdev *led_cdev,
|
||||
+ unsigned long flags)
|
||||
+{
|
||||
+ struct r8169_led_classdev *ldev = lcdev_to_r8169_ldev(led_cdev);
|
||||
+ struct rtl8169_private *tp = netdev_priv(ldev->ndev);
|
||||
+ u16 mode = 0;
|
||||
+
|
||||
+ if (flags & BIT(TRIGGER_NETDEV_LINK_10))
|
||||
+ mode |= RTL8125_LED_CTRL_LINK_10;
|
||||
+ if (flags & BIT(TRIGGER_NETDEV_LINK_100))
|
||||
+ mode |= RTL8125_LED_CTRL_LINK_100;
|
||||
+ if (flags & BIT(TRIGGER_NETDEV_LINK_1000))
|
||||
+ mode |= RTL8125_LED_CTRL_LINK_1000;
|
||||
+ if (flags & BIT(TRIGGER_NETDEV_LINK_2500))
|
||||
+ mode |= RTL8125_LED_CTRL_LINK_2500;
|
||||
+ if (flags & (BIT(TRIGGER_NETDEV_TX) | BIT(TRIGGER_NETDEV_RX)))
|
||||
+ mode |= RTL8125_LED_CTRL_ACT;
|
||||
+
|
||||
+ return rtl8125_set_led_mode(tp, ldev->index, mode);
|
||||
+}
|
||||
+
|
||||
+static int rtl8125_led_hw_control_get(struct led_classdev *led_cdev,
|
||||
+ unsigned long *flags)
|
||||
+{
|
||||
+ struct r8169_led_classdev *ldev = lcdev_to_r8169_ldev(led_cdev);
|
||||
+ struct rtl8169_private *tp = netdev_priv(ldev->ndev);
|
||||
+ int mode;
|
||||
+
|
||||
+ mode = rtl8125_get_led_mode(tp, ldev->index);
|
||||
+ if (mode < 0)
|
||||
+ return mode;
|
||||
+
|
||||
+ if (mode & RTL8125_LED_CTRL_LINK_10)
|
||||
+ *flags |= BIT(TRIGGER_NETDEV_LINK_10);
|
||||
+ if (mode & RTL8125_LED_CTRL_LINK_100)
|
||||
+ *flags |= BIT(TRIGGER_NETDEV_LINK_100);
|
||||
+ if (mode & RTL8125_LED_CTRL_LINK_1000)
|
||||
+ *flags |= BIT(TRIGGER_NETDEV_LINK_1000);
|
||||
+ if (mode & RTL8125_LED_CTRL_LINK_2500)
|
||||
+ *flags |= BIT(TRIGGER_NETDEV_LINK_2500);
|
||||
+ if (mode & RTL8125_LED_CTRL_ACT)
|
||||
+ *flags |= BIT(TRIGGER_NETDEV_TX) | BIT(TRIGGER_NETDEV_RX);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static void rtl8125_setup_led_ldev(struct r8169_led_classdev *ldev,
|
||||
+ struct net_device *ndev, int index)
|
||||
+{
|
||||
+ struct rtl8169_private *tp = netdev_priv(ndev);
|
||||
+ struct led_classdev *led_cdev = &ldev->led;
|
||||
+ char led_name[LED_MAX_NAME_SIZE];
|
||||
+
|
||||
+ ldev->ndev = ndev;
|
||||
+ ldev->index = index;
|
||||
+
|
||||
+ r8169_get_led_name(tp, index, led_name, LED_MAX_NAME_SIZE);
|
||||
+ led_cdev->name = led_name;
|
||||
+ led_cdev->hw_control_trigger = "netdev";
|
||||
+ led_cdev->flags |= LED_RETAIN_AT_SHUTDOWN;
|
||||
+ led_cdev->hw_control_is_supported = rtl8125_led_hw_control_is_supported;
|
||||
+ led_cdev->hw_control_set = rtl8125_led_hw_control_set;
|
||||
+ led_cdev->hw_control_get = rtl8125_led_hw_control_get;
|
||||
+ led_cdev->hw_control_get_device = r8169_led_hw_control_get_device;
|
||||
+
|
||||
+ /* ignore errors */
|
||||
+ devm_led_classdev_register(&ndev->dev, led_cdev);
|
||||
+}
|
||||
+
|
||||
+void rtl8125_init_leds(struct net_device *ndev)
|
||||
+{
|
||||
+ /* bind resource mgmt to netdev */
|
||||
+ struct device *dev = &ndev->dev;
|
||||
+ struct r8169_led_classdev *leds;
|
||||
+ int i;
|
||||
+
|
||||
+ leds = devm_kcalloc(dev, RTL8125_NUM_LEDS, sizeof(*leds), GFP_KERNEL);
|
||||
+ if (!leds)
|
||||
+ return;
|
||||
+
|
||||
+ for (i = 0; i < RTL8125_NUM_LEDS; i++)
|
||||
+ rtl8125_setup_led_ldev(leds + i, ndev, i);
|
||||
+}
|
||||
--- a/drivers/net/ethernet/realtek/r8169_main.c
|
||||
+++ b/drivers/net/ethernet/realtek/r8169_main.c
|
||||
@@ -334,17 +334,23 @@ enum rtl8168_registers {
|
||||
};
|
||||
|
||||
enum rtl8125_registers {
|
||||
+ LEDSEL0 = 0x18,
|
||||
INT_CFG0_8125 = 0x34,
|
||||
#define INT_CFG0_ENABLE_8125 BIT(0)
|
||||
#define INT_CFG0_CLKREQEN BIT(3)
|
||||
IntrMask_8125 = 0x38,
|
||||
IntrStatus_8125 = 0x3c,
|
||||
INT_CFG1_8125 = 0x7a,
|
||||
+ LEDSEL2 = 0x84,
|
||||
+ LEDSEL1 = 0x86,
|
||||
TxPoll_8125 = 0x90,
|
||||
+ LEDSEL3 = 0x96,
|
||||
MAC0_BKP = 0x19e0,
|
||||
EEE_TXIDLE_TIMER_8125 = 0x6048,
|
||||
};
|
||||
|
||||
+#define LEDSEL_MASK_8125 0x23f
|
||||
+
|
||||
#define RX_VLAN_INNER_8125 BIT(22)
|
||||
#define RX_VLAN_OUTER_8125 BIT(23)
|
||||
#define RX_VLAN_8125 (RX_VLAN_INNER_8125 | RX_VLAN_OUTER_8125)
|
||||
@@ -835,6 +841,51 @@ int rtl8168_get_led_mode(struct rtl8169_
|
||||
return ret;
|
||||
}
|
||||
|
||||
+static int rtl8125_get_led_reg(int index)
|
||||
+{
|
||||
+ static const int led_regs[] = { LEDSEL0, LEDSEL1, LEDSEL2, LEDSEL3 };
|
||||
+
|
||||
+ return led_regs[index];
|
||||
+}
|
||||
+
|
||||
+int rtl8125_set_led_mode(struct rtl8169_private *tp, int index, u16 mode)
|
||||
+{
|
||||
+ int reg = rtl8125_get_led_reg(index);
|
||||
+ struct device *dev = tp_to_dev(tp);
|
||||
+ int ret;
|
||||
+ u16 val;
|
||||
+
|
||||
+ ret = pm_runtime_resume_and_get(dev);
|
||||
+ if (ret < 0)
|
||||
+ return ret;
|
||||
+
|
||||
+ mutex_lock(&tp->led_lock);
|
||||
+ val = RTL_R16(tp, reg) & ~LEDSEL_MASK_8125;
|
||||
+ RTL_W16(tp, reg, val | mode);
|
||||
+ mutex_unlock(&tp->led_lock);
|
||||
+
|
||||
+ pm_runtime_put_sync(dev);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+int rtl8125_get_led_mode(struct rtl8169_private *tp, int index)
|
||||
+{
|
||||
+ int reg = rtl8125_get_led_reg(index);
|
||||
+ struct device *dev = tp_to_dev(tp);
|
||||
+ int ret;
|
||||
+
|
||||
+ ret = pm_runtime_resume_and_get(dev);
|
||||
+ if (ret < 0)
|
||||
+ return ret;
|
||||
+
|
||||
+ ret = RTL_R16(tp, reg);
|
||||
+
|
||||
+ pm_runtime_put_sync(dev);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
void r8169_get_led_name(struct rtl8169_private *tp, int idx,
|
||||
char *buf, int buf_len)
|
||||
{
|
||||
@@ -5530,10 +5581,12 @@ static int rtl_init_one(struct pci_dev *
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
- if (IS_ENABLED(CONFIG_R8169_LEDS) &&
|
||||
- tp->mac_version > RTL_GIGA_MAC_VER_06 &&
|
||||
- tp->mac_version < RTL_GIGA_MAC_VER_61)
|
||||
- rtl8168_init_leds(dev);
|
||||
+ if (IS_ENABLED(CONFIG_R8169_LEDS)) {
|
||||
+ if (rtl_is_8125(tp))
|
||||
+ rtl8125_init_leds(dev);
|
||||
+ else if (tp->mac_version > RTL_GIGA_MAC_VER_06)
|
||||
+ rtl8168_init_leds(dev);
|
||||
+ }
|
||||
|
||||
netdev_info(dev, "%s, %pM, XID %03x, IRQ %d\n",
|
||||
rtl_chip_infos[chipset].name, dev->dev_addr, xid, tp->irq);
|
@ -0,0 +1,25 @@
|
||||
From f4d3e595c0000ce39dec7e4799ea42ce42ab6867 Mon Sep 17 00:00:00 2001
|
||||
From: Heiner Kallweit <hkallweit1@gmail.com>
|
||||
Date: Sat, 17 Feb 2024 15:48:23 +0100
|
||||
Subject: [PATCH] r8169: add MODULE_FIRMWARE entry for RTL8126A
|
||||
|
||||
Add the missing MODULE_FIRMWARE entry for RTL8126A.
|
||||
|
||||
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
|
||||
Reviewed-by: Simon Horman <horms@kernel.org>
|
||||
Link: https://lore.kernel.org/r/47ef79d2-59c4-4d44-9595-366c70c4ad87@gmail.com
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/ethernet/realtek/r8169_main.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/drivers/net/ethernet/realtek/r8169_main.c
|
||||
+++ b/drivers/net/ethernet/realtek/r8169_main.c
|
||||
@@ -680,6 +680,7 @@ MODULE_FIRMWARE(FIRMWARE_8168FP_3);
|
||||
MODULE_FIRMWARE(FIRMWARE_8107E_2);
|
||||
MODULE_FIRMWARE(FIRMWARE_8125A_3);
|
||||
MODULE_FIRMWARE(FIRMWARE_8125B_2);
|
||||
+MODULE_FIRMWARE(FIRMWARE_8126A_2);
|
||||
|
||||
static inline struct device *tp_to_dev(struct rtl8169_private *tp)
|
||||
{
|
@ -0,0 +1,30 @@
|
||||
From 39f59c72ad3a1eaab9a60f0671bc94d2bc826d21 Mon Sep 17 00:00:00 2001
|
||||
From: Heiner Kallweit <hkallweit1@gmail.com>
|
||||
Date: Sun, 7 Apr 2024 23:19:25 +0200
|
||||
Subject: [PATCH] r8169: add support for RTL8168M
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
A user reported an unknown chip version. According to the r8168 vendor
|
||||
driver it's called RTL8168M, but handling is identical to RTL8168H.
|
||||
So let's simply treat it as RTL8168H.
|
||||
|
||||
Tested-by: Евгений <octobergun@gmail.com>
|
||||
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
drivers/net/ethernet/realtek/r8169_main.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
--- a/drivers/net/ethernet/realtek/r8169_main.c
|
||||
+++ b/drivers/net/ethernet/realtek/r8169_main.c
|
||||
@@ -2212,6 +2212,8 @@ static enum mac_version rtl8169_get_mac_
|
||||
* the wild. Let's disable detection.
|
||||
* { 0x7cf, 0x540, RTL_GIGA_MAC_VER_45 },
|
||||
*/
|
||||
+ /* Realtek calls it RTL8168M, but it's handled like RTL8168H */
|
||||
+ { 0x7cf, 0x6c0, RTL_GIGA_MAC_VER_46 },
|
||||
|
||||
/* 8168G family. */
|
||||
{ 0x7cf, 0x5c8, RTL_GIGA_MAC_VER_44 },
|
@ -0,0 +1,147 @@
|
||||
From 19fa4f2a85d777a8052e869c1b892a2f7556569d Mon Sep 17 00:00:00 2001
|
||||
From: Heiner Kallweit <hkallweit1@gmail.com>
|
||||
Date: Mon, 8 Apr 2024 20:47:40 +0200
|
||||
Subject: [PATCH] r8169: fix LED-related deadlock on module removal
|
||||
|
||||
Binding devm_led_classdev_register() to the netdev is problematic
|
||||
because on module removal we get a RTNL-related deadlock. Fix this
|
||||
by avoiding the device-managed LED functions.
|
||||
|
||||
Note: We can safely call led_classdev_unregister() for a LED even
|
||||
if registering it failed, because led_classdev_unregister() detects
|
||||
this and is a no-op in this case.
|
||||
|
||||
Fixes: 18764b883e15 ("r8169: add support for LED's on RTL8168/RTL8101")
|
||||
Cc: stable@vger.kernel.org
|
||||
Reported-by: Lukas Wunner <lukas@wunner.de>
|
||||
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
|
||||
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
drivers/net/ethernet/realtek/r8169.h | 6 ++--
|
||||
drivers/net/ethernet/realtek/r8169_leds.c | 35 +++++++++++++++--------
|
||||
drivers/net/ethernet/realtek/r8169_main.c | 8 ++++--
|
||||
3 files changed, 33 insertions(+), 16 deletions(-)
|
||||
|
||||
--- a/drivers/net/ethernet/realtek/r8169.h
|
||||
+++ b/drivers/net/ethernet/realtek/r8169.h
|
||||
@@ -73,6 +73,7 @@ enum mac_version {
|
||||
};
|
||||
|
||||
struct rtl8169_private;
|
||||
+struct r8169_led_classdev;
|
||||
|
||||
void r8169_apply_firmware(struct rtl8169_private *tp);
|
||||
u16 rtl8168h_2_get_adc_bias_ioffset(struct rtl8169_private *tp);
|
||||
@@ -84,7 +85,8 @@ void r8169_get_led_name(struct rtl8169_p
|
||||
char *buf, int buf_len);
|
||||
int rtl8168_get_led_mode(struct rtl8169_private *tp);
|
||||
int rtl8168_led_mod_ctrl(struct rtl8169_private *tp, u16 mask, u16 val);
|
||||
-void rtl8168_init_leds(struct net_device *ndev);
|
||||
+struct r8169_led_classdev *rtl8168_init_leds(struct net_device *ndev);
|
||||
int rtl8125_get_led_mode(struct rtl8169_private *tp, int index);
|
||||
int rtl8125_set_led_mode(struct rtl8169_private *tp, int index, u16 mode);
|
||||
-void rtl8125_init_leds(struct net_device *ndev);
|
||||
+struct r8169_led_classdev *rtl8125_init_leds(struct net_device *ndev);
|
||||
+void r8169_remove_leds(struct r8169_led_classdev *leds);
|
||||
--- a/drivers/net/ethernet/realtek/r8169_leds.c
|
||||
+++ b/drivers/net/ethernet/realtek/r8169_leds.c
|
||||
@@ -147,22 +147,22 @@ static void rtl8168_setup_ldev(struct r8
|
||||
led_cdev->hw_control_get_device = r8169_led_hw_control_get_device;
|
||||
|
||||
/* ignore errors */
|
||||
- devm_led_classdev_register(&ndev->dev, led_cdev);
|
||||
+ led_classdev_register(&ndev->dev, led_cdev);
|
||||
}
|
||||
|
||||
-void rtl8168_init_leds(struct net_device *ndev)
|
||||
+struct r8169_led_classdev *rtl8168_init_leds(struct net_device *ndev)
|
||||
{
|
||||
- /* bind resource mgmt to netdev */
|
||||
- struct device *dev = &ndev->dev;
|
||||
struct r8169_led_classdev *leds;
|
||||
int i;
|
||||
|
||||
- leds = devm_kcalloc(dev, RTL8168_NUM_LEDS, sizeof(*leds), GFP_KERNEL);
|
||||
+ leds = kcalloc(RTL8168_NUM_LEDS + 1, sizeof(*leds), GFP_KERNEL);
|
||||
if (!leds)
|
||||
- return;
|
||||
+ return NULL;
|
||||
|
||||
for (i = 0; i < RTL8168_NUM_LEDS; i++)
|
||||
rtl8168_setup_ldev(leds + i, ndev, i);
|
||||
+
|
||||
+ return leds;
|
||||
}
|
||||
|
||||
static int rtl8125_led_hw_control_is_supported(struct led_classdev *led_cdev,
|
||||
@@ -246,20 +246,31 @@ static void rtl8125_setup_led_ldev(struc
|
||||
led_cdev->hw_control_get_device = r8169_led_hw_control_get_device;
|
||||
|
||||
/* ignore errors */
|
||||
- devm_led_classdev_register(&ndev->dev, led_cdev);
|
||||
+ led_classdev_register(&ndev->dev, led_cdev);
|
||||
}
|
||||
|
||||
-void rtl8125_init_leds(struct net_device *ndev)
|
||||
+struct r8169_led_classdev *rtl8125_init_leds(struct net_device *ndev)
|
||||
{
|
||||
- /* bind resource mgmt to netdev */
|
||||
- struct device *dev = &ndev->dev;
|
||||
struct r8169_led_classdev *leds;
|
||||
int i;
|
||||
|
||||
- leds = devm_kcalloc(dev, RTL8125_NUM_LEDS, sizeof(*leds), GFP_KERNEL);
|
||||
+ leds = kcalloc(RTL8125_NUM_LEDS + 1, sizeof(*leds), GFP_KERNEL);
|
||||
if (!leds)
|
||||
- return;
|
||||
+ return NULL;
|
||||
|
||||
for (i = 0; i < RTL8125_NUM_LEDS; i++)
|
||||
rtl8125_setup_led_ldev(leds + i, ndev, i);
|
||||
+
|
||||
+ return leds;
|
||||
+}
|
||||
+
|
||||
+void r8169_remove_leds(struct r8169_led_classdev *leds)
|
||||
+{
|
||||
+ if (!leds)
|
||||
+ return;
|
||||
+
|
||||
+ for (struct r8169_led_classdev *l = leds; l->ndev; l++)
|
||||
+ led_classdev_unregister(&l->led);
|
||||
+
|
||||
+ kfree(leds);
|
||||
}
|
||||
--- a/drivers/net/ethernet/realtek/r8169_main.c
|
||||
+++ b/drivers/net/ethernet/realtek/r8169_main.c
|
||||
@@ -651,6 +651,8 @@ struct rtl8169_private {
|
||||
const char *fw_name;
|
||||
struct rtl_fw *rtl_fw;
|
||||
|
||||
+ struct r8169_led_classdev *leds;
|
||||
+
|
||||
u32 ocp_base;
|
||||
};
|
||||
|
||||
@@ -5126,6 +5128,8 @@ static void rtl_remove_one(struct pci_de
|
||||
|
||||
cancel_work_sync(&tp->wk.work);
|
||||
|
||||
+ r8169_remove_leds(tp->leds);
|
||||
+
|
||||
unregister_netdev(tp->dev);
|
||||
|
||||
if (tp->dash_type != RTL_DASH_NONE)
|
||||
@@ -5586,9 +5590,9 @@ static int rtl_init_one(struct pci_dev *
|
||||
|
||||
if (IS_ENABLED(CONFIG_R8169_LEDS)) {
|
||||
if (rtl_is_8125(tp))
|
||||
- rtl8125_init_leds(dev);
|
||||
+ tp->leds = rtl8125_init_leds(dev);
|
||||
else if (tp->mac_version > RTL_GIGA_MAC_VER_06)
|
||||
- rtl8168_init_leds(dev);
|
||||
+ tp->leds = rtl8168_init_leds(dev);
|
||||
}
|
||||
|
||||
netdev_info(dev, "%s, %pM, XID %03x, IRQ %d\n",
|
@ -0,0 +1,31 @@
|
||||
From 97e176fcbbf3c0f2bd410c9b241177c051f57176 Mon Sep 17 00:00:00 2001
|
||||
From: Heiner Kallweit <hkallweit1@gmail.com>
|
||||
Date: Wed, 10 Apr 2024 15:11:28 +0200
|
||||
Subject: [PATCH] r8169: add missing conditional compiling for call to
|
||||
r8169_remove_leds
|
||||
|
||||
Add missing dependency on CONFIG_R8169_LEDS. As-is a link error occurs
|
||||
if config option CONFIG_R8169_LEDS isn't enabled.
|
||||
|
||||
Fixes: 19fa4f2a85d7 ("r8169: fix LED-related deadlock on module removal")
|
||||
Reported-by: Venkat Rao Bagalkote <venkat88@linux.vnet.ibm.com>
|
||||
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
|
||||
Tested-By: Venkat Rao Bagalkote <venkat88@linux.vnet.ibm.com>
|
||||
Link: https://lore.kernel.org/r/d080038c-eb6b-45ac-9237-b8c1cdd7870f@gmail.com
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/ethernet/realtek/r8169_main.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/ethernet/realtek/r8169_main.c
|
||||
+++ b/drivers/net/ethernet/realtek/r8169_main.c
|
||||
@@ -5128,7 +5128,8 @@ static void rtl_remove_one(struct pci_de
|
||||
|
||||
cancel_work_sync(&tp->wk.work);
|
||||
|
||||
- r8169_remove_leds(tp->leds);
|
||||
+ if (IS_ENABLED(CONFIG_R8169_LEDS))
|
||||
+ r8169_remove_leds(tp->leds);
|
||||
|
||||
unregister_netdev(tp->dev);
|
||||
|
@ -4835,6 +4835,7 @@ CONFIG_PWRSEQ_SIMPLE=y
|
||||
# CONFIG_QUOTA_NETLINK_INTERFACE is not set
|
||||
# CONFIG_R6040 is not set
|
||||
# CONFIG_R8169 is not set
|
||||
# CONFIG_R8169_LEDS is not set
|
||||
# CONFIG_R8712U is not set
|
||||
# CONFIG_RADIO_ADAPTERS is not set
|
||||
# CONFIG_RADIO_AZTECH is not set
|
||||
|
@ -36,7 +36,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
// Lantech 8330-262D-E can operate at 2500base-X, but incorrectly report
|
||||
// 2500MBd NRZ in their EEPROM
|
||||
SFP_QUIRK_M("Lantech", "8330-262D-E", sfp_quirk_2500basex),
|
||||
@@ -2344,7 +2347,8 @@ static void sfp_sm_main(struct sfp *sfp,
|
||||
@@ -2343,7 +2346,8 @@ static void sfp_sm_main(struct sfp *sfp,
|
||||
* or t_start_up, so assume there is a fault.
|
||||
*/
|
||||
sfp_sm_fault(sfp, SFP_S_INIT_TX_FAULT,
|
||||
@ -46,7 +46,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
} else if (event == SFP_E_TIMEOUT || event == SFP_E_TX_CLEAR) {
|
||||
init_done:
|
||||
/* Create mdiobus and start trying for PHY */
|
||||
@@ -2578,10 +2582,12 @@ static void sfp_check_state(struct sfp *
|
||||
@@ -2577,10 +2581,12 @@ static void sfp_check_state(struct sfp *
|
||||
mutex_lock(&sfp->st_mutex);
|
||||
state = sfp_get_state(sfp);
|
||||
changed = state ^ sfp->state;
|
||||
|
@ -235,7 +235,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (!pe)
|
||||
--- a/mm/vmalloc.c
|
||||
+++ b/mm/vmalloc.c
|
||||
@@ -4205,6 +4205,8 @@ static const struct seq_operations vmall
|
||||
@@ -4222,6 +4222,8 @@ static const struct seq_operations vmall
|
||||
|
||||
static int __init proc_vmalloc_init(void)
|
||||
{
|
||||
|
@ -141,7 +141,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (err)
|
||||
--- a/scripts/mod/modpost.c
|
||||
+++ b/scripts/mod/modpost.c
|
||||
@@ -1692,7 +1692,9 @@ static void read_symbols(const char *mod
|
||||
@@ -1693,7 +1693,9 @@ static void read_symbols(const char *mod
|
||||
symname = remove_dot(info.strtab + sym->st_name);
|
||||
|
||||
handle_symbol(mod, &info, sym, symname);
|
||||
@ -151,7 +151,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
}
|
||||
|
||||
check_sec_ref(mod, &info);
|
||||
@@ -1865,8 +1867,10 @@ static void add_header(struct buffer *b,
|
||||
@@ -1866,8 +1868,10 @@ static void add_header(struct buffer *b,
|
||||
buf_printf(b, "BUILD_SALT;\n");
|
||||
buf_printf(b, "BUILD_LTO_INFO;\n");
|
||||
buf_printf(b, "\n");
|
||||
@ -162,7 +162,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
buf_printf(b, "\n");
|
||||
buf_printf(b, "__visible struct module __this_module\n");
|
||||
buf_printf(b, "__section(\".gnu.linkonce.this_module\") = {\n");
|
||||
@@ -1880,8 +1884,10 @@ static void add_header(struct buffer *b,
|
||||
@@ -1881,8 +1885,10 @@ static void add_header(struct buffer *b,
|
||||
buf_printf(b, "\t.arch = MODULE_ARCH_INIT,\n");
|
||||
buf_printf(b, "};\n");
|
||||
|
||||
@ -173,7 +173,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
buf_printf(b,
|
||||
"\n"
|
||||
@@ -1889,8 +1895,10 @@ static void add_header(struct buffer *b,
|
||||
@@ -1890,8 +1896,10 @@ static void add_header(struct buffer *b,
|
||||
"MODULE_INFO(retpoline, \"Y\");\n"
|
||||
"#endif\n");
|
||||
|
||||
@ -184,7 +184,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
if (strstarts(mod->name, "tools/testing"))
|
||||
buf_printf(b, "\nMODULE_INFO(test, \"Y\");\n");
|
||||
@@ -2000,11 +2008,13 @@ static void add_depends(struct buffer *b
|
||||
@@ -2001,11 +2009,13 @@ static void add_depends(struct buffer *b
|
||||
|
||||
static void add_srcversion(struct buffer *b, struct module *mod)
|
||||
{
|
||||
@ -198,7 +198,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
}
|
||||
|
||||
static void write_buf(struct buffer *b, const char *fname)
|
||||
@@ -2087,7 +2097,9 @@ static void write_mod_c_file(struct modu
|
||||
@@ -2088,7 +2098,9 @@ static void write_mod_c_file(struct modu
|
||||
add_exported_symbols(&buf, mod);
|
||||
add_versions(&buf, mod);
|
||||
add_depends(&buf, mod);
|
||||
|
@ -36,7 +36,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
// Lantech 8330-262D-E can operate at 2500base-X, but incorrectly report
|
||||
// 2500MBd NRZ in their EEPROM
|
||||
SFP_QUIRK_M("Lantech", "8330-262D-E", sfp_quirk_2500basex),
|
||||
@@ -2587,7 +2590,8 @@ static void sfp_sm_main(struct sfp *sfp,
|
||||
@@ -2586,7 +2589,8 @@ static void sfp_sm_main(struct sfp *sfp,
|
||||
* or t_start_up, so assume there is a fault.
|
||||
*/
|
||||
sfp_sm_fault(sfp, SFP_S_INIT_TX_FAULT,
|
||||
@ -46,7 +46,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
} else if (event == SFP_E_TIMEOUT || event == SFP_E_TX_CLEAR) {
|
||||
init_done:
|
||||
/* Create mdiobus and start trying for PHY */
|
||||
@@ -2841,10 +2845,12 @@ static void sfp_check_state(struct sfp *
|
||||
@@ -2840,10 +2844,12 @@ static void sfp_check_state(struct sfp *
|
||||
mutex_lock(&sfp->st_mutex);
|
||||
state = sfp_get_state(sfp);
|
||||
changed = state ^ sfp->state;
|
||||
|
@ -157,7 +157,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
case RTN_THROW:
|
||||
case RTN_UNREACHABLE:
|
||||
default:
|
||||
@@ -4544,6 +4563,17 @@ static int ip6_pkt_prohibit_out(struct n
|
||||
@@ -4545,6 +4564,17 @@ static int ip6_pkt_prohibit_out(struct n
|
||||
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
|
||||
}
|
||||
|
||||
@ -175,7 +175,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
/*
|
||||
* Allocate a dst for local (unicast / anycast) address.
|
||||
*/
|
||||
@@ -5037,7 +5067,8 @@ static int rtm_to_fib6_config(struct sk_
|
||||
@@ -5038,7 +5068,8 @@ static int rtm_to_fib6_config(struct sk_
|
||||
if (rtm->rtm_type == RTN_UNREACHABLE ||
|
||||
rtm->rtm_type == RTN_BLACKHOLE ||
|
||||
rtm->rtm_type == RTN_PROHIBIT ||
|
||||
@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
cfg->fc_flags |= RTF_REJECT;
|
||||
|
||||
if (rtm->rtm_type == RTN_LOCAL)
|
||||
@@ -6284,6 +6315,8 @@ static int ip6_route_dev_notify(struct n
|
||||
@@ -6285,6 +6316,8 @@ static int ip6_route_dev_notify(struct n
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
net->ipv6.ip6_prohibit_entry->dst.dev = dev;
|
||||
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
|
||||
@ -194,7 +194,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
|
||||
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
|
||||
#endif
|
||||
@@ -6295,6 +6328,7 @@ static int ip6_route_dev_notify(struct n
|
||||
@@ -6296,6 +6329,7 @@ static int ip6_route_dev_notify(struct n
|
||||
in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
|
||||
@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
|
||||
#endif
|
||||
}
|
||||
@@ -6486,6 +6520,8 @@ static int __net_init ip6_route_net_init
|
||||
@@ -6487,6 +6521,8 @@ static int __net_init ip6_route_net_init
|
||||
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
net->ipv6.fib6_has_custom_rules = false;
|
||||
@ -211,7 +211,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
|
||||
sizeof(*net->ipv6.ip6_prohibit_entry),
|
||||
GFP_KERNEL);
|
||||
@@ -6496,11 +6532,21 @@ static int __net_init ip6_route_net_init
|
||||
@@ -6497,11 +6533,21 @@ static int __net_init ip6_route_net_init
|
||||
ip6_template_metrics, true);
|
||||
INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->rt6i_uncached);
|
||||
|
||||
@ -234,7 +234,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
|
||||
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
|
||||
ip6_template_metrics, true);
|
||||
@@ -6527,6 +6573,8 @@ out:
|
||||
@@ -6528,6 +6574,8 @@ out:
|
||||
return ret;
|
||||
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
out_ip6_prohibit_entry:
|
||||
kfree(net->ipv6.ip6_prohibit_entry);
|
||||
out_ip6_null_entry:
|
||||
@@ -6546,6 +6594,7 @@ static void __net_exit ip6_route_net_exi
|
||||
@@ -6547,6 +6595,7 @@ static void __net_exit ip6_route_net_exi
|
||||
kfree(net->ipv6.ip6_null_entry);
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
kfree(net->ipv6.ip6_prohibit_entry);
|
||||
@ -251,7 +251,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
kfree(net->ipv6.ip6_blk_hole_entry);
|
||||
#endif
|
||||
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
|
||||
@@ -6629,6 +6678,9 @@ void __init ip6_route_init_special_entri
|
||||
@@ -6630,6 +6679,9 @@ void __init ip6_route_init_special_entri
|
||||
init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
|
||||
init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
|
||||
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
|
||||
|
@ -1,30 +0,0 @@
|
||||
From 3f1a227cb071f65f6ecc4db9f399649869735a7c Mon Sep 17 00:00:00 2001
|
||||
From: David Bauer <mail@david-bauer.net>
|
||||
Date: Sat, 17 Feb 2024 22:34:59 +0100
|
||||
Subject: [PATCH] net vxlan: don't learn non-unicast L2 destinations
|
||||
|
||||
This patch avoids learning non-unicast targets in the vxlan FDB.
|
||||
They are non-unicast and thus should be sent to the broadcast-IPv6
|
||||
instead of a unicast address.
|
||||
|
||||
Link: https://lore.kernel.org/netdev/15ee0cc7-9252-466b-8ce7-5225d605dde8@david-bauer.net/
|
||||
Link: https://github.com/freifunk-gluon/gluon/issues/3191
|
||||
|
||||
Signed-off-by: David Bauer <mail@david-bauer.net>
|
||||
---
|
||||
drivers/net/vxlan.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
--- a/drivers/net/vxlan/vxlan_core.c
|
||||
+++ b/drivers/net/vxlan/vxlan_core.c
|
||||
@@ -1493,6 +1493,10 @@ static bool vxlan_snoop(struct net_devic
|
||||
struct vxlan_fdb *f;
|
||||
u32 ifindex = 0;
|
||||
|
||||
+ /* Don't learn broadcast packets */
|
||||
+ if (is_multicast_ether_addr(src_mac) || is_zero_ether_addr(src_mac))
|
||||
+ return false;
|
||||
+
|
||||
#if IS_ENABLED(CONFIG_IPV6)
|
||||
if (src_ip->sa.sa_family == AF_INET6 &&
|
||||
(ipv6_addr_type(&src_ip->sin6.sin6_addr) & IPV6_ADDR_LINKLOCAL))
|
@ -157,7 +157,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
case RTN_THROW:
|
||||
case RTN_UNREACHABLE:
|
||||
default:
|
||||
@@ -4543,6 +4562,17 @@ static int ip6_pkt_prohibit_out(struct n
|
||||
@@ -4544,6 +4563,17 @@ static int ip6_pkt_prohibit_out(struct n
|
||||
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
|
||||
}
|
||||
|
||||
@ -175,7 +175,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
/*
|
||||
* Allocate a dst for local (unicast / anycast) address.
|
||||
*/
|
||||
@@ -5034,7 +5064,8 @@ static int rtm_to_fib6_config(struct sk_
|
||||
@@ -5035,7 +5065,8 @@ static int rtm_to_fib6_config(struct sk_
|
||||
if (rtm->rtm_type == RTN_UNREACHABLE ||
|
||||
rtm->rtm_type == RTN_BLACKHOLE ||
|
||||
rtm->rtm_type == RTN_PROHIBIT ||
|
||||
@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
cfg->fc_flags |= RTF_REJECT;
|
||||
|
||||
if (rtm->rtm_type == RTN_LOCAL)
|
||||
@@ -6281,6 +6312,8 @@ static int ip6_route_dev_notify(struct n
|
||||
@@ -6282,6 +6313,8 @@ static int ip6_route_dev_notify(struct n
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
net->ipv6.ip6_prohibit_entry->dst.dev = dev;
|
||||
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
|
||||
@ -194,7 +194,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
|
||||
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
|
||||
#endif
|
||||
@@ -6292,6 +6325,7 @@ static int ip6_route_dev_notify(struct n
|
||||
@@ -6293,6 +6326,7 @@ static int ip6_route_dev_notify(struct n
|
||||
in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
|
||||
@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
|
||||
#endif
|
||||
}
|
||||
@@ -6492,6 +6526,8 @@ static int __net_init ip6_route_net_init
|
||||
@@ -6493,6 +6527,8 @@ static int __net_init ip6_route_net_init
|
||||
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
net->ipv6.fib6_has_custom_rules = false;
|
||||
@ -211,7 +211,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
|
||||
sizeof(*net->ipv6.ip6_prohibit_entry),
|
||||
GFP_KERNEL);
|
||||
@@ -6502,11 +6538,21 @@ static int __net_init ip6_route_net_init
|
||||
@@ -6503,11 +6539,21 @@ static int __net_init ip6_route_net_init
|
||||
ip6_template_metrics, true);
|
||||
INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->dst.rt_uncached);
|
||||
|
||||
@ -234,7 +234,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
|
||||
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
|
||||
ip6_template_metrics, true);
|
||||
@@ -6533,6 +6579,8 @@ out:
|
||||
@@ -6534,6 +6580,8 @@ out:
|
||||
return ret;
|
||||
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
out_ip6_prohibit_entry:
|
||||
kfree(net->ipv6.ip6_prohibit_entry);
|
||||
out_ip6_null_entry:
|
||||
@@ -6552,6 +6600,7 @@ static void __net_exit ip6_route_net_exi
|
||||
@@ -6553,6 +6601,7 @@ static void __net_exit ip6_route_net_exi
|
||||
kfree(net->ipv6.ip6_null_entry);
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
kfree(net->ipv6.ip6_prohibit_entry);
|
||||
@ -251,7 +251,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
kfree(net->ipv6.ip6_blk_hole_entry);
|
||||
#endif
|
||||
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
|
||||
@@ -6635,6 +6684,9 @@ void __init ip6_route_init_special_entri
|
||||
@@ -6636,6 +6685,9 @@ void __init ip6_route_init_special_entri
|
||||
init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
|
||||
init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
|
||||
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
|
||||
|
@ -1,30 +0,0 @@
|
||||
From 3f1a227cb071f65f6ecc4db9f399649869735a7c Mon Sep 17 00:00:00 2001
|
||||
From: David Bauer <mail@david-bauer.net>
|
||||
Date: Sat, 17 Feb 2024 22:34:59 +0100
|
||||
Subject: [PATCH] net vxlan: don't learn non-unicast L2 destinations
|
||||
|
||||
This patch avoids learning non-unicast targets in the vxlan FDB.
|
||||
They are non-unicast and thus should be sent to the broadcast-IPv6
|
||||
instead of a unicast address.
|
||||
|
||||
Link: https://lore.kernel.org/netdev/15ee0cc7-9252-466b-8ce7-5225d605dde8@david-bauer.net/
|
||||
Link: https://github.com/freifunk-gluon/gluon/issues/3191
|
||||
|
||||
Signed-off-by: David Bauer <mail@david-bauer.net>
|
||||
---
|
||||
drivers/net/vxlan.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
--- a/drivers/net/vxlan/vxlan_core.c
|
||||
+++ b/drivers/net/vxlan/vxlan_core.c
|
||||
@@ -1446,6 +1446,10 @@ static bool vxlan_snoop(struct net_devic
|
||||
struct vxlan_fdb *f;
|
||||
u32 ifindex = 0;
|
||||
|
||||
+ /* Don't learn broadcast packets */
|
||||
+ if (is_multicast_ether_addr(src_mac) || is_zero_ether_addr(src_mac))
|
||||
+ return false;
|
||||
+
|
||||
#if IS_ENABLED(CONFIG_IPV6)
|
||||
if (src_ip->sa.sa_family == AF_INET6 &&
|
||||
(ipv6_addr_type(&src_ip->sin6.sin6_addr) & IPV6_ADDR_LINKLOCAL))
|
@ -18,7 +18,7 @@ gw,imx8mm-gw7901)
|
||||
gateworks,imx8mp-gw74xx)
|
||||
ucidef_set_network_device_path "eth0" "platform/soc@0/30800000.bus/30bf0000.ethernet"
|
||||
ucidef_set_network_device_path "eth1" "platform/soc@0/30800000.bus/30be0000.ethernet"
|
||||
ucidef_set_interfaces_lan_wan 'lan1 lan2 lan3 lan4' 'eth1'
|
||||
ucidef_set_interfaces_lan_wan 'lan1 lan2 lan3 lan4' 'eth0'
|
||||
;;
|
||||
esac
|
||||
|
||||
|
@ -0,0 +1,136 @@
|
||||
From 60fd951029603a0a6e019f16d53fb329dbd001f4 Mon Sep 17 00:00:00 2001
|
||||
From: Tim Harvey <tharvey@gateworks.com>
|
||||
Date: Fri, 7 Jul 2023 16:24:19 -0700
|
||||
Subject: [PATCH 400/413] 6.7: arm64: dts: imx8mp: add
|
||||
imx8mp-venice-gw74xx-imx219 overlay for rpi v2 camera
|
||||
|
||||
Add support for the RaspberryPi Camera v2 which is an IMX219 8MP module:
|
||||
- https://datasheets.raspberrypi.com/camera/camera-v2-schematics.pdf
|
||||
- has its own on-board 24MHz osc so no clock required from baseboard
|
||||
- pin 11 enables 1.8V and 2.8V LDO which is connected to
|
||||
GW74xx MIPI_GPIO4 (IMX8MP GPIO1_IO4) so we use this as a gpio
|
||||
|
||||
Support is added via a device-tree overlay.
|
||||
|
||||
The IMX219 supports RAW8/RAW10 image formats.
|
||||
|
||||
Example configuration:
|
||||
media-ctl -l "'imx219 3-0010':0->'csis-32e40000.csi':0[1]"
|
||||
media-ctl -v -V "'imx219 3-0010':0 [fmt:SRGGB8/640x480 field:none]"
|
||||
media-ctl -v -V "'crossbar':0 [fmt:SRGGB8/640x480 field:none]"
|
||||
media-ctl -v -V "'mxc_isi.0':0 [fmt:SRGGB8/640x480 field:none]"
|
||||
v4l2-ctl --set-fmt-video=width=640,height=480,pixelformat=RGGB
|
||||
v4l2-ctl --stream-mmap --stream-to=frame.raw --stream-count=1
|
||||
convert -size 640x480 -depth 8 gray:frame.raw frame.png
|
||||
gst-launch-1.0 v4l2src ! \
|
||||
video/x-bayer,format=rggb,width=640,height=480,framerate=10/1 ! \
|
||||
bayer2rgb ! fbdevsink
|
||||
|
||||
Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
---
|
||||
arch/arm64/boot/dts/freescale/Makefile | 2 +
|
||||
.../imx8mp-venice-gw74xx-imx219.dtso | 80 +++++++++++++++++++
|
||||
2 files changed, 82 insertions(+)
|
||||
create mode 100644 arch/arm64/boot/dts/freescale/imx8mp-venice-gw74xx-imx219.dtso
|
||||
|
||||
--- a/arch/arm64/boot/dts/freescale/Makefile
|
||||
+++ b/arch/arm64/boot/dts/freescale/Makefile
|
||||
@@ -159,6 +159,7 @@ imx8mm-venice-gw73xx-0x-rpidsi-dtbs := i
|
||||
imx8mm-venice-gw73xx-0x-rs232-rts-dtbs := imx8mm-venice-gw73xx-0x.dtb imx8mm-venice-gw73xx-0x-rs232-rts.dtbo
|
||||
imx8mm-venice-gw73xx-0x-rs422-dtbs := imx8mm-venice-gw73xx-0x.dtb imx8mm-venice-gw73xx-0x-rs422.dtbo
|
||||
imx8mm-venice-gw73xx-0x-rs485-dtbs := imx8mm-venice-gw73xx-0x.dtb imx8mm-venice-gw73xx-0x-rs485.dtbo
|
||||
+imx8mp-venice-gw74xx-imx219-dtbs := imx8mp-venice-gw74xx.dtb imx8mp-venice-gw74xx-imx219.dtbo
|
||||
imx8mp-venice-gw74xx-rpidsi-dtbs := imx8mp-venice-gw74xx.dtb imx8mp-venice-gw74xx-rpidsi.dtbo
|
||||
|
||||
dtb-$(CONFIG_ARCH_MXC) += imx8mm-venice-gw72xx-0x-imx219.dtb
|
||||
@@ -171,6 +172,7 @@ dtb-$(CONFIG_ARCH_MXC) += imx8mm-venice-
|
||||
dtb-$(CONFIG_ARCH_MXC) += imx8mm-venice-gw73xx-0x-rs232-rts.dtb
|
||||
dtb-$(CONFIG_ARCH_MXC) += imx8mm-venice-gw73xx-0x-rs422.dtb
|
||||
dtb-$(CONFIG_ARCH_MXC) += imx8mm-venice-gw73xx-0x-rs485.dtb
|
||||
+dtb-$(CONFIG_ARCH_MXC) += imx8mp-venice-gw74xx-imx219.dtb
|
||||
dtb-$(CONFIG_ARCH_MXC) += imx8mp-venice-gw74xx-rpidsi.dtb
|
||||
|
||||
dtb-$(CONFIG_ARCH_S32) += s32g274a-evb.dtb
|
||||
--- /dev/null
|
||||
+++ b/arch/arm64/boot/dts/freescale/imx8mp-venice-gw74xx-imx219.dtso
|
||||
@@ -0,0 +1,80 @@
|
||||
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
+/*
|
||||
+ * Copyright 2023 Gateworks Corporation
|
||||
+ */
|
||||
+
|
||||
+#include <dt-bindings/gpio/gpio.h>
|
||||
+
|
||||
+#include "imx8mp-pinfunc.h"
|
||||
+
|
||||
+/dts-v1/;
|
||||
+/plugin/;
|
||||
+
|
||||
+&{/} {
|
||||
+ compatible = "gw,imx8mp-gw74xx", "fsl,imx8mp";
|
||||
+
|
||||
+ reg_cam: regulator-cam {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pinctrl_reg_cam>;
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "reg_cam";
|
||||
+ gpio = <&gpio1 4 GPIO_ACTIVE_HIGH>;
|
||||
+ enable-active-high;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ };
|
||||
+
|
||||
+ cam24m: cam24m {
|
||||
+ compatible = "fixed-clock";
|
||||
+ #clock-cells = <0>;
|
||||
+ clock-frequency = <24000000>;
|
||||
+ clock-output-names = "cam24m";
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&i2c4 {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ imx219: sensor@10 {
|
||||
+ compatible = "sony,imx219";
|
||||
+ reg = <0x10>;
|
||||
+ clocks = <&cam24m>;
|
||||
+ VDIG-supply = <®_cam>;
|
||||
+
|
||||
+ port {
|
||||
+ /* MIPI CSI-2 bus endpoint */
|
||||
+ imx219_to_mipi_csi2: endpoint {
|
||||
+ remote-endpoint = <&mipi_csi_0_in>;
|
||||
+ clock-lanes = <0>;
|
||||
+ data-lanes = <1 2>;
|
||||
+ link-frequencies = /bits/ 64 <456000000>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&isi_0 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&mipi_csi_0 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ mipi_csi_0_in: endpoint {
|
||||
+ remote-endpoint = <&imx219_to_mipi_csi2>;
|
||||
+ data-lanes = <1 2>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&iomuxc {
|
||||
+ pinctrl_reg_cam: regcamgrp {
|
||||
+ fsl,pins = <
|
||||
+ MX8MP_IOMUXC_GPIO1_IO04__GPIO1_IO04 0x41
|
||||
+ >;
|
||||
+ };
|
||||
+};
|
@ -0,0 +1,39 @@
|
||||
From 816e40232faaa4aa0364ca8da7f86eaf27b0d9ff Mon Sep 17 00:00:00 2001
|
||||
From: Tim Harvey <tharvey@gateworks.com>
|
||||
Date: Mon, 26 Jun 2023 11:51:13 -0700
|
||||
Subject: [PATCH 401/413] 6.7: arm64: dts: imx8mm-venice-gw73xx: add TPM device
|
||||
|
||||
Add the TPM device found on the GW73xx revision F PCB.
|
||||
|
||||
Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
---
|
||||
.../arm64/boot/dts/freescale/imx8mm-venice-gw73xx.dtsi | 10 +++++++++-
|
||||
1 file changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/arch/arm64/boot/dts/freescale/imx8mm-venice-gw73xx.dtsi
|
||||
+++ b/arch/arm64/boot/dts/freescale/imx8mm-venice-gw73xx.dtsi
|
||||
@@ -104,8 +104,15 @@
|
||||
&ecspi2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_spi2>;
|
||||
- cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>;
|
||||
+ cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>,
|
||||
+ <&gpio1 10 GPIO_ACTIVE_LOW>;
|
||||
status = "okay";
|
||||
+
|
||||
+ tpm@1 {
|
||||
+ compatible = "tcg,tpm_tis-spi";
|
||||
+ reg = <0x1>;
|
||||
+ spi-max-frequency = <36000000>;
|
||||
+ };
|
||||
};
|
||||
|
||||
&gpio1 {
|
||||
@@ -362,6 +369,7 @@
|
||||
MX8MM_IOMUXC_ECSPI2_MOSI_ECSPI2_MOSI 0xd6
|
||||
MX8MM_IOMUXC_ECSPI2_MISO_ECSPI2_MISO 0xd6
|
||||
MX8MM_IOMUXC_ECSPI2_SS0_GPIO5_IO13 0xd6
|
||||
+ MX8MM_IOMUXC_GPIO1_IO10_GPIO1_IO10 0xd6
|
||||
>;
|
||||
};
|
||||
|
@ -0,0 +1,39 @@
|
||||
From 916ffc08e8cdd3beccd78291eac9dc5592d83de1 Mon Sep 17 00:00:00 2001
|
||||
From: Tim Harvey <tharvey@gateworks.com>
|
||||
Date: Thu, 24 Aug 2023 11:07:48 -0700
|
||||
Subject: [PATCH 402/413] 6.7: arm64: dts: imx8mp-venice-gw73xx: add TPM device
|
||||
|
||||
Add the TPM device found on the GW73xx revision F PCB.
|
||||
|
||||
Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
---
|
||||
.../arm64/boot/dts/freescale/imx8mp-venice-gw73xx.dtsi | 10 +++++++++-
|
||||
1 file changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/arch/arm64/boot/dts/freescale/imx8mp-venice-gw73xx.dtsi
|
||||
+++ b/arch/arm64/boot/dts/freescale/imx8mp-venice-gw73xx.dtsi
|
||||
@@ -95,8 +95,15 @@
|
||||
&ecspi2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_spi2>;
|
||||
- cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>;
|
||||
+ cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>,
|
||||
+ <&gpio1 10 GPIO_ACTIVE_LOW>;
|
||||
status = "okay";
|
||||
+
|
||||
+ tpm@1 {
|
||||
+ compatible = "tcg,tpm_tis-spi";
|
||||
+ reg = <0x1>;
|
||||
+ spi-max-frequency = <36000000>;
|
||||
+ };
|
||||
};
|
||||
|
||||
&gpio4 {
|
||||
@@ -327,6 +334,7 @@
|
||||
MX8MP_IOMUXC_ECSPI2_MOSI__ECSPI2_MOSI 0x140
|
||||
MX8MP_IOMUXC_ECSPI2_MISO__ECSPI2_MISO 0x140
|
||||
MX8MP_IOMUXC_ECSPI2_SS0__GPIO5_IO13 0x140
|
||||
+ MX8MP_IOMUXC_GPIO1_IO10__GPIO1_IO10 0x140
|
||||
>;
|
||||
};
|
||||
|
@ -0,0 +1,39 @@
|
||||
From 0adf19579692623d9d9202d2868aa7cd81451148 Mon Sep 17 00:00:00 2001
|
||||
From: Tim Harvey <tharvey@gateworks.com>
|
||||
Date: Thu, 28 Sep 2023 14:10:39 -0700
|
||||
Subject: [PATCH 403/413] 6.8: arm64: dts: imx8mm-venice-gw72xx: add TPM device
|
||||
|
||||
Add the TPM device found on the GW72xx revision F PCB.
|
||||
|
||||
Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
---
|
||||
.../arm64/boot/dts/freescale/imx8mm-venice-gw72xx.dtsi | 10 +++++++++-
|
||||
1 file changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/arch/arm64/boot/dts/freescale/imx8mm-venice-gw72xx.dtsi
|
||||
+++ b/arch/arm64/boot/dts/freescale/imx8mm-venice-gw72xx.dtsi
|
||||
@@ -84,8 +84,15 @@
|
||||
&ecspi2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_spi2>;
|
||||
- cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>;
|
||||
+ cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>,
|
||||
+ <&gpio1 10 GPIO_ACTIVE_LOW>;
|
||||
status = "okay";
|
||||
+
|
||||
+ tpm@1 {
|
||||
+ compatible = "tcg,tpm_tis-spi";
|
||||
+ reg = <0x1>;
|
||||
+ spi-max-frequency = <36000000>;
|
||||
+ };
|
||||
};
|
||||
|
||||
&gpio1 {
|
||||
@@ -313,6 +320,7 @@
|
||||
MX8MM_IOMUXC_ECSPI2_MOSI_ECSPI2_MOSI 0xd6
|
||||
MX8MM_IOMUXC_ECSPI2_MISO_ECSPI2_MISO 0xd6
|
||||
MX8MM_IOMUXC_ECSPI2_SS0_GPIO5_IO13 0xd6
|
||||
+ MX8MM_IOMUXC_GPIO1_IO10_GPIO1_IO10 0xd6
|
||||
>;
|
||||
};
|
||||
|
@ -0,0 +1,39 @@
|
||||
From 9d3932717327f6086a9a81a41df5bf5250aee782 Mon Sep 17 00:00:00 2001
|
||||
From: Tim Harvey <tharvey@gateworks.com>
|
||||
Date: Thu, 28 Sep 2023 14:11:01 -0700
|
||||
Subject: [PATCH 404/413] 6.8: arm64: dts: imx8mp-venice-gw72xx: add TPM device
|
||||
|
||||
Add the TPM device found on the GW72xx revision F PCB.
|
||||
|
||||
Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
---
|
||||
.../arm64/boot/dts/freescale/imx8mp-venice-gw72xx.dtsi | 10 +++++++++-
|
||||
1 file changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/arch/arm64/boot/dts/freescale/imx8mp-venice-gw72xx.dtsi
|
||||
+++ b/arch/arm64/boot/dts/freescale/imx8mp-venice-gw72xx.dtsi
|
||||
@@ -83,8 +83,15 @@
|
||||
&ecspi2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_spi2>;
|
||||
- cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>;
|
||||
+ cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>,
|
||||
+ <&gpio1 10 GPIO_ACTIVE_LOW>;
|
||||
status = "okay";
|
||||
+
|
||||
+ tpm@1 {
|
||||
+ compatible = "tcg,tpm_tis-spi";
|
||||
+ reg = <0x1>;
|
||||
+ spi-max-frequency = <36000000>;
|
||||
+ };
|
||||
};
|
||||
|
||||
&gpio4 {
|
||||
@@ -286,6 +293,7 @@
|
||||
MX8MP_IOMUXC_ECSPI2_MOSI__ECSPI2_MOSI 0x140
|
||||
MX8MP_IOMUXC_ECSPI2_MISO__ECSPI2_MISO 0x140
|
||||
MX8MP_IOMUXC_ECSPI2_SS0__GPIO5_IO13 0x140
|
||||
+ MX8MP_IOMUXC_GPIO1_IO10__GPIO1_IO10 0x140
|
||||
>;
|
||||
};
|
||||
|
@ -0,0 +1,39 @@
|
||||
From 6cea7c46172eca323e9ce7e6aab8f8506eb92b4b Mon Sep 17 00:00:00 2001
|
||||
From: Tim Harvey <tharvey@gateworks.com>
|
||||
Date: Wed, 29 Nov 2023 09:53:04 -0800
|
||||
Subject: [PATCH 405/413] 6.9: arm64: dts: imx8mm-venice-gw71xx: add TPM device
|
||||
|
||||
Add the TPM device found on the GW71xx revision E PCB.
|
||||
|
||||
Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
---
|
||||
.../arm64/boot/dts/freescale/imx8mm-venice-gw71xx.dtsi | 10 +++++++++-
|
||||
1 file changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/arch/arm64/boot/dts/freescale/imx8mm-venice-gw71xx.dtsi
|
||||
+++ b/arch/arm64/boot/dts/freescale/imx8mm-venice-gw71xx.dtsi
|
||||
@@ -53,8 +53,15 @@
|
||||
&ecspi2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_spi2>;
|
||||
- cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>;
|
||||
+ cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>,
|
||||
+ <&gpio1 10 GPIO_ACTIVE_LOW>;
|
||||
status = "okay";
|
||||
+
|
||||
+ tpm@1 {
|
||||
+ compatible = "tcg,tpm_tis-spi";
|
||||
+ reg = <0x1>;
|
||||
+ spi-max-frequency = <36000000>;
|
||||
+ };
|
||||
};
|
||||
|
||||
&gpio1 {
|
||||
@@ -201,6 +208,7 @@
|
||||
MX8MM_IOMUXC_ECSPI2_MOSI_ECSPI2_MOSI 0xd6
|
||||
MX8MM_IOMUXC_ECSPI2_MISO_ECSPI2_MISO 0xd6
|
||||
MX8MM_IOMUXC_ECSPI2_SS0_GPIO5_IO13 0xd6
|
||||
+ MX8MM_IOMUXC_GPIO1_IO10_GPIO1_IO10 0xd6
|
||||
>;
|
||||
};
|
||||
|
@ -0,0 +1,39 @@
|
||||
From 9095a68c0b7084a7819e697ef38d0c987531c8ab Mon Sep 17 00:00:00 2001
|
||||
From: Tim Harvey <tharvey@gateworks.com>
|
||||
Date: Wed, 29 Nov 2023 17:11:51 -0800
|
||||
Subject: [PATCH 406/413] 6.9: arm64: dts: imx8mp-venice-gw71xx: add TPM device
|
||||
|
||||
Add the TPM device found on the GW71xx revision E PCB.
|
||||
|
||||
Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
---
|
||||
.../arm64/boot/dts/freescale/imx8mp-venice-gw71xx.dtsi | 10 +++++++++-
|
||||
1 file changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/arch/arm64/boot/dts/freescale/imx8mp-venice-gw71xx.dtsi
|
||||
+++ b/arch/arm64/boot/dts/freescale/imx8mp-venice-gw71xx.dtsi
|
||||
@@ -48,8 +48,15 @@
|
||||
&ecspi2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_spi2>;
|
||||
- cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>;
|
||||
+ cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>,
|
||||
+ <&gpio1 10 GPIO_ACTIVE_LOW>;
|
||||
status = "okay";
|
||||
+
|
||||
+ tpm@1 {
|
||||
+ compatible = "tcg,tpm_tis-spi";
|
||||
+ reg = <0x1>;
|
||||
+ spi-max-frequency = <36000000>;
|
||||
+ };
|
||||
};
|
||||
|
||||
&gpio4 {
|
||||
@@ -217,6 +224,7 @@
|
||||
MX8MP_IOMUXC_ECSPI2_MOSI__ECSPI2_MOSI 0x140
|
||||
MX8MP_IOMUXC_ECSPI2_MISO__ECSPI2_MISO 0x140
|
||||
MX8MP_IOMUXC_ECSPI2_SS0__GPIO5_IO13 0x140
|
||||
+ MX8MP_IOMUXC_GPIO1_IO10__GPIO1_IO10 0x140
|
||||
>;
|
||||
};
|
||||
|
@ -0,0 +1,34 @@
|
||||
From e5bc89e60590581b0d31e8c6c6361c6caf5583bb Mon Sep 17 00:00:00 2001
|
||||
From: Tim Harvey <tharvey@gateworks.com>
|
||||
Date: Tue, 21 Nov 2023 11:12:24 -0800
|
||||
Subject: [PATCH 407/413] 6.9: arm64: dts: imx8mm-venice-gw7901: add digital
|
||||
I/O direction control GPIO's
|
||||
|
||||
The GW7901 has GPIO's to configure the direction of its isolated
|
||||
digital I/O signals. Add the GPIO pinmux and line names.
|
||||
|
||||
Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
---
|
||||
arch/arm64/boot/dts/freescale/imx8mm-venice-gw7901.dts | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/arch/arm64/boot/dts/freescale/imx8mm-venice-gw7901.dts
|
||||
+++ b/arch/arm64/boot/dts/freescale/imx8mm-venice-gw7901.dts
|
||||
@@ -319,7 +319,7 @@
|
||||
|
||||
&gpio4 {
|
||||
gpio-line-names = "", "", "", "",
|
||||
- "", "", "uart3_rs232#", "uart3_rs422#",
|
||||
+ "dig1_ctl", "dig2_ctl", "uart3_rs232#", "uart3_rs422#",
|
||||
"uart3_rs485#", "", "", "", "", "", "", "",
|
||||
"", "", "", "", "", "", "", "",
|
||||
"", "", "", "uart4_rs485#", "", "sim1det#", "sim2det#", "";
|
||||
@@ -842,6 +842,8 @@
|
||||
|
||||
pinctrl_hog: hoggrp {
|
||||
fsl,pins = <
|
||||
+ MX8MM_IOMUXC_SAI1_RXD2_GPIO4_IO4 0x40000041 /* DIG1_CTL */
|
||||
+ MX8MM_IOMUXC_SAI1_RXD3_GPIO4_IO5 0x40000041 /* DIG2_CTL */
|
||||
MX8MM_IOMUXC_SPDIF_TX_GPIO5_IO3 0x40000041 /* DIG2_OUT */
|
||||
MX8MM_IOMUXC_SPDIF_RX_GPIO5_IO4 0x40000041 /* DIG2_IN */
|
||||
MX8MM_IOMUXC_GPIO1_IO06_GPIO1_IO6 0x40000041 /* DIG1_IN */
|
@ -0,0 +1,45 @@
|
||||
From f905e9a03cdf8edf6fa719ba89f37e6138c33834 Mon Sep 17 00:00:00 2001
|
||||
From: Tim Harvey <tharvey@gateworks.com>
|
||||
Date: Tue, 21 Nov 2023 11:44:38 -0800
|
||||
Subject: [PATCH 408/413] 6.9: arm64: dts: imx8mm-venice-gw7901: add TPM device
|
||||
|
||||
Add the TPM device found on the GW7901 revision D PCB.
|
||||
|
||||
Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
---
|
||||
arch/arm64/boot/dts/freescale/imx8mm-venice-gw7901.dts | 10 +++++++++-
|
||||
1 file changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/arch/arm64/boot/dts/freescale/imx8mm-venice-gw7901.dts
|
||||
+++ b/arch/arm64/boot/dts/freescale/imx8mm-venice-gw7901.dts
|
||||
@@ -285,7 +285,8 @@
|
||||
&ecspi1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_spi1>;
|
||||
- cs-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
|
||||
+ cs-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>,
|
||||
+ <&gpio4 24 GPIO_ACTIVE_LOW>;
|
||||
status = "okay";
|
||||
|
||||
flash@0 {
|
||||
@@ -294,6 +295,12 @@
|
||||
spi-max-frequency = <40000000>;
|
||||
status = "okay";
|
||||
};
|
||||
+
|
||||
+ tpm@1 {
|
||||
+ compatible = "tcg,tpm_tis-spi";
|
||||
+ reg = <0x1>;
|
||||
+ spi-max-frequency = <36000000>;
|
||||
+ };
|
||||
};
|
||||
|
||||
&fec1 {
|
||||
@@ -989,6 +996,7 @@
|
||||
MX8MM_IOMUXC_ECSPI1_MOSI_ECSPI1_MOSI 0x82
|
||||
MX8MM_IOMUXC_ECSPI1_MISO_ECSPI1_MISO 0x82
|
||||
MX8MM_IOMUXC_ECSPI1_SS0_GPIO5_IO9 0x140
|
||||
+ MX8MM_IOMUXC_SAI2_TXFS_GPIO4_IO24 0x140
|
||||
>;
|
||||
};
|
||||
|
@ -0,0 +1,38 @@
|
||||
From fddb089c2ccfb8bc4bd3aba605f7eadfd9f36cfd Mon Sep 17 00:00:00 2001
|
||||
From: Tim Harvey <tharvey@gateworks.com>
|
||||
Date: Wed, 28 Feb 2024 10:22:11 -0800
|
||||
Subject: [PATCH 409/413] 6.9: arm64: dts: freescale: imx8mp-venice-gw72xx-2x:
|
||||
fix USB vbus regulator
|
||||
|
||||
When using usb-conn-gpio to control USB role and VBUS, the vbus-supply
|
||||
property must be present in the usb-conn-gpio node. Additionally it
|
||||
should not be present in the phy node as that isn't what controls vbus
|
||||
and will upset the use count.
|
||||
|
||||
This resolves an issue where VBUS is enabled with OTG in peripheral
|
||||
mode.
|
||||
|
||||
Fixes: 86c43ae03ab9 ("arm64: dts: freescale: Add imx8mp-venice-gw72xx-2x")
|
||||
Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
---
|
||||
arch/arm64/boot/dts/freescale/imx8mp-venice-gw72xx.dtsi | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/arch/arm64/boot/dts/freescale/imx8mp-venice-gw72xx.dtsi
|
||||
+++ b/arch/arm64/boot/dts/freescale/imx8mp-venice-gw72xx.dtsi
|
||||
@@ -169,7 +169,6 @@
|
||||
};
|
||||
|
||||
&usb3_phy0 {
|
||||
- vbus-supply = <®_usb1_vbus>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@@ -189,6 +188,7 @@
|
||||
pinctrl-0 = <&pinctrl_usbcon1>;
|
||||
type = "micro";
|
||||
label = "otg";
|
||||
+ vbus-supply = <®_usb1_vbus>;
|
||||
id-gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
@ -0,0 +1,38 @@
|
||||
From 69e3ce6d0c2f518bf9574112f3d4cc619c38602c Mon Sep 17 00:00:00 2001
|
||||
From: Tim Harvey <tharvey@gateworks.com>
|
||||
Date: Wed, 28 Feb 2024 10:24:19 -0800
|
||||
Subject: [PATCH 410/413] 6.9: arm64: dts: freescale: imx8mp-venice-gw73xx-2x:
|
||||
fix USB vbus regulator
|
||||
|
||||
When using usb-conn-gpio to control USB role and VBUS, the vbus-supply
|
||||
property must be present in the usb-conn-gpio node. Additionally it
|
||||
should not be present in the phy node as that isn't what controls vbus
|
||||
and will upset the use count.
|
||||
|
||||
This resolves an issue where VBUS is enabled with OTG in peripheral
|
||||
mode.
|
||||
|
||||
Fixes: 716ced308234 ("arm64: dts: freescale: Add imx8mp-venice-gw73xx-2x")
|
||||
Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
---
|
||||
arch/arm64/boot/dts/freescale/imx8mp-venice-gw73xx.dtsi | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/arch/arm64/boot/dts/freescale/imx8mp-venice-gw73xx.dtsi
|
||||
+++ b/arch/arm64/boot/dts/freescale/imx8mp-venice-gw73xx.dtsi
|
||||
@@ -188,7 +188,6 @@
|
||||
};
|
||||
|
||||
&usb3_phy0 {
|
||||
- vbus-supply = <®_usb1_vbus>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@@ -208,6 +207,7 @@
|
||||
pinctrl-0 = <&pinctrl_usbcon1>;
|
||||
type = "micro";
|
||||
label = "otg";
|
||||
+ vbus-supply = <®_usb1_vbus>;
|
||||
id-gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
@ -0,0 +1,30 @@
|
||||
From 9d75bdd797d32c859d0dd9f54acc30de63831eb1 Mon Sep 17 00:00:00 2001
|
||||
From: Tim Harvey <tharvey@gateworks.com>
|
||||
Date: Mon, 29 Jan 2024 15:28:39 -0800
|
||||
Subject: [PATCH 411/413] 6.10: arm64: dts: imx8mp-venice-gw74xx: add ADC rail
|
||||
for VDD_1P0
|
||||
|
||||
The imx8mp-venice-gw74xx revB PCB added an ADC rail for
|
||||
VDD_1P0. Add it to the GSC ADC rails.
|
||||
|
||||
Fixes: 531936b218d8 ("arm64: dts: imx8mp-venice-gw74xx: update to revB PCB")
|
||||
Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
---
|
||||
arch/arm64/boot/dts/freescale/imx8mp-venice-gw74xx.dts | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
--- a/arch/arm64/boot/dts/freescale/imx8mp-venice-gw74xx.dts
|
||||
+++ b/arch/arm64/boot/dts/freescale/imx8mp-venice-gw74xx.dts
|
||||
@@ -391,6 +391,12 @@
|
||||
label = "vdd_dram";
|
||||
};
|
||||
|
||||
+ channel@9e {
|
||||
+ gw,mode = <2>;
|
||||
+ reg = <0x9e>;
|
||||
+ label = "vdd_1p0";
|
||||
+ };
|
||||
+
|
||||
channel@a2 {
|
||||
gw,mode = <2>;
|
||||
reg = <0xa2>;
|
@ -0,0 +1,80 @@
|
||||
From 482fe0cb90d3376051304531a01edccac9ca1868 Mon Sep 17 00:00:00 2001
|
||||
From: Tim Harvey <tharvey@gateworks.com>
|
||||
Date: Thu, 29 Feb 2024 10:05:26 -0800
|
||||
Subject: [PATCH 412/413] 6.10: arm64: dts: imx8mp-venice-gw72xx: add mac addr
|
||||
for eth1
|
||||
|
||||
Add the PCI bus topology for eth1 so that boot firmware can set the
|
||||
local-mac-address property.
|
||||
|
||||
The eth1 device is behind a PCI switch:
|
||||
# lspci -n
|
||||
00:00.0 0604: 16c3:abcd (rev 01)
|
||||
01:00.0 0604: 12d8:b404 (rev 01)
|
||||
02:01.0 0604: 12d8:b404 (rev 01)
|
||||
02:02.0 0604: 12d8:b404 (rev 01)
|
||||
02:03.0 0604: 12d8:b404 (rev 01)
|
||||
05:00.0 0200: 11ab:4380
|
||||
# lspci -t
|
||||
-[0000:00]---00.0-[01-ff]----00.0-[02-05]--+-01.0-[03]--
|
||||
+-02.0-[04]--
|
||||
\-03.0-[05]----00.0
|
||||
|
||||
Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
---
|
||||
.../dts/freescale/imx8mp-venice-gw72xx.dtsi | 37 +++++++++++++++++++
|
||||
1 file changed, 37 insertions(+)
|
||||
|
||||
--- a/arch/arm64/boot/dts/freescale/imx8mp-venice-gw72xx.dtsi
|
||||
+++ b/arch/arm64/boot/dts/freescale/imx8mp-venice-gw72xx.dtsi
|
||||
@@ -8,6 +8,10 @@
|
||||
#include <dt-bindings/phy/phy-imx8-pcie.h>
|
||||
|
||||
/ {
|
||||
+ aliases {
|
||||
+ ethernet1 = ð1;
|
||||
+ };
|
||||
+
|
||||
led-controller {
|
||||
compatible = "gpio-leds";
|
||||
pinctrl-names = "default";
|
||||
@@ -137,6 +141,39 @@
|
||||
pinctrl-0 = <&pinctrl_pcie0>;
|
||||
reset-gpio = <&gpio4 29 GPIO_ACTIVE_LOW>;
|
||||
status = "okay";
|
||||
+
|
||||
+ pcie@0,0 {
|
||||
+ reg = <0x0000 0 0 0 0>;
|
||||
+ device_type = "pci";
|
||||
+ #address-cells = <3>;
|
||||
+ #size-cells = <2>;
|
||||
+ ranges;
|
||||
+
|
||||
+ pcie@0,0 {
|
||||
+ reg = <0x0000 0 0 0 0>;
|
||||
+ device_type = "pci";
|
||||
+ #address-cells = <3>;
|
||||
+ #size-cells = <2>;
|
||||
+ ranges;
|
||||
+
|
||||
+ pcie@3,0 {
|
||||
+ reg = <0x1800 0 0 0 0>;
|
||||
+ device_type = "pci";
|
||||
+ #address-cells = <3>;
|
||||
+ #size-cells = <2>;
|
||||
+ ranges;
|
||||
+
|
||||
+ eth1: ethernet@0,0 {
|
||||
+ reg = <0x0000 0 0 0 0>;
|
||||
+ #address-cells = <3>;
|
||||
+ #size-cells = <2>;
|
||||
+ ranges;
|
||||
+
|
||||
+ local-mac-address = [00 00 00 00 00 00];
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
};
|
||||
|
||||
/* GPS */
|
@ -0,0 +1,82 @@
|
||||
From caac9b614ee63f875b290fda429706f6ef36e2f1 Mon Sep 17 00:00:00 2001
|
||||
From: Tim Harvey <tharvey@gateworks.com>
|
||||
Date: Thu, 29 Feb 2024 10:12:49 -0800
|
||||
Subject: [PATCH 413/413] 6.10: arm64: dts: imx8mp-venice-gw73xx: add mac addr
|
||||
for eth1
|
||||
|
||||
Add the PCI bus topology for eth1 so that boot firmware can set the
|
||||
local-mac-address property.
|
||||
|
||||
The eth1 device is behind a PCI switch:
|
||||
# lspci -n
|
||||
00:00.0 0604: 16c3:abcd (rev 01)
|
||||
01:00.0 0604: 12d8:2608
|
||||
02:01.0 0604: 12d8:2608
|
||||
02:02.0 0604: 12d8:2608
|
||||
02:03.0 0604: 12d8:2608
|
||||
02:04.0 0604: 12d8:2608
|
||||
c0:00.0 0200: 1055:7430 (rev 11)
|
||||
# lspci -t
|
||||
-[0000:00]---00.0-[01-ff]----00.0-[02-fe]--+-01.0-[03-41]--
|
||||
+-02.0-[42-80]--
|
||||
+-03.0-[81-bf]--
|
||||
\-04.0-[c0-fe]----00.0
|
||||
|
||||
Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
---
|
||||
.../dts/freescale/imx8mp-venice-gw73xx.dtsi | 37 +++++++++++++++++++
|
||||
1 file changed, 37 insertions(+)
|
||||
|
||||
--- a/arch/arm64/boot/dts/freescale/imx8mp-venice-gw73xx.dtsi
|
||||
+++ b/arch/arm64/boot/dts/freescale/imx8mp-venice-gw73xx.dtsi
|
||||
@@ -8,6 +8,10 @@
|
||||
#include <dt-bindings/phy/phy-imx8-pcie.h>
|
||||
|
||||
/ {
|
||||
+ aliases {
|
||||
+ ethernet1 = ð1;
|
||||
+ };
|
||||
+
|
||||
led-controller {
|
||||
compatible = "gpio-leds";
|
||||
pinctrl-names = "default";
|
||||
@@ -149,6 +153,39 @@
|
||||
pinctrl-0 = <&pinctrl_pcie0>;
|
||||
reset-gpio = <&gpio4 29 GPIO_ACTIVE_LOW>;
|
||||
status = "okay";
|
||||
+
|
||||
+ pcie@0,0 {
|
||||
+ reg = <0x0000 0 0 0 0>;
|
||||
+ device_type = "pci";
|
||||
+ #address-cells = <3>;
|
||||
+ #size-cells = <2>;
|
||||
+ ranges;
|
||||
+
|
||||
+ pcie@0,0 {
|
||||
+ reg = <0x0000 0 0 0 0>;
|
||||
+ device_type = "pci";
|
||||
+ #address-cells = <3>;
|
||||
+ #size-cells = <2>;
|
||||
+ ranges;
|
||||
+
|
||||
+ pcie@4,0 {
|
||||
+ reg = <0x2000 0 0 0 0>;
|
||||
+ device_type = "pci";
|
||||
+ #address-cells = <3>;
|
||||
+ #size-cells = <2>;
|
||||
+ ranges;
|
||||
+
|
||||
+ eth1: ethernet@0,0 {
|
||||
+ reg = <0x0000 0 0 0 0>;
|
||||
+ #address-cells = <3>;
|
||||
+ #size-cells = <2>;
|
||||
+ ranges;
|
||||
+
|
||||
+ local-mac-address = [00 00 00 00 00 00];
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
};
|
||||
|
||||
/* GPS */
|
@ -57,7 +57,7 @@ Signed-off-by: Bjorn Andersson <andersson@kernel.org>
|
||||
static int __qcom_scm_set_dload_mode(struct device *dev, bool enable)
|
||||
{
|
||||
struct qcom_scm_desc desc = {
|
||||
@@ -1467,6 +1490,13 @@ static int qcom_scm_probe(struct platfor
|
||||
@@ -1473,6 +1496,13 @@ static int qcom_scm_probe(struct platfor
|
||||
|
||||
__get_convention();
|
||||
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||
|
||||
--- a/drivers/firmware/qcom_scm.c
|
||||
+++ b/drivers/firmware/qcom_scm.c
|
||||
@@ -1522,7 +1522,8 @@ static int qcom_scm_probe(struct platfor
|
||||
@@ -1528,7 +1528,8 @@ static int qcom_scm_probe(struct platfor
|
||||
static void qcom_scm_shutdown(struct platform_device *pdev)
|
||||
{
|
||||
/* Clean shutdown, disable download mode to allow normal restart */
|
||||
|
@ -11,8 +11,7 @@ CPU_TYPE:=e5500
|
||||
FEATURES:=boot-part ext4 fpu legacy-sdcard powerpc64 ramdisk rootfs-part rtc source-only
|
||||
SUBTARGETS:=generic
|
||||
|
||||
KERNEL_PATCHVER:=5.15
|
||||
KERNEL_TESTING_PATCHVER:=6.1
|
||||
KERNEL_PATCHVER:=6.1
|
||||
|
||||
KERNELNAME:=zImage
|
||||
|
||||
|
@ -1,395 +0,0 @@
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_ALTIVEC=y
|
||||
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
|
||||
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
|
||||
CONFIG_ARCH_KEEP_MEMBLOCK=y
|
||||
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
|
||||
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
|
||||
CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y
|
||||
CONFIG_ARCH_MMAP_RND_BITS=18
|
||||
CONFIG_ARCH_MMAP_RND_BITS_MAX=32
|
||||
CONFIG_ARCH_MMAP_RND_BITS_MIN=18
|
||||
CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=17
|
||||
CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11
|
||||
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
||||
CONFIG_ARCH_STACKWALK=y
|
||||
CONFIG_ARCH_WEAK_RELEASE_ACQUIRE=y
|
||||
CONFIG_ASN1=y
|
||||
CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y
|
||||
CONFIG_AUDIT_ARCH=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_BLK_MQ_PCI=y
|
||||
CONFIG_BLK_PM=y
|
||||
CONFIG_BOOKE=y
|
||||
CONFIG_BOOKE_WDT=y
|
||||
CONFIG_CLK_QORIQ=y
|
||||
CONFIG_CLONE_BACKWARDS=y
|
||||
CONFIG_CLZ_TAB=y
|
||||
CONFIG_COMMON_CLK=y
|
||||
# CONFIG_COMPAT_32BIT_TIME is not set
|
||||
CONFIG_CONSOLE_TRANSLATIONS=y
|
||||
CONFIG_CORENET_GENERIC=y
|
||||
# CONFIG_CPUFREQ_DT is not set
|
||||
CONFIG_CPU_BIG_ENDIAN=y
|
||||
CONFIG_CPU_FREQ=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y
|
||||
CONFIG_CPU_FREQ_GOV_ATTR_SET=y
|
||||
CONFIG_CPU_FREQ_GOV_COMMON=y
|
||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=y
|
||||
# CONFIG_CPU_FREQ_STAT is not set
|
||||
CONFIG_CPU_IDLE=y
|
||||
CONFIG_CPU_IDLE_GOV_TEO=y
|
||||
CONFIG_CPU_ISOLATION=y
|
||||
CONFIG_CPU_RMAP=y
|
||||
CONFIG_CRC16=y
|
||||
CONFIG_CRYPTO_AUTHENC=y
|
||||
CONFIG_CRYPTO_CRC32=y
|
||||
CONFIG_CRYPTO_CRC32C=y
|
||||
# CONFIG_CRYPTO_CRC32C_VPMSUM is not set
|
||||
CONFIG_CRYPTO_DES=y
|
||||
CONFIG_CRYPTO_DEV_FSL_CAAM=y
|
||||
CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API=y
|
||||
CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API_DESC=y
|
||||
CONFIG_CRYPTO_DEV_FSL_CAAM_COMMON=y
|
||||
CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API=y
|
||||
CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_DESC=y
|
||||
CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_QI=y
|
||||
# CONFIG_CRYPTO_DEV_FSL_CAAM_DEBUG is not set
|
||||
# CONFIG_CRYPTO_DEV_FSL_CAAM_INTC is not set
|
||||
CONFIG_CRYPTO_DEV_FSL_CAAM_JR=y
|
||||
CONFIG_CRYPTO_DEV_FSL_CAAM_PKC_API=y
|
||||
CONFIG_CRYPTO_DEV_FSL_CAAM_RINGSIZE=9
|
||||
CONFIG_CRYPTO_DEV_FSL_CAAM_RNG_API=y
|
||||
# CONFIG_CRYPTO_DEV_NX is not set
|
||||
CONFIG_CRYPTO_ECB=y
|
||||
CONFIG_CRYPTO_ENGINE=y
|
||||
CONFIG_CRYPTO_HW=y
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||
CONFIG_CRYPTO_LIB_DES=y
|
||||
CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
|
||||
# CONFIG_CRYPTO_MD5_PPC is not set
|
||||
CONFIG_CRYPTO_RNG=y
|
||||
CONFIG_CRYPTO_RNG2=y
|
||||
CONFIG_CRYPTO_RSA=y
|
||||
# CONFIG_CRYPTO_SHA1_PPC is not set
|
||||
CONFIG_CRYPTO_XTS=y
|
||||
CONFIG_DATA_SHIFT=12
|
||||
CONFIG_DEBUG_INFO=y
|
||||
CONFIG_DEFAULT_UIMAGE=y
|
||||
CONFIG_DMADEVICES=y
|
||||
CONFIG_DMA_ENGINE=y
|
||||
CONFIG_DMA_OF=y
|
||||
CONFIG_DMA_OPS=y
|
||||
CONFIG_DMA_OPS_BYPASS=y
|
||||
CONFIG_DTC=y
|
||||
CONFIG_DUMMY_CONSOLE=y
|
||||
CONFIG_E500=y
|
||||
# CONFIG_E5500_CPU is not set
|
||||
CONFIG_E6500_CPU=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_EDAC=y
|
||||
CONFIG_EDAC_ATOMIC_SCRUB=y
|
||||
# CONFIG_EDAC_CPC925 is not set
|
||||
# CONFIG_EDAC_DEBUG is not set
|
||||
CONFIG_EDAC_LEGACY_SYSFS=y
|
||||
CONFIG_EDAC_MPC85XX=y
|
||||
CONFIG_EDAC_SUPPORT=y
|
||||
CONFIG_EPAPR_PARAVIRT=y
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_EXT4_FS_POSIX_ACL=y
|
||||
CONFIG_F2FS_FS=y
|
||||
CONFIG_FIXED_PHY=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=13
|
||||
# CONFIG_FSL_BMAN_TEST is not set
|
||||
CONFIG_FSL_CORENET_CF=y
|
||||
CONFIG_FSL_CORENET_RCPM=y
|
||||
CONFIG_FSL_DMA=y
|
||||
CONFIG_FSL_DPAA=y
|
||||
# CONFIG_FSL_DPAA_CHECKING is not set
|
||||
CONFIG_FSL_DPAA_ETH=y
|
||||
CONFIG_FSL_EMB_PERFMON=y
|
||||
CONFIG_FSL_FMAN=y
|
||||
CONFIG_FSL_GUTS=y
|
||||
CONFIG_FSL_IFC=y
|
||||
CONFIG_FSL_LBC=y
|
||||
CONFIG_FSL_MPIC_TIMER_WAKEUP=y
|
||||
CONFIG_FSL_PAMU=y
|
||||
CONFIG_FSL_PCI=y
|
||||
# CONFIG_FSL_QMAN_TEST is not set
|
||||
CONFIG_FSL_SOC=y
|
||||
CONFIG_FSL_SOC_BOOKE=y
|
||||
CONFIG_FSL_XGMAC_MDIO=y
|
||||
CONFIG_FS_IOMAP=y
|
||||
CONFIG_FS_MBCACHE=y
|
||||
CONFIG_FS_POSIX_ACL=y
|
||||
CONFIG_FTL=y
|
||||
CONFIG_FUNCTION_ALIGNMENT=0
|
||||
CONFIG_FUNCTION_ERROR_INJECTION=y
|
||||
CONFIG_FWNODE_MDIO=y
|
||||
CONFIG_FW_LOADER_PAGED_BUF=y
|
||||
CONFIG_GENERIC_ALLOCATOR=y
|
||||
CONFIG_GENERIC_BUG=y
|
||||
CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
|
||||
CONFIG_GENERIC_CMOS_UPDATE=y
|
||||
# CONFIG_GENERIC_CPU is not set
|
||||
CONFIG_GENERIC_CPU_AUTOPROBE=y
|
||||
CONFIG_GENERIC_CPU_VULNERABILITIES=y
|
||||
CONFIG_GENERIC_EARLY_IOREMAP=y
|
||||
CONFIG_GENERIC_GETTIMEOFDAY=y
|
||||
CONFIG_GENERIC_IRQ_MIGRATION=y
|
||||
CONFIG_GENERIC_IRQ_SHOW=y
|
||||
CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
|
||||
CONFIG_GENERIC_ISA_DMA=y
|
||||
CONFIG_GENERIC_MSI_IRQ=y
|
||||
CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
|
||||
CONFIG_GENERIC_PCI_IOMAP=y
|
||||
CONFIG_GENERIC_PHY=y
|
||||
CONFIG_GENERIC_SMP_IDLE_THREAD=y
|
||||
CONFIG_GENERIC_STRNCPY_FROM_USER=y
|
||||
CONFIG_GENERIC_STRNLEN_USER=y
|
||||
CONFIG_GENERIC_TIME_VSYSCALL=y
|
||||
# CONFIG_GEN_RTC is not set
|
||||
# CONFIG_GIANFAR is not set
|
||||
CONFIG_GLOB=y
|
||||
CONFIG_GPIO_CDEV=y
|
||||
CONFIG_GPIO_GENERIC=y
|
||||
CONFIG_GPIO_MPC8XXX=y
|
||||
CONFIG_GRO_CELLS=y
|
||||
# CONFIG_HANGCHECK_TIMER is not set
|
||||
CONFIG_HAS_DMA=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT_MAP=y
|
||||
CONFIG_HWMON=y
|
||||
CONFIG_HW_CONSOLE=y
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_BOARDINFO=y
|
||||
CONFIG_I2C_MPC=y
|
||||
CONFIG_ILLEGAL_POINTER_VALUE=0x5deadbeef0000000
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
CONFIG_INPUT=y
|
||||
CONFIG_IOMMU_API=y
|
||||
# CONFIG_IOMMU_DEBUGFS is not set
|
||||
CONFIG_IOMMU_DEFAULT_DMA_STRICT=y
|
||||
CONFIG_IOMMU_HELPER=y
|
||||
CONFIG_IOMMU_SUPPORT=y
|
||||
CONFIG_IRQCHIP=y
|
||||
CONFIG_IRQ_DOMAIN=y
|
||||
CONFIG_IRQ_DOMAIN_HIERARCHY=y
|
||||
CONFIG_IRQ_FORCED_THREADING=y
|
||||
CONFIG_IRQ_WORK=y
|
||||
CONFIG_ISA_DMA_API=y
|
||||
CONFIG_JBD2=y
|
||||
CONFIG_JUMP_LABEL=y
|
||||
CONFIG_JUMP_LABEL_FEATURE_CHECKS=y
|
||||
# CONFIG_JUMP_LABEL_FEATURE_CHECK_DEBUG is not set
|
||||
CONFIG_KALLSYMS=y
|
||||
CONFIG_KERNEL_GZIP=y
|
||||
CONFIG_KERNEL_START=0xc000000000000000
|
||||
CONFIG_KPROBES=y
|
||||
CONFIG_KRETPROBES=y
|
||||
CONFIG_LIBFDT=y
|
||||
CONFIG_LOCK_DEBUGGING_SUPPORT=y
|
||||
CONFIG_LOCK_SPIN_ON_OWNER=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_MARVELL_PHY=y
|
||||
CONFIG_MATH_EMULATION=y
|
||||
# CONFIG_MATH_EMULATION_FULL is not set
|
||||
CONFIG_MATH_EMULATION_HW_UNIMPLEMENTED=y
|
||||
CONFIG_MDIO_BUS=y
|
||||
CONFIG_MDIO_DEVICE=y
|
||||
CONFIG_MDIO_DEVRES=y
|
||||
CONFIG_MEMFD_CREATE=y
|
||||
CONFIG_MEMORY=y
|
||||
CONFIG_MIGRATION=y
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_BLOCK=y
|
||||
CONFIG_MMC_DEBUG=y
|
||||
CONFIG_MMC_SDHCI=y
|
||||
CONFIG_MMC_SDHCI_IO_ACCESSORS=y
|
||||
CONFIG_MMC_SDHCI_OF_ESDHC=y
|
||||
# CONFIG_MMC_SDHCI_PCI is not set
|
||||
CONFIG_MMC_SDHCI_PLTFM=y
|
||||
# CONFIG_MMC_WBSD is not set
|
||||
CONFIG_MMIOWB=y
|
||||
CONFIG_MMU_GATHER_PAGE_SIZE=y
|
||||
CONFIG_MODULES_USE_ELF_RELA=y
|
||||
CONFIG_MPIC=y
|
||||
CONFIG_MPIC_MSGR=y
|
||||
CONFIG_MPIC_TIMER=y
|
||||
CONFIG_MPILIB=y
|
||||
CONFIG_MTD_NAND_CORE=y
|
||||
CONFIG_MTD_NAND_ECC=y
|
||||
CONFIG_MTD_NAND_ECC_SW_HAMMING=y
|
||||
CONFIG_MTD_NAND_FSL_IFC=y
|
||||
CONFIG_MTD_PHYSMAP=y
|
||||
CONFIG_MTD_RAW_NAND=y
|
||||
CONFIG_MUTEX_SPIN_ON_OWNER=y
|
||||
CONFIG_NEED_DMA_MAP_STATE=y
|
||||
CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
|
||||
CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
|
||||
CONFIG_NEED_SG_DMA_LENGTH=y
|
||||
CONFIG_NET_DEVLINK=y
|
||||
CONFIG_NET_DSA=y
|
||||
CONFIG_NET_DSA_MV88E6XXX=y
|
||||
CONFIG_NET_DSA_TAG_DSA=y
|
||||
CONFIG_NET_DSA_TAG_DSA_COMMON=y
|
||||
CONFIG_NET_DSA_TAG_EDSA=y
|
||||
CONFIG_NET_DSA_TAG_OCELOT=y
|
||||
CONFIG_NET_DSA_TAG_TRAILER=y
|
||||
CONFIG_NET_FLOW_LIMIT=y
|
||||
CONFIG_NET_PTP_CLASSIFY=y
|
||||
CONFIG_NET_SELFTESTS=y
|
||||
CONFIG_NET_SWITCHDEV=y
|
||||
CONFIG_NLS=y
|
||||
CONFIG_NONSTATIC_KERNEL=y
|
||||
CONFIG_NO_HZ_COMMON=y
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_NR_CPUS=24
|
||||
CONFIG_NR_IRQS=512
|
||||
CONFIG_OF=y
|
||||
CONFIG_OF_ADDRESS=y
|
||||
CONFIG_OF_DMA_DEFAULT_COHERENT=y
|
||||
CONFIG_OF_EARLY_FLATTREE=y
|
||||
CONFIG_OF_FLATTREE=y
|
||||
CONFIG_OF_GPIO=y
|
||||
CONFIG_OF_IOMMU=y
|
||||
CONFIG_OF_IRQ=y
|
||||
CONFIG_OF_KOBJ=y
|
||||
CONFIG_OF_MDIO=y
|
||||
CONFIG_OLD_SIGSUSPEND=y
|
||||
CONFIG_OPTPROBES=y
|
||||
CONFIG_PACKING=y
|
||||
CONFIG_PADATA=y
|
||||
CONFIG_PAGE_OFFSET=0xc000000000000000
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
CONFIG_PCI_MSI=y
|
||||
CONFIG_PCI_MSI_ARCH_FALLBACKS=y
|
||||
CONFIG_PCI_MSI_IRQ_DOMAIN=y
|
||||
CONFIG_PGTABLE_LEVELS=4
|
||||
CONFIG_PHYLIB=y
|
||||
CONFIG_PHYLINK=y
|
||||
CONFIG_PHYSICAL_START=0x00000000
|
||||
CONFIG_PHYS_64BIT=y
|
||||
CONFIG_PHYS_ADDR_T_64BIT=y
|
||||
CONFIG_PM=y
|
||||
# CONFIG_PMU_SYSFS is not set
|
||||
CONFIG_PM_CLK=y
|
||||
CONFIG_PPC=y
|
||||
CONFIG_PPC64=y
|
||||
CONFIG_PPC_ADV_DEBUG_DACS=2
|
||||
CONFIG_PPC_ADV_DEBUG_DVCS=0
|
||||
CONFIG_PPC_ADV_DEBUG_IACS=2
|
||||
CONFIG_PPC_ADV_DEBUG_REGS=y
|
||||
CONFIG_PPC_BARRIER_NOSPEC=y
|
||||
CONFIG_PPC_BOOK3E=y
|
||||
CONFIG_PPC_BOOK3E_64=y
|
||||
CONFIG_PPC_BOOK3E_MMU=y
|
||||
# CONFIG_PPC_BOOK3S_64 is not set
|
||||
CONFIG_PPC_DAWR=y
|
||||
CONFIG_PPC_DOORBELL=y
|
||||
CONFIG_PPC_E500MC=y
|
||||
# CONFIG_PPC_EARLY_DEBUG is not set
|
||||
CONFIG_PPC_EPAPR_HV_PIC=y
|
||||
CONFIG_PPC_FPU=y
|
||||
CONFIG_PPC_FPU_REGS=y
|
||||
CONFIG_PPC_FSL_BOOK3E=y
|
||||
CONFIG_PPC_INDIRECT_PCI=y
|
||||
# CONFIG_PPC_IRQ_SOFT_MASK_DEBUG is not set
|
||||
CONFIG_PPC_MMU_NOHASH=y
|
||||
CONFIG_PPC_MSI_BITMAP=y
|
||||
CONFIG_PPC_OF_BOOT_TRAMPOLINE=y
|
||||
CONFIG_PPC_PAGE_SHIFT=12
|
||||
# CONFIG_PPC_QEMU_E500 is not set
|
||||
CONFIG_PPC_QUEUED_SPINLOCKS=y
|
||||
CONFIG_PPC_SMP_MUXED_IPI=y
|
||||
CONFIG_PPC_UDBG_16550=y
|
||||
CONFIG_PPC_WERROR=y
|
||||
CONFIG_PPS=y
|
||||
CONFIG_PTE_64BIT=y
|
||||
CONFIG_PTP_1588_CLOCK=y
|
||||
CONFIG_PTP_1588_CLOCK_OPTIONAL=y
|
||||
CONFIG_PTP_1588_CLOCK_QORIQ=y
|
||||
CONFIG_QORIQ_CPUFREQ=y
|
||||
CONFIG_QORIQ_THERMAL=y
|
||||
CONFIG_QUEUED_RWLOCKS=y
|
||||
CONFIG_QUEUED_SPINLOCKS=y
|
||||
CONFIG_RAS=y
|
||||
CONFIG_RATIONAL=y
|
||||
# CONFIG_RAVE_SP_CORE is not set
|
||||
CONFIG_REGMAP=y
|
||||
CONFIG_REGMAP_MMIO=y
|
||||
CONFIG_RELOCATABLE=y
|
||||
# CONFIG_RELOCATABLE_TEST is not set
|
||||
CONFIG_RFS_ACCEL=y
|
||||
CONFIG_RPS=y
|
||||
CONFIG_RWSEM_SPIN_ON_OWNER=y
|
||||
# CONFIG_SCOM_DEBUGFS is not set
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_COMMON=y
|
||||
CONFIG_SERIAL_8250_EXTENDED=y
|
||||
CONFIG_SERIAL_8250_FSL=y
|
||||
CONFIG_SERIAL_8250_NR_UARTS=4
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
|
||||
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||
CONFIG_SERIAL_DEV_BUS=y
|
||||
CONFIG_SERIAL_DEV_CTRL_TTYPORT=y
|
||||
CONFIG_SERIAL_FSL_LINFLEXUART=y
|
||||
CONFIG_SERIAL_FSL_LINFLEXUART_CONSOLE=y
|
||||
CONFIG_SERIAL_FSL_LPUART=y
|
||||
CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
|
||||
CONFIG_SERIAL_MCTRL_GPIO=y
|
||||
CONFIG_SG_POOL=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_SOCK_RX_QUEUE_MAPPING=y
|
||||
CONFIG_SOC_BUS=y
|
||||
CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
CONFIG_SPI=y
|
||||
CONFIG_SPI_FSL_ESPI=y
|
||||
CONFIG_SPI_MASTER=y
|
||||
CONFIG_SRCU=y
|
||||
CONFIG_SWIOTLB=y
|
||||
CONFIG_SWPHY=y
|
||||
CONFIG_SYSCTL_EXCEPTION_TRACE=y
|
||||
CONFIG_TARGET_CPU_BOOL=y
|
||||
CONFIG_THERMAL=y
|
||||
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
|
||||
CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
|
||||
CONFIG_THERMAL_GOV_STEP_WISE=y
|
||||
CONFIG_THERMAL_OF=y
|
||||
CONFIG_THREAD_INFO_IN_TASK=y
|
||||
CONFIG_THREAD_SHIFT=14
|
||||
CONFIG_TREE_RCU=y
|
||||
CONFIG_TREE_SRCU=y
|
||||
# CONFIG_UACCE is not set
|
||||
# CONFIG_UCLAMP_TASK is not set
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_COMMON=y
|
||||
CONFIG_USB_EHCI_FSL=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
# CONFIG_USB_EHCI_HCD_PLATFORM is not set
|
||||
CONFIG_USB_STORAGE=y
|
||||
CONFIG_USB_SUPPORT=y
|
||||
CONFIG_USB_UAS=y
|
||||
CONFIG_VGA_CONSOLE=y
|
||||
CONFIG_VIRT_CPU_ACCOUNTING=y
|
||||
CONFIG_VIRT_CPU_ACCOUNTING_NATIVE=y
|
||||
CONFIG_VT=y
|
||||
CONFIG_VT_CONSOLE=y
|
||||
# CONFIG_VT_HW_CONSOLE_BINDING is not set
|
||||
CONFIG_WATCHDOG_CORE=y
|
||||
# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
|
||||
CONFIG_XPS=y
|
||||
CONFIG_ZLIB_DEFLATE=y
|
@ -7103,7 +7103,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||
+#endif /* __REGULATOR_CPR_REGULATOR_H__ */
|
||||
--- /dev/null
|
||||
+++ b/drivers/regulator/cpr3-util.c
|
||||
@@ -0,0 +1,2750 @@
|
||||
@@ -0,0 +1,2760 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2015-2017, The Linux Foundation. All rights reserved.
|
||||
+ *
|
||||
@ -7133,8 +7133,6 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||
+#include <linux/slab.h>
|
||||
+#include <linux/types.h>
|
||||
+
|
||||
+#include <soc/qcom/socinfo.h>
|
||||
+
|
||||
+#include "cpr3-regulator.h"
|
||||
+
|
||||
+#define BYTES_PER_FUSE_ROW 8
|
||||
@ -7152,6 +7150,18 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||
+/* This constant has units of uV/mV so 1000 corresponds to 100%. */
|
||||
+#define CPR3_AGING_DERATE_UNITY 1000
|
||||
+
|
||||
+static inline int read_ipq_soc_version_major(void)
|
||||
+{
|
||||
+ const int *prop;
|
||||
+ prop = of_get_property(of_find_node_by_path("/"), "soc_version_major",
|
||||
+ NULL);
|
||||
+
|
||||
+ if (!prop)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ return le32_to_cpu(*prop);
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
+ * cpr3_allocate_regulators() - allocate and initialize CPR3 regulators for a
|
||||
+ * given thread based upon device tree data
|
||||
@ -11676,469 +11686,3 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||
+
|
||||
+arch_initcall(cpr4_regulator_init);
|
||||
+module_exit(cpr4_regulator_exit);
|
||||
--- /dev/null
|
||||
+++ b/include/soc/qcom/socinfo.h
|
||||
@@ -0,0 +1,463 @@
|
||||
+/* Copyright (c) 2009-2014, 2016, 2020, The Linux Foundation. All rights reserved.
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License version 2 and
|
||||
+ * only version 2 as published by the Free Software Foundation.
|
||||
+ *
|
||||
+ * This program is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+#ifndef _ARCH_ARM_MACH_MSM_SOCINFO_H_
|
||||
+#define _ARCH_ARM_MACH_MSM_SOCINFO_H_
|
||||
+
|
||||
+#include <linux/of.h>
|
||||
+
|
||||
+#define CPU_IPQ8074 323
|
||||
+#define CPU_IPQ8072 342
|
||||
+#define CPU_IPQ8076 343
|
||||
+#define CPU_IPQ8078 344
|
||||
+#define CPU_IPQ8070 375
|
||||
+#define CPU_IPQ8071 376
|
||||
+
|
||||
+#define CPU_IPQ8072A 389
|
||||
+#define CPU_IPQ8074A 390
|
||||
+#define CPU_IPQ8076A 391
|
||||
+#define CPU_IPQ8078A 392
|
||||
+#define CPU_IPQ8070A 395
|
||||
+#define CPU_IPQ8071A 396
|
||||
+
|
||||
+#define CPU_IPQ8172 397
|
||||
+#define CPU_IPQ8173 398
|
||||
+#define CPU_IPQ8174 399
|
||||
+
|
||||
+#define CPU_IPQ6018 402
|
||||
+#define CPU_IPQ6028 403
|
||||
+#define CPU_IPQ6000 421
|
||||
+#define CPU_IPQ6010 422
|
||||
+#define CPU_IPQ6005 453
|
||||
+
|
||||
+#define CPU_IPQ5010 446
|
||||
+#define CPU_IPQ5018 447
|
||||
+#define CPU_IPQ5028 448
|
||||
+#define CPU_IPQ5000 503
|
||||
+#define CPU_IPQ0509 504
|
||||
+#define CPU_IPQ0518 505
|
||||
+
|
||||
+#define CPU_IPQ9514 510
|
||||
+#define CPU_IPQ9554 512
|
||||
+#define CPU_IPQ9570 513
|
||||
+#define CPU_IPQ9574 514
|
||||
+#define CPU_IPQ9550 511
|
||||
+#define CPU_IPQ9510 521
|
||||
+
|
||||
+static inline int read_ipq_soc_version_major(void)
|
||||
+{
|
||||
+ const int *prop;
|
||||
+ prop = of_get_property(of_find_node_by_path("/"), "soc_version_major",
|
||||
+ NULL);
|
||||
+
|
||||
+ if (!prop)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ return le32_to_cpu(*prop);
|
||||
+}
|
||||
+
|
||||
+static inline int read_ipq_cpu_type(void)
|
||||
+{
|
||||
+ const int *prop;
|
||||
+ prop = of_get_property(of_find_node_by_path("/"), "cpu_type", NULL);
|
||||
+ /*
|
||||
+ * Return Default CPU type if "cpu_type" property is not found in DTSI
|
||||
+ */
|
||||
+ if (!prop)
|
||||
+ return CPU_IPQ8074;
|
||||
+
|
||||
+ return le32_to_cpu(*prop);
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq8070(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ8070;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq8071(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ8071;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq8072(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ8072;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq8074(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ8074;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq8076(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ8076;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq8078(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ8078;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq8072a(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ8072A;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq8074a(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ8074A;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq8076a(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ8076A;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq8078a(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ8078A;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq8070a(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ8070A;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq8071a(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ8071A;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq8172(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ8172;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq8173(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ8173;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq8174(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ8174;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq6018(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ6018;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq6028(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ6028;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq6000(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ6000;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq6010(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ6010;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq6005(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ6005;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq5010(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ5010;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq5018(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ5018;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq5028(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ5028;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq5000(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ5000;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq0509(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ0509;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq0518(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ0518;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq9514(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ9514;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq9554(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ9554;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq9570(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ9570;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq9574(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ9574;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq9550(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ9550;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq9510(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return read_ipq_cpu_type() == CPU_IPQ9510;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq807x(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return cpu_is_ipq8072() || cpu_is_ipq8074() ||
|
||||
+ cpu_is_ipq8076() || cpu_is_ipq8078() ||
|
||||
+ cpu_is_ipq8070() || cpu_is_ipq8071() ||
|
||||
+ cpu_is_ipq8072a() || cpu_is_ipq8074a() ||
|
||||
+ cpu_is_ipq8076a() || cpu_is_ipq8078a() ||
|
||||
+ cpu_is_ipq8070a() || cpu_is_ipq8071a() ||
|
||||
+ cpu_is_ipq8172() || cpu_is_ipq8173() ||
|
||||
+ cpu_is_ipq8174();
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq60xx(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return cpu_is_ipq6018() || cpu_is_ipq6028() ||
|
||||
+ cpu_is_ipq6000() || cpu_is_ipq6010() ||
|
||||
+ cpu_is_ipq6005();
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq50xx(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return cpu_is_ipq5010() || cpu_is_ipq5018() ||
|
||||
+ cpu_is_ipq5028() || cpu_is_ipq5000() ||
|
||||
+ cpu_is_ipq0509() || cpu_is_ipq0518();
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_ipq95xx(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return cpu_is_ipq9514() || cpu_is_ipq9554() ||
|
||||
+ cpu_is_ipq9570() || cpu_is_ipq9574() ||
|
||||
+ cpu_is_ipq9550() || cpu_is_ipq9510();
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_nss_crypto_enabled(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return cpu_is_ipq807x() || cpu_is_ipq60xx() ||
|
||||
+ cpu_is_ipq50xx() || cpu_is_ipq9570() ||
|
||||
+ cpu_is_ipq9550() || cpu_is_ipq9574() ||
|
||||
+ cpu_is_ipq9554();
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_internal_wifi_enabled(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return cpu_is_ipq807x() || cpu_is_ipq60xx() ||
|
||||
+ cpu_is_ipq50xx() || cpu_is_ipq9514() ||
|
||||
+ cpu_is_ipq9554() || cpu_is_ipq9574();
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_uniphy1_enabled(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return cpu_is_ipq807x() || cpu_is_ipq60xx() ||
|
||||
+ cpu_is_ipq9554() || cpu_is_ipq9570() ||
|
||||
+ cpu_is_ipq9574() || cpu_is_ipq9550();
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static inline int cpu_is_uniphy2_enabled(void)
|
||||
+{
|
||||
+#ifdef CONFIG_ARCH_QCOM
|
||||
+ return cpu_is_ipq807x() || cpu_is_ipq9570() ||
|
||||
+ cpu_is_ipq9574();
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+#endif /* _ARCH_ARM_MACH_MSM_SOCINFO_H_ */
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Emil Renner Berthing <kernel@esmil.dk>
|
||||
|
||||
--- a/drivers/tty/serial/8250/8250_dw.c
|
||||
+++ b/drivers/tty/serial/8250/8250_dw.c
|
||||
@@ -777,6 +777,7 @@ static const struct of_device_id dw8250_
|
||||
@@ -780,6 +780,7 @@ static const struct of_device_id dw8250_
|
||||
{ .compatible = "cavium,octeon-3860-uart", .data = &dw8250_octeon_3860_data },
|
||||
{ .compatible = "marvell,armada-38x-uart", .data = &dw8250_armada_38x_data },
|
||||
{ .compatible = "renesas,rzn1-uart", .data = &dw8250_renesas_rzn1_data },
|
||||
|
@ -30,4 +30,4 @@ $(eval $(call BuildImage))
|
||||
$(eval $(call TestHostCommand,glibc-static, \
|
||||
Please install a static glibc package. (Missing libutil.a, librt.a or libpthread.a), \
|
||||
echo 'int main(int argc, char **argv) { login(0); timer_gettime(0, 0); return 0; }' | \
|
||||
gcc -include utmp.h -x c -o $(TMP_DIR)/a.out - -static -lutil -lrt))
|
||||
gcc -include utmp.h -include time.h -x c -o $(TMP_DIR)/a.out - -static -lutil -lrt))
|
||||
|
11
tools/fakeroot/patches/300-time64-hack.patch
Normal file
11
tools/fakeroot/patches/300-time64-hack.patch
Normal file
@ -0,0 +1,11 @@
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -386,7 +386,7 @@ dnl Digital Unix: stat
|
||||
time64_hack=no
|
||||
AH_TEMPLATE([TIME64_HACK], [time64 shuffle])
|
||||
AC_MSG_CHECKING([if we need to cope with time64])
|
||||
-AC_EGREP_CPP([time64],[
|
||||
+AC_EGREP_CPP([_*[a-z0-9]+_time64[^_]],[
|
||||
#include <bits/wordsize.h>
|
||||
#if __WORDSIZE == 32
|
||||
#define __USE_TIME_BITS64 1
|
@ -11,9 +11,9 @@ PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/firmware-utils.git
|
||||
PKG_SOURCE_DATE:=2024-03-23
|
||||
PKG_SOURCE_VERSION:=6b242991a995c41769977efb010dc9f4e4ec3da2
|
||||
PKG_MIRROR_HASH:=00ff2661fda2eb299ccbfaa07dff8fbcf46b3441a6e9f6f46eaa119e66dbe142
|
||||
PKG_SOURCE_DATE:=2024-06-20
|
||||
PKG_SOURCE_VERSION:=6ac44974185a3e7dc7848e97b964339948e817a7
|
||||
PKG_MIRROR_HASH:=ee5b29f45593750a6806cfa7cad3fd766b321b44107a6b481b890efe82a7dbf5
|
||||
|
||||
include $(INCLUDE_DIR)/host-build.mk
|
||||
include $(INCLUDE_DIR)/cmake.mk
|
||||
|
Loading…
x
Reference in New Issue
Block a user