mirror of
https://github.com/LiBwrt-op/openwrt-6.x.git
synced 2025-12-16 16:57:28 +00:00
Merge remote-tracking branch 'immortalwrt/master' into k6.12-nss
This commit is contained in:
commit
4c8a60530c
@ -332,6 +332,13 @@ define U-Boot/rk3576/Default
|
||||
TPL:=$(RK3576_TPL)
|
||||
endef
|
||||
|
||||
define U-Boot/generic-rk3576
|
||||
$(U-Boot/rk3576/Default)
|
||||
NAME:=Generic RK3576
|
||||
BUILD_DEVICES:= \
|
||||
friendlyarm_nanopi-r76s
|
||||
endef
|
||||
|
||||
define U-Boot/rock-4d-rk3576
|
||||
$(U-Boot/rk3576/Default)
|
||||
NAME:=ROCK 4D
|
||||
@ -474,6 +481,7 @@ UBOOT_TARGETS := \
|
||||
rock-3a-rk3568 \
|
||||
rock-3b-rk3568 \
|
||||
sige3-rk3568 \
|
||||
generic-rk3576 \
|
||||
rock-4d-rk3576 \
|
||||
cyber3588-aib-rk3588 \
|
||||
nanopc-t6-rk3588 \
|
||||
|
||||
@ -9,12 +9,12 @@ include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=strace
|
||||
PKG_VERSION:=6.15
|
||||
PKG_VERSION:=6.17
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=https://strace.io/files/$(PKG_VERSION)
|
||||
PKG_HASH:=8552dfab08abc22a0f2048c98fd9541fd4d71b6882507952780dab7c7c512f51
|
||||
PKG_HASH:=0a7c7bedc7efc076f3242a0310af2ae63c292a36dd4236f079e88a93e98cb9c0
|
||||
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
PKG_LICENSE:=LGPL-2.1-or-later
|
||||
|
||||
@ -58,6 +58,8 @@ case "$DISTRIB_TARGET" in
|
||||
uci_write_config 0 schedutil 1008000 2208000
|
||||
uci_write_config 4 schedutil 1008000 2304000
|
||||
;;
|
||||
"rockchip,rk3582"|\
|
||||
"rockchip,rk3583"|\
|
||||
"rockchip,rk3588"|\
|
||||
"rockchip,rk3588j"|\
|
||||
"rockchip,rk3588s")
|
||||
|
||||
@ -6,9 +6,9 @@ PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/firmware/qca-wireless.git
|
||||
PKG_SOURCE_DATE:=2025-10-14
|
||||
PKG_SOURCE_VERSION:=821d27b582c130ab65b7d20d0dfcbade7cdaf623
|
||||
PKG_MIRROR_HASH:=1e2959037baa5cfb24d931f9ad9b8f9a732d93810fce91a836ca7ed4d46ad7b0
|
||||
PKG_SOURCE_DATE:=2025-10-17
|
||||
PKG_SOURCE_VERSION:=a1529e183333e38bdc95dc8d9317b7af2bec0dcd
|
||||
PKG_MIRROR_HASH:=30ce8f808424602cba556e106cb16080ef29d6d45a9d9018e04664598460eb2f
|
||||
PKG_FLAGS:=nonshared
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
@ -59,6 +59,8 @@ ALLWIFIBOARDS:= \
|
||||
linksys_mx8500 \
|
||||
linksys_spnmx56 \
|
||||
linksys_whw03 \
|
||||
meraki_mr30h \
|
||||
meraki_z3 \
|
||||
netgear_lbr20 \
|
||||
netgear_rax120v2 \
|
||||
netgear_sxk80 \
|
||||
@ -245,6 +247,8 @@ $(eval $(call generate-ipq-wifi-package,linksys_mx5500,Linksys MX5500))
|
||||
$(eval $(call generate-ipq-wifi-package,linksys_mx8500,Linksys MX8500))
|
||||
$(eval $(call generate-ipq-wifi-package,linksys_spnmx56,Linksys SPNMX56))
|
||||
$(eval $(call generate-ipq-wifi-package,linksys_whw03,Linksys WHW03))
|
||||
$(eval $(call generate-ipq-wifi-package,meraki_mr30h,Meraki MR30H))
|
||||
$(eval $(call generate-ipq-wifi-package,meraki_z3,Meraki Z3))
|
||||
$(eval $(call generate-ipq-wifi-package,netgear_lbr20,Netgear LBR20))
|
||||
$(eval $(call generate-ipq-wifi-package,netgear_rax120v2,Netgear RAX120v2))
|
||||
$(eval $(call generate-ipq-wifi-package,netgear_sxk80,Netgear SXK80))
|
||||
|
||||
@ -8,12 +8,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=linux-firmware
|
||||
PKG_VERSION:=20250917
|
||||
PKG_VERSION:=20251011
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_URL:=@KERNEL/linux/kernel/firmware
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_HASH:=120575b756915a11e736f599316a756b6a29a76d6135ad86208868b21c58fb75
|
||||
PKG_HASH:=b6c9a9c112b88417d985b87d6521b677fa2fa0d5d7ee5219c76dc8ca66945ad3
|
||||
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/ifxmips_ptm_adsl.c
|
||||
+++ b/ifxmips_ptm_adsl.c
|
||||
@@ -175,9 +175,11 @@ static INLINE void mailbox_signal(unsign
|
||||
@@ -178,9 +178,11 @@ static INLINE void mailbox_signal(unsign
|
||||
*/
|
||||
static INLINE void proc_file_create(void);
|
||||
static INLINE void proc_file_delete(void);
|
||||
@ -12,7 +12,7 @@
|
||||
#if defined(ENABLE_FW_PROC) && ENABLE_FW_PROC
|
||||
static int proc_read_genconf(char *, char **, off_t, int, int *, void *);
|
||||
#endif
|
||||
@@ -896,6 +898,7 @@ static INLINE void proc_file_delete(void
|
||||
@@ -936,6 +938,7 @@ static INLINE void proc_file_delete(void
|
||||
remove_proc_entry("driver/ifx_ptm", NULL);
|
||||
}
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
static int proc_read_version(char *buf, char **start, off_t offset, int count, int *eof, void *data)
|
||||
{
|
||||
int len = 0;
|
||||
@@ -970,8 +973,9 @@ static int proc_write_wanmib(struct file
|
||||
@@ -1010,8 +1013,9 @@ static int proc_write_wanmib(struct file
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/ifxmips_ptm_adsl.c
|
||||
+++ b/ifxmips_ptm_adsl.c
|
||||
@@ -180,7 +180,7 @@ static int proc_read_version(char *, cha
|
||||
@@ -183,7 +183,7 @@ static int proc_read_version(char *, cha
|
||||
static int proc_read_wanmib(char *, char **, off_t, int, int *, void *);
|
||||
static int proc_write_wanmib(struct file *, const char *, unsigned long, void *);
|
||||
#endif
|
||||
@ -9,7 +9,7 @@
|
||||
static int proc_read_genconf(char *, char **, off_t, int, int *, void *);
|
||||
#endif
|
||||
#if defined(ENABLE_DBG_PROC) && ENABLE_DBG_PROC
|
||||
@@ -191,8 +191,8 @@ static int proc_write_wanmib(struct file
|
||||
@@ -194,8 +194,8 @@ static int proc_write_wanmib(struct file
|
||||
/*
|
||||
* Proc Help Functions
|
||||
*/
|
||||
@ -19,7 +19,7 @@
|
||||
static INLINE int strincmp(const char *, const char *, int);
|
||||
#endif
|
||||
static INLINE int ifx_ptm_version(char *);
|
||||
@@ -1166,8 +1166,6 @@ static int proc_write_dbg(struct file *f
|
||||
@@ -1206,8 +1206,6 @@ static int proc_write_dbg(struct file *f
|
||||
return count;
|
||||
}
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
static INLINE int stricmp(const char *p1, const char *p2)
|
||||
{
|
||||
int c1, c2;
|
||||
@@ -1185,7 +1183,6 @@ static INLINE int stricmp(const char *p1
|
||||
@@ -1225,7 +1223,6 @@ static INLINE int stricmp(const char *p1
|
||||
return *p1 - *p2;
|
||||
}
|
||||
|
||||
|
||||
@ -15,7 +15,7 @@ Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
|
||||
|
||||
--- a/ifxmips_ptm_vdsl.c
|
||||
+++ b/ifxmips_ptm_vdsl.c
|
||||
@@ -61,7 +61,7 @@ static void *g_xdata_addr = NULL;
|
||||
@@ -62,7 +62,7 @@ static void *g_xdata_addr = NULL;
|
||||
|
||||
#define ENABLE_TMP_DBG 0
|
||||
|
||||
|
||||
@ -22,5 +22,5 @@ Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
|
||||
#include <linux/platform_device.h>
|
||||
+#include <linux/mod_devicetable.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of_net.h>
|
||||
|
||||
#include "ifxmips_ptm_vdsl.h"
|
||||
|
||||
@ -47,6 +47,8 @@
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of_net.h>
|
||||
#include <linux/uaccess.h>
|
||||
#include <linux/capability.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
/*
|
||||
@ -472,56 +474,85 @@ static int ptm_ioctl(struct net_device *dev, struct ifreq *ifr, void __user *dat
|
||||
{
|
||||
int ndev;
|
||||
|
||||
if (!capable(CAP_NET_ADMIN))
|
||||
return -EPERM;
|
||||
|
||||
for ( ndev = 0; ndev < ARRAY_SIZE(g_net_dev) && g_net_dev[ndev] != dev; ndev++ );
|
||||
ASSERT(ndev >= 0 && ndev < ARRAY_SIZE(g_net_dev), "ndev = %d (wrong value)", ndev);
|
||||
|
||||
switch ( cmd )
|
||||
{
|
||||
case IFX_PTM_MIB_CW_GET:
|
||||
((PTM_CW_IF_ENTRY_T *)data)->ifRxNoIdleCodewords = WAN_MIB_TABLE[ndev].wrx_nonidle_cw;
|
||||
((PTM_CW_IF_ENTRY_T *)data)->ifRxIdleCodewords = WAN_MIB_TABLE[ndev].wrx_idle_cw;
|
||||
((PTM_CW_IF_ENTRY_T *)data)->ifRxCodingViolation = WAN_MIB_TABLE[ndev].wrx_err_cw;
|
||||
((PTM_CW_IF_ENTRY_T *)data)->ifTxNoIdleCodewords = 0;
|
||||
((PTM_CW_IF_ENTRY_T *)data)->ifTxIdleCodewords = 0;
|
||||
{
|
||||
PTM_CW_IF_ENTRY_T tmp = {0};
|
||||
|
||||
tmp.ifRxNoIdleCodewords = WAN_MIB_TABLE[ndev].wrx_nonidle_cw;
|
||||
tmp.ifRxIdleCodewords = WAN_MIB_TABLE[ndev].wrx_idle_cw;
|
||||
tmp.ifRxCodingViolation = WAN_MIB_TABLE[ndev].wrx_err_cw;
|
||||
tmp.ifTxNoIdleCodewords = 0;
|
||||
tmp.ifTxIdleCodewords = 0;
|
||||
|
||||
if (copy_to_user(data, &tmp, sizeof(tmp)))
|
||||
return -EFAULT;
|
||||
}
|
||||
break;
|
||||
case IFX_PTM_MIB_FRAME_GET:
|
||||
((PTM_FRAME_MIB_T *)data)->RxCorrect = WAN_MIB_TABLE[ndev].wrx_correct_pdu;
|
||||
((PTM_FRAME_MIB_T *)data)->TC_CrcError = WAN_MIB_TABLE[ndev].wrx_tccrc_err_pdu;
|
||||
((PTM_FRAME_MIB_T *)data)->RxDropped = WAN_MIB_TABLE[ndev].wrx_nodesc_drop_pdu + WAN_MIB_TABLE[ndev].wrx_len_violation_drop_pdu;
|
||||
((PTM_FRAME_MIB_T *)data)->TxSend = WAN_MIB_TABLE[ndev].wtx_total_pdu;
|
||||
{
|
||||
PTM_FRAME_MIB_T tmp = {0};
|
||||
|
||||
tmp.RxCorrect = WAN_MIB_TABLE[ndev].wrx_correct_pdu;
|
||||
tmp.TC_CrcError = WAN_MIB_TABLE[ndev].wrx_tccrc_err_pdu;
|
||||
tmp.RxDropped = WAN_MIB_TABLE[ndev].wrx_nodesc_drop_pdu + WAN_MIB_TABLE[ndev].wrx_len_violation_drop_pdu;
|
||||
tmp.TxSend = WAN_MIB_TABLE[ndev].wtx_total_pdu;
|
||||
if (copy_to_user(data, &tmp, sizeof(tmp)))
|
||||
return -EFAULT;
|
||||
}
|
||||
break;
|
||||
case IFX_PTM_CFG_GET:
|
||||
((IFX_PTM_CFG_T *)data)->RxEthCrcPresent = CFG_ETH_EFMTC_CRC->rx_eth_crc_present;
|
||||
((IFX_PTM_CFG_T *)data)->RxEthCrcCheck = CFG_ETH_EFMTC_CRC->rx_eth_crc_check;
|
||||
((IFX_PTM_CFG_T *)data)->RxTcCrcCheck = CFG_ETH_EFMTC_CRC->rx_tc_crc_check;
|
||||
((IFX_PTM_CFG_T *)data)->RxTcCrcLen = CFG_ETH_EFMTC_CRC->rx_tc_crc_len;
|
||||
((IFX_PTM_CFG_T *)data)->TxEthCrcGen = CFG_ETH_EFMTC_CRC->tx_eth_crc_gen;
|
||||
((IFX_PTM_CFG_T *)data)->TxTcCrcGen = CFG_ETH_EFMTC_CRC->tx_tc_crc_gen;
|
||||
((IFX_PTM_CFG_T *)data)->TxTcCrcLen = CFG_ETH_EFMTC_CRC->tx_tc_crc_len;
|
||||
{
|
||||
IFX_PTM_CFG_T tmp = {0};
|
||||
|
||||
tmp.RxEthCrcPresent = CFG_ETH_EFMTC_CRC->rx_eth_crc_present;
|
||||
tmp.RxEthCrcCheck = CFG_ETH_EFMTC_CRC->rx_eth_crc_check;
|
||||
tmp.RxTcCrcCheck = CFG_ETH_EFMTC_CRC->rx_tc_crc_check;
|
||||
tmp.RxTcCrcLen = CFG_ETH_EFMTC_CRC->rx_tc_crc_len;
|
||||
tmp.TxEthCrcGen = CFG_ETH_EFMTC_CRC->tx_eth_crc_gen;
|
||||
tmp.TxTcCrcGen = CFG_ETH_EFMTC_CRC->tx_tc_crc_gen;
|
||||
tmp.TxTcCrcLen = CFG_ETH_EFMTC_CRC->tx_tc_crc_len;
|
||||
if (copy_to_user(data, &tmp, sizeof(tmp)))
|
||||
return -EFAULT;
|
||||
}
|
||||
break;
|
||||
case IFX_PTM_CFG_SET:
|
||||
CFG_ETH_EFMTC_CRC->rx_eth_crc_present = ((IFX_PTM_CFG_T *)data)->RxEthCrcPresent ? 1 : 0;
|
||||
CFG_ETH_EFMTC_CRC->rx_eth_crc_check = ((IFX_PTM_CFG_T *)data)->RxEthCrcCheck ? 1 : 0;
|
||||
if ( ((IFX_PTM_CFG_T *)data)->RxTcCrcCheck && (((IFX_PTM_CFG_T *)data)->RxTcCrcLen == 16 || ((IFX_PTM_CFG_T *)data)->RxTcCrcLen == 32) )
|
||||
{
|
||||
CFG_ETH_EFMTC_CRC->rx_tc_crc_check = 1;
|
||||
CFG_ETH_EFMTC_CRC->rx_tc_crc_len = ((IFX_PTM_CFG_T *)data)->RxTcCrcLen;
|
||||
}
|
||||
else
|
||||
{
|
||||
CFG_ETH_EFMTC_CRC->rx_tc_crc_check = 0;
|
||||
CFG_ETH_EFMTC_CRC->rx_tc_crc_len = 0;
|
||||
}
|
||||
CFG_ETH_EFMTC_CRC->tx_eth_crc_gen = ((IFX_PTM_CFG_T *)data)->TxEthCrcGen ? 1 : 0;
|
||||
if ( ((IFX_PTM_CFG_T *)data)->TxTcCrcGen && (((IFX_PTM_CFG_T *)data)->TxTcCrcLen == 16 || ((IFX_PTM_CFG_T *)data)->TxTcCrcLen == 32) )
|
||||
{
|
||||
CFG_ETH_EFMTC_CRC->tx_tc_crc_gen = 1;
|
||||
CFG_ETH_EFMTC_CRC->tx_tc_crc_len = ((IFX_PTM_CFG_T *)data)->TxTcCrcLen;
|
||||
}
|
||||
else
|
||||
{
|
||||
CFG_ETH_EFMTC_CRC->tx_tc_crc_gen = 0;
|
||||
CFG_ETH_EFMTC_CRC->tx_tc_crc_len = 0;
|
||||
IFX_PTM_CFG_T cfg = {0};
|
||||
|
||||
if (copy_from_user(&cfg, data, sizeof(cfg)))
|
||||
return -EFAULT;
|
||||
|
||||
CFG_ETH_EFMTC_CRC->rx_eth_crc_present = cfg.RxEthCrcPresent ? 1 : 0;
|
||||
CFG_ETH_EFMTC_CRC->rx_eth_crc_check = cfg.RxEthCrcCheck ? 1 : 0;
|
||||
if ( cfg.RxTcCrcCheck && (cfg.RxTcCrcLen == 16 || cfg.RxTcCrcLen == 32) )
|
||||
{
|
||||
CFG_ETH_EFMTC_CRC->rx_tc_crc_check = 1;
|
||||
CFG_ETH_EFMTC_CRC->rx_tc_crc_len = cfg.RxTcCrcLen;
|
||||
}
|
||||
else
|
||||
{
|
||||
CFG_ETH_EFMTC_CRC->rx_tc_crc_check = 0;
|
||||
CFG_ETH_EFMTC_CRC->rx_tc_crc_len = 0;
|
||||
}
|
||||
CFG_ETH_EFMTC_CRC->tx_eth_crc_gen = cfg.TxEthCrcGen ? 1 : 0;
|
||||
if ( cfg.TxTcCrcGen && (cfg.TxTcCrcLen == 16 || cfg.TxTcCrcLen == 32) )
|
||||
{
|
||||
CFG_ETH_EFMTC_CRC->tx_tc_crc_gen = 1;
|
||||
CFG_ETH_EFMTC_CRC->tx_tc_crc_len = cfg.TxTcCrcLen;
|
||||
}
|
||||
else
|
||||
{
|
||||
CFG_ETH_EFMTC_CRC->tx_tc_crc_gen = 0;
|
||||
CFG_ETH_EFMTC_CRC->tx_tc_crc_len = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
||||
@ -390,14 +390,24 @@ static int ptm_ioctl(struct net_device *dev, struct ifreq *ifr, void __user *dat
|
||||
{
|
||||
ASSERT(dev == g_net_dev[0], "incorrect device");
|
||||
|
||||
if (!capable(CAP_NET_ADMIN))
|
||||
return -EPERM;
|
||||
|
||||
switch ( cmd )
|
||||
{
|
||||
case IFX_PTM_MIB_CW_GET:
|
||||
((PTM_CW_IF_ENTRY_T *)data)->ifRxNoIdleCodewords = IFX_REG_R32(DREG_AR_CELL0) + IFX_REG_R32(DREG_AR_CELL1);
|
||||
((PTM_CW_IF_ENTRY_T *)data)->ifRxIdleCodewords = IFX_REG_R32(DREG_AR_IDLE_CNT0) + IFX_REG_R32(DREG_AR_IDLE_CNT1);
|
||||
((PTM_CW_IF_ENTRY_T *)data)->ifRxCodingViolation = IFX_REG_R32(DREG_AR_CVN_CNT0) + IFX_REG_R32(DREG_AR_CVN_CNT1) + IFX_REG_R32(DREG_AR_CVNP_CNT0) + IFX_REG_R32(DREG_AR_CVNP_CNT1);
|
||||
((PTM_CW_IF_ENTRY_T *)data)->ifTxNoIdleCodewords = IFX_REG_R32(DREG_AT_CELL0) + IFX_REG_R32(DREG_AT_CELL1);
|
||||
((PTM_CW_IF_ENTRY_T *)data)->ifTxIdleCodewords = IFX_REG_R32(DREG_AT_IDLE_CNT0) + IFX_REG_R32(DREG_AT_IDLE_CNT1);
|
||||
{
|
||||
PTM_CW_IF_ENTRY_T tmp = {0};
|
||||
|
||||
tmp.ifRxNoIdleCodewords = IFX_REG_R32(DREG_AR_CELL0) + IFX_REG_R32(DREG_AR_CELL1);
|
||||
tmp.ifRxIdleCodewords = IFX_REG_R32(DREG_AR_IDLE_CNT0) + IFX_REG_R32(DREG_AR_IDLE_CNT1);
|
||||
tmp.ifRxCodingViolation = IFX_REG_R32(DREG_AR_CVN_CNT0) + IFX_REG_R32(DREG_AR_CVN_CNT1) + IFX_REG_R32(DREG_AR_CVNP_CNT0) + IFX_REG_R32(DREG_AR_CVNP_CNT1);
|
||||
tmp.ifTxNoIdleCodewords = IFX_REG_R32(DREG_AT_CELL0) + IFX_REG_R32(DREG_AT_CELL1);
|
||||
tmp.ifTxIdleCodewords = IFX_REG_R32(DREG_AT_IDLE_CNT0) + IFX_REG_R32(DREG_AT_IDLE_CNT1);
|
||||
|
||||
if (copy_to_user(data, &tmp, sizeof(tmp)))
|
||||
return -EFAULT;
|
||||
}
|
||||
break;
|
||||
case IFX_PTM_MIB_FRAME_GET:
|
||||
{
|
||||
@ -410,38 +420,50 @@ static int ptm_ioctl(struct net_device *dev, struct ifreq *ifr, void __user *dat
|
||||
for ( i = 0; i < 8; i++ )
|
||||
tmp.TxSend += WAN_TX_MIB_TABLE(i)->wtx_total_pdu;
|
||||
|
||||
*((PTM_FRAME_MIB_T *)data) = tmp;
|
||||
if (copy_to_user(data, &tmp, sizeof(tmp)))
|
||||
return -EFAULT;
|
||||
}
|
||||
break;
|
||||
case IFX_PTM_CFG_GET:
|
||||
// use bear channel 0 preemption gamma interface settings
|
||||
((IFX_PTM_CFG_T *)data)->RxEthCrcPresent = 1;
|
||||
((IFX_PTM_CFG_T *)data)->RxEthCrcCheck = RX_GAMMA_ITF_CFG(0)->rx_eth_fcs_ver_dis == 0 ? 1 : 0;
|
||||
((IFX_PTM_CFG_T *)data)->RxTcCrcCheck = RX_GAMMA_ITF_CFG(0)->rx_tc_crc_ver_dis == 0 ? 1 : 0;;
|
||||
((IFX_PTM_CFG_T *)data)->RxTcCrcLen = RX_GAMMA_ITF_CFG(0)->rx_tc_crc_size == 0 ? 0 : (RX_GAMMA_ITF_CFG(0)->rx_tc_crc_size * 16);
|
||||
((IFX_PTM_CFG_T *)data)->TxEthCrcGen = TX_GAMMA_ITF_CFG(0)->tx_eth_fcs_gen_dis == 0 ? 1 : 0;
|
||||
((IFX_PTM_CFG_T *)data)->TxTcCrcGen = TX_GAMMA_ITF_CFG(0)->tx_tc_crc_size == 0 ? 0 : 1;
|
||||
((IFX_PTM_CFG_T *)data)->TxTcCrcLen = TX_GAMMA_ITF_CFG(0)->tx_tc_crc_size == 0 ? 0 : (TX_GAMMA_ITF_CFG(0)->tx_tc_crc_size * 16);
|
||||
{
|
||||
IFX_PTM_CFG_T tmp = {0};
|
||||
|
||||
// use bear channel 0 preemption gamma interface settings
|
||||
tmp.RxEthCrcPresent = 1;
|
||||
tmp.RxEthCrcCheck = RX_GAMMA_ITF_CFG(0)->rx_eth_fcs_ver_dis == 0 ? 1 : 0;
|
||||
tmp.RxTcCrcCheck = RX_GAMMA_ITF_CFG(0)->rx_tc_crc_ver_dis == 0 ? 1 : 0;
|
||||
tmp.RxTcCrcLen = RX_GAMMA_ITF_CFG(0)->rx_tc_crc_size == 0 ? 0 : (RX_GAMMA_ITF_CFG(0)->rx_tc_crc_size * 16);
|
||||
tmp.TxEthCrcGen = TX_GAMMA_ITF_CFG(0)->tx_eth_fcs_gen_dis == 0 ? 1 : 0;
|
||||
tmp.TxTcCrcGen = TX_GAMMA_ITF_CFG(0)->tx_tc_crc_size == 0 ? 0 : 1;
|
||||
tmp.TxTcCrcLen = TX_GAMMA_ITF_CFG(0)->tx_tc_crc_size == 0 ? 0 : (TX_GAMMA_ITF_CFG(0)->tx_tc_crc_size * 16);
|
||||
|
||||
if (copy_to_user(data, &tmp, sizeof(tmp)))
|
||||
return -EFAULT;
|
||||
}
|
||||
break;
|
||||
case IFX_PTM_CFG_SET:
|
||||
{
|
||||
IFX_PTM_CFG_T cfg;
|
||||
int i;
|
||||
|
||||
if (copy_from_user(&cfg, data, sizeof(cfg)))
|
||||
return -EFAULT;
|
||||
|
||||
for ( i = 0; i < 4; i++ ) {
|
||||
RX_GAMMA_ITF_CFG(i)->rx_eth_fcs_ver_dis = ((IFX_PTM_CFG_T *)data)->RxEthCrcCheck ? 0 : 1;
|
||||
RX_GAMMA_ITF_CFG(i)->rx_eth_fcs_ver_dis = cfg.RxEthCrcCheck ? 0 : 1;
|
||||
|
||||
RX_GAMMA_ITF_CFG(0)->rx_tc_crc_ver_dis = ((IFX_PTM_CFG_T *)data)->RxTcCrcCheck ? 0 : 1;
|
||||
RX_GAMMA_ITF_CFG(0)->rx_tc_crc_ver_dis = cfg.RxTcCrcCheck ? 0 : 1;
|
||||
|
||||
switch ( ((IFX_PTM_CFG_T *)data)->RxTcCrcLen ) {
|
||||
switch ( cfg.RxTcCrcLen ) {
|
||||
case 16: RX_GAMMA_ITF_CFG(0)->rx_tc_crc_size = 1; break;
|
||||
case 32: RX_GAMMA_ITF_CFG(0)->rx_tc_crc_size = 2; break;
|
||||
default: RX_GAMMA_ITF_CFG(0)->rx_tc_crc_size = 0;
|
||||
}
|
||||
|
||||
TX_GAMMA_ITF_CFG(0)->tx_eth_fcs_gen_dis = ((IFX_PTM_CFG_T *)data)->TxEthCrcGen ? 0 : 1;
|
||||
TX_GAMMA_ITF_CFG(0)->tx_eth_fcs_gen_dis = cfg.TxEthCrcGen ? 0 : 1;
|
||||
|
||||
if ( ((IFX_PTM_CFG_T *)data)->TxTcCrcGen ) {
|
||||
switch ( ((IFX_PTM_CFG_T *)data)->TxTcCrcLen ) {
|
||||
if ( cfg.TxTcCrcGen ) {
|
||||
switch ( cfg.TxTcCrcLen ) {
|
||||
case 16: TX_GAMMA_ITF_CFG(0)->tx_tc_crc_size = 1; break;
|
||||
case 32: TX_GAMMA_ITF_CFG(0)->tx_tc_crc_size = 2; break;
|
||||
default: TX_GAMMA_ITF_CFG(0)->tx_tc_crc_size = 0;
|
||||
|
||||
@ -24,22 +24,22 @@ $(eval $(call KernelPackage,leds-gpio))
|
||||
|
||||
LED_TRIGGER_DIR=$(LINUX_DIR)/drivers/leds/trigger
|
||||
|
||||
define KernelPackage/led-group-multi-color
|
||||
define KernelPackage/leds-group-multicolor
|
||||
SUBMENU:=$(LEDS_MENU)
|
||||
TITLE:=LEDs group multi-color support
|
||||
TITLE:=LEDs group multicolor support
|
||||
KCONFIG:=CONFIG_LEDS_GROUP_MULTICOLOR
|
||||
FILES:=$(LINUX_DIR)/drivers/leds/rgb/leds-group-multicolor.ko
|
||||
AUTOLOAD:=$(call AutoProbe,led-group-multi-color)
|
||||
AUTOLOAD:=$(call AutoProbe,leds-group-multicolor)
|
||||
endef
|
||||
|
||||
define KernelPackage/led-group-multi-color/description
|
||||
define KernelPackage/leds-group-multicolor/description
|
||||
This option enables support for monochrome LEDs that are grouped
|
||||
into multicolor LEDs which is useful in the case where LEDs of
|
||||
different colors are physically grouped in a single multi-color LED
|
||||
and driven by a controller that does not have multi-color support.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,led-group-multi-color))
|
||||
$(eval $(call KernelPackage,leds-group-multicolor))
|
||||
|
||||
define KernelPackage/ledtrig-activity
|
||||
SUBMENU:=$(LEDS_MENU)
|
||||
|
||||
@ -525,6 +525,22 @@ endef
|
||||
$(eval $(call KernelPackage,phy-realtek))
|
||||
|
||||
|
||||
define KernelPackage/phy-rtl8261n
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=Realtek RTL8261N NBASE-T PHY driver
|
||||
KCONFIG:=CONFIG_RTL8261N_PHY
|
||||
DEPENDS:=+kmod-libphy
|
||||
FILES:=$(LINUX_DIR)/drivers/net/phy/rtl8261n/rtl8261n.ko
|
||||
AUTOLOAD:=$(call AutoLoad,18,rtl8261n,1)
|
||||
endef
|
||||
|
||||
define KernelPackage/phy-rtl8261n/description
|
||||
Supports the Realtek 8261N NBASE-T PHY.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,phy-rtl8261n))
|
||||
|
||||
|
||||
define KernelPackage/phy-smsc
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=SMSC PHY driver
|
||||
|
||||
@ -3,8 +3,8 @@ PKG_DRIVERS += \
|
||||
rtl8192ce rtl8192se rtl8192de rtl8192cu rtl8192du rtl8723-common rtl8723be \
|
||||
rtl8723bs rtl8821ae rtl8xxxu rtw88 rtw88-pci rtw88-usb rtw88-sdio rtw88-8821c \
|
||||
rtw88-8822b rtw88-8822c rtw88-8723x rtw88-8723d rtw88-8821ce rtw88-8821cu \
|
||||
rtw88-8822be rtw88-8822bu rtw88-8822ce rtw88-8822cu rtw88-8723de rtw88-8723ds \
|
||||
rtw88-88xxa rtw88-8821a rtw88-8812a rtw88-8821au rtw88-8812au \
|
||||
rtw88-8822be rtw88-8822bu rtw88-8822ce rtw88-8822cs rtw88-8822cu rtw88-8723de \
|
||||
rtw88-8723ds rtw88-88xxa rtw88-8821a rtw88-8812a rtw88-8821au rtw88-8812au \
|
||||
rtw88-8814a rtw88-8814ae rtw88-8814au \
|
||||
rtw88-8723du rtw89 rtw89-pci rtw89-8851be rtw89-8852ae rtw89-8852b-common \
|
||||
rtw89-8852be rtw89-8852ce rtw89-8922ae
|
||||
@ -44,6 +44,7 @@ config-$(call config_package,rtw88-8822be) += RTW88_8822BE
|
||||
config-$(call config_package,rtw88-8822bu) += RTW88_8822BU
|
||||
config-$(call config_package,rtw88-8822c) += RTW88_8822C
|
||||
config-$(call config_package,rtw88-8822ce) += RTW88_8822CE
|
||||
config-$(call config_package,rtw88-8822cs) += RTW88_8822CS
|
||||
config-$(call config_package,rtw88-8822cu) += RTW88_8822CU
|
||||
config-$(call config_package,rtw88-8723x) += RTW88_8723X
|
||||
config-$(call config_package,rtw88-8723d) += RTW88_8723D
|
||||
@ -418,6 +419,14 @@ define KernelPackage/rtw88-8822ce
|
||||
AUTOLOAD:=$(call AutoProbe,rtw88_8822ce)
|
||||
endef
|
||||
|
||||
define KernelPackage/rtw88-8822cs
|
||||
$(call KernelPackage/mac80211/Default)
|
||||
TITLE:=Realtek RTL8822CS support
|
||||
DEPENDS+= +kmod-rtw88-sdio +kmod-rtw88-8822c
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtw88/rtw88_8822cs.ko
|
||||
AUTOLOAD:=$(call AutoProbe,rtw88_8822cs)
|
||||
endef
|
||||
|
||||
define KernelPackage/rtw88-8822cu
|
||||
$(call KernelPackage/mac80211/Default)
|
||||
TITLE:=Realtek RTL8822CU support
|
||||
|
||||
@ -8,13 +8,13 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=mbedtls
|
||||
PKG_VERSION:=3.6.4
|
||||
PKG_VERSION:=3.6.5
|
||||
PKG_RELEASE:=1
|
||||
PKG_BUILD_FLAGS:=no-mips16 gc-sections no-lto
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||
PKG_SOURCE_URL=https://github.com/Mbed-TLS/$(PKG_NAME)/releases/download/$(PKG_NAME)-$(PKG_VERSION)
|
||||
PKG_HASH:=ec35b18a6c593cf98c3e30db8b98ff93e8940a8c4e690e66b41dfc011d678110
|
||||
PKG_HASH:=4a11f1777bb95bf4ad96721cac945a26e04bf19f57d905f241fe77ebeddf46d8
|
||||
|
||||
PKG_LICENSE:=GPL-2.0-or-later
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
|
||||
@ -122,6 +122,10 @@ function setup_sta(data, config) {
|
||||
iface.wpa_key_mgmt(config);
|
||||
break;
|
||||
|
||||
case 'wps':
|
||||
config.key_mgmt = 'WPS';
|
||||
break;
|
||||
|
||||
case 'psk':
|
||||
case 'psk2':
|
||||
case 'sae':
|
||||
|
||||
@ -0,0 +1,31 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Sat, 18 Oct 2025 21:55:44 +0200
|
||||
Subject: [PATCH] netlink: increase buffer size
|
||||
|
||||
When lots of events are waiting to be received, the default buffer size
|
||||
is not enough, and hostapd can run into "No buffer space available" on
|
||||
recvmsg. This will cause the netdev state tracking to go out of sync.
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/src/drivers/netlink.c
|
||||
+++ b/src/drivers/netlink.c
|
||||
@@ -92,6 +92,7 @@ struct netlink_data * netlink_init(struc
|
||||
{
|
||||
struct netlink_data *netlink;
|
||||
struct sockaddr_nl local;
|
||||
+ int size = 262144;
|
||||
|
||||
netlink = os_zalloc(sizeof(*netlink));
|
||||
if (netlink == NULL)
|
||||
@@ -105,6 +106,9 @@ struct netlink_data * netlink_init(struc
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+ setsockopt(netlink->sock, SOL_SOCKET, SO_RCVBUF, &size, sizeof(size));
|
||||
+ setsockopt(netlink->sock, SOL_SOCKET, SO_SNDBUF, &size, sizeof(size));
|
||||
+
|
||||
os_memset(&local, 0, sizeof(local));
|
||||
local.nl_family = AF_NETLINK;
|
||||
local.nl_groups = RTMGRP_LINK;
|
||||
@ -8,12 +8,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=lldpd
|
||||
PKG_VERSION:=1.0.19
|
||||
PKG_VERSION:=1.0.20
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://github.com/lldpd/lldpd/releases/download/$(PKG_VERSION)/
|
||||
PKG_HASH:=4de17fe5137b4d44a7bd57f8dfc80cffe2c8bb3691b4ae3012b5a6ea20d79ee0
|
||||
PKG_HASH:=c851ce102444b932b691f0d00142520333030822709fc4566ef20c651ae1714f
|
||||
|
||||
PKG_MAINTAINER:=Stijn Tintel <stijn@linux-ipv6.be>
|
||||
PKG_LICENSE:=ISC
|
||||
|
||||
@ -231,13 +231,15 @@ write_lldpd_conf()
|
||||
local lldp_mgmt_addr_advertisements
|
||||
config_get_bool lldp_mgmt_addr_advertisements 'config' 'lldp_mgmt_addr_advertisements' 1
|
||||
|
||||
# lldpd 1.0.20 configure med fast-start -> configure lldp fast-start (doesn't depend on med, enabled unconditionally)
|
||||
# See: https://github.com/lldpd/lldpd/commit/f2ea6e6a86e7d70104e1428a94ec37a24fe604ef
|
||||
local lldp_fast_start
|
||||
config_get_bool lldp_fast_start 'config' 'lldpmed_fast_start' 0
|
||||
|
||||
local lldp_fast_start_tx_interval
|
||||
config_get lldp_fast_start_tx_interval 'config' 'lldpmed_fast_start_tx_interval' 0
|
||||
|
||||
if [ "$CONFIG_LLDPD_WITH_LLDPMED" = "y" ]; then
|
||||
local lldpmed_fast_start
|
||||
config_get_bool lldpmed_fast_start 'config' 'lldpmed_fast_start' 0
|
||||
|
||||
local lldpmed_fast_start_tx_interval
|
||||
config_get lldpmed_fast_start_tx_interval 'config' 'lldpmed_fast_start_tx_interval' 0
|
||||
|
||||
local lldp_location
|
||||
config_get lldp_location 'config' 'lldp_location'
|
||||
|
||||
@ -283,11 +285,11 @@ write_lldpd_conf()
|
||||
[ -n "$lldp_med_inv_asset_id" ] && echo "configure inventory asset \"$lldp_med_inv_asset_id\"" >> "$LLDPD_CONF"
|
||||
fi
|
||||
|
||||
if [ "$CONFIG_LLDPD_WITH_LLDPMED" = "y" ] && [ "$lldpmed_fast_start" -gt 0 ]; then
|
||||
if [ "$lldpmed_fast_start_tx_interval" -gt 0 ]; then
|
||||
echo "configure med fast-start tx-interval $lldpmed_fast_start_tx_interval" >> "$LLDPD_CONF"
|
||||
if [ "$lldp_fast_start" -gt 0 ]; then
|
||||
if [ "$lldp_fast_start_tx_interval" -gt 0 ]; then
|
||||
echo "configure lldp fast-start tx-interval $lldp_fast_start_tx_interval" >> "$LLDPD_CONF"
|
||||
else
|
||||
echo "configure med fast-start enable" >> "$LLDPD_CONF"
|
||||
echo "configure lldp fast-start enable" >> "$LLDPD_CONF"
|
||||
fi
|
||||
fi
|
||||
if [ "$CONFIG_LLDPD_WITH_LLDPMED" = "y" ]; then
|
||||
@ -493,6 +495,7 @@ reload_service() {
|
||||
$LLDPCLI -u "$LLDPSOCKET" >/dev/null 2>&1 <<-EOF
|
||||
pause
|
||||
unconfigure lldp custom-tlv
|
||||
unconfigure lldp fast-start
|
||||
unconfigure lldp capabilities-advertisements
|
||||
unconfigure lldp management-addresses-advertisements
|
||||
# unconfigures user-configured system capabilities, and instead uses the kernel information:
|
||||
@ -511,12 +514,13 @@ reload_service() {
|
||||
unconfigure inventory model
|
||||
unconfigure inventory asset
|
||||
EOF
|
||||
|
||||
if [ "$CONFIG_LLDPD_WITH_LLDPMED" = "y" ]; then
|
||||
$LLDPCLI -u "$LLDPSOCKET" >/dev/null 2>&1 <<-EOF
|
||||
unconfigure med fast-start
|
||||
# unconfigure med xxxxxxx
|
||||
EOF
|
||||
|
||||
fi
|
||||
|
||||
# Rewrite lldpd.conf
|
||||
# If something changed it should be included by the lldpcli call
|
||||
write_lldpd_conf
|
||||
|
||||
@ -11,9 +11,9 @@ PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/iwinfo.git
|
||||
PKG_SOURCE_DATE:=2025-02-06
|
||||
PKG_SOURCE_VERSION:=9cec6b4dd2df80d4c02bad322a5db14203a92cba
|
||||
PKG_MIRROR_HASH:=cf85caf5f343bf607dd8fbb412e1ea9f1b4474607a6d18f61e333f068124a966
|
||||
PKG_SOURCE_DATE:=2025-10-19
|
||||
PKG_SOURCE_VERSION:=904f114548bac1e21f49f0bf1e16ebd8ac907885
|
||||
PKG_MIRROR_HASH:=6d8e292beb2fffb10028cebb08247090272b1ad6381212b3fdc159cf5a7588f5
|
||||
PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
|
||||
|
||||
@ -5,9 +5,9 @@ PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/ubus.git
|
||||
PKG_SOURCE_DATE:=2025-10-04
|
||||
PKG_SOURCE_VERSION:=ad2768bbc166b4dcb32665d7b3434d54150b2abc
|
||||
PKG_MIRROR_HASH:=10e901abdb622c095d0f3199775b2a0e61ff588a3dda31a3a606e2e5ebd82cde
|
||||
PKG_SOURCE_DATE:=2025-10-17
|
||||
PKG_SOURCE_VERSION:=60e04048a0e2f3e33651c19e62861b41be4c290f
|
||||
PKG_MIRROR_HASH:=2db028305ae58afe184bb01e51d3635898d84ffcd04308a73ce143c05fc7b2db
|
||||
PKG_ABI_VERSION:=$(call abi_version_str,$(PKG_SOURCE_DATE))
|
||||
CMAKE_INSTALL:=1
|
||||
|
||||
|
||||
@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/lib/fs.c
|
||||
+++ b/lib/fs.c
|
||||
@@ -674,6 +674,112 @@ uc_fs_read(uc_vm_t *vm, size_t nargs)
|
||||
@@ -674,6 +674,116 @@ uc_fs_read(uc_vm_t *vm, size_t nargs)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -65,6 +65,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
+ FILE **fp = uc_fn_this("fs.file");
|
||||
+ char *buf = NULL;
|
||||
+ ssize_t n_read;
|
||||
+ uc_value_t *rv;
|
||||
+ size_t limit = 4096;
|
||||
+ int fd;
|
||||
+
|
||||
@ -113,7 +114,10 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
+ err_return(errno);
|
||||
+ }
|
||||
+
|
||||
+ uc_value_t *rv = ucv_string_new_length(buf, (size_t)n_read);
|
||||
+ if (!n_read)
|
||||
+ return NULL;
|
||||
+
|
||||
+ rv = ucv_string_new_length(buf, (size_t)n_read);
|
||||
+ free(buf);
|
||||
+
|
||||
+ return rv;
|
||||
@ -123,7 +127,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
* Writes a chunk of data to the file handle.
|
||||
*
|
||||
* In case the given data is not a string, it is converted to a string before
|
||||
@@ -2910,6 +3016,7 @@ static const uc_function_list_t proc_fns
|
||||
@@ -2910,6 +3020,7 @@ static const uc_function_list_t proc_fns
|
||||
|
||||
static const uc_function_list_t file_fns[] = {
|
||||
{ "read", uc_fs_read },
|
||||
|
||||
@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/lib/fs.c
|
||||
+++ b/lib/fs.c
|
||||
@@ -2632,6 +2632,86 @@ uc_fs_mkstemp(uc_vm_t *vm, size_t nargs)
|
||||
@@ -2636,6 +2636,86 @@ uc_fs_mkstemp(uc_vm_t *vm, size_t nargs)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -97,7 +97,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
* Checks the accessibility of a file or directory.
|
||||
*
|
||||
* The optional modes argument specifies the access modes which should be
|
||||
@@ -3065,6 +3145,7 @@ static const uc_function_list_t global_f
|
||||
@@ -3069,6 +3149,7 @@ static const uc_function_list_t global_f
|
||||
{ "basename", uc_fs_basename },
|
||||
{ "lsdir", uc_fs_lsdir },
|
||||
{ "mkstemp", uc_fs_mkstemp },
|
||||
|
||||
@ -12,6 +12,7 @@ define Device/nec-netbsd-aterm
|
||||
KERNEL := kernel-bin | append-dtb | lzma | loader-kernel | uImage none
|
||||
KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma | loader-kernel | uImage none
|
||||
ARTIFACTS := uboot.bin
|
||||
ifeq ($(IB),)
|
||||
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
|
||||
COMPILE := loader-$(1).bin
|
||||
COMPILE/loader-$(1).bin := loader-okli-compile
|
||||
@ -19,6 +20,7 @@ ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
|
||||
ARTIFACT/initramfs-factory.bin := append-image-stage initramfs-kernel.bin | \
|
||||
pad-to 4 skip=16 | \
|
||||
nec-usbaterm-fw -f 0x0003 -d $$(KDIR)/loader-$(1).bin -d $$$$@ | check-size
|
||||
endif
|
||||
endif
|
||||
UBOOT_PATH := $$(STAGING_DIR_IMAGE)/$$(SOC)_nec_aterm-u-boot.bin
|
||||
ARTIFACT/uboot.bin := append-uboot | check-size 128k
|
||||
|
||||
@ -1357,11 +1357,13 @@ define Device/elecom_wrc-1750ghbk2-i
|
||||
DEVICE_VENDOR := ELECOM
|
||||
DEVICE_MODEL := WRC-1750GHBK2-I/C
|
||||
IMAGE_SIZE := 15808k
|
||||
ifeq ($(IB),)
|
||||
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
|
||||
ARTIFACTS := initramfs-factory.bin
|
||||
ARTIFACT/initramfs-factory.bin := append-image initramfs-kernel.bin | \
|
||||
pad-to 2 | edimax-header -b -s CSYS -m RN68 -f 0x70000 -S 0x01100000 | \
|
||||
elecom-product-header WRC-1750GHBK2 | check-size
|
||||
endif
|
||||
endif
|
||||
DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca988x-ct
|
||||
endef
|
||||
@ -1372,12 +1374,14 @@ define Device/elecom_wrc-300ghbk2-i
|
||||
DEVICE_VENDOR := ELECOM
|
||||
DEVICE_MODEL := WRC-300GHBK2-I
|
||||
IMAGE_SIZE := 7616k
|
||||
ifeq ($(IB),)
|
||||
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
|
||||
ARTIFACTS := initramfs-factory.bin
|
||||
ARTIFACT/initramfs-factory.bin := append-image initramfs-kernel.bin | \
|
||||
pad-to 2 | edimax-header -b -s CSYS -m RN51 -f 0x70000 -S 0x01100000 | \
|
||||
elecom-product-header WRC-300GHBK2-I | check-size
|
||||
endif
|
||||
endif
|
||||
endef
|
||||
TARGET_DEVICES += elecom_wrc-300ghbk2-i
|
||||
|
||||
|
||||
@ -23,7 +23,7 @@ it on BCM4708 family.
|
||||
static void xhci_plat_quirks(struct device *dev, struct xhci_hcd *xhci)
|
||||
{
|
||||
struct xhci_plat_priv *priv = xhci_to_priv(xhci);
|
||||
+ struct platform_device*pdev = to_platform_device(dev);
|
||||
+ struct platform_device *pdev = to_platform_device(dev);
|
||||
+ struct device_node *node = pdev->dev.of_node;
|
||||
|
||||
xhci->quirks |= priv->quirks;
|
||||
@ -73,7 +73,7 @@ it on BCM4708 family.
|
||||
+ }
|
||||
+
|
||||
+ /* Free virt device */
|
||||
+ xhci_disable_and_free_slot(xhci, slot_id);
|
||||
+ xhci_free_virt_device(xhci, xhci->devs[slot_id], slot_id);
|
||||
+
|
||||
+ /* We're done if controller is already running */
|
||||
+ if (readl(&xhci->op_regs->command) & CMD_RUN)
|
||||
|
||||
@ -0,0 +1,119 @@
|
||||
From d8b6dc9256762293048bf122fc11c4e612d0ef5d Mon Sep 17 00:00:00 2001
|
||||
From: Namjae Jeon <linkinjeon@kernel.org>
|
||||
Date: Wed, 1 Oct 2025 09:25:35 +0900
|
||||
Subject: ksmbd: add max ip connections parameter
|
||||
|
||||
This parameter set the maximum number of connections per ip address.
|
||||
The default is 8.
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Fixes: c0d41112f1a5 ("ksmbd: extend the connection limiting mechanism to support IPv6")
|
||||
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
|
||||
Signed-off-by: Steve French <stfrench@microsoft.com>
|
||||
---
|
||||
fs/smb/server/ksmbd_netlink.h | 5 +++--
|
||||
fs/smb/server/server.h | 1 +
|
||||
fs/smb/server/transport_ipc.c | 3 +++
|
||||
fs/smb/server/transport_tcp.c | 27 ++++++++++++++++-----------
|
||||
4 files changed, 23 insertions(+), 13 deletions(-)
|
||||
|
||||
(limited to 'fs/smb')
|
||||
|
||||
--- a/fs/smb/server/ksmbd_netlink.h
|
||||
+++ b/fs/smb/server/ksmbd_netlink.h
|
||||
@@ -112,10 +112,11 @@ struct ksmbd_startup_request {
|
||||
__u32 smbd_max_io_size; /* smbd read write size */
|
||||
__u32 max_connections; /* Number of maximum simultaneous connections */
|
||||
__s8 bind_interfaces_only;
|
||||
- __s8 reserved[503]; /* Reserved room */
|
||||
+ __u32 max_ip_connections; /* Number of maximum connection per ip address */
|
||||
+ __s8 reserved[499]; /* Reserved room */
|
||||
__u32 ifc_list_sz; /* interfaces list size */
|
||||
__s8 ____payload[];
|
||||
-};
|
||||
+} __packed;
|
||||
|
||||
#define KSMBD_STARTUP_CONFIG_INTERFACES(s) ((s)->____payload)
|
||||
|
||||
--- a/fs/smb/server/server.h
|
||||
+++ b/fs/smb/server/server.h
|
||||
@@ -43,6 +43,7 @@ struct ksmbd_server_config {
|
||||
unsigned int auth_mechs;
|
||||
unsigned int max_connections;
|
||||
unsigned int max_inflight_req;
|
||||
+ unsigned int max_ip_connections;
|
||||
|
||||
char *conf[SERVER_CONF_WORK_GROUP + 1];
|
||||
struct task_struct *dh_task;
|
||||
--- a/fs/smb/server/transport_ipc.c
|
||||
+++ b/fs/smb/server/transport_ipc.c
|
||||
@@ -335,6 +335,9 @@ static int ipc_server_config_on_startup(
|
||||
if (req->max_connections)
|
||||
server_conf.max_connections = req->max_connections;
|
||||
|
||||
+ if (req->max_ip_connections)
|
||||
+ server_conf.max_ip_connections = req->max_ip_connections;
|
||||
+
|
||||
ret = ksmbd_set_netbios_name(req->netbios_name);
|
||||
ret |= ksmbd_set_server_string(req->server_string);
|
||||
ret |= ksmbd_set_work_group(req->work_group);
|
||||
--- a/fs/smb/server/transport_tcp.c
|
||||
+++ b/fs/smb/server/transport_tcp.c
|
||||
@@ -240,6 +240,7 @@ static int ksmbd_kthread_fn(void *p)
|
||||
struct interface *iface = (struct interface *)p;
|
||||
struct ksmbd_conn *conn;
|
||||
int ret;
|
||||
+ unsigned int max_ip_conns;
|
||||
|
||||
while (!kthread_should_stop()) {
|
||||
mutex_lock(&iface->sock_release_lock);
|
||||
@@ -257,34 +258,38 @@ static int ksmbd_kthread_fn(void *p)
|
||||
continue;
|
||||
}
|
||||
|
||||
+ if (!server_conf.max_ip_connections)
|
||||
+ goto skip_max_ip_conns_limit;
|
||||
+
|
||||
/*
|
||||
* Limits repeated connections from clients with the same IP.
|
||||
*/
|
||||
+ max_ip_conns = 0;
|
||||
down_read(&conn_list_lock);
|
||||
- list_for_each_entry(conn, &conn_list, conns_list)
|
||||
+ list_for_each_entry(conn, &conn_list, conns_list) {
|
||||
#if IS_ENABLED(CONFIG_IPV6)
|
||||
if (client_sk->sk->sk_family == AF_INET6) {
|
||||
if (memcmp(&client_sk->sk->sk_v6_daddr,
|
||||
- &conn->inet6_addr, 16) == 0) {
|
||||
- ret = -EAGAIN;
|
||||
- break;
|
||||
- }
|
||||
+ &conn->inet6_addr, 16) == 0)
|
||||
+ max_ip_conns++;
|
||||
} else if (inet_sk(client_sk->sk)->inet_daddr ==
|
||||
- conn->inet_addr) {
|
||||
- ret = -EAGAIN;
|
||||
- break;
|
||||
- }
|
||||
+ conn->inet_addr)
|
||||
+ max_ip_conns++;
|
||||
#else
|
||||
if (inet_sk(client_sk->sk)->inet_daddr ==
|
||||
- conn->inet_addr) {
|
||||
+ conn->inet_addr)
|
||||
+ max_ip_conns++;
|
||||
+#endif
|
||||
+ if (server_conf.max_ip_connections <= max_ip_conns) {
|
||||
ret = -EAGAIN;
|
||||
break;
|
||||
}
|
||||
-#endif
|
||||
+ }
|
||||
up_read(&conn_list_lock);
|
||||
if (ret == -EAGAIN)
|
||||
continue;
|
||||
|
||||
+skip_max_ip_conns_limit:
|
||||
if (server_conf.max_connections &&
|
||||
atomic_inc_return(&active_num_conn) >= server_conf.max_connections) {
|
||||
pr_info_ratelimited("Limit the maximum number of connections(%u)\n",
|
||||
@ -0,0 +1,35 @@
|
||||
From 0fc403192dcc8def1f6284959141608ac4c86699 Mon Sep 17 00:00:00 2001
|
||||
From: Namjae Jeon <linkinjeon@kernel.org>
|
||||
Date: Fri, 10 Jan 2025 13:37:05 +0900
|
||||
Subject: ksmbd: browse interfaces list on FSCTL_QUERY_INTERFACE_INFO IOCTL
|
||||
|
||||
[ Upstream commit b2d99376c5d61eb60ffdb6c503e4b6c8f9712ddd ]
|
||||
|
||||
ksmbd.mount will give each interfaces list and bind_interfaces_only flags
|
||||
to ksmbd server. Previously, the interfaces list was sent only
|
||||
when bind_interfaces_only was enabled.
|
||||
ksmbd server browse only interfaces list given from ksmbd.conf on
|
||||
FSCTL_QUERY_INTERFACE_INFO IOCTL.
|
||||
|
||||
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
|
||||
Signed-off-by: Steve French <stfrench@microsoft.com>
|
||||
Stable-dep-of: 21a4e47578d4 ("ksmbd: fix use-after-free in __smb2_lease_break_noti()")
|
||||
Signed-off-by: Sasha Levin <sashal@kernel.org>
|
||||
---
|
||||
fs/smb/server/ksmbd_netlink.h | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
(limited to 'fs/smb/server/ksmbd_netlink.h')
|
||||
|
||||
--- a/fs/smb/server/ksmbd_netlink.h
|
||||
+++ b/fs/smb/server/ksmbd_netlink.h
|
||||
@@ -108,7 +108,8 @@ struct ksmbd_startup_request {
|
||||
__u32 smb2_max_credits; /* MAX credits */
|
||||
__u32 smbd_max_io_size; /* smbd read write size */
|
||||
__u32 max_connections; /* Number of maximum simultaneous connections */
|
||||
- __u32 reserved[126]; /* Reserved room */
|
||||
+ __s8 bind_interfaces_only;
|
||||
+ __s8 reserved[503]; /* Reserved room */
|
||||
__u32 ifc_list_sz; /* interfaces list size */
|
||||
__s8 ____payload[];
|
||||
};
|
||||
@ -0,0 +1,119 @@
|
||||
From d8b6dc9256762293048bf122fc11c4e612d0ef5d Mon Sep 17 00:00:00 2001
|
||||
From: Namjae Jeon <linkinjeon@kernel.org>
|
||||
Date: Wed, 1 Oct 2025 09:25:35 +0900
|
||||
Subject: ksmbd: add max ip connections parameter
|
||||
|
||||
This parameter set the maximum number of connections per ip address.
|
||||
The default is 8.
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Fixes: c0d41112f1a5 ("ksmbd: extend the connection limiting mechanism to support IPv6")
|
||||
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
|
||||
Signed-off-by: Steve French <stfrench@microsoft.com>
|
||||
---
|
||||
fs/smb/server/ksmbd_netlink.h | 5 +++--
|
||||
fs/smb/server/server.h | 1 +
|
||||
fs/smb/server/transport_ipc.c | 3 +++
|
||||
fs/smb/server/transport_tcp.c | 27 ++++++++++++++++-----------
|
||||
4 files changed, 23 insertions(+), 13 deletions(-)
|
||||
|
||||
(limited to 'fs/smb')
|
||||
|
||||
--- a/fs/smb/server/ksmbd_netlink.h
|
||||
+++ b/fs/smb/server/ksmbd_netlink.h
|
||||
@@ -109,10 +109,11 @@ struct ksmbd_startup_request {
|
||||
__u32 smbd_max_io_size; /* smbd read write size */
|
||||
__u32 max_connections; /* Number of maximum simultaneous connections */
|
||||
__s8 bind_interfaces_only;
|
||||
- __s8 reserved[503]; /* Reserved room */
|
||||
+ __u32 max_ip_connections; /* Number of maximum connection per ip address */
|
||||
+ __s8 reserved[499]; /* Reserved room */
|
||||
__u32 ifc_list_sz; /* interfaces list size */
|
||||
__s8 ____payload[];
|
||||
-};
|
||||
+} __packed;
|
||||
|
||||
#define KSMBD_STARTUP_CONFIG_INTERFACES(s) ((s)->____payload)
|
||||
|
||||
--- a/fs/smb/server/server.h
|
||||
+++ b/fs/smb/server/server.h
|
||||
@@ -43,6 +43,7 @@ struct ksmbd_server_config {
|
||||
unsigned int auth_mechs;
|
||||
unsigned int max_connections;
|
||||
unsigned int max_inflight_req;
|
||||
+ unsigned int max_ip_connections;
|
||||
|
||||
char *conf[SERVER_CONF_WORK_GROUP + 1];
|
||||
};
|
||||
--- a/fs/smb/server/transport_ipc.c
|
||||
+++ b/fs/smb/server/transport_ipc.c
|
||||
@@ -321,6 +321,9 @@ static int ipc_server_config_on_startup(
|
||||
if (req->max_connections)
|
||||
server_conf.max_connections = req->max_connections;
|
||||
|
||||
+ if (req->max_ip_connections)
|
||||
+ server_conf.max_ip_connections = req->max_ip_connections;
|
||||
+
|
||||
ret = ksmbd_set_netbios_name(req->netbios_name);
|
||||
ret |= ksmbd_set_server_string(req->server_string);
|
||||
ret |= ksmbd_set_work_group(req->work_group);
|
||||
--- a/fs/smb/server/transport_tcp.c
|
||||
+++ b/fs/smb/server/transport_tcp.c
|
||||
@@ -240,6 +240,7 @@ static int ksmbd_kthread_fn(void *p)
|
||||
struct interface *iface = (struct interface *)p;
|
||||
struct ksmbd_conn *conn;
|
||||
int ret;
|
||||
+ unsigned int max_ip_conns;
|
||||
|
||||
while (!kthread_should_stop()) {
|
||||
mutex_lock(&iface->sock_release_lock);
|
||||
@@ -257,34 +258,38 @@ static int ksmbd_kthread_fn(void *p)
|
||||
continue;
|
||||
}
|
||||
|
||||
+ if (!server_conf.max_ip_connections)
|
||||
+ goto skip_max_ip_conns_limit;
|
||||
+
|
||||
/*
|
||||
* Limits repeated connections from clients with the same IP.
|
||||
*/
|
||||
+ max_ip_conns = 0;
|
||||
down_read(&conn_list_lock);
|
||||
- list_for_each_entry(conn, &conn_list, conns_list)
|
||||
+ list_for_each_entry(conn, &conn_list, conns_list) {
|
||||
#if IS_ENABLED(CONFIG_IPV6)
|
||||
if (client_sk->sk->sk_family == AF_INET6) {
|
||||
if (memcmp(&client_sk->sk->sk_v6_daddr,
|
||||
- &conn->inet6_addr, 16) == 0) {
|
||||
- ret = -EAGAIN;
|
||||
- break;
|
||||
- }
|
||||
+ &conn->inet6_addr, 16) == 0)
|
||||
+ max_ip_conns++;
|
||||
} else if (inet_sk(client_sk->sk)->inet_daddr ==
|
||||
- conn->inet_addr) {
|
||||
- ret = -EAGAIN;
|
||||
- break;
|
||||
- }
|
||||
+ conn->inet_addr)
|
||||
+ max_ip_conns++;
|
||||
#else
|
||||
if (inet_sk(client_sk->sk)->inet_daddr ==
|
||||
- conn->inet_addr) {
|
||||
+ conn->inet_addr)
|
||||
+ max_ip_conns++;
|
||||
+#endif
|
||||
+ if (server_conf.max_ip_connections <= max_ip_conns) {
|
||||
ret = -EAGAIN;
|
||||
break;
|
||||
}
|
||||
-#endif
|
||||
+ }
|
||||
up_read(&conn_list_lock);
|
||||
if (ret == -EAGAIN)
|
||||
continue;
|
||||
|
||||
+skip_max_ip_conns_limit:
|
||||
if (server_conf.max_connections &&
|
||||
atomic_inc_return(&active_num_conn) >= server_conf.max_connections) {
|
||||
pr_info_ratelimited("Limit the maximum number of connections(%u)\n",
|
||||
@ -1,11 +1,11 @@
|
||||
|
||||
obj-$(CONFIG_RTL8261N_PHY) += rtl8621n.o
|
||||
obj-$(CONFIG_RTL8261N_PHY) += rtl8261n.o
|
||||
|
||||
rtl8621n-objs += phy_patch.o
|
||||
rtl8621n-objs += phy_rtl826xb_patch.o
|
||||
rtl8621n-objs += rtk_osal.o
|
||||
rtl8621n-objs += rtk_phy.o
|
||||
rtl8621n-objs += rtk_phylib.o
|
||||
rtl8621n-objs += rtk_phylib_rtl826xb.o
|
||||
rtl8261n-objs += phy_patch.o
|
||||
rtl8261n-objs += phy_rtl826xb_patch.o
|
||||
rtl8261n-objs += rtk_osal.o
|
||||
rtl8261n-objs += rtk_phy.o
|
||||
rtl8261n-objs += rtk_phylib.o
|
||||
rtl8261n-objs += rtk_phylib_rtl826xb.o
|
||||
|
||||
ccflags-y += -Werror -DRTK_PHYDRV_IN_LINUX
|
||||
|
||||
@ -1,83 +0,0 @@
|
||||
From 7220ecc26a9a8e6766eb9ec7cd90fbba048ce7b3 Mon Sep 17 00:00:00 2001
|
||||
From: Andrea Pesaresi <andreapesaresi82@gmail.com>
|
||||
Date: Tue, 30 Sep 2025 19:35:36 +0200
|
||||
Subject: Revert "ksmbd: extend the connection limiting mechanism to support
|
||||
IPv6"
|
||||
|
||||
This reverts commit d9e157fcfebc126cd19b2333a6417a840c24e529.
|
||||
---
|
||||
fs/smb/server/connection.h | 7 +------
|
||||
fs/smb/server/transport_tcp.c | 26 +++-----------------------
|
||||
2 files changed, 4 insertions(+), 29 deletions(-)
|
||||
|
||||
--- a/fs/smb/server/connection.h
|
||||
+++ b/fs/smb/server/connection.h
|
||||
@@ -46,12 +46,7 @@ struct ksmbd_conn {
|
||||
struct mutex srv_mutex;
|
||||
int status;
|
||||
unsigned int cli_cap;
|
||||
- union {
|
||||
- __be32 inet_addr;
|
||||
-#if IS_ENABLED(CONFIG_IPV6)
|
||||
- u8 inet6_addr[16];
|
||||
-#endif
|
||||
- };
|
||||
+ __be32 inet_addr;
|
||||
char *request_buf;
|
||||
struct ksmbd_transport *transport;
|
||||
struct nls_table *local_nls;
|
||||
--- a/fs/smb/server/transport_tcp.c
|
||||
+++ b/fs/smb/server/transport_tcp.c
|
||||
@@ -87,14 +87,7 @@ static struct tcp_transport *alloc_trans
|
||||
return NULL;
|
||||
}
|
||||
|
||||
-#if IS_ENABLED(CONFIG_IPV6)
|
||||
- if (client_sk->sk->sk_family == AF_INET6)
|
||||
- memcpy(&conn->inet6_addr, &client_sk->sk->sk_v6_daddr, 16);
|
||||
- else
|
||||
- conn->inet_addr = inet_sk(client_sk->sk)->inet_daddr;
|
||||
-#else
|
||||
conn->inet_addr = inet_sk(client_sk->sk)->inet_daddr;
|
||||
-#endif
|
||||
conn->transport = KSMBD_TRANS(t);
|
||||
KSMBD_TRANS(t)->conn = conn;
|
||||
KSMBD_TRANS(t)->ops = &ksmbd_tcp_transport_ops;
|
||||
@@ -238,6 +231,7 @@ static int ksmbd_kthread_fn(void *p)
|
||||
{
|
||||
struct socket *client_sk = NULL;
|
||||
struct interface *iface = (struct interface *)p;
|
||||
+ struct inet_sock *csk_inet;
|
||||
struct ksmbd_conn *conn;
|
||||
int ret;
|
||||
|
||||
@@ -260,27 +254,13 @@ static int ksmbd_kthread_fn(void *p)
|
||||
/*
|
||||
* Limits repeated connections from clients with the same IP.
|
||||
*/
|
||||
+ csk_inet = inet_sk(client_sk->sk);
|
||||
down_read(&conn_list_lock);
|
||||
list_for_each_entry(conn, &conn_list, conns_list)
|
||||
-#if IS_ENABLED(CONFIG_IPV6)
|
||||
- if (client_sk->sk->sk_family == AF_INET6) {
|
||||
- if (memcmp(&client_sk->sk->sk_v6_daddr,
|
||||
- &conn->inet6_addr, 16) == 0) {
|
||||
- ret = -EAGAIN;
|
||||
- break;
|
||||
- }
|
||||
- } else if (inet_sk(client_sk->sk)->inet_daddr ==
|
||||
- conn->inet_addr) {
|
||||
+ if (csk_inet->inet_daddr == conn->inet_addr) {
|
||||
ret = -EAGAIN;
|
||||
break;
|
||||
}
|
||||
-#else
|
||||
- if (inet_sk(client_sk->sk)->inet_daddr ==
|
||||
- conn->inet_addr) {
|
||||
- ret = -EAGAIN;
|
||||
- break;
|
||||
- }
|
||||
-#endif
|
||||
up_read(&conn_list_lock);
|
||||
if (ret == -EAGAIN)
|
||||
continue;
|
||||
@ -1,62 +0,0 @@
|
||||
From 575b789e36cf4bfa85ba5b649673ede9b4c7b5d0 Mon Sep 17 00:00:00 2001
|
||||
From: Andrea Pesaresi <andreapesaresi82@gmail.com>
|
||||
Date: Tue, 30 Sep 2025 22:36:12 +0200
|
||||
Subject: Revert "ksmbd: limit repeated connections from clients with the same
|
||||
IP"
|
||||
|
||||
This reverts commit fa1c47af4ff641cf9197ecdb1f8240cbb30389c1.
|
||||
---
|
||||
fs/smb/server/connection.h | 1 -
|
||||
fs/smb/server/transport_tcp.c | 17 -----------------
|
||||
2 files changed, 18 deletions(-)
|
||||
|
||||
--- a/fs/smb/server/connection.h
|
||||
+++ b/fs/smb/server/connection.h
|
||||
@@ -46,7 +46,6 @@ struct ksmbd_conn {
|
||||
struct mutex srv_mutex;
|
||||
int status;
|
||||
unsigned int cli_cap;
|
||||
- __be32 inet_addr;
|
||||
char *request_buf;
|
||||
struct ksmbd_transport *transport;
|
||||
struct nls_table *local_nls;
|
||||
--- a/fs/smb/server/transport_tcp.c
|
||||
+++ b/fs/smb/server/transport_tcp.c
|
||||
@@ -87,7 +87,6 @@ static struct tcp_transport *alloc_trans
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- conn->inet_addr = inet_sk(client_sk->sk)->inet_daddr;
|
||||
conn->transport = KSMBD_TRANS(t);
|
||||
KSMBD_TRANS(t)->conn = conn;
|
||||
KSMBD_TRANS(t)->ops = &ksmbd_tcp_transport_ops;
|
||||
@@ -231,8 +230,6 @@ static int ksmbd_kthread_fn(void *p)
|
||||
{
|
||||
struct socket *client_sk = NULL;
|
||||
struct interface *iface = (struct interface *)p;
|
||||
- struct inet_sock *csk_inet;
|
||||
- struct ksmbd_conn *conn;
|
||||
int ret;
|
||||
|
||||
while (!kthread_should_stop()) {
|
||||
@@ -251,20 +248,6 @@ static int ksmbd_kthread_fn(void *p)
|
||||
continue;
|
||||
}
|
||||
|
||||
- /*
|
||||
- * Limits repeated connections from clients with the same IP.
|
||||
- */
|
||||
- csk_inet = inet_sk(client_sk->sk);
|
||||
- down_read(&conn_list_lock);
|
||||
- list_for_each_entry(conn, &conn_list, conns_list)
|
||||
- if (csk_inet->inet_daddr == conn->inet_addr) {
|
||||
- ret = -EAGAIN;
|
||||
- break;
|
||||
- }
|
||||
- up_read(&conn_list_lock);
|
||||
- if (ret == -EAGAIN)
|
||||
- continue;
|
||||
-
|
||||
if (server_conf.max_connections &&
|
||||
atomic_inc_return(&active_num_conn) >= server_conf.max_connections) {
|
||||
pr_info_ratelimited("Limit the maximum number of connections(%u)\n",
|
||||
@ -1,83 +0,0 @@
|
||||
From a2002bb6f1b1dee2b1f3b1839f2d677c9a05fabc Mon Sep 17 00:00:00 2001
|
||||
From: Andrea Pesaresi <andreapesaresi82@gmail.com>
|
||||
Date: Tue, 30 Sep 2025 22:43:30 +0200
|
||||
Subject: Revert "ksmbd: extend the connection limiting mechanism to support
|
||||
IPv6"
|
||||
|
||||
This reverts commit d9e157fcfebc126cd19b2333a6417a840c24e529.
|
||||
---
|
||||
fs/smb/server/connection.h | 7 +------
|
||||
fs/smb/server/transport_tcp.c | 26 +++-----------------------
|
||||
2 files changed, 4 insertions(+), 29 deletions(-)
|
||||
|
||||
--- a/fs/smb/server/connection.h
|
||||
+++ b/fs/smb/server/connection.h
|
||||
@@ -46,12 +46,7 @@ struct ksmbd_conn {
|
||||
struct mutex srv_mutex;
|
||||
int status;
|
||||
unsigned int cli_cap;
|
||||
- union {
|
||||
- __be32 inet_addr;
|
||||
-#if IS_ENABLED(CONFIG_IPV6)
|
||||
- u8 inet6_addr[16];
|
||||
-#endif
|
||||
- };
|
||||
+ __be32 inet_addr;
|
||||
char *request_buf;
|
||||
struct ksmbd_transport *transport;
|
||||
struct nls_table *local_nls;
|
||||
--- a/fs/smb/server/transport_tcp.c
|
||||
+++ b/fs/smb/server/transport_tcp.c
|
||||
@@ -87,14 +87,7 @@ static struct tcp_transport *alloc_trans
|
||||
return NULL;
|
||||
}
|
||||
|
||||
-#if IS_ENABLED(CONFIG_IPV6)
|
||||
- if (client_sk->sk->sk_family == AF_INET6)
|
||||
- memcpy(&conn->inet6_addr, &client_sk->sk->sk_v6_daddr, 16);
|
||||
- else
|
||||
- conn->inet_addr = inet_sk(client_sk->sk)->inet_daddr;
|
||||
-#else
|
||||
conn->inet_addr = inet_sk(client_sk->sk)->inet_daddr;
|
||||
-#endif
|
||||
conn->transport = KSMBD_TRANS(t);
|
||||
KSMBD_TRANS(t)->conn = conn;
|
||||
KSMBD_TRANS(t)->ops = &ksmbd_tcp_transport_ops;
|
||||
@@ -238,6 +231,7 @@ static int ksmbd_kthread_fn(void *p)
|
||||
{
|
||||
struct socket *client_sk = NULL;
|
||||
struct interface *iface = (struct interface *)p;
|
||||
+ struct inet_sock *csk_inet;
|
||||
struct ksmbd_conn *conn;
|
||||
int ret;
|
||||
|
||||
@@ -260,27 +254,13 @@ static int ksmbd_kthread_fn(void *p)
|
||||
/*
|
||||
* Limits repeated connections from clients with the same IP.
|
||||
*/
|
||||
+ csk_inet = inet_sk(client_sk->sk);
|
||||
down_read(&conn_list_lock);
|
||||
list_for_each_entry(conn, &conn_list, conns_list)
|
||||
-#if IS_ENABLED(CONFIG_IPV6)
|
||||
- if (client_sk->sk->sk_family == AF_INET6) {
|
||||
- if (memcmp(&client_sk->sk->sk_v6_daddr,
|
||||
- &conn->inet6_addr, 16) == 0) {
|
||||
- ret = -EAGAIN;
|
||||
- break;
|
||||
- }
|
||||
- } else if (inet_sk(client_sk->sk)->inet_daddr ==
|
||||
- conn->inet_addr) {
|
||||
+ if (csk_inet->inet_daddr == conn->inet_addr) {
|
||||
ret = -EAGAIN;
|
||||
break;
|
||||
}
|
||||
-#else
|
||||
- if (inet_sk(client_sk->sk)->inet_daddr ==
|
||||
- conn->inet_addr) {
|
||||
- ret = -EAGAIN;
|
||||
- break;
|
||||
- }
|
||||
-#endif
|
||||
up_read(&conn_list_lock);
|
||||
if (ret == -EAGAIN)
|
||||
continue;
|
||||
@ -1,62 +0,0 @@
|
||||
From 7fe1a46e2d0bf2f4ca9da286be95c46c21111c0c Mon Sep 17 00:00:00 2001
|
||||
From: Andrea Pesaresi <andreapesaresi82@gmail.com>
|
||||
Date: Tue, 30 Sep 2025 22:44:36 +0200
|
||||
Subject: Revert "ksmbd: limit repeated connections from clients with the same
|
||||
IP"
|
||||
|
||||
This reverts commit fa1c47af4ff641cf9197ecdb1f8240cbb30389c1.
|
||||
---
|
||||
fs/smb/server/connection.h | 1 -
|
||||
fs/smb/server/transport_tcp.c | 17 -----------------
|
||||
2 files changed, 18 deletions(-)
|
||||
|
||||
--- a/fs/smb/server/connection.h
|
||||
+++ b/fs/smb/server/connection.h
|
||||
@@ -46,7 +46,6 @@ struct ksmbd_conn {
|
||||
struct mutex srv_mutex;
|
||||
int status;
|
||||
unsigned int cli_cap;
|
||||
- __be32 inet_addr;
|
||||
char *request_buf;
|
||||
struct ksmbd_transport *transport;
|
||||
struct nls_table *local_nls;
|
||||
--- a/fs/smb/server/transport_tcp.c
|
||||
+++ b/fs/smb/server/transport_tcp.c
|
||||
@@ -87,7 +87,6 @@ static struct tcp_transport *alloc_trans
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- conn->inet_addr = inet_sk(client_sk->sk)->inet_daddr;
|
||||
conn->transport = KSMBD_TRANS(t);
|
||||
KSMBD_TRANS(t)->conn = conn;
|
||||
KSMBD_TRANS(t)->ops = &ksmbd_tcp_transport_ops;
|
||||
@@ -231,8 +230,6 @@ static int ksmbd_kthread_fn(void *p)
|
||||
{
|
||||
struct socket *client_sk = NULL;
|
||||
struct interface *iface = (struct interface *)p;
|
||||
- struct inet_sock *csk_inet;
|
||||
- struct ksmbd_conn *conn;
|
||||
int ret;
|
||||
|
||||
while (!kthread_should_stop()) {
|
||||
@@ -251,20 +248,6 @@ static int ksmbd_kthread_fn(void *p)
|
||||
continue;
|
||||
}
|
||||
|
||||
- /*
|
||||
- * Limits repeated connections from clients with the same IP.
|
||||
- */
|
||||
- csk_inet = inet_sk(client_sk->sk);
|
||||
- down_read(&conn_list_lock);
|
||||
- list_for_each_entry(conn, &conn_list, conns_list)
|
||||
- if (csk_inet->inet_daddr == conn->inet_addr) {
|
||||
- ret = -EAGAIN;
|
||||
- break;
|
||||
- }
|
||||
- up_read(&conn_list_lock);
|
||||
- if (ret == -EAGAIN)
|
||||
- continue;
|
||||
-
|
||||
if (server_conf.max_connections &&
|
||||
atomic_inc_return(&active_num_conn) >= server_conf.max_connections) {
|
||||
pr_info_ratelimited("Limit the maximum number of connections(%u)\n",
|
||||
@ -96,6 +96,29 @@ mobipromo,cm520-79f)
|
||||
ucidef_set_led_netdev "lan1" "LAN1" "blue:lan1" "lan1"
|
||||
ucidef_set_led_netdev "lan2" "LAN2" "blue:lan2" "lan2"
|
||||
;;
|
||||
meraki,gx20 |\
|
||||
meraki,z3)
|
||||
ucidef_set_led_netdev "wan_link" "WAN (link)" "green:wan-0" "wan" "link"
|
||||
ucidef_set_led_netdev "wan_act" "WAN (txrx)" "green:wan-1" "wan" "tx rx"
|
||||
ucidef_set_led_netdev "lan1_link" "LAN2 (link)" "green:lan-2" "lan2" "link"
|
||||
ucidef_set_led_netdev "lan1_act" "LAN2 (txrx)" "green:lan-3" "lan2" "tx rx"
|
||||
ucidef_set_led_netdev "lan2_link" "LAN3 (link)" "green:lan-4" "lan3" "link"
|
||||
ucidef_set_led_netdev "lan2_act" "LAN3 (txrx)" "green:lan-5" "lan3" "tx rx"
|
||||
ucidef_set_led_netdev "lan3_link" "LAN4 (link)" "green:lan-6" "lan4" "link"
|
||||
ucidef_set_led_netdev "lan3_act" "LAN4 (txrx)" "green:lan-7" "lan4" "tx rx"
|
||||
ucidef_set_led_netdev "lan4_link" "LAN5 (link)" "green:lan-8" "lan5" "link"
|
||||
ucidef_set_led_netdev "lan4_act" "LAN5 (txrx)" "green:lan-9" "lan5" "tx rx"
|
||||
;;
|
||||
meraki,mr30h)
|
||||
ucidef_set_led_netdev "lan1_link" "LAN1 (link)" "green:lan-0" "lan1" "link"
|
||||
ucidef_set_led_netdev "lan1_act" "LAN1 (txrx)" "amber:lan-1" "lan1" "tx rx"
|
||||
ucidef_set_led_netdev "lan2_link" "LAN2 (link)" "green:lan-2" "lan2" "link"
|
||||
ucidef_set_led_netdev "lan2_act" "LAN2 (txrx)" "amber:lan-3" "lan2" "tx rx"
|
||||
ucidef_set_led_netdev "lan3_link" "LAN3 (link)" "green:lan-4" "lan3" "link"
|
||||
ucidef_set_led_netdev "lan3_act" "LAN3 (txrx)" "amber:lan-5" "lan3" "tx rx"
|
||||
ucidef_set_led_netdev "lan4_link" "LAN4 (link)" "green:lan-6" "lan4" "link"
|
||||
ucidef_set_led_netdev "lan4_act" "LAN4 (txrx)" "amber:lan-7" "lan4" "tx rx"
|
||||
;;
|
||||
netgear,ex6100v2 |\
|
||||
netgear,ex6150v2)
|
||||
ucidef_set_led_wlan "wlan2g" "WLAN2G" "green:router" "phy0tpt"
|
||||
|
||||
@ -29,6 +29,10 @@ ipq40xx_setup_interfaces()
|
||||
zyxel,nbg6617)
|
||||
ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" "wan"
|
||||
;;
|
||||
meraki,gx20|\
|
||||
meraki,z3)
|
||||
ucidef_set_interfaces_lan_wan "lan2 lan3 lan4 lan5" "wan"
|
||||
;;
|
||||
8dev,jalapeno|\
|
||||
alfa-network,ap120c-ac|\
|
||||
asus,map-ac2200|\
|
||||
@ -134,6 +138,9 @@ ipq40xx_setup_interfaces()
|
||||
ucidef_set_interface_lan "lan1 lan2"
|
||||
ucidef_set_interface "wan" device "/dev/cdc-wdm0" protocol "qmi"
|
||||
;;
|
||||
meraki,mr30h)
|
||||
ucidef_set_interface_lan "lan1 lan2 lan3 lan4 lan5"
|
||||
;;
|
||||
*)
|
||||
echo "Unsupported hardware. Network interfaces not initialized"
|
||||
;;
|
||||
|
||||
@ -21,6 +21,10 @@ cilab,meshpoint-one)
|
||||
compex,wpj428)
|
||||
ucidef_add_gpio_switch "sim_card_select" "SIM card select" "3" "0"
|
||||
;;
|
||||
meraki,gx20|\
|
||||
meraki,z3)
|
||||
ucidef_add_gpio_switch "lan5_poe_disable" "LAN5 PoE disable" "540" "0"
|
||||
;;
|
||||
mikrotik,cap-ac)
|
||||
ucidef_add_gpio_switch "poe_passtrough" "POE passtrough enable" "514" "0"
|
||||
;;
|
||||
|
||||
@ -178,11 +178,20 @@ platform_do_upgrade() {
|
||||
linksys,whw03)
|
||||
platform_do_upgrade_linksys_emmc "$1"
|
||||
;;
|
||||
meraki,mr30h |\
|
||||
meraki,mr33 |\
|
||||
meraki,mr74)
|
||||
CI_KERNPART="part.safe"
|
||||
nand_do_upgrade "$1"
|
||||
;;
|
||||
meraki,gx20|\
|
||||
meraki,z3)
|
||||
# DO NOT set CI_KERNPART to part.safe,
|
||||
# that is used for chain-loading an unlocked u-boot
|
||||
# if part.safe is overwritten, then u-boot is lost!
|
||||
CI_KERNPART="part.old"
|
||||
nand_do_upgrade "$1"
|
||||
;;
|
||||
mikrotik,cap-ac|\
|
||||
mikrotik,hap-ac2|\
|
||||
mikrotik,hap-ac3-lte6-kit|\
|
||||
|
||||
@ -11,6 +11,7 @@ CONFIG_ARCH_MULTI_V7=y
|
||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
|
||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
|
||||
CONFIG_ARCH_QCOM=y
|
||||
# CONFIG_ARCH_QCOM_IPQ40XX_BOOT_COMPRESSED_PET_WATCHDOG_EARLY is not set
|
||||
CONFIG_ARCH_QCOM_RESERVE_SMEM=y
|
||||
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
||||
|
||||
@ -6,15 +6,17 @@
|
||||
#include <dt-bindings/input/input.h>
|
||||
|
||||
/ {
|
||||
model = "Linksys WHW01";
|
||||
model = "Linksys WHW01 / VLP01";
|
||||
compatible = "linksys,whw01";
|
||||
|
||||
aliases {
|
||||
// TODO: Verify if the ethernet0 alias is needed
|
||||
ethernet0 = &gmac;
|
||||
serial0 = &blsp1_uart1;
|
||||
led-boot = &led_system_blue;
|
||||
led-failsafe = &led_system_red;
|
||||
led-running = &led_system_blue;
|
||||
led-upgrade = &led_system_red;
|
||||
label-mac-device = &gmac;
|
||||
};
|
||||
|
||||
chosen {
|
||||
@ -56,7 +58,7 @@
|
||||
reg = <0x62>;
|
||||
|
||||
/* RGB? */
|
||||
led@0 {
|
||||
led_system_red: led@0 {
|
||||
reg = <0>;
|
||||
color = <LED_COLOR_ID_RED>;
|
||||
function = LED_FUNCTION_POWER;
|
||||
|
||||
@ -0,0 +1,109 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
// Device Tree Source for Meraki Go GX20 (Fairyfly)
|
||||
|
||||
#include "qcom-ipq4029-wired-qca-common.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Meraki Go GX20 Router";
|
||||
compatible = "meraki,gx20";
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
power_orange: power {
|
||||
color = <LED_COLOR_ID_AMBER>;
|
||||
function = LED_FUNCTION_POWER;
|
||||
gpios = <&tlmm 49 GPIO_ACTIVE_LOW>;
|
||||
panic-indicator;
|
||||
};
|
||||
|
||||
led-1 {
|
||||
/* WAN left */
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_WAN;
|
||||
function-enumerator = <0>;
|
||||
gpios = <&tlmm 46 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-2 {
|
||||
/* WAN right */
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_WAN;
|
||||
function-enumerator = <1>;
|
||||
gpios = <&tlmm 30 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-3 {
|
||||
/* port 2 left */
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <2>;
|
||||
gpios = <&tlmm 23 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-4 {
|
||||
/* port 2 right */
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <3>;
|
||||
gpios = <&tlmm 22 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-5 {
|
||||
/* port 3 left */
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <4>;
|
||||
gpios = <&tlmm 25 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-6 {
|
||||
/* port 3 right */
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <5>;
|
||||
gpios = <&tlmm 24 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-7 {
|
||||
/* port 4 left */
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <6>;
|
||||
gpios = <&tlmm 29 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-8 {
|
||||
/* port 4 right */
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <7>;
|
||||
gpios = <&tlmm 26 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-9 {
|
||||
/* port 5 left */
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <8>;
|
||||
gpios = <&tlmm 33 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-10 {
|
||||
/* port 5 right */
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <9>;
|
||||
gpios = <&tlmm 32 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/* GX20 does not have WiFi radios */
|
||||
&wifi0 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&wifi1 {
|
||||
status = "disabled";
|
||||
};
|
||||
@ -0,0 +1,155 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
// Device Tree Source for Meraki MR30H (Noisy Cricket)
|
||||
|
||||
#include "qcom-ipq4029-wired-qca-common.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Meraki MR30H";
|
||||
compatible = "meraki,mr30h";
|
||||
|
||||
soc {
|
||||
/* for USB PHY, device has no USB port */
|
||||
tcsr@194b000 {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
power_orange: power {
|
||||
color = <LED_COLOR_ID_AMBER>;
|
||||
function = LED_FUNCTION_POWER;
|
||||
gpios = <&tlmm 49 GPIO_ACTIVE_LOW>;
|
||||
panic-indicator;
|
||||
};
|
||||
|
||||
led-0 {
|
||||
/* LAN 1 act */
|
||||
color = <LED_COLOR_ID_AMBER>;
|
||||
function = LED_FUNCTION_ACTIVITY;
|
||||
gpios = <&tlmm 33 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-1 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <1>;
|
||||
gpios = <&tlmm 32 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-2 {
|
||||
/* LAN 2 act */
|
||||
color = <LED_COLOR_ID_AMBER>;
|
||||
function = LED_FUNCTION_ACTIVITY;
|
||||
gpios = <&tlmm 27 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led-3 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <2>;
|
||||
gpios = <&tlmm 26 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-4 {
|
||||
/* LAN 3 act */
|
||||
color = <LED_COLOR_ID_AMBER>;
|
||||
function = LED_FUNCTION_ACTIVITY;
|
||||
gpios = <&tlmm 25 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-5 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <3>;
|
||||
gpios = <&tlmm 24 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-6 {
|
||||
/* LAN 4 act */
|
||||
color = <LED_COLOR_ID_AMBER>;
|
||||
function = LED_FUNCTION_ACTIVITY;
|
||||
gpios = <&tlmm 23 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-7 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <4>;
|
||||
gpios = <&tlmm 22 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&usb2_hs_phy {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&usb2 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&usb3_hs_phy {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&usb3_ss_phy {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&usb3 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&pcie0 {
|
||||
status = "okay";
|
||||
perst-gpio = <&tlmm 38 GPIO_ACTIVE_LOW>;
|
||||
wake-gpio = <&tlmm 50 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
&pcie_bridge0 {
|
||||
wifi2: wifi@0,0 {
|
||||
compatible = "qcom,ath10k";
|
||||
status = "okay";
|
||||
reg = <0x00010000 0 0 0 0>;
|
||||
nvmem-cells = <&cal_factory_9000>;
|
||||
nvmem-cell-names = "calibration";
|
||||
};
|
||||
};
|
||||
|
||||
&wifi0 {
|
||||
status = "okay";
|
||||
qcom,ath10k-calibration-variant = "Meraki-MR30H";
|
||||
};
|
||||
|
||||
&wifi1 {
|
||||
status = "okay";
|
||||
qcom,ath10k-calibration-variant = "Meraki-MR30H";
|
||||
};
|
||||
|
||||
|
||||
&swport1 {
|
||||
label = "lan4";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&swport2 {
|
||||
label = "lan3";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&swport3 {
|
||||
label = "lan2";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&swport4 {
|
||||
label = "lan1";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&swport5 {
|
||||
label = "lan5";
|
||||
status = "okay";
|
||||
};
|
||||
@ -0,0 +1,411 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Device Tree Source for Meraki "wired-arm-qca" series
|
||||
*
|
||||
* Copyright (C) 2017 Chris Blake <chrisrblake93@gmail.com>
|
||||
* Copyright (C) 2017 Christian Lamparter <chunkeey@googlemail.com>
|
||||
* Copyright (C) 2025 Hal Martin <halmartin@googlemail.com>
|
||||
*
|
||||
*/
|
||||
|
||||
#include "qcom-ipq4019.dtsi"
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/soc/qcom,tcsr.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
|
||||
/ {
|
||||
aliases {
|
||||
led-boot = &status_green;
|
||||
led-failsafe = &status_red;
|
||||
led-running = &status_green;
|
||||
led-upgrade = &power_orange;
|
||||
};
|
||||
|
||||
soc {
|
||||
/* It is a 56-bit counter that supplies the count to the ARM arch
|
||||
timers and without upstream driver */
|
||||
counter@4a1000 {
|
||||
compatible = "qcom,qca-gcnt";
|
||||
reg = <0x4a1000 0x4>;
|
||||
};
|
||||
|
||||
ess_tcsr@1953000 {
|
||||
compatible = "qcom,tcsr";
|
||||
reg = <0x1953000 0x1000>;
|
||||
qcom,ess-interface-select = <TCSR_ESS_PSGMII>;
|
||||
};
|
||||
|
||||
tcsr@1949000 {
|
||||
compatible = "qcom,tcsr";
|
||||
reg = <0x1949000 0x100>;
|
||||
qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>;
|
||||
};
|
||||
|
||||
tcsr@194b000 {
|
||||
/* select hostmode */
|
||||
compatible = "qcom,tcsr";
|
||||
reg = <0x194b000 0x100>;
|
||||
qcom,usb-hsphy-mode-select = <TCSR_USB_HSPHY_HOST_MODE>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
tcsr@1957000 {
|
||||
compatible = "qcom,tcsr";
|
||||
reg = <0x1957000 0x100>;
|
||||
qcom,wifi_noc_memtype_m0_m2 = <TCSR_WIFI_NOC_MEMTYPE_M0_M2>;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
reset {
|
||||
label = "reset";
|
||||
gpios = <&tlmm 18 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_RESTART>;
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
&blsp_dma {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&blsp1_uart1 {
|
||||
pinctrl-0 = <&serial_0_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&cryptobam {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&blsp1_i2c3 {
|
||||
pinctrl-0 = <&i2c_0_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
|
||||
eeprom@50 {
|
||||
compatible = "atmel,24c64";
|
||||
pagesize = <32>;
|
||||
reg = <0x50>;
|
||||
read-only; /* This holds our MAC & Meraki board-data */
|
||||
|
||||
nvmem-layout {
|
||||
compatible = "fixed-layout";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
mac_address: mac-address@66 {
|
||||
compatible = "mac-base";
|
||||
reg = <0x66 0x6>;
|
||||
#nvmem-cell-cells = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&blsp1_i2c4 {
|
||||
pinctrl-0 = <&i2c_1_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
|
||||
tricolor: led-controller@30 {
|
||||
compatible = "ti,lp5562";
|
||||
reg = <0x30>;
|
||||
clock-mode = /bits/8 <2>;
|
||||
enable-gpio = <&tlmm 48 GPIO_ACTIVE_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
/* RGB led */
|
||||
status_red: chan@0 {
|
||||
chan-name = "red:status";
|
||||
led-cur = /bits/ 8 <0x20>;
|
||||
max-cur = /bits/ 8 <0x60>;
|
||||
reg = <0>;
|
||||
color = <LED_COLOR_ID_RED>;
|
||||
};
|
||||
|
||||
status_green: chan@1 {
|
||||
chan-name = "green:status";
|
||||
led-cur = /bits/ 8 <0x20>;
|
||||
max-cur = /bits/ 8 <0x60>;
|
||||
reg = <1>;
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
};
|
||||
|
||||
chan@2 {
|
||||
chan-name = "blue:status";
|
||||
led-cur = /bits/ 8 <0x20>;
|
||||
max-cur = /bits/ 8 <0x60>;
|
||||
reg = <2>;
|
||||
color = <LED_COLOR_ID_BLUE>;
|
||||
};
|
||||
|
||||
chan@3 {
|
||||
chan-name = "white:status";
|
||||
led-cur = /bits/ 8 <0x20>;
|
||||
max-cur = /bits/ 8 <0x60>;
|
||||
reg = <3>;
|
||||
color = <LED_COLOR_ID_WHITE>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&nand {
|
||||
pinctrl-0 = <&nand_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
|
||||
nand@0 {
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "sbl1";
|
||||
reg = <0x00000000 0x00100000>;
|
||||
read-only;
|
||||
};
|
||||
partition@100000 {
|
||||
label = "mibib";
|
||||
reg = <0x00100000 0x00100000>;
|
||||
read-only;
|
||||
};
|
||||
partition@200000 {
|
||||
label = "bootconfig";
|
||||
reg = <0x00200000 0x00100000>;
|
||||
read-only;
|
||||
};
|
||||
partition@300000 {
|
||||
label = "qsee";
|
||||
reg = <0x00300000 0x00100000>;
|
||||
read-only;
|
||||
};
|
||||
partition@400000 {
|
||||
label = "qsee_alt";
|
||||
reg = <0x00400000 0x00100000>;
|
||||
read-only;
|
||||
};
|
||||
partition@500000 {
|
||||
label = "cdt";
|
||||
reg = <0x00500000 0x00080000>;
|
||||
read-only;
|
||||
};
|
||||
partition@580000 {
|
||||
label = "cdt_alt";
|
||||
reg = <0x00580000 0x00080000>;
|
||||
read-only;
|
||||
};
|
||||
partition@600000 {
|
||||
label = "ddrparams";
|
||||
reg = <0x00600000 0x00080000>;
|
||||
read-only;
|
||||
};
|
||||
partition@700000 {
|
||||
label = "u-boot";
|
||||
reg = <0x00700000 0x00200000>;
|
||||
read-only;
|
||||
};
|
||||
partition@900000 {
|
||||
label = "u-boot-backup";
|
||||
reg = <0x00900000 0x00200000>;
|
||||
read-only;
|
||||
};
|
||||
partition@b00000 {
|
||||
label = "ART";
|
||||
reg = <0x00b00000 0x00080000>;
|
||||
read-only;
|
||||
};
|
||||
partition@c00000 {
|
||||
compatible = "linux,ubi";
|
||||
reg = <0x00c00000 0x07000000>;
|
||||
label = "ubi";
|
||||
/*
|
||||
* Do not try to allocate the remaining
|
||||
* 4 MiB to this ubi partition. It will
|
||||
* confuse the u-boot and it might not
|
||||
* find the kernel partition anymore.
|
||||
*/
|
||||
volumes {
|
||||
ubi_art: ubi-volume-art {
|
||||
volname = "ART";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&qpic_bam {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&mdio {
|
||||
status = "okay";
|
||||
pinctrl-0 = <&mdio_pins>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
&tlmm {
|
||||
mdio_pins: mdio_pinmux {
|
||||
mux_1 {
|
||||
pins = "gpio6";
|
||||
function = "mdio";
|
||||
bias-pull-up;
|
||||
};
|
||||
mux_2 {
|
||||
pins = "gpio7";
|
||||
function = "mdc";
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
|
||||
serial_0_pins: serial_pinmux {
|
||||
pins = "gpio16", "gpio17";
|
||||
function = "blsp_uart0";
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
serial_1_pins: serial1_pinmux {
|
||||
/* We use the i2c-0 pins for serial_1 */
|
||||
pins = "gpio8", "gpio9";
|
||||
function = "blsp_uart1";
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
i2c_0_pins: i2c_0_pinmux {
|
||||
function = "blsp_i2c0";
|
||||
pins = "gpio20", "gpio21";
|
||||
drive-strength = <16>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
i2c_1_pins: i2c_1_pinmux {
|
||||
function = "blsp_i2c1";
|
||||
pins = "gpio34", "gpio35";
|
||||
drive-strength = <16>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
nand_pins: nand_pins {
|
||||
/*
|
||||
* There are 18 pins. 15 pins are common between LCD and NAND.
|
||||
* The QPIC controller arbitrates between LCD and NAND. Of the
|
||||
* remaining 4, 2 are for NAND and 2 are for LCD exclusively.
|
||||
*
|
||||
* The meraki source hints that the bluetooth module claims
|
||||
* pin 52 as well. But sadly, there's no data whenever this
|
||||
* is a NAND or LCD exclusive pin or not.
|
||||
*/
|
||||
|
||||
pullups {
|
||||
pins = "gpio53", "gpio58", "gpio59";
|
||||
function = "qpic";
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
pulldowns {
|
||||
pins = "gpio55", "gpio56",
|
||||
"gpio57", "gpio60", "gpio62",
|
||||
"gpio63", "gpio64", "gpio65",
|
||||
"gpio66", "gpio67", "gpio68",
|
||||
"gpio69";
|
||||
function = "qpic";
|
||||
bias-pull-down;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&usb2_hs_phy {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb3_hs_phy {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb3_ss_phy {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb3 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&ubi_art {
|
||||
nvmem-layout {
|
||||
compatible = "fixed-layout";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
precal_factory_1000: precal@1000 {
|
||||
reg = <0x1000 0x2f20>;
|
||||
};
|
||||
|
||||
precal_factory_5000: precal@5000 {
|
||||
reg = <0x5000 0x2f20>;
|
||||
};
|
||||
|
||||
cal_factory_9000: cal@9000 {
|
||||
reg = <0x9000 0x844>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&wifi0 {
|
||||
status = "okay";
|
||||
nvmem-cells = <&precal_factory_1000>;
|
||||
nvmem-cell-names = "pre-calibration";
|
||||
};
|
||||
|
||||
&wifi1 {
|
||||
status = "okay";
|
||||
nvmem-cells = <&precal_factory_5000>;
|
||||
nvmem-cell-names = "pre-calibration";
|
||||
};
|
||||
|
||||
&gmac {
|
||||
status = "okay";
|
||||
nvmem-cells = <&mac_address 0>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
};
|
||||
|
||||
&switch {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&swport1 {
|
||||
label = "wan";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&swport2 {
|
||||
label = "lan2";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&swport3 {
|
||||
label = "lan3";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&swport4 {
|
||||
label = "lan4";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&swport5 {
|
||||
label = "lan5";
|
||||
status = "okay";
|
||||
};
|
||||
@ -0,0 +1,110 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
// Device Tree Source for Meraki Z3 (Fuzzy Cricket)
|
||||
|
||||
#include "qcom-ipq4029-wired-qca-common.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Meraki Z3 Router";
|
||||
compatible = "meraki,z3";
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
power_orange: power {
|
||||
color = <LED_COLOR_ID_AMBER>;
|
||||
function = LED_FUNCTION_POWER;
|
||||
gpios = <&tlmm 49 GPIO_ACTIVE_LOW>;
|
||||
panic-indicator;
|
||||
};
|
||||
|
||||
led-1 {
|
||||
/* WAN left */
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_WAN;
|
||||
function-enumerator = <0>;
|
||||
gpios = <&tlmm 46 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-2 {
|
||||
/* WAN right */
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_WAN;
|
||||
function-enumerator = <1>;
|
||||
gpios = <&tlmm 30 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-3 {
|
||||
/* port 2 left */
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <2>;
|
||||
gpios = <&tlmm 23 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-4 {
|
||||
/* port 2 right */
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <3>;
|
||||
gpios = <&tlmm 22 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-5 {
|
||||
/* port 3 left */
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <4>;
|
||||
gpios = <&tlmm 25 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-6 {
|
||||
/* port 3 right */
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <5>;
|
||||
gpios = <&tlmm 24 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-7 {
|
||||
/* port 4 left */
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <6>;
|
||||
gpios = <&tlmm 29 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-8 {
|
||||
/* port 4 right */
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <7>;
|
||||
gpios = <&tlmm 26 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-9 {
|
||||
/* port 5 left */
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <8>;
|
||||
gpios = <&tlmm 33 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-10 {
|
||||
/* port 5 right */
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <9>;
|
||||
gpios = <&tlmm 32 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&wifi0 {
|
||||
status = "okay";
|
||||
qcom,ath10k-calibration-variant = "Meraki-Z3";
|
||||
};
|
||||
|
||||
&wifi1 {
|
||||
status = "okay";
|
||||
qcom,ath10k-calibration-variant = "Meraki-Z3";
|
||||
};
|
||||
@ -723,6 +723,25 @@ define Device/linksys_mr8300
|
||||
endef
|
||||
TARGET_DEVICES += linksys_mr8300
|
||||
|
||||
define Device/linksys_whw01
|
||||
$(call Device/FitzImage)
|
||||
DEVICE_VENDOR := Linksys
|
||||
DEVICE_MODEL := WHW01
|
||||
DEVICE_ALT0_VENDOR := Linksys
|
||||
DEVICE_ALT0_MODEL := VLP01
|
||||
KERNEL_SIZE := 6144k
|
||||
IMAGE_SIZE := 75776k
|
||||
NAND_SIZE := 256m
|
||||
SOC := qcom-ipq4018
|
||||
BLOCKSIZE := 128k
|
||||
PAGESIZE := 2048
|
||||
UBINIZE_OPTS := -E 5 # EOD marks to "hide" factory sig at EOF
|
||||
IMAGES += factory.bin
|
||||
IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi | linksys-image type=WHW01
|
||||
DEVICE_PACKAGES := uboot-envtools kmod-leds-pca963x
|
||||
endef
|
||||
TARGET_DEVICES += linksys_whw01
|
||||
|
||||
define Device/linksys_whw03
|
||||
$(call Device/FitzImage)
|
||||
DEVICE_VENDOR := Linksys
|
||||
@ -755,23 +774,6 @@ define Device/linksys_whw03v2
|
||||
endef
|
||||
TARGET_DEVICES += linksys_whw03v2
|
||||
|
||||
define Device/linksys_whw01
|
||||
$(call Device/FitzImage)
|
||||
DEVICE_VENDOR := Linksys
|
||||
DEVICE_MODEL := WHW01
|
||||
KERNEL_SIZE := 6144k
|
||||
IMAGE_SIZE := 75776k
|
||||
NAND_SIZE := 256m
|
||||
SOC := qcom-ipq4018
|
||||
BLOCKSIZE := 128k
|
||||
PAGESIZE := 2048
|
||||
UBINIZE_OPTS := -E 5 # EOD marks to "hide" factory sig at EOF
|
||||
IMAGES += factory.bin
|
||||
IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi | linksys-image type=WHW01
|
||||
DEVICE_PACKAGES := uboot-envtools kmod-leds-pca963x
|
||||
endef
|
||||
TARGET_DEVICES += linksys_whw01
|
||||
|
||||
define Device/luma_wrtq-329acn
|
||||
$(call Device/FitImage)
|
||||
DEVICE_VENDOR := Luma Home
|
||||
@ -794,6 +796,14 @@ define Device/meraki_common
|
||||
DEVICE_PACKAGES := ath10k-firmware-qca9887-ct
|
||||
endef
|
||||
|
||||
define Device/meraki_mr30h
|
||||
$(call Device/meraki_common)
|
||||
DEVICE_MODEL := MR30H
|
||||
DEVICE_DTS_CONFIG := config@2
|
||||
DEVICE_PACKAGES += ipq-wifi-meraki_mr30h
|
||||
endef
|
||||
TARGET_DEVICES += meraki_mr30h
|
||||
|
||||
define Device/meraki_mr33
|
||||
$(call Device/meraki_common)
|
||||
DEVICE_MODEL := MR33
|
||||
@ -807,6 +817,22 @@ define Device/meraki_mr74
|
||||
endef
|
||||
TARGET_DEVICES += meraki_mr74
|
||||
|
||||
define Device/meraki_z3
|
||||
$(call Device/meraki_common)
|
||||
DEVICE_MODEL := Z3
|
||||
DEVICE_DTS_CONFIG := config@1
|
||||
DEVICE_PACKAGES := -ath10k-firmware-qca9887-ct ipq-wifi-meraki_z3
|
||||
endef
|
||||
TARGET_DEVICES += meraki_z3
|
||||
|
||||
define Device/meraki_gx20
|
||||
$(call Device/meraki_common)
|
||||
DEVICE_MODEL := GX20
|
||||
DEVICE_DTS_CONFIG := config@2
|
||||
DEVICE_PACKAGES := -ath10k-board-qca4019 -ath10k-firmware-qca9887-ct
|
||||
endef
|
||||
TARGET_DEVICES += meraki_gx20
|
||||
|
||||
define Device/mobipromo_cm520-79f
|
||||
$(call Device/FitzImage)
|
||||
$(call Device/UbiFit)
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
CONFIG_ARCH_QCOM_IPQ40XX_BOOT_COMPRESSED_PET_WATCHDOG_EARLY=y
|
||||
CONFIG_CRYPTO_HASH_INFO=y
|
||||
CONFIG_MIKROTIK=y
|
||||
CONFIG_MIKROTIK_RB_SYSFS=y
|
||||
|
||||
@ -32,7 +32,7 @@ Signed-off-by: John Thomson <git@johnthomson.fastmail.com.au>
|
||||
+ * data and functionality from drivers/watchdog/qcom-wdt.c
|
||||
+ * address from arch/arm/boot/dts/qcom-ipq4019.dtsi
|
||||
+ */
|
||||
+#ifdef CONFIG_ARCH_IPQ40XX
|
||||
+#ifdef CONFIG_ARCH_QCOM_IPQ40XX_BOOT_COMPRESSED_PET_WATCHDOG_EARLY
|
||||
+watchdog_set:
|
||||
+ /* offsets:
|
||||
+ * 0x04 reset (=1 resets countdown)
|
||||
@ -59,8 +59,23 @@ Signed-off-by: John Thomson <git@johnthomson.fastmail.com.au>
|
||||
+ mov r1, #1
|
||||
+ str r1, [r0, #0x08] @Enable the watchdog
|
||||
+watchdog_finished:
|
||||
+#endif /* CONFIG_ARCH_IPQ40XX */
|
||||
+#endif /* CONFIG_ARCH_QCOM_IPQ40XX_BOOT_COMPRESSED_PET_WATCHDOG_EARLY */
|
||||
+
|
||||
/*
|
||||
* The C runtime environment should now be setup sufficiently.
|
||||
* Set up some pointers, and start decompressing.
|
||||
--- a/arch/arm/mach-qcom/Kconfig
|
||||
+++ b/arch/arm/mach-qcom/Kconfig
|
||||
@@ -21,4 +21,12 @@ config ARCH_QCOM_RESERVE_SMEM
|
||||
Reserve 2MB at the beginning of the System RAM for shared mem.
|
||||
This is required on IPQ40xx, MSM8x60 and MSM8960 platforms.
|
||||
|
||||
+config ARCH_QCOM_IPQ40XX_BOOT_COMPRESSED_PET_WATCHDOG_EARLY
|
||||
+ bool "Pet ipq40xx watchdog early in boot uncompression"
|
||||
+ help
|
||||
+ Pet the IPQ40xx watchdog very early in boot uncompress stage.
|
||||
+ Use where bootloader sets a watchdog timeout that bites the
|
||||
+ device before the Linux watchdog device driver can manage it.
|
||||
+ Required for Mikrotik RouterBOOT on ipq40xx devices
|
||||
+
|
||||
endif
|
||||
|
||||
@ -20,6 +20,7 @@ case "$board" in
|
||||
linksys,ea7500-v1 |\
|
||||
linksys,ea8500)
|
||||
macaddr_add $(mtd_get_mac_ascii devinfo hw_mac_addr) $(($PHYNBR + 1)) > /sys${DEVPATH}/macaddress
|
||||
;;
|
||||
esac
|
||||
|
||||
OPATH=${DEVPATH##/devices/platform/}
|
||||
|
||||
@ -266,9 +266,9 @@ zbtlink,zbt-z8103ax)
|
||||
zyxel,ex5601-t0-stock|\
|
||||
zyxel,ex5601-t0-ubootmod)
|
||||
ucidef_set_led_netdev "lan1" "LAN1" "mdio-bus:05:green:lan" "lan1" "link tx rx"
|
||||
ucidef_set_led_netdev "wan" "2.5G-WAN" "mdio-bus:06:green:wan" "eth1" "link_2500"
|
||||
ucidef_set_led_netdev "wan" "2.5G-WAN" "mdio-bus:06:green:wan" "wan" "link_2500"
|
||||
ucidef_set_led_netdev "lan" "LAN" "green:lan" "eth0" "link tx rx"
|
||||
ucidef_set_led_netdev "internet" "INTERNET" "green:inet" "eth1" "link tx rx"
|
||||
ucidef_set_led_netdev "internet" "INTERNET" "green:inet" "wan" "link tx rx"
|
||||
ucidef_set_led_netdev "wifi-24g" "WIFI-2.4G" "green:wifi24g" "phy0-ap0" "link tx rx"
|
||||
ucidef_set_led_netdev "wifi-5g" "WIFI-5G" "green:wifi5g" "phy1-ap0" "link tx rx"
|
||||
;;
|
||||
|
||||
@ -344,9 +344,11 @@ define Device/asus_rt-ax52
|
||||
KERNEL_INITRAMFS := kernel-bin | lzma | \
|
||||
fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb with-initrd | pad-to 64k
|
||||
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
|
||||
ifeq ($(IB),)
|
||||
ARTIFACTS := initramfs.trx
|
||||
ARTIFACT/initramfs.trx := append-image-stage initramfs-kernel.bin | \
|
||||
uImage none | asus-trx -v 3 -n $$(DEVICE_MODEL)
|
||||
endif
|
||||
endef
|
||||
TARGET_DEVICES += asus_rt-ax52
|
||||
|
||||
@ -405,10 +407,12 @@ define Device/asus_zenwifi-bt8
|
||||
KERNEL_LOADADDR := 0x48080000
|
||||
IMAGES := sysupgrade.bin
|
||||
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
|
||||
ifeq ($(IB),)
|
||||
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
|
||||
ARTIFACTS := factory.bin
|
||||
ARTIFACT/factory.bin := append-image initramfs-kernel.bin | uImage lzma
|
||||
endif
|
||||
endif
|
||||
endef
|
||||
TARGET_DEVICES += asus_zenwifi-bt8
|
||||
|
||||
@ -1099,10 +1103,12 @@ define Device/dlink_aquila-pro-ai-m30-a1
|
||||
IMAGES += recovery.bin
|
||||
IMAGE_SIZE := 51200k
|
||||
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
|
||||
ifeq ($(IB),)
|
||||
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
|
||||
IMAGE/recovery.bin := append-image-stage initramfs-kernel.bin | sysupgrade-tar kernel=$$$$@ |\
|
||||
pad-to $$(IMAGE_SIZE) | dlink-ai-recovery-header DLK6E6110001 \x6A\x28\xEE\x0B \x00\x00\x2C\x00 \x00\x00\x20\x03 \x61\x6E
|
||||
endif
|
||||
endif
|
||||
endef
|
||||
TARGET_DEVICES += dlink_aquila-pro-ai-m30-a1
|
||||
|
||||
@ -1116,10 +1122,12 @@ define Device/dlink_aquila-pro-ai-m60-a1
|
||||
IMAGES += recovery.bin
|
||||
IMAGE_SIZE := 51200k
|
||||
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
|
||||
ifeq ($(IB),)
|
||||
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
|
||||
IMAGE/recovery.bin := append-image-stage initramfs-kernel.bin | sysupgrade-tar kernel=$$$$@ |\
|
||||
pad-to $$(IMAGE_SIZE) | dlink-ai-recovery-header DLK6E8202001 \x30\x6C\x19\x0C \x00\x00\x2C\x00 \x00\x00\x20\x03 \x82\x6E
|
||||
endif
|
||||
endif
|
||||
endef
|
||||
TARGET_DEVICES += dlink_aquila-pro-ai-m60-a1
|
||||
|
||||
@ -2484,9 +2492,11 @@ define Device/xiaomi_mi-router-ax3000t
|
||||
BLOCKSIZE := 128k
|
||||
PAGESIZE := 2048
|
||||
DEVICE_PACKAGES := kmod-mt7915e kmod-mt7981-firmware mt7981-wo-firmware
|
||||
ifeq ($(IB),)
|
||||
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
|
||||
ARTIFACTS := initramfs-factory.ubi
|
||||
ARTIFACT/initramfs-factory.ubi := append-image-stage initramfs-kernel.bin | ubinize-kernel
|
||||
endif
|
||||
endif
|
||||
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
|
||||
endef
|
||||
@ -2514,10 +2524,12 @@ define Device/xiaomi_mi-router-ax3000t-ubootmod
|
||||
ARTIFACTS := preloader.bin bl31-uboot.fip
|
||||
ARTIFACT/preloader.bin := mt7981-bl2 spim-nand-ddr3
|
||||
ARTIFACT/bl31-uboot.fip := mt7981-bl31-uboot xiaomi_mi-router-ax3000t
|
||||
ifeq ($(IB),)
|
||||
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
|
||||
ARTIFACTS += initramfs-factory.ubi
|
||||
ARTIFACT/initramfs-factory.ubi := append-image-stage initramfs-recovery.itb | ubinize-kernel
|
||||
endif
|
||||
endif
|
||||
endef
|
||||
TARGET_DEVICES += xiaomi_mi-router-ax3000t-ubootmod
|
||||
|
||||
@ -2531,9 +2543,11 @@ define Device/xiaomi_mi-router-wr30u-stock
|
||||
BLOCKSIZE := 128k
|
||||
PAGESIZE := 2048
|
||||
DEVICE_PACKAGES := kmod-mt7915e kmod-mt7981-firmware mt7981-wo-firmware
|
||||
ifeq ($(IB),)
|
||||
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
|
||||
ARTIFACTS := initramfs-factory.ubi
|
||||
ARTIFACT/initramfs-factory.ubi := append-image-stage initramfs-kernel.bin | ubinize-kernel
|
||||
endif
|
||||
endif
|
||||
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
|
||||
endef
|
||||
@ -2561,10 +2575,12 @@ define Device/xiaomi_mi-router-wr30u-ubootmod
|
||||
ARTIFACTS := preloader.bin bl31-uboot.fip
|
||||
ARTIFACT/preloader.bin := mt7981-bl2 spim-nand-ddr3
|
||||
ARTIFACT/bl31-uboot.fip := mt7981-bl31-uboot xiaomi_mi-router-wr30u
|
||||
ifeq ($(IB),)
|
||||
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
|
||||
ARTIFACTS += initramfs-factory.ubi
|
||||
ARTIFACT/initramfs-factory.ubi := append-image-stage initramfs-recovery.itb | ubinize-kernel
|
||||
endif
|
||||
endif
|
||||
endef
|
||||
TARGET_DEVICES += xiaomi_mi-router-wr30u-ubootmod
|
||||
|
||||
@ -2578,9 +2594,11 @@ define Device/xiaomi_redmi-router-ax6000-stock
|
||||
UBINIZE_OPTS := -E 5
|
||||
BLOCKSIZE := 128k
|
||||
PAGESIZE := 2048
|
||||
ifeq ($(IB),)
|
||||
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
|
||||
ARTIFACTS := initramfs-factory.ubi
|
||||
ARTIFACT/initramfs-factory.ubi := append-image-stage initramfs-kernel.bin | ubinize-kernel
|
||||
endif
|
||||
endif
|
||||
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
|
||||
endef
|
||||
@ -2608,10 +2626,12 @@ define Device/xiaomi_redmi-router-ax6000-ubootmod
|
||||
ARTIFACTS := preloader.bin bl31-uboot.fip
|
||||
ARTIFACT/preloader.bin := mt7986-bl2 spim-nand-ddr4
|
||||
ARTIFACT/bl31-uboot.fip := mt7986-bl31-uboot xiaomi_redmi-router-ax6000
|
||||
ifeq ($(IB),)
|
||||
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
|
||||
ARTIFACTS += initramfs-factory.ubi
|
||||
ARTIFACT/initramfs-factory.ubi := append-image-stage initramfs-recovery.itb | ubinize-kernel
|
||||
endif
|
||||
endif
|
||||
endef
|
||||
TARGET_DEVICES += xiaomi_redmi-router-ax6000-ubootmod
|
||||
|
||||
@ -2738,10 +2758,12 @@ define Device/zyxel_ex5601-t0-ubootmod
|
||||
ARTIFACTS := preloader.bin bl31-uboot.fip
|
||||
ARTIFACT/preloader.bin := mt7986-bl2 spim-nand-4k-ddr4
|
||||
ARTIFACT/bl31-uboot.fip := mt7986-bl31-uboot zyxel_ex5601-t0
|
||||
ifeq ($(IB),)
|
||||
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
|
||||
ARTIFACTS += initramfs-factory.ubi
|
||||
ARTIFACT/initramfs-factory.ubi := append-image-stage initramfs-recovery.itb | ubinize-kernel
|
||||
endif
|
||||
endif
|
||||
endef
|
||||
TARGET_DEVICES += zyxel_ex5601-t0-ubootmod
|
||||
|
||||
|
||||
@ -14,6 +14,7 @@ CONFIG_GRO_CELLS=y
|
||||
CONFIG_LZO_COMPRESS=y
|
||||
CONFIG_LZO_DECOMPRESS=y
|
||||
CONFIG_MEMORY=y
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_MTD_NAND_FSL_IFC=y
|
||||
CONFIG_MTD_PHYSMAP=y
|
||||
CONFIG_MTD_SPLIT_TPLINK_FW=y
|
||||
|
||||
@ -74,6 +74,7 @@ define Device/asus_rt-ax89x
|
||||
append-kernel | asus-fake-ramdisk |\
|
||||
multiImage gzip $$(KDIR)/tmp/fakerd $$(KDIR)/image-$$(DEVICE_DTS).dtb |\
|
||||
sysupgrade-tar kernel=$$$$@ | append-metadata
|
||||
ifeq ($(IB),)
|
||||
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
|
||||
ARTIFACTS := initramfs-factory.trx initramfs-uImage.itb
|
||||
ARTIFACT/initramfs-uImage.itb := \
|
||||
@ -84,6 +85,7 @@ ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
|
||||
multiImage gzip $$(KDIR)/tmp/fakehsqs $$(KDIR)/image-$$(DEVICE_DTS).dtb |\
|
||||
asus-trx -v 2 -n RT-AX89U -b 388 -e 49000
|
||||
endif
|
||||
endif
|
||||
endef
|
||||
TARGET_DEVICES += asus_rt-ax89x
|
||||
|
||||
|
||||
@ -1157,10 +1157,12 @@ define Device/rostelecom_rt-fl-1
|
||||
$(Device/sercomm_cpj)
|
||||
DEVICE_MODEL := RT-FL-1
|
||||
DEVICE_ALT0_MODEL := RT-FL-1
|
||||
ifeq ($(IB),)
|
||||
ARTIFACT/initramfs-factory.img := \
|
||||
append-image-stage initramfs-kernel.bin | check-size | \
|
||||
sercomm-factory-cpj | gzip | sercomm-payload | \
|
||||
sercomm-pid-setbit 0x11 | sercomm-crypto
|
||||
endif
|
||||
endef
|
||||
TARGET_DEVICES += rostelecom_rt-fl-1
|
||||
|
||||
@ -1168,9 +1170,11 @@ define Device/rostelecom_s1010
|
||||
$(Device/sercomm_cpj)
|
||||
DEVICE_MODEL := S1010
|
||||
DEVICE_ALT0_MODEL := S1010.RT
|
||||
ifeq ($(IB),)
|
||||
ARTIFACT/initramfs-factory.img := \
|
||||
append-image-stage initramfs-kernel.bin | check-size | \
|
||||
sercomm-factory-cpj | gzip | sercomm-payload | sercomm-crypto
|
||||
endif
|
||||
endef
|
||||
TARGET_DEVICES += rostelecom_s1010
|
||||
|
||||
|
||||
@ -1236,11 +1236,13 @@ define Device/elecom_wmc-x1800gst
|
||||
KERNEL_LOADADDR := 0x82000000
|
||||
KERNEL := kernel-bin | relocate-kernel $(loadaddr-y) | lzma | \
|
||||
fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
|
||||
ifeq ($(IB),)
|
||||
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
|
||||
ARTIFACTS := initramfs-factory.bin
|
||||
ARTIFACT/initramfs-factory.bin := append-image-stage initramfs-kernel.bin | \
|
||||
check-size $$$$(KERNEL_SIZE) | elecom-wrc-gs-factory WMC-2LX 0.00 -N | \
|
||||
append-string MT7621_ELECOM_WMC-2LX
|
||||
endif
|
||||
endif
|
||||
DEVICE_PACKAGES := kmod-mt7915-firmware -uboot-envtools
|
||||
endef
|
||||
@ -1371,11 +1373,13 @@ define Device/elecom_wrc-x1800gs
|
||||
fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
|
||||
KERNEL_SIZE := 8192k
|
||||
IMAGE_SIZE := 51456k
|
||||
ifeq ($(IB),)
|
||||
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
|
||||
ARTIFACTS := initramfs-factory.bin
|
||||
ARTIFACT/initramfs-factory.bin := append-image-stage initramfs-kernel.bin | \
|
||||
znet-header 4.04(XVF.1)b90 COMC 0x68 | elecom-product-header WRC-X1800GS | \
|
||||
check-size
|
||||
endif
|
||||
endif
|
||||
DEVICE_PACKAGES := kmod-mt7915-firmware
|
||||
endef
|
||||
@ -1389,11 +1393,13 @@ define Device/elecom_wsc-x1800gs
|
||||
KERNEL_LOADADDR := 0x82000000
|
||||
KERNEL := kernel-bin | relocate-kernel $(loadaddr-y) | lzma | \
|
||||
fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
|
||||
ifeq ($(IB),)
|
||||
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
|
||||
ARTIFACTS := initramfs-factory.bin
|
||||
ARTIFACT/initramfs-factory.bin := append-image-stage initramfs-kernel.bin | \
|
||||
check-size $$$$(KERNEL_SIZE) | elecom-wrc-gs-factory WMC-2LX 0.00 -N | \
|
||||
append-string MT7621_ELECOM_WMC-2LX
|
||||
endif
|
||||
endif
|
||||
DEVICE_PACKAGES := kmod-mt7915-firmware -uboot-envtools
|
||||
endef
|
||||
@ -1466,10 +1472,12 @@ define Device/genexis_pulse-ex400/common
|
||||
--log-lebs=2 --space-fixup --squash-uids
|
||||
KERNEL := kernel-bin | lzma | uImage lzma
|
||||
KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma | uImage lzma
|
||||
ifeq ($(IB),)
|
||||
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
|
||||
IMAGES += factory.bin
|
||||
IMAGE/factory.bin := append-image-stage initramfs-kernel.bin | \
|
||||
inteno-bootfs | inteno-y3-header EX400 | append-md5sum-ascii-salted
|
||||
endif
|
||||
endif
|
||||
IMAGE/sysupgrade.bin := append-kernel | inteno-bootfs | pad-to 10M | \
|
||||
sysupgrade-tar kernel=$$$$@ | check-size | append-metadata
|
||||
@ -1563,10 +1571,12 @@ define Device/haier-sim_wr1800k
|
||||
KERNEL_LOADADDR := 0x82000000
|
||||
KERNEL := kernel-bin | relocate-kernel $(loadaddr-y) | lzma | \
|
||||
fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
|
||||
ifeq ($(IB),)
|
||||
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
|
||||
ARTIFACTS := initramfs-factory.bin
|
||||
ARTIFACT/initramfs-factory.bin := append-image-stage initramfs-kernel.bin | \
|
||||
haier-sim_wr1800k-factory
|
||||
endif
|
||||
endif
|
||||
DEVICE_PACKAGES := kmod-mt7915-firmware
|
||||
endef
|
||||
|
||||
48
target/linux/realtek/dts/rtl9302_zyxel_xgs1210-12-b1.dts
Normal file
48
target/linux/realtek/dts/rtl9302_zyxel_xgs1210-12-b1.dts
Normal file
@ -0,0 +1,48 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
/dts-v1/;
|
||||
|
||||
#include "rtl9302_zyxel_xgs1210-12-common.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "zyxel,xgs1210-12-b1", "realtek,rtl838x-soc";
|
||||
model = "Zyxel XGS1210-12 B1 Switch";
|
||||
};
|
||||
|
||||
&mdio_bus0 {
|
||||
phy24: ethernet-phy@24 {
|
||||
reg = <24>;
|
||||
compatible = "ethernet-phy-ieee802.3-c45";
|
||||
rtl9300,smi-address = <1 1>;
|
||||
// Disabled because we do not know how to bring up again
|
||||
// reset-gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
phy25: ethernet-phy@25 {
|
||||
reg = <25>;
|
||||
compatible = "ethernet-phy-ieee802.3-c45";
|
||||
rtl9300,smi-address = <2 2>;
|
||||
// Disabled because we do not know how to bring up again
|
||||
// reset-gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
|
||||
&switch0 {
|
||||
ports {
|
||||
port@24 {
|
||||
reg = <24>;
|
||||
label = "lan9";
|
||||
pcs-handle = <&serdes6>;
|
||||
phy-handle = <&phy24>;
|
||||
phy-mode = "2500base-x";
|
||||
led-set = <1>;
|
||||
};
|
||||
port@25 {
|
||||
reg = <25>;
|
||||
label = "lan10";
|
||||
pcs-handle = <&serdes7>;
|
||||
phy-handle = <&phy25>;
|
||||
phy-mode = "2500base-x";
|
||||
led-set = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
@ -529,6 +529,7 @@ static int rtl93xx_setup(struct dsa_switch *ds)
|
||||
|
||||
rtl83xx_vlan_setup(priv);
|
||||
|
||||
rtldsa_setup_bpdu_traps(priv);
|
||||
rtldsa_setup_lldp_traps(priv);
|
||||
|
||||
ds->configure_vlan_while_not_filtering = true;
|
||||
@ -1708,15 +1709,20 @@ void rtl83xx_fast_age(struct dsa_switch *ds, int port)
|
||||
mutex_unlock(&priv->reg_mutex);
|
||||
}
|
||||
|
||||
static void rtl931x_fast_age(struct dsa_switch *ds, int port)
|
||||
static void rtldsa_931x_fast_age(struct dsa_switch *ds, int port)
|
||||
{
|
||||
struct rtl838x_switch_priv *priv = ds->priv;
|
||||
u32 val;
|
||||
|
||||
pr_info("%s port %d\n", __func__, port);
|
||||
mutex_lock(&priv->reg_mutex);
|
||||
sw_w32(port << 11, RTL931X_L2_TBL_FLUSH_CTRL + 4);
|
||||
|
||||
sw_w32(BIT(24) | BIT(28), RTL931X_L2_TBL_FLUSH_CTRL);
|
||||
sw_w32(0, RTL931X_L2_TBL_FLUSH_CTRL + 4);
|
||||
|
||||
val = 0;
|
||||
val |= port << 11;
|
||||
val |= BIT(24); /* compare port id */
|
||||
val |= BIT(28); /* status - trigger flush */
|
||||
sw_w32(val, RTL931X_L2_TBL_FLUSH_CTRL);
|
||||
|
||||
do { } while (sw_r32(RTL931X_L2_TBL_FLUSH_CTRL) & BIT (28));
|
||||
|
||||
@ -1728,7 +1734,7 @@ static void rtl930x_fast_age(struct dsa_switch *ds, int port)
|
||||
struct rtl838x_switch_priv *priv = ds->priv;
|
||||
|
||||
if (priv->family_id == RTL9310_FAMILY_ID)
|
||||
return rtl931x_fast_age(ds, port);
|
||||
return rtldsa_931x_fast_age(ds, port);
|
||||
|
||||
pr_debug("FAST AGE port %d\n", port);
|
||||
mutex_lock(&priv->reg_mutex);
|
||||
|
||||
@ -92,3 +92,25 @@ define Device/zyxel_gs1900
|
||||
uImage none | \
|
||||
check-size 6976k
|
||||
endef
|
||||
|
||||
define Device/zyxel_xgs1210-12
|
||||
SOC := rtl9302
|
||||
UIMAGE_MAGIC := 0x93001210
|
||||
ZYXEL_VERS := ABTY
|
||||
DEVICE_VENDOR := Zyxel
|
||||
DEVICE_MODEL := XGS1210-12
|
||||
IMAGE_SIZE := 13312k
|
||||
KERNEL := \
|
||||
kernel-bin | \
|
||||
append-dtb | \
|
||||
rt-compress | \
|
||||
rt-loader | \
|
||||
uImage none
|
||||
KERNEL_INITRAMFS := \
|
||||
kernel-bin | \
|
||||
append-dtb | \
|
||||
rt-compress | \
|
||||
zyxel-vers | \
|
||||
rt-loader | \
|
||||
uImage none
|
||||
endef
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
include ./common.mk
|
||||
|
||||
define Build/xikestor-nosimg
|
||||
$(STAGING_DIR_HOST)/bin/nosimg-enc -i $@ -o $@.new
|
||||
mv $@.new $@
|
||||
@ -97,23 +99,18 @@ endef
|
||||
TARGET_DEVICES += xikestor_sks8310-8x
|
||||
|
||||
define Device/zyxel_xgs1210-12-a1
|
||||
SOC := rtl9302
|
||||
$(Device/zyxel_xgs1210-12)
|
||||
SUPPORTED_DEVICES += zyxel,xgs1210-12
|
||||
UIMAGE_MAGIC := 0x93001210
|
||||
ZYXEL_VERS := ABTY
|
||||
DEVICE_VENDOR := Zyxel
|
||||
DEVICE_MODEL := XGS1210-12
|
||||
DEVICE_VARIANT := A1
|
||||
IMAGE_SIZE := 13312k
|
||||
KERNEL_INITRAMFS := \
|
||||
kernel-bin | \
|
||||
append-dtb | \
|
||||
gzip | \
|
||||
zyxel-vers | \
|
||||
uImage gzip
|
||||
endef
|
||||
TARGET_DEVICES += zyxel_xgs1210-12-a1
|
||||
|
||||
define Device/zyxel_xgs1210-12-b1
|
||||
$(Device/zyxel_xgs1210-12)
|
||||
DEVICE_VARIANT := B1
|
||||
endef
|
||||
TARGET_DEVICES += zyxel_xgs1210-12-b1
|
||||
|
||||
define Device/zyxel_xgs1250-12-common
|
||||
SOC := rtl9302
|
||||
UIMAGE_MAGIC := 0x93001250
|
||||
|
||||
@ -37,6 +37,10 @@ friendlyarm,nanopi-r6s)
|
||||
ucidef_set_led_netdev "lan1" "LAN1" "green:lan-1" "eth1"
|
||||
ucidef_set_led_netdev "lan2" "LAN2" "green:lan-2" "eth0"
|
||||
;;
|
||||
friendlyarm,nanopi-r76s)
|
||||
ucidef_set_led_netdev "wan" "WAN" "green:wan" "eth1"
|
||||
ucidef_set_led_netdev "lan" "LAN" "green:lan" "eth0"
|
||||
;;
|
||||
esac
|
||||
|
||||
board_config_flush
|
||||
|
||||
@ -27,6 +27,7 @@ rockchip_setup_interfaces()
|
||||
;;
|
||||
armsom,sige3|\
|
||||
friendlyarm,nanopi-r5c|\
|
||||
friendlyarm,nanopi-r76s|\
|
||||
lunzn,fastrhino-r66s|\
|
||||
mmbox,anas3035|\
|
||||
radxa,e25|\
|
||||
@ -78,6 +79,7 @@ rockchip_setup_macs()
|
||||
friendlyarm,nanopc-t6|\
|
||||
friendlyarm,nanopi-r2c|\
|
||||
friendlyarm,nanopi-r2s|\
|
||||
friendlyarm,nanopi-r76s|\
|
||||
lunzn,fastrhino-r66s|\
|
||||
lunzn,fastrhino-r68s|\
|
||||
mmbox,anas3035)
|
||||
|
||||
@ -65,6 +65,7 @@ friendlyarm,nanopi-r4s|\
|
||||
friendlyarm,nanopi-r4se|\
|
||||
friendlyarm,nanopi-r4s-enterprise|\
|
||||
friendlyarm,nanopi-r6c|\
|
||||
friendlyarm,nanopi-r76s|\
|
||||
radxa,e52c|\
|
||||
radxa,rock-5-itx|\
|
||||
radxa,rock-5t)
|
||||
|
||||
@ -239,6 +239,15 @@ define Device/friendlyarm_nanopi-r6s
|
||||
endef
|
||||
TARGET_DEVICES += friendlyarm_nanopi-r6s
|
||||
|
||||
define Device/friendlyarm_nanopi-r76s
|
||||
$(Device/rk3576)
|
||||
DEVICE_VENDOR := FriendlyARM
|
||||
DEVICE_MODEL := NanoPi R76S
|
||||
UBOOT_DEVICE_NAME := generic-rk3576
|
||||
DEVICE_PACKAGES := kmod-r8125 kmod-rtw88-8822cs wpad-openssl
|
||||
endef
|
||||
TARGET_DEVICES += friendlyarm_nanopi-r76s
|
||||
|
||||
define Device/huake_guangmiao-g4c
|
||||
$(Device/rk3399)
|
||||
DEVICE_VENDOR := Huake-Cloud
|
||||
|
||||
@ -0,0 +1,50 @@
|
||||
From c3fe7071e196e25789ecf90dbc9e8491a98884d7 Mon Sep 17 00:00:00 2001
|
||||
From: Valmantas Paliksa <walmis@gmail.com>
|
||||
Date: Mon, 30 Jun 2025 19:25:14 -0300
|
||||
Subject: [PATCH] phy: rockchip-pcie: Enable all four lanes if required
|
||||
|
||||
Current code enables only Lane 0 because pwr_cnt will be incremented on
|
||||
first call to the function. Let's reorder the enablement code to enable
|
||||
all 4 lanes through GRF.
|
||||
|
||||
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
|
||||
Reviewed-by: Robin Murphy <robin.murphy@arm.com>
|
||||
|
||||
Signed-off-by: Valmantas Paliksa <walmis@gmail.com>
|
||||
Signed-off-by: Geraldo Nascimento <geraldogabriel@gmail.com>
|
||||
Reviewed-by: Robin Murphy <robin.murphy@arm.com>
|
||||
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
|
||||
Link: https://lore.kernel.org/r/16b610aab34e069fd31d9f57260c10df2a968f80.1751322015.git.geraldogabriel@gmail.com
|
||||
Signed-off-by: Vinod Koul <vkoul@kernel.org>
|
||||
---
|
||||
drivers/phy/rockchip/phy-rockchip-pcie.c | 12 ++++++------
|
||||
1 file changed, 6 insertions(+), 6 deletions(-)
|
||||
|
||||
--- a/drivers/phy/rockchip/phy-rockchip-pcie.c
|
||||
+++ b/drivers/phy/rockchip/phy-rockchip-pcie.c
|
||||
@@ -165,6 +165,12 @@ static int rockchip_pcie_phy_power_on(st
|
||||
|
||||
mutex_lock(&rk_phy->pcie_mutex);
|
||||
|
||||
+ regmap_write(rk_phy->reg_base,
|
||||
+ rk_phy->phy_data->pcie_laneoff,
|
||||
+ HIWORD_UPDATE(!PHY_LANE_IDLE_OFF,
|
||||
+ PHY_LANE_IDLE_MASK,
|
||||
+ PHY_LANE_IDLE_A_SHIFT + inst->index));
|
||||
+
|
||||
if (rk_phy->pwr_cnt++)
|
||||
goto err_out;
|
||||
|
||||
@@ -179,12 +185,6 @@ static int rockchip_pcie_phy_power_on(st
|
||||
PHY_CFG_ADDR_MASK,
|
||||
PHY_CFG_ADDR_SHIFT));
|
||||
|
||||
- regmap_write(rk_phy->reg_base,
|
||||
- rk_phy->phy_data->pcie_laneoff,
|
||||
- HIWORD_UPDATE(!PHY_LANE_IDLE_OFF,
|
||||
- PHY_LANE_IDLE_MASK,
|
||||
- PHY_LANE_IDLE_A_SHIFT + inst->index));
|
||||
-
|
||||
/*
|
||||
* No documented timeout value for phy operation below,
|
||||
* so we make it large enough here. And we use loop-break
|
||||
@ -0,0 +1,902 @@
|
||||
From 7fee88882704a5ed7657f467ecb44e39b20f42aa Mon Sep 17 00:00:00 2001
|
||||
From: Tianling Shen <cnsztl@gmail.com>
|
||||
Date: Sat, 27 Sep 2025 17:23:10 +0800
|
||||
Subject: [PATCH] arm64: dts: rockchip: Add devicetree for the FriendlyElec
|
||||
NanoPi R76S
|
||||
|
||||
The NanoPi R76S (as "R76S") is an open-sourced mini IoT gateway
|
||||
device with two 2.5G, designed and developed by FriendlyElec.
|
||||
|
||||
Specification:
|
||||
- Rockchip RK3576
|
||||
- 2/4GB LPDDR4X RAM
|
||||
- 2x 2500Base-T (PCIe, rtl8125b)
|
||||
- 3x LEDs (Power, LAN, WAN)
|
||||
- 32GB eMMC
|
||||
- MicroSD Slot
|
||||
- MDMI 1.4/2.0 OUT
|
||||
- M.2 E-Key SDIO slot
|
||||
- USB 3.0 Port
|
||||
- USB Type-C 5V Power
|
||||
|
||||
Signed-off-by: Tianling Shen <cnsztl@gmail.com>
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/Makefile | 1 +
|
||||
.../arm64/boot/dts/rockchip/rk3576-nanopi-r76s.dts | 860 +++++++++++++++++++++
|
||||
2 files changed, 861 insertions(+)
|
||||
create mode 100644 arch/arm64/boot/dts/rockchip/rk3576-nanopi-r76s.dts
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/Makefile
|
||||
+++ b/arch/arm64/boot/dts/rockchip/Makefile
|
||||
@@ -125,6 +125,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-ro
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-wolfvision-pf5.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-wolfvision-pf5-display-vz.dtbo
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-wolfvision-pf5-io-expander.dtbo
|
||||
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-nanopi-r76s.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3576-rock-4d.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3582-radxa-e52c.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-armsom-sige7.dtb
|
||||
--- /dev/null
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3576-nanopi-r76s.dts
|
||||
@@ -0,0 +1,860 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
+/*
|
||||
+ * Copyright (c) 2025 FriendlyElec Computer Tech. Co., Ltd.
|
||||
+ * (http://www.friendlyelec.com)
|
||||
+ *
|
||||
+ * Copyright (c) 2025 Tianling Shen <cnsztl@gmail.com>
|
||||
+ */
|
||||
+
|
||||
+/dts-v1/;
|
||||
+#include <dt-bindings/gpio/gpio.h>
|
||||
+#include <dt-bindings/input/input.h>
|
||||
+#include <dt-bindings/leds/common.h>
|
||||
+#include <dt-bindings/pinctrl/rockchip.h>
|
||||
+#include <dt-bindings/soc/rockchip,vop2.h>
|
||||
+
|
||||
+#include "rk3576.dtsi"
|
||||
+
|
||||
+/ {
|
||||
+ model = "FriendlyElec NanoPi R76S";
|
||||
+ compatible = "friendlyarm,nanopi-r76s", "rockchip,rk3576";
|
||||
+
|
||||
+ aliases {
|
||||
+ mmc0 = &sdhci;
|
||||
+ mmc1 = &sdmmc;
|
||||
+ mmc2 = &sdio;
|
||||
+ };
|
||||
+
|
||||
+ chosen {
|
||||
+ stdout-path = "serial0:1500000n8";
|
||||
+ };
|
||||
+
|
||||
+ gpio-keys {
|
||||
+ compatible = "gpio-keys";
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&user_but_pin>;
|
||||
+
|
||||
+ button-reset {
|
||||
+ label = "reset";
|
||||
+ gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_LOW>;
|
||||
+ debounce-interval = <50>;
|
||||
+ linux,code = <KEY_RESTART>;
|
||||
+ wakeup-source;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ gpio-leds {
|
||||
+ compatible = "gpio-leds";
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&led1_h>, <&led_sys_h>, <&led2_h>;
|
||||
+
|
||||
+ led-0 {
|
||||
+ color = <LED_COLOR_ID_GREEN>;
|
||||
+ function = LED_FUNCTION_LAN;
|
||||
+ gpios = <&gpio2 RK_PB0 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+
|
||||
+ led-1 {
|
||||
+ color = <LED_COLOR_ID_RED>;
|
||||
+ function = LED_FUNCTION_POWER;
|
||||
+ gpios = <&gpio2 RK_PB3 GPIO_ACTIVE_HIGH>;
|
||||
+ linux,default-trigger = "heartbeat";
|
||||
+ };
|
||||
+
|
||||
+ led-2 {
|
||||
+ color = <LED_COLOR_ID_GREEN>;
|
||||
+ function = LED_FUNCTION_WAN;
|
||||
+ gpios = <&gpio4 RK_PC5 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ hdmi-con {
|
||||
+ compatible = "hdmi-connector";
|
||||
+ hdmi-pwr-supply = <&vcc5v_hdmi_tx>;
|
||||
+ type = "a";
|
||||
+
|
||||
+ port {
|
||||
+ hdmi_con_in: endpoint {
|
||||
+ remote-endpoint = <&hdmi_out_con>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ sdio_pwrseq: sdio-pwrseq {
|
||||
+ compatible = "mmc-pwrseq-simple";
|
||||
+ clocks = <&hym8563>;
|
||||
+ clock-names = "ext_clock";
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&wifi_reg_on_h>;
|
||||
+ post-power-on-delay-ms = <200>;
|
||||
+ reset-gpios = <&gpio1 RK_PC2 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+
|
||||
+ vcc3v3_rtc_s5: regulator-vcc3v3-rtc-s5 {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-name = "vcc3v3_rtc_s5";
|
||||
+ vin-supply = <&vcc5v0_sys_s5>;
|
||||
+ };
|
||||
+
|
||||
+ vcc5v_dcin: regulator-vcc5v-dcin {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5000000>;
|
||||
+ regulator-name = "vcc5v_dcin";
|
||||
+ };
|
||||
+
|
||||
+ vcc5v_hdmi_tx: regulator-vcc5v-hdmi-tx {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ enable-active-high;
|
||||
+ gpios = <&gpio4 RK_PC6 GPIO_ACTIVE_HIGH>;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&hdmi_tx_on_h>;
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5000000>;
|
||||
+ regulator-name = "vcc5v_hdmi_tx";
|
||||
+ vin-supply = <&vcc5v0_sys_s5>;
|
||||
+ };
|
||||
+
|
||||
+ vcc5v0_device_s0: regulator-vcc5v0-device-s0 {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5000000>;
|
||||
+ regulator-name = "vcc5v0_device_s0";
|
||||
+ vin-supply = <&vcc5v_dcin>;
|
||||
+ };
|
||||
+
|
||||
+ vcc5v0_sys_s5: regulator-vcc5v0-sys-s5 {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5000000>;
|
||||
+ regulator-name = "vcc5v0_sys_s5";
|
||||
+ vin-supply = <&vcc5v_dcin>;
|
||||
+ };
|
||||
+
|
||||
+ vcc5v0_usb_otg0: regulator-vcc5v0-usb-otg0 {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ enable-active-high;
|
||||
+ gpios = <&gpio0 RK_PD1 GPIO_ACTIVE_HIGH>;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&usb_otg0_pwren_h>;
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5000000>;
|
||||
+ regulator-name = "vcc5v0_usb_otg0";
|
||||
+ vin-supply = <&vcc5v0_sys_s5>;
|
||||
+ };
|
||||
+
|
||||
+ vcc_1v1_nldo_s3: regulator-vcc-1v1-nldo-s3 {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <1100000>;
|
||||
+ regulator-max-microvolt = <1100000>;
|
||||
+ regulator-name = "vcc_1v1_nldo_s3";
|
||||
+ vin-supply = <&vcc5v0_sys_s5>;
|
||||
+ };
|
||||
+
|
||||
+ vcc_1v8_s0: regulator-vcc-1v8-s0 {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-name = "vcc_1v8_s0";
|
||||
+ vin-supply = <&vcc_1v8_s3>;
|
||||
+ };
|
||||
+
|
||||
+ vcc_2v0_pldo_s3: regulator-vcc-2v0-pldo-s3 {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <2000000>;
|
||||
+ regulator-max-microvolt = <2000000>;
|
||||
+ regulator-name = "vcc_2v0_pldo_s3";
|
||||
+ vin-supply = <&vcc5v0_sys_s5>;
|
||||
+ };
|
||||
+
|
||||
+ vcc_3v3_s0: regulator-vcc-3v3-s0 {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-name = "vcc_3v3_s0";
|
||||
+ vin-supply = <&vcc_3v3_s3>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&combphy0_ps {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&combphy1_psu {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&cpu_b0 {
|
||||
+ cpu-supply = <&vdd_cpu_big_s0>;
|
||||
+};
|
||||
+
|
||||
+&cpu_b1 {
|
||||
+ cpu-supply = <&vdd_cpu_big_s0>;
|
||||
+};
|
||||
+
|
||||
+&cpu_b2 {
|
||||
+ cpu-supply = <&vdd_cpu_big_s0>;
|
||||
+};
|
||||
+
|
||||
+&cpu_b3 {
|
||||
+ cpu-supply = <&vdd_cpu_big_s0>;
|
||||
+};
|
||||
+
|
||||
+&cpu_l0 {
|
||||
+ cpu-supply = <&vdd_cpu_lit_s0>;
|
||||
+};
|
||||
+
|
||||
+&cpu_l1 {
|
||||
+ cpu-supply = <&vdd_cpu_lit_s0>;
|
||||
+};
|
||||
+
|
||||
+&cpu_l2 {
|
||||
+ cpu-supply = <&vdd_cpu_lit_s0>;
|
||||
+};
|
||||
+
|
||||
+&cpu_l3 {
|
||||
+ cpu-supply = <&vdd_cpu_lit_s0>;
|
||||
+};
|
||||
+
|
||||
+&gpu {
|
||||
+ mali-supply = <&vdd_gpu_s0>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&hdmi {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&hdmi_in {
|
||||
+ hdmi_in_vp0: endpoint {
|
||||
+ remote-endpoint = <&vp0_out_hdmi>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&hdmi_out {
|
||||
+ hdmi_out_con: endpoint {
|
||||
+ remote-endpoint = <&hdmi_con_in>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&hdmi_sound {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&hdptxphy {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&i2c1 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ pmic@23 {
|
||||
+ compatible = "rockchip,rk806";
|
||||
+ reg = <0x23>;
|
||||
+ #gpio-cells = <2>;
|
||||
+ gpio-controller;
|
||||
+ interrupt-parent = <&gpio0>;
|
||||
+ interrupts = <6 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pmic_pins>, <&rk806_dvs1_null>,
|
||||
+ <&rk806_dvs2_null>, <&rk806_dvs3_null>;
|
||||
+ system-power-controller;
|
||||
+
|
||||
+ vcc1-supply = <&vcc5v0_sys_s5>;
|
||||
+ vcc2-supply = <&vcc5v0_sys_s5>;
|
||||
+ vcc3-supply = <&vcc5v0_sys_s5>;
|
||||
+ vcc4-supply = <&vcc5v0_sys_s5>;
|
||||
+ vcc5-supply = <&vcc5v0_sys_s5>;
|
||||
+ vcc6-supply = <&vcc5v0_sys_s5>;
|
||||
+ vcc7-supply = <&vcc5v0_sys_s5>;
|
||||
+ vcc8-supply = <&vcc5v0_sys_s5>;
|
||||
+ vcc9-supply = <&vcc5v0_sys_s5>;
|
||||
+ vcc10-supply = <&vcc5v0_sys_s5>;
|
||||
+ vcc11-supply = <&vcc_2v0_pldo_s3>;
|
||||
+ vcc12-supply = <&vcc5v0_sys_s5>;
|
||||
+ vcc13-supply = <&vcc_1v1_nldo_s3>;
|
||||
+ vcc14-supply = <&vcc_1v1_nldo_s3>;
|
||||
+ vcca-supply = <&vcc5v0_sys_s5>;
|
||||
+
|
||||
+ rk806_dvs1_null: dvs1-null-pins {
|
||||
+ pins = "gpio_pwrctrl1";
|
||||
+ function = "pin_fun0";
|
||||
+ };
|
||||
+
|
||||
+ rk806_dvs1_pwrdn: dvs1-pwrdn-pins {
|
||||
+ pins = "gpio_pwrctrl1";
|
||||
+ function = "pin_fun2";
|
||||
+ };
|
||||
+
|
||||
+ rk806_dvs1_rst: dvs1-rst-pins {
|
||||
+ pins = "gpio_pwrctrl1";
|
||||
+ function = "pin_fun3";
|
||||
+ };
|
||||
+
|
||||
+ rk806_dvs1_slp: dvs1-slp-pins {
|
||||
+ pins = "gpio_pwrctrl1";
|
||||
+ function = "pin_fun1";
|
||||
+ };
|
||||
+
|
||||
+ rk806_dvs2_dvs: dvs2-dvs-pins {
|
||||
+ pins = "gpio_pwrctrl2";
|
||||
+ function = "pin_fun4";
|
||||
+ };
|
||||
+
|
||||
+ rk806_dvs2_gpio: dvs2-gpio-pins {
|
||||
+ pins = "gpio_pwrctrl2";
|
||||
+ function = "pin_fun5";
|
||||
+ };
|
||||
+
|
||||
+ rk806_dvs2_null: dvs2-null-pins {
|
||||
+ pins = "gpio_pwrctrl2";
|
||||
+ function = "pin_fun0";
|
||||
+ };
|
||||
+
|
||||
+ rk806_dvs2_pwrdn: dvs2-pwrdn-pins {
|
||||
+ pins = "gpio_pwrctrl2";
|
||||
+ function = "pin_fun2";
|
||||
+ };
|
||||
+
|
||||
+ rk806_dvs2_rst: dvs2-rst-pins {
|
||||
+ pins = "gpio_pwrctrl2";
|
||||
+ function = "pin_fun3";
|
||||
+ };
|
||||
+
|
||||
+ rk806_dvs2_slp: dvs2-slp-pins {
|
||||
+ pins = "gpio_pwrctrl2";
|
||||
+ function = "pin_fun1";
|
||||
+ };
|
||||
+
|
||||
+ rk806_dvs3_dvs: dvs3-dvs-pins {
|
||||
+ pins = "gpio_pwrctrl3";
|
||||
+ function = "pin_fun4";
|
||||
+ };
|
||||
+
|
||||
+ rk806_dvs3_gpio: dvs3-gpio-pins {
|
||||
+ pins = "gpio_pwrctrl3";
|
||||
+ function = "pin_fun5";
|
||||
+ };
|
||||
+
|
||||
+ rk806_dvs3_null: dvs3-null-pins {
|
||||
+ pins = "gpio_pwrctrl3";
|
||||
+ function = "pin_fun0";
|
||||
+ };
|
||||
+
|
||||
+ rk806_dvs3_pwrdn: dvs3-pwrdn-pins {
|
||||
+ pins = "gpio_pwrctrl3";
|
||||
+ function = "pin_fun2";
|
||||
+ };
|
||||
+
|
||||
+ rk806_dvs3_rst: dvs3-rst-pins {
|
||||
+ pins = "gpio_pwrctrl3";
|
||||
+ function = "pin_fun3";
|
||||
+ };
|
||||
+
|
||||
+ rk806_dvs3_slp: dvs3-slp-pins {
|
||||
+ pins = "gpio_pwrctrl3";
|
||||
+ function = "pin_fun1";
|
||||
+ };
|
||||
+
|
||||
+ regulators {
|
||||
+ vdd_cpu_big_s0: dcdc-reg1 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-enable-ramp-delay = <400>;
|
||||
+ regulator-min-microvolt = <550000>;
|
||||
+ regulator-max-microvolt = <950000>;
|
||||
+ regulator-name = "vdd_cpu_big_s0";
|
||||
+ regulator-ramp-delay = <12500>;
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vdd_npu_s0: dcdc-reg2 {
|
||||
+ regulator-boot-on;
|
||||
+ regulator-enable-ramp-delay = <400>;
|
||||
+ regulator-min-microvolt = <550000>;
|
||||
+ regulator-max-microvolt = <950000>;
|
||||
+ regulator-name = "vdd_npu_s0";
|
||||
+ regulator-ramp-delay = <12500>;
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vdd_cpu_lit_s0: dcdc-reg3 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <550000>;
|
||||
+ regulator-max-microvolt = <950000>;
|
||||
+ regulator-name = "vdd_cpu_lit_s0";
|
||||
+ regulator-ramp-delay = <12500>;
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ regulator-suspend-microvolt = <750000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc_3v3_s3: dcdc-reg4 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-name = "vcc_3v3_s3";
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-suspend-microvolt = <3300000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vdd_gpu_s0: dcdc-reg5 {
|
||||
+ regulator-boot-on;
|
||||
+ regulator-enable-ramp-delay = <400>;
|
||||
+ regulator-min-microvolt = <550000>;
|
||||
+ regulator-max-microvolt = <900000>;
|
||||
+ regulator-name = "vdd_gpu_s0";
|
||||
+ regulator-ramp-delay = <12500>;
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ regulator-suspend-microvolt = <850000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vddq_ddr_s0: dcdc-reg6 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-name = "vddq_ddr_s0";
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vdd_logic_s0: dcdc-reg7 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <550000>;
|
||||
+ regulator-max-microvolt = <800000>;
|
||||
+ regulator-name = "vdd_logic_s0";
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc_1v8_s3: dcdc-reg8 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-name = "vcc_1v8_s3";
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-suspend-microvolt = <1800000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vdd2_ddr_s3: dcdc-reg9 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-name = "vdd2_ddr_s3";
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vdd_ddr_s0: dcdc-reg10 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <550000>;
|
||||
+ regulator-max-microvolt = <1200000>;
|
||||
+ regulator-name = "vdd_ddr_s0";
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcca_1v8_s0: pldo-reg1 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-name = "vcca_1v8_s0";
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcca1v8_pldo2_s0: pldo-reg2 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-name = "vcca1v8_pldo2_s0";
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vdda_1v2_s0: pldo-reg3 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <1200000>;
|
||||
+ regulator-max-microvolt = <1200000>;
|
||||
+ regulator-name = "vdda_1v2_s0";
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcca_3v3_s0: pldo-reg4 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-name = "vcca_3v3_s0";
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vccio_sd_s0: pldo-reg5 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-name = "vccio_sd_s0";
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcca1v8_pldo6_s3: pldo-reg6 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-name = "vcca1v8_pldo6_s3";
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-suspend-microvolt = <1800000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vdd_0v75_s3: nldo-reg1 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <750000>;
|
||||
+ regulator-max-microvolt = <750000>;
|
||||
+ regulator-name = "vdd_0v75_s3";
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-suspend-microvolt = <750000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vdda_ddr_pll_s0: nldo-reg2 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <850000>;
|
||||
+ regulator-max-microvolt = <850000>;
|
||||
+ regulator-name = "vdda_ddr_pll_s0";
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vdda0v75_hdmi_s0: nldo-reg3 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <837500>;
|
||||
+ regulator-max-microvolt = <837500>;
|
||||
+ regulator-name = "vdda0v75_hdmi_s0";
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vdda_0v85_s0: nldo-reg4 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <850000>;
|
||||
+ regulator-max-microvolt = <850000>;
|
||||
+ regulator-name = "vdda_0v85_s0";
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vdda_0v75_s0: nldo-reg5 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <750000>;
|
||||
+ regulator-max-microvolt = <750000>;
|
||||
+ regulator-name = "vdda_0v75_s0";
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&i2c2 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ hym8563: rtc@51 {
|
||||
+ compatible = "haoyu,hym8563";
|
||||
+ reg = <0x51>;
|
||||
+ #clock-cells = <0>;
|
||||
+ clock-output-names = "hym8563";
|
||||
+ interrupt-parent = <&gpio0>;
|
||||
+ interrupts = <RK_PA5 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&rtc_int_l>;
|
||||
+ wakeup-source;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&pcie0 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pcie0_perstn>;
|
||||
+ reset-gpios = <&gpio2 RK_PB4 GPIO_ACTIVE_HIGH>;
|
||||
+ vpcie3v3-supply = <&vcc_3v3_s3>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pcie1 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pcie1_perstn>;
|
||||
+ reset-gpios = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>;
|
||||
+ vpcie3v3-supply = <&vcc_3v3_s3>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pinctrl {
|
||||
+ bt {
|
||||
+ bt_reg_on_h: bt-reg-on-h {
|
||||
+ rockchip,pins = <3 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
+ };
|
||||
+
|
||||
+ bt_wake_host_h: bt-wake-host-h {
|
||||
+ rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||
+ };
|
||||
+
|
||||
+ host_wake_bt_h: host-wake-bt-h {
|
||||
+ rockchip,pins = <3 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ gpio-keys {
|
||||
+ user_but_pin: user-but-pin {
|
||||
+ rockchip,pins = <4 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ gpio-leds {
|
||||
+ led_sys_h: led-sys-h {
|
||||
+ rockchip,pins = <2 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+
|
||||
+ led1_h: led1-h {
|
||||
+ rockchip,pins = <2 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+
|
||||
+ led2_h: led2-h {
|
||||
+ rockchip,pins = <4 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ hdmi {
|
||||
+ hdmi_tx_on_h: hdmi-tx-on-h {
|
||||
+ rockchip,pins = <4 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ hym8563 {
|
||||
+ rtc_int_l: rtc-int-l {
|
||||
+ rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ pcie {
|
||||
+ pcie0_perstn: pcie0-perstn {
|
||||
+ rockchip,pins = <2 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
+ };
|
||||
+
|
||||
+ pcie1_perstn: pcie1-perstn {
|
||||
+ rockchip,pins = <0 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ usb {
|
||||
+ usb_otg0_pwren_h: usb-otg0-pwren-h {
|
||||
+ rockchip,pins = <0 RK_PD1 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ wifi {
|
||||
+ wifi_wake_host_h: wifi-wake-host-h {
|
||||
+ rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||
+ };
|
||||
+
|
||||
+ wifi_reg_on_h: wifi-reg-on-h {
|
||||
+ rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&sai6 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&sdmmc {
|
||||
+ bus-width = <4>;
|
||||
+ cap-mmc-highspeed;
|
||||
+ cap-sd-highspeed;
|
||||
+ disable-wp;
|
||||
+ no-mmc;
|
||||
+ no-sdio;
|
||||
+ sd-uhs-sdr104;
|
||||
+ vmmc-supply = <&vcc_3v3_s3>;
|
||||
+ vqmmc-supply = <&vccio_sd_s0>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&sdio {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ bus-width = <4>;
|
||||
+ cap-sd-highspeed;
|
||||
+ cap-sdio-irq;
|
||||
+ disable-wp;
|
||||
+ keep-power-in-suspend;
|
||||
+ mmc-pwrseq = <&sdio_pwrseq>;
|
||||
+ no-mmc;
|
||||
+ no-sd;
|
||||
+ non-removable;
|
||||
+ sd-uhs-sdr104;
|
||||
+ vmmc-supply = <&vcc_3v3_s3>;
|
||||
+ vqmmc-supply = <&vcc_1v8_s3>;
|
||||
+ wakeup-source;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ rtl8822cs: wifi@1 {
|
||||
+ reg = <1>;
|
||||
+ interrupt-parent = <&gpio0>;
|
||||
+ interrupts = <RK_PB0 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ interrupt-names = "host-wake";
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&wifi_wake_host_h>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&sdhci {
|
||||
+ bus-width = <8>;
|
||||
+ cap-mmc-highspeed;
|
||||
+ full-pwr-cycle-in-suspend;
|
||||
+ mmc-hs400-1_8v;
|
||||
+ mmc-hs400-enhanced-strobe;
|
||||
+ no-sdio;
|
||||
+ no-sd;
|
||||
+ non-removable;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&saradc {
|
||||
+ vref-supply = <&vcca_1v8_s0>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&u2phy0 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&u2phy0_otg {
|
||||
+ phy-supply = <&vcc5v0_usb_otg0>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&uart0 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&uart5 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&uart5m0_xfer &uart5m0_ctsn &uart5m0_rtsn>;
|
||||
+ uart-has-rtscts;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ bluetooth {
|
||||
+ compatible = "realtek,rtl8822cs-bt";
|
||||
+ enable-gpios = <&gpio3 RK_PC7 GPIO_ACTIVE_HIGH>;
|
||||
+ device-wake-gpios = <&gpio3 RK_PD0 GPIO_ACTIVE_HIGH>;
|
||||
+ host-wake-gpios = <&gpio0 RK_PB1 GPIO_ACTIVE_HIGH>;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&bt_wake_host_h &host_wake_bt_h &bt_reg_on_h>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&usbdp_phy {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb_drd0_dwc3 {
|
||||
+ dr_mode = "host";
|
||||
+ extcon = <&u2phy0>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&vop {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&vop_mmu {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&vp0 {
|
||||
+ vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
|
||||
+ reg = <ROCKCHIP_VOP2_EP_HDMI0>;
|
||||
+ remote-endpoint = <&hdmi_in_vp0>;
|
||||
+ };
|
||||
+};
|
||||
@ -545,6 +545,33 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
|
||||
};
|
||||
};
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3576-nanopi-r76s.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3576-nanopi-r76s.dts
|
||||
@@ -23,6 +23,11 @@
|
||||
mmc0 = &sdhci;
|
||||
mmc1 = &sdmmc;
|
||||
mmc2 = &sdio;
|
||||
+
|
||||
+ led-boot = &power_led;
|
||||
+ led-failsafe = &power_led;
|
||||
+ led-running = &power_led;
|
||||
+ led-upgrade = &power_led;
|
||||
};
|
||||
|
||||
chosen {
|
||||
@@ -54,11 +59,10 @@
|
||||
gpios = <&gpio2 RK_PB0 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
- led-1 {
|
||||
+ power_led: led-1 {
|
||||
color = <LED_COLOR_ID_RED>;
|
||||
function = LED_FUNCTION_POWER;
|
||||
gpios = <&gpio2 RK_PB3 GPIO_ACTIVE_HIGH>;
|
||||
- linux,default-trigger = "heartbeat";
|
||||
};
|
||||
|
||||
led-2 {
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3576-rock-4d.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3576-rock-4d.dts
|
||||
@@ -18,6 +18,10 @@
|
||||
|
||||
@ -414,6 +414,52 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
|
||||
};
|
||||
};
|
||||
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3576-nanopi-r76s.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3576-nanopi-r76s.dts
|
||||
@@ -663,6 +663,21 @@
|
||||
reset-gpios = <&gpio2 RK_PB4 GPIO_ACTIVE_HIGH>;
|
||||
vpcie3v3-supply = <&vcc_3v3_s3>;
|
||||
status = "okay";
|
||||
+
|
||||
+ pcie@0,0 {
|
||||
+ reg = <0x00000000 0 0 0 0>;
|
||||
+ #address-cells = <3>;
|
||||
+ #size-cells = <2>;
|
||||
+ device_type = "pci";
|
||||
+
|
||||
+ pcie@0,0 {
|
||||
+ compatible = "pci10ec,8125";
|
||||
+ reg = <0x000000 0 0 0 0>;
|
||||
+
|
||||
+ realtek,led-data = <0x0 0x0 0x200 0x2b>;
|
||||
+ label = "eth0";
|
||||
+ };
|
||||
+ };
|
||||
};
|
||||
|
||||
&pcie1 {
|
||||
@@ -671,6 +686,21 @@
|
||||
reset-gpios = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>;
|
||||
vpcie3v3-supply = <&vcc_3v3_s3>;
|
||||
status = "okay";
|
||||
+
|
||||
+ pcie@0,0 {
|
||||
+ reg = <0x00200000 0 0 0 0>;
|
||||
+ #address-cells = <3>;
|
||||
+ #size-cells = <2>;
|
||||
+ device_type = "pci";
|
||||
+
|
||||
+ pcie@20,0 {
|
||||
+ compatible = "pci10ec,8125";
|
||||
+ reg = <0x000000 0 0 0 0>;
|
||||
+
|
||||
+ realtek,led-data = <0x0 0x0 0x200 0x2b>;
|
||||
+ label = "eth1";
|
||||
+ };
|
||||
+ };
|
||||
};
|
||||
|
||||
&pinctrl {
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3588-armsom-sige7.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3588-armsom-sige7.dts
|
||||
@@ -267,6 +267,19 @@
|
||||
|
||||
@ -0,0 +1,24 @@
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3308.dtsi
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3308.dtsi
|
||||
@@ -607,6 +607,21 @@
|
||||
#dma-cells = <1>;
|
||||
};
|
||||
|
||||
+ rng: rng@ff2f0400 {
|
||||
+ compatible = "rockchip,cryptov2-rng";
|
||||
+ reg = <0x0 0xff2f0400 0x0 0x80>;
|
||||
+ clocks = <&cru SCLK_CRYPTO>, <&cru SCLK_CRYPTO_APK>,
|
||||
+ <&cru ACLK_CRYPTO>, <&cru HCLK_CRYPTO>;
|
||||
+ clock-names = "clk_crypto", "clk_crypto_apk",
|
||||
+ "aclk_crypto", "hclk_crypto";
|
||||
+ assigned-clocks = <&cru SCLK_CRYPTO>, <&cru SCLK_CRYPTO_APK>,
|
||||
+ <&cru ACLK_CRYPTO>, <&cru HCLK_CRYPTO>;
|
||||
+ assigned-clock-rates = <150000000>, <150000000>,
|
||||
+ <200000000>, <100000000>;
|
||||
+ resets = <&cru SRST_CRYPTO>;
|
||||
+ reset-names = "reset";
|
||||
+ };
|
||||
+
|
||||
/*
|
||||
* - can be clock producer or consumer
|
||||
* - up to 8 capture channels and 2 playback channels
|
||||
Loading…
Reference in New Issue
Block a user