Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
commit
e45c90cd26
@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-5.15 = .135
|
||||
LINUX_KERNEL_HASH-5.15.135 = 14835e629e237f136cfed484fdb533c95242429809bdcdb2a2d66dfcb7447170
|
||||
LINUX_VERSION-5.15 = .136
|
||||
LINUX_KERNEL_HASH-5.15.136 = c624b9fe7ee4708d34cfd0b7ebc58037afac7463338cc498641ea31c55eeacb8
|
||||
|
@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-6.1 = .59
|
||||
LINUX_KERNEL_HASH-6.1.59 = 627f7724c675036639290fb5c39e3fdeb3d566b80b192c45f4a808ab54c8c0a0
|
||||
LINUX_VERSION-6.1 = .60
|
||||
LINUX_KERNEL_HASH-6.1.60 = 58520e7ae5a6af254ddf7ddbfc42e4373b0d36c67d467f6e35a3bd1672f5fb0a
|
||||
|
@ -168,7 +168,7 @@ define Kernel/CompileImage/Initramfs
|
||||
$(if $(SOURCE_DATE_EPOCH),touch -hcd "@$(SOURCE_DATE_EPOCH)" $(TARGET_DIR) $(TARGET_DIR)/init)
|
||||
rm -rf $(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION)/usr/initramfs_data.cpio*
|
||||
ifeq ($(CONFIG_TARGET_ROOTFS_INITRAMFS_SEPARATE),y)
|
||||
ifneq ($(qstrip $(CONFIG_EXTERNAL_CPIO)),)
|
||||
ifneq ($(call qstrip,$(CONFIG_EXTERNAL_CPIO)),)
|
||||
$(CP) $(CONFIG_EXTERNAL_CPIO) $(KERNEL_BUILD_DIR)/initrd.cpio
|
||||
else
|
||||
( cd $(TARGET_DIR); find . | LC_ALL=C sort | $(STAGING_DIR_HOST)/bin/cpio --reproducible -o -H newc -R 0:0 > $(KERNEL_BUILD_DIR)/initrd.cpio )
|
||||
|
@ -40,6 +40,14 @@ append() {
|
||||
eval "export ${NO_EXPORT:+-n} -- \"$var=\${$var:+\${$var}\${value:+\$sep}}\$value\""
|
||||
}
|
||||
|
||||
prepend() {
|
||||
local var="$1"
|
||||
local value="$2"
|
||||
local sep="${3:- }"
|
||||
|
||||
eval "export ${NO_EXPORT:+-n} -- \"$var=\${$value:+\${$value}\$sep}\$var\""
|
||||
}
|
||||
|
||||
list_contains() {
|
||||
local var="$1"
|
||||
local str="$2"
|
||||
|
77
package/firmware/ixp4xx-microcode/Makefile
Normal file
77
package/firmware/ixp4xx-microcode/Makefile
Normal file
@ -0,0 +1,77 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
# Copyright (C) 2007-2023 OpenWrt.org
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=ixp4xx-microcode
|
||||
PKG_VERSION:=2.4
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=IPL_ixp400NpeLibraryWithCrypto-2_4.zip
|
||||
PKG_SOURCE_URL:=http://downloads.openwrt.org/sources
|
||||
PKG_HASH:=1b1170d0657847248589d946048c0aeaa9cd671966fc5bec5933283309485eaa
|
||||
|
||||
PKG_FLAGS:=nonshared
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
# Ethernet or WAN support, pick one
|
||||
define Package/ixp4xx-microcode-ethernet
|
||||
SECTION:=firmware
|
||||
CATEGORY:=Firmware
|
||||
TITLE:=IXP4xx ethernet firmware
|
||||
DEPENDS:=@TARGET_ixp4xx
|
||||
endef
|
||||
define Package/ixp4xx-microcode-wan
|
||||
SECTION:=firmware
|
||||
CATEGORY:=Firmware
|
||||
TITLE:=IXP4xx WAN firmware
|
||||
DEPENDS:=@TARGET_ixp4xx
|
||||
endef
|
||||
|
||||
define Package/ixp4xx-microcode-ethernet/description
|
||||
This package contains the microcode needed to use the network engines in
|
||||
IXP4xx CPUs for ethernet on all three NPEs.
|
||||
endef
|
||||
define Package/ixp4xx-microcode-wan/description
|
||||
This package contains the microcode needed to use the network engines in
|
||||
IXP4xx CPUs for ethernet on NPE-A and NPE-B and WAN (HSS) on NPE-C.
|
||||
endef
|
||||
|
||||
define Build/Prepare
|
||||
rm -rf $(PKG_BUILD_DIR)
|
||||
mkdir -p $(PKG_BUILD_DIR)
|
||||
unzip -d $(PKG_BUILD_DIR)/ $(DL_DIR)/$(PKG_SOURCE)
|
||||
mv $(PKG_BUILD_DIR)/ixp400_xscale_sw/src/npeDl/IxNpeMicrocode.c $(PKG_BUILD_DIR)/
|
||||
rm -rf $(PKG_BUILD_DIR)/ixp400_xscale_sw
|
||||
$(CP) ./src/* $(PKG_BUILD_DIR)/
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
(cd $(PKG_BUILD_DIR); \
|
||||
$(HOSTCC) -Wall -I$(STAGING_DIR_HOST)/include IxNpeMicrocode.c -o IxNpeMicrocode; \
|
||||
./IxNpeMicrocode -be \
|
||||
)
|
||||
endef
|
||||
|
||||
define Package/ixp4xx-microcode-ethernet/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware
|
||||
$(INSTALL_DIR) $(1)/usr/share/doc
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/NPE-A $(1)/lib/firmware/
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/NPE-B $(1)/lib/firmware/
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/NPE-C $(1)/lib/firmware/
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/LICENSE.IPL $(1)/usr/share/doc/
|
||||
endef
|
||||
define Package/ixp4xx-microcode-wan/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware
|
||||
$(INSTALL_DIR) $(1)/usr/share/doc
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/NPE-A-HSS $(1)/lib/firmware/
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/NPE-B $(1)/lib/firmware/
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/NPE-C $(1)/lib/firmware/
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/LICENSE.IPL $(1)/usr/share/doc/
|
||||
endef
|
||||
|
||||
|
||||
$(eval $(call BuildPackage,ixp4xx-microcode-ethernet))
|
||||
$(eval $(call BuildPackage,ixp4xx-microcode-wan))
|
148
package/firmware/ixp4xx-microcode/src/IxNpeMicrocode.h
Normal file
148
package/firmware/ixp4xx-microcode/src/IxNpeMicrocode.h
Normal file
@ -0,0 +1,148 @@
|
||||
/*
|
||||
* IxNpeMicrocode.h - Headerfile for compiling the Intel microcode C file
|
||||
*
|
||||
* Copyright (C) 2006 Christian Hohnstaedt <chohnstaedt@innominate.com>
|
||||
*
|
||||
* This file is released under the GPLv2
|
||||
*
|
||||
*
|
||||
* compile with
|
||||
*
|
||||
* gcc -Wall IxNpeMicrocode.c -o IxNpeMicrocode
|
||||
*
|
||||
* Executing the resulting binary on your build-host creates the
|
||||
* "NPE-[ABC].xxxxxxxx" files containing the selected microcode
|
||||
*
|
||||
* fetch the IxNpeMicrocode.c from the Intel Access Library.
|
||||
* It will include this header.
|
||||
*
|
||||
* select Images for every NPE from the following
|
||||
* (used C++ comments for easy uncommenting ....)
|
||||
*/
|
||||
|
||||
// #define IX_NPEDL_NPEIMAGE_NPEA_ETH_SPAN_MASK_FIREWALL_VLAN_QOS_HDR_CONV_EXTMIB
|
||||
// #define IX_NPEDL_NPEIMAGE_NPEA_ETH_SPAN_VLAN_QOS_HDR_CONV_EXTMIB
|
||||
// #define IX_NPEDL_NPEIMAGE_NPEA_ETH_LEARN_FILTER_SPAN_MASK_FIREWALL_VLAN_QOS_EXTMIB
|
||||
// #define IX_NPEDL_NPEIMAGE_NPEA_HSS_TSLOT_SWITCH
|
||||
#define IX_NPEDL_NPEIMAGE_NPEA_ETH_SPAN_FIREWALL_VLAN_QOS_HDR_CONV
|
||||
// #define IX_NPEDL_NPEIMAGE_NPEA_ETH_LEARN_FILTER_SPAN_FIREWALL_VLAN_QOS
|
||||
// #define IX_NPEDL_NPEIMAGE_NPEA_ETH_LEARN_FILTER_SPAN_FIREWALL
|
||||
#define IX_NPEDL_NPEIMAGE_NPEA_HSS_2_PORT
|
||||
// #define IX_NPEDL_NPEIMAGE_NPEA_DMA
|
||||
// #define IX_NPEDL_NPEIMAGE_NPEA_ATM_MPHY_12_PORT
|
||||
// #define IX_NPEDL_NPEIMAGE_NPEA_HSS0_ATM_MPHY_1_PORT
|
||||
// #define IX_NPEDL_NPEIMAGE_NPEA_HSS0_ATM_SPHY_1_PORT
|
||||
// #define IX_NPEDL_NPEIMAGE_NPEA_HSS0
|
||||
// #define IX_NPEDL_NPEIMAGE_NPEA_WEP
|
||||
|
||||
|
||||
// #define IX_NPEDL_NPEIMAGE_NPEB_ETH_SPAN_MASK_FIREWALL_VLAN_QOS_HDR_CONV_EXTMIB
|
||||
// #define IX_NPEDL_NPEIMAGE_NPEB_ETH_SPAN_VLAN_QOS_HDR_CONV_EXTMIB
|
||||
// #define IX_NPEDL_NPEIMAGE_NPEB_ETH_LEARN_FILTER_SPAN_MASK_FIREWALL_VLAN_QOS_EXTMIB
|
||||
// #define IX_NPEDL_NPEIMAGE_NPEB_DMA
|
||||
#define IX_NPEDL_NPEIMAGE_NPEB_ETH_SPAN_FIREWALL_VLAN_QOS_HDR_CONV
|
||||
// #define IX_NPEDL_NPEIMAGE_NPEB_ETH_LEARN_FILTER_SPAN_FIREWALL_VLAN_QOS
|
||||
// #define IX_NPEDL_NPEIMAGE_NPEB_ETH_LEARN_FILTER_SPAN_FIREWALL
|
||||
|
||||
|
||||
// #define IX_NPEDL_NPEIMAGE_NPEC_ETH_SPAN_MASK_FIREWALL_VLAN_QOS_HDR_CONV_EXTMIB
|
||||
// #define IX_NPEDL_NPEIMAGE_NPEC_ETH_SPAN_VLAN_QOS_HDR_CONV_EXTMIB
|
||||
// #define IX_NPEDL_NPEIMAGE_NPEC_ETH_LEARN_FILTER_SPAN_MASK_FIREWALL_VLAN_QOS_EXTMIB
|
||||
// #define IX_NPEDL_NPEIMAGE_NPEC_DMA
|
||||
// #define IX_NPEDL_NPEIMAGE_NPEC_CRYPTO_AES_ETH_LEARN_FILTER_SPAN
|
||||
// #define IX_NPEDL_NPEIMAGE_NPEC_CRYPTO_AES_ETH_LEARN_FILTER_FIREWALL
|
||||
#define IX_NPEDL_NPEIMAGE_NPEC_CRYPTO_AES_CCM_ETH
|
||||
// #define IX_NPEDL_NPEIMAGE_NPEC_CRYPTO_AES_CCM_EXTSHA_ETH
|
||||
// #define IX_NPEDL_NPEIMAGE_NPEC_CRYPTO_ETH_LEARN_FILTER_SPAN_FIREWALL
|
||||
// #define IX_NPEDL_NPEIMAGE_NPEC_ETH_SPAN_FIREWALL_VLAN_QOS_HDR_CONV
|
||||
// #define IX_NPEDL_NPEIMAGE_NPEC_ETH_LEARN_FILTER_SPAN_FIREWALL_VLAN_QOS
|
||||
// #define IX_NPEDL_NPEIMAGE_NPEC_ETH_LEARN_FILTER_SPAN_FIREWALL
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
#include <netinet/in.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <endian.h>
|
||||
#include <byteswap.h>
|
||||
#include <string.h>
|
||||
|
||||
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
||||
#define to_le32(x) (x)
|
||||
#define to_be32(x) bswap_32(x)
|
||||
#else
|
||||
#define to_be32(x) (x)
|
||||
#define to_le32(x) bswap_32(x)
|
||||
#endif
|
||||
|
||||
struct dl_image {
|
||||
unsigned magic;
|
||||
unsigned id;
|
||||
unsigned size;
|
||||
unsigned data[0];
|
||||
};
|
||||
|
||||
const unsigned IxNpeMicrocode_array[];
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
struct dl_image *image = (struct dl_image *)IxNpeMicrocode_array;
|
||||
int imgsiz, i, fd, cnt;
|
||||
const unsigned *arrayptr = IxNpeMicrocode_array;
|
||||
const char *names[] = { "IXP425", "IXP465", "unknown" };
|
||||
int bigendian = 1;
|
||||
|
||||
if (argc > 1) {
|
||||
if (!strcmp(argv[1], "-le"))
|
||||
bigendian = 0;
|
||||
else if (!strcmp(argv[1], "-be"))
|
||||
bigendian = 1;
|
||||
else {
|
||||
printf("Usage: %s <-le|-be>\n", argv[0]);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
for (image = (struct dl_image *)arrayptr, cnt=0;
|
||||
(image->id != 0xfeedf00d) && (image->magic == 0xfeedf00d);
|
||||
image = (struct dl_image *)(arrayptr), cnt++)
|
||||
{
|
||||
unsigned char field[4];
|
||||
imgsiz = image->size + 3;
|
||||
*(unsigned*)field = to_be32(image->id);
|
||||
char filename[40], slnk[10];
|
||||
|
||||
sprintf(filename, "NPE-%c.%08x", (field[0] & 0xf) + 'A',
|
||||
image->id);
|
||||
if (image->id == 0x00090000)
|
||||
sprintf(slnk, "NPE-%c-HSS", (field[0] & 0xf) + 'A');
|
||||
else
|
||||
sprintf(slnk, "NPE-%c", (field[0] & 0xf) + 'A');
|
||||
|
||||
printf("Writing image: %s.NPE_%c Func: %2x Rev: %02x.%02x "
|
||||
"Size: %5d to: '%s'\n",
|
||||
names[field[0] >> 4], (field[0] & 0xf) + 'A',
|
||||
field[1], field[2], field[3], imgsiz*4, filename);
|
||||
fd = open(filename, O_CREAT | O_RDWR | O_TRUNC, 0644);
|
||||
if (fd >= 0) {
|
||||
for (i=0; i<imgsiz; i++) {
|
||||
*(unsigned*)field = bigendian ?
|
||||
to_be32(arrayptr[i]) :
|
||||
to_le32(arrayptr[i]);
|
||||
write(fd, field, sizeof(field));
|
||||
}
|
||||
close(fd);
|
||||
unlink(slnk);
|
||||
symlink(filename, slnk);
|
||||
} else {
|
||||
perror(filename);
|
||||
}
|
||||
arrayptr += imgsiz;
|
||||
}
|
||||
close(fd);
|
||||
return 0;
|
||||
}
|
27
package/firmware/ixp4xx-microcode/src/LICENSE.IPL
Normal file
27
package/firmware/ixp4xx-microcode/src/LICENSE.IPL
Normal file
@ -0,0 +1,27 @@
|
||||
INTEL(R) SOFTWARE LICENSE AGREEMENT
|
||||
|
||||
Copyright (c) 2007, Intel Corporation.
|
||||
All rights reserved.
|
||||
|
||||
Redistribution. Redistribution and use in binary form, without modification, are permitted
|
||||
provided that the following conditions are met:
|
||||
o Redistributions must reproduce the above copyright notice and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
o Neither the name of Intel Corporation nor the names of its suppliers may be used to endorse
|
||||
or promote products derived from this software without specific prior written permission.
|
||||
o No reverse engineering, decompilation, or disassembly of this software is permitted.
|
||||
|
||||
Limited patent license. Intel Corporation grants a world-wide, royalty-free, non-exclusive
|
||||
license under patents it now or hereafter owns or controls to make, have made, use, import,
|
||||
offer to sell and sell (.Utilize.) this software, but solely to the extent that any such patent is
|
||||
necessary to Utilize the software alone. The patent license shall not apply to any combinations
|
||||
which include this software. No hardware per se is licensed hereunder.
|
||||
DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
OF SUCH DAMAGE.
|
@ -496,12 +496,12 @@ $(eval $(call KernelPackage,nbd))
|
||||
define KernelPackage/nvme
|
||||
SUBMENU:=$(BLOCK_MENU)
|
||||
TITLE:=NVM Express block device
|
||||
DEPENDS:=@PCI_SUPPORT
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-hwmon-core
|
||||
KCONFIG:= \
|
||||
CONFIG_NVME_CORE \
|
||||
CONFIG_BLK_DEV_NVME \
|
||||
CONFIG_NVME_MULTIPATH=n \
|
||||
CONFIG_NVME_HWMON=n
|
||||
CONFIG_NVME_HWMON=y
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/nvme/host/nvme-core.ko \
|
||||
$(LINUX_DIR)/drivers/nvme/host/nvme.ko
|
||||
|
@ -399,6 +399,19 @@ endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-hw-hifn-795x))
|
||||
|
||||
define KernelPackage/crypto-hw-ixp4xx
|
||||
TITLE:=Intel IXP4xx crypto accelerator
|
||||
DEPENDS:=@TARGET_ixp4xx +kmod-random-core +kmod-crypto-manager +kmod-crypto-authenc +kmod-crypto-des
|
||||
KCONFIG:= \
|
||||
CONFIG_CRYPTO_HW=y \
|
||||
CONFIG_CRYPTO_DEV_IXP4XX
|
||||
FILES:=$(LINUX_DIR)/drivers/crypto/ixp4xx_crypto.ko
|
||||
AUTOLOAD:=$(call AutoProbe,ixp4xx_crypto)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-hw-ixp4xx))
|
||||
|
||||
|
||||
define KernelPackage/crypto-hw-padlock
|
||||
TITLE:=VIA PadLock ACE with AES/SHA hw crypto module
|
||||
|
@ -224,6 +224,22 @@ endef
|
||||
$(eval $(call KernelPackage,phylib-broadcom))
|
||||
|
||||
|
||||
define KernelPackage/phy-amd
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=AMD PHY driver
|
||||
KCONFIG:=CONFIG_AMD_PHY
|
||||
DEPENDS:=+kmod-libphy
|
||||
FILES:=$(LINUX_DIR)/drivers/net/phy/amd.ko
|
||||
AUTOLOAD:=$(call AutoProbe,amd,1)
|
||||
endef
|
||||
|
||||
define KernelPackage/phy-amd/description
|
||||
Currently supports the AMD and Altima PHYs.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,phy-amd))
|
||||
|
||||
|
||||
define KernelPackage/phy-ax88796b
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=Asix PHY driver
|
||||
|
@ -534,7 +534,6 @@ $(eval $(call KernelPackage,usb-wdm))
|
||||
define KernelPackage/usb-audio
|
||||
TITLE:=Support for USB audio devices
|
||||
KCONFIG:= \
|
||||
CONFIG_USB_AUDIO \
|
||||
CONFIG_SND_USB=y \
|
||||
CONFIG_SND_USB_AUDIO
|
||||
$(call AddDepends/usb)
|
||||
|
@ -8,7 +8,7 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=openssl
|
||||
PKG_VERSION:=3.0.11
|
||||
PKG_VERSION:=3.0.12
|
||||
PKG_RELEASE:=1
|
||||
PKG_BUILD_FLAGS:=no-mips16 gc-sections no-lto
|
||||
|
||||
@ -26,7 +26,7 @@ PKG_SOURCE_URL:= \
|
||||
ftp://ftp.pca.dfn.de/pub/tools/net/openssl/source/ \
|
||||
ftp://ftp.pca.dfn.de/pub/tools/net/openssl/source/old/$(PKG_BASE)/
|
||||
|
||||
PKG_HASH:=b3425d3bb4a2218d0697eb41f7fc0cdede016ed19ca49d168b78e8d947887f55
|
||||
PKG_HASH:=f93c9e8edde5e9166119de31755fc87b4aa34863662f67ddfcba14d0b6b69b61
|
||||
|
||||
PKG_LICENSE:=Apache-2.0
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
|
@ -10,7 +10,7 @@ Signed-off-by: Eneas U de Queiroz <cote2004-github@yahoo.com>
|
||||
|
||||
--- a/crypto/build.info
|
||||
+++ b/crypto/build.info
|
||||
@@ -111,7 +111,7 @@ DEFINE[../libcrypto]=$UPLINKDEF
|
||||
@@ -109,7 +109,7 @@ DEFINE[../libcrypto]=$UPLINKDEF
|
||||
|
||||
DEPEND[info.o]=buildinf.h
|
||||
DEPEND[cversion.o]=buildinf.h
|
||||
|
@ -1,13 +1,13 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=uqmi
|
||||
PKG_RELEASE:=5
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/uqmi.git
|
||||
PKG_SOURCE_DATE:=2022-05-04
|
||||
PKG_SOURCE_VERSION:=56cb2d4056fef132ccf78dfb6f3074ae5d109992
|
||||
PKG_MIRROR_HASH:=cc832b5318805df8c8387a3650f250dee72d5f1dbda4e4866b5503e186b2210c
|
||||
PKG_SOURCE_DATE:=2022-10-20
|
||||
PKG_SOURCE_VERSION:=c8c9f105aa2d03146664fa1cc1bd2c837aa4aadd
|
||||
PKG_MIRROR_HASH:=5fd1b3c8f5e7c4b52ed81a0c69504fbf39e69c0ecd1f8278969cf22f57fdb2a9
|
||||
PKG_MAINTAINER:=Matti Laakso <malaakso@elisanet.fi>
|
||||
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
|
@ -8,12 +8,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=mtd-utils
|
||||
PKG_VERSION:=2.1.5
|
||||
PKG_VERSION:=2.1.6
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||
PKG_SOURCE_URL:=https://infraroot.at/pub/mtd/
|
||||
PKG_HASH:=386e27fd121699b6b729bc2e8e04dda987b31cca6b16e12fb6cc6dcf26449f46
|
||||
PKG_HASH:=c1d853bc4adf83bcabd2792fc95af33bdd8643c97e8f7b3f0180af36af76f0e5
|
||||
|
||||
PKG_INSTALL:=1
|
||||
PKG_FIXUP:=autoreconf
|
||||
|
@ -12,13 +12,13 @@ PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=https://github.com/jow-/ucode.git
|
||||
PKG_SOURCE_DATE:=2023-06-06
|
||||
PKG_SOURCE_VERSION:=c7d84aae09691a99ae3db427c0b2463732ef84f4
|
||||
PKG_MIRROR_HASH:=38826ae70d886d1d7ada3fc6591ac807169aa28107f60f7f2e617520083525fb
|
||||
PKG_SOURCE_DATE:=2023-10-19
|
||||
PKG_SOURCE_VERSION:=07c03173d4e6a30953f92fa88ed29b0b956c9106
|
||||
PKG_MIRROR_HASH:=fd770335f442ebfc0f4e28d94bb60d886c43aa239ab88e965be7c490b3283a82
|
||||
PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
|
||||
PKG_LICENSE:=ISC
|
||||
|
||||
PKG_ABI_VERSION:=20220812
|
||||
PKG_ABI_VERSION:=20230711
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/host-build.mk
|
||||
@ -35,7 +35,9 @@ CMAKE_HOST_OPTIONS += \
|
||||
-DSTRUCT_SUPPORT=ON \
|
||||
-DUBUS_SUPPORT=OFF \
|
||||
-DUCI_SUPPORT=OFF \
|
||||
-DULOOP_SUPPORT=OFF
|
||||
-DULOOP_SUPPORT=OFF \
|
||||
-DDEBUG_SUPPORT=ON \
|
||||
-DLOG_SUPPORT=OFF
|
||||
|
||||
|
||||
define Package/ucode/default
|
||||
@ -70,105 +72,29 @@ define Package/libucode/description
|
||||
The libucode package provides the shared runtime library for the ucode interpreter.
|
||||
endef
|
||||
|
||||
# 1: name
|
||||
# 2: cmake symbol
|
||||
# 3: depends
|
||||
# 4: description
|
||||
define UcodeModule
|
||||
UCODE_MODULES += ucode-mod-$(strip $(1))
|
||||
CMAKE_OPTIONS += -D$(strip $(2))=$(if $(CONFIG_PACKAGE_ucode-mod-$(strip $(1))),ON,OFF)
|
||||
PKG_CONFIG_DEPENDS += CONFIG_PACKAGE_ucode-mod-$(strip $(1))
|
||||
|
||||
define Package/ucode-mod-fs
|
||||
define Package/ucode-mod-$(strip $(1))
|
||||
$(Package/ucode/default)
|
||||
TITLE+= (filesystem module)
|
||||
DEPENDS:=ucode
|
||||
endef
|
||||
TITLE+= ($(strip $(1)) module)
|
||||
DEPENDS:=ucode $(3)
|
||||
endef
|
||||
|
||||
define Package/ucode-mod-fs/description
|
||||
The filesystem plugin module allows interaction with the local file system.
|
||||
endef
|
||||
define Package/ucode-mod-$(strip $(1))/description
|
||||
$(strip $(4))
|
||||
endef
|
||||
|
||||
|
||||
define Package/ucode-mod-math
|
||||
$(Package/ucode/default)
|
||||
TITLE+= (math module)
|
||||
DEPENDS:=ucode
|
||||
endef
|
||||
|
||||
define Package/ucode-mod-math/description
|
||||
The math plugin provides access to various <math.h> procedures.
|
||||
endef
|
||||
|
||||
|
||||
define Package/ucode-mod-nl80211
|
||||
$(Package/ucode/default)
|
||||
TITLE+= (nl80211 module)
|
||||
DEPENDS:=ucode +libnl-tiny +libubox
|
||||
endef
|
||||
|
||||
define Package/ucode-mod-nl80211/description
|
||||
The nl80211 plugin provides access to the Linux wireless 802.11 netlink API.
|
||||
endef
|
||||
|
||||
|
||||
define Package/ucode-mod-resolv
|
||||
$(Package/ucode/default)
|
||||
TITLE+= (resolv module)
|
||||
DEPENDS:=ucode
|
||||
endef
|
||||
|
||||
define Package/ucode-mod-resolv/description
|
||||
The resolv plugin implements simple DNS resolving.
|
||||
endef
|
||||
|
||||
|
||||
define Package/ucode-mod-rtnl
|
||||
$(Package/ucode/default)
|
||||
TITLE+= (rtnl module)
|
||||
DEPENDS:=ucode +libnl-tiny +libubox
|
||||
endef
|
||||
|
||||
define Package/ucode-mod-rtnl/description
|
||||
The rtnl plugin provides access to the Linux routing netlink API.
|
||||
endef
|
||||
|
||||
|
||||
define Package/ucode-mod-struct
|
||||
$(Package/ucode/default)
|
||||
TITLE+= (struct module)
|
||||
DEPENDS:=ucode
|
||||
endef
|
||||
|
||||
define Package/ucode-mod-struct/description
|
||||
The struct plugin implements Python 3 compatible struct.pack/unpack functionality.
|
||||
endef
|
||||
|
||||
|
||||
define Package/ucode-mod-ubus
|
||||
$(Package/ucode/default)
|
||||
TITLE+= (ubus module)
|
||||
DEPENDS:=ucode +libubus +libblobmsg-json
|
||||
endef
|
||||
|
||||
define Package/ucode-mod-ubus/description
|
||||
The ubus module allows ucode template scripts to enumerate and invoke ubus
|
||||
procedures.
|
||||
endef
|
||||
|
||||
|
||||
define Package/ucode-mod-uci
|
||||
$(Package/ucode/default)
|
||||
TITLE+= (uci module)
|
||||
DEPENDS:=ucode +libuci
|
||||
endef
|
||||
|
||||
define Package/ucode-mod-uci/description
|
||||
The uci module allows templates to read and modify uci configuration.
|
||||
endef
|
||||
|
||||
|
||||
define Package/ucode-mod-uloop
|
||||
$(Package/ucode/default)
|
||||
TITLE+= (uloop module)
|
||||
DEPENDS:=ucode +libubox
|
||||
endef
|
||||
|
||||
define Package/ucode-mod-uloop/description
|
||||
The uloop module allows ucode scripts to interact with OpenWrt uloop event
|
||||
loop implementation.
|
||||
define Package/ucode-mod-$(strip $(1))/install
|
||||
$(INSTALL_DIR) $$(1)/usr/lib/ucode
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/ucode/$(strip $(1)).so $$(1)/usr/lib/ucode/
|
||||
endef
|
||||
endef
|
||||
|
||||
|
||||
@ -189,60 +115,55 @@ define Package/libucode/install
|
||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libucode.so.* $(1)/usr/lib/
|
||||
endef
|
||||
|
||||
define Package/ucode-mod-fs/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib/ucode
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/ucode/fs.so $(1)/usr/lib/ucode/
|
||||
endef
|
||||
|
||||
define Package/ucode-mod-math/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib/ucode
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/ucode/math.so $(1)/usr/lib/ucode/
|
||||
endef
|
||||
$(eval $(call UcodeModule, \
|
||||
debug, DEBUG_SUPPORT, +libubox +libucode, \
|
||||
The debug plugin module provides runtime debugging and introspection facilities.))
|
||||
|
||||
define Package/ucode-mod-nl80211/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib/ucode
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/ucode/nl80211.so $(1)/usr/lib/ucode/
|
||||
endef
|
||||
$(eval $(call UcodeModule, \
|
||||
fs, FS_SUPPORT, , \
|
||||
The filesystem plugin module allows interaction with the local file system.))
|
||||
|
||||
define Package/ucode-mod-resolv/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib/ucode
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/ucode/resolv.so $(1)/usr/lib/ucode/
|
||||
endef
|
||||
$(eval $(call UcodeModule, \
|
||||
log, LOG_SUPPORT, +libubox, \
|
||||
The log plugin module provides access to the syslog and libubox ulog APIs.))
|
||||
|
||||
define Package/ucode-mod-rtnl/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib/ucode
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/ucode/rtnl.so $(1)/usr/lib/ucode/
|
||||
endef
|
||||
$(eval $(call UcodeModule, \
|
||||
math, MATH_SUPPORT, , \
|
||||
The math plugin provides access to various <math.h> procedures.))
|
||||
|
||||
define Package/ucode-mod-struct/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib/ucode
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/ucode/struct.so $(1)/usr/lib/ucode/
|
||||
endef
|
||||
$(eval $(call UcodeModule, \
|
||||
nl80211, NL80211_SUPPORT, +libnl-tiny +libubox, \
|
||||
The nl80211 plugin provides access to the Linux wireless 802.11 netlink API.))
|
||||
|
||||
define Package/ucode-mod-ubus/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib/ucode
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/ucode/ubus.so $(1)/usr/lib/ucode/
|
||||
endef
|
||||
$(eval $(call UcodeModule, \
|
||||
resolv, RESOLV_SUPPORT, , \
|
||||
The resolv plugin implements simple DNS resolving.))
|
||||
|
||||
define Package/ucode-mod-uci/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib/ucode
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/ucode/uci.so $(1)/usr/lib/ucode/
|
||||
endef
|
||||
$(eval $(call UcodeModule, \
|
||||
rtnl, RTNL_SUPPORT, +libnl-tiny +libubox, \
|
||||
The rtnl plugin provides access to the Linux routing netlink API.))
|
||||
|
||||
define Package/ucode-mod-uloop/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib/ucode
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/ucode/uloop.so $(1)/usr/lib/ucode/
|
||||
endef
|
||||
$(eval $(call UcodeModule, \
|
||||
struct, STRUCT_SUPPORT, , \
|
||||
The struct plugin implements Python 3 compatible struct.pack/unpack functionality.))
|
||||
|
||||
$(eval $(call UcodeModule, \
|
||||
ubus, UBUS_SUPPORT, +libubus +libblobmsg-json, \
|
||||
The ubus module allows ucode template scripts to enumerate and invoke ubus procedures.))
|
||||
|
||||
$(eval $(call UcodeModule, \
|
||||
uci, UCI_SUPPORT, +libuci, \
|
||||
The uci module allows templates to read and modify uci configuration.))
|
||||
|
||||
$(eval $(call UcodeModule, \
|
||||
uloop, ULOOP_SUPPORT, +libubox, \
|
||||
The uloop module allows ucode scripts to interact with OpenWrt uloop event loop implementation.))
|
||||
|
||||
$(eval $(call BuildPackage,libucode))
|
||||
$(eval $(call BuildPackage,ucode))
|
||||
$(eval $(call BuildPackage,ucode-mod-fs))
|
||||
$(eval $(call BuildPackage,ucode-mod-math))
|
||||
$(eval $(call BuildPackage,ucode-mod-nl80211))
|
||||
$(eval $(call BuildPackage,ucode-mod-resolv))
|
||||
$(eval $(call BuildPackage,ucode-mod-rtnl))
|
||||
$(eval $(call BuildPackage,ucode-mod-struct))
|
||||
$(eval $(call BuildPackage,ucode-mod-ubus))
|
||||
$(eval $(call BuildPackage,ucode-mod-uci))
|
||||
$(eval $(call BuildPackage,ucode-mod-uloop))
|
||||
|
||||
$(foreach mod,$(UCODE_MODULES), \
|
||||
$(eval $(call BuildPackage,$(mod))))
|
||||
|
||||
$(eval $(call HostBuild))
|
||||
|
@ -13,7 +13,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
|
||||
--- a/drivers/leds/Kconfig
|
||||
+++ b/drivers/leds/Kconfig
|
||||
@@ -876,6 +876,17 @@ source "drivers/leds/blink/Kconfig"
|
||||
@@ -877,6 +877,17 @@ source "drivers/leds/blink/Kconfig"
|
||||
comment "Flash and Torch LED drivers"
|
||||
source "drivers/leds/flash/Kconfig"
|
||||
|
||||
|
@ -13,7 +13,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
|
||||
--- a/drivers/leds/Kconfig
|
||||
+++ b/drivers/leds/Kconfig
|
||||
@@ -872,6 +872,17 @@ source "drivers/leds/flash/Kconfig"
|
||||
@@ -873,6 +873,17 @@ source "drivers/leds/flash/Kconfig"
|
||||
comment "RGB LED drivers"
|
||||
source "drivers/leds/rgb/Kconfig"
|
||||
|
||||
|
@ -336,7 +336,7 @@ SVN-Revision: 35130
|
||||
#endif /* _LINUX_TYPES_H */
|
||||
--- a/net/ipv4/af_inet.c
|
||||
+++ b/net/ipv4/af_inet.c
|
||||
@@ -1488,8 +1488,8 @@ struct sk_buff *inet_gro_receive(struct
|
||||
@@ -1494,8 +1494,8 @@ struct sk_buff *inet_gro_receive(struct
|
||||
if (unlikely(ip_fast_csum((u8 *)iph, 5)))
|
||||
goto out;
|
||||
|
||||
|
@ -29,7 +29,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
|
||||
--- a/drivers/net/dsa/bcm_sf2.c
|
||||
+++ b/drivers/net/dsa/bcm_sf2.c
|
||||
@@ -1516,10 +1516,14 @@ static int bcm_sf2_sw_probe(struct platf
|
||||
@@ -1522,10 +1522,14 @@ static int bcm_sf2_sw_probe(struct platf
|
||||
rev = reg_readl(priv, REG_PHY_REVISION);
|
||||
priv->hw_params.gphy_rev = rev & PHY_REVISION_MASK;
|
||||
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
|
||||
--- a/drivers/net/dsa/bcm_sf2.c
|
||||
+++ b/drivers/net/dsa/bcm_sf2.c
|
||||
@@ -1530,6 +1530,12 @@ static int bcm_sf2_sw_probe(struct platf
|
||||
@@ -1536,6 +1536,12 @@ static int bcm_sf2_sw_probe(struct platf
|
||||
priv->hw_params.core_rev >> 8, priv->hw_params.core_rev & 0xff,
|
||||
priv->irq0, priv->irq1);
|
||||
|
||||
|
@ -0,0 +1,56 @@
|
||||
From 5cbee5828219c4f7b33e96b5d8ce5e467b2857c8 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Fri, 1 Sep 2023 12:55:49 +0200
|
||||
Subject: [PATCH] ARM: dts: BCM5301X: Set MACs for D-Link DIR-885L
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Specify NVRAM access and use its "et2macaddr" NVMEM cell.
|
||||
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Link: https://lore.kernel.org/r/20230901105549.7076-1-zajec5@gmail.com
|
||||
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
|
||||
---
|
||||
.../dts/broadcom/bcm47094-dlink-dir-885l.dts | 16 ++++++++++++++++
|
||||
1 file changed, 16 insertions(+)
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts
|
||||
@@ -25,6 +25,15 @@
|
||||
<0x88000000 0x08000000>;
|
||||
};
|
||||
|
||||
+ nvram@1e3f0000 {
|
||||
+ compatible = "brcm,nvram";
|
||||
+ reg = <0x1e3f0000 0x10000>;
|
||||
+
|
||||
+ et2macaddr: et2macaddr {
|
||||
+ #nvmem-cell-cells = <1>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
nand_controller: nand-controller@18028000 {
|
||||
nand@0 {
|
||||
partitions {
|
||||
@@ -112,6 +121,11 @@
|
||||
vcc-gpio = <&chipcommon 18 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
+&gmac0 {
|
||||
+ nvmem-cells = <&et2macaddr 0>;
|
||||
+ nvmem-cell-names = "mac-address";
|
||||
+};
|
||||
+
|
||||
&spi_nor {
|
||||
status = "okay";
|
||||
};
|
||||
@@ -142,6 +156,8 @@
|
||||
|
||||
port@4 {
|
||||
label = "wan";
|
||||
+ nvmem-cells = <&et2macaddr 3>;
|
||||
+ nvmem-cell-names = "mac-address";
|
||||
};
|
||||
|
||||
port@8 {
|
@ -0,0 +1,44 @@
|
||||
From a9e79863b62aaaefcdf469fc331bf482ae00db0d Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Fri, 1 Sep 2023 14:43:11 +0200
|
||||
Subject: [PATCH] ARM: dts: BCM5301X: Set MAC address for Asus RT-AC87U
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Specify NVRAM access and use its "et1macaddr" NVMEM cell.
|
||||
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Link: https://lore.kernel.org/r/20230901124311.31156-1-zajec5@gmail.com
|
||||
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
|
||||
---
|
||||
arch/arm/boot/dts/broadcom/bcm4709-asus-rt-ac87u.dts | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts
|
||||
@@ -25,6 +25,12 @@
|
||||
<0x88000000 0x08000000>;
|
||||
};
|
||||
|
||||
+ nvram@1c080000 {
|
||||
+ et1macaddr: et1macaddr {
|
||||
+ #nvmem-cell-cells = <1>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
@@ -62,6 +68,11 @@
|
||||
};
|
||||
};
|
||||
|
||||
+&gmac0 {
|
||||
+ nvmem-cells = <&et1macaddr 0>;
|
||||
+ nvmem-cell-names = "mac-address";
|
||||
+};
|
||||
+
|
||||
&usb3_phy {
|
||||
status = "okay";
|
||||
};
|
@ -0,0 +1,57 @@
|
||||
From 81ea360a16978a4df61df9db56b171909bd659c0 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Sat, 16 Sep 2023 10:30:57 +0200
|
||||
Subject: [PATCH] ARM: dts: BCM5301X: Relicense Felix's code to the GPL 2.0+ /
|
||||
MIT
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Move code added by Felix to the bcm-ns.dtsi which uses dual licensing.
|
||||
That syncs more Northstar code to be based on the same licensing schema.
|
||||
|
||||
This code was added in the commit 1ff80363524c ("ARM: BCM5301X: Add
|
||||
profiling support").
|
||||
|
||||
Cc: Felix Fietkau <nbd@nbd.name>
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Acked-by: Felix Fietkau <nbd@nbd.name>
|
||||
Link: https://lore.kernel.org/r/20230916083057.10458-1-zajec5@gmail.com
|
||||
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
|
||||
---
|
||||
arch/arm/boot/dts/broadcom/bcm-ns.dtsi | 7 +++++++
|
||||
arch/arm/boot/dts/broadcom/bcm5301x.dtsi | 7 -------
|
||||
2 files changed, 7 insertions(+), 7 deletions(-)
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm-ns.dtsi
|
||||
+++ b/arch/arm/boot/dts/bcm-ns.dtsi
|
||||
@@ -14,6 +14,13 @@
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
+ pmu {
|
||||
+ compatible = "arm,cortex-a9-pmu";
|
||||
+ interrupts =
|
||||
+ <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
|
||||
+ <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ };
|
||||
+
|
||||
chipcommon-a-bus@18000000 {
|
||||
compatible = "simple-bus";
|
||||
ranges = <0x00000000 0x18000000 0x00001000>;
|
||||
--- a/arch/arm/boot/dts/bcm5301x.dtsi
|
||||
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
|
||||
@@ -26,13 +26,6 @@
|
||||
};
|
||||
};
|
||||
|
||||
- pmu {
|
||||
- compatible = "arm,cortex-a9-pmu";
|
||||
- interrupts =
|
||||
- <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
|
||||
- <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
|
||||
- };
|
||||
-
|
||||
clocks {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
@ -0,0 +1,104 @@
|
||||
From b8d4f7c1be04d66c37c119c501c87bccc4197694 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Sat, 16 Sep 2023 10:58:55 +0200
|
||||
Subject: [PATCH] ARM: dts: BCM5301X: Relicense Vivek's code to the GPL 2.0+ /
|
||||
MIT
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Move code added by Vivek to the bcm-ns.dtsi which uses dual licensing.
|
||||
That syncs more Northstar code to be based on the same licensing schema.
|
||||
|
||||
This code was added in the commit 37f6130ec39f ("ARM: dts: BCM5301X:
|
||||
Make USB 3.0 PHY use MDIO PHY driver").
|
||||
|
||||
Cc: Vivek Unune <npcomplete13@gmail.com>
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Acked-by: Vivek Unune <npcomplete13@gmail.com>
|
||||
Link: https://lore.kernel.org/r/20230916085855.28375-1-zajec5@gmail.com
|
||||
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
|
||||
---
|
||||
arch/arm/boot/dts/broadcom/bcm-ns.dtsi | 27 ++++++++++++++++++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm5301x.dtsi | 27 ------------------------
|
||||
2 files changed, 27 insertions(+), 27 deletions(-)
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm-ns.dtsi
|
||||
+++ b/arch/arm/boot/dts/bcm-ns.dtsi
|
||||
@@ -327,6 +327,29 @@
|
||||
#address-cells = <1>;
|
||||
};
|
||||
|
||||
+ mdio-mux@18003000 {
|
||||
+ compatible = "mdio-mux-mmioreg", "mdio-mux";
|
||||
+ mdio-parent-bus = <&mdio>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ reg = <0x18003000 0x4>;
|
||||
+ mux-mask = <0x200>;
|
||||
+
|
||||
+ mdio@0 {
|
||||
+ reg = <0x0>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ usb3_phy: usb3-phy@10 {
|
||||
+ compatible = "brcm,ns-ax-usb3-phy";
|
||||
+ reg = <0x10>;
|
||||
+ usb3-dmp-syscon = <&usb3_dmp>;
|
||||
+ #phy-cells = <0>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
rng: rng@18004000 {
|
||||
compatible = "brcm,bcm5301x-rng";
|
||||
reg = <0x18004000 0x14>;
|
||||
@@ -467,6 +490,10 @@
|
||||
brcm,nand-has-wp;
|
||||
};
|
||||
|
||||
+ usb3_dmp: syscon@18105000 {
|
||||
+ reg = <0x18105000 0x1000>;
|
||||
+ };
|
||||
+
|
||||
thermal-zones {
|
||||
cpu_thermal: cpu-thermal {
|
||||
polling-delay-passive = <0>;
|
||||
--- a/arch/arm/boot/dts/bcm5301x.dtsi
|
||||
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
|
||||
@@ -62,33 +62,6 @@
|
||||
};
|
||||
};
|
||||
|
||||
- mdio-mux@18003000 {
|
||||
- compatible = "mdio-mux-mmioreg", "mdio-mux";
|
||||
- mdio-parent-bus = <&mdio>;
|
||||
- #address-cells = <1>;
|
||||
- #size-cells = <0>;
|
||||
- reg = <0x18003000 0x4>;
|
||||
- mux-mask = <0x200>;
|
||||
-
|
||||
- mdio@0 {
|
||||
- reg = <0x0>;
|
||||
- #address-cells = <1>;
|
||||
- #size-cells = <0>;
|
||||
-
|
||||
- usb3_phy: usb3-phy@10 {
|
||||
- compatible = "brcm,ns-ax-usb3-phy";
|
||||
- reg = <0x10>;
|
||||
- usb3-dmp-syscon = <&usb3_dmp>;
|
||||
- #phy-cells = <0>;
|
||||
- status = "disabled";
|
||||
- };
|
||||
- };
|
||||
- };
|
||||
-
|
||||
- usb3_dmp: syscon@18105000 {
|
||||
- reg = <0x18105000 0x1000>;
|
||||
- };
|
||||
-
|
||||
i2c0: i2c@18009000 {
|
||||
compatible = "brcm,iproc-i2c";
|
||||
reg = <0x18009000 0x50>;
|
@ -0,0 +1,377 @@
|
||||
From 473baeab929444295b0530f8766e4becb6a08973 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Fri, 13 Oct 2023 12:33:13 +0200
|
||||
Subject: [PATCH] ARM: dts: BCM5301X: Explicitly disable unused switch CPU
|
||||
ports
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
When redescribing ports I assumed that missing "label" (like "cpu")
|
||||
means switch port isn't used. That was incorrect and I realized my
|
||||
change made Linux always use the first (5) CPU port (there are 3 of
|
||||
them).
|
||||
|
||||
While above should technically be possible it often isn't correct:
|
||||
1. Non-default switch ports are often connected to Ethernet interfaces
|
||||
not fully covered by vendor setup (they may miss MACs)
|
||||
2. On some devices non-default ports require specifying fixed link
|
||||
|
||||
This fixes network connectivity for some devices. It was reported &
|
||||
tested for Netgear R8000. It also affects Linksys EA9200 with its
|
||||
downstream DTS.
|
||||
|
||||
Fixes: ba4aebce23b2 ("ARM: dts: BCM5301X: Describe switch ports in the main DTS")
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Link: https://lore.kernel.org/r/20231013103314.10306-1-zajec5@gmail.com
|
||||
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
|
||||
---
|
||||
.../dts/broadcom/bcm4708-buffalo-wzr-1166dhp-common.dtsi | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm4708-luxul-xap-1510.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm4708-luxul-xwc-1000.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm4708-netgear-r6250.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm4708-smartrg-sr400ac.dts | 8 ++++++++
|
||||
.../boot/dts/broadcom/bcm47081-buffalo-wzr-600dhp2.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm47081-luxul-xap-1410.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm47081-luxul-xwr-1200.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm4709-netgear-r8000.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm47094-dlink-dir-885l.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm47094-dlink-dir-890l.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm47094-luxul-abr-4500.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm47094-luxul-xap-1610.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm47094-luxul-xbr-4500.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm47094-luxul-xwc-2000.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm47094-luxul-xwr-3100.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm47094-luxul-xwr-3150-v1.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm53015-meraki-mr26.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm53016-meraki-mr32.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm953012er.dts | 8 ++++++++
|
||||
20 files changed, 160 insertions(+)
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm4708-buffalo-wzr-1166dhp-common.dtsi
|
||||
+++ b/arch/arm/boot/dts/bcm4708-buffalo-wzr-1166dhp-common.dtsi
|
||||
@@ -181,5 +181,13 @@
|
||||
port@5 {
|
||||
label = "cpu";
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm4708-luxul-xap-1510.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4708-luxul-xap-1510.dts
|
||||
@@ -85,5 +85,13 @@
|
||||
port@5 {
|
||||
label = "cpu";
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm4708-luxul-xwc-1000.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4708-luxul-xwc-1000.dts
|
||||
@@ -88,5 +88,13 @@
|
||||
port@5 {
|
||||
label = "cpu";
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm4708-netgear-r6250.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4708-netgear-r6250.dts
|
||||
@@ -122,5 +122,13 @@
|
||||
port@5 {
|
||||
label = "cpu";
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm4708-smartrg-sr400ac.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4708-smartrg-sr400ac.dts
|
||||
@@ -145,6 +145,14 @@
|
||||
port@5 {
|
||||
label = "cpu";
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm47081-buffalo-wzr-600dhp2.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47081-buffalo-wzr-600dhp2.dts
|
||||
@@ -145,5 +145,13 @@
|
||||
port@5 {
|
||||
label = "cpu";
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm47081-luxul-xap-1410.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47081-luxul-xap-1410.dts
|
||||
@@ -81,5 +81,13 @@
|
||||
port@5 {
|
||||
label = "cpu";
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm47081-luxul-xwr-1200.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47081-luxul-xwr-1200.dts
|
||||
@@ -148,5 +148,13 @@
|
||||
port@5 {
|
||||
label = "cpu";
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm4709-netgear-r8000.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4709-netgear-r8000.dts
|
||||
@@ -227,6 +227,14 @@
|
||||
label = "wan";
|
||||
};
|
||||
|
||||
+ port@5 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
port@8 {
|
||||
label = "cpu";
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts
|
||||
@@ -160,6 +160,14 @@
|
||||
nvmem-cell-names = "mac-address";
|
||||
};
|
||||
|
||||
+ port@5 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
port@8 {
|
||||
label = "cpu";
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm47094-dlink-dir-890l.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-dlink-dir-890l.dts
|
||||
@@ -192,6 +192,14 @@
|
||||
label = "wan";
|
||||
};
|
||||
|
||||
+ port@5 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
port@8 {
|
||||
label = "cpu";
|
||||
phy-mode = "rgmii";
|
||||
--- a/arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts
|
||||
@@ -107,5 +107,13 @@
|
||||
port@5 {
|
||||
label = "cpu";
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm47094-luxul-xap-1610.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-luxul-xap-1610.dts
|
||||
@@ -120,5 +120,13 @@
|
||||
port@5 {
|
||||
label = "cpu";
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts
|
||||
@@ -107,5 +107,13 @@
|
||||
port@5 {
|
||||
label = "cpu";
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm47094-luxul-xwc-2000.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-luxul-xwc-2000.dts
|
||||
@@ -75,5 +75,13 @@
|
||||
port@5 {
|
||||
label = "cpu";
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts
|
||||
@@ -147,5 +147,13 @@
|
||||
port@5 {
|
||||
label = "cpu";
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm47094-luxul-xwr-3150-v1.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-luxul-xwr-3150-v1.dts
|
||||
@@ -158,5 +158,13 @@
|
||||
port@5 {
|
||||
label = "cpu";
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm53015-meraki-mr26.dts
|
||||
+++ b/arch/arm/boot/dts/bcm53015-meraki-mr26.dts
|
||||
@@ -124,6 +124,14 @@
|
||||
full-duplex;
|
||||
};
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm53016-meraki-mr32.dts
|
||||
+++ b/arch/arm/boot/dts/bcm53016-meraki-mr32.dts
|
||||
@@ -185,6 +185,14 @@
|
||||
full-duplex;
|
||||
};
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm953012er.dts
|
||||
+++ b/arch/arm/boot/dts/bcm953012er.dts
|
||||
@@ -84,6 +84,14 @@
|
||||
label = "cpu";
|
||||
ethernet = <&gmac0>;
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
|
@ -0,0 +1,47 @@
|
||||
From d313b0e9070a7100ca55e64fe3b081d176d8806d Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Fri, 13 Oct 2023 12:33:14 +0200
|
||||
Subject: [PATCH] ARM: dts: BCM5301X: Set fixed-link for extra Netgear R8000
|
||||
CPU ports
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Ports 5 and 7 are disabled by default because the standard use case is
|
||||
for port 8 to manage all CPU directed traffic. For experimentation
|
||||
purposes however it is desirable to provide adequate properties such
|
||||
that people can experiment with using different ports without having to
|
||||
figure out their configuration. Some of the use cases include but are
|
||||
not limited to doubling or tripling the bandwidth by leveraging the
|
||||
additional ports/Ethernet MAC combinations.
|
||||
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Link: https://lore.kernel.org/r/20231013103314.10306-2-zajec5@gmail.com
|
||||
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
|
||||
---
|
||||
arch/arm/boot/dts/broadcom/bcm4709-netgear-r8000.dts | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm4709-netgear-r8000.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4709-netgear-r8000.dts
|
||||
@@ -229,10 +229,20 @@
|
||||
|
||||
port@5 {
|
||||
status = "disabled";
|
||||
+
|
||||
+ fixed-link {
|
||||
+ speed = <1000>;
|
||||
+ full-duplex;
|
||||
+ };
|
||||
};
|
||||
|
||||
port@7 {
|
||||
status = "disabled";
|
||||
+
|
||||
+ fixed-link {
|
||||
+ speed = <1000>;
|
||||
+ full-duplex;
|
||||
+ };
|
||||
};
|
||||
|
||||
port@8 {
|
@ -0,0 +1,63 @@
|
||||
From 253358f373492608348136e569366d73cb969f6a Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Tue, 24 Oct 2023 09:26:05 +0200
|
||||
Subject: [PATCH] ARM: dts: BCM5301X: Set switch ports for Linksys EA9200
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This patch was developed as OpenWrt downstream change and was recently
|
||||
confirmed to work as expected.
|
||||
|
||||
Tested-by: Rani Hod <rani.hod@gmail.com>
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Link: https://lore.kernel.org/r/20231024072605.32517-1-zajec5@gmail.com
|
||||
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
|
||||
---
|
||||
.../dts/broadcom/bcm4709-linksys-ea9200.dts | 38 +++++++++++++++++++
|
||||
1 file changed, 38 insertions(+)
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm4709-linksys-ea9200.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4709-linksys-ea9200.dts
|
||||
@@ -47,3 +47,41 @@
|
||||
&usb3_phy {
|
||||
status = "okay";
|
||||
};
|
||||
+
|
||||
+&srab {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ label = "cpu";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
@ -90,41 +90,23 @@ it on BCM4708 family.
|
||||
/*
|
||||
* Reset a halted HC.
|
||||
*
|
||||
@@ -611,10 +654,20 @@ static int xhci_init(struct usb_hcd *hcd
|
||||
|
||||
static int xhci_run_finished(struct xhci_hcd *xhci)
|
||||
{
|
||||
- if (xhci_start(xhci)) {
|
||||
- xhci_halt(xhci);
|
||||
- return -ENODEV;
|
||||
+ int err;
|
||||
+
|
||||
+ err = xhci_start(xhci);
|
||||
+ if (err) {
|
||||
+ err = -ENODEV;
|
||||
+ goto err_halt;
|
||||
@@ -634,6 +677,16 @@ static int xhci_run_finished(struct xhci
|
||||
spin_unlock_irqrestore(&xhci->lock, flags);
|
||||
return -ENODEV;
|
||||
}
|
||||
+
|
||||
+ if (xhci->quirks & XHCI_FAKE_DOORBELL) {
|
||||
+ err = xhci_fake_doorbell(xhci, 1);
|
||||
+ if (err)
|
||||
+ goto err_halt;
|
||||
+ int err = xhci_fake_doorbell(xhci, 1);
|
||||
+ if (err) {
|
||||
+ xhci_halt(xhci);
|
||||
+ spin_unlock_irqrestore(&xhci->lock, flags);
|
||||
+ return err;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
xhci->shared_hcd->state = HC_STATE_RUNNING;
|
||||
xhci->cmd_ring_state = CMD_RING_STATE_RUNNING;
|
||||
|
||||
@@ -624,6 +677,10 @@ static int xhci_run_finished(struct xhci
|
||||
xhci_dbg_trace(xhci, trace_xhci_dbg_init,
|
||||
"Finished xhci_run for USB3 roothub");
|
||||
return 0;
|
||||
+
|
||||
+err_halt:
|
||||
+ xhci_halt(xhci);
|
||||
+ return err;
|
||||
}
|
||||
|
||||
/*
|
||||
--- a/drivers/usb/host/xhci.h
|
||||
+++ b/drivers/usb/host/xhci.h
|
||||
@@ -1908,6 +1908,7 @@ struct xhci_hcd {
|
||||
|
@ -10,7 +10,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm4708-asus-rt-ac56u.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4708-asus-rt-ac56u.dts
|
||||
@@ -92,3 +92,40 @@
|
||||
@@ -92,3 +92,41 @@
|
||||
&usb3_phy {
|
||||
status = "okay";
|
||||
};
|
||||
@ -20,40 +20,41 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ reg = <4>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ reg = <5>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac0>;
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/bcm4708-asus-rt-ac68u.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4708-asus-rt-ac68u.dts
|
||||
@@ -83,3 +83,40 @@
|
||||
@@ -83,3 +83,41 @@
|
||||
&usb3_phy {
|
||||
status = "okay";
|
||||
};
|
||||
@ -63,40 +64,41 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ reg = <4>;
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ reg = <5>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac0>;
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/bcm4708-buffalo-wzr-1750dhp.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4708-buffalo-wzr-1750dhp.dts
|
||||
@@ -149,3 +149,40 @@
|
||||
@@ -149,3 +149,41 @@
|
||||
&usb3_phy {
|
||||
status = "okay";
|
||||
};
|
||||
@ -106,40 +108,41 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ reg = <4>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ reg = <5>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac0>;
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/bcm4708-linksys-ea6300-v1.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4708-linksys-ea6300-v1.dts
|
||||
@@ -46,3 +46,40 @@
|
||||
@@ -46,3 +46,41 @@
|
||||
&usb3_phy {
|
||||
status = "okay";
|
||||
};
|
||||
@ -149,40 +152,41 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ reg = <4>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ reg = <5>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac0>;
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/bcm4708-linksys-ea6500-v2.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4708-linksys-ea6500-v2.dts
|
||||
@@ -43,3 +43,40 @@
|
||||
@@ -43,3 +43,41 @@
|
||||
&usb3_phy {
|
||||
status = "okay";
|
||||
};
|
||||
@ -192,40 +196,41 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ reg = <4>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ reg = <5>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac0>;
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/bcm4708-netgear-r6300-v2.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4708-netgear-r6300-v2.dts
|
||||
@@ -86,3 +86,40 @@
|
||||
@@ -86,3 +86,41 @@
|
||||
&usb3_phy {
|
||||
status = "okay";
|
||||
};
|
||||
@ -235,40 +240,41 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ reg = <4>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ reg = <5>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac0>;
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/bcm47081-asus-rt-n18u.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47081-asus-rt-n18u.dts
|
||||
@@ -77,3 +77,40 @@
|
||||
@@ -77,3 +77,41 @@
|
||||
&usb3_phy {
|
||||
status = "okay";
|
||||
};
|
||||
@ -278,40 +284,41 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ reg = <4>;
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ reg = <5>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac0>;
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts
|
||||
@@ -66,6 +66,38 @@
|
||||
@@ -77,6 +77,40 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@ -320,29 +327,31 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ reg = <7>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac1>;
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
@ -352,7 +361,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
compatible = "fixed-partitions";
|
||||
--- a/arch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dts
|
||||
@@ -130,3 +130,40 @@
|
||||
@@ -130,3 +130,41 @@
|
||||
&usb3_phy {
|
||||
status = "okay";
|
||||
};
|
||||
@ -362,88 +371,41 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ reg = <4>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ reg = <5>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac0>;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/bcm4709-linksys-ea9200.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4709-linksys-ea9200.dts
|
||||
@@ -47,3 +47,45 @@
|
||||
&usb3_phy {
|
||||
status = "okay";
|
||||
};
|
||||
+
|
||||
+&srab {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ reg = <4>;
|
||||
+ label = "wan";
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ reg = <8>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac2>;
|
||||
+
|
||||
+ fixed-link {
|
||||
+ speed = <1000>;
|
||||
+ full-duplex;
|
||||
+ };
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/bcm4709-netgear-r7000.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4709-netgear-r7000.dts
|
||||
@@ -104,3 +104,40 @@
|
||||
@@ -104,3 +104,41 @@
|
||||
&usb3_phy {
|
||||
status = "okay";
|
||||
};
|
||||
@ -453,40 +415,41 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ reg = <4>;
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ reg = <5>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac0>;
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/bcm47094-netgear-r8500.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-netgear-r8500.dts
|
||||
@@ -94,3 +94,45 @@
|
||||
@@ -94,3 +94,41 @@
|
||||
&usb3_phy {
|
||||
status = "okay";
|
||||
};
|
||||
@ -496,45 +459,41 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ reg = <4>;
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ reg = <8>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac2>;
|
||||
+ port@5 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ fixed-link {
|
||||
+ speed = <1000>;
|
||||
+ full-duplex;
|
||||
+ };
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ label = "cpu";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/bcm47094-phicomm-k3.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-phicomm-k3.dts
|
||||
@@ -38,6 +38,38 @@
|
||||
@@ -38,6 +38,40 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@ -543,29 +502,31 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ reg = <5>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac0>;
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
@ -575,7 +536,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
compatible = "fixed-partitions";
|
||||
--- a/arch/arm/boot/dts/bcm47081-tplink-archer-c5-v2.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47081-tplink-archer-c5-v2.dts
|
||||
@@ -91,6 +91,43 @@
|
||||
@@ -91,6 +91,44 @@
|
||||
};
|
||||
};
|
||||
|
||||
@ -584,34 +545,35 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ reg = <4>;
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ reg = <5>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac0>;
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
@ -621,7 +583,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm4709-tplink-archer-c9-v1.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4709-tplink-archer-c9-v1.dts
|
||||
@@ -100,6 +100,43 @@
|
||||
@@ -100,6 +100,44 @@
|
||||
vcc-gpio = <&chipcommon 12 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
@ -630,34 +592,35 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ reg = <4>;
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ reg = <5>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac0>;
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
@ -667,7 +630,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm47081-buffalo-wzr-900dhp.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47081-buffalo-wzr-900dhp.dts
|
||||
@@ -107,3 +107,41 @@
|
||||
@@ -107,3 +107,42 @@
|
||||
&usb3_phy {
|
||||
status = "okay";
|
||||
};
|
||||
@ -677,34 +640,35 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ reg = <4>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ reg = <5>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac0>;
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
|
@ -0,0 +1,56 @@
|
||||
From 5cbee5828219c4f7b33e96b5d8ce5e467b2857c8 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Fri, 1 Sep 2023 12:55:49 +0200
|
||||
Subject: [PATCH] ARM: dts: BCM5301X: Set MACs for D-Link DIR-885L
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Specify NVRAM access and use its "et2macaddr" NVMEM cell.
|
||||
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Link: https://lore.kernel.org/r/20230901105549.7076-1-zajec5@gmail.com
|
||||
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
|
||||
---
|
||||
.../dts/broadcom/bcm47094-dlink-dir-885l.dts | 16 ++++++++++++++++
|
||||
1 file changed, 16 insertions(+)
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts
|
||||
@@ -25,6 +25,15 @@
|
||||
<0x88000000 0x08000000>;
|
||||
};
|
||||
|
||||
+ nvram@1e3f0000 {
|
||||
+ compatible = "brcm,nvram";
|
||||
+ reg = <0x1e3f0000 0x10000>;
|
||||
+
|
||||
+ et2macaddr: et2macaddr {
|
||||
+ #nvmem-cell-cells = <1>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
nand_controller: nand-controller@18028000 {
|
||||
nand@0 {
|
||||
partitions {
|
||||
@@ -112,6 +121,11 @@
|
||||
vcc-gpio = <&chipcommon 18 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
+&gmac0 {
|
||||
+ nvmem-cells = <&et2macaddr 0>;
|
||||
+ nvmem-cell-names = "mac-address";
|
||||
+};
|
||||
+
|
||||
&spi_nor {
|
||||
status = "okay";
|
||||
};
|
||||
@@ -142,6 +156,8 @@
|
||||
|
||||
port@4 {
|
||||
label = "wan";
|
||||
+ nvmem-cells = <&et2macaddr 3>;
|
||||
+ nvmem-cell-names = "mac-address";
|
||||
};
|
||||
|
||||
port@8 {
|
@ -0,0 +1,44 @@
|
||||
From a9e79863b62aaaefcdf469fc331bf482ae00db0d Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Fri, 1 Sep 2023 14:43:11 +0200
|
||||
Subject: [PATCH] ARM: dts: BCM5301X: Set MAC address for Asus RT-AC87U
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Specify NVRAM access and use its "et1macaddr" NVMEM cell.
|
||||
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Link: https://lore.kernel.org/r/20230901124311.31156-1-zajec5@gmail.com
|
||||
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
|
||||
---
|
||||
arch/arm/boot/dts/broadcom/bcm4709-asus-rt-ac87u.dts | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts
|
||||
@@ -25,6 +25,12 @@
|
||||
<0x88000000 0x08000000>;
|
||||
};
|
||||
|
||||
+ nvram@1c080000 {
|
||||
+ et1macaddr: et1macaddr {
|
||||
+ #nvmem-cell-cells = <1>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
@@ -62,6 +68,11 @@
|
||||
};
|
||||
};
|
||||
|
||||
+&gmac0 {
|
||||
+ nvmem-cells = <&et1macaddr 0>;
|
||||
+ nvmem-cell-names = "mac-address";
|
||||
+};
|
||||
+
|
||||
&usb3_phy {
|
||||
status = "okay";
|
||||
};
|
@ -0,0 +1,57 @@
|
||||
From 81ea360a16978a4df61df9db56b171909bd659c0 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Sat, 16 Sep 2023 10:30:57 +0200
|
||||
Subject: [PATCH] ARM: dts: BCM5301X: Relicense Felix's code to the GPL 2.0+ /
|
||||
MIT
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Move code added by Felix to the bcm-ns.dtsi which uses dual licensing.
|
||||
That syncs more Northstar code to be based on the same licensing schema.
|
||||
|
||||
This code was added in the commit 1ff80363524c ("ARM: BCM5301X: Add
|
||||
profiling support").
|
||||
|
||||
Cc: Felix Fietkau <nbd@nbd.name>
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Acked-by: Felix Fietkau <nbd@nbd.name>
|
||||
Link: https://lore.kernel.org/r/20230916083057.10458-1-zajec5@gmail.com
|
||||
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
|
||||
---
|
||||
arch/arm/boot/dts/broadcom/bcm-ns.dtsi | 7 +++++++
|
||||
arch/arm/boot/dts/broadcom/bcm5301x.dtsi | 7 -------
|
||||
2 files changed, 7 insertions(+), 7 deletions(-)
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm-ns.dtsi
|
||||
+++ b/arch/arm/boot/dts/bcm-ns.dtsi
|
||||
@@ -14,6 +14,13 @@
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
+ pmu {
|
||||
+ compatible = "arm,cortex-a9-pmu";
|
||||
+ interrupts =
|
||||
+ <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
|
||||
+ <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ };
|
||||
+
|
||||
chipcommon-a-bus@18000000 {
|
||||
compatible = "simple-bus";
|
||||
ranges = <0x00000000 0x18000000 0x00001000>;
|
||||
--- a/arch/arm/boot/dts/bcm5301x.dtsi
|
||||
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
|
||||
@@ -26,13 +26,6 @@
|
||||
};
|
||||
};
|
||||
|
||||
- pmu {
|
||||
- compatible = "arm,cortex-a9-pmu";
|
||||
- interrupts =
|
||||
- <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
|
||||
- <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
|
||||
- };
|
||||
-
|
||||
clocks {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
@ -0,0 +1,104 @@
|
||||
From b8d4f7c1be04d66c37c119c501c87bccc4197694 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Sat, 16 Sep 2023 10:58:55 +0200
|
||||
Subject: [PATCH] ARM: dts: BCM5301X: Relicense Vivek's code to the GPL 2.0+ /
|
||||
MIT
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Move code added by Vivek to the bcm-ns.dtsi which uses dual licensing.
|
||||
That syncs more Northstar code to be based on the same licensing schema.
|
||||
|
||||
This code was added in the commit 37f6130ec39f ("ARM: dts: BCM5301X:
|
||||
Make USB 3.0 PHY use MDIO PHY driver").
|
||||
|
||||
Cc: Vivek Unune <npcomplete13@gmail.com>
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Acked-by: Vivek Unune <npcomplete13@gmail.com>
|
||||
Link: https://lore.kernel.org/r/20230916085855.28375-1-zajec5@gmail.com
|
||||
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
|
||||
---
|
||||
arch/arm/boot/dts/broadcom/bcm-ns.dtsi | 27 ++++++++++++++++++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm5301x.dtsi | 27 ------------------------
|
||||
2 files changed, 27 insertions(+), 27 deletions(-)
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm-ns.dtsi
|
||||
+++ b/arch/arm/boot/dts/bcm-ns.dtsi
|
||||
@@ -327,6 +327,29 @@
|
||||
#address-cells = <1>;
|
||||
};
|
||||
|
||||
+ mdio-mux@18003000 {
|
||||
+ compatible = "mdio-mux-mmioreg", "mdio-mux";
|
||||
+ mdio-parent-bus = <&mdio>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ reg = <0x18003000 0x4>;
|
||||
+ mux-mask = <0x200>;
|
||||
+
|
||||
+ mdio@0 {
|
||||
+ reg = <0x0>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ usb3_phy: usb3-phy@10 {
|
||||
+ compatible = "brcm,ns-ax-usb3-phy";
|
||||
+ reg = <0x10>;
|
||||
+ usb3-dmp-syscon = <&usb3_dmp>;
|
||||
+ #phy-cells = <0>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
rng: rng@18004000 {
|
||||
compatible = "brcm,bcm5301x-rng";
|
||||
reg = <0x18004000 0x14>;
|
||||
@@ -467,6 +490,10 @@
|
||||
brcm,nand-has-wp;
|
||||
};
|
||||
|
||||
+ usb3_dmp: syscon@18105000 {
|
||||
+ reg = <0x18105000 0x1000>;
|
||||
+ };
|
||||
+
|
||||
thermal-zones {
|
||||
cpu_thermal: cpu-thermal {
|
||||
polling-delay-passive = <0>;
|
||||
--- a/arch/arm/boot/dts/bcm5301x.dtsi
|
||||
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
|
||||
@@ -62,33 +62,6 @@
|
||||
};
|
||||
};
|
||||
|
||||
- mdio-mux@18003000 {
|
||||
- compatible = "mdio-mux-mmioreg", "mdio-mux";
|
||||
- mdio-parent-bus = <&mdio>;
|
||||
- #address-cells = <1>;
|
||||
- #size-cells = <0>;
|
||||
- reg = <0x18003000 0x4>;
|
||||
- mux-mask = <0x200>;
|
||||
-
|
||||
- mdio@0 {
|
||||
- reg = <0x0>;
|
||||
- #address-cells = <1>;
|
||||
- #size-cells = <0>;
|
||||
-
|
||||
- usb3_phy: usb3-phy@10 {
|
||||
- compatible = "brcm,ns-ax-usb3-phy";
|
||||
- reg = <0x10>;
|
||||
- usb3-dmp-syscon = <&usb3_dmp>;
|
||||
- #phy-cells = <0>;
|
||||
- status = "disabled";
|
||||
- };
|
||||
- };
|
||||
- };
|
||||
-
|
||||
- usb3_dmp: syscon@18105000 {
|
||||
- reg = <0x18105000 0x1000>;
|
||||
- };
|
||||
-
|
||||
i2c0: i2c@18009000 {
|
||||
compatible = "brcm,iproc-i2c";
|
||||
reg = <0x18009000 0x50>;
|
@ -0,0 +1,377 @@
|
||||
From 473baeab929444295b0530f8766e4becb6a08973 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Fri, 13 Oct 2023 12:33:13 +0200
|
||||
Subject: [PATCH] ARM: dts: BCM5301X: Explicitly disable unused switch CPU
|
||||
ports
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
When redescribing ports I assumed that missing "label" (like "cpu")
|
||||
means switch port isn't used. That was incorrect and I realized my
|
||||
change made Linux always use the first (5) CPU port (there are 3 of
|
||||
them).
|
||||
|
||||
While above should technically be possible it often isn't correct:
|
||||
1. Non-default switch ports are often connected to Ethernet interfaces
|
||||
not fully covered by vendor setup (they may miss MACs)
|
||||
2. On some devices non-default ports require specifying fixed link
|
||||
|
||||
This fixes network connectivity for some devices. It was reported &
|
||||
tested for Netgear R8000. It also affects Linksys EA9200 with its
|
||||
downstream DTS.
|
||||
|
||||
Fixes: ba4aebce23b2 ("ARM: dts: BCM5301X: Describe switch ports in the main DTS")
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Link: https://lore.kernel.org/r/20231013103314.10306-1-zajec5@gmail.com
|
||||
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
|
||||
---
|
||||
.../dts/broadcom/bcm4708-buffalo-wzr-1166dhp-common.dtsi | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm4708-luxul-xap-1510.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm4708-luxul-xwc-1000.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm4708-netgear-r6250.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm4708-smartrg-sr400ac.dts | 8 ++++++++
|
||||
.../boot/dts/broadcom/bcm47081-buffalo-wzr-600dhp2.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm47081-luxul-xap-1410.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm47081-luxul-xwr-1200.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm4709-netgear-r8000.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm47094-dlink-dir-885l.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm47094-dlink-dir-890l.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm47094-luxul-abr-4500.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm47094-luxul-xap-1610.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm47094-luxul-xbr-4500.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm47094-luxul-xwc-2000.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm47094-luxul-xwr-3100.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm47094-luxul-xwr-3150-v1.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm53015-meraki-mr26.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm53016-meraki-mr32.dts | 8 ++++++++
|
||||
arch/arm/boot/dts/broadcom/bcm953012er.dts | 8 ++++++++
|
||||
20 files changed, 160 insertions(+)
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm4708-buffalo-wzr-1166dhp-common.dtsi
|
||||
+++ b/arch/arm/boot/dts/bcm4708-buffalo-wzr-1166dhp-common.dtsi
|
||||
@@ -181,5 +181,13 @@
|
||||
port@5 {
|
||||
label = "cpu";
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm4708-luxul-xap-1510.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4708-luxul-xap-1510.dts
|
||||
@@ -85,5 +85,13 @@
|
||||
port@5 {
|
||||
label = "cpu";
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm4708-luxul-xwc-1000.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4708-luxul-xwc-1000.dts
|
||||
@@ -88,5 +88,13 @@
|
||||
port@5 {
|
||||
label = "cpu";
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm4708-netgear-r6250.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4708-netgear-r6250.dts
|
||||
@@ -122,5 +122,13 @@
|
||||
port@5 {
|
||||
label = "cpu";
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm4708-smartrg-sr400ac.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4708-smartrg-sr400ac.dts
|
||||
@@ -145,6 +145,14 @@
|
||||
port@5 {
|
||||
label = "cpu";
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm47081-buffalo-wzr-600dhp2.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47081-buffalo-wzr-600dhp2.dts
|
||||
@@ -145,5 +145,13 @@
|
||||
port@5 {
|
||||
label = "cpu";
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm47081-luxul-xap-1410.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47081-luxul-xap-1410.dts
|
||||
@@ -81,5 +81,13 @@
|
||||
port@5 {
|
||||
label = "cpu";
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm47081-luxul-xwr-1200.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47081-luxul-xwr-1200.dts
|
||||
@@ -148,5 +148,13 @@
|
||||
port@5 {
|
||||
label = "cpu";
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm4709-netgear-r8000.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4709-netgear-r8000.dts
|
||||
@@ -227,6 +227,14 @@
|
||||
label = "wan";
|
||||
};
|
||||
|
||||
+ port@5 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
port@8 {
|
||||
label = "cpu";
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts
|
||||
@@ -160,6 +160,14 @@
|
||||
nvmem-cell-names = "mac-address";
|
||||
};
|
||||
|
||||
+ port@5 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
port@8 {
|
||||
label = "cpu";
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm47094-dlink-dir-890l.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-dlink-dir-890l.dts
|
||||
@@ -192,6 +192,14 @@
|
||||
label = "wan";
|
||||
};
|
||||
|
||||
+ port@5 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
port@8 {
|
||||
label = "cpu";
|
||||
phy-mode = "rgmii";
|
||||
--- a/arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts
|
||||
@@ -107,5 +107,13 @@
|
||||
port@5 {
|
||||
label = "cpu";
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm47094-luxul-xap-1610.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-luxul-xap-1610.dts
|
||||
@@ -120,5 +120,13 @@
|
||||
port@5 {
|
||||
label = "cpu";
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts
|
||||
@@ -107,5 +107,13 @@
|
||||
port@5 {
|
||||
label = "cpu";
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm47094-luxul-xwc-2000.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-luxul-xwc-2000.dts
|
||||
@@ -75,5 +75,13 @@
|
||||
port@5 {
|
||||
label = "cpu";
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts
|
||||
@@ -147,5 +147,13 @@
|
||||
port@5 {
|
||||
label = "cpu";
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm47094-luxul-xwr-3150-v1.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-luxul-xwr-3150-v1.dts
|
||||
@@ -158,5 +158,13 @@
|
||||
port@5 {
|
||||
label = "cpu";
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--- a/arch/arm/boot/dts/bcm53015-meraki-mr26.dts
|
||||
+++ b/arch/arm/boot/dts/bcm53015-meraki-mr26.dts
|
||||
@@ -124,6 +124,14 @@
|
||||
full-duplex;
|
||||
};
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm53016-meraki-mr32.dts
|
||||
+++ b/arch/arm/boot/dts/bcm53016-meraki-mr32.dts
|
||||
@@ -185,6 +185,14 @@
|
||||
full-duplex;
|
||||
};
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm953012er.dts
|
||||
+++ b/arch/arm/boot/dts/bcm953012er.dts
|
||||
@@ -84,6 +84,14 @@
|
||||
label = "cpu";
|
||||
ethernet = <&gmac0>;
|
||||
};
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
};
|
||||
|
@ -0,0 +1,47 @@
|
||||
From d313b0e9070a7100ca55e64fe3b081d176d8806d Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Fri, 13 Oct 2023 12:33:14 +0200
|
||||
Subject: [PATCH] ARM: dts: BCM5301X: Set fixed-link for extra Netgear R8000
|
||||
CPU ports
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Ports 5 and 7 are disabled by default because the standard use case is
|
||||
for port 8 to manage all CPU directed traffic. For experimentation
|
||||
purposes however it is desirable to provide adequate properties such
|
||||
that people can experiment with using different ports without having to
|
||||
figure out their configuration. Some of the use cases include but are
|
||||
not limited to doubling or tripling the bandwidth by leveraging the
|
||||
additional ports/Ethernet MAC combinations.
|
||||
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Link: https://lore.kernel.org/r/20231013103314.10306-2-zajec5@gmail.com
|
||||
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
|
||||
---
|
||||
arch/arm/boot/dts/broadcom/bcm4709-netgear-r8000.dts | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm4709-netgear-r8000.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4709-netgear-r8000.dts
|
||||
@@ -229,10 +229,20 @@
|
||||
|
||||
port@5 {
|
||||
status = "disabled";
|
||||
+
|
||||
+ fixed-link {
|
||||
+ speed = <1000>;
|
||||
+ full-duplex;
|
||||
+ };
|
||||
};
|
||||
|
||||
port@7 {
|
||||
status = "disabled";
|
||||
+
|
||||
+ fixed-link {
|
||||
+ speed = <1000>;
|
||||
+ full-duplex;
|
||||
+ };
|
||||
};
|
||||
|
||||
port@8 {
|
@ -0,0 +1,63 @@
|
||||
From 253358f373492608348136e569366d73cb969f6a Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Tue, 24 Oct 2023 09:26:05 +0200
|
||||
Subject: [PATCH] ARM: dts: BCM5301X: Set switch ports for Linksys EA9200
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This patch was developed as OpenWrt downstream change and was recently
|
||||
confirmed to work as expected.
|
||||
|
||||
Tested-by: Rani Hod <rani.hod@gmail.com>
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Link: https://lore.kernel.org/r/20231024072605.32517-1-zajec5@gmail.com
|
||||
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
|
||||
---
|
||||
.../dts/broadcom/bcm4709-linksys-ea9200.dts | 38 +++++++++++++++++++
|
||||
1 file changed, 38 insertions(+)
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm4709-linksys-ea9200.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4709-linksys-ea9200.dts
|
||||
@@ -47,3 +47,41 @@
|
||||
&usb3_phy {
|
||||
status = "okay";
|
||||
};
|
||||
+
|
||||
+&srab {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ label = "cpu";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
@ -90,7 +90,7 @@ it on BCM4708 family.
|
||||
/*
|
||||
* Reset a halted HC.
|
||||
*
|
||||
@@ -641,6 +684,14 @@ static int xhci_run_finished(struct xhci
|
||||
@@ -641,6 +684,15 @@ static int xhci_run_finished(struct xhci
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
@ -98,6 +98,7 @@ it on BCM4708 family.
|
||||
+ int err = xhci_fake_doorbell(xhci, 1);
|
||||
+ if (err) {
|
||||
+ xhci_halt(xhci);
|
||||
+ spin_unlock_irqrestore(&xhci->lock, flags);
|
||||
+ return err;
|
||||
+ }
|
||||
+ }
|
||||
|
@ -10,7 +10,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm4708-asus-rt-ac56u.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4708-asus-rt-ac56u.dts
|
||||
@@ -92,3 +92,40 @@
|
||||
@@ -92,3 +92,41 @@
|
||||
&usb3_phy {
|
||||
status = "okay";
|
||||
};
|
||||
@ -20,40 +20,41 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ reg = <4>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ reg = <5>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac0>;
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/bcm4708-asus-rt-ac68u.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4708-asus-rt-ac68u.dts
|
||||
@@ -83,3 +83,40 @@
|
||||
@@ -83,3 +83,41 @@
|
||||
&usb3_phy {
|
||||
status = "okay";
|
||||
};
|
||||
@ -63,40 +64,41 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ reg = <4>;
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ reg = <5>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac0>;
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/bcm4708-buffalo-wzr-1750dhp.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4708-buffalo-wzr-1750dhp.dts
|
||||
@@ -149,3 +149,40 @@
|
||||
@@ -149,3 +149,41 @@
|
||||
&usb3_phy {
|
||||
status = "okay";
|
||||
};
|
||||
@ -106,40 +108,41 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ reg = <4>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ reg = <5>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac0>;
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/bcm4708-linksys-ea6300-v1.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4708-linksys-ea6300-v1.dts
|
||||
@@ -46,3 +46,40 @@
|
||||
@@ -46,3 +46,41 @@
|
||||
&usb3_phy {
|
||||
status = "okay";
|
||||
};
|
||||
@ -149,40 +152,41 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ reg = <4>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ reg = <5>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac0>;
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/bcm4708-linksys-ea6500-v2.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4708-linksys-ea6500-v2.dts
|
||||
@@ -43,3 +43,40 @@
|
||||
@@ -43,3 +43,41 @@
|
||||
&usb3_phy {
|
||||
status = "okay";
|
||||
};
|
||||
@ -192,40 +196,41 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ reg = <4>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ reg = <5>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac0>;
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/bcm4708-netgear-r6300-v2.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4708-netgear-r6300-v2.dts
|
||||
@@ -86,3 +86,40 @@
|
||||
@@ -86,3 +86,41 @@
|
||||
&usb3_phy {
|
||||
status = "okay";
|
||||
};
|
||||
@ -235,40 +240,41 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ reg = <4>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ reg = <5>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac0>;
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/bcm47081-asus-rt-n18u.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47081-asus-rt-n18u.dts
|
||||
@@ -77,3 +77,40 @@
|
||||
@@ -77,3 +77,41 @@
|
||||
&usb3_phy {
|
||||
status = "okay";
|
||||
};
|
||||
@ -278,40 +284,41 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ reg = <4>;
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ reg = <5>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac0>;
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts
|
||||
@@ -66,6 +66,38 @@
|
||||
@@ -77,6 +77,40 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@ -320,29 +327,31 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ reg = <7>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac1>;
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
@ -352,7 +361,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
compatible = "fixed-partitions";
|
||||
--- a/arch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dts
|
||||
@@ -130,3 +130,40 @@
|
||||
@@ -130,3 +130,41 @@
|
||||
&usb3_phy {
|
||||
status = "okay";
|
||||
};
|
||||
@ -362,88 +371,41 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ reg = <4>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ reg = <5>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac0>;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/bcm4709-linksys-ea9200.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4709-linksys-ea9200.dts
|
||||
@@ -47,3 +47,45 @@
|
||||
&usb3_phy {
|
||||
status = "okay";
|
||||
};
|
||||
+
|
||||
+&srab {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ reg = <4>;
|
||||
+ label = "wan";
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ reg = <8>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac2>;
|
||||
+
|
||||
+ fixed-link {
|
||||
+ speed = <1000>;
|
||||
+ full-duplex;
|
||||
+ };
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/bcm4709-netgear-r7000.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4709-netgear-r7000.dts
|
||||
@@ -104,3 +104,40 @@
|
||||
@@ -104,3 +104,41 @@
|
||||
&usb3_phy {
|
||||
status = "okay";
|
||||
};
|
||||
@ -453,40 +415,41 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ reg = <4>;
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ reg = <5>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac0>;
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/bcm47094-netgear-r8500.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-netgear-r8500.dts
|
||||
@@ -94,3 +94,45 @@
|
||||
@@ -94,3 +94,41 @@
|
||||
&usb3_phy {
|
||||
status = "okay";
|
||||
};
|
||||
@ -496,45 +459,41 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ reg = <4>;
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ reg = <8>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac2>;
|
||||
+ port@5 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ fixed-link {
|
||||
+ speed = <1000>;
|
||||
+ full-duplex;
|
||||
+ };
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ label = "cpu";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
--- a/arch/arm/boot/dts/bcm47094-phicomm-k3.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47094-phicomm-k3.dts
|
||||
@@ -38,6 +38,38 @@
|
||||
@@ -38,6 +38,40 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@ -543,29 +502,31 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ reg = <5>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac0>;
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
@ -575,7 +536,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
compatible = "fixed-partitions";
|
||||
--- a/arch/arm/boot/dts/bcm47081-tplink-archer-c5-v2.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47081-tplink-archer-c5-v2.dts
|
||||
@@ -91,6 +91,43 @@
|
||||
@@ -91,6 +91,44 @@
|
||||
};
|
||||
};
|
||||
|
||||
@ -584,34 +545,35 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ reg = <4>;
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ reg = <5>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac0>;
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
@ -621,7 +583,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm4709-tplink-archer-c9-v1.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4709-tplink-archer-c9-v1.dts
|
||||
@@ -100,6 +100,43 @@
|
||||
@@ -100,6 +100,44 @@
|
||||
vcc-gpio = <&chipcommon 12 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
@ -630,34 +592,35 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ reg = <4>;
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ reg = <5>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac0>;
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
@ -667,7 +630,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
|
||||
--- a/arch/arm/boot/dts/bcm47081-buffalo-wzr-900dhp.dts
|
||||
+++ b/arch/arm/boot/dts/bcm47081-buffalo-wzr-900dhp.dts
|
||||
@@ -107,3 +107,41 @@
|
||||
@@ -107,3 +107,42 @@
|
||||
&usb3_phy {
|
||||
status = "okay";
|
||||
};
|
||||
@ -677,34 +640,35 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@4 {
|
||||
+ reg = <4>;
|
||||
+ label = "wan";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ reg = <5>;
|
||||
+ label = "cpu";
|
||||
+ ethernet = <&gmac0>;
|
||||
+ };
|
||||
+
|
||||
+ port@7 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ port@8 {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
|
@ -17,7 +17,7 @@ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
|
||||
--- a/drivers/leds/Kconfig
|
||||
+++ b/drivers/leds/Kconfig
|
||||
@@ -288,6 +288,15 @@ config LEDS_COBALT_RAQ
|
||||
@@ -289,6 +289,15 @@ config LEDS_COBALT_RAQ
|
||||
help
|
||||
This option enables support for the Cobalt Raq series LEDs.
|
||||
|
||||
|
@ -17,7 +17,7 @@ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
|
||||
--- a/drivers/leds/Kconfig
|
||||
+++ b/drivers/leds/Kconfig
|
||||
@@ -281,6 +281,15 @@ config LEDS_COBALT_RAQ
|
||||
@@ -282,6 +282,15 @@ config LEDS_COBALT_RAQ
|
||||
help
|
||||
This option enables support for the Cobalt Raq series LEDs.
|
||||
|
||||
|
@ -0,0 +1,45 @@
|
||||
From a01633cd867b8ddf2d8321fe575dc3c54e037b09 Mon Sep 17 00:00:00 2001
|
||||
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
Date: Fri, 29 Jul 2022 16:03:46 +0200
|
||||
Subject: leds: turris-omnia: convert to use dev_groups
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
The driver core supports the ability to handle the creation and removal
|
||||
of device-specific sysfs files in a race-free manner. Take advantage of
|
||||
that by converting this driver to use this by moving the sysfs
|
||||
attributes into a group and assigning the dev_groups pointer to it.
|
||||
|
||||
Cc: Pavel Machek <pavel@ucw.cz>
|
||||
Cc: linux-leds@vger.kernel.org
|
||||
Cc: linux-kernel@vger.kernel.org
|
||||
Reviewed-by: Marek Behún <kabel@kernel.org>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
Signed-off-by: Pavel Machek <pavel@ucw.cz>
|
||||
---
|
||||
drivers/leds/leds-turris-omnia.c | 4 +---
|
||||
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||
|
||||
(limited to 'drivers/leds/leds-turris-omnia.c')
|
||||
|
||||
--- a/drivers/leds/leds-turris-omnia.c
|
||||
+++ b/drivers/leds/leds-turris-omnia.c
|
||||
@@ -239,9 +239,6 @@ static int omnia_leds_probe(struct i2c_c
|
||||
led += ret;
|
||||
}
|
||||
|
||||
- if (devm_device_add_groups(dev, omnia_led_controller_groups))
|
||||
- dev_warn(dev, "Could not add attribute group!\n");
|
||||
-
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -283,6 +280,7 @@ static struct i2c_driver omnia_leds_driv
|
||||
.driver = {
|
||||
.name = "leds-turris-omnia",
|
||||
.of_match_table = of_omnia_leds_match,
|
||||
+ .dev_groups = omnia_led_controller_groups,
|
||||
},
|
||||
};
|
||||
|
@ -0,0 +1,31 @@
|
||||
From 72a29725b6f2577fa447ca9059cdcd17100043b4 Mon Sep 17 00:00:00 2001
|
||||
From: Marek Behún <kabel@kernel.org>
|
||||
Date: Wed, 2 Aug 2023 18:07:45 +0200
|
||||
Subject: leds: turris-omnia: Use sysfs_emit() instead of sprintf()
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Use the dedicated sysfs_emit() function instead of sprintf() in sysfs
|
||||
attribute accessor brightness_show().
|
||||
|
||||
Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
Link: https://lore.kernel.org/r/20230802160748.11208-4-kabel@kernel.org
|
||||
Signed-off-by: Lee Jones <lee@kernel.org>
|
||||
---
|
||||
drivers/leds/leds-turris-omnia.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
(limited to 'drivers/leds/leds-turris-omnia.c')
|
||||
|
||||
--- a/drivers/leds/leds-turris-omnia.c
|
||||
+++ b/drivers/leds/leds-turris-omnia.c
|
||||
@@ -166,7 +166,7 @@ static ssize_t brightness_show(struct de
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
- return sprintf(buf, "%d\n", ret);
|
||||
+ return sysfs_emit(buf, "%d\n", ret);
|
||||
}
|
||||
|
||||
static ssize_t brightness_store(struct device *dev, struct device_attribute *a,
|
@ -0,0 +1,66 @@
|
||||
From 760b6b7925bf09491aafa4727eef74fc6bf738b0 Mon Sep 17 00:00:00 2001
|
||||
From: Marek Behún <kabel@kernel.org>
|
||||
Date: Wed, 2 Aug 2023 18:07:43 +0200
|
||||
Subject: leds: turris-omnia: Drop unnecessary mutex locking
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Do not lock driver mutex in the global LED panel brightness sysfs
|
||||
accessors brightness_show() and brightness_store().
|
||||
|
||||
The mutex locking is unnecessary here. The I2C transfers are guarded by
|
||||
I2C core locking mechanism, and the LED commands itself do not interfere
|
||||
with other commands.
|
||||
|
||||
Fixes: 089381b27abe ("leds: initial support for Turris Omnia LEDs")
|
||||
Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
Reviewed-by: Lee Jones <lee@kernel.org>
|
||||
Link: https://lore.kernel.org/r/20230802160748.11208-2-kabel@kernel.org
|
||||
Signed-off-by: Lee Jones <lee@kernel.org>
|
||||
---
|
||||
drivers/leds/leds-turris-omnia.c | 11 +----------
|
||||
1 file changed, 1 insertion(+), 10 deletions(-)
|
||||
|
||||
(limited to 'drivers/leds/leds-turris-omnia.c')
|
||||
|
||||
--- a/drivers/leds/leds-turris-omnia.c
|
||||
+++ b/drivers/leds/leds-turris-omnia.c
|
||||
@@ -156,12 +156,9 @@ static ssize_t brightness_show(struct de
|
||||
char *buf)
|
||||
{
|
||||
struct i2c_client *client = to_i2c_client(dev);
|
||||
- struct omnia_leds *leds = i2c_get_clientdata(client);
|
||||
int ret;
|
||||
|
||||
- mutex_lock(&leds->lock);
|
||||
ret = i2c_smbus_read_byte_data(client, CMD_LED_GET_BRIGHTNESS);
|
||||
- mutex_unlock(&leds->lock);
|
||||
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
@@ -173,7 +170,6 @@ static ssize_t brightness_store(struct d
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct i2c_client *client = to_i2c_client(dev);
|
||||
- struct omnia_leds *leds = i2c_get_clientdata(client);
|
||||
unsigned long brightness;
|
||||
int ret;
|
||||
|
||||
@@ -183,15 +179,10 @@ static ssize_t brightness_store(struct d
|
||||
if (brightness > 100)
|
||||
return -EINVAL;
|
||||
|
||||
- mutex_lock(&leds->lock);
|
||||
ret = i2c_smbus_write_byte_data(client, CMD_LED_SET_BRIGHTNESS,
|
||||
(u8)brightness);
|
||||
- mutex_unlock(&leds->lock);
|
||||
|
||||
- if (ret < 0)
|
||||
- return ret;
|
||||
-
|
||||
- return count;
|
||||
+ return ret < 0 ? ret : count;
|
||||
}
|
||||
static DEVICE_ATTR_RW(brightness);
|
||||
|
@ -0,0 +1,145 @@
|
||||
From 28350bc0ac77e17365ba87d3edb2db0a79c98fdd Mon Sep 17 00:00:00 2001
|
||||
From: Marek Behún <kabel@kernel.org>
|
||||
Date: Mon, 18 Sep 2023 18:11:01 +0200
|
||||
Subject: leds: turris-omnia: Do not use SMBUS calls
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
The leds-turris-omnia driver uses three function for I2C access:
|
||||
- i2c_smbus_write_byte_data() and i2c_smbus_read_byte_data(), which
|
||||
cause an emulated SMBUS transfer,
|
||||
- i2c_master_send(), which causes an ordinary I2C transfer.
|
||||
|
||||
The Turris Omnia MCU LED controller is not semantically SMBUS, it
|
||||
operates as a simple I2C bus. It does not implement any of the SMBUS
|
||||
specific features, like PEC, or procedure calls, or anything. Moreover
|
||||
the I2C controller driver also does not implement SMBUS, and so the
|
||||
emulated SMBUS procedure from drivers/i2c/i2c-core-smbus.c is used for
|
||||
the SMBUS calls, which gives an unnecessary overhead.
|
||||
|
||||
When I first wrote the driver, I was unaware of these facts, and I
|
||||
simply used the first function that worked.
|
||||
|
||||
Drop the I2C SMBUS calls and instead use simple I2C transfers.
|
||||
|
||||
Fixes: 089381b27abe ("leds: initial support for Turris Omnia LEDs")
|
||||
Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
Link: https://lore.kernel.org/r/20230918161104.20860-2-kabel@kernel.org
|
||||
Signed-off-by: Lee Jones <lee@kernel.org>
|
||||
---
|
||||
drivers/leds/leds-turris-omnia.c | 54 +++++++++++++++++++++++++++++++---------
|
||||
1 file changed, 42 insertions(+), 12 deletions(-)
|
||||
|
||||
--- a/drivers/leds/leds-turris-omnia.c
|
||||
+++ b/drivers/leds/leds-turris-omnia.c
|
||||
@@ -2,7 +2,7 @@
|
||||
/*
|
||||
* CZ.NIC's Turris Omnia LEDs driver
|
||||
*
|
||||
- * 2020 by Marek Behún <kabel@kernel.org>
|
||||
+ * 2020, 2023 by Marek Behún <kabel@kernel.org>
|
||||
*/
|
||||
|
||||
#include <linux/i2c.h>
|
||||
@@ -41,6 +41,37 @@ struct omnia_leds {
|
||||
struct omnia_led leds[];
|
||||
};
|
||||
|
||||
+static int omnia_cmd_write_u8(const struct i2c_client *client, u8 cmd, u8 val)
|
||||
+{
|
||||
+ u8 buf[2] = { cmd, val };
|
||||
+
|
||||
+ return i2c_master_send(client, buf, sizeof(buf));
|
||||
+}
|
||||
+
|
||||
+static int omnia_cmd_read_u8(const struct i2c_client *client, u8 cmd)
|
||||
+{
|
||||
+ struct i2c_msg msgs[2];
|
||||
+ u8 reply;
|
||||
+ int ret;
|
||||
+
|
||||
+ msgs[0].addr = client->addr;
|
||||
+ msgs[0].flags = 0;
|
||||
+ msgs[0].len = 1;
|
||||
+ msgs[0].buf = &cmd;
|
||||
+ msgs[1].addr = client->addr;
|
||||
+ msgs[1].flags = I2C_M_RD;
|
||||
+ msgs[1].len = 1;
|
||||
+ msgs[1].buf = &reply;
|
||||
+
|
||||
+ ret = i2c_transfer(client->adapter, msgs, ARRAY_SIZE(msgs));
|
||||
+ if (likely(ret == ARRAY_SIZE(msgs)))
|
||||
+ return reply;
|
||||
+ else if (ret < 0)
|
||||
+ return ret;
|
||||
+ else
|
||||
+ return -EIO;
|
||||
+}
|
||||
+
|
||||
static int omnia_led_brightness_set_blocking(struct led_classdev *cdev,
|
||||
enum led_brightness brightness)
|
||||
{
|
||||
@@ -64,7 +95,7 @@ static int omnia_led_brightness_set_bloc
|
||||
if (buf[2] || buf[3] || buf[4])
|
||||
state |= CMD_LED_STATE_ON;
|
||||
|
||||
- ret = i2c_smbus_write_byte_data(leds->client, CMD_LED_STATE, state);
|
||||
+ ret = omnia_cmd_write_u8(leds->client, CMD_LED_STATE, state);
|
||||
if (ret >= 0 && (state & CMD_LED_STATE_ON))
|
||||
ret = i2c_master_send(leds->client, buf, 5);
|
||||
|
||||
@@ -114,9 +145,9 @@ static int omnia_led_register(struct i2c
|
||||
cdev->brightness_set_blocking = omnia_led_brightness_set_blocking;
|
||||
|
||||
/* put the LED into software mode */
|
||||
- ret = i2c_smbus_write_byte_data(client, CMD_LED_MODE,
|
||||
- CMD_LED_MODE_LED(led->reg) |
|
||||
- CMD_LED_MODE_USER);
|
||||
+ ret = omnia_cmd_write_u8(client, CMD_LED_MODE,
|
||||
+ CMD_LED_MODE_LED(led->reg) |
|
||||
+ CMD_LED_MODE_USER);
|
||||
if (ret < 0) {
|
||||
dev_err(dev, "Cannot set LED %pOF to software mode: %i\n", np,
|
||||
ret);
|
||||
@@ -124,8 +155,8 @@ static int omnia_led_register(struct i2c
|
||||
}
|
||||
|
||||
/* disable the LED */
|
||||
- ret = i2c_smbus_write_byte_data(client, CMD_LED_STATE,
|
||||
- CMD_LED_STATE_LED(led->reg));
|
||||
+ ret = omnia_cmd_write_u8(client, CMD_LED_STATE,
|
||||
+ CMD_LED_STATE_LED(led->reg));
|
||||
if (ret < 0) {
|
||||
dev_err(dev, "Cannot set LED %pOF brightness: %i\n", np, ret);
|
||||
return ret;
|
||||
@@ -158,7 +189,7 @@ static ssize_t brightness_show(struct de
|
||||
struct i2c_client *client = to_i2c_client(dev);
|
||||
int ret;
|
||||
|
||||
- ret = i2c_smbus_read_byte_data(client, CMD_LED_GET_BRIGHTNESS);
|
||||
+ ret = omnia_cmd_read_u8(client, CMD_LED_GET_BRIGHTNESS);
|
||||
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
@@ -179,8 +210,7 @@ static ssize_t brightness_store(struct d
|
||||
if (brightness > 100)
|
||||
return -EINVAL;
|
||||
|
||||
- ret = i2c_smbus_write_byte_data(client, CMD_LED_SET_BRIGHTNESS,
|
||||
- (u8)brightness);
|
||||
+ ret = omnia_cmd_write_u8(client, CMD_LED_SET_BRIGHTNESS, brightness);
|
||||
|
||||
return ret < 0 ? ret : count;
|
||||
}
|
||||
@@ -238,8 +268,8 @@ static int omnia_leds_remove(struct i2c_
|
||||
u8 buf[5];
|
||||
|
||||
/* put all LEDs into default (HW triggered) mode */
|
||||
- i2c_smbus_write_byte_data(client, CMD_LED_MODE,
|
||||
- CMD_LED_MODE_LED(OMNIA_BOARD_LEDS));
|
||||
+ omnia_cmd_write_u8(client, CMD_LED_MODE,
|
||||
+ CMD_LED_MODE_LED(OMNIA_BOARD_LEDS));
|
||||
|
||||
/* set all LEDs color to [255, 255, 255] */
|
||||
buf[0] = CMD_LED_COLOR;
|
@ -0,0 +1,207 @@
|
||||
From 4d5ed2621c2437d40b8fe92bd0fd34b0b1870753 Mon Sep 17 00:00:00 2001
|
||||
From: Marek Behún <kabel@kernel.org>
|
||||
Date: Mon, 18 Sep 2023 18:11:02 +0200
|
||||
Subject: leds: turris-omnia: Make set_brightness() more efficient
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Implement caching of the LED color and state values that are sent to MCU
|
||||
in order to make the set_brightness() operation more efficient by
|
||||
avoiding I2C transactions which are not needed.
|
||||
|
||||
On Turris Omnia's MCU, which acts as the RGB LED controller, each LED
|
||||
has a RGB color, and a ON/OFF state, which are configurable via I2C
|
||||
commands CMD_LED_COLOR and CMD_LED_STATE.
|
||||
|
||||
The CMD_LED_COLOR command sends 5 bytes and the CMD_LED_STATE command 2
|
||||
bytes over the I2C bus, which operates at 100 kHz. With I2C overhead
|
||||
this allows ~1670 color changing commands and ~3200 state changing
|
||||
commands per second (or around 1000 color + state changes per second).
|
||||
This may seem more than enough, but the issue is that the I2C bus is
|
||||
shared with another peripheral, the MCU. The MCU exposes an interrupt
|
||||
interface, and it can trigger hundreds of interrupts per second. Each
|
||||
time, we need to read the interrupt state register over this I2C bus.
|
||||
Whenever we are sending a LED color/state changing command, the
|
||||
interrupt reading is waiting.
|
||||
|
||||
Currently, every time LED brightness or LED multi intensity is changed,
|
||||
we send a CMD_LED_STATE command, and if the computed color (brightness
|
||||
adjusted multi_intensity) is non-zero, we also send a CMD_LED_COLOR
|
||||
command.
|
||||
|
||||
Consider for example the situation when we have a netdev trigger enabled
|
||||
for a LED. The netdev trigger does not change the LED color, only the
|
||||
brightness (either to 0 or to currently configured brightness), and so
|
||||
there is no need to send the CMD_LED_COLOR command. But each change of
|
||||
brightness to 0 sends one CMD_LED_STATE command, and each change of
|
||||
brightness to max_brightness sends one CMD_LED_STATE command and one
|
||||
CMD_LED_COLOR command:
|
||||
set_brightness(0) -> CMD_LED_STATE
|
||||
set_brightness(255) -> CMD_LED_STATE + CMD_LED_COLOR
|
||||
(unnecessary)
|
||||
|
||||
We can avoid the unnecessary I2C transactions if we cache the values of
|
||||
state and color that are sent to the controller. If the color does not
|
||||
change from the one previously sent, there is no need to do the
|
||||
CMD_LED_COLOR I2C transaction, and if the state does not change, there
|
||||
is no need to do the CMD_LED_STATE transaction.
|
||||
|
||||
Because we need to make sure that our cached values are consistent with
|
||||
the controller state, add explicit setting of the LED color to white at
|
||||
probe time (this is the default setting when MCU resets, but does not
|
||||
necessarily need to be the case, for example if U-Boot played with the
|
||||
LED colors).
|
||||
|
||||
Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
Link: https://lore.kernel.org/r/20230918161104.20860-3-kabel@kernel.org
|
||||
Signed-off-by: Lee Jones <lee@kernel.org>
|
||||
---
|
||||
drivers/leds/leds-turris-omnia.c | 96 ++++++++++++++++++++++++++++++++--------
|
||||
1 file changed, 78 insertions(+), 18 deletions(-)
|
||||
|
||||
--- a/drivers/leds/leds-turris-omnia.c
|
||||
+++ b/drivers/leds/leds-turris-omnia.c
|
||||
@@ -30,6 +30,8 @@
|
||||
struct omnia_led {
|
||||
struct led_classdev_mc mc_cdev;
|
||||
struct mc_subled subled_info[OMNIA_LED_NUM_CHANNELS];
|
||||
+ u8 cached_channels[OMNIA_LED_NUM_CHANNELS];
|
||||
+ bool on;
|
||||
int reg;
|
||||
};
|
||||
|
||||
@@ -72,36 +74,82 @@ static int omnia_cmd_read_u8(const struc
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
+static int omnia_led_send_color_cmd(const struct i2c_client *client,
|
||||
+ struct omnia_led *led)
|
||||
+{
|
||||
+ char cmd[5];
|
||||
+ int ret;
|
||||
+
|
||||
+ cmd[0] = CMD_LED_COLOR;
|
||||
+ cmd[1] = led->reg;
|
||||
+ cmd[2] = led->subled_info[0].brightness;
|
||||
+ cmd[3] = led->subled_info[1].brightness;
|
||||
+ cmd[4] = led->subled_info[2].brightness;
|
||||
+
|
||||
+ /* Send the color change command */
|
||||
+ ret = i2c_master_send(client, cmd, 5);
|
||||
+ if (ret < 0)
|
||||
+ return ret;
|
||||
+
|
||||
+ /* Cache the RGB channel brightnesses */
|
||||
+ for (int i = 0; i < OMNIA_LED_NUM_CHANNELS; ++i)
|
||||
+ led->cached_channels[i] = led->subled_info[i].brightness;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+/* Determine if the computed RGB channels are different from the cached ones */
|
||||
+static bool omnia_led_channels_changed(struct omnia_led *led)
|
||||
+{
|
||||
+ for (int i = 0; i < OMNIA_LED_NUM_CHANNELS; ++i)
|
||||
+ if (led->subled_info[i].brightness != led->cached_channels[i])
|
||||
+ return true;
|
||||
+
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
static int omnia_led_brightness_set_blocking(struct led_classdev *cdev,
|
||||
enum led_brightness brightness)
|
||||
{
|
||||
struct led_classdev_mc *mc_cdev = lcdev_to_mccdev(cdev);
|
||||
struct omnia_leds *leds = dev_get_drvdata(cdev->dev->parent);
|
||||
struct omnia_led *led = to_omnia_led(mc_cdev);
|
||||
- u8 buf[5], state;
|
||||
- int ret;
|
||||
+ int err = 0;
|
||||
|
||||
mutex_lock(&leds->lock);
|
||||
|
||||
- led_mc_calc_color_components(&led->mc_cdev, brightness);
|
||||
+ /*
|
||||
+ * Only recalculate RGB brightnesses from intensities if brightness is
|
||||
+ * non-zero. Otherwise we won't be using them and we can save ourselves
|
||||
+ * some software divisions (Omnia's CPU does not implement the division
|
||||
+ * instruction).
|
||||
+ */
|
||||
+ if (brightness) {
|
||||
+ led_mc_calc_color_components(mc_cdev, brightness);
|
||||
+
|
||||
+ /*
|
||||
+ * Send color command only if brightness is non-zero and the RGB
|
||||
+ * channel brightnesses changed.
|
||||
+ */
|
||||
+ if (omnia_led_channels_changed(led))
|
||||
+ err = omnia_led_send_color_cmd(leds->client, led);
|
||||
+ }
|
||||
|
||||
- buf[0] = CMD_LED_COLOR;
|
||||
- buf[1] = led->reg;
|
||||
- buf[2] = mc_cdev->subled_info[0].brightness;
|
||||
- buf[3] = mc_cdev->subled_info[1].brightness;
|
||||
- buf[4] = mc_cdev->subled_info[2].brightness;
|
||||
-
|
||||
- state = CMD_LED_STATE_LED(led->reg);
|
||||
- if (buf[2] || buf[3] || buf[4])
|
||||
- state |= CMD_LED_STATE_ON;
|
||||
-
|
||||
- ret = omnia_cmd_write_u8(leds->client, CMD_LED_STATE, state);
|
||||
- if (ret >= 0 && (state & CMD_LED_STATE_ON))
|
||||
- ret = i2c_master_send(leds->client, buf, 5);
|
||||
+ /* Send on/off state change only if (bool)brightness changed */
|
||||
+ if (!err && !brightness != !led->on) {
|
||||
+ u8 state = CMD_LED_STATE_LED(led->reg);
|
||||
+
|
||||
+ if (brightness)
|
||||
+ state |= CMD_LED_STATE_ON;
|
||||
+
|
||||
+ err = omnia_cmd_write_u8(leds->client, CMD_LED_STATE, state);
|
||||
+ if (!err)
|
||||
+ led->on = !!brightness;
|
||||
+ }
|
||||
|
||||
mutex_unlock(&leds->lock);
|
||||
|
||||
- return ret;
|
||||
+ return err;
|
||||
}
|
||||
|
||||
static int omnia_led_register(struct i2c_client *client, struct omnia_led *led,
|
||||
@@ -129,11 +177,15 @@ static int omnia_led_register(struct i2c
|
||||
}
|
||||
|
||||
led->subled_info[0].color_index = LED_COLOR_ID_RED;
|
||||
- led->subled_info[0].channel = 0;
|
||||
led->subled_info[1].color_index = LED_COLOR_ID_GREEN;
|
||||
- led->subled_info[1].channel = 1;
|
||||
led->subled_info[2].color_index = LED_COLOR_ID_BLUE;
|
||||
- led->subled_info[2].channel = 2;
|
||||
+
|
||||
+ /* Initial color is white */
|
||||
+ for (int i = 0; i < OMNIA_LED_NUM_CHANNELS; ++i) {
|
||||
+ led->subled_info[i].intensity = 255;
|
||||
+ led->subled_info[i].brightness = 255;
|
||||
+ led->subled_info[i].channel = i;
|
||||
+ }
|
||||
|
||||
led->mc_cdev.subled_info = led->subled_info;
|
||||
led->mc_cdev.num_colors = OMNIA_LED_NUM_CHANNELS;
|
||||
@@ -162,6 +214,14 @@ static int omnia_led_register(struct i2c
|
||||
return ret;
|
||||
}
|
||||
|
||||
+ /* Set initial color and cache it */
|
||||
+ ret = omnia_led_send_color_cmd(client, led);
|
||||
+ if (ret < 0) {
|
||||
+ dev_err(dev, "Cannot set LED %pOF initial color: %i\n", np,
|
||||
+ ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
ret = devm_led_classdev_multicolor_register_ext(dev, &led->mc_cdev,
|
||||
&init_data);
|
||||
if (ret < 0) {
|
@ -0,0 +1,201 @@
|
||||
From aaf38273cf766d88296f4aa3f2e4e3c0d399a4a2 Mon Sep 17 00:00:00 2001
|
||||
From: Marek Behún <kabel@kernel.org>
|
||||
Date: Mon, 18 Sep 2023 18:11:03 +0200
|
||||
Subject: leds: turris-omnia: Support HW controlled mode via private trigger
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Add support for enabling MCU controlled mode of the Turris Omnia LEDs
|
||||
via a LED private trigger called "omnia-mcu". Recall that private LED
|
||||
triggers will only be listed in the sysfs trigger file for LEDs that
|
||||
support them (currently there is no user of this mechanism).
|
||||
|
||||
When in MCU controlled mode, the user can still set LED color, but the
|
||||
blinking is done by MCU, which does different things for different LEDs:
|
||||
- WAN LED is blinked according to the LED[0] pin of the WAN PHY
|
||||
- LAN LEDs are blinked according to the LED[0] output of the
|
||||
corresponding port of the LAN switch
|
||||
- PCIe LEDs are blinked according to the logical OR of the MiniPCIe port
|
||||
LED pins
|
||||
|
||||
In the future I want to make the netdev trigger to transparently offload
|
||||
the blinking to the HW if user sets compatible settings for the netdev
|
||||
trigger (for LEDs associated with network devices).
|
||||
There was some work on this already, and hopefully we will be able to
|
||||
complete it sometime, but for now there are still multiple blockers for
|
||||
this, and even if there weren't, we still would not be able to configure
|
||||
HW controlled mode for the LEDs associated with MiniPCIe ports.
|
||||
|
||||
In the meantime let's support HW controlled mode via the private LED
|
||||
trigger mechanism. If, in the future, we manage to complete the netdev
|
||||
trigger offloading, we can still keep this private trigger for backwards
|
||||
compatibility, if needed.
|
||||
|
||||
We also set "omnia-mcu" to cdev->default_trigger, so that the MCU keeps
|
||||
control until the user first wants to take over it. If a different
|
||||
default trigger is specified in device-tree via the
|
||||
'linux,default-trigger' property, LED class will overwrite
|
||||
cdev->default_trigger, and so the DT property will be respected.
|
||||
|
||||
Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
Link: https://lore.kernel.org/r/20230918161104.20860-4-kabel@kernel.org
|
||||
Signed-off-by: Lee Jones <lee@kernel.org>
|
||||
---
|
||||
drivers/leds/Kconfig | 1 +
|
||||
drivers/leds/leds-turris-omnia.c | 98 ++++++++++++++++++++++++++++++++++++----
|
||||
2 files changed, 91 insertions(+), 8 deletions(-)
|
||||
|
||||
--- a/drivers/leds/Kconfig
|
||||
+++ b/drivers/leds/Kconfig
|
||||
@@ -163,6 +163,7 @@ config LEDS_TURRIS_OMNIA
|
||||
depends on I2C
|
||||
depends on MACH_ARMADA_38X || COMPILE_TEST
|
||||
depends on OF
|
||||
+ select LEDS_TRIGGERS
|
||||
help
|
||||
This option enables basic support for the LEDs found on the front
|
||||
side of CZ.NIC's Turris Omnia router. There are 12 RGB LEDs on the
|
||||
--- a/drivers/leds/leds-turris-omnia.c
|
||||
+++ b/drivers/leds/leds-turris-omnia.c
|
||||
@@ -31,7 +31,7 @@ struct omnia_led {
|
||||
struct led_classdev_mc mc_cdev;
|
||||
struct mc_subled subled_info[OMNIA_LED_NUM_CHANNELS];
|
||||
u8 cached_channels[OMNIA_LED_NUM_CHANNELS];
|
||||
- bool on;
|
||||
+ bool on, hwtrig;
|
||||
int reg;
|
||||
};
|
||||
|
||||
@@ -120,12 +120,14 @@ static int omnia_led_brightness_set_bloc
|
||||
|
||||
/*
|
||||
* Only recalculate RGB brightnesses from intensities if brightness is
|
||||
- * non-zero. Otherwise we won't be using them and we can save ourselves
|
||||
- * some software divisions (Omnia's CPU does not implement the division
|
||||
- * instruction).
|
||||
+ * non-zero (if it is zero and the LED is in HW blinking mode, we use
|
||||
+ * max_brightness as brightness). Otherwise we won't be using them and
|
||||
+ * we can save ourselves some software divisions (Omnia's CPU does not
|
||||
+ * implement the division instruction).
|
||||
*/
|
||||
- if (brightness) {
|
||||
- led_mc_calc_color_components(mc_cdev, brightness);
|
||||
+ if (brightness || led->hwtrig) {
|
||||
+ led_mc_calc_color_components(mc_cdev, brightness ?:
|
||||
+ cdev->max_brightness);
|
||||
|
||||
/*
|
||||
* Send color command only if brightness is non-zero and the RGB
|
||||
@@ -135,8 +137,11 @@ static int omnia_led_brightness_set_bloc
|
||||
err = omnia_led_send_color_cmd(leds->client, led);
|
||||
}
|
||||
|
||||
- /* Send on/off state change only if (bool)brightness changed */
|
||||
- if (!err && !brightness != !led->on) {
|
||||
+ /*
|
||||
+ * Send on/off state change only if (bool)brightness changed and the LED
|
||||
+ * is not being blinked by HW.
|
||||
+ */
|
||||
+ if (!err && !led->hwtrig && !brightness != !led->on) {
|
||||
u8 state = CMD_LED_STATE_LED(led->reg);
|
||||
|
||||
if (brightness)
|
||||
@@ -152,6 +157,71 @@ static int omnia_led_brightness_set_bloc
|
||||
return err;
|
||||
}
|
||||
|
||||
+static struct led_hw_trigger_type omnia_hw_trigger_type;
|
||||
+
|
||||
+static int omnia_hwtrig_activate(struct led_classdev *cdev)
|
||||
+{
|
||||
+ struct led_classdev_mc *mc_cdev = lcdev_to_mccdev(cdev);
|
||||
+ struct omnia_leds *leds = dev_get_drvdata(cdev->dev->parent);
|
||||
+ struct omnia_led *led = to_omnia_led(mc_cdev);
|
||||
+ int err = 0;
|
||||
+
|
||||
+ mutex_lock(&leds->lock);
|
||||
+
|
||||
+ if (!led->on) {
|
||||
+ /*
|
||||
+ * If the LED is off (brightness was set to 0), the last
|
||||
+ * configured color was not necessarily sent to the MCU.
|
||||
+ * Recompute with max_brightness and send if needed.
|
||||
+ */
|
||||
+ led_mc_calc_color_components(mc_cdev, cdev->max_brightness);
|
||||
+
|
||||
+ if (omnia_led_channels_changed(led))
|
||||
+ err = omnia_led_send_color_cmd(leds->client, led);
|
||||
+ }
|
||||
+
|
||||
+ if (!err) {
|
||||
+ /* Put the LED into MCU controlled mode */
|
||||
+ err = omnia_cmd_write_u8(leds->client, CMD_LED_MODE,
|
||||
+ CMD_LED_MODE_LED(led->reg));
|
||||
+ if (!err)
|
||||
+ led->hwtrig = true;
|
||||
+ }
|
||||
+
|
||||
+ mutex_unlock(&leds->lock);
|
||||
+
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
+static void omnia_hwtrig_deactivate(struct led_classdev *cdev)
|
||||
+{
|
||||
+ struct omnia_leds *leds = dev_get_drvdata(cdev->dev->parent);
|
||||
+ struct omnia_led *led = to_omnia_led(lcdev_to_mccdev(cdev));
|
||||
+ int err;
|
||||
+
|
||||
+ mutex_lock(&leds->lock);
|
||||
+
|
||||
+ led->hwtrig = false;
|
||||
+
|
||||
+ /* Put the LED into software mode */
|
||||
+ err = omnia_cmd_write_u8(leds->client, CMD_LED_MODE,
|
||||
+ CMD_LED_MODE_LED(led->reg) |
|
||||
+ CMD_LED_MODE_USER);
|
||||
+
|
||||
+ mutex_unlock(&leds->lock);
|
||||
+
|
||||
+ if (err < 0)
|
||||
+ dev_err(cdev->dev, "Cannot put LED to software mode: %i\n",
|
||||
+ err);
|
||||
+}
|
||||
+
|
||||
+static struct led_trigger omnia_hw_trigger = {
|
||||
+ .name = "omnia-mcu",
|
||||
+ .activate = omnia_hwtrig_activate,
|
||||
+ .deactivate = omnia_hwtrig_deactivate,
|
||||
+ .trigger_type = &omnia_hw_trigger_type,
|
||||
+};
|
||||
+
|
||||
static int omnia_led_register(struct i2c_client *client, struct omnia_led *led,
|
||||
struct device_node *np)
|
||||
{
|
||||
@@ -195,6 +265,12 @@ static int omnia_led_register(struct i2c
|
||||
cdev = &led->mc_cdev.led_cdev;
|
||||
cdev->max_brightness = 255;
|
||||
cdev->brightness_set_blocking = omnia_led_brightness_set_blocking;
|
||||
+ cdev->trigger_type = &omnia_hw_trigger_type;
|
||||
+ /*
|
||||
+ * Use the omnia-mcu trigger as the default trigger. It may be rewritten
|
||||
+ * by LED class from the linux,default-trigger property.
|
||||
+ */
|
||||
+ cdev->default_trigger = omnia_hw_trigger.name;
|
||||
|
||||
/* put the LED into software mode */
|
||||
ret = omnia_cmd_write_u8(client, CMD_LED_MODE,
|
||||
@@ -309,6 +385,12 @@ static int omnia_leds_probe(struct i2c_c
|
||||
|
||||
mutex_init(&leds->lock);
|
||||
|
||||
+ ret = devm_led_trigger_register(dev, &omnia_hw_trigger);
|
||||
+ if (ret < 0) {
|
||||
+ dev_err(dev, "Cannot register private LED trigger: %d\n", ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
led = &leds->leds[0];
|
||||
for_each_available_child_of_node(np, child) {
|
||||
ret = omnia_led_register(client, led, child);
|
@ -0,0 +1,244 @@
|
||||
From 00125699bb35ef58fffa8425e32a44a7af82cd28 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Marek=20Beh=C3=BAn?= <kabel@kernel.org>
|
||||
Date: Mon, 18 Sep 2023 18:11:04 +0200
|
||||
Subject: [PATCH 07/17] leds: turris-omnia: Add support for enabling/disabling
|
||||
HW gamma correction
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
If the MCU on Turris Omnia is running newer firmware versions, the LED
|
||||
controller supports RGB gamma correction (and enables it by default for
|
||||
newer boards).
|
||||
|
||||
Determine whether the gamma correction setting feature is supported and
|
||||
add the ability to set it via sysfs attribute file.
|
||||
|
||||
Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
Link: https://lore.kernel.org/r/20230918161104.20860-5-kabel@kernel.org
|
||||
Signed-off-by: Lee Jones <lee@kernel.org>
|
||||
---
|
||||
.../sysfs-class-led-driver-turris-omnia | 14 ++
|
||||
drivers/leds/leds-turris-omnia.c | 137 +++++++++++++++---
|
||||
2 files changed, 134 insertions(+), 17 deletions(-)
|
||||
|
||||
--- a/Documentation/ABI/testing/sysfs-class-led-driver-turris-omnia
|
||||
+++ b/Documentation/ABI/testing/sysfs-class-led-driver-turris-omnia
|
||||
@@ -12,3 +12,17 @@ Description: (RW) On the front panel of
|
||||
able to change this setting from software.
|
||||
|
||||
Format: %i
|
||||
+
|
||||
+What: /sys/class/leds/<led>/device/gamma_correction
|
||||
+Date: August 2023
|
||||
+KernelVersion: 6.6
|
||||
+Contact: Marek Behún <kabel@kernel.org>
|
||||
+Description: (RW) Newer versions of the microcontroller firmware of the
|
||||
+ Turris Omnia router support gamma correction for the RGB LEDs.
|
||||
+ This feature can be enabled/disabled by writing to this file.
|
||||
+
|
||||
+ If the feature is not supported because the MCU firmware is too
|
||||
+ old, the file always reads as 0, and writing to the file results
|
||||
+ in the EOPNOTSUPP error.
|
||||
+
|
||||
+ Format: %i
|
||||
--- a/drivers/leds/leds-turris-omnia.c
|
||||
+++ b/drivers/leds/leds-turris-omnia.c
|
||||
@@ -15,17 +15,30 @@
|
||||
#define OMNIA_BOARD_LEDS 12
|
||||
#define OMNIA_LED_NUM_CHANNELS 3
|
||||
|
||||
-#define CMD_LED_MODE 3
|
||||
-#define CMD_LED_MODE_LED(l) ((l) & 0x0f)
|
||||
-#define CMD_LED_MODE_USER 0x10
|
||||
-
|
||||
-#define CMD_LED_STATE 4
|
||||
-#define CMD_LED_STATE_LED(l) ((l) & 0x0f)
|
||||
-#define CMD_LED_STATE_ON 0x10
|
||||
-
|
||||
-#define CMD_LED_COLOR 5
|
||||
-#define CMD_LED_SET_BRIGHTNESS 7
|
||||
-#define CMD_LED_GET_BRIGHTNESS 8
|
||||
+/* MCU controller commands at I2C address 0x2a */
|
||||
+#define OMNIA_MCU_I2C_ADDR 0x2a
|
||||
+
|
||||
+#define CMD_GET_STATUS_WORD 0x01
|
||||
+#define STS_FEATURES_SUPPORTED BIT(2)
|
||||
+
|
||||
+#define CMD_GET_FEATURES 0x10
|
||||
+#define FEAT_LED_GAMMA_CORRECTION BIT(5)
|
||||
+
|
||||
+/* LED controller commands at I2C address 0x2b */
|
||||
+#define CMD_LED_MODE 0x03
|
||||
+#define CMD_LED_MODE_LED(l) ((l) & 0x0f)
|
||||
+#define CMD_LED_MODE_USER 0x10
|
||||
+
|
||||
+#define CMD_LED_STATE 0x04
|
||||
+#define CMD_LED_STATE_LED(l) ((l) & 0x0f)
|
||||
+#define CMD_LED_STATE_ON 0x10
|
||||
+
|
||||
+#define CMD_LED_COLOR 0x05
|
||||
+#define CMD_LED_SET_BRIGHTNESS 0x07
|
||||
+#define CMD_LED_GET_BRIGHTNESS 0x08
|
||||
+
|
||||
+#define CMD_SET_GAMMA_CORRECTION 0x30
|
||||
+#define CMD_GET_GAMMA_CORRECTION 0x31
|
||||
|
||||
struct omnia_led {
|
||||
struct led_classdev_mc mc_cdev;
|
||||
@@ -40,6 +53,7 @@ struct omnia_led {
|
||||
struct omnia_leds {
|
||||
struct i2c_client *client;
|
||||
struct mutex lock;
|
||||
+ bool has_gamma_correction;
|
||||
struct omnia_led leds[];
|
||||
};
|
||||
|
||||
@@ -50,30 +64,42 @@ static int omnia_cmd_write_u8(const stru
|
||||
return i2c_master_send(client, buf, sizeof(buf));
|
||||
}
|
||||
|
||||
-static int omnia_cmd_read_u8(const struct i2c_client *client, u8 cmd)
|
||||
+static int omnia_cmd_read_raw(struct i2c_adapter *adapter, u8 addr, u8 cmd,
|
||||
+ void *reply, size_t len)
|
||||
{
|
||||
struct i2c_msg msgs[2];
|
||||
- u8 reply;
|
||||
int ret;
|
||||
|
||||
- msgs[0].addr = client->addr;
|
||||
+ msgs[0].addr = addr;
|
||||
msgs[0].flags = 0;
|
||||
msgs[0].len = 1;
|
||||
msgs[0].buf = &cmd;
|
||||
- msgs[1].addr = client->addr;
|
||||
+ msgs[1].addr = addr;
|
||||
msgs[1].flags = I2C_M_RD;
|
||||
- msgs[1].len = 1;
|
||||
- msgs[1].buf = &reply;
|
||||
+ msgs[1].len = len;
|
||||
+ msgs[1].buf = reply;
|
||||
|
||||
- ret = i2c_transfer(client->adapter, msgs, ARRAY_SIZE(msgs));
|
||||
+ ret = i2c_transfer(adapter, msgs, ARRAY_SIZE(msgs));
|
||||
if (likely(ret == ARRAY_SIZE(msgs)))
|
||||
- return reply;
|
||||
+ return len;
|
||||
else if (ret < 0)
|
||||
return ret;
|
||||
else
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
+static int omnia_cmd_read_u8(const struct i2c_client *client, u8 cmd)
|
||||
+{
|
||||
+ u8 reply;
|
||||
+ int ret;
|
||||
+
|
||||
+ ret = omnia_cmd_read_raw(client->adapter, client->addr, cmd, &reply, 1);
|
||||
+ if (ret < 0)
|
||||
+ return ret;
|
||||
+
|
||||
+ return reply;
|
||||
+}
|
||||
+
|
||||
static int omnia_led_send_color_cmd(const struct i2c_client *client,
|
||||
struct omnia_led *led)
|
||||
{
|
||||
@@ -352,12 +378,74 @@ static ssize_t brightness_store(struct d
|
||||
}
|
||||
static DEVICE_ATTR_RW(brightness);
|
||||
|
||||
+static ssize_t gamma_correction_show(struct device *dev,
|
||||
+ struct device_attribute *a, char *buf)
|
||||
+{
|
||||
+ struct i2c_client *client = to_i2c_client(dev);
|
||||
+ struct omnia_leds *leds = i2c_get_clientdata(client);
|
||||
+ int ret;
|
||||
+
|
||||
+ if (leds->has_gamma_correction) {
|
||||
+ ret = omnia_cmd_read_u8(client, CMD_GET_GAMMA_CORRECTION);
|
||||
+ if (ret < 0)
|
||||
+ return ret;
|
||||
+ } else {
|
||||
+ ret = 0;
|
||||
+ }
|
||||
+
|
||||
+ return sysfs_emit(buf, "%d\n", !!ret);
|
||||
+}
|
||||
+
|
||||
+static ssize_t gamma_correction_store(struct device *dev,
|
||||
+ struct device_attribute *a,
|
||||
+ const char *buf, size_t count)
|
||||
+{
|
||||
+ struct i2c_client *client = to_i2c_client(dev);
|
||||
+ struct omnia_leds *leds = i2c_get_clientdata(client);
|
||||
+ bool val;
|
||||
+ int ret;
|
||||
+
|
||||
+ if (!leds->has_gamma_correction)
|
||||
+ return -EOPNOTSUPP;
|
||||
+
|
||||
+ if (kstrtobool(buf, &val) < 0)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ ret = omnia_cmd_write_u8(client, CMD_SET_GAMMA_CORRECTION, val);
|
||||
+
|
||||
+ return ret < 0 ? ret : count;
|
||||
+}
|
||||
+static DEVICE_ATTR_RW(gamma_correction);
|
||||
+
|
||||
static struct attribute *omnia_led_controller_attrs[] = {
|
||||
&dev_attr_brightness.attr,
|
||||
+ &dev_attr_gamma_correction.attr,
|
||||
NULL,
|
||||
};
|
||||
ATTRIBUTE_GROUPS(omnia_led_controller);
|
||||
|
||||
+static int omnia_mcu_get_features(const struct i2c_client *client)
|
||||
+{
|
||||
+ u16 reply;
|
||||
+ int err;
|
||||
+
|
||||
+ err = omnia_cmd_read_raw(client->adapter, OMNIA_MCU_I2C_ADDR,
|
||||
+ CMD_GET_STATUS_WORD, &reply, sizeof(reply));
|
||||
+ if (err < 0)
|
||||
+ return err;
|
||||
+
|
||||
+ /* Check whether MCU firmware supports the CMD_GET_FEAUTRES command */
|
||||
+ if (!(le16_to_cpu(reply) & STS_FEATURES_SUPPORTED))
|
||||
+ return 0;
|
||||
+
|
||||
+ err = omnia_cmd_read_raw(client->adapter, OMNIA_MCU_I2C_ADDR,
|
||||
+ CMD_GET_FEATURES, &reply, sizeof(reply));
|
||||
+ if (err < 0)
|
||||
+ return err;
|
||||
+
|
||||
+ return le16_to_cpu(reply);
|
||||
+}
|
||||
+
|
||||
static int omnia_leds_probe(struct i2c_client *client,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
@@ -383,6 +471,21 @@ static int omnia_leds_probe(struct i2c_c
|
||||
leds->client = client;
|
||||
i2c_set_clientdata(client, leds);
|
||||
|
||||
+ ret = omnia_mcu_get_features(client);
|
||||
+ if (ret < 0) {
|
||||
+ dev_err(dev, "Cannot determine MCU supported features: %d\n",
|
||||
+ ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ leds->has_gamma_correction = ret & FEAT_LED_GAMMA_CORRECTION;
|
||||
+ if (!leds->has_gamma_correction) {
|
||||
+ dev_info(dev,
|
||||
+ "Your board's MCU firmware does not support the LED gamma correction feature.\n");
|
||||
+ dev_info(dev,
|
||||
+ "Consider upgrading MCU firmware with the omnia-mcutool utility.\n");
|
||||
+ }
|
||||
+
|
||||
mutex_init(&leds->lock);
|
||||
|
||||
ret = devm_led_trigger_register(dev, &omnia_hw_trigger);
|
@ -0,0 +1,167 @@
|
||||
From 33f339b70f020273ea40fb3c5d7b65697446bd6c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Marek=20Beh=C3=BAn?= <kabel@kernel.org>
|
||||
Date: Mon, 16 Oct 2023 15:28:06 +0200
|
||||
Subject: [PATCH 08/17] leds: turris-omnia: Fix brightness setting and trigger
|
||||
activating
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
I have improperly refactored commits
|
||||
4d5ed2621c24 ("leds: turris-omnia: Make set_brightness() more efficient")
|
||||
and
|
||||
aaf38273cf76 ("leds: turris-omnia: Support HW controlled mode via private trigger")
|
||||
after Lee requested a change in API semantics of the new functions I
|
||||
introduced in commit
|
||||
28350bc0ac77 ("leds: turris-omnia: Do not use SMBUS calls").
|
||||
|
||||
Before the change, the function omnia_cmd_write_u8() returned 0 on
|
||||
success, and afterwards it returned a positive value (number of bytes
|
||||
written). The latter version was applied, but the following commits did
|
||||
not properly account for this change.
|
||||
|
||||
This results in non-functional LED's .brightness_set_blocking() and
|
||||
trigger's .activate() methods.
|
||||
|
||||
The main reasoning behind the semantics change was that read/write
|
||||
methods should return the number of read/written bytes on success.
|
||||
It was pointed to me [1] that this is not always true (for example the
|
||||
regmap API does not do so), and since the driver never uses this number
|
||||
of read/written bytes information, I decided to fix this issue by
|
||||
changing the functions to the original semantics (return 0 on success).
|
||||
|
||||
[1] https://lore.kernel.org/linux-gpio/ZQnn+Gi0xVlsGCYA@smile.fi.intel.com/
|
||||
|
||||
Fixes: 28350bc0ac77 ("leds: turris-omnia: Do not use SMBUS calls")
|
||||
Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
---
|
||||
drivers/leds/leds-turris-omnia.c | 37 +++++++++++++++++---------------
|
||||
1 file changed, 20 insertions(+), 17 deletions(-)
|
||||
|
||||
--- a/drivers/leds/leds-turris-omnia.c
|
||||
+++ b/drivers/leds/leds-turris-omnia.c
|
||||
@@ -60,8 +60,11 @@ struct omnia_leds {
|
||||
static int omnia_cmd_write_u8(const struct i2c_client *client, u8 cmd, u8 val)
|
||||
{
|
||||
u8 buf[2] = { cmd, val };
|
||||
+ int ret;
|
||||
+
|
||||
+ ret = i2c_master_send(client, buf, sizeof(buf));
|
||||
|
||||
- return i2c_master_send(client, buf, sizeof(buf));
|
||||
+ return ret < 0 ? ret : 0;
|
||||
}
|
||||
|
||||
static int omnia_cmd_read_raw(struct i2c_adapter *adapter, u8 addr, u8 cmd,
|
||||
@@ -81,7 +84,7 @@ static int omnia_cmd_read_raw(struct i2c
|
||||
|
||||
ret = i2c_transfer(adapter, msgs, ARRAY_SIZE(msgs));
|
||||
if (likely(ret == ARRAY_SIZE(msgs)))
|
||||
- return len;
|
||||
+ return 0;
|
||||
else if (ret < 0)
|
||||
return ret;
|
||||
else
|
||||
@@ -91,11 +94,11 @@ static int omnia_cmd_read_raw(struct i2c
|
||||
static int omnia_cmd_read_u8(const struct i2c_client *client, u8 cmd)
|
||||
{
|
||||
u8 reply;
|
||||
- int ret;
|
||||
+ int err;
|
||||
|
||||
- ret = omnia_cmd_read_raw(client->adapter, client->addr, cmd, &reply, 1);
|
||||
- if (ret < 0)
|
||||
- return ret;
|
||||
+ err = omnia_cmd_read_raw(client->adapter, client->addr, cmd, &reply, 1);
|
||||
+ if (err)
|
||||
+ return err;
|
||||
|
||||
return reply;
|
||||
}
|
||||
@@ -236,7 +239,7 @@ static void omnia_hwtrig_deactivate(stru
|
||||
|
||||
mutex_unlock(&leds->lock);
|
||||
|
||||
- if (err < 0)
|
||||
+ if (err)
|
||||
dev_err(cdev->dev, "Cannot put LED to software mode: %i\n",
|
||||
err);
|
||||
}
|
||||
@@ -302,7 +305,7 @@ static int omnia_led_register(struct i2c
|
||||
ret = omnia_cmd_write_u8(client, CMD_LED_MODE,
|
||||
CMD_LED_MODE_LED(led->reg) |
|
||||
CMD_LED_MODE_USER);
|
||||
- if (ret < 0) {
|
||||
+ if (ret) {
|
||||
dev_err(dev, "Cannot set LED %pOF to software mode: %i\n", np,
|
||||
ret);
|
||||
return ret;
|
||||
@@ -311,7 +314,7 @@ static int omnia_led_register(struct i2c
|
||||
/* disable the LED */
|
||||
ret = omnia_cmd_write_u8(client, CMD_LED_STATE,
|
||||
CMD_LED_STATE_LED(led->reg));
|
||||
- if (ret < 0) {
|
||||
+ if (ret) {
|
||||
dev_err(dev, "Cannot set LED %pOF brightness: %i\n", np, ret);
|
||||
return ret;
|
||||
}
|
||||
@@ -364,7 +367,7 @@ static ssize_t brightness_store(struct d
|
||||
{
|
||||
struct i2c_client *client = to_i2c_client(dev);
|
||||
unsigned long brightness;
|
||||
- int ret;
|
||||
+ int err;
|
||||
|
||||
if (kstrtoul(buf, 10, &brightness))
|
||||
return -EINVAL;
|
||||
@@ -372,9 +375,9 @@ static ssize_t brightness_store(struct d
|
||||
if (brightness > 100)
|
||||
return -EINVAL;
|
||||
|
||||
- ret = omnia_cmd_write_u8(client, CMD_LED_SET_BRIGHTNESS, brightness);
|
||||
+ err = omnia_cmd_write_u8(client, CMD_LED_SET_BRIGHTNESS, brightness);
|
||||
|
||||
- return ret < 0 ? ret : count;
|
||||
+ return err ?: count;
|
||||
}
|
||||
static DEVICE_ATTR_RW(brightness);
|
||||
|
||||
@@ -403,7 +406,7 @@ static ssize_t gamma_correction_store(st
|
||||
struct i2c_client *client = to_i2c_client(dev);
|
||||
struct omnia_leds *leds = i2c_get_clientdata(client);
|
||||
bool val;
|
||||
- int ret;
|
||||
+ int err;
|
||||
|
||||
if (!leds->has_gamma_correction)
|
||||
return -EOPNOTSUPP;
|
||||
@@ -411,9 +414,9 @@ static ssize_t gamma_correction_store(st
|
||||
if (kstrtobool(buf, &val) < 0)
|
||||
return -EINVAL;
|
||||
|
||||
- ret = omnia_cmd_write_u8(client, CMD_SET_GAMMA_CORRECTION, val);
|
||||
+ err = omnia_cmd_write_u8(client, CMD_SET_GAMMA_CORRECTION, val);
|
||||
|
||||
- return ret < 0 ? ret : count;
|
||||
+ return err ?: count;
|
||||
}
|
||||
static DEVICE_ATTR_RW(gamma_correction);
|
||||
|
||||
@@ -431,7 +434,7 @@ static int omnia_mcu_get_features(const
|
||||
|
||||
err = omnia_cmd_read_raw(client->adapter, OMNIA_MCU_I2C_ADDR,
|
||||
CMD_GET_STATUS_WORD, &reply, sizeof(reply));
|
||||
- if (err < 0)
|
||||
+ if (err)
|
||||
return err;
|
||||
|
||||
/* Check whether MCU firmware supports the CMD_GET_FEAUTRES command */
|
||||
@@ -440,7 +443,7 @@ static int omnia_mcu_get_features(const
|
||||
|
||||
err = omnia_cmd_read_raw(client->adapter, OMNIA_MCU_I2C_ADDR,
|
||||
CMD_GET_FEATURES, &reply, sizeof(reply));
|
||||
- if (err < 0)
|
||||
+ if (err)
|
||||
return err;
|
||||
|
||||
return le16_to_cpu(reply);
|
@ -73,7 +73,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
/* Specifies the type of the struct net_device::ml_priv pointer */
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -1163,22 +1163,6 @@ int dev_change_name(struct net_device *d
|
||||
@@ -1188,22 +1188,6 @@ int dev_change_name(struct net_device *d
|
||||
|
||||
net = dev_net(dev);
|
||||
|
||||
@ -96,7 +96,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
down_write(&devnet_rename_sem);
|
||||
|
||||
if (strncmp(newname, dev->name, IFNAMSIZ) == 0) {
|
||||
@@ -1195,7 +1179,8 @@ int dev_change_name(struct net_device *d
|
||||
@@ -1220,7 +1204,8 @@ int dev_change_name(struct net_device *d
|
||||
}
|
||||
|
||||
if (oldname[0] && !strchr(oldname, '%'))
|
||||
|
@ -0,0 +1,93 @@
|
||||
From edd25a77e69b7c546c28077e5dffe72c54c0afe8 Mon Sep 17 00:00:00 2001
|
||||
From: Linus Walleij <linus.walleij@linaro.org>
|
||||
Date: Thu, 21 Sep 2023 22:18:12 +0200
|
||||
Subject: [PATCH 2/4] rtc: rtc7301: Support byte-addressed IO
|
||||
|
||||
The old RTC7301 driver in OpenWrt used byte access, but the
|
||||
current mainline Linux driver uses 32bit word access.
|
||||
|
||||
Make this configurable using device properties using the
|
||||
standard property "reg-io-width" in e.g. device tree.
|
||||
|
||||
This is needed for the USRobotics USR8200 which has the
|
||||
chip connected using byte accesses.
|
||||
|
||||
Debugging and testing by Howard Harte.
|
||||
|
||||
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
---
|
||||
drivers/rtc/rtc-r7301.c | 35 +++++++++++++++++++++++++++++++++--
|
||||
1 file changed, 33 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/rtc/rtc-r7301.c
|
||||
+++ b/drivers/rtc/rtc-r7301.c
|
||||
@@ -14,6 +14,7 @@
|
||||
#include <linux/module.h>
|
||||
#include <linux/mod_devicetable.h>
|
||||
#include <linux/delay.h>
|
||||
+#include <linux/property.h>
|
||||
#include <linux/regmap.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/rtc.h>
|
||||
@@ -55,12 +56,23 @@ struct rtc7301_priv {
|
||||
u8 bank;
|
||||
};
|
||||
|
||||
-static const struct regmap_config rtc7301_regmap_config = {
|
||||
+/*
|
||||
+ * When the device is memory-mapped, some platforms pack the registers into
|
||||
+ * 32-bit access using the lower 8 bits at each 4-byte stride, while others
|
||||
+ * expose them as simply consecutive bytes.
|
||||
+ */
|
||||
+static const struct regmap_config rtc7301_regmap_32_config = {
|
||||
.reg_bits = 32,
|
||||
.val_bits = 8,
|
||||
.reg_stride = 4,
|
||||
};
|
||||
|
||||
+static const struct regmap_config rtc7301_regmap_8_config = {
|
||||
+ .reg_bits = 8,
|
||||
+ .val_bits = 8,
|
||||
+ .reg_stride = 1,
|
||||
+};
|
||||
+
|
||||
static u8 rtc7301_read(struct rtc7301_priv *priv, unsigned int reg)
|
||||
{
|
||||
int reg_stride = regmap_get_reg_stride(priv->regmap);
|
||||
@@ -356,7 +368,9 @@ static int __init rtc7301_rtc_probe(stru
|
||||
void __iomem *regs;
|
||||
struct rtc7301_priv *priv;
|
||||
struct rtc_device *rtc;
|
||||
+ static const struct regmap_config *mapconf;
|
||||
int ret;
|
||||
+ u32 val;
|
||||
|
||||
priv = devm_kzalloc(&dev->dev, sizeof(*priv), GFP_KERNEL);
|
||||
if (!priv)
|
||||
@@ -366,8 +380,25 @@ static int __init rtc7301_rtc_probe(stru
|
||||
if (IS_ERR(regs))
|
||||
return PTR_ERR(regs);
|
||||
|
||||
+ ret = device_property_read_u32(&dev->dev, "reg-io-width", &val);
|
||||
+ if (ret)
|
||||
+ /* Default to 32bit accesses */
|
||||
+ val = 4;
|
||||
+
|
||||
+ switch (val) {
|
||||
+ case 1:
|
||||
+ mapconf = &rtc7301_regmap_8_config;
|
||||
+ break;
|
||||
+ case 4:
|
||||
+ mapconf = &rtc7301_regmap_32_config;
|
||||
+ break;
|
||||
+ default:
|
||||
+ dev_err(&dev->dev, "invalid reg-io-width %d\n", val);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
priv->regmap = devm_regmap_init_mmio(&dev->dev, regs,
|
||||
- &rtc7301_regmap_config);
|
||||
+ mapconf);
|
||||
if (IS_ERR(priv->regmap))
|
||||
return PTR_ERR(priv->regmap);
|
||||
|
@ -0,0 +1,82 @@
|
||||
From 49e5663b505070424e18099841943f34342aa405 Mon Sep 17 00:00:00 2001
|
||||
From: Linus Walleij <linus.walleij@linaro.org>
|
||||
Date: Sun, 24 Sep 2023 01:09:01 +0200
|
||||
Subject: [PATCH] net: phy: amd: Support the Altima AMI101L
|
||||
|
||||
The Altima AC101L is obviously compatible with the AMD PHY,
|
||||
as seen by reading the datasheet.
|
||||
|
||||
Datasheet: https://docs.broadcom.com/doc/AC101L-DS05-405-RDS.pdf
|
||||
|
||||
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
---
|
||||
drivers/net/phy/Kconfig | 4 ++--
|
||||
drivers/net/phy/amd.c | 33 +++++++++++++++++++++++----------
|
||||
2 files changed, 25 insertions(+), 12 deletions(-)
|
||||
|
||||
--- a/drivers/net/phy/Kconfig
|
||||
+++ b/drivers/net/phy/Kconfig
|
||||
@@ -72,9 +72,9 @@ config SFP
|
||||
comment "MII PHY device drivers"
|
||||
|
||||
config AMD_PHY
|
||||
- tristate "AMD PHYs"
|
||||
+ tristate "AMD and Altima PHYs"
|
||||
help
|
||||
- Currently supports the am79c874
|
||||
+ Currently supports the AMD am79c874 and Altima AC101L.
|
||||
|
||||
config MESON_GXL_PHY
|
||||
tristate "Amlogic Meson GXL Internal PHY"
|
||||
--- a/drivers/net/phy/amd.c
|
||||
+++ b/drivers/net/phy/amd.c
|
||||
@@ -13,6 +13,7 @@
|
||||
#include <linux/mii.h>
|
||||
#include <linux/phy.h>
|
||||
|
||||
+#define PHY_ID_AC101L 0x00225520
|
||||
#define PHY_ID_AM79C874 0x0022561b
|
||||
|
||||
#define MII_AM79C_IR 17 /* Interrupt Status/Control Register */
|
||||
@@ -87,19 +88,31 @@ static irqreturn_t am79c_handle_interrup
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
-static struct phy_driver am79c_driver[] = { {
|
||||
- .phy_id = PHY_ID_AM79C874,
|
||||
- .name = "AM79C874",
|
||||
- .phy_id_mask = 0xfffffff0,
|
||||
- /* PHY_BASIC_FEATURES */
|
||||
- .config_init = am79c_config_init,
|
||||
- .config_intr = am79c_config_intr,
|
||||
- .handle_interrupt = am79c_handle_interrupt,
|
||||
-} };
|
||||
+static struct phy_driver am79c_drivers[] = {
|
||||
+ {
|
||||
+ .phy_id = PHY_ID_AM79C874,
|
||||
+ .name = "AM79C874",
|
||||
+ .phy_id_mask = 0xfffffff0,
|
||||
+ /* PHY_BASIC_FEATURES */
|
||||
+ .config_init = am79c_config_init,
|
||||
+ .config_intr = am79c_config_intr,
|
||||
+ .handle_interrupt = am79c_handle_interrupt,
|
||||
+ },
|
||||
+ {
|
||||
+ .phy_id = PHY_ID_AC101L,
|
||||
+ .name = "AC101L",
|
||||
+ .phy_id_mask = 0xfffffff0,
|
||||
+ /* PHY_BASIC_FEATURES */
|
||||
+ .config_init = am79c_config_init,
|
||||
+ .config_intr = am79c_config_intr,
|
||||
+ .handle_interrupt = am79c_handle_interrupt,
|
||||
+ },
|
||||
+};
|
||||
|
||||
-module_phy_driver(am79c_driver);
|
||||
+module_phy_driver(am79c_drivers);
|
||||
|
||||
static struct mdio_device_id __maybe_unused amd_tbl[] = {
|
||||
+ { PHY_ID_AC101L, 0xfffffff0 },
|
||||
{ PHY_ID_AM79C874, 0xfffffff0 },
|
||||
{ }
|
||||
};
|
@ -105,7 +105,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
help
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -3579,6 +3579,11 @@ static int xmit_one(struct sk_buff *skb,
|
||||
@@ -3604,6 +3604,11 @@ static int xmit_one(struct sk_buff *skb,
|
||||
if (dev_nit_active(dev))
|
||||
dev_queue_xmit_nit(skb, dev);
|
||||
|
||||
|
@ -20,7 +20,7 @@ Subject: [PATCH] net/usb/qmi_wwan: add MeigLink modem support
|
||||
{QMI_FIXED_INTF(0x0408, 0xea42, 4)}, /* Yota / Megafon M100-1 */
|
||||
--- a/drivers/usb/serial/option.c
|
||||
+++ b/drivers/usb/serial/option.c
|
||||
@@ -244,6 +244,8 @@ static void option_instat_callback(struc
|
||||
@@ -247,6 +247,8 @@ static void option_instat_callback(struc
|
||||
#define UBLOX_PRODUCT_R410M 0x90b2
|
||||
/* These Yuga products use Qualcomm's vendor ID */
|
||||
#define YUGA_PRODUCT_CLM920_NC5 0x9625
|
||||
@ -29,7 +29,7 @@ Subject: [PATCH] net/usb/qmi_wwan: add MeigLink modem support
|
||||
|
||||
#define QUECTEL_VENDOR_ID 0x2c7c
|
||||
/* These Quectel products use Quectel's vendor ID */
|
||||
@@ -1180,6 +1182,11 @@ static const struct usb_device_id option
|
||||
@@ -1185,6 +1187,11 @@ static const struct usb_device_id option
|
||||
.driver_info = ZLP },
|
||||
{ USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96),
|
||||
.driver_info = RSVD(4) },
|
||||
|
@ -341,7 +341,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/net/ipv4/fib_trie.c
|
||||
+++ b/net/ipv4/fib_trie.c
|
||||
@@ -3032,11 +3032,13 @@ static const struct seq_operations fib_r
|
||||
@@ -3036,11 +3036,13 @@ static const struct seq_operations fib_r
|
||||
|
||||
int __net_init fib_proc_init(struct net *net)
|
||||
{
|
||||
@ -357,7 +357,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
fib_triestat_seq_show, NULL))
|
||||
goto out2;
|
||||
|
||||
@@ -3047,17 +3049,21 @@ int __net_init fib_proc_init(struct net
|
||||
@@ -3051,17 +3053,21 @@ int __net_init fib_proc_init(struct net
|
||||
return 0;
|
||||
|
||||
out3:
|
||||
|
@ -65,8 +65,8 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
static int absolute_percpu;
|
||||
static int base_relative;
|
||||
static int lto_clang;
|
||||
@@ -605,6 +606,9 @@ static void write_src(void)
|
||||
printf("\t.long\t%u\n", table[i]->seq);
|
||||
@@ -608,6 +609,9 @@ static void write_src(void)
|
||||
(unsigned char)(table[i]->seq >> 0));
|
||||
printf("\n");
|
||||
|
||||
+ if (uncompressed)
|
||||
@ -75,7 +75,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
output_label("kallsyms_token_table");
|
||||
off = 0;
|
||||
for (i = 0; i < 256; i++) {
|
||||
@@ -656,6 +660,9 @@ static unsigned char *find_token(unsigne
|
||||
@@ -659,6 +663,9 @@ static unsigned char *find_token(unsigne
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -85,7 +85,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
for (i = 0; i < len - 1; i++) {
|
||||
if (str[i] == token[0] && str[i+1] == token[1])
|
||||
return &str[i];
|
||||
@@ -728,6 +735,9 @@ static void optimize_result(void)
|
||||
@@ -731,6 +738,9 @@ static void optimize_result(void)
|
||||
{
|
||||
int i, best;
|
||||
|
||||
@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
/* using the '\0' symbol last allows compress_symbols to use standard
|
||||
* fast string functions */
|
||||
for (i = 255; i >= 0; i--) {
|
||||
@@ -889,6 +899,7 @@ int main(int argc, char **argv)
|
||||
@@ -892,6 +902,7 @@ int main(int argc, char **argv)
|
||||
{"absolute-percpu", no_argument, &absolute_percpu, 1},
|
||||
{"base-relative", no_argument, &base_relative, 1},
|
||||
{"lto-clang", no_argument, <o_clang, 1},
|
||||
|
@ -66,7 +66,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
static void rt_fibinfo_free(struct rtable __rcu **rtp)
|
||||
--- a/net/ipv4/fib_trie.c
|
||||
+++ b/net/ipv4/fib_trie.c
|
||||
@@ -2779,6 +2779,7 @@ static const char *const rtn_type_names[
|
||||
@@ -2783,6 +2783,7 @@ static const char *const rtn_type_names[
|
||||
[RTN_THROW] = "THROW",
|
||||
[RTN_NAT] = "NAT",
|
||||
[RTN_XRESOLVE] = "XRESOLVE",
|
||||
|
@ -44,7 +44,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -7597,6 +7597,48 @@ static void __netdev_adjacent_dev_unlink
|
||||
@@ -7622,6 +7622,48 @@ static void __netdev_adjacent_dev_unlink
|
||||
&upper_dev->adj_list.lower);
|
||||
}
|
||||
|
||||
@ -93,7 +93,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
static int __netdev_upper_dev_link(struct net_device *dev,
|
||||
struct net_device *upper_dev, bool master,
|
||||
void *upper_priv, void *upper_info,
|
||||
@@ -7648,6 +7690,7 @@ static int __netdev_upper_dev_link(struc
|
||||
@@ -7673,6 +7715,7 @@ static int __netdev_upper_dev_link(struc
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -101,7 +101,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
|
||||
&changeupper_info.info);
|
||||
ret = notifier_to_errno(ret);
|
||||
@@ -7744,6 +7787,7 @@ static void __netdev_upper_dev_unlink(st
|
||||
@@ -7769,6 +7812,7 @@ static void __netdev_upper_dev_unlink(st
|
||||
|
||||
__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev);
|
||||
|
||||
@ -109,7 +109,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
|
||||
&changeupper_info.info);
|
||||
|
||||
@@ -8796,6 +8840,7 @@ int dev_set_mac_address(struct net_devic
|
||||
@@ -8821,6 +8865,7 @@ int dev_set_mac_address(struct net_devic
|
||||
if (err)
|
||||
return err;
|
||||
dev->addr_assign_type = NET_ADDR_SET;
|
||||
|
@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
#endif
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -4597,7 +4597,7 @@ static int napi_schedule_rps(struct soft
|
||||
@@ -4622,7 +4622,7 @@ static int napi_schedule_rps(struct soft
|
||||
struct softnet_data *mysd = this_cpu_ptr(&softnet_data);
|
||||
|
||||
#ifdef CONFIG_RPS
|
||||
@ -39,7 +39,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
sd->rps_ipi_next = mysd->rps_ipi_list;
|
||||
mysd->rps_ipi_list = sd;
|
||||
|
||||
@@ -5778,6 +5778,8 @@ static DEFINE_PER_CPU(struct work_struct
|
||||
@@ -5803,6 +5803,8 @@ static DEFINE_PER_CPU(struct work_struct
|
||||
/* Network device is going away, flush any packets still pending */
|
||||
static void flush_backlog(struct work_struct *work)
|
||||
{
|
||||
@ -48,7 +48,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
struct sk_buff *skb, *tmp;
|
||||
struct softnet_data *sd;
|
||||
|
||||
@@ -5792,8 +5794,17 @@ static void flush_backlog(struct work_st
|
||||
@@ -5817,8 +5819,17 @@ static void flush_backlog(struct work_st
|
||||
input_queue_head_incr(sd);
|
||||
}
|
||||
}
|
||||
@ -66,7 +66,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
skb_queue_walk_safe(&sd->process_queue, skb, tmp) {
|
||||
if (skb->dev->reg_state == NETREG_UNREGISTERING) {
|
||||
__skb_unlink(skb, &sd->process_queue);
|
||||
@@ -5801,7 +5812,16 @@ static void flush_backlog(struct work_st
|
||||
@@ -5826,7 +5837,16 @@ static void flush_backlog(struct work_st
|
||||
input_queue_head_incr(sd);
|
||||
}
|
||||
}
|
||||
@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
}
|
||||
|
||||
static bool flush_required(int cpu)
|
||||
@@ -5933,6 +5953,7 @@ static int process_backlog(struct napi_s
|
||||
@@ -5958,6 +5978,7 @@ static int process_backlog(struct napi_s
|
||||
}
|
||||
|
||||
rps_lock_irq_disable(sd);
|
||||
@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (skb_queue_empty(&sd->input_pkt_queue)) {
|
||||
/*
|
||||
* Inline a custom version of __napi_complete().
|
||||
@@ -5942,7 +5963,8 @@ static int process_backlog(struct napi_s
|
||||
@@ -5967,7 +5988,8 @@ static int process_backlog(struct napi_s
|
||||
* We can use a plain write instead of clear_bit(),
|
||||
* and we dont need an smp_mb() memory barrier.
|
||||
*/
|
||||
@ -101,7 +101,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
again = false;
|
||||
} else {
|
||||
skb_queue_splice_tail_init(&sd->input_pkt_queue,
|
||||
@@ -6358,6 +6380,55 @@ int dev_set_threaded(struct net_device *
|
||||
@@ -6383,6 +6405,55 @@ int dev_set_threaded(struct net_device *
|
||||
}
|
||||
EXPORT_SYMBOL(dev_set_threaded);
|
||||
|
||||
@ -157,7 +157,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
void netif_napi_add_weight(struct net_device *dev, struct napi_struct *napi,
|
||||
int (*poll)(struct napi_struct *, int), int weight)
|
||||
{
|
||||
@@ -11130,6 +11201,9 @@ static int dev_cpu_dead(unsigned int old
|
||||
@@ -11165,6 +11236,9 @@ static int dev_cpu_dead(unsigned int old
|
||||
raise_softirq_irqoff(NET_TX_SOFTIRQ);
|
||||
local_irq_enable();
|
||||
|
||||
@ -167,7 +167,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
#ifdef CONFIG_RPS
|
||||
remsd = oldsd->rps_ipi_list;
|
||||
oldsd->rps_ipi_list = NULL;
|
||||
@@ -11433,6 +11507,7 @@ static int __init net_dev_init(void)
|
||||
@@ -11468,6 +11542,7 @@ static int __init net_dev_init(void)
|
||||
INIT_CSD(&sd->defer_csd, trigger_rx_softirq, sd);
|
||||
spin_lock_init(&sd->defer_lock);
|
||||
|
||||
|
@ -66,7 +66,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
||||
/**
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -6566,7 +6566,7 @@ static int __napi_poll(struct napi_struc
|
||||
@@ -6591,7 +6591,7 @@ static int __napi_poll(struct napi_struc
|
||||
* accidentally calling ->poll() when NAPI is not scheduled.
|
||||
*/
|
||||
work = 0;
|
||||
|
28
target/linux/ixp4xx/Makefile
Normal file
28
target/linux/ixp4xx/Makefile
Normal file
@ -0,0 +1,28 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
# Copyright (C) 2006-2023 OpenWrt.org
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
ARCH:=armeb
|
||||
BOARD:=ixp4xx
|
||||
BOARDNAME:=Intel XScale IXP4xx
|
||||
FEATURES:=dt squashfs gpio
|
||||
CPU_TYPE:=xscale
|
||||
|
||||
KERNEL_PATCHVER:=6.1
|
||||
|
||||
define Target/Description
|
||||
Build firmware images for the IXP4xx XScale CPU
|
||||
endef
|
||||
|
||||
KERNELNAME:=zImage dtbs
|
||||
|
||||
include $(INCLUDE_DIR)/target.mk
|
||||
|
||||
DEFAULT_PACKAGES += fconfig \
|
||||
kmod-crypto-hw-ixp4xx \
|
||||
kmod-usb-ledtrig-usbport \
|
||||
kmod-leds-gpio
|
||||
|
||||
$(eval $(call BuildTarget))
|
26
target/linux/ixp4xx/base-files/etc/board.d/02_network
Normal file
26
target/linux/ixp4xx/base-files/etc/board.d/02_network
Normal file
@ -0,0 +1,26 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
. /lib/functions/uci-defaults.sh
|
||||
|
||||
board_config_update
|
||||
|
||||
case "$(board_name)" in
|
||||
gateworks,gw2348|\
|
||||
gateworks,gw2358)
|
||||
ucidef_set_interfaces_lan_wan "eth0" "eth1"
|
||||
;;
|
||||
linksys,nslu2)
|
||||
ucidef_set_interface_lan "eth0" "dhcp"
|
||||
;;
|
||||
usr,usr8200)
|
||||
# LAN ports connected to eth1 thru the MV88E6060 DSA switch
|
||||
ucidef_set_interface "eth" device "eth1" protocol "none"
|
||||
ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" "eth0"
|
||||
;;
|
||||
*)
|
||||
ucidef_set_interface_lan "eth0" "dhcp"
|
||||
;;
|
||||
esac
|
||||
|
||||
board_config_flush
|
||||
|
||||
exit 0
|
@ -0,0 +1,38 @@
|
||||
#!/bin/sh
|
||||
. /lib/functions.sh
|
||||
. /lib/functions/system.sh
|
||||
|
||||
set_from_redboot () {
|
||||
for npe in eth0 eth1 eth2
|
||||
do
|
||||
if ip link show dev $npe > /dev/null 2>&1; then
|
||||
ip link set dev $npe address $(fconfig -s -r -d /dev/$1 -n npe_"$npe"_esa)
|
||||
fi
|
||||
done
|
||||
|
||||
# Devices with MAC address set blank: set a dummy value.
|
||||
if [ "$(ip link show dev eth0 2>/dev/null | grep -c 00:00:00:00:00:00)" = "1" ]; then
|
||||
ip link set dev eth0 address 00:11:22:33:44:55
|
||||
fi
|
||||
if [ "$(ip link show dev eth1 2>/dev/null | grep -c 00:00:00:00:00:00)" = "1" ]; then
|
||||
ip link set dev eth0 address 00:11:22:33:44:56
|
||||
fi
|
||||
}
|
||||
|
||||
set_from_sysconf () {
|
||||
ip link set dev eth0 address $(mtd_get_mac_ascii SysConf hw_addr)
|
||||
}
|
||||
|
||||
set_ether_mac () {
|
||||
RBC="$(grep "RedBoot config" /proc/mtd | cut -d: -f1)"
|
||||
if [ ! -z $RBC ] ; then
|
||||
set_from_redboot $RBC
|
||||
else
|
||||
SYSC="$(grep "SysConf" /proc/mtd | cut -d: -f1)"
|
||||
if [ ! -z $SYSC ] ; then
|
||||
set_from_sysconf
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
boot_hook_add preinit_main set_ether_mac
|
253
target/linux/ixp4xx/config-6.1
Normal file
253
target/linux/ixp4xx/config-6.1
Normal file
@ -0,0 +1,253 @@
|
||||
CONFIG_ALIGNMENT_TRAP=y
|
||||
CONFIG_AMD_PHY=y
|
||||
CONFIG_ARCH_32BIT_OFF_T=y
|
||||
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
|
||||
CONFIG_ARCH_IXP4XX=y
|
||||
CONFIG_ARCH_KEEP_MEMBLOCK=y
|
||||
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
|
||||
CONFIG_ARCH_MULTIPLATFORM=y
|
||||
CONFIG_ARCH_MULTI_CPU_AUTO=y
|
||||
# CONFIG_ARCH_MULTI_V4 is not set
|
||||
# CONFIG_ARCH_MULTI_V4T is not set
|
||||
CONFIG_ARCH_MULTI_V4_V5=y
|
||||
CONFIG_ARCH_MULTI_V5=y
|
||||
CONFIG_ARCH_NR_GPIO=0
|
||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
|
||||
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
||||
CONFIG_ARM=y
|
||||
CONFIG_ARM_APPENDED_DTB=y
|
||||
# CONFIG_ARM_ATAG_DTB_COMPAT is not set
|
||||
CONFIG_ARM_HAS_GROUP_RELOCS=y
|
||||
CONFIG_ARM_L1_CACHE_SHIFT=5
|
||||
CONFIG_ARM_PATCH_PHYS_VIRT=y
|
||||
CONFIG_ARM_THUMB=y
|
||||
CONFIG_ARM_UNWIND=y
|
||||
CONFIG_ATA=y
|
||||
CONFIG_ATAGS=y
|
||||
CONFIG_AUTO_ZRELADDR=y
|
||||
CONFIG_BINFMT_FLAT_ARGVP_ENVP_ON_STACK=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_BLK_MQ_PCI=y
|
||||
CONFIG_CC_HAVE_STACKPROTECTOR_TLS=y
|
||||
CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5"
|
||||
CONFIG_CC_NO_ARRAY_BOUNDS=y
|
||||
CONFIG_CLKSRC_MMIO=y
|
||||
CONFIG_CLONE_BACKWARDS=y
|
||||
CONFIG_COMMON_CLK=y
|
||||
CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
|
||||
CONFIG_COMPAT_32BIT_TIME=y
|
||||
CONFIG_CPU_32v5=y
|
||||
CONFIG_CPU_ABRT_EV5T=y
|
||||
CONFIG_CPU_BIG_ENDIAN=y
|
||||
CONFIG_CPU_CACHE_VIVT=y
|
||||
CONFIG_CPU_CP15=y
|
||||
CONFIG_CPU_CP15_MMU=y
|
||||
CONFIG_CPU_ENDIAN_BE32=y
|
||||
CONFIG_CPU_PABRT_LEGACY=y
|
||||
CONFIG_CPU_THUMB_CAPABLE=y
|
||||
CONFIG_CPU_TLB_V4WBI=y
|
||||
CONFIG_CPU_USE_DOMAINS=y
|
||||
CONFIG_CPU_XSCALE=y
|
||||
CONFIG_CRC16=y
|
||||
CONFIG_CRYPTO_AUTHENC=m
|
||||
CONFIG_CRYPTO_CBC=m
|
||||
CONFIG_CRYPTO_CRC32C=y
|
||||
CONFIG_CRYPTO_DES=m
|
||||
CONFIG_CRYPTO_DEV_IXP4XX=m
|
||||
CONFIG_CRYPTO_ECB=m
|
||||
CONFIG_CRYPTO_HW=y
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||
CONFIG_CRYPTO_LIB_DES=m
|
||||
CONFIG_CRYPTO_LIB_SHA1=y
|
||||
CONFIG_CRYPTO_LIB_UTILS=y
|
||||
CONFIG_CRYPTO_RNG2=y
|
||||
CONFIG_DEBUG_BUGVERBOSE=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
CONFIG_DEBUG_LL_INCLUDE="debug/8250.S"
|
||||
CONFIG_DEBUG_UART_8250=y
|
||||
CONFIG_DEBUG_UART_8250_SHIFT=2
|
||||
CONFIG_DEBUG_UART_PHYS=0xc8000003
|
||||
CONFIG_DEBUG_UART_VIRT=0xfec00003
|
||||
CONFIG_DMA_OPS=y
|
||||
CONFIG_DTC=y
|
||||
CONFIG_EDAC_ATOMIC_SCRUB=y
|
||||
CONFIG_EDAC_SUPPORT=y
|
||||
CONFIG_EXCLUSIVE_SYSTEM_RAM=y
|
||||
CONFIG_EXT4_FS=y
|
||||
# CONFIG_FARSYNC is not set
|
||||
CONFIG_FIXED_PHY=y
|
||||
CONFIG_FIX_EARLYCON_MEM=y
|
||||
CONFIG_FORCE_PCI=y
|
||||
CONFIG_FS_IOMAP=y
|
||||
CONFIG_FS_MBCACHE=y
|
||||
CONFIG_FWNODE_MDIO=y
|
||||
CONFIG_FW_LOADER_PAGED_BUF=y
|
||||
CONFIG_FW_LOADER_SYSFS=y
|
||||
CONFIG_GCC11_NO_ARRAY_BOUNDS=y
|
||||
CONFIG_GENERIC_ALLOCATOR=y
|
||||
CONFIG_GENERIC_ATOMIC64=y
|
||||
CONFIG_GENERIC_BUG=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
||||
CONFIG_GENERIC_CPU_AUTOPROBE=y
|
||||
CONFIG_GENERIC_EARLY_IOREMAP=y
|
||||
CONFIG_GENERIC_IDLE_POLL_SETUP=y
|
||||
CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
|
||||
CONFIG_GENERIC_IRQ_SHOW=y
|
||||
CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
|
||||
CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y
|
||||
CONFIG_GENERIC_PCI_IOMAP=y
|
||||
CONFIG_GENERIC_SCHED_CLOCK=y
|
||||
CONFIG_GENERIC_SMP_IDLE_THREAD=y
|
||||
CONFIG_GENERIC_STRNCPY_FROM_USER=y
|
||||
CONFIG_GENERIC_STRNLEN_USER=y
|
||||
CONFIG_GLOB=y
|
||||
CONFIG_GPIOLIB_IRQCHIP=y
|
||||
CONFIG_GPIO_CDEV=y
|
||||
CONFIG_GPIO_GENERIC=y
|
||||
CONFIG_GPIO_GW_PLD=y
|
||||
CONFIG_GPIO_IXP4XX=y
|
||||
CONFIG_HARDIRQS_SW_RESEND=y
|
||||
CONFIG_HAS_DMA=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT_MAP=y
|
||||
CONFIG_HDLC=y
|
||||
CONFIG_HWMON=y
|
||||
CONFIG_HWMON_VID=y
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_HW_RANDOM_IXP4XX=y
|
||||
CONFIG_HZ_FIXED=0
|
||||
CONFIG_HZ_PERIODIC=y
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_ALGOBIT=y
|
||||
CONFIG_I2C_BOARDINFO=y
|
||||
CONFIG_I2C_CHARDEV=y
|
||||
CONFIG_I2C_GPIO=y
|
||||
CONFIG_I2C_IOP3XX=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
CONFIG_INTEL_IXP4XX_EB=y
|
||||
CONFIG_IRQCHIP=y
|
||||
CONFIG_IRQSTACKS=y
|
||||
CONFIG_IRQ_DOMAIN=y
|
||||
CONFIG_IRQ_DOMAIN_HIERARCHY=y
|
||||
CONFIG_IRQ_FORCED_THREADING=y
|
||||
CONFIG_IRQ_WORK=y
|
||||
# CONFIG_IWMMXT is not set
|
||||
CONFIG_IXP4XX_ETH=y
|
||||
CONFIG_IXP4XX_HSS=y
|
||||
CONFIG_IXP4XX_IRQ=y
|
||||
CONFIG_IXP4XX_NPE=y
|
||||
CONFIG_IXP4XX_QMGR=y
|
||||
CONFIG_IXP4XX_TIMER=y
|
||||
CONFIG_IXP4XX_WATCHDOG=y
|
||||
CONFIG_JBD2=y
|
||||
CONFIG_LEDS_GPIO=y
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
CONFIG_LIBFDT=y
|
||||
CONFIG_LOCK_DEBUGGING_SUPPORT=y
|
||||
CONFIG_MDIO_BUS=y
|
||||
CONFIG_MDIO_DEVICE=y
|
||||
CONFIG_MDIO_DEVRES=y
|
||||
CONFIG_MEMFD_CREATE=y
|
||||
CONFIG_MFD_SYSCON=y
|
||||
CONFIG_MIGRATION=y
|
||||
CONFIG_MODULES_USE_ELF_REL=y
|
||||
CONFIG_MTD_CFI_ADV_OPTIONS=y
|
||||
# CONFIG_MTD_CFI_GEOMETRY is not set
|
||||
CONFIG_MTD_OTP=y
|
||||
CONFIG_MTD_PHYSMAP=y
|
||||
CONFIG_MTD_PHYSMAP_IXP4XX=y
|
||||
CONFIG_MTD_REDBOOT_PARTS=y
|
||||
CONFIG_MTD_SPLIT_FIRMWARE=y
|
||||
CONFIG_MTD_SPLIT_FIRMWARE_NAME="linux"
|
||||
CONFIG_NEED_DMA_MAP_STATE=y
|
||||
CONFIG_NEED_KUSER_HELPERS=y
|
||||
CONFIG_NEED_PER_CPU_KM=y
|
||||
CONFIG_NET_DSA=y
|
||||
CONFIG_NET_DSA_MV88E6060=y
|
||||
CONFIG_NET_PTP_CLASSIFY=y
|
||||
CONFIG_NET_SELFTESTS=y
|
||||
CONFIG_NET_VENDOR_XSCALE=y
|
||||
CONFIG_NLS=y
|
||||
CONFIG_NVMEM=y
|
||||
CONFIG_NVMEM_SYSFS=y
|
||||
CONFIG_OF=y
|
||||
CONFIG_OF_ADDRESS=y
|
||||
CONFIG_OF_EARLY_FLATTREE=y
|
||||
CONFIG_OF_FLATTREE=y
|
||||
CONFIG_OF_GPIO=y
|
||||
CONFIG_OF_IRQ=y
|
||||
CONFIG_OF_KOBJ=y
|
||||
CONFIG_OF_MDIO=y
|
||||
# CONFIG_OLD_SIGACTION is not set
|
||||
# CONFIG_OLD_SIGSUSPEND3 is not set
|
||||
CONFIG_PAGE_OFFSET=0xC0000000
|
||||
CONFIG_PAGE_POOL=y
|
||||
CONFIG_PAGE_SIZE_LESS_THAN_256KB=y
|
||||
CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
|
||||
CONFIG_PATA_IXP4XX_CF=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
CONFIG_PCI_DOMAINS_GENERIC=y
|
||||
CONFIG_PCI_IXP4XX=y
|
||||
CONFIG_PERF_USE_VMALLOC=y
|
||||
CONFIG_PGTABLE_LEVELS=2
|
||||
CONFIG_PHYLIB=y
|
||||
CONFIG_POWER_RESET=y
|
||||
CONFIG_POWER_RESET_GPIO=y
|
||||
CONFIG_PREEMPT_NONE_BUILD=y
|
||||
CONFIG_PTP_1588_CLOCK_OPTIONAL=y
|
||||
CONFIG_RANDSTRUCT_NONE=y
|
||||
CONFIG_RATIONAL=y
|
||||
CONFIG_REALTEK_PHY=y
|
||||
CONFIG_REGMAP=y
|
||||
CONFIG_REGMAP_I2C=y
|
||||
CONFIG_REGMAP_MMIO=y
|
||||
CONFIG_RUST_IS_AVAILABLE=y
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_COMMON=y
|
||||
# CONFIG_SERIAL_8250_EXAR is not set
|
||||
# CONFIG_SERIAL_8250_FSL is not set
|
||||
# CONFIG_SERIAL_8250_PCI is not set
|
||||
# CONFIG_SERIAL_8250_PERICOM is not set
|
||||
CONFIG_SERIAL_MCTRL_GPIO=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_SG_POOL=y
|
||||
CONFIG_SOFTIRQ_ON_OWN_STACK=y
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=999999
|
||||
CONFIG_SRCU=y
|
||||
CONFIG_SWPHY=y
|
||||
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
||||
CONFIG_THREAD_INFO_IN_TASK=y
|
||||
CONFIG_TICK_CPU_ACCOUNTING=y
|
||||
CONFIG_TIMER_OF=y
|
||||
CONFIG_TIMER_PROBE=y
|
||||
CONFIG_TINY_SRCU=y
|
||||
CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
|
||||
CONFIG_UNWINDER_ARM=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_COMMON=y
|
||||
CONFIG_USB_EHCI_BIG_ENDIAN_DESC=y
|
||||
CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_USB_EHCI_HCD_PLATFORM=y
|
||||
CONFIG_USB_EHCI_PCI=y
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
CONFIG_USB_OHCI_HCD_PCI=y
|
||||
# CONFIG_USB_OHCI_HCD_PLATFORM is not set
|
||||
CONFIG_USB_PCI=y
|
||||
CONFIG_USB_STORAGE=y
|
||||
CONFIG_USB_SUPPORT=y
|
||||
CONFIG_USB_UHCI_HCD=y
|
||||
CONFIG_USE_OF=y
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_WAN=y
|
||||
CONFIG_WATCHDOG_CORE=y
|
||||
CONFIG_WATCHDOG_NOWAYOUT=y
|
||||
CONFIG_XZ_DEC_ARM=y
|
||||
CONFIG_XZ_DEC_BCJ=y
|
||||
CONFIG_ZBOOT_ROM_BSS=0x0
|
||||
CONFIG_ZBOOT_ROM_TEXT=0x0
|
90
target/linux/ixp4xx/image/Makefile
Normal file
90
target/linux/ixp4xx/image/Makefile
Normal file
@ -0,0 +1,90 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
# Copyright (C) 2006-2021 OpenWrt.org
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/image.mk
|
||||
|
||||
# Cook a Linksys NSLU2 etc image
|
||||
define Build/linksys-ixp425-image
|
||||
touch $@.null-initrd
|
||||
$(TOPDIR)/scripts/slugimage.pl -L $(STAGING_DIR_IMAGE)/apex/apex-$(1)-armeb.bin -k $@ -r $@.null-initrd -p -o $@.new
|
||||
mv $@.new $@
|
||||
endef
|
||||
|
||||
# Build sysupgrade image
|
||||
define BuildFirmware/Generic
|
||||
dd if=$(KDIR)/zImage of=$(KDIR)/zImage.pad bs=64k conv=sync; \
|
||||
dd if=$(KDIR)/root.$(1) of=$(KDIR)/root.$(1).pad bs=128k conv=sync; \
|
||||
sh $(TOPDIR)/scripts/combined-image.sh \
|
||||
$(KDIR)/zImage.pad \
|
||||
$(KDIR)/root.$(1).pad \
|
||||
$(BIN_DIR)/$(IMG_PREFIX)-$(patsubst jffs2-%,jffs2,$(patsubst squashfs-%,squashfs,$(1)))-sysupgrade.bin
|
||||
endef
|
||||
|
||||
define Image/Build
|
||||
$(call Image/Build/$(1),$(1))
|
||||
$(call BuildFirmware/Generic,$(1))
|
||||
endef
|
||||
|
||||
define Device/Default
|
||||
PROFILES := Default
|
||||
KERNEL_DEPENDS = $$(wildcard $(DTS_DIR)/$$(DEVICE_DTS).dts)
|
||||
KERNEL_NAME := zImage
|
||||
KERNEL := kernel-bin | append-dtb
|
||||
BLOCKSIZE := 128k
|
||||
endef
|
||||
|
||||
define Device/gateworks_avila
|
||||
DEVICE_VENDOR := Gateworks
|
||||
DEVICE_MODEL := Avila GW2348-4
|
||||
DEVICE_PACKAGES := ixp4xx-microcode-ethernet kmod-rtc-ds1672 kmod-eeprom-at24 kmod-hwmon-ad7418
|
||||
DEVICE_DTS := intel-ixp42x-gateworks-gw2348
|
||||
KERNEL := kernel-bin | append-dtb
|
||||
IMAGES := kernel.bin rootfs.bin
|
||||
IMAGE/kernel.bin := append-kernel
|
||||
IMAGE/rootfs.bin := append-rootfs | pad-rootfs | pad-to 128k
|
||||
endef
|
||||
TARGET_DEVICES += gateworks_avila
|
||||
|
||||
define Device/gateworks_cambria
|
||||
DEVICE_VENDOR := Gateworks
|
||||
DEVICE_MODEL := Cambria GW2358-4
|
||||
DEVICE_PACKAGES := ixp4xx-microcode-ethernet kmod-rtc-ds1672 kmod-eeprom-at24 kmod-hwmon-ad7418
|
||||
DEVICE_DTS := intel-ixp43x-gateworks-gw2358
|
||||
KERNEL := kernel-bin | append-dtb
|
||||
IMAGES := kernel.bin rootfs.bin
|
||||
IMAGE/kernel.bin := append-kernel
|
||||
IMAGE/rootfs.bin := append-rootfs | pad-rootfs | pad-to 128k
|
||||
endef
|
||||
TARGET_DEVICES += gateworks_cambria
|
||||
|
||||
define Device/linksys_nslu2
|
||||
DEVICE_VENDOR := Linksys
|
||||
DEVICE_MODEL := NSLU2
|
||||
# USB2 is compiled in and needs no package
|
||||
DEVICE_PACKAGES := ixp4xx-microcode-ethernet kmod-rtc-x1205
|
||||
# Only 32 MB of RAM so not building by default
|
||||
DEFAULT := n
|
||||
DEVICE_DTS := intel-ixp42x-linksys-nslu2
|
||||
KERNEL := kernel-bin | append-dtb
|
||||
IMAGES := factory.bin
|
||||
# This has to boot from harddisk so just append the kernel
|
||||
IMAGE/factory.bin := append-kernel | linksys-ixp425-image "nslu2"
|
||||
endef
|
||||
TARGET_DEVICES += linksys_nslu2
|
||||
|
||||
define Device/usrobotics_usr8200
|
||||
DEVICE_VENDOR := USRobotics
|
||||
DEVICE_MODEL := USR8200
|
||||
# USB2 is compiled in and needs no package
|
||||
DEVICE_PACKAGES := ixp4xx-microcode-ethernet kmod-rtc-r7301 kmod-firewire kmod-firewire-ohci
|
||||
DEVICE_DTS := intel-ixp42x-usrobotics-usr8200
|
||||
KERNEL := kernel-bin | append-dtb
|
||||
IMAGES := kernel.bin rootfs.bin
|
||||
IMAGE/kernel.bin := append-kernel
|
||||
IMAGE/rootfs.bin := append-rootfs | pad-rootfs | pad-to 128k
|
||||
endef
|
||||
TARGET_DEVICES += usrobotics_usr8200
|
||||
|
||||
$(eval $(call BuildImage))
|
@ -0,0 +1,74 @@
|
||||
From 4e242d6e08ad1d85b832e158cd0eafcb8f3f76a1 Mon Sep 17 00:00:00 2001
|
||||
From: Linus Walleij <linus.walleij@linaro.org>
|
||||
Date: Tue, 30 May 2023 22:40:31 +0200
|
||||
Subject: [PATCH v3] mtd: cfi_cmdset_0001: Byte swap OTP info
|
||||
|
||||
Currently the offset into the device when looking for OTP
|
||||
bits can go outside of the address of the MTD NOR devices,
|
||||
and if that memory isn't readable, bad things happen
|
||||
on the IXP4xx (added prints that illustrate the problem before
|
||||
the crash):
|
||||
|
||||
cfi_intelext_otp_walk walk OTP on chip 0 start at reg_prot_offset 0x00000100
|
||||
ixp4xx_copy_from copy from 0x00000100 to 0xc880dd78
|
||||
cfi_intelext_otp_walk walk OTP on chip 0 start at reg_prot_offset 0x12000000
|
||||
ixp4xx_copy_from copy from 0x12000000 to 0xc880dd78
|
||||
8<--- cut here ---
|
||||
Unable to handle kernel paging request at virtual address db000000
|
||||
[db000000] *pgd=00000000
|
||||
(...)
|
||||
|
||||
This happens in this case because the IXP4xx is big endian and
|
||||
the 32- and 16-bit fields in the struct cfi_intelext_otpinfo are not
|
||||
properly byteswapped. Compare to how the code in read_pri_intelext()
|
||||
byteswaps the fields in struct cfi_pri_intelext.
|
||||
|
||||
Adding a small byte swapping loop for the OTP in read_pri_intelext()
|
||||
and the crash goes away.
|
||||
|
||||
The problem went unnoticed for many years until I enabled
|
||||
CONFIG_MTD_OTP on the IXP4xx as well, triggering the bug.
|
||||
|
||||
Cc: Nicolas Pitre <npitre@baylibre.com>
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
---
|
||||
ChangeLog v2->v3:
|
||||
- Move the byte swapping to a small loop in read_pri_intelext()
|
||||
so all bytes are swapped as we reach cfi_intelext_otp_walk().
|
||||
ChangeLog v1->v2:
|
||||
- Drill deeper and discover a big endian compatibility issue.
|
||||
---
|
||||
drivers/mtd/chips/cfi_cmdset_0001.c | 20 ++++++++++++++++++--
|
||||
1 file changed, 18 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/mtd/chips/cfi_cmdset_0001.c
|
||||
+++ b/drivers/mtd/chips/cfi_cmdset_0001.c
|
||||
@@ -421,9 +421,25 @@ read_pri_intelext(struct map_info *map,
|
||||
extra_size = 0;
|
||||
|
||||
/* Protection Register info */
|
||||
- if (extp->NumProtectionFields)
|
||||
+ if (extp->NumProtectionFields) {
|
||||
+ struct cfi_intelext_otpinfo *otp =
|
||||
+ (struct cfi_intelext_otpinfo *)&extp->extra[0];
|
||||
+
|
||||
extra_size += (extp->NumProtectionFields - 1) *
|
||||
- sizeof(struct cfi_intelext_otpinfo);
|
||||
+ sizeof(struct cfi_intelext_otpinfo);
|
||||
+
|
||||
+ if (extp_size >= sizeof(*extp) + extra_size) {
|
||||
+ int i;
|
||||
+
|
||||
+ /* Do some byteswapping if necessary */
|
||||
+ for (i = 0; i < extp->NumProtectionFields - 1; i++) {
|
||||
+ otp->ProtRegAddr = le32_to_cpu(otp->ProtRegAddr);
|
||||
+ otp->FactGroups = le16_to_cpu(otp->FactGroups);
|
||||
+ otp->UserGroups = le16_to_cpu(otp->UserGroups);
|
||||
+ otp++;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
if (extp->MinorVersion >= '1') {
|
@ -0,0 +1,93 @@
|
||||
From fc58944733a2082e3290eda240eb3247a00ad73a Mon Sep 17 00:00:00 2001
|
||||
From: Linus Walleij <linus.walleij@linaro.org>
|
||||
Date: Thu, 21 Sep 2023 00:12:42 +0200
|
||||
Subject: [PATCH] gpio: ixp4xx: Handle clock output on pin 14 and 15
|
||||
|
||||
This makes it possible to provide basic clock output on pins
|
||||
14 and 15. The clocks are typically used by random electronics,
|
||||
not modeled in the device tree, so they just need to be provided
|
||||
on request.
|
||||
|
||||
In order to not disturb old systems that require that the
|
||||
hardware defaults are kept in the clock setting bits, we only
|
||||
manipulate these if either device tree property is present.
|
||||
Once we know a device needs one of the clocks we can set it
|
||||
in the device tree.
|
||||
|
||||
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
---
|
||||
drivers/gpio/gpio-ixp4xx.c | 49 +++++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 48 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/gpio/gpio-ixp4xx.c
|
||||
+++ b/drivers/gpio/gpio-ixp4xx.c
|
||||
@@ -38,6 +38,18 @@
|
||||
#define IXP4XX_GPIO_STYLE_MASK GENMASK(2, 0)
|
||||
#define IXP4XX_GPIO_STYLE_SIZE 3
|
||||
|
||||
+/*
|
||||
+ * Clock output control register defines.
|
||||
+ */
|
||||
+#define IXP4XX_GPCLK_CLK0DC_SHIFT 0
|
||||
+#define IXP4XX_GPCLK_CLK0TC_SHIFT 4
|
||||
+#define IXP4XX_GPCLK_CLK0_MASK GENMASK(7, 0)
|
||||
+#define IXP4XX_GPCLK_MUX14 BIT(8)
|
||||
+#define IXP4XX_GPCLK_CLK1DC_SHIFT 16
|
||||
+#define IXP4XX_GPCLK_CLK1TC_SHIFT 20
|
||||
+#define IXP4XX_GPCLK_CLK1_MASK GENMASK(23, 16)
|
||||
+#define IXP4XX_GPCLK_MUX15 BIT(24)
|
||||
+
|
||||
/**
|
||||
* struct ixp4xx_gpio - IXP4 GPIO state container
|
||||
* @dev: containing device for this instance
|
||||
@@ -203,6 +215,8 @@ static int ixp4xx_gpio_probe(struct plat
|
||||
struct ixp4xx_gpio *g;
|
||||
struct gpio_irq_chip *girq;
|
||||
struct device_node *irq_parent;
|
||||
+ bool clk_14, clk_15;
|
||||
+ u32 val;
|
||||
int ret;
|
||||
|
||||
g = devm_kzalloc(dev, sizeof(*g), GFP_KERNEL);
|
||||
@@ -233,7 +247,40 @@ static int ixp4xx_gpio_probe(struct plat
|
||||
*/
|
||||
if (of_machine_is_compatible("dlink,dsm-g600-a") ||
|
||||
of_machine_is_compatible("iom,nas-100d"))
|
||||
- __raw_writel(0x0, g->base + IXP4XX_REG_GPCLK);
|
||||
+ val = 0;
|
||||
+ else
|
||||
+ val = __raw_readl(g->base + IXP4XX_REG_GPCLK);
|
||||
+
|
||||
+ /*
|
||||
+ * If either clock output is enabled explicitly in the device tree
|
||||
+ * we take full control of the clock by masking off all bits for
|
||||
+ * the clock control and selectively enabling them. Otherwise
|
||||
+ * we leave the hardware default settings.
|
||||
+ *
|
||||
+ * Enable clock outputs with default timings of requested clock.
|
||||
+ * If you need control over TC and DC, add these to the device
|
||||
+ * tree bindings and use them here.
|
||||
+ */
|
||||
+ clk_14 = of_property_read_bool(np, "intel,ixp4xx-gpio14-clkout");
|
||||
+ clk_15 = of_property_read_bool(np, "intel,ixp4xx-gpio15-clkout");
|
||||
+ if (clk_14 || clk_15) {
|
||||
+ val &= ~(IXP4XX_GPCLK_MUX14 | IXP4XX_GPCLK_MUX15);
|
||||
+ val &= ~IXP4XX_GPCLK_CLK0_MASK;
|
||||
+ val &= ~IXP4XX_GPCLK_CLK1_MASK;
|
||||
+ if (clk_14) {
|
||||
+ val |= (0 << IXP4XX_GPCLK_CLK0DC_SHIFT);
|
||||
+ val |= (1 << IXP4XX_GPCLK_CLK0TC_SHIFT);
|
||||
+ val |= IXP4XX_GPCLK_MUX14;
|
||||
+ }
|
||||
+
|
||||
+ if (clk_15) {
|
||||
+ val |= (0 << IXP4XX_GPCLK_CLK1DC_SHIFT);
|
||||
+ val |= (1 << IXP4XX_GPCLK_CLK1TC_SHIFT);
|
||||
+ val |= IXP4XX_GPCLK_MUX15;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ __raw_writel(val, g->base + IXP4XX_REG_GPCLK);
|
||||
|
||||
/*
|
||||
* This is a very special big-endian ARM issue: when the IXP4xx is
|
@ -0,0 +1,260 @@
|
||||
From 02693ffdb93bffcbe772bd91a399dabd123b8c19 Mon Sep 17 00:00:00 2001
|
||||
From: Linus Walleij <linus.walleij@linaro.org>
|
||||
Date: Tue, 19 Sep 2023 16:02:15 +0200
|
||||
Subject: [PATCH 4/4] ARM: dts: ixp4xx: Add USRobotics USR8200 device tree
|
||||
|
||||
This is a USRobotics NAS/Firewall/router that has been supported
|
||||
by OpenWrt in the past. It had dedicated users so let's get it
|
||||
properly supported.
|
||||
|
||||
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
---
|
||||
arch/arm/boot/dts/Makefile | 3 +-
|
||||
.../dts/intel-ixp42x-usrobotics-usr8200.dts | 229 ++++++++++++++++++
|
||||
2 files changed, 231 insertions(+), 1 deletion(-)
|
||||
create mode 100644 arch/arm/boot/dts/intel-ixp42x-usrobotics-usr8200.dts
|
||||
|
||||
--- a/arch/arm/boot/dts/Makefile
|
||||
+++ b/arch/arm/boot/dts/Makefile
|
||||
@@ -292,7 +292,8 @@ dtb-$(CONFIG_ARCH_IXP4XX) += \
|
||||
intel-ixp43x-gateworks-gw2358.dtb \
|
||||
intel-ixp42x-netgear-wg302v1.dtb \
|
||||
intel-ixp42x-arcom-vulcan.dtb \
|
||||
- intel-ixp42x-gateway-7001.dtb
|
||||
+ intel-ixp42x-gateway-7001.dtb \
|
||||
+ intel-ixp42x-usrobotics-usr8200.dtb
|
||||
dtb-$(CONFIG_ARCH_KEYSTONE) += \
|
||||
keystone-k2hk-evm.dtb \
|
||||
keystone-k2l-evm.dtb \
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/boot/dts/intel-ixp42x-usrobotics-usr8200.dts
|
||||
@@ -0,0 +1,229 @@
|
||||
+// SPDX-License-Identifier: ISC
|
||||
+/*
|
||||
+ * Device Tree file for the USRobotics USR8200 firewall
|
||||
+ * VPN and NAS. Based on know-how from Peter Denison.
|
||||
+ *
|
||||
+ * This machine is based on IXP422, the USR internal codename
|
||||
+ * is "Jeeves".
|
||||
+ */
|
||||
+
|
||||
+/dts-v1/;
|
||||
+
|
||||
+#include "intel-ixp42x.dtsi"
|
||||
+#include <dt-bindings/input/input.h>
|
||||
+
|
||||
+/ {
|
||||
+ model = "USRobotics USR8200";
|
||||
+ compatible = "usr,usr8200", "intel,ixp42x";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+
|
||||
+ memory@0 {
|
||||
+ device_type = "memory";
|
||||
+ reg = <0x00000000 0x4000000>;
|
||||
+ };
|
||||
+
|
||||
+ chosen {
|
||||
+ bootargs = "console=ttyS0,115200n8";
|
||||
+ stdout-path = "uart1:115200n8";
|
||||
+ };
|
||||
+
|
||||
+ aliases {
|
||||
+ /* These are switched around */
|
||||
+ serial0 = &uart1;
|
||||
+ serial1 = &uart0;
|
||||
+ };
|
||||
+
|
||||
+ leds {
|
||||
+ compatible = "gpio-leds";
|
||||
+ ieee1394_led: led-1394 {
|
||||
+ label = "usr8200:green:1394";
|
||||
+ gpios = <&gpio0 0 GPIO_ACTIVE_LOW>;
|
||||
+ default-state = "off";
|
||||
+ };
|
||||
+ usb1_led: led-usb1 {
|
||||
+ label = "usr8200:green:usb1";
|
||||
+ gpios = <&gpio0 1 GPIO_ACTIVE_LOW>;
|
||||
+ default-state = "off";
|
||||
+ };
|
||||
+ usb2_led: led-usb2 {
|
||||
+ label = "usr8200:green:usb2";
|
||||
+ gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
|
||||
+ default-state = "off";
|
||||
+ };
|
||||
+ wireless_led: led-wireless {
|
||||
+ /*
|
||||
+ * This LED is mounted inside the case but cannot be
|
||||
+ * seen from the outside: probably USR planned at one
|
||||
+ * point for the device to have a wireless card, then
|
||||
+ * changed their mind and didn't mount it, leaving the
|
||||
+ * LED in place.
|
||||
+ */
|
||||
+ label = "usr8200:green:wireless";
|
||||
+ gpios = <&gpio0 3 GPIO_ACTIVE_LOW>;
|
||||
+ default-state = "off";
|
||||
+ };
|
||||
+ pwr_led: led-pwr {
|
||||
+ label = "usr8200:green:pwr";
|
||||
+ gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>;
|
||||
+ default-state = "on";
|
||||
+ linux,default-trigger = "heartbeat";
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ gpio_keys {
|
||||
+ compatible = "gpio-keys";
|
||||
+
|
||||
+ button-reset {
|
||||
+ wakeup-source;
|
||||
+ linux,code = <KEY_RESTART>;
|
||||
+ label = "reset";
|
||||
+ gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ soc {
|
||||
+ bus@c4000000 {
|
||||
+ flash@0,0 {
|
||||
+ compatible = "intel,ixp4xx-flash", "cfi-flash";
|
||||
+ bank-width = <2>;
|
||||
+ /* Enable writes on the expansion bus */
|
||||
+ intel,ixp4xx-eb-write-enable = <1>;
|
||||
+ /* 16 MB of Flash mapped in at CS0 */
|
||||
+ reg = <0 0x00000000 0x1000000>;
|
||||
+
|
||||
+ partitions {
|
||||
+ compatible = "redboot-fis";
|
||||
+ /* Eraseblock at 0x0fe0000 */
|
||||
+ fis-index-block = <0x7f>;
|
||||
+ };
|
||||
+ };
|
||||
+ rtc@2,0 {
|
||||
+ /* EPSON RTC7301 DG DIL-capsule */
|
||||
+ compatible = "epson,rtc7301dg";
|
||||
+ /*
|
||||
+ * These timing settings were found in the boardfile patch:
|
||||
+ * IXP4XX_EXP_CS2 = 0x3fff000 | IXP4XX_EXP_BUS_SIZE(0) | IXP4XX_EXP_BUS_WR_EN |
|
||||
+ * IXP4XX_EXP_BUS_CS_EN | IXP4XX_EXP_BUS_BYTE_EN;
|
||||
+ */
|
||||
+ intel,ixp4xx-eb-t1 = <0>; // no cycles extra address phase
|
||||
+ intel,ixp4xx-eb-t2 = <0>; // no cycles extra setup phase
|
||||
+ intel,ixp4xx-eb-t3 = <15>; // 15 cycles extra strobe phase
|
||||
+ intel,ixp4xx-eb-t4 = <3>; // 3 cycles extra hold phase
|
||||
+ intel,ixp4xx-eb-t5 = <15>; // 15 cycles extra recovery phase
|
||||
+ intel,ixp4xx-eb-cycle-type = <0>; // Intel cycle
|
||||
+ intel,ixp4xx-eb-byte-access-on-halfword = <0>;
|
||||
+ intel,ixp4xx-eb-mux-address-and-data = <0>;
|
||||
+ intel,ixp4xx-eb-ahb-split-transfers = <0>;
|
||||
+ intel,ixp4xx-eb-write-enable = <1>;
|
||||
+ intel,ixp4xx-eb-byte-access = <1>;
|
||||
+ /* 512 bytes at CS2 */
|
||||
+ reg = <2 0x00000000 0x0000200>;
|
||||
+ reg-io-width = <1>;
|
||||
+ native-endian;
|
||||
+ /* FIXME: try to check if there is an IRQ for the RTC? */
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ pci@c0000000 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ /*
|
||||
+ * Taken from USR8200 boardfile from OpenWrt
|
||||
+ *
|
||||
+ * We have 3 slots (IDSEL) with partly swizzled IRQs on slot 16.
|
||||
+ * We assume the same IRQ for all pins on the remaining slots, that
|
||||
+ * is what the boardfile was doing.
|
||||
+ */
|
||||
+ #interrupt-cells = <1>;
|
||||
+ interrupt-map-mask = <0xf800 0 0 7>;
|
||||
+ interrupt-map =
|
||||
+ /* IDSEL 14 used for "Wireless" in the board file */
|
||||
+ <0x7000 0 0 1 &gpio0 7 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 14 is irq 7 */
|
||||
+ /* IDSEL 15 used for VIA VT6307 IEEE 1394 Firewire */
|
||||
+ <0x7800 0 0 1 &gpio0 8 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 15 is irq 8 */
|
||||
+ /* IDSEL 16 used for VIA VT6202 USB 2.0 4+1 */
|
||||
+ <0x8000 0 0 1 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 16 is irq 11 */
|
||||
+ <0x8000 0 0 2 &gpio0 10 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 16 is irq 10 */
|
||||
+ <0x8000 0 0 3 &gpio0 9 IRQ_TYPE_LEVEL_LOW>; /* INT C on slot 16 is irq 9 */
|
||||
+ };
|
||||
+
|
||||
+ gpio@c8004000 {
|
||||
+ /* Enable clock out on GPIO 15 */
|
||||
+ intel,ixp4xx-gpio15-clkout;
|
||||
+ };
|
||||
+
|
||||
+ /* EthB WAN */
|
||||
+ ethernet@c8009000 {
|
||||
+ status = "okay";
|
||||
+ queue-rx = <&qmgr 3>;
|
||||
+ queue-txready = <&qmgr 20>;
|
||||
+ phy-mode = "rgmii";
|
||||
+ phy-handle = <&phy9>;
|
||||
+
|
||||
+ mdio {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ phy9: ethernet-phy@9 {
|
||||
+ reg = <9>;
|
||||
+ };
|
||||
+
|
||||
+ /* The switch uses MDIO addresses 16 thru 31 */
|
||||
+ switch@16 {
|
||||
+ compatible = "marvell,mv88e6060";
|
||||
+ reg = <16>;
|
||||
+
|
||||
+ ports {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+ label = "lan1";
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
+ reg = <1>;
|
||||
+ label = "lan2";
|
||||
+ };
|
||||
+
|
||||
+ port@2 {
|
||||
+ reg = <2>;
|
||||
+ label = "lan3";
|
||||
+ };
|
||||
+
|
||||
+ port@3 {
|
||||
+ reg = <3>;
|
||||
+ label = "lan4";
|
||||
+ };
|
||||
+
|
||||
+ port@5 {
|
||||
+ /* Port 5 is the CPU port according to the MV88E6060 datasheet */
|
||||
+ reg = <5>;
|
||||
+ phy-mode = "rgmii-id";
|
||||
+ ethernet = <ðc>;
|
||||
+ label = "cpu";
|
||||
+ fixed-link {
|
||||
+ speed = <100>;
|
||||
+ full-duplex;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ /* EthC LAN connected to the Marvell DSA Switch */
|
||||
+ ethc: ethernet@c800a000 {
|
||||
+ status = "okay";
|
||||
+ queue-rx = <&qmgr 4>;
|
||||
+ queue-txready = <&qmgr 21>;
|
||||
+ phy-mode = "rgmii";
|
||||
+ fixed-link {
|
||||
+ speed = <100>;
|
||||
+ full-duplex;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
@ -0,0 +1,132 @@
|
||||
From 6599df775e2cbb4988bdf8239acf4fbec70e5ef9 Mon Sep 17 00:00:00 2001
|
||||
From: Linus Walleij <linus.walleij@linaro.org>
|
||||
Date: Sat, 23 Sep 2023 20:38:22 +0200
|
||||
Subject: [PATCH 3/4] net: ixp4xx_eth: Support changing the MTU
|
||||
|
||||
As we don't specify the MTU in the driver, the framework
|
||||
will fall back to 1500 bytes and this doesn't work very
|
||||
well when we try to attach a DSA switch:
|
||||
|
||||
eth1: mtu greater than device maximum
|
||||
ixp4xx_eth c800a000.ethernet eth1: error -22 setting
|
||||
MTU to 1504 to include DSA overhead
|
||||
|
||||
After locating an out-of-tree patch in OpenWrt I found
|
||||
suitable code to set the MTU on the interface and ported
|
||||
it and updated it. Now the MTU gets set properly.
|
||||
|
||||
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
|
||||
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
---
|
||||
drivers/net/ethernet/xscale/ixp4xx_eth.c | 65 +++++++++++++++++++++++-
|
||||
1 file changed, 64 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/ethernet/xscale/ixp4xx_eth.c
|
||||
+++ b/drivers/net/ethernet/xscale/ixp4xx_eth.c
|
||||
@@ -24,6 +24,7 @@
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/dmapool.h>
|
||||
#include <linux/etherdevice.h>
|
||||
+#include <linux/if_vlan.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/net_tstamp.h>
|
||||
@@ -63,7 +64,15 @@
|
||||
|
||||
#define POOL_ALLOC_SIZE (sizeof(struct desc) * (RX_DESCS + TX_DESCS))
|
||||
#define REGS_SIZE 0x1000
|
||||
-#define MAX_MRU 1536 /* 0x600 */
|
||||
+
|
||||
+/* MRU is said to be 14320 in a code dump, the SW manual says that
|
||||
+ * MRU/MTU is 16320 and includes VLAN and ethernet headers.
|
||||
+ * See "IXP400 Software Programmer's Guide" section 10.3.2, page 161.
|
||||
+ *
|
||||
+ * FIXME: we have chosen the safe default (14320) but if you can test
|
||||
+ * jumboframes, experiment with 16320 and see what happens!
|
||||
+ */
|
||||
+#define MAX_MRU (14320 - VLAN_ETH_HLEN)
|
||||
#define RX_BUFF_SIZE ALIGN((NET_IP_ALIGN) + MAX_MRU, 4)
|
||||
|
||||
#define NAPI_WEIGHT 16
|
||||
@@ -1182,6 +1191,54 @@ static void destroy_queues(struct port *
|
||||
}
|
||||
}
|
||||
|
||||
+static int ixp4xx_do_change_mtu(struct net_device *dev, int new_mtu)
|
||||
+{
|
||||
+ struct port *port = netdev_priv(dev);
|
||||
+ struct npe *npe = port->npe;
|
||||
+ int framesize, chunks;
|
||||
+ struct msg msg = {};
|
||||
+
|
||||
+ /* adjust for ethernet headers */
|
||||
+ framesize = new_mtu + VLAN_ETH_HLEN;
|
||||
+ /* max rx/tx 64 byte chunks */
|
||||
+ chunks = DIV_ROUND_UP(framesize, 64);
|
||||
+
|
||||
+ msg.cmd = NPE_SETMAXFRAMELENGTHS;
|
||||
+ msg.eth_id = port->id;
|
||||
+
|
||||
+ /* Firmware wants to know buffer size in 64 byte chunks */
|
||||
+ msg.byte2 = chunks << 8;
|
||||
+ msg.byte3 = chunks << 8;
|
||||
+
|
||||
+ msg.byte4 = msg.byte6 = framesize >> 8;
|
||||
+ msg.byte5 = msg.byte7 = framesize & 0xff;
|
||||
+
|
||||
+ if (npe_send_recv_message(npe, &msg, "ETH_SET_MAX_FRAME_LENGTH"))
|
||||
+ return -EIO;
|
||||
+ netdev_dbg(dev, "set MTU on NPE %s to %d bytes\n",
|
||||
+ npe_name(npe), new_mtu);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int ixp4xx_eth_change_mtu(struct net_device *dev, int new_mtu)
|
||||
+{
|
||||
+ int ret;
|
||||
+
|
||||
+ /* MTU can only be changed when the interface is up. We also
|
||||
+ * set the MTU from dev->mtu when opening the device.
|
||||
+ */
|
||||
+ if (dev->flags & IFF_UP) {
|
||||
+ ret = ixp4xx_do_change_mtu(dev, new_mtu);
|
||||
+ if (ret < 0)
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ dev->mtu = new_mtu;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static int eth_open(struct net_device *dev)
|
||||
{
|
||||
struct port *port = netdev_priv(dev);
|
||||
@@ -1232,6 +1289,8 @@ static int eth_open(struct net_device *d
|
||||
if (npe_send_recv_message(port->npe, &msg, "ETH_SET_FIREWALL_MODE"))
|
||||
return -EIO;
|
||||
|
||||
+ ixp4xx_do_change_mtu(dev, dev->mtu);
|
||||
+
|
||||
if ((err = request_queues(port)) != 0)
|
||||
return err;
|
||||
|
||||
@@ -1374,6 +1433,7 @@ static int eth_close(struct net_device *
|
||||
static const struct net_device_ops ixp4xx_netdev_ops = {
|
||||
.ndo_open = eth_open,
|
||||
.ndo_stop = eth_close,
|
||||
+ .ndo_change_mtu = ixp4xx_eth_change_mtu,
|
||||
.ndo_start_xmit = eth_xmit,
|
||||
.ndo_set_rx_mode = eth_set_mcast_list,
|
||||
.ndo_eth_ioctl = eth_ioctl,
|
||||
@@ -1488,6 +1548,9 @@ static int ixp4xx_eth_probe(struct platf
|
||||
ndev->dev.dma_mask = dev->dma_mask;
|
||||
ndev->dev.coherent_dma_mask = dev->coherent_dma_mask;
|
||||
|
||||
+ ndev->min_mtu = ETH_MIN_MTU;
|
||||
+ ndev->max_mtu = MAX_MRU;
|
||||
+
|
||||
netif_napi_add_weight(ndev, &port->napi, eth_poll, NAPI_WEIGHT);
|
||||
|
||||
if (!(port->npe = npe_request(NPE_ID(port->id))))
|
@ -0,0 +1,79 @@
|
||||
From b09e5ea32e099821b1cddc1e26e625ad994ba11e Mon Sep 17 00:00:00 2001
|
||||
From: Linus Walleij <linus.walleij@linaro.org>
|
||||
Date: Sun, 24 Sep 2023 21:20:24 +0200
|
||||
Subject: [PATCH] watchdog: ixp4xx: Make sure restart always works
|
||||
|
||||
The IXP4xx watchdog in early "A0" silicon is unreliable and
|
||||
cannot be registered, however for some systems such as the
|
||||
USRobotics USR8200 the watchdog is the only restart option,
|
||||
so implement a "dummy" watchdog that can only support restart
|
||||
in this case.
|
||||
|
||||
Fixes: 1aea522809e6 ("watchdog: ixp4xx: Implement restart")
|
||||
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
---
|
||||
Other solutions like implementing a pure restart notifier
|
||||
callback catch in the driver is possible, but this method
|
||||
will minimize the amount of code and reuse infrastructure
|
||||
in the core.
|
||||
---
|
||||
drivers/watchdog/ixp4xx_wdt.c | 28 +++++++++++++++++++++++++---
|
||||
1 file changed, 25 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/drivers/watchdog/ixp4xx_wdt.c
|
||||
+++ b/drivers/watchdog/ixp4xx_wdt.c
|
||||
@@ -105,6 +105,25 @@ static const struct watchdog_ops ixp4xx_
|
||||
.owner = THIS_MODULE,
|
||||
};
|
||||
|
||||
+/*
|
||||
+ * The A0 version of the IXP422 had a bug in the watchdog making
|
||||
+ * is useless, but we still need to use it to restart the system
|
||||
+ * as it is the only way, so in this special case we register a
|
||||
+ * "dummy" watchdog that doesn't really work, but will support
|
||||
+ * the restart operation.
|
||||
+ */
|
||||
+static int ixp4xx_wdt_dummy(struct watchdog_device *wdd)
|
||||
+{
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static const struct watchdog_ops ixp4xx_wdt_restart_only_ops = {
|
||||
+ .start = ixp4xx_wdt_dummy,
|
||||
+ .stop = ixp4xx_wdt_dummy,
|
||||
+ .restart = ixp4xx_wdt_restart,
|
||||
+ .owner = THIS_MODULE,
|
||||
+};
|
||||
+
|
||||
static const struct watchdog_info ixp4xx_wdt_info = {
|
||||
.options = WDIOF_KEEPALIVEPING
|
||||
| WDIOF_MAGICCLOSE
|
||||
@@ -120,14 +139,17 @@ static void ixp4xx_clock_action(void *d)
|
||||
|
||||
static int ixp4xx_wdt_probe(struct platform_device *pdev)
|
||||
{
|
||||
+ static const struct watchdog_ops *iwdt_ops;
|
||||
struct device *dev = &pdev->dev;
|
||||
struct ixp4xx_wdt *iwdt;
|
||||
struct clk *clk;
|
||||
int ret;
|
||||
|
||||
if (!(read_cpuid_id() & 0xf) && !cpu_is_ixp46x()) {
|
||||
- dev_err(dev, "Rev. A0 IXP42x CPU detected - watchdog disabled\n");
|
||||
- return -ENODEV;
|
||||
+ dev_err(dev, "Rev. A0 IXP42x CPU detected - only restart supported\n");
|
||||
+ iwdt_ops = &ixp4xx_wdt_restart_only_ops;
|
||||
+ } else {
|
||||
+ iwdt_ops = &ixp4xx_wdt_ops;
|
||||
}
|
||||
|
||||
iwdt = devm_kzalloc(dev, sizeof(*iwdt), GFP_KERNEL);
|
||||
@@ -153,7 +175,7 @@ static int ixp4xx_wdt_probe(struct platf
|
||||
iwdt->rate = IXP4XX_TIMER_FREQ;
|
||||
|
||||
iwdt->wdd.info = &ixp4xx_wdt_info;
|
||||
- iwdt->wdd.ops = &ixp4xx_wdt_ops;
|
||||
+ iwdt->wdd.ops = iwdt_ops;
|
||||
iwdt->wdd.min_timeout = 1;
|
||||
iwdt->wdd.max_timeout = U32_MAX / iwdt->rate;
|
||||
iwdt->wdd.parent = dev;
|
@ -0,0 +1,67 @@
|
||||
From a1ab45966e5a21841af58742adf27725e523d303 Mon Sep 17 00:00:00 2001
|
||||
From: Linus Walleij <linus.walleij@linaro.org>
|
||||
Date: Sat, 14 Oct 2023 19:53:24 +0200
|
||||
Subject: [PATCH] ARM: dts: usr8200: Fix phy registers
|
||||
|
||||
The MV88E6060 switch has internal PHY registers at MDIO
|
||||
addresses 0x00..0x04. Tie each port to the corresponding
|
||||
PHY.
|
||||
|
||||
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
---
|
||||
.../dts/intel-ixp42x-usrobotics-usr8200.dts | 22 +++++++++++++++++++
|
||||
1 file changed, 22 insertions(+)
|
||||
|
||||
--- a/arch/arm/boot/dts/intel-ixp42x-usrobotics-usr8200.dts
|
||||
+++ b/arch/arm/boot/dts/intel-ixp42x-usrobotics-usr8200.dts
|
||||
@@ -165,6 +165,24 @@
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
+ /*
|
||||
+ * PHY 0..4 are internal to the MV88E6060 switch but appear
|
||||
+ * as independent devices.
|
||||
+ */
|
||||
+ phy0: ethernet-phy@0 {
|
||||
+ reg = <0>;
|
||||
+ };
|
||||
+ phy1: ethernet-phy@1 {
|
||||
+ reg = <1>;
|
||||
+ };
|
||||
+ phy2: ethernet-phy@2 {
|
||||
+ reg = <2>;
|
||||
+ };
|
||||
+ phy3: ethernet-phy@3 {
|
||||
+ reg = <3>;
|
||||
+ };
|
||||
+
|
||||
+ /* Altima AMI101L used by the WAN port */
|
||||
phy9: ethernet-phy@9 {
|
||||
reg = <9>;
|
||||
};
|
||||
@@ -181,21 +199,25 @@
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
label = "lan1";
|
||||
+ phy-handle = <&phy0>;
|
||||
};
|
||||
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
label = "lan2";
|
||||
+ phy-handle = <&phy1>;
|
||||
};
|
||||
|
||||
port@2 {
|
||||
reg = <2>;
|
||||
label = "lan3";
|
||||
+ phy-handle = <&phy2>;
|
||||
};
|
||||
|
||||
port@3 {
|
||||
reg = <3>;
|
||||
label = "lan4";
|
||||
+ phy-handle = <&phy3>;
|
||||
};
|
||||
|
||||
port@5 {
|
@ -0,0 +1,24 @@
|
||||
From 2792791a19f90b0141ed2e781599ba0a42a8cfd5 Mon Sep 17 00:00:00 2001
|
||||
From: Linus Walleij <linus.walleij@linaro.org>
|
||||
Date: Mon, 29 May 2023 23:32:44 +0200
|
||||
Subject: [PATCH] ARM: dts: ixp4xx: Boot NSLU2 from harddrive
|
||||
|
||||
This enforces harddrive boot on the NSLU2. The flash is too small
|
||||
to hold any rootfs these days.
|
||||
|
||||
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
---
|
||||
arch/arm/boot/dts/intel-ixp42x-linksys-nslu2.dts | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/arch/arm/boot/dts/intel-ixp42x-linksys-nslu2.dts
|
||||
+++ b/arch/arm/boot/dts/intel-ixp42x-linksys-nslu2.dts
|
||||
@@ -21,7 +21,7 @@
|
||||
};
|
||||
|
||||
chosen {
|
||||
- bootargs = "console=ttyS0,115200n8 root=/dev/mtdblock2 rw rootfstype=squashfs,jffs2 rootwait";
|
||||
+ bootargs = "console=ttyS0,115200n8 root=/dev/sda1 rw rootwait";
|
||||
stdout-path = "uart0:115200n8";
|
||||
};
|
||||
|
@ -1,118 +0,0 @@
|
||||
From 80e643510cb14f116f687e992210c0008a09d869 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Marek=20Beh=C3=BAn?= <kabel@kernel.org>
|
||||
Date: Mon, 4 Jul 2022 12:59:53 +0200
|
||||
Subject: [PATCH] leds: turris-omnia: support HW controlled mode via
|
||||
private trigger
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Add support for enabling MCU controlled mode of the Turris Omnia LEDs
|
||||
via a LED private trigger called "omnia-mcu".
|
||||
|
||||
When in MCU controlled mode, the user can still set LED color, but the
|
||||
blinking is done by MCU, which does different things for various LEDs:
|
||||
- WAN LED is blinked according to the LED[0] pin of the WAN PHY
|
||||
- LAN LEDs are blinked according to the LED[0] output of corresponding
|
||||
port of the LAN switch
|
||||
- PCIe LEDs are blinked according to the logical OR of the MiniPCIe port
|
||||
LED pins
|
||||
|
||||
For a long time I wanted to actually do this differently: I wanted to
|
||||
make the netdev trigger to transparently offload the blinking to the HW
|
||||
if user set compatible settings for the netdev trigger.
|
||||
There was some work on this, and hopefully we will be able to complete
|
||||
it sometime, but since there are various complications, it will probably
|
||||
not be soon.
|
||||
|
||||
In the meantime let's support HW controlled mode via this private LED
|
||||
trigger. If, in the future, we manage to complete the netdev trigger
|
||||
offloading, we can still keep this private trigger for backwards
|
||||
compatiblity, if needed.
|
||||
|
||||
We also set "omnia-mcu" to cdev->default_trigger, so that the MCU keeps
|
||||
control until the user first wants to take over it. If a different
|
||||
default trigger is specified in device-tree via the
|
||||
`linux,default-trigger` property, LED class will overwrite
|
||||
cdev->default_trigger, and so the DT property will be respected.
|
||||
|
||||
Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
---
|
||||
drivers/leds/Kconfig | 1 +
|
||||
drivers/leds/leds-turris-omnia.c | 41 ++++++++++++++++++++++++++++++++
|
||||
2 files changed, 42 insertions(+)
|
||||
|
||||
--- a/drivers/leds/Kconfig
|
||||
+++ b/drivers/leds/Kconfig
|
||||
@@ -163,6 +163,7 @@ config LEDS_TURRIS_OMNIA
|
||||
depends on I2C
|
||||
depends on MACH_ARMADA_38X || COMPILE_TEST
|
||||
depends on OF
|
||||
+ select LEDS_TRIGGERS
|
||||
help
|
||||
This option enables basic support for the LEDs found on the front
|
||||
side of CZ.NIC's Turris Omnia router. There are 12 RGB LEDs on the
|
||||
--- a/drivers/leds/leds-turris-omnia.c
|
||||
+++ b/drivers/leds/leds-turris-omnia.c
|
||||
@@ -41,6 +41,39 @@ struct omnia_leds {
|
||||
struct omnia_led leds[];
|
||||
};
|
||||
|
||||
+static struct led_hw_trigger_type omnia_hw_trigger_type;
|
||||
+
|
||||
+static int omnia_hwtrig_activate(struct led_classdev *cdev)
|
||||
+{
|
||||
+ struct omnia_leds *leds = dev_get_drvdata(cdev->dev->parent);
|
||||
+ struct omnia_led *led = to_omnia_led(lcdev_to_mccdev(cdev));
|
||||
+
|
||||
+ /* put the LED into MCU controlled mode */
|
||||
+ return i2c_smbus_write_byte_data(leds->client, CMD_LED_MODE,
|
||||
+ CMD_LED_MODE_LED(led->reg));
|
||||
+}
|
||||
+
|
||||
+static void omnia_hwtrig_deactivate(struct led_classdev *cdev)
|
||||
+{
|
||||
+ struct omnia_leds *leds = dev_get_drvdata(cdev->dev->parent);
|
||||
+ struct omnia_led *led = to_omnia_led(lcdev_to_mccdev(cdev));
|
||||
+ int ret;
|
||||
+
|
||||
+ /* put the LED into software mode */
|
||||
+ ret = i2c_smbus_write_byte_data(leds->client, CMD_LED_MODE,
|
||||
+ CMD_LED_MODE_LED(led->reg) |
|
||||
+ CMD_LED_MODE_USER);
|
||||
+ if (ret < 0)
|
||||
+ dev_err(cdev->dev, "Cannot put to software mode: %i\n", ret);
|
||||
+}
|
||||
+
|
||||
+static struct led_trigger omnia_hw_trigger = {
|
||||
+ .name = "omnia-mcu",
|
||||
+ .activate = omnia_hwtrig_activate,
|
||||
+ .deactivate = omnia_hwtrig_deactivate,
|
||||
+ .trigger_type = &omnia_hw_trigger_type,
|
||||
+};
|
||||
+
|
||||
static int omnia_led_brightness_set_blocking(struct led_classdev *cdev,
|
||||
enum led_brightness brightness)
|
||||
{
|
||||
@@ -112,6 +145,8 @@ static int omnia_led_register(struct i2c
|
||||
cdev = &led->mc_cdev.led_cdev;
|
||||
cdev->max_brightness = 255;
|
||||
cdev->brightness_set_blocking = omnia_led_brightness_set_blocking;
|
||||
+ cdev->trigger_type = &omnia_hw_trigger_type;
|
||||
+ cdev->default_trigger = omnia_hw_trigger.name;
|
||||
|
||||
/* put the LED into software mode */
|
||||
ret = i2c_smbus_write_byte_data(client, CMD_LED_MODE,
|
||||
@@ -228,6 +263,12 @@ static int omnia_leds_probe(struct i2c_c
|
||||
|
||||
mutex_init(&leds->lock);
|
||||
|
||||
+ ret = devm_led_trigger_register(dev, &omnia_hw_trigger);
|
||||
+ if (ret < 0) {
|
||||
+ dev_err(dev, "Cannot register private LED trigger: %d\n", ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
led = &leds->leds[0];
|
||||
for_each_available_child_of_node(np, child) {
|
||||
ret = omnia_led_register(client, led, child);
|
@ -1,33 +0,0 @@
|
||||
From bda176cceb735b9b46c1900658b6486c34e13ae6 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Marek=20Beh=C3=BAn?= <kabel@kernel.org>
|
||||
Date: Mon, 4 Jul 2022 12:59:54 +0200
|
||||
Subject: [PATCH] leds: turris-omnia: initialize multi-intensity to full
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
The default color of each LED before driver probe (255, 255, 255).
|
||||
Initialize multi_intensity to this value, so that it corresponds to the
|
||||
reality.
|
||||
|
||||
Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
---
|
||||
drivers/leds/leds-turris-omnia.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
--- a/drivers/leds/leds-turris-omnia.c
|
||||
+++ b/drivers/leds/leds-turris-omnia.c
|
||||
@@ -131,10 +131,13 @@ static int omnia_led_register(struct i2c
|
||||
}
|
||||
|
||||
led->subled_info[0].color_index = LED_COLOR_ID_RED;
|
||||
+ led->subled_info[0].intensity = 255;
|
||||
led->subled_info[0].channel = 0;
|
||||
led->subled_info[1].color_index = LED_COLOR_ID_GREEN;
|
||||
+ led->subled_info[1].intensity = 255;
|
||||
led->subled_info[1].channel = 1;
|
||||
led->subled_info[2].color_index = LED_COLOR_ID_BLUE;
|
||||
+ led->subled_info[2].intensity = 255;
|
||||
led->subled_info[2].channel = 2;
|
||||
|
||||
led->mc_cdev.subled_info = led->subled_info;
|
@ -1,31 +0,0 @@
|
||||
From 349cbe949b9622cc05b148ecfa6268cbbae35b45 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Marek=20Beh=C3=BAn?= <kabel@kernel.org>
|
||||
Date: Mon, 4 Jul 2022 12:59:55 +0200
|
||||
Subject: [PATCH] leds: turris-omnia: change max brightness from 255 to 1
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Using binary brightness makes more sense for this controller, because
|
||||
internally in the MCU it works that way: the LED has a color, and a
|
||||
state whether it is ON or OFF.
|
||||
|
||||
The resulting brightness computation with led_mc_calc_color_components()
|
||||
will now always result in either (0, 0, 0) or the multi_intensity value.
|
||||
|
||||
Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
---
|
||||
drivers/leds/leds-turris-omnia.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/leds/leds-turris-omnia.c
|
||||
+++ b/drivers/leds/leds-turris-omnia.c
|
||||
@@ -146,7 +146,7 @@ static int omnia_led_register(struct i2c
|
||||
init_data.fwnode = &np->fwnode;
|
||||
|
||||
cdev = &led->mc_cdev.led_cdev;
|
||||
- cdev->max_brightness = 255;
|
||||
+ cdev->max_brightness = 1;
|
||||
cdev->brightness_set_blocking = omnia_led_brightness_set_blocking;
|
||||
cdev->trigger_type = &omnia_hw_trigger_type;
|
||||
cdev->default_trigger = omnia_hw_trigger.name;
|
@ -11,8 +11,7 @@ FEATURES:=ext4
|
||||
KERNELNAME:=Image dtbs
|
||||
SUBTARGETS:=generic
|
||||
|
||||
KERNEL_PATCHVER:=5.15
|
||||
KERNEL_TESTING_PATCHVER:=6.1
|
||||
KERNEL_PATCHVER:=6.1
|
||||
|
||||
include $(INCLUDE_DIR)/target.mk
|
||||
|
||||
|
@ -1,363 +0,0 @@
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_ARCH_CLOCKSOURCE_INIT=y
|
||||
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
|
||||
CONFIG_ARCH_MMAP_RND_BITS=18
|
||||
CONFIG_ARCH_MMAP_RND_BITS_MAX=24
|
||||
CONFIG_ARCH_MMAP_RND_BITS_MIN=18
|
||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
|
||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
|
||||
# CONFIG_ARCH_RV32I is not set
|
||||
CONFIG_ARCH_RV64I=y
|
||||
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
||||
CONFIG_ARCH_STACKWALK=y
|
||||
CONFIG_ASSOCIATIVE_ARRAY=y
|
||||
CONFIG_ATA=y
|
||||
CONFIG_ATA_VERBOSE_ERROR=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_BLK_MQ_PCI=y
|
||||
CONFIG_BLK_MQ_VIRTIO=y
|
||||
CONFIG_CAVIUM_PTP=y
|
||||
CONFIG_CC_HAVE_STACKPROTECTOR_TLS=y
|
||||
CONFIG_CLK_ANALOGBITS_WRPLL_CLN28HPC=y
|
||||
CONFIG_CLK_SIFIVE=y
|
||||
CONFIG_CLK_SIFIVE_PRCI=y
|
||||
CONFIG_CLONE_BACKWARDS=y
|
||||
CONFIG_CLZ_TAB=y
|
||||
CONFIG_CMODEL_MEDANY=y
|
||||
# CONFIG_CMODEL_MEDLOW is not set
|
||||
CONFIG_COMMON_CLK=y
|
||||
# CONFIG_COMPAT_32BIT_TIME is not set
|
||||
CONFIG_COMPAT_BRK=y
|
||||
CONFIG_CONSOLE_TRANSLATIONS=y
|
||||
CONFIG_COREDUMP=y
|
||||
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
|
||||
CONFIG_CPU_ISOLATION=y
|
||||
CONFIG_CPU_RMAP=y
|
||||
CONFIG_CRC16=y
|
||||
# CONFIG_CRC32_SARWATE is not set
|
||||
CONFIG_CRC32_SLICEBY8=y
|
||||
CONFIG_CRC7=y
|
||||
CONFIG_CRC_ITU_T=y
|
||||
CONFIG_CRYPTO_CRC32C=y
|
||||
CONFIG_CRYPTO_DRBG=y
|
||||
CONFIG_CRYPTO_DRBG_HMAC=y
|
||||
CONFIG_CRYPTO_DRBG_MENU=y
|
||||
CONFIG_CRYPTO_ECHAINIV=y
|
||||
CONFIG_CRYPTO_HASH_INFO=y
|
||||
CONFIG_CRYPTO_HMAC=y
|
||||
CONFIG_CRYPTO_JITTERENTROPY=y
|
||||
CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
|
||||
CONFIG_CRYPTO_LIB_SHA256=y
|
||||
CONFIG_CRYPTO_RNG=y
|
||||
CONFIG_CRYPTO_RNG2=y
|
||||
CONFIG_CRYPTO_RNG_DEFAULT=y
|
||||
CONFIG_CRYPTO_RSA=y
|
||||
CONFIG_CRYPTO_SHA256=y
|
||||
CONFIG_CRYPTO_SHA512=y
|
||||
CONFIG_DEBUG_BUGVERBOSE=y
|
||||
CONFIG_DECOMPRESS_GZIP=y
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
CONFIG_DNOTIFY=y
|
||||
CONFIG_DTC=y
|
||||
CONFIG_DUMMY_CONSOLE=y
|
||||
CONFIG_EDAC=y
|
||||
# CONFIG_EDAC_DEBUG is not set
|
||||
CONFIG_EDAC_LEGACY_SYSFS=y
|
||||
CONFIG_EDAC_SIFIVE=y
|
||||
CONFIG_EDAC_SUPPORT=y
|
||||
CONFIG_EFI=y
|
||||
CONFIG_EFIVAR_FS=m
|
||||
# CONFIG_EFI_BOOTLOADER_CONTROL is not set
|
||||
# CONFIG_EFI_CAPSULE_LOADER is not set
|
||||
# CONFIG_EFI_DISABLE_PCI_DMA is not set
|
||||
CONFIG_EFI_EARLYCON=y
|
||||
CONFIG_EFI_ESRT=y
|
||||
CONFIG_EFI_GENERIC_STUB=y
|
||||
CONFIG_EFI_PARAMS_FROM_FDT=y
|
||||
CONFIG_EFI_RUNTIME_WRAPPERS=y
|
||||
CONFIG_EFI_STUB=y
|
||||
# CONFIG_EFI_TEST is not set
|
||||
CONFIG_ELF_CORE=y
|
||||
CONFIG_ERRATA_SIFIVE=y
|
||||
CONFIG_ERRATA_SIFIVE_CIP_1200=y
|
||||
CONFIG_ERRATA_SIFIVE_CIP_453=y
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_FAILOVER=y
|
||||
CONFIG_FHANDLE=y
|
||||
CONFIG_FIXED_PHY=y
|
||||
CONFIG_FIX_EARLYCON_MEM=y
|
||||
CONFIG_FONT_8x16=y
|
||||
CONFIG_FONT_AUTOSELECT=y
|
||||
CONFIG_FONT_SUPPORT=y
|
||||
CONFIG_FPU=y
|
||||
CONFIG_FRAME_POINTER=y
|
||||
CONFIG_FS_IOMAP=y
|
||||
CONFIG_FS_MBCACHE=y
|
||||
CONFIG_FWNODE_MDIO=y
|
||||
CONFIG_FW_LOADER_PAGED_BUF=y
|
||||
CONFIG_GENERIC_ALLOCATOR=y
|
||||
CONFIG_GENERIC_ARCH_TOPOLOGY=y
|
||||
CONFIG_GENERIC_BUG=y
|
||||
CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
|
||||
CONFIG_GENERIC_CSUM=y
|
||||
CONFIG_GENERIC_EARLY_IOREMAP=y
|
||||
CONFIG_GENERIC_GETTIMEOFDAY=y
|
||||
CONFIG_GENERIC_IDLE_POLL_SETUP=y
|
||||
CONFIG_GENERIC_IOREMAP=y
|
||||
CONFIG_GENERIC_IRQ_INJECTION=y
|
||||
CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
|
||||
CONFIG_GENERIC_IRQ_SHOW=y
|
||||
CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
|
||||
CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y
|
||||
CONFIG_GENERIC_MSI_IRQ=y
|
||||
CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
|
||||
CONFIG_GENERIC_PCI_IOMAP=y
|
||||
CONFIG_GENERIC_SCHED_CLOCK=y
|
||||
CONFIG_GENERIC_SMP_IDLE_THREAD=y
|
||||
CONFIG_GENERIC_STRNCPY_FROM_USER=y
|
||||
CONFIG_GENERIC_STRNLEN_USER=y
|
||||
CONFIG_GENERIC_TIME_VSYSCALL=y
|
||||
CONFIG_GLOB=y
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_GPIOLIB_IRQCHIP=y
|
||||
CONFIG_GPIO_CDEV=y
|
||||
CONFIG_GPIO_CDEV_V1=y
|
||||
CONFIG_GPIO_GENERIC=y
|
||||
CONFIG_GPIO_SIFIVE=y
|
||||
CONFIG_HANDLE_DOMAIN_IRQ=y
|
||||
CONFIG_HAS_DMA=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT_MAP=y
|
||||
CONFIG_HID=y
|
||||
CONFIG_HID_GENERIC=y
|
||||
CONFIG_HOTPLUG_PCI=y
|
||||
# CONFIG_HOTPLUG_PCI_CPCI is not set
|
||||
CONFIG_HOTPLUG_PCI_PCIE=y
|
||||
CONFIG_HOTPLUG_PCI_SHPC=y
|
||||
CONFIG_HVC_DRIVER=y
|
||||
CONFIG_HVC_RISCV_SBI=y
|
||||
CONFIG_HW_CONSOLE=y
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_BOARDINFO=y
|
||||
CONFIG_I2C_COMPAT=y
|
||||
CONFIG_I2C_HELPER_AUTO=y
|
||||
CONFIG_I2C_OCORES=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
CONFIG_INPUT=y
|
||||
# CONFIG_IOMMU_DEBUGFS is not set
|
||||
CONFIG_IOMMU_SUPPORT=y
|
||||
CONFIG_IO_URING=y
|
||||
CONFIG_IRQCHIP=y
|
||||
CONFIG_IRQ_DOMAIN=y
|
||||
CONFIG_IRQ_DOMAIN_HIERARCHY=y
|
||||
CONFIG_IRQ_FORCED_THREADING=y
|
||||
CONFIG_IRQ_WORK=y
|
||||
CONFIG_JBD2=y
|
||||
CONFIG_KALLSYMS=y
|
||||
CONFIG_KEYS=y
|
||||
CONFIG_LEDS_PWM=y
|
||||
CONFIG_LEDS_TRIGGER_DISK=y
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
CONFIG_LIBFDT=y
|
||||
CONFIG_LOCALVERSION_AUTO=y
|
||||
CONFIG_LOCK_DEBUGGING_SUPPORT=y
|
||||
CONFIG_LOCK_SPIN_ON_OWNER=y
|
||||
CONFIG_MACB=y
|
||||
# CONFIG_MACB_PCI is not set
|
||||
CONFIG_MACB_USE_HWSTAMP=y
|
||||
CONFIG_MDIO_BUS=y
|
||||
CONFIG_MDIO_DEVICE=y
|
||||
CONFIG_MDIO_DEVRES=y
|
||||
CONFIG_MEMFD_CREATE=y
|
||||
CONFIG_MFD_CORE=y
|
||||
CONFIG_MFD_SYSCON=y
|
||||
CONFIG_MICROSEMI_PHY=y
|
||||
CONFIG_MIGRATION=y
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_BLOCK=y
|
||||
CONFIG_MMC_SDHCI=y
|
||||
CONFIG_MMC_SDHCI_CADENCE=y
|
||||
# CONFIG_MMC_SDHCI_PCI is not set
|
||||
CONFIG_MMC_SDHCI_PLTFM=y
|
||||
CONFIG_MMC_SPI=y
|
||||
CONFIG_MMIOWB=y
|
||||
CONFIG_MODULES_USE_ELF_RELA=y
|
||||
CONFIG_MODULE_SECTIONS=y
|
||||
CONFIG_MPILIB=y
|
||||
CONFIG_MQ_IOSCHED_DEADLINE=y
|
||||
CONFIG_MQ_IOSCHED_KYBER=y
|
||||
CONFIG_MTD_SPI_NOR=y
|
||||
CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y
|
||||
CONFIG_MUTEX_SPIN_ON_OWNER=y
|
||||
CONFIG_NEED_DMA_MAP_STATE=y
|
||||
CONFIG_NET_FAILOVER=y
|
||||
CONFIG_NET_FLOW_LIMIT=y
|
||||
CONFIG_NET_PTP_CLASSIFY=y
|
||||
CONFIG_NET_SELFTESTS=y
|
||||
CONFIG_NLS=y
|
||||
CONFIG_NLS_CODEPAGE_437=y
|
||||
CONFIG_NLS_ISO8859_1=y
|
||||
CONFIG_NR_CPUS=8
|
||||
CONFIG_NVMEM=y
|
||||
CONFIG_NVMEM_SYSFS=y
|
||||
CONFIG_OF=y
|
||||
CONFIG_OF_ADDRESS=y
|
||||
CONFIG_OF_EARLY_FLATTREE=y
|
||||
CONFIG_OF_FLATTREE=y
|
||||
CONFIG_OF_GPIO=y
|
||||
CONFIG_OF_IRQ=y
|
||||
CONFIG_OF_KOBJ=y
|
||||
CONFIG_OF_MDIO=y
|
||||
CONFIG_OID_REGISTRY=y
|
||||
CONFIG_PADATA=y
|
||||
CONFIG_PAGE_OFFSET=0xffffffe000000000
|
||||
CONFIG_PAGE_REPORTING=y
|
||||
CONFIG_PA_BITS=56
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCIEAER=y
|
||||
CONFIG_PCIEAER_INJECT=m
|
||||
CONFIG_PCIEASPM=y
|
||||
CONFIG_PCIEASPM_DEFAULT=y
|
||||
# CONFIG_PCIEASPM_PERFORMANCE is not set
|
||||
# CONFIG_PCIEASPM_POWERSAVE is not set
|
||||
# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set
|
||||
CONFIG_PCIEPORTBUS=y
|
||||
CONFIG_PCIE_DPC=y
|
||||
CONFIG_PCIE_DW=y
|
||||
CONFIG_PCIE_DW_HOST=y
|
||||
CONFIG_PCIE_ECRC=y
|
||||
CONFIG_PCIE_FU740=y
|
||||
CONFIG_PCIE_PTM=y
|
||||
CONFIG_PCIE_XILINX=y
|
||||
CONFIG_PCI_DEBUG=y
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
CONFIG_PCI_DOMAINS_GENERIC=y
|
||||
CONFIG_PCI_ECAM=y
|
||||
CONFIG_PCI_HOST_COMMON=y
|
||||
CONFIG_PCI_HOST_GENERIC=y
|
||||
CONFIG_PCI_MSI=y
|
||||
CONFIG_PCI_MSI_IRQ_DOMAIN=y
|
||||
CONFIG_PCI_SW_SWITCHTEC=y
|
||||
CONFIG_PGTABLE_LEVELS=3
|
||||
CONFIG_PHYLIB=y
|
||||
CONFIG_PHYLINK=y
|
||||
CONFIG_PHYS_ADDR_T_64BIT=y
|
||||
# CONFIG_PHYS_RAM_BASE_FIXED is not set
|
||||
CONFIG_POWER_RESET=y
|
||||
CONFIG_POWER_RESET_GPIO=y
|
||||
CONFIG_POWER_RESET_GPIO_RESTART=y
|
||||
CONFIG_POWER_RESET_RESTART=y
|
||||
CONFIG_POWER_RESET_SYSCON=y
|
||||
CONFIG_POWER_RESET_SYSCON_POWEROFF=y
|
||||
CONFIG_PPS=y
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_PTP_1588_CLOCK=y
|
||||
CONFIG_PTP_1588_CLOCK_OPTIONAL=y
|
||||
CONFIG_PWM=y
|
||||
CONFIG_PWM_SIFIVE=y
|
||||
CONFIG_PWM_SYSFS=y
|
||||
CONFIG_RATIONAL=y
|
||||
CONFIG_RCU_TRACE=y
|
||||
CONFIG_RD_GZIP=y
|
||||
CONFIG_REALTEK_PHY=y
|
||||
CONFIG_REGMAP=y
|
||||
CONFIG_REGMAP_I2C=y
|
||||
CONFIG_REGMAP_IRQ=y
|
||||
CONFIG_REGMAP_MMIO=y
|
||||
# CONFIG_RESET_ATTACK_MITIGATION is not set
|
||||
CONFIG_RESET_CONTROLLER=y
|
||||
CONFIG_RESET_SIMPLE=y
|
||||
CONFIG_RFS_ACCEL=y
|
||||
CONFIG_RISCV=y
|
||||
CONFIG_RISCV_BASE_PMU=y
|
||||
CONFIG_RISCV_ERRATA_ALTERNATIVE=y
|
||||
CONFIG_RISCV_INTC=y
|
||||
CONFIG_RISCV_ISA_C=y
|
||||
CONFIG_RISCV_SBI=y
|
||||
CONFIG_RISCV_SBI_V01=y
|
||||
CONFIG_RISCV_TIMER=y
|
||||
CONFIG_RPS=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
# CONFIG_RTC_DRV_EFI is not set
|
||||
CONFIG_RTC_I2C_AND_SPI=y
|
||||
CONFIG_RWSEM_SPIN_ON_OWNER=y
|
||||
CONFIG_SCHED_DEBUG=y
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_COMMON=y
|
||||
CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
|
||||
CONFIG_SERIAL_8250_EXAR=y
|
||||
CONFIG_SERIAL_8250_NR_UARTS=4
|
||||
CONFIG_SERIAL_8250_PCI=y
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
|
||||
CONFIG_SERIAL_EARLYCON_RISCV_SBI=y
|
||||
CONFIG_SERIAL_MCTRL_GPIO=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_SERIAL_SIFIVE=y
|
||||
CONFIG_SERIAL_SIFIVE_CONSOLE=y
|
||||
CONFIG_SERIO=y
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
CONFIG_SG_POOL=y
|
||||
CONFIG_SIFIVE_L2=y
|
||||
CONFIG_SIFIVE_PLIC=y
|
||||
CONFIG_SLUB_DEBUG=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_SOCK_RX_QUEUE_MAPPING=y
|
||||
# CONFIG_SOC_MICROCHIP_POLARFIRE is not set
|
||||
CONFIG_SOC_SIFIVE=y
|
||||
# CONFIG_SOC_VIRT is not set
|
||||
CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
CONFIG_SPI=y
|
||||
CONFIG_SPI_BITBANG=y
|
||||
CONFIG_SPI_MASTER=y
|
||||
CONFIG_SPI_MEM=y
|
||||
CONFIG_SPI_SIFIVE=y
|
||||
CONFIG_SRCU=y
|
||||
CONFIG_STACKTRACE=y
|
||||
CONFIG_SWIOTLB=y
|
||||
CONFIG_SWPHY=y
|
||||
CONFIG_SYSCTL_EXCEPTION_TRACE=y
|
||||
CONFIG_SYSFB=y
|
||||
# CONFIG_SYSFB_SIMPLEFB is not set
|
||||
CONFIG_THREAD_INFO_IN_TASK=y
|
||||
CONFIG_TICK_CPU_ACCOUNTING=y
|
||||
CONFIG_TIMER_OF=y
|
||||
CONFIG_TIMER_PROBE=y
|
||||
CONFIG_TRACE_CLOCK=y
|
||||
CONFIG_TREE_RCU=y
|
||||
CONFIG_TREE_SRCU=y
|
||||
CONFIG_TUNE_GENERIC=y
|
||||
CONFIG_UCS2_STRING=y
|
||||
CONFIG_UEVENT_HELPER_PATH=""
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_COMMON=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
# CONFIG_USB_EHCI_HCD_PLATFORM is not set
|
||||
CONFIG_USB_EHCI_PCI=y
|
||||
CONFIG_USB_HID=y
|
||||
CONFIG_USB_NET_DRIVERS=y
|
||||
CONFIG_USB_PCI=y
|
||||
CONFIG_USB_STORAGE=y
|
||||
CONFIG_USB_SUPPORT=y
|
||||
# CONFIG_USB_UHCI_HCD is not set
|
||||
CONFIG_USB_XHCI_HCD=y
|
||||
CONFIG_USB_XHCI_PCI=y
|
||||
# CONFIG_USB_XHCI_PLATFORM is not set
|
||||
CONFIG_VA_BITS=39
|
||||
CONFIG_VFAT_FS=y
|
||||
CONFIG_VGA_ARB=y
|
||||
CONFIG_VGA_ARB_MAX_GPUS=16
|
||||
CONFIG_VMAP_STACK=y
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_VT=y
|
||||
CONFIG_VT_CONSOLE=y
|
||||
# CONFIG_VT_HW_CONSOLE_BINDING is not set
|
||||
CONFIG_WATCHDOG_CORE=y
|
||||
CONFIG_XPS=y
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
CONFIG_ZONE_DMA32=y
|
@ -285,6 +285,7 @@ CONFIG_RESET_CONTROLLER=y
|
||||
CONFIG_RESET_SIMPLE=y
|
||||
CONFIG_RISCV=y
|
||||
CONFIG_RISCV_ALTERNATIVE=y
|
||||
CONFIG_RISCV_BASE_PMU=y
|
||||
# CONFIG_RISCV_BOOT_SPINWAIT is not set
|
||||
CONFIG_RISCV_DMA_NONCOHERENT=y
|
||||
CONFIG_RISCV_INTC=y
|
||||
|
@ -1,49 +0,0 @@
|
||||
From ab5c8f5492cce16ff2104393e2f1fa64a3ff6e88 Mon Sep 17 00:00:00 2001
|
||||
From: David Abdurachmanov <david.abdurachmanov@sifive.com>
|
||||
Date: Wed, 17 Feb 2021 06:06:14 -0800
|
||||
Subject: [PATCH 1/7] riscv: sifive: fu740: cpu{1,2,3,4} set compatible to
|
||||
sifive,u74-mc
|
||||
|
||||
Signed-off-by: David Abdurachmanov <david.abdurachmanov@sifive.com>
|
||||
---
|
||||
arch/riscv/boot/dts/sifive/fu740-c000.dtsi | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/arch/riscv/boot/dts/sifive/fu740-c000.dtsi
|
||||
+++ b/arch/riscv/boot/dts/sifive/fu740-c000.dtsi
|
||||
@@ -39,7 +39,7 @@
|
||||
};
|
||||
};
|
||||
cpu1: cpu@1 {
|
||||
- compatible = "sifive,bullet0", "riscv";
|
||||
+ compatible = "sifive,u74-mc", "sifive,bullet0", "riscv";
|
||||
d-cache-block-size = <64>;
|
||||
d-cache-sets = <64>;
|
||||
d-cache-size = <32768>;
|
||||
@@ -63,7 +63,7 @@
|
||||
};
|
||||
};
|
||||
cpu2: cpu@2 {
|
||||
- compatible = "sifive,bullet0", "riscv";
|
||||
+ compatible = "sifive,u74-mc", "sifive,bullet0", "riscv";
|
||||
d-cache-block-size = <64>;
|
||||
d-cache-sets = <64>;
|
||||
d-cache-size = <32768>;
|
||||
@@ -87,7 +87,7 @@
|
||||
};
|
||||
};
|
||||
cpu3: cpu@3 {
|
||||
- compatible = "sifive,bullet0", "riscv";
|
||||
+ compatible = "sifive,u74-mc", "sifive,bullet0", "riscv";
|
||||
d-cache-block-size = <64>;
|
||||
d-cache-sets = <64>;
|
||||
d-cache-size = <32768>;
|
||||
@@ -111,7 +111,7 @@
|
||||
};
|
||||
};
|
||||
cpu4: cpu@4 {
|
||||
- compatible = "sifive,bullet0", "riscv";
|
||||
+ compatible = "sifive,u74-mc", "sifive,bullet0", "riscv";
|
||||
d-cache-block-size = <64>;
|
||||
d-cache-sets = <64>;
|
||||
d-cache-size = <32768>;
|
@ -1,104 +0,0 @@
|
||||
From 657819ff477dd73cd71075609698aa57ba098d8c Mon Sep 17 00:00:00 2001
|
||||
From: David Abdurachmanov <david.abdurachmanov@sifive.com>
|
||||
Date: Wed, 15 Sep 2021 07:10:02 -0700
|
||||
Subject: [PATCH 2/7] riscv: sifive: unmatched: update regulators values
|
||||
|
||||
These are the regulators values from the schematics for Rev3{A,B} boards.
|
||||
|
||||
Note this is not fully correct as bcore1/bcore2 and bmem/bio are merged, but
|
||||
it's only supported in v5.15 kernel. See:
|
||||
|
||||
541ee8f640327f951e7039278057827322231ab0 ("regulator: da9063: Add support for
|
||||
full-current mode.")
|
||||
|
||||
This will be changed for v5.15 kernel based on the patch above.
|
||||
|
||||
Signed-off-by: David Abdurachmanov <david.abdurachmanov@sifive.com>
|
||||
---
|
||||
.../riscv/boot/dts/sifive/hifive-unmatched-a00.dts | 32 +++++++++++-----------
|
||||
1 file changed, 16 insertions(+), 16 deletions(-)
|
||||
|
||||
--- a/arch/riscv/boot/dts/sifive/hifive-unmatched-a00.dts
|
||||
+++ b/arch/riscv/boot/dts/sifive/hifive-unmatched-a00.dts
|
||||
@@ -73,16 +73,16 @@
|
||||
|
||||
regulators {
|
||||
vdd_bcore1: bcore1 {
|
||||
- regulator-min-microvolt = <900000>;
|
||||
- regulator-max-microvolt = <900000>;
|
||||
+ regulator-min-microvolt = <1050000>;
|
||||
+ regulator-max-microvolt = <1050000>;
|
||||
regulator-min-microamp = <5000000>;
|
||||
regulator-max-microamp = <5000000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
vdd_bcore2: bcore2 {
|
||||
- regulator-min-microvolt = <900000>;
|
||||
- regulator-max-microvolt = <900000>;
|
||||
+ regulator-min-microvolt = <1050000>;
|
||||
+ regulator-max-microvolt = <1050000>;
|
||||
regulator-min-microamp = <5000000>;
|
||||
regulator-max-microamp = <5000000>;
|
||||
regulator-always-on;
|
||||
@@ -137,48 +137,48 @@
|
||||
};
|
||||
|
||||
vdd_ldo3: ldo3 {
|
||||
- regulator-min-microvolt = <1800000>;
|
||||
- regulator-max-microvolt = <1800000>;
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
regulator-min-microamp = <200000>;
|
||||
regulator-max-microamp = <200000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
vdd_ldo4: ldo4 {
|
||||
- regulator-min-microvolt = <1800000>;
|
||||
- regulator-max-microvolt = <1800000>;
|
||||
+ regulator-min-microvolt = <2500000>;
|
||||
+ regulator-max-microvolt = <2500000>;
|
||||
regulator-min-microamp = <200000>;
|
||||
regulator-max-microamp = <200000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
vdd_ldo5: ldo5 {
|
||||
- regulator-min-microvolt = <1800000>;
|
||||
- regulator-max-microvolt = <1800000>;
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
regulator-min-microamp = <100000>;
|
||||
regulator-max-microamp = <100000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
vdd_ldo6: ldo6 {
|
||||
- regulator-min-microvolt = <3300000>;
|
||||
- regulator-max-microvolt = <3300000>;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
regulator-min-microamp = <200000>;
|
||||
regulator-max-microamp = <200000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
vdd_ldo7: ldo7 {
|
||||
- regulator-min-microvolt = <1800000>;
|
||||
- regulator-max-microvolt = <1800000>;
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
regulator-min-microamp = <200000>;
|
||||
regulator-max-microamp = <200000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
vdd_ldo8: ldo8 {
|
||||
- regulator-min-microvolt = <1800000>;
|
||||
- regulator-max-microvolt = <1800000>;
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
regulator-min-microamp = <200000>;
|
||||
regulator-max-microamp = <200000>;
|
||||
regulator-always-on;
|
@ -1,69 +0,0 @@
|
||||
From 2c2d8ac8c124a2938c9326c14b2dffd46d76b4a8 Mon Sep 17 00:00:00 2001
|
||||
From: David Abdurachmanov <david.abdurachmanov@sifive.com>
|
||||
Date: Mon, 13 Sep 2021 02:15:37 -0700
|
||||
Subject: [PATCH 3/7] riscv: sifive: unmatched: define PWM LEDs
|
||||
|
||||
Add D2 (RGB) and D12 (green) LEDs for SiFive Unmatched board.
|
||||
|
||||
Signed-off-by: David Abdurachmanov <david.abdurachmanov@sifive.com>
|
||||
---
|
||||
.../riscv/boot/dts/sifive/hifive-unmatched-a00.dts | 41 ++++++++++++++++++++++
|
||||
1 file changed, 41 insertions(+)
|
||||
|
||||
--- a/arch/riscv/boot/dts/sifive/hifive-unmatched-a00.dts
|
||||
+++ b/arch/riscv/boot/dts/sifive/hifive-unmatched-a00.dts
|
||||
@@ -4,6 +4,8 @@
|
||||
#include "fu740-c000.dtsi"
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
+#include <dt-bindings/leds/common.h>
|
||||
+#include <dt-bindings/pwm/pwm.h>
|
||||
|
||||
/* Clock frequency (in Hz) of the PCB crystal for rtcclk */
|
||||
#define RTCCLK_FREQ 1000000
|
||||
@@ -31,6 +33,45 @@
|
||||
soc {
|
||||
};
|
||||
|
||||
+ pwmleds {
|
||||
+ compatible = "pwm-leds";
|
||||
+ green-d12 {
|
||||
+ label = "green:d12";
|
||||
+ color = <LED_COLOR_ID_GREEN>;
|
||||
+ pwms = <&pwm0 0 7812500 PWM_POLARITY_INVERTED>;
|
||||
+ active-low = <1>;
|
||||
+ max-brightness = <255>;
|
||||
+ linux,default-trigger = "none";
|
||||
+ };
|
||||
+
|
||||
+ green-d2 {
|
||||
+ label = "green:d2";
|
||||
+ color = <LED_COLOR_ID_GREEN>;
|
||||
+ pwms = <&pwm0 1 7812500 PWM_POLARITY_INVERTED>;
|
||||
+ active-low = <1>;
|
||||
+ max-brightness = <255>;
|
||||
+ linux,default-trigger = "none";
|
||||
+ };
|
||||
+
|
||||
+ red-d2 {
|
||||
+ label = "red:d2";
|
||||
+ color = <LED_COLOR_ID_RED>;
|
||||
+ pwms = <&pwm0 2 7812500 PWM_POLARITY_INVERTED>;
|
||||
+ active-low = <1>;
|
||||
+ max-brightness = <255>;
|
||||
+ linux,default-trigger = "none";
|
||||
+ };
|
||||
+
|
||||
+ blue-d2 {
|
||||
+ label = "blue:d2";
|
||||
+ color = <LED_COLOR_ID_BLUE>;
|
||||
+ pwms = <&pwm0 3 7812500 PWM_POLARITY_INVERTED>;
|
||||
+ active-low = <1>;
|
||||
+ max-brightness = <255>;
|
||||
+ linux,default-trigger = "none";
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
hfclk: hfclk {
|
||||
#clock-cells = <0>;
|
||||
compatible = "fixed-clock";
|
@ -1,26 +0,0 @@
|
||||
From 14ede57943bc4209755d08daf93ac7be967d7fbe Mon Sep 17 00:00:00 2001
|
||||
From: David Abdurachmanov <david.abdurachmanov@sifive.com>
|
||||
Date: Mon, 13 Sep 2021 02:18:30 -0700
|
||||
Subject: [PATCH 4/7] riscv: sifive: unmatched: add gpio-poweroff node
|
||||
|
||||
Add gpio-poweroff node to allow powering off the system.
|
||||
|
||||
Signed-off-by: David Abdurachmanov <david.abdurachmanov@sifive.com>
|
||||
---
|
||||
arch/riscv/boot/dts/sifive/hifive-unmatched-a00.dts | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
--- a/arch/riscv/boot/dts/sifive/hifive-unmatched-a00.dts
|
||||
+++ b/arch/riscv/boot/dts/sifive/hifive-unmatched-a00.dts
|
||||
@@ -85,6 +85,11 @@
|
||||
clock-frequency = <RTCCLK_FREQ>;
|
||||
clock-output-names = "rtcclk";
|
||||
};
|
||||
+
|
||||
+ gpio-poweroff {
|
||||
+ compatible = "gpio-poweroff";
|
||||
+ gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
};
|
||||
|
||||
&uart0 {
|
@ -1,116 +0,0 @@
|
||||
From d3cf2859a056273400fbdf9d389b75750ff6ca5e Mon Sep 17 00:00:00 2001
|
||||
From: David Abdurachmanov <david.abdurachmanov@sifive.com>
|
||||
Date: Fri, 14 May 2021 05:27:51 -0700
|
||||
Subject: [PATCH 6/7] riscv: sifive: unleashed: define opp table (cpufreq)
|
||||
|
||||
Source: https://github.com/sifive/riscv-linux/commits/dev/paulw/cpufreq-dt-aloe-v5.3-rc4
|
||||
|
||||
Signed-off-by: David Abdurachmanov <david.abdurachmanov@sifive.com>
|
||||
---
|
||||
arch/riscv/Kconfig | 8 +++++
|
||||
arch/riscv/boot/dts/sifive/fu540-c000.dtsi | 5 ++++
|
||||
.../riscv/boot/dts/sifive/hifive-unleashed-a00.dts | 34 ++++++++++++++++++++++
|
||||
3 files changed, 47 insertions(+)
|
||||
|
||||
--- a/arch/riscv/Kconfig
|
||||
+++ b/arch/riscv/Kconfig
|
||||
@@ -566,6 +566,14 @@ config BUILTIN_DTB
|
||||
depends on OF
|
||||
default y if XIP_KERNEL
|
||||
|
||||
+menu "CPU Power Management"
|
||||
+
|
||||
+source "drivers/cpuidle/Kconfig"
|
||||
+
|
||||
+source "drivers/cpufreq/Kconfig"
|
||||
+
|
||||
+endmenu
|
||||
+
|
||||
menu "Power management options"
|
||||
|
||||
source "kernel/power/Kconfig"
|
||||
--- a/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
|
||||
+++ b/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
|
||||
@@ -30,6 +30,7 @@
|
||||
i-cache-size = <16384>;
|
||||
reg = <0>;
|
||||
riscv,isa = "rv64imac";
|
||||
+ clocks = <&prci PRCI_CLK_COREPLL>;
|
||||
status = "disabled";
|
||||
cpu0_intc: interrupt-controller {
|
||||
#interrupt-cells = <1>;
|
||||
@@ -54,6 +55,7 @@
|
||||
reg = <1>;
|
||||
riscv,isa = "rv64imafdc";
|
||||
tlb-split;
|
||||
+ clocks = <&prci PRCI_CLK_COREPLL>;
|
||||
next-level-cache = <&l2cache>;
|
||||
cpu1_intc: interrupt-controller {
|
||||
#interrupt-cells = <1>;
|
||||
@@ -78,6 +80,7 @@
|
||||
reg = <2>;
|
||||
riscv,isa = "rv64imafdc";
|
||||
tlb-split;
|
||||
+ clocks = <&prci PRCI_CLK_COREPLL>;
|
||||
next-level-cache = <&l2cache>;
|
||||
cpu2_intc: interrupt-controller {
|
||||
#interrupt-cells = <1>;
|
||||
@@ -102,6 +105,7 @@
|
||||
reg = <3>;
|
||||
riscv,isa = "rv64imafdc";
|
||||
tlb-split;
|
||||
+ clocks = <&prci PRCI_CLK_COREPLL>;
|
||||
next-level-cache = <&l2cache>;
|
||||
cpu3_intc: interrupt-controller {
|
||||
#interrupt-cells = <1>;
|
||||
@@ -126,6 +130,7 @@
|
||||
reg = <4>;
|
||||
riscv,isa = "rv64imafdc";
|
||||
tlb-split;
|
||||
+ clocks = <&prci PRCI_CLK_COREPLL>;
|
||||
next-level-cache = <&l2cache>;
|
||||
cpu4_intc: interrupt-controller {
|
||||
#interrupt-cells = <1>;
|
||||
--- a/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
|
||||
+++ b/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
|
||||
@@ -84,6 +84,40 @@
|
||||
label = "d4";
|
||||
};
|
||||
};
|
||||
+
|
||||
+ fu540_c000_opp_table: opp-table {
|
||||
+ compatible = "operating-points-v2";
|
||||
+ opp-shared;
|
||||
+
|
||||
+ opp-350000000 {
|
||||
+ opp-hz = /bits/ 64 <350000000>;
|
||||
+ };
|
||||
+ opp-700000000 {
|
||||
+ opp-hz = /bits/ 64 <700000000>;
|
||||
+ };
|
||||
+ opp-999999999 {
|
||||
+ opp-hz = /bits/ 64 <999999999>;
|
||||
+ };
|
||||
+ opp-1400000000 {
|
||||
+ opp-hz = /bits/ 64 <1400000000>;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&cpu0 {
|
||||
+ operating-points-v2 = <&fu540_c000_opp_table>;
|
||||
+};
|
||||
+&cpu1 {
|
||||
+ operating-points-v2 = <&fu540_c000_opp_table>;
|
||||
+};
|
||||
+&cpu2 {
|
||||
+ operating-points-v2 = <&fu540_c000_opp_table>;
|
||||
+};
|
||||
+&cpu3 {
|
||||
+ operating-points-v2 = <&fu540_c000_opp_table>;
|
||||
+};
|
||||
+&cpu4 {
|
||||
+ operating-points-v2 = <&fu540_c000_opp_table>;
|
||||
};
|
||||
|
||||
&uart0 {
|
@ -1,301 +0,0 @@
|
||||
From mboxrd@z Thu Jan 1 00:00:00 1970
|
||||
Return-Path: <SRS0=S+R5=LD=lists.infradead.org=linux-riscv-bounces+linux-riscv=archiver.kernel.org@kernel.org>
|
||||
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
|
||||
aws-us-west-2-korg-lkml-1.web.codeaurora.org
|
||||
X-Spam-Level:
|
||||
X-Spam-Status: No, score=-21.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH,
|
||||
DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,
|
||||
INCLUDES_PATCH,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,MSGID_FROM_MTA_HEADER,
|
||||
SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable
|
||||
autolearn_force=no version=3.4.0
|
||||
Received: from mail.kernel.org (mail.kernel.org [198.145.29.99])
|
||||
by smtp.lore.kernel.org (Postfix) with ESMTP id 9A34CC48BCD
|
||||
for <linux-riscv@archiver.kernel.org>; Wed, 9 Jun 2021 12:50:08 +0000 (UTC)
|
||||
Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133])
|
||||
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
||||
(No client certificate requested)
|
||||
by mail.kernel.org (Postfix) with ESMTPS id 69795611C9
|
||||
for <linux-riscv@archiver.kernel.org>; Wed, 9 Jun 2021 12:50:08 +0000 (UTC)
|
||||
DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 69795611C9
|
||||
Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=wdc.com
|
||||
Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org
|
||||
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
|
||||
d=lists.infradead.org; s=bombadil.20210309; h=Sender:
|
||||
Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post:
|
||||
List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:
|
||||
Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:
|
||||
Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:
|
||||
List-Owner; bh=64gRxQ9bX8C6wjLq0KuJ2lv98bQdXijt0LPnNpch3NU=; b=rgeSpoSWQ+Nca2
|
||||
9PLsgI7dOYVdTu48CyVJStiizsvIvVFN2rBAgELHF2nRCCtoSiPMxgcpCKtDcm7sh9lC8AblCoBjN
|
||||
LXiPRHVYJAcRNiWiQ0qOTqHdTbezFdzSjNOs6drbaiI4B8AZtychw1hP+ubsb5czAaz6510OEVct/
|
||||
h5M4Tlljcn/WIyulBd/tnuUOZPT0XL6rb2+TvRQvjXDBFHN+bWqP8OjXKnE1FTvy5MF8OTlUgI6wr
|
||||
3f4t/eS/PPbtXRD5raJzEwEQLJ6XY6NJABs40tKpWZNuUaqTfmonNdbP9y1htWhByhsAk+fw5WK/C
|
||||
/KocvM6IzPmqGIBWcTdQ==;
|
||||
Received: from localhost ([::1] helo=bombadil.infradead.org)
|
||||
by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux))
|
||||
id 1lqxeS-00Do8i-Hj; Wed, 09 Jun 2021 12:49:44 +0000
|
||||
Received: from esa4.hgst.iphmx.com ([216.71.154.42])
|
||||
by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux))
|
||||
id 1lqx5h-00DbCQ-K0
|
||||
for linux-riscv@lists.infradead.org; Wed, 09 Jun 2021 12:13:51 +0000
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
|
||||
d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com;
|
||||
t=1623240829; x=1654776829;
|
||||
h=from:to:cc:subject:date:message-id:in-reply-to:
|
||||
references:content-transfer-encoding:mime-version;
|
||||
bh=s4va/Owvq7MQI8rUsD/e02RmaYfJNzYNcxlXspGRY7g=;
|
||||
b=G5GD9eN+rv669E7jyRnRAt0jw83CxhIrSiDIjXuPmhWyMhKeQGD7ACRm
|
||||
ii6o0zmOREhGihtwB6X/xpY/2ZvK+cxcHmJXa+Ykyn8QN+/YKFtg3svfj
|
||||
eiTN7U/mEozCoGNd1wXu59RQj11Xz60DN/qEUlYFaL6SjukUgifFVgbvG
|
||||
uUj8AM8+xf1jKHi3Q/6nVPpJX8uiW/NPFHrwI8hxUwYr9viQwxXvc7FNr
|
||||
fR8bH2c/HiGacGYEHosgP0WT//d9Huqn4JNINvjidK4ZSJ74cXlr8KwMG
|
||||
8snmfx4UjEWMhK1lCYalJEU7nxXFfih/6DMuFRorETpWQ+424BAKUJdDH Q==;
|
||||
IronPort-SDR: pYhRsIZkhfmi45K4HfnZj39kxfUGpxs1e+q+Wh8kDE+ySh35HkJaaUcpP04mb7VeIVtPRx/h6Q
|
||||
imv6sn8fYo/V8ezHAq4jpd1QadqInKi1ubLnCE3Zy7GnhVBepoV6FbI14Y01V+5QIUwYdFNcGG
|
||||
RsxDOTQyU5AljH0Rc6WkrpdVf5jsrXXMddmlDdi6QsfKGy7MwQ/NYojNIqyLhRSgu5w2uTIE7X
|
||||
atSbjb8j2a+EJUY0WgYTGfNHKCdQLAhjcsWZgU7Iu0vSaBU6A7seCkqun24dvF/zYuzEj7wedD
|
||||
TvE=
|
||||
X-IronPort-AV: E=Sophos;i="5.83,260,1616428800"; d="scan'208";a="170575129"
|
||||
Received: from mail-dm6nam12lp2169.outbound.protection.outlook.com (HELO
|
||||
NAM12-DM6-obe.outbound.protection.outlook.com) ([104.47.59.169])
|
||||
by ob1.hgst.iphmx.com with ESMTP; 09 Jun 2021 20:13:48 +0800
|
||||
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
|
||||
b=hrlr4Qi66FmbQW45zI7QeA9nEYSvxO+tR++vUyFHxjRqnr6WtjKgHM8hPpp8oHXaK82U0+KQUc2+WjLbe8LihexXFQs5zRwBDwuArmkKt85cL3utD3OBzTkr4A9ZhRS5mzztnn9kvTFNplPjSydXPetJQIZ9WKmihJrdeaGQ+zQ//6TdDWVpLyBbqiBVUbUwlKQbpbbfHvzQCHYQbIiUcGn4vaSXYp2Xp1Z5yYVtrfDK+TemKG/8fKQoJjg/tdmDtQ97Cgw7nX6Oc9kdmoTIxFilMy4XjPciPcNOPdLmboGCt6+TMBeftLc1VFNnr7PwuxOogv4I7eJ/P9UaK57k5A==
|
||||
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
|
||||
s=arcselector9901;
|
||||
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
|
||||
bh=Ibi36Vj2s7bu56DZaU1uSl4xNA3OB2FHlI/rBKn+8xo=;
|
||||
b=CE3o+0GFLPMQuw0AK1IRf/vX00diXsjayn0MmpS7ntSVXgxXIAPT9aDtk7x0NovJBTk2LHI5Mtxvz6SwVnJzUqZmNsXUktEj5Iwdd8EPIIxgCOjugo/6WC0FqaFKNvJB4hQ0tjFxv+J5DexSJ8+mPx6Ucr4DwtUXrCWzOeXyF5YK68mU5FgttbyutW3CGsGkPgaPAdOxXOgJqyYu8X25unmzG12Jq2xC4oVKsbA+RfDiaMKm97q2Bhy+LcgJNS6/ktlFKSOVu1HQ0POYgba3mtldN3vg73wLbxrfsdoe4261aJpkM05GJFDzdTNp4t3rEGhNuLR1+8OmKfLlPeSU9w==
|
||||
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
|
||||
smtp.mailfrom=wdc.com; dmarc=pass action=none header.from=wdc.com; dkim=pass
|
||||
header.d=wdc.com; arc=none
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
|
||||
d=sharedspace.onmicrosoft.com; s=selector2-sharedspace-onmicrosoft-com;
|
||||
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
|
||||
bh=Ibi36Vj2s7bu56DZaU1uSl4xNA3OB2FHlI/rBKn+8xo=;
|
||||
b=Z76YsVxTHK6/ta19C5vwaBPYmtDa2GIM/ml4myQZfIaHFNzXPzZ+PFcYy/Xf1Ixd0GZHcuSZQYgs/SPHWATh+rOWBAislGv1zmSAG/g0tiDckB8WaCwh1e3qGW4ZmUTmAU7dxB0vn0pRSLTnc1hdCUZ73buM78qo9qwsQZv41d0=
|
||||
Authentication-Results: dabbelt.com; dkim=none (message not signed)
|
||||
header.d=none;dabbelt.com; dmarc=none action=none header.from=wdc.com;
|
||||
Received: from CO6PR04MB7812.namprd04.prod.outlook.com (2603:10b6:303:138::6)
|
||||
by CO6PR04MB7794.namprd04.prod.outlook.com (2603:10b6:303:13f::7)
|
||||
with Microsoft SMTP Server (version=TLS1_2,
|
||||
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21; Wed, 9 Jun
|
||||
2021 12:13:47 +0000
|
||||
Received: from CO6PR04MB7812.namprd04.prod.outlook.com
|
||||
([fe80::a153:b7f8:c87f:89f8]) by CO6PR04MB7812.namprd04.prod.outlook.com
|
||||
([fe80::a153:b7f8:c87f:89f8%9]) with mapi id 15.20.4219.021; Wed, 9 Jun 2021
|
||||
12:13:47 +0000
|
||||
From: Anup Patel <anup.patel@wdc.com>
|
||||
To: Palmer Dabbelt <palmer@dabbelt.com>,
|
||||
Palmer Dabbelt <palmerdabbelt@google.com>,
|
||||
Paul Walmsley <paul.walmsley@sifive.com>, Albert Ou <aou@eecs.berkeley.edu>
|
||||
Cc: Atish Patra <atish.patra@wdc.com>,
|
||||
Alistair Francis <Alistair.Francis@wdc.com>,
|
||||
Anup Patel <anup@brainfault.org>, linux-riscv@lists.infradead.org,
|
||||
linux-kernel@vger.kernel.org, Anup Patel <anup.patel@wdc.com>
|
||||
Subject: [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available
|
||||
Date: Wed, 9 Jun 2021 17:43:22 +0530
|
||||
Message-Id: <20210609121322.3058-2-anup.patel@wdc.com>
|
||||
X-Mailer: git-send-email 2.25.1
|
||||
In-Reply-To: <20210609121322.3058-1-anup.patel@wdc.com>
|
||||
References: <20210609121322.3058-1-anup.patel@wdc.com>
|
||||
X-Originating-IP: [122.172.176.125]
|
||||
X-ClientProxiedBy: MA1PR0101CA0036.INDPRD01.PROD.OUTLOOK.COM
|
||||
(2603:1096:a00:22::22) To CO6PR04MB7812.namprd04.prod.outlook.com
|
||||
(2603:10b6:303:138::6)
|
||||
MIME-Version: 1.0
|
||||
X-MS-Exchange-MessageSentRepresentingType: 1
|
||||
Received: from wdc.com (122.172.176.125) by
|
||||
MA1PR0101CA0036.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:22::22) with
|
||||
Microsoft SMTP Server (version=TLS1_2,
|
||||
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21 via Frontend
|
||||
Transport; Wed, 9 Jun 2021 12:13:44 +0000
|
||||
X-MS-PublicTrafficType: Email
|
||||
X-MS-Office365-Filtering-Correlation-Id: 17406ef0-e8d7-4dc3-eee9-08d92b40085b
|
||||
X-MS-TrafficTypeDiagnostic: CO6PR04MB7794:
|
||||
X-MS-Exchange-Transport-Forked: True
|
||||
X-Microsoft-Antispam-PRVS: <CO6PR04MB77945CDDD1538EFCA060925B8D369@CO6PR04MB7794.namprd04.prod.outlook.com>
|
||||
WDCIPOUTBOUND: EOP-TRUE
|
||||
X-MS-Oob-TLC-OOBClassifiers: OLM:2887;
|
||||
X-MS-Exchange-SenderADCheck: 1
|
||||
X-Microsoft-Antispam: BCL:0;
|
||||
X-Microsoft-Antispam-Message-Info: IxB9oKL9LkeXCQ7mZ1A5qIcKlICr/TPZ/8V0ErM5hbqnvfK6Mf0mQL0tqqlJAOvLpCEVIyX7FllGqSlWsNG3ik/WbbDYQb9wAFCuFSAlGAeGppnJjJf0zfDAmp4NONB7kshKqtUYfGltTHTkV4ni+VEwWf/Q3T4vA0k3Jkt34iZFi9tOsSHkSWxPTsQyviBdCp3/36ZCVhYs6bXkf8sh0sA4Ql/l8t2zpcEUwjAm14ie3hOUBEp1W9qOz6StmR4xyl+zy49U38byeHu5XDF/qFT8FI4WclwFwxbDeTm8cU7MMg4D0xeR0Ytm2wVrgAdiapgQYLmxPIjIG96TRTbCupyuaJXmYcI6/x27PtiQYFwcpbRUjXDKRVX2WW74WHm88OOlTexD/OsbGHD6PVnc+InniK38yNcx06U9fIkDGSYWrJqLysALlO0V5gfkc35Fhttum638ES0S2sldGkFufM372EZeooczK7jeLMpoOTAnaLtPdTCGsHnnEDDbOK7NiptQlrLMhrNQ/70harAMmB6Vvdl+jvJi34DsuX+57WeQU8Ya1cyVxzFkWX2DwvPRsAnp/VNHzeQLc5MAIUYpwQvkJBcqihYMKrLMNOT94HmxBYmY2bcW/K9fXrPQ/whyJ5HoQuxydeiy7+QKg6FWnhguTACaaTKGKKIDIlfYA5FXYlZOaQ2iJFtiZP1GbxQnDEwz4SfGgCgBdiwqFm1NfGG7wRhqQa/Kgp3jBTHwaysCwcWu/Xdz/yiCV4lfQD/PTiOr5hmtld29G7WVDy9m6Q==
|
||||
X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;
|
||||
IPV:NLI; SFV:NSPM; H:CO6PR04MB7812.namprd04.prod.outlook.com; PTR:; CAT:NONE;
|
||||
SFS:(4636009)(396003)(39860400002)(136003)(346002)(366004)(376002)(8676002)(316002)(55236004)(38100700002)(38350700002)(110136005)(86362001)(54906003)(4326008)(956004)(966005)(478600001)(26005)(186003)(55016002)(8936002)(2616005)(7696005)(52116002)(16526019)(5660300002)(8886007)(6666004)(1076003)(66476007)(66556008)(36756003)(66946007)(83380400001)(2906002)(44832011);
|
||||
DIR:OUT; SFP:1102;
|
||||
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
|
||||
X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?2kfiFAcyFkAMcwkoCUqJGxdVnwsuTm5WWTXA4Pq0ZNAjWsfYI4MNugTA9f8C?=
|
||||
=?us-ascii?Q?WaQrYEizTkvIlgRDqeKVRS0vaMaeU9XaSzO6UAJMnd0jY3BzkJgKUU9xj1aU?=
|
||||
=?us-ascii?Q?vmwXKxCS+vZ2VKgLifaU1JCeemiJqV9aW+6AJEycq722bz9yXmcaJsaHWtX3?=
|
||||
=?us-ascii?Q?4sSoLeVPvfzwzDZEEoGsZZi1G7inY2imGEgY/r3m5/qYvavJQ3An4e4sjEqZ?=
|
||||
=?us-ascii?Q?Z4a4FAd/6c3X8cjmNwGvgWoAIM5WaJYFQe30MQ79alCUfZyiKB4tR0+5OGFd?=
|
||||
=?us-ascii?Q?P/rQ169Z644JNKKcEabikpL7qZZJ6OMPTS7XR9x/7GzWOJ7soV3/3I2tfCdi?=
|
||||
=?us-ascii?Q?xVsOK1DRF4y6gi5udvnb+Uu1U5wC1NlT0U/+TrnTSeY/IuLmMgFUysw+fQ+D?=
|
||||
=?us-ascii?Q?DIVN44TKrMoEZKx9SKcx4jYpUGYvaCH4sVOAx3zWQC0Oz1Nz3/a/isywpQW9?=
|
||||
=?us-ascii?Q?1I1kl/2N97K0EoWIPf6qPjyLVWXg1dOHfk6SjNW64JIIPUNnM3h7k2igDX3o?=
|
||||
=?us-ascii?Q?d7lWyFfzoWhNC7opS71uzta+ti8aHxo+xzvYvf2wLb+fdyEP9t+oQVrEQYIW?=
|
||||
=?us-ascii?Q?rAUKPqjEfAZOYBB28SaabfVt/QF6hFfV/0yJ/JV/Ie8ivC1t6iO+QZQscV7K?=
|
||||
=?us-ascii?Q?d4Pg+xVSE+m+LsgNwO36cTTe6hSLBPnWU1NMOW2cxTRKGm0Lwd2HyjyKTBMD?=
|
||||
=?us-ascii?Q?BcnKo9GXAVgOAGCG5cwEBN76q6sXxbWy0pjni3O2bLYBg4CIYCB/JNzOIfE0?=
|
||||
=?us-ascii?Q?Toz6Qwc4aw5NxRLqz9IygGT6ZunRVUWUsgJrIt5U20elX+lRmtX1cqrQNTON?=
|
||||
=?us-ascii?Q?ZHzuAI587pB0zK4EiS25hc9C8RtwjlY67heuMsYZDww5TU+NV3+0WN1/NrCX?=
|
||||
=?us-ascii?Q?3kB7O188tvm1sWVhCaC6hk9s19nKGRgMS5OHXTMxhmyw1Dn/zorMYff3r9ZE?=
|
||||
=?us-ascii?Q?sNiBI7fwru/Jsxt2/jNCpFaEYUa9JkrdSse76BXo/UxLALnxO3bzpym3Dq+T?=
|
||||
=?us-ascii?Q?s4uEA8UncKM0e+Mhp9hW1c3DR61Qjj8wb+LV3XB0qYK/1rHs8IDdJ97tw1fp?=
|
||||
=?us-ascii?Q?Ux9SlgS9YE2bEp6wxcX6TpA5DoYjqdlK50/4/DZ3YTXWlPTaQbt/j36TbEgZ?=
|
||||
=?us-ascii?Q?hhIV08WX7EDjBz1QrFRppEtBghOJikHLdvPo6GnZkHNQ9cxaa8Jrk0iypK4d?=
|
||||
=?us-ascii?Q?bMj47kiugWCGY+ZW2ioGV1GgH1aZEvAukQgTiAAiyGU83td11Q5Pv2N5ytvk?=
|
||||
=?us-ascii?Q?i+Ux/DUoeU4VyqYnb69asjdyKI5RzIxQPdQAQ7x/TBlyPp/Yj2/v31b6lCYT?=
|
||||
=?us-ascii?Q?b1iYdeIKK+6I6A+e/EUnPOKC?=
|
||||
X-OriginatorOrg: wdc.com
|
||||
X-MS-Exchange-CrossTenant-Network-Message-Id: 17406ef0-e8d7-4dc3-eee9-08d92b40085b
|
||||
X-MS-Exchange-CrossTenant-AuthSource: CO6PR04MB7812.namprd04.prod.outlook.com
|
||||
X-MS-Exchange-CrossTenant-AuthAs: Internal
|
||||
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2021 12:13:47.1304 (UTC)
|
||||
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
|
||||
X-MS-Exchange-CrossTenant-Id: b61c8803-16f3-4c35-9b17-6f65f441df86
|
||||
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
|
||||
X-MS-Exchange-CrossTenant-UserPrincipalName: rHld9c5jovIZF30ZL04ehEJ81O0isWetsUM3vlp/0cN1LoJ5z8guKzUTANDGVGM0Eua+2cZ1jQGTC49NwWH4hA==
|
||||
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR04MB7794
|
||||
X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3
|
||||
X-CRM114-CacheID: sfid-20210609_051349_766689_30430D67
|
||||
X-CRM114-Status: GOOD ( 15.29 )
|
||||
X-BeenThere: linux-riscv@lists.infradead.org
|
||||
X-Mailman-Version: 2.1.34
|
||||
Precedence: list
|
||||
List-Id: <linux-riscv.lists.infradead.org>
|
||||
List-Unsubscribe: <http://lists.infradead.org/mailman/options/linux-riscv>,
|
||||
<mailto:linux-riscv-request@lists.infradead.org?subject=unsubscribe>
|
||||
List-Archive: <http://lists.infradead.org/pipermail/linux-riscv/>
|
||||
List-Post: <mailto:linux-riscv@lists.infradead.org>
|
||||
List-Help: <mailto:linux-riscv-request@lists.infradead.org?subject=help>
|
||||
List-Subscribe: <http://lists.infradead.org/mailman/listinfo/linux-riscv>,
|
||||
<mailto:linux-riscv-request@lists.infradead.org?subject=subscribe>
|
||||
Content-Type: text/plain; charset="us-ascii"
|
||||
Content-Transfer-Encoding: 7bit
|
||||
Sender: "linux-riscv" <linux-riscv-bounces@lists.infradead.org>
|
||||
Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org
|
||||
|
||||
The SBI SRST extension provides a standard way to poweroff and
|
||||
reboot the system irrespective to whether Linux RISC-V S-mode
|
||||
is running natively (HS-mode) or inside Guest/VM (VS-mode).
|
||||
|
||||
The SBI SRST extension is available in the SBI v0.3 specification.
|
||||
(Refer, https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0-rc1)
|
||||
|
||||
This patch extends Linux RISC-V SBI implementation to detect
|
||||
and use SBI SRST extension.
|
||||
|
||||
Signed-off-by: Anup Patel <anup.patel@wdc.com>
|
||||
Reviewed-by: Atish Patra <atish.patra@wdc.com>
|
||||
---
|
||||
arch/riscv/include/asm/sbi.h | 24 ++++++++++++++++++++++++
|
||||
arch/riscv/kernel/sbi.c | 35 +++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 59 insertions(+)
|
||||
|
||||
--- a/arch/riscv/include/asm/sbi.h
|
||||
+++ b/arch/riscv/include/asm/sbi.h
|
||||
@@ -27,6 +27,7 @@ enum sbi_ext_id {
|
||||
SBI_EXT_IPI = 0x735049,
|
||||
SBI_EXT_RFENCE = 0x52464E43,
|
||||
SBI_EXT_HSM = 0x48534D,
|
||||
+ SBI_EXT_SRST = 0x53525354,
|
||||
};
|
||||
|
||||
enum sbi_ext_base_fid {
|
||||
@@ -70,6 +71,21 @@ enum sbi_hsm_hart_status {
|
||||
SBI_HSM_HART_STATUS_STOP_PENDING,
|
||||
};
|
||||
|
||||
+enum sbi_ext_srst_fid {
|
||||
+ SBI_EXT_SRST_RESET = 0,
|
||||
+};
|
||||
+
|
||||
+enum sbi_srst_reset_type {
|
||||
+ SBI_SRST_RESET_TYPE_SHUTDOWN = 0,
|
||||
+ SBI_SRST_RESET_TYPE_COLD_REBOOT,
|
||||
+ SBI_SRST_RESET_TYPE_WARM_REBOOT,
|
||||
+};
|
||||
+
|
||||
+enum sbi_srst_reset_reason {
|
||||
+ SBI_SRST_RESET_REASON_NONE = 0,
|
||||
+ SBI_SRST_RESET_REASON_SYS_FAILURE,
|
||||
+};
|
||||
+
|
||||
#define SBI_SPEC_VERSION_DEFAULT 0x1
|
||||
#define SBI_SPEC_VERSION_MAJOR_SHIFT 24
|
||||
#define SBI_SPEC_VERSION_MAJOR_MASK 0x7f
|
||||
@@ -148,6 +164,14 @@ static inline unsigned long sbi_minor_ve
|
||||
return sbi_spec_version & SBI_SPEC_VERSION_MINOR_MASK;
|
||||
}
|
||||
|
||||
+/* Make SBI version */
|
||||
+static inline unsigned long sbi_mk_version(unsigned long major,
|
||||
+ unsigned long minor)
|
||||
+{
|
||||
+ return ((major & SBI_SPEC_VERSION_MAJOR_MASK) <<
|
||||
+ SBI_SPEC_VERSION_MAJOR_SHIFT) | minor;
|
||||
+}
|
||||
+
|
||||
int sbi_err_map_linux_errno(int err);
|
||||
#else /* CONFIG_RISCV_SBI */
|
||||
static inline int sbi_remote_fence_i(const unsigned long *hart_mask) { return -1; }
|
||||
--- a/arch/riscv/kernel/sbi.c
|
||||
+++ b/arch/riscv/kernel/sbi.c
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
#include <linux/init.h>
|
||||
#include <linux/pm.h>
|
||||
+#include <linux/reboot.h>
|
||||
#include <asm/sbi.h>
|
||||
#include <asm/smp.h>
|
||||
|
||||
@@ -501,6 +502,32 @@ int sbi_remote_hfence_vvma_asid(const un
|
||||
}
|
||||
EXPORT_SYMBOL(sbi_remote_hfence_vvma_asid);
|
||||
|
||||
+static void sbi_srst_reset(unsigned long type, unsigned long reason)
|
||||
+{
|
||||
+ sbi_ecall(SBI_EXT_SRST, SBI_EXT_SRST_RESET, type, reason,
|
||||
+ 0, 0, 0, 0);
|
||||
+ pr_warn("%s: type=0x%lx reason=0x%lx failed\n",
|
||||
+ __func__, type, reason);
|
||||
+}
|
||||
+
|
||||
+static int sbi_srst_reboot(struct notifier_block *this,
|
||||
+ unsigned long mode, void *cmd)
|
||||
+{
|
||||
+ sbi_srst_reset((mode == REBOOT_WARM || mode == REBOOT_SOFT) ?
|
||||
+ SBI_SRST_RESET_TYPE_WARM_REBOOT :
|
||||
+ SBI_SRST_RESET_TYPE_COLD_REBOOT,
|
||||
+ SBI_SRST_RESET_REASON_NONE);
|
||||
+ return NOTIFY_DONE;
|
||||
+}
|
||||
+
|
||||
+static struct notifier_block sbi_srst_reboot_nb;
|
||||
+
|
||||
+static void sbi_srst_power_off(void)
|
||||
+{
|
||||
+ sbi_srst_reset(SBI_SRST_RESET_TYPE_SHUTDOWN,
|
||||
+ SBI_SRST_RESET_REASON_NONE);
|
||||
+}
|
||||
+
|
||||
/**
|
||||
* sbi_probe_extension() - Check if an SBI extension ID is supported or not.
|
||||
* @extid: The extension ID to be probed.
|
||||
@@ -608,6 +635,14 @@ void __init sbi_init(void)
|
||||
} else {
|
||||
__sbi_rfence = __sbi_rfence_v01;
|
||||
}
|
||||
+ if ((sbi_spec_version >= sbi_mk_version(0, 3)) &&
|
||||
+ (sbi_probe_extension(SBI_EXT_SRST) > 0)) {
|
||||
+ pr_info("SBI SRST extension detected\n");
|
||||
+ pm_power_off = sbi_srst_power_off;
|
||||
+ sbi_srst_reboot_nb.notifier_call = sbi_srst_reboot;
|
||||
+ sbi_srst_reboot_nb.priority = 192;
|
||||
+ register_restart_handler(&sbi_srst_reboot_nb);
|
||||
+ }
|
||||
} else {
|
||||
__sbi_set_timer = __sbi_set_timer_v01;
|
||||
__sbi_send_ipi = __sbi_send_ipi_v01;
|
Loading…
x
Reference in New Issue
Block a user