Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
commit
b039d618a3
@ -346,6 +346,7 @@ define Device/InitProfile
|
|||||||
DEVICE_ALT2_TITLE = $$(DEVICE_ALT2_VENDOR) $$(DEVICE_ALT2_MODEL)$$(if $$(DEVICE_ALT2_VARIANT), $$(DEVICE_ALT2_VARIANT))
|
DEVICE_ALT2_TITLE = $$(DEVICE_ALT2_VENDOR) $$(DEVICE_ALT2_MODEL)$$(if $$(DEVICE_ALT2_VARIANT), $$(DEVICE_ALT2_VARIANT))
|
||||||
DEVICE_ALT3_TITLE = $$(DEVICE_ALT3_VENDOR) $$(DEVICE_ALT3_MODEL)$$(if $$(DEVICE_ALT3_VARIANT), $$(DEVICE_ALT3_VARIANT))
|
DEVICE_ALT3_TITLE = $$(DEVICE_ALT3_VENDOR) $$(DEVICE_ALT3_MODEL)$$(if $$(DEVICE_ALT3_VARIANT), $$(DEVICE_ALT3_VARIANT))
|
||||||
DEVICE_ALT4_TITLE = $$(DEVICE_ALT4_VENDOR) $$(DEVICE_ALT4_MODEL)$$(if $$(DEVICE_ALT4_VARIANT), $$(DEVICE_ALT4_VARIANT))
|
DEVICE_ALT4_TITLE = $$(DEVICE_ALT4_VENDOR) $$(DEVICE_ALT4_MODEL)$$(if $$(DEVICE_ALT4_VARIANT), $$(DEVICE_ALT4_VARIANT))
|
||||||
|
DEVICE_ALT5_TITLE = $$(DEVICE_ALT5_VENDOR) $$(DEVICE_ALT5_MODEL)$$(if $$(DEVICE_ALT5_VARIANT), $$(DEVICE_ALT5_VARIANT))
|
||||||
DEVICE_VENDOR :=
|
DEVICE_VENDOR :=
|
||||||
DEVICE_MODEL :=
|
DEVICE_MODEL :=
|
||||||
DEVICE_VARIANT :=
|
DEVICE_VARIANT :=
|
||||||
@ -364,6 +365,9 @@ define Device/InitProfile
|
|||||||
DEVICE_ALT4_VENDOR :=
|
DEVICE_ALT4_VENDOR :=
|
||||||
DEVICE_ALT4_MODEL :=
|
DEVICE_ALT4_MODEL :=
|
||||||
DEVICE_ALT4_VARIANT :=
|
DEVICE_ALT4_VARIANT :=
|
||||||
|
DEVICE_ALT5_VENDOR :=
|
||||||
|
DEVICE_ALT5_MODEL :=
|
||||||
|
DEVICE_ALT5_VARIANT :=
|
||||||
DEVICE_PACKAGES :=
|
DEVICE_PACKAGES :=
|
||||||
DEVICE_DESCRIPTION = Build firmware images for $$(DEVICE_TITLE)
|
DEVICE_DESCRIPTION = Build firmware images for $$(DEVICE_TITLE)
|
||||||
endef
|
endef
|
||||||
@ -448,7 +452,8 @@ DEFAULT_DEVICE_VARS := \
|
|||||||
DEVICE_ALT1_VENDOR DEVICE_ALT1_MODEL DEVICE_ALT1_VARIANT \
|
DEVICE_ALT1_VENDOR DEVICE_ALT1_MODEL DEVICE_ALT1_VARIANT \
|
||||||
DEVICE_ALT2_VENDOR DEVICE_ALT2_MODEL DEVICE_ALT2_VARIANT \
|
DEVICE_ALT2_VENDOR DEVICE_ALT2_MODEL DEVICE_ALT2_VARIANT \
|
||||||
DEVICE_ALT3_VENDOR DEVICE_ALT3_MODEL DEVICE_ALT3_VARIANT \
|
DEVICE_ALT3_VENDOR DEVICE_ALT3_MODEL DEVICE_ALT3_VARIANT \
|
||||||
DEVICE_ALT4_VENDOR DEVICE_ALT4_MODEL DEVICE_ALT4_VARIANT
|
DEVICE_ALT4_VENDOR DEVICE_ALT4_MODEL DEVICE_ALT4_VARIANT \
|
||||||
|
DEVICE_ALT5_VENDOR DEVICE_ALT5_MODEL DEVICE_ALT5_VARIANT
|
||||||
|
|
||||||
define Device/ExportVar
|
define Device/ExportVar
|
||||||
$(1) : $(2):=$$($(2))
|
$(1) : $(2):=$$($(2))
|
||||||
@ -537,6 +542,9 @@ define Device/Build/initramfs
|
|||||||
DEVICE_ALT4_VENDOR="$$(DEVICE_ALT4_VENDOR)" \
|
DEVICE_ALT4_VENDOR="$$(DEVICE_ALT4_VENDOR)" \
|
||||||
DEVICE_ALT4_MODEL="$$(DEVICE_ALT4_MODEL)" \
|
DEVICE_ALT4_MODEL="$$(DEVICE_ALT4_MODEL)" \
|
||||||
DEVICE_ALT4_VARIANT="$$(DEVICE_ALT4_VARIANT)" \
|
DEVICE_ALT4_VARIANT="$$(DEVICE_ALT4_VARIANT)" \
|
||||||
|
DEVICE_ALT5_VENDOR="$$(DEVICE_ALT5_VENDOR)" \
|
||||||
|
DEVICE_ALT5_MODEL="$$(DEVICE_ALT5_MODEL)" \
|
||||||
|
DEVICE_ALT5_VARIANT="$$(DEVICE_ALT5_VARIANT)" \
|
||||||
DEVICE_TITLE="$$(DEVICE_TITLE)" \
|
DEVICE_TITLE="$$(DEVICE_TITLE)" \
|
||||||
DEVICE_PACKAGES="$$(DEVICE_PACKAGES)" \
|
DEVICE_PACKAGES="$$(DEVICE_PACKAGES)" \
|
||||||
TARGET="$(BOARD)" \
|
TARGET="$(BOARD)" \
|
||||||
@ -668,6 +676,9 @@ define Device/Build/image
|
|||||||
DEVICE_ALT4_VENDOR="$(DEVICE_ALT4_VENDOR)" \
|
DEVICE_ALT4_VENDOR="$(DEVICE_ALT4_VENDOR)" \
|
||||||
DEVICE_ALT4_MODEL="$(DEVICE_ALT4_MODEL)" \
|
DEVICE_ALT4_MODEL="$(DEVICE_ALT4_MODEL)" \
|
||||||
DEVICE_ALT4_VARIANT="$(DEVICE_ALT4_VARIANT)" \
|
DEVICE_ALT4_VARIANT="$(DEVICE_ALT4_VARIANT)" \
|
||||||
|
DEVICE_ALT5_VENDOR="$(DEVICE_ALT5_VENDOR)" \
|
||||||
|
DEVICE_ALT5_MODEL="$(DEVICE_ALT5_MODEL)" \
|
||||||
|
DEVICE_ALT5_VARIANT="$(DEVICE_ALT5_VARIANT)" \
|
||||||
DEVICE_TITLE="$(DEVICE_TITLE)" \
|
DEVICE_TITLE="$(DEVICE_TITLE)" \
|
||||||
DEVICE_PACKAGES="$(DEVICE_PACKAGES)" \
|
DEVICE_PACKAGES="$(DEVICE_PACKAGES)" \
|
||||||
TARGET="$(BOARD)" \
|
TARGET="$(BOARD)" \
|
||||||
@ -719,6 +730,9 @@ define Device/Build/artifact
|
|||||||
DEVICE_ALT4_VENDOR="$(DEVICE_ALT4_VENDOR)" \
|
DEVICE_ALT4_VENDOR="$(DEVICE_ALT4_VENDOR)" \
|
||||||
DEVICE_ALT4_MODEL="$(DEVICE_ALT4_MODEL)" \
|
DEVICE_ALT4_MODEL="$(DEVICE_ALT4_MODEL)" \
|
||||||
DEVICE_ALT4_VARIANT="$(DEVICE_ALT4_VARIANT)" \
|
DEVICE_ALT4_VARIANT="$(DEVICE_ALT4_VARIANT)" \
|
||||||
|
DEVICE_ALT5_VENDOR="$(DEVICE_ALT5_VENDOR)" \
|
||||||
|
DEVICE_ALT5_MODEL="$(DEVICE_ALT5_MODEL)" \
|
||||||
|
DEVICE_ALT5_VARIANT="$(DEVICE_ALT5_VARIANT)" \
|
||||||
DEVICE_TITLE="$(DEVICE_TITLE)" \
|
DEVICE_TITLE="$(DEVICE_TITLE)" \
|
||||||
DEVICE_PACKAGES="$(DEVICE_PACKAGES)" \
|
DEVICE_PACKAGES="$(DEVICE_PACKAGES)" \
|
||||||
TARGET="$(BOARD)" \
|
TARGET="$(BOARD)" \
|
||||||
@ -762,6 +776,7 @@ $(if $(strip $(DEVICE_ALT1_TITLE)),- $(DEVICE_ALT1_TITLE))
|
|||||||
$(if $(strip $(DEVICE_ALT2_TITLE)),- $(DEVICE_ALT2_TITLE))
|
$(if $(strip $(DEVICE_ALT2_TITLE)),- $(DEVICE_ALT2_TITLE))
|
||||||
$(if $(strip $(DEVICE_ALT3_TITLE)),- $(DEVICE_ALT3_TITLE))
|
$(if $(strip $(DEVICE_ALT3_TITLE)),- $(DEVICE_ALT3_TITLE))
|
||||||
$(if $(strip $(DEVICE_ALT4_TITLE)),- $(DEVICE_ALT4_TITLE))
|
$(if $(strip $(DEVICE_ALT4_TITLE)),- $(DEVICE_ALT4_TITLE))
|
||||||
|
$(if $(strip $(DEVICE_ALT5_TITLE)),- $(DEVICE_ALT5_TITLE))
|
||||||
@@
|
@@
|
||||||
|
|
||||||
endef
|
endef
|
||||||
@ -787,6 +802,10 @@ ifneq ($$(strip $$(DEVICE_ALT4_TITLE)),)
|
|||||||
DEVICE_DISPLAY = $$(DEVICE_ALT4_TITLE) ($$(DEVICE_TITLE))
|
DEVICE_DISPLAY = $$(DEVICE_ALT4_TITLE) ($$(DEVICE_TITLE))
|
||||||
$$(info $$(call Device/DumpInfo,$(1)))
|
$$(info $$(call Device/DumpInfo,$(1)))
|
||||||
endif
|
endif
|
||||||
|
ifneq ($$(strip $$(DEVICE_ALT5_TITLE)),)
|
||||||
|
DEVICE_DISPLAY = $$(DEVICE_ALT5_TITLE) ($$(DEVICE_TITLE))
|
||||||
|
$$(info $$(call Device/DumpInfo,$(1)))
|
||||||
|
endif
|
||||||
DEVICE_DISPLAY = $$(DEVICE_TITLE)
|
DEVICE_DISPLAY = $$(DEVICE_TITLE)
|
||||||
$$(eval $$(if $$(DEVICE_TITLE),$$(info $$(call Device/DumpInfo,$(1)))))
|
$$(eval $$(if $$(DEVICE_TITLE),$$(info $$(call Device/DumpInfo,$(1)))))
|
||||||
endef
|
endef
|
||||||
|
@ -25,6 +25,10 @@ araknis,an-300-ap-i-n|\
|
|||||||
araknis,an-500-ap-i-ac|\
|
araknis,an-500-ap-i-ac|\
|
||||||
araknis,an-700-ap-i-ac|\
|
araknis,an-700-ap-i-ac|\
|
||||||
arduino,yun|\
|
arduino,yun|\
|
||||||
|
asus,rt-ac59u|\
|
||||||
|
asus,rt-ac59u-v2|\
|
||||||
|
asus,zenwifi-cd6n|\
|
||||||
|
asus,zenwifi-cd6r|\
|
||||||
buffalo,bhr-4grv2|\
|
buffalo,bhr-4grv2|\
|
||||||
devolo,magic-2-wifi|\
|
devolo,magic-2-wifi|\
|
||||||
dlink,dir-859-a1|\
|
dlink,dir-859-a1|\
|
||||||
|
@ -70,7 +70,7 @@
|
|||||||
{
|
{
|
||||||
--- a/boot/image-fit.c
|
--- a/boot/image-fit.c
|
||||||
+++ b/boot/image-fit.c
|
+++ b/boot/image-fit.c
|
||||||
@@ -2051,6 +2051,50 @@ static const char *fit_get_image_type_pr
|
@@ -2051,6 +2051,49 @@ static const char *fit_get_image_type_pr
|
||||||
return "unknown";
|
return "unknown";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,9 +89,8 @@
|
|||||||
+
|
+
|
||||||
+ hdrsize = fdt_totalsize(fit);
|
+ hdrsize = fdt_totalsize(fit);
|
||||||
+
|
+
|
||||||
+ /* simple FIT with internal images */
|
+ /* take care of simple FIT with internal images */
|
||||||
+ if (hdrsize > 0x1000)
|
+ max_size = hdrsize;
|
||||||
+ return hdrsize;
|
|
||||||
+
|
+
|
||||||
+ images_noffset = fdt_path_offset(fit, FIT_IMAGES_PATH);
|
+ images_noffset = fdt_path_offset(fit, FIT_IMAGES_PATH);
|
||||||
+ if (images_noffset < 0) {
|
+ if (images_noffset < 0) {
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
#include <linux/property.h>
|
#include <linux/property.h>
|
||||||
#include <linux/spi/spi.h>
|
#include <linux/spi/spi.h>
|
||||||
#include <linux/mutex.h>
|
#include <linux/mutex.h>
|
||||||
|
#include <linux/version.h>
|
||||||
|
|
||||||
#define WS2812B_BYTES_PER_COLOR 3
|
#define WS2812B_BYTES_PER_COLOR 3
|
||||||
#define WS2812B_NUM_COLORS 3
|
#define WS2812B_NUM_COLORS 3
|
||||||
@ -191,7 +192,11 @@ ERR_UNREG_LEDS:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,18,0)
|
||||||
|
static void ws2812b_remove(struct spi_device *spi)
|
||||||
|
#else
|
||||||
static int ws2812b_remove(struct spi_device *spi)
|
static int ws2812b_remove(struct spi_device *spi)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
struct ws2812b_priv *priv = spi_get_drvdata(spi);
|
struct ws2812b_priv *priv = spi_get_drvdata(spi);
|
||||||
int cur_led;
|
int cur_led;
|
||||||
@ -201,7 +206,9 @@ static int ws2812b_remove(struct spi_device *spi)
|
|||||||
kfree(priv->data_buf);
|
kfree(priv->data_buf);
|
||||||
mutex_destroy(&priv->mutex);
|
mutex_destroy(&priv->mutex);
|
||||||
|
|
||||||
|
#if LINUX_VERSION_CODE < KERNEL_VERSION(5,18,0)
|
||||||
return 0;
|
return 0;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct spi_device_id ws2812b_spi_ids[] = {
|
static const struct spi_device_id ws2812b_spi_ids[] = {
|
||||||
|
@ -267,7 +267,6 @@ endef
|
|||||||
define Package/tune2fs/install
|
define Package/tune2fs/install
|
||||||
$(INSTALL_DIR) $(1)/usr/sbin
|
$(INSTALL_DIR) $(1)/usr/sbin
|
||||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/tune2fs $(1)/usr/sbin/
|
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/tune2fs $(1)/usr/sbin/
|
||||||
$(LN) tune2fs $(1)/usr/sbin/findfs
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/resize2fs/install
|
define Package/resize2fs/install
|
||||||
|
@ -1600,18 +1600,18 @@
|
|||||||
+ * (and doing them).
|
+ * (and doing them).
|
||||||
+ */
|
+ */
|
||||||
+int try_addint( lua_Integer *r, lua_Integer ib, lua_Integer ic ) {
|
+int try_addint( lua_Integer *r, lua_Integer ib, lua_Integer ic ) {
|
||||||
+ lua_Integer v= ib+ic; /* may overflow */
|
+ /* Signed int overflow is undefined behavior, so catch it without causing it. */
|
||||||
+ if (ib>0 && ic>0) { if (v < 0) return 0; /*overflow, use floats*/ }
|
+ if (ic>0) { if (ib > LUA_INTEGER_MAX - ic) return 0; /*overflow, use floats*/ }
|
||||||
+ else if (ib<0 && ic<0) { if (v >= 0) return 0; }
|
+ else { if (ib < LUA_INTEGER_MIN - ic) return 0; }
|
||||||
+ *r= v;
|
+ *r = ib + ic;
|
||||||
+ return 1;
|
+ return 1;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+int try_subint( lua_Integer *r, lua_Integer ib, lua_Integer ic ) {
|
+int try_subint( lua_Integer *r, lua_Integer ib, lua_Integer ic ) {
|
||||||
+ lua_Integer v= ib-ic; /* may overflow */
|
+ /* Signed int overflow is undefined behavior, so catch it without causing it. */
|
||||||
+ if (ib>=0 && ic<0) { if (v < 0) return 0; /*overflow, use floats*/ }
|
+ if (ic>0) { if (ib < LUA_INTEGER_MIN + ic) return 0; /*overflow, use floats*/ }
|
||||||
+ else if (ib<0 && ic>0) { if (v >= 0) return 0; }
|
+ else { if (ib > LUA_INTEGER_MAX + ic) return 0; }
|
||||||
+ *r= v;
|
+ *r = ib - ic;
|
||||||
+ return 1;
|
+ return 1;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
|
@ -1589,18 +1589,18 @@
|
|||||||
+ * (and doing them).
|
+ * (and doing them).
|
||||||
+ */
|
+ */
|
||||||
+int try_addint( lua_Integer *r, lua_Integer ib, lua_Integer ic ) {
|
+int try_addint( lua_Integer *r, lua_Integer ib, lua_Integer ic ) {
|
||||||
+ lua_Integer v= ib+ic; /* may overflow */
|
+ /* Signed int overflow is undefined behavior, so catch it without causing it. */
|
||||||
+ if (ib>0 && ic>0) { if (v < 0) return 0; /*overflow, use floats*/ }
|
+ if (ic>0) { if (ib > LUA_INTEGER_MAX - ic) return 0; /*overflow, use floats*/ }
|
||||||
+ else if (ib<0 && ic<0) { if (v >= 0) return 0; }
|
+ else { if (ib < LUA_INTEGER_MIN - ic) return 0; }
|
||||||
+ *r= v;
|
+ *r = ib + ic;
|
||||||
+ return 1;
|
+ return 1;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+int try_subint( lua_Integer *r, lua_Integer ib, lua_Integer ic ) {
|
+int try_subint( lua_Integer *r, lua_Integer ib, lua_Integer ic ) {
|
||||||
+ lua_Integer v= ib-ic; /* may overflow */
|
+ /* Signed int overflow is undefined behavior, so catch it without causing it. */
|
||||||
+ if (ib>=0 && ic<0) { if (v < 0) return 0; /*overflow, use floats*/ }
|
+ if (ic>0) { if (ib < LUA_INTEGER_MIN + ic) return 0; /*overflow, use floats*/ }
|
||||||
+ else if (ib<0 && ic>0) { if (v >= 0) return 0; }
|
+ else { if (ib > LUA_INTEGER_MAX + ic) return 0; }
|
||||||
+ *r= v;
|
+ *r = ib - ic;
|
||||||
+ return 1;
|
+ return 1;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
|
@ -21,7 +21,7 @@ if not file_path.is_file():
|
|||||||
|
|
||||||
def get_titles():
|
def get_titles():
|
||||||
titles = []
|
titles = []
|
||||||
for prefix in ["", "ALT0_", "ALT1_", "ALT2_", "ALT3_", "ALT4_"]:
|
for prefix in ["", "ALT0_", "ALT1_", "ALT2_", "ALT3_", "ALT4_", "ALT5_"]:
|
||||||
title = {}
|
title = {}
|
||||||
for var in ["vendor", "model", "variant"]:
|
for var in ["vendor", "model", "variant"]:
|
||||||
if getenv("DEVICE_{}{}".format(prefix, var.upper())):
|
if getenv("DEVICE_{}{}".format(prefix, var.upper())):
|
||||||
|
@ -108,10 +108,10 @@ if [ -n "${DTB}" ]; then
|
|||||||
${DTADDR:+load = <${DTADDR}>;}
|
${DTADDR:+load = <${DTADDR}>;}
|
||||||
arch = \"${ARCH}\";
|
arch = \"${ARCH}\";
|
||||||
compression = \"none\";
|
compression = \"none\";
|
||||||
hash@1 {
|
hash${REFERENCE_CHAR}1 {
|
||||||
algo = \"crc32\";
|
algo = \"crc32\";
|
||||||
};
|
};
|
||||||
hash@2 {
|
hash${REFERENCE_CHAR}2 {
|
||||||
algo = \"${HASH}\";
|
algo = \"${HASH}\";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -128,10 +128,10 @@ if [ -n "${INITRD}" ]; then
|
|||||||
type = \"ramdisk\";
|
type = \"ramdisk\";
|
||||||
arch = \"${ARCH}\";
|
arch = \"${ARCH}\";
|
||||||
os = \"linux\";
|
os = \"linux\";
|
||||||
hash@1 {
|
hash${REFERENCE_CHAR}1 {
|
||||||
algo = \"crc32\";
|
algo = \"crc32\";
|
||||||
};
|
};
|
||||||
hash@2 {
|
hash${REFERENCE_CHAR}2 {
|
||||||
algo = \"${HASH}\";
|
algo = \"${HASH}\";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -150,10 +150,10 @@ if [ -n "${ROOTFS}" ]; then
|
|||||||
type = \"filesystem\";
|
type = \"filesystem\";
|
||||||
arch = \"${ARCH}\";
|
arch = \"${ARCH}\";
|
||||||
compression = \"none\";
|
compression = \"none\";
|
||||||
hash@1 {
|
hash${REFERENCE_CHAR}1 {
|
||||||
algo = \"crc32\";
|
algo = \"crc32\";
|
||||||
};
|
};
|
||||||
hash@2 {
|
hash${REFERENCE_CHAR}2 {
|
||||||
algo = \"${HASH}\";
|
algo = \"${HASH}\";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -181,10 +181,10 @@ OVCONFIGS=""
|
|||||||
arch = \"${ARCH}\";
|
arch = \"${ARCH}\";
|
||||||
load = <${DTADDR}>;
|
load = <${DTADDR}>;
|
||||||
compression = \"none\";
|
compression = \"none\";
|
||||||
hash@1 {
|
hash${REFERENCE_CHAR}1 {
|
||||||
algo = \"crc32\";
|
algo = \"crc32\";
|
||||||
};
|
};
|
||||||
hash@2 {
|
hash${REFERENCE_CHAR}2 {
|
||||||
algo = \"${HASH}\";
|
algo = \"${HASH}\";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -216,10 +216,10 @@ DATA="/dts-v1/;
|
|||||||
compression = \"${COMPRESS}\";
|
compression = \"${COMPRESS}\";
|
||||||
load = <${LOAD_ADDR}>;
|
load = <${LOAD_ADDR}>;
|
||||||
entry = <${ENTRY_ADDR}>;
|
entry = <${ENTRY_ADDR}>;
|
||||||
hash@1 {
|
hash${REFERENCE_CHAR}1 {
|
||||||
algo = \"crc32\";
|
algo = \"crc32\";
|
||||||
};
|
};
|
||||||
hash@2 {
|
hash${REFERENCE_CHAR}2 {
|
||||||
algo = \"$HASH\";
|
algo = \"$HASH\";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -23,7 +23,7 @@ define KernelPackage/hw-crypto-4xx
|
|||||||
+kmod-crypto-ccm +kmod-crypto-gcm \
|
+kmod-crypto-ccm +kmod-crypto-gcm \
|
||||||
+kmod-crypto-sha1 +kmod-crypto-sha256 +kmod-crypto-sha512
|
+kmod-crypto-sha1 +kmod-crypto-sha256 +kmod-crypto-sha512
|
||||||
FILES:=$(LINUX_DIR)/drivers/crypto/amcc/crypto4xx.ko
|
FILES:=$(LINUX_DIR)/drivers/crypto/amcc/crypto4xx.ko
|
||||||
AUTOLOAD:=$(call AutoLoad,09,sata_dwc_460ex,1)
|
AUTOLOAD:=$(call AutoLoad,09,crypto4xx,1)
|
||||||
$(call AddDepends/crypto)
|
$(call AddDepends/crypto)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
@ -114,7 +114,6 @@ CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
|
|||||||
CONFIG_CRYPTO_AES_ARM64_CE_CCM=y
|
CONFIG_CRYPTO_AES_ARM64_CE_CCM=y
|
||||||
CONFIG_CRYPTO_AES_ARM64_NEON_BLK=y
|
CONFIG_CRYPTO_AES_ARM64_NEON_BLK=y
|
||||||
CONFIG_CRYPTO_ARCH_HAVE_LIB_CHACHA=y
|
CONFIG_CRYPTO_ARCH_HAVE_LIB_CHACHA=y
|
||||||
CONFIG_CRYPTO_BLAKE2S=y
|
|
||||||
CONFIG_CRYPTO_CHACHA20=y
|
CONFIG_CRYPTO_CHACHA20=y
|
||||||
CONFIG_CRYPTO_CHACHA20_NEON=y
|
CONFIG_CRYPTO_CHACHA20_NEON=y
|
||||||
CONFIG_CRYPTO_CRYPTD=y
|
CONFIG_CRYPTO_CRYPTD=y
|
||||||
|
@ -34,7 +34,6 @@ CONFIG_CPU_R4K_CACHE_TLB=y
|
|||||||
CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
|
CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
|
||||||
CONFIG_CPU_SUPPORTS_HIGHMEM=y
|
CONFIG_CPU_SUPPORTS_HIGHMEM=y
|
||||||
CONFIG_CPU_SUPPORTS_MSA=y
|
CONFIG_CPU_SUPPORTS_MSA=y
|
||||||
CONFIG_CRYPTO_BLAKE2S=y
|
|
||||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||||
CONFIG_CRYPTO_LIB_POLY1305_RSIZE=2
|
CONFIG_CRYPTO_LIB_POLY1305_RSIZE=2
|
||||||
CONFIG_CRYPTO_RNG2=y
|
CONFIG_CRYPTO_RNG2=y
|
||||||
|
114
target/linux/ath79/dts/qcn5502_asus.dtsi
Normal file
114
target/linux/ath79/dts/qcn5502_asus.dtsi
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||||
|
|
||||||
|
#include "qca956x.dtsi"
|
||||||
|
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
#include <dt-bindings/input/input.h>
|
||||||
|
|
||||||
|
/ {
|
||||||
|
aliases {
|
||||||
|
label-mac-device = ð0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
ð0 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
pll-data = <0x03000101 0x00000101 0x00001919>;
|
||||||
|
|
||||||
|
phy-mode = "sgmii";
|
||||||
|
phy-handle = <&phy0>;
|
||||||
|
|
||||||
|
nvmem-cells = <&macaddr_factory_1002>;
|
||||||
|
nvmem-cell-names = "mac-address";
|
||||||
|
};
|
||||||
|
|
||||||
|
&mdio0 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
phy0: ethernet-phy@0 {
|
||||||
|
reg = <0>;
|
||||||
|
phy-mode = "sgmii";
|
||||||
|
qca,mib-poll-interval = <500>;
|
||||||
|
|
||||||
|
qca,ar8327-initvals = <
|
||||||
|
0x04 0x80080080 /* PORT0 PAD MODE CTRL */
|
||||||
|
0x08 0x00000000 /* PORT5 PAD MODE CTRL */
|
||||||
|
0x0c 0x00000000 /* PORT6 PAD MODE CTRL */
|
||||||
|
0x10 0x00000080 /* POWER_ON_STRAP */
|
||||||
|
0x7c 0x0000007e /* PORT0_STATUS */
|
||||||
|
0x94 0x00000200 /* PORT6_STATUS */
|
||||||
|
>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&pcie {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
wifi@0,0 {
|
||||||
|
compatible = "qcom,ath10k";
|
||||||
|
reg = <0 0 0 0 0>;
|
||||||
|
|
||||||
|
nvmem-cells = <&precal_factory_5000>;
|
||||||
|
nvmem-cell-names = "pre-calibration";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&spi {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
flash@0 {
|
||||||
|
compatible = "jedec,spi-nor";
|
||||||
|
reg = <0>;
|
||||||
|
spi-max-frequency = <25000000>;
|
||||||
|
m25p,fast-read;
|
||||||
|
|
||||||
|
mtdparts: partitions {
|
||||||
|
compatible = "fixed-partitions";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
|
||||||
|
partition@0 {
|
||||||
|
label = "Bootloader";
|
||||||
|
reg = <0x000000 0x040000>;
|
||||||
|
read-only;
|
||||||
|
};
|
||||||
|
|
||||||
|
partition@40000 {
|
||||||
|
label = "nvram";
|
||||||
|
reg = <0x040000 0x010000>;
|
||||||
|
read-only;
|
||||||
|
};
|
||||||
|
|
||||||
|
partition@50000 {
|
||||||
|
label = "Factory";
|
||||||
|
reg = <0x050000 0x010000>;
|
||||||
|
read-only;
|
||||||
|
|
||||||
|
compatible = "nvmem-cells";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
|
||||||
|
cal_factory_1000: cal@1000 {
|
||||||
|
reg = <0x1000 0x440>;
|
||||||
|
};
|
||||||
|
|
||||||
|
macaddr_factory_1002: macaddr@1002 {
|
||||||
|
reg = <0x1002 0x6>;
|
||||||
|
};
|
||||||
|
|
||||||
|
precal_factory_5000: precal@5000 {
|
||||||
|
reg = <0x5000 0x2f20>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&wmac {
|
||||||
|
/* Does not work due to lack of QCN5502 support in ath9k. */
|
||||||
|
status = "disabled";
|
||||||
|
|
||||||
|
nvmem-cells = <&cal_factory_1000>;
|
||||||
|
nvmem-cell-names = "calibration";
|
||||||
|
};
|
19
target/linux/ath79/dts/qcn5502_asus_rt-ac59u-v2.dts
Normal file
19
target/linux/ath79/dts/qcn5502_asus_rt-ac59u-v2.dts
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||||
|
|
||||||
|
#include "qcn5502_asus_rt-ac59u.dtsi"
|
||||||
|
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
#include <dt-bindings/input/input.h>
|
||||||
|
|
||||||
|
/ {
|
||||||
|
compatible = "asus,rt-ac59u-v2", "qca,qcn5500", "qca,qca9560";
|
||||||
|
model = "ASUS RT-AC59U v2";
|
||||||
|
};
|
||||||
|
|
||||||
|
&mtdparts {
|
||||||
|
partition@60000 {
|
||||||
|
label = "firmware";
|
||||||
|
reg = <0x060000 0x1fa0000>;
|
||||||
|
compatible = "denx,uimage";
|
||||||
|
};
|
||||||
|
};
|
19
target/linux/ath79/dts/qcn5502_asus_rt-ac59u.dts
Normal file
19
target/linux/ath79/dts/qcn5502_asus_rt-ac59u.dts
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||||
|
|
||||||
|
#include "qcn5502_asus_rt-ac59u.dtsi"
|
||||||
|
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
#include <dt-bindings/input/input.h>
|
||||||
|
|
||||||
|
/ {
|
||||||
|
compatible = "asus,rt-ac59u", "qca,qcn5500", "qca,qca9560";
|
||||||
|
model = "ASUS RT-AC59U";
|
||||||
|
};
|
||||||
|
|
||||||
|
&mtdparts {
|
||||||
|
partition@60000 {
|
||||||
|
label = "firmware";
|
||||||
|
reg = <0x060000 0xfa0000>;
|
||||||
|
compatible = "denx,uimage";
|
||||||
|
};
|
||||||
|
};
|
69
target/linux/ath79/dts/qcn5502_asus_rt-ac59u.dtsi
Normal file
69
target/linux/ath79/dts/qcn5502_asus_rt-ac59u.dtsi
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||||
|
|
||||||
|
#include "qcn5502_asus.dtsi"
|
||||||
|
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
#include <dt-bindings/input/input.h>
|
||||||
|
|
||||||
|
/ {
|
||||||
|
aliases {
|
||||||
|
led-boot = &led_power;
|
||||||
|
led-failsafe = &led_power;
|
||||||
|
led-running = &led_power;
|
||||||
|
led-upgrade = &led_power;
|
||||||
|
};
|
||||||
|
|
||||||
|
keys {
|
||||||
|
compatible = "gpio-keys";
|
||||||
|
|
||||||
|
reset {
|
||||||
|
label = "reset";
|
||||||
|
linux,code = <KEY_RESTART>;
|
||||||
|
gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
|
||||||
|
debounce-interval = <60>;
|
||||||
|
};
|
||||||
|
|
||||||
|
wps {
|
||||||
|
label = "wps";
|
||||||
|
linux,code = <KEY_WPS_BUTTON>;
|
||||||
|
gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
|
||||||
|
debounce-interval = <60>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
leds {
|
||||||
|
compatible = "gpio-leds";
|
||||||
|
|
||||||
|
led_power: power {
|
||||||
|
label = "blue:power";
|
||||||
|
gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
|
||||||
|
};
|
||||||
|
|
||||||
|
usb {
|
||||||
|
label = "blue:usb";
|
||||||
|
gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
|
||||||
|
trigger-sources = <&hub_port0>;
|
||||||
|
linux,default-trigger = "usbport";
|
||||||
|
};
|
||||||
|
|
||||||
|
wlan2g {
|
||||||
|
label = "blue:wlan2g";
|
||||||
|
gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
|
||||||
|
linux,default-trigger = "phy1tpt";
|
||||||
|
};
|
||||||
|
|
||||||
|
wlan5g {
|
||||||
|
label = "blue:wlan5g";
|
||||||
|
gpios = <&gpio 5 GPIO_ACTIVE_LOW>;
|
||||||
|
linux,default-trigger = "phy0tpt";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&usb_phy0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usb0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
57
target/linux/ath79/dts/qcn5502_asus_zenwifi-cd6.dtsi
Normal file
57
target/linux/ath79/dts/qcn5502_asus_zenwifi-cd6.dtsi
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||||
|
|
||||||
|
#include "qcn5502_asus.dtsi"
|
||||||
|
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
#include <dt-bindings/input/input.h>
|
||||||
|
|
||||||
|
/ {
|
||||||
|
aliases {
|
||||||
|
led-boot = &led_blue;
|
||||||
|
led-failsafe = &led_red;
|
||||||
|
led-running = &led_blue;
|
||||||
|
led-upgrade = &led_red;
|
||||||
|
};
|
||||||
|
|
||||||
|
keys {
|
||||||
|
compatible = "gpio-keys";
|
||||||
|
|
||||||
|
reset {
|
||||||
|
label = "reset";
|
||||||
|
linux,code = <KEY_RESTART>;
|
||||||
|
gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
|
||||||
|
debounce-interval = <60>;
|
||||||
|
};
|
||||||
|
|
||||||
|
wps {
|
||||||
|
label = "wps";
|
||||||
|
linux,code = <KEY_WPS_BUTTON>;
|
||||||
|
gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
|
||||||
|
debounce-interval = <60>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
leds {
|
||||||
|
compatible = "gpio-leds";
|
||||||
|
|
||||||
|
led_blue: blue {
|
||||||
|
label = "blue";
|
||||||
|
gpios = <&gpio 5 GPIO_ACTIVE_LOW>;
|
||||||
|
};
|
||||||
|
|
||||||
|
green {
|
||||||
|
label = "green";
|
||||||
|
gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
|
||||||
|
};
|
||||||
|
|
||||||
|
led_red: red {
|
||||||
|
label = "red";
|
||||||
|
gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
|
||||||
|
};
|
||||||
|
|
||||||
|
white {
|
||||||
|
label = "white";
|
||||||
|
gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
19
target/linux/ath79/dts/qcn5502_asus_zenwifi-cd6n.dts
Normal file
19
target/linux/ath79/dts/qcn5502_asus_zenwifi-cd6n.dts
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||||
|
|
||||||
|
#include "qcn5502_asus_zenwifi-cd6.dtsi"
|
||||||
|
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
#include <dt-bindings/input/input.h>
|
||||||
|
|
||||||
|
/ {
|
||||||
|
compatible = "asus,zenwifi-cd6n", "qca,qcn5500", "qca,qca9560";
|
||||||
|
model = "ASUS ZenWiFi CD6N";
|
||||||
|
};
|
||||||
|
|
||||||
|
&mtdparts {
|
||||||
|
partition@60000 {
|
||||||
|
label = "firmware";
|
||||||
|
reg = <0x060000 0xfa0000>;
|
||||||
|
compatible = "denx,uimage";
|
||||||
|
};
|
||||||
|
};
|
19
target/linux/ath79/dts/qcn5502_asus_zenwifi-cd6r.dts
Normal file
19
target/linux/ath79/dts/qcn5502_asus_zenwifi-cd6r.dts
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||||
|
|
||||||
|
#include "qcn5502_asus_zenwifi-cd6.dtsi"
|
||||||
|
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
#include <dt-bindings/input/input.h>
|
||||||
|
|
||||||
|
/ {
|
||||||
|
compatible = "asus,zenwifi-cd6r", "qca,qcn5500", "qca,qca9560";
|
||||||
|
model = "ASUS ZenWiFi CD6R";
|
||||||
|
};
|
||||||
|
|
||||||
|
&mtdparts {
|
||||||
|
partition@60000 {
|
||||||
|
label = "firmware";
|
||||||
|
reg = <0x060000 0x1fa0000>;
|
||||||
|
compatible = "denx,uimage";
|
||||||
|
};
|
||||||
|
};
|
@ -152,6 +152,14 @@ ath79_setup_interfaces()
|
|||||||
ucidef_add_switch "switch0" \
|
ucidef_add_switch "switch0" \
|
||||||
"0@eth0" "1:lan:1" "2:lan:2" "3:lan:3" "6:lan:4"
|
"0@eth0" "1:lan:1" "2:lan:2" "3:lan:3" "6:lan:4"
|
||||||
;;
|
;;
|
||||||
|
asus,zenwifi-cd6n)
|
||||||
|
ucidef_add_switch "switch0" \
|
||||||
|
"0@eth0" "1:lan:1" "4:lan:2"
|
||||||
|
;;
|
||||||
|
asus,zenwifi-cd6r)
|
||||||
|
ucidef_add_switch "switch0" \
|
||||||
|
"0@eth0" "1:lan:2" "3:lan:1" "4:lan:3" "2:wan"
|
||||||
|
;;
|
||||||
atheros,db120)
|
atheros,db120)
|
||||||
ucidef_add_switch "switch0" \
|
ucidef_add_switch "switch0" \
|
||||||
"0@eth0" "2:lan" "3:lan" "4:lan" "5:lan" "1:wan"
|
"0@eth0" "2:lan" "3:lan" "4:lan" "5:lan" "1:wan"
|
||||||
@ -381,6 +389,8 @@ ath79_setup_interfaces()
|
|||||||
ucidef_add_switch "switch0" \
|
ucidef_add_switch "switch0" \
|
||||||
"0@eth1" "1:lan"
|
"0@eth1" "1:lan"
|
||||||
;;
|
;;
|
||||||
|
asus,rt-ac59u|\
|
||||||
|
asus,rt-ac59u-v2|\
|
||||||
mercury,mw4530r-v1|\
|
mercury,mw4530r-v1|\
|
||||||
tplink,archer-a7-v5|\
|
tplink,archer-a7-v5|\
|
||||||
tplink,archer-a9-v6|\
|
tplink,archer-a9-v6|\
|
||||||
|
@ -483,6 +483,70 @@ define Device/asus_rp-ac66
|
|||||||
endef
|
endef
|
||||||
TARGET_DEVICES += asus_rp-ac66
|
TARGET_DEVICES += asus_rp-ac66
|
||||||
|
|
||||||
|
define Device/asus_qcn5502
|
||||||
|
SOC := qcn5502
|
||||||
|
DEVICE_VENDOR := ASUS
|
||||||
|
DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca9888-ct
|
||||||
|
KERNEL_INITRAMFS := kernel-bin | append-dtb | uImage none
|
||||||
|
IMAGES += factory.bin
|
||||||
|
IMAGE/factory.bin := append-kernel | pad-to $$$$(BLOCKSIZE) | \
|
||||||
|
append-rootfs | pad-rootfs
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Device/asus_rt-ac59u
|
||||||
|
$(Device/asus_qcn5502)
|
||||||
|
DEVICE_MODEL := RT-AC59U
|
||||||
|
DEVICE_ALT0_VENDOR := ASUS
|
||||||
|
DEVICE_ALT0_MODEL := RT-AC1200GE
|
||||||
|
DEVICE_ALT1_VENDOR := ASUS
|
||||||
|
DEVICE_ALT1_MODEL := RT-AC1500G PLUS
|
||||||
|
DEVICE_ALT2_VENDOR := ASUS
|
||||||
|
DEVICE_ALT2_MODEL := RT-AC1500UHP
|
||||||
|
DEVICE_ALT3_VENDOR := ASUS
|
||||||
|
DEVICE_ALT3_MODEL := RT-AC57U
|
||||||
|
DEVICE_ALT3_VARIANT := v2
|
||||||
|
DEVICE_ALT4_VENDOR := ASUS
|
||||||
|
DEVICE_ALT4_MODEL := RT-AC58U
|
||||||
|
DEVICE_ALT4_VARIANT := v2
|
||||||
|
DEVICE_ALT5_VENDOR := ASUS
|
||||||
|
DEVICE_ALT5_MODEL := RT-ACRH12
|
||||||
|
IMAGE_SIZE := 16000k
|
||||||
|
DEVICE_PACKAGES += kmod-usb2 kmod-usb-ledtrig-usbport
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += asus_rt-ac59u
|
||||||
|
|
||||||
|
define Device/asus_rt-ac59u-v2
|
||||||
|
$(Device/asus_qcn5502)
|
||||||
|
DEVICE_MODEL := RT-AC59U
|
||||||
|
DEVICE_VARIANT := v2
|
||||||
|
DEVICE_ALT0_VENDOR := ASUS
|
||||||
|
DEVICE_ALT0_MODEL := RT-AC1300G PLUS
|
||||||
|
DEVICE_ALT0_VARIANT := v3
|
||||||
|
DEVICE_ALT1_VENDOR := ASUS
|
||||||
|
DEVICE_ALT1_MODEL := RT-AC57U
|
||||||
|
DEVICE_ALT1_VARIANT := v3
|
||||||
|
DEVICE_ALT2_VENDOR := ASUS
|
||||||
|
DEVICE_ALT2_MODEL := RT-AC58U
|
||||||
|
DEVICE_ALT2_VARIANT := v3
|
||||||
|
IMAGE_SIZE := 32384k
|
||||||
|
DEVICE_PACKAGES += kmod-usb2 kmod-usb-ledtrig-usbport
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += asus_rt-ac59u-v2
|
||||||
|
|
||||||
|
define Device/asus_zenwifi-cd6n
|
||||||
|
$(Device/asus_qcn5502)
|
||||||
|
DEVICE_MODEL := ZenWiFi CD6N
|
||||||
|
IMAGE_SIZE := 16000k
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += asus_zenwifi-cd6n
|
||||||
|
|
||||||
|
define Device/asus_zenwifi-cd6r
|
||||||
|
$(Device/asus_qcn5502)
|
||||||
|
DEVICE_MODEL := ZenWiFi CD6R
|
||||||
|
IMAGE_SIZE := 32384k
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += asus_zenwifi-cd6r
|
||||||
|
|
||||||
define Device/atheros_db120
|
define Device/atheros_db120
|
||||||
$(Device/loader-okli-uimage)
|
$(Device/loader-okli-uimage)
|
||||||
SOC := ar9344
|
SOC := ar9344
|
||||||
|
@ -57,7 +57,6 @@ CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
|
|||||||
CONFIG_CPU_SUPPORTS_CPUFREQ=y
|
CONFIG_CPU_SUPPORTS_CPUFREQ=y
|
||||||
CONFIG_CPU_SUPPORTS_HIGHMEM=y
|
CONFIG_CPU_SUPPORTS_HIGHMEM=y
|
||||||
CONFIG_CRASH_CORE=y
|
CONFIG_CRASH_CORE=y
|
||||||
CONFIG_CRYPTO_BLAKE2S=y
|
|
||||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||||
CONFIG_CRYPTO_LIB_POLY1305_RSIZE=2
|
CONFIG_CRYPTO_LIB_POLY1305_RSIZE=2
|
||||||
CONFIG_CRYPTO_RNG2=y
|
CONFIG_CRYPTO_RNG2=y
|
||||||
|
@ -1086,7 +1086,6 @@ CONFIG_CRYPTO_ALGAPI2=y
|
|||||||
# CONFIG_CRYPTO_AUTHENC is not set
|
# CONFIG_CRYPTO_AUTHENC is not set
|
||||||
# CONFIG_CRYPTO_BLAKE2B is not set
|
# CONFIG_CRYPTO_BLAKE2B is not set
|
||||||
# CONFIG_CRYPTO_BLAKE2B_NEON is not set
|
# CONFIG_CRYPTO_BLAKE2B_NEON is not set
|
||||||
# CONFIG_CRYPTO_BLAKE2S is not set
|
|
||||||
# CONFIG_CRYPTO_BLAKE2S_ARM is not set
|
# CONFIG_CRYPTO_BLAKE2S_ARM is not set
|
||||||
# CONFIG_CRYPTO_BLAKE2S_X86 is not set
|
# CONFIG_CRYPTO_BLAKE2S_X86 is not set
|
||||||
# CONFIG_CRYPTO_BLOWFISH is not set
|
# CONFIG_CRYPTO_BLOWFISH is not set
|
||||||
|
@ -1144,7 +1144,6 @@ CONFIG_CRYPTO_ALGAPI2=y
|
|||||||
# CONFIG_CRYPTO_AUTHENC is not set
|
# CONFIG_CRYPTO_AUTHENC is not set
|
||||||
# CONFIG_CRYPTO_BLAKE2B is not set
|
# CONFIG_CRYPTO_BLAKE2B is not set
|
||||||
# CONFIG_CRYPTO_BLAKE2B_NEON is not set
|
# CONFIG_CRYPTO_BLAKE2B_NEON is not set
|
||||||
# CONFIG_CRYPTO_BLAKE2S is not set
|
|
||||||
# CONFIG_CRYPTO_BLAKE2S_ARM is not set
|
# CONFIG_CRYPTO_BLAKE2S_ARM is not set
|
||||||
# CONFIG_CRYPTO_BLAKE2S_X86 is not set
|
# CONFIG_CRYPTO_BLAKE2S_X86 is not set
|
||||||
# CONFIG_CRYPTO_BLOWFISH is not set
|
# CONFIG_CRYPTO_BLOWFISH is not set
|
||||||
@ -3150,6 +3149,7 @@ CONFIG_KERNFS=y
|
|||||||
# CONFIG_KEYBOARD_MAX7359 is not set
|
# CONFIG_KEYBOARD_MAX7359 is not set
|
||||||
# CONFIG_KEYBOARD_MCS is not set
|
# CONFIG_KEYBOARD_MCS is not set
|
||||||
# CONFIG_KEYBOARD_MPR121 is not set
|
# CONFIG_KEYBOARD_MPR121 is not set
|
||||||
|
# CONFIG_KEYBOARD_MT6779 is not set
|
||||||
# CONFIG_KEYBOARD_NEWTON is not set
|
# CONFIG_KEYBOARD_NEWTON is not set
|
||||||
# CONFIG_KEYBOARD_OMAP4 is not set
|
# CONFIG_KEYBOARD_OMAP4 is not set
|
||||||
# CONFIG_KEYBOARD_OPENCORES is not set
|
# CONFIG_KEYBOARD_OPENCORES is not set
|
||||||
@ -6317,6 +6317,7 @@ CONFIG_SND_SOC_INTEL_SST_TOPLEVEL=y
|
|||||||
# CONFIG_SND_SOC_MT6797 is not set
|
# CONFIG_SND_SOC_MT6797 is not set
|
||||||
# CONFIG_SND_SOC_MT8173 is not set
|
# CONFIG_SND_SOC_MT8173 is not set
|
||||||
# CONFIG_SND_SOC_MT8183 is not set
|
# CONFIG_SND_SOC_MT8183 is not set
|
||||||
|
# CONFIG_SND_SOC_MT8186 is not set
|
||||||
# CONFIG_SND_SOC_MT8192 is not set
|
# CONFIG_SND_SOC_MT8192 is not set
|
||||||
# CONFIG_SND_SOC_MT8195 is not set
|
# CONFIG_SND_SOC_MT8195 is not set
|
||||||
# CONFIG_SND_SOC_MTK_BTCVSD is not set
|
# CONFIG_SND_SOC_MTK_BTCVSD is not set
|
||||||
|
@ -37,7 +37,6 @@ CONFIG_CPU_R4K_CACHE_TLB=y
|
|||||||
CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
|
CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
|
||||||
CONFIG_CPU_SUPPORTS_HIGHMEM=y
|
CONFIG_CPU_SUPPORTS_HIGHMEM=y
|
||||||
CONFIG_CPU_SUPPORTS_MSA=y
|
CONFIG_CPU_SUPPORTS_MSA=y
|
||||||
CONFIG_CRYPTO_BLAKE2S=y
|
|
||||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||||
CONFIG_CRYPTO_LIB_POLY1305_RSIZE=2
|
CONFIG_CRYPTO_LIB_POLY1305_RSIZE=2
|
||||||
CONFIG_CRYPTO_RNG2=y
|
CONFIG_CRYPTO_RNG2=y
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
# Copyright 2020 NXP
|
# Copyright 2020 NXP
|
||||||
#
|
#
|
||||||
|
|
||||||
RAMFS_COPY_BIN="/usr/sbin/fw_printenv /usr/sbin/fw_setenv /usr/sbin/ubinfo /bin/echo"
|
RAMFS_COPY_BIN=""
|
||||||
RAMFS_COPY_DATA="/etc/fw_env.config /var/lock/fw_printenv.lock"
|
RAMFS_COPY_DATA=""
|
||||||
|
|
||||||
REQUIRE_IMAGE_METADATA=1
|
REQUIRE_IMAGE_METADATA=1
|
||||||
|
|
||||||
|
@ -57,7 +57,6 @@ CONFIG_CPU_RMAP=y
|
|||||||
CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
|
CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
|
||||||
CONFIG_CPU_SUPPORTS_HIGHMEM=y
|
CONFIG_CPU_SUPPORTS_HIGHMEM=y
|
||||||
CONFIG_CRC16=y
|
CONFIG_CRC16=y
|
||||||
CONFIG_CRYPTO_BLAKE2S=y
|
|
||||||
CONFIG_CRYPTO_CRC32=y
|
CONFIG_CRYPTO_CRC32=y
|
||||||
CONFIG_CRYPTO_CRC32C=y
|
CONFIG_CRYPTO_CRC32C=y
|
||||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||||
|
@ -58,7 +58,6 @@ CONFIG_CPU_RMAP=y
|
|||||||
CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
|
CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
|
||||||
CONFIG_CPU_SUPPORTS_HIGHMEM=y
|
CONFIG_CPU_SUPPORTS_HIGHMEM=y
|
||||||
CONFIG_CRC16=y
|
CONFIG_CRC16=y
|
||||||
CONFIG_CRYPTO_BLAKE2S=y
|
|
||||||
CONFIG_CRYPTO_CRC32=y
|
CONFIG_CRYPTO_CRC32=y
|
||||||
CONFIG_CRYPTO_CRC32C=y
|
CONFIG_CRYPTO_CRC32C=y
|
||||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||||
|
@ -156,6 +156,7 @@
|
|||||||
mdio {
|
mdio {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
mediatek,pio = <&pio>;
|
||||||
|
|
||||||
gsw_phy0: ethernet-phy@0 {
|
gsw_phy0: ethernet-phy@0 {
|
||||||
compatible = "ethernet-phy-id03a2.9481";
|
compatible = "ethernet-phy-id03a2.9481";
|
||||||
|
@ -215,7 +215,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
pio: pinctrl@1001f000 {
|
pio: pinctrl@1001f000 {
|
||||||
compatible = "mediatek,mt7988-pinctrl";
|
compatible = "mediatek,mt7988-pinctrl", "syscon";
|
||||||
reg = <0 0x1001f000 0 0x1000>,
|
reg = <0 0x1001f000 0 0x1000>,
|
||||||
<0 0x11c10000 0 0x1000>,
|
<0 0x11c10000 0 0x1000>,
|
||||||
<0 0x11d00000 0 0x1000>,
|
<0 0x11d00000 0 0x1000>,
|
||||||
@ -303,11 +303,6 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
boottrap: boottrap@1001f6f0 {
|
|
||||||
compatible = "mediatek,boottrap";
|
|
||||||
reg = <0 0x1001f6f0 0 0x4>;
|
|
||||||
};
|
|
||||||
|
|
||||||
sgmiisys0: syscon@10060000 {
|
sgmiisys0: syscon@10060000 {
|
||||||
compatible = "mediatek,mt7988-sgmiisys",
|
compatible = "mediatek,mt7988-sgmiisys",
|
||||||
"mediatek,mt7988-sgmiisys_0",
|
"mediatek,mt7988-sgmiisys_0",
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -156,6 +156,7 @@
|
|||||||
mdio {
|
mdio {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
mediatek,pio = <&pio>;
|
||||||
|
|
||||||
gsw_phy0: ethernet-phy@0 {
|
gsw_phy0: ethernet-phy@0 {
|
||||||
compatible = "ethernet-phy-id03a2.9481";
|
compatible = "ethernet-phy-id03a2.9481";
|
||||||
|
@ -215,7 +215,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
pio: pinctrl@1001f000 {
|
pio: pinctrl@1001f000 {
|
||||||
compatible = "mediatek,mt7988-pinctrl";
|
compatible = "mediatek,mt7988-pinctrl", "syscon";
|
||||||
reg = <0 0x1001f000 0 0x1000>,
|
reg = <0 0x1001f000 0 0x1000>,
|
||||||
<0 0x11c10000 0 0x1000>,
|
<0 0x11c10000 0 0x1000>,
|
||||||
<0 0x11d00000 0 0x1000>,
|
<0 0x11d00000 0 0x1000>,
|
||||||
@ -303,11 +303,6 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
boottrap: boottrap@1001f6f0 {
|
|
||||||
compatible = "mediatek,boottrap";
|
|
||||||
reg = <0 0x1001f6f0 0 0x4>;
|
|
||||||
};
|
|
||||||
|
|
||||||
sgmiisys0: syscon@10060000 {
|
sgmiisys0: syscon@10060000 {
|
||||||
compatible = "mediatek,mt7988-sgmiisys",
|
compatible = "mediatek,mt7988-sgmiisys",
|
||||||
"mediatek,mt7988-sgmiisys_0",
|
"mediatek,mt7988-sgmiisys_0",
|
||||||
|
@ -111,7 +111,6 @@ CONFIG_CRYPTO_AES_ARM64=y
|
|||||||
CONFIG_CRYPTO_AES_ARM64_CE=y
|
CONFIG_CRYPTO_AES_ARM64_CE=y
|
||||||
CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
|
CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
|
||||||
CONFIG_CRYPTO_AES_ARM64_CE_CCM=y
|
CONFIG_CRYPTO_AES_ARM64_CE_CCM=y
|
||||||
CONFIG_CRYPTO_BLAKE2S=y
|
|
||||||
CONFIG_CRYPTO_CMAC=y
|
CONFIG_CRYPTO_CMAC=y
|
||||||
CONFIG_CRYPTO_CRC32=y
|
CONFIG_CRYPTO_CRC32=y
|
||||||
CONFIG_CRYPTO_CRC32C=y
|
CONFIG_CRYPTO_CRC32C=y
|
||||||
|
@ -1,82 +0,0 @@
|
|||||||
From 60ed9eb9605656c19ca402b7bd3f47552e901601 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Daniel Golle <daniel@makrotopia.org>
|
|
||||||
Date: Mon, 13 Feb 2023 02:33:14 +0000
|
|
||||||
Subject: [PATCH] net: phy: add driver for MediaTek SoC built-in GE PHYs
|
|
||||||
|
|
||||||
Some of MediaTek's Filogic SoCs come with built-in gigabit Ethernet
|
|
||||||
PHYs which require calibration data from the SoC's efuse.
|
|
||||||
Despite the similar design the driver doesn't share any code with the
|
|
||||||
existing mediatek-ge.c, so add support for these PHYs by introducing a
|
|
||||||
new driver for only MediaTek's ARM64 SoCs.
|
|
||||||
|
|
||||||
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|
||||||
---
|
|
||||||
MAINTAINERS | 9 +
|
|
||||||
drivers/net/phy/Kconfig | 12 +
|
|
||||||
drivers/net/phy/Makefile | 1 +
|
|
||||||
drivers/net/phy/mediatek-ge-soc.c | 1263 +++++++++++++++++++++++++++++
|
|
||||||
drivers/net/phy/mediatek-ge.c | 3 +-
|
|
||||||
5 files changed, 1287 insertions(+), 1 deletion(-)
|
|
||||||
create mode 100644 drivers/net/phy/mediatek-ge-soc.c
|
|
||||||
|
|
||||||
--- a/MAINTAINERS
|
|
||||||
+++ b/MAINTAINERS
|
|
||||||
@@ -11790,6 +11790,15 @@ S: Maintained
|
|
||||||
F: drivers/net/pcs/pcs-mtk-lynxi.c
|
|
||||||
F: include/linux/pcs/pcs-mtk-lynxi.h
|
|
||||||
|
|
||||||
+MEDIATEK ETHERNET PHY DRIVERS
|
|
||||||
+M: Daniel Golle <daniel@makrotopia.org>
|
|
||||||
+M: Qingfang Deng <dqfext@gmail.com>
|
|
||||||
+M: SkyLake Huang <SkyLake.Huang@mediatek.com>
|
|
||||||
+L: netdev@vger.kernel.org
|
|
||||||
+S: Maintained
|
|
||||||
+F: drivers/net/phy/mediatek-ge-soc.c
|
|
||||||
+F: drivers/net/phy/mediatek-ge.c
|
|
||||||
+
|
|
||||||
MEDIATEK I2C CONTROLLER DRIVER
|
|
||||||
M: Qii Wang <qii.wang@mediatek.com>
|
|
||||||
L: linux-i2c@vger.kernel.org
|
|
||||||
--- a/drivers/net/phy/Kconfig
|
|
||||||
+++ b/drivers/net/phy/Kconfig
|
|
||||||
@@ -293,6 +293,18 @@ config MEDIATEK_GE_PHY
|
|
||||||
help
|
|
||||||
Supports the MediaTek Gigabit Ethernet PHYs.
|
|
||||||
|
|
||||||
+config MEDIATEK_GE_SOC_PHY
|
|
||||||
+ tristate "MediaTek SoC Ethernet PHYs"
|
|
||||||
+ depends on (ARM64 && ARCH_MEDIATEK) || COMPILE_TEST
|
|
||||||
+ select NVMEM_MTK_EFUSE
|
|
||||||
+ help
|
|
||||||
+ Supports MediaTek SoC built-in Gigabit Ethernet PHYs.
|
|
||||||
+
|
|
||||||
+ Include support for built-in Ethernet PHYs which are present in
|
|
||||||
+ the MT7981 and MT7988 SoCs. These PHYs need calibration data
|
|
||||||
+ present in the SoCs efuse and will dynamically calibrate VCM
|
|
||||||
+ (common-mode voltage) during startup.
|
|
||||||
+
|
|
||||||
config MICREL_PHY
|
|
||||||
tristate "Micrel PHYs"
|
|
||||||
help
|
|
||||||
--- a/drivers/net/phy/Makefile
|
|
||||||
+++ b/drivers/net/phy/Makefile
|
|
||||||
@@ -81,6 +81,7 @@ obj-$(CONFIG_MARVELL_PHY) += marvell.o
|
|
||||||
obj-$(CONFIG_MARVELL_88X2222_PHY) += marvell-88x2222.o
|
|
||||||
obj-$(CONFIG_MAXLINEAR_GPHY) += mxl-gpy.o
|
|
||||||
obj-$(CONFIG_MEDIATEK_GE_PHY) += mediatek-ge.o
|
|
||||||
+obj-$(CONFIG_MEDIATEK_GE_SOC_PHY) += mediatek-ge-soc.o
|
|
||||||
obj-$(CONFIG_MESON_GXL_PHY) += meson-gxl.o
|
|
||||||
obj-$(CONFIG_MICREL_KS8995MA) += spi_ks8995.o
|
|
||||||
obj-$(CONFIG_MICREL_PHY) += micrel.o
|
|
||||||
--- a/drivers/net/phy/mediatek-ge.c
|
|
||||||
+++ b/drivers/net/phy/mediatek-ge.c
|
|
||||||
@@ -136,7 +136,8 @@ static struct phy_driver mtk_gephy_drive
|
|
||||||
module_phy_driver(mtk_gephy_driver);
|
|
||||||
|
|
||||||
static struct mdio_device_id __maybe_unused mtk_gephy_tbl[] = {
|
|
||||||
- { PHY_ID_MATCH_VENDOR(0x03a29400) },
|
|
||||||
+ { PHY_ID_MATCH_EXACT(0x03a29441) },
|
|
||||||
+ { PHY_ID_MATCH_EXACT(0x03a29412) },
|
|
||||||
{ }
|
|
||||||
};
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -1,166 +0,0 @@
|
|||||||
--- a/drivers/net/phy/mxl-gpy.c
|
|
||||||
+++ b/drivers/net/phy/mxl-gpy.c
|
|
||||||
@@ -126,6 +126,12 @@ static int gpy_config_init(struct phy_de
|
|
||||||
if (ret < 0)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
+ /* Disable SGMII auto-negotiation */
|
|
||||||
+ ret = phy_modify_mmd(phydev, MDIO_MMD_VEND1, VSPEC1_SGMII_CTRL,
|
|
||||||
+ VSPEC1_SGMII_CTRL_ANEN, 0);
|
|
||||||
+ if (ret < 0)
|
|
||||||
+ return ret;
|
|
||||||
+
|
|
||||||
return gpy_led_write(phydev);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -151,65 +157,6 @@ static int gpy_probe(struct phy_device *
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static bool gpy_sgmii_need_reaneg(struct phy_device *phydev)
|
|
||||||
-{
|
|
||||||
- int fw_ver, fw_type, fw_minor;
|
|
||||||
- size_t i;
|
|
||||||
-
|
|
||||||
- fw_ver = phy_read(phydev, PHY_FWV);
|
|
||||||
- if (fw_ver < 0)
|
|
||||||
- return true;
|
|
||||||
-
|
|
||||||
- fw_type = FIELD_GET(PHY_FWV_TYPE_MASK, fw_ver);
|
|
||||||
- fw_minor = FIELD_GET(PHY_FWV_MINOR_MASK, fw_ver);
|
|
||||||
-
|
|
||||||
- for (i = 0; i < ARRAY_SIZE(ver_need_sgmii_reaneg); i++) {
|
|
||||||
- if (fw_type != ver_need_sgmii_reaneg[i].type)
|
|
||||||
- continue;
|
|
||||||
- if (fw_minor < ver_need_sgmii_reaneg[i].minor)
|
|
||||||
- return true;
|
|
||||||
- break;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- return false;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-static bool gpy_2500basex_chk(struct phy_device *phydev)
|
|
||||||
-{
|
|
||||||
- int ret;
|
|
||||||
-
|
|
||||||
- ret = phy_read(phydev, PHY_MIISTAT);
|
|
||||||
- if (ret < 0) {
|
|
||||||
- phydev_err(phydev, "Error: MDIO register access failed: %d\n",
|
|
||||||
- ret);
|
|
||||||
- return false;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- if (!(ret & PHY_MIISTAT_LS) ||
|
|
||||||
- FIELD_GET(PHY_MIISTAT_SPD_MASK, ret) != PHY_MIISTAT_SPD_2500)
|
|
||||||
- return false;
|
|
||||||
-
|
|
||||||
- phydev->speed = SPEED_2500;
|
|
||||||
- phydev->interface = PHY_INTERFACE_MODE_2500BASEX;
|
|
||||||
- phy_modify_mmd(phydev, MDIO_MMD_VEND1, VSPEC1_SGMII_CTRL,
|
|
||||||
- VSPEC1_SGMII_CTRL_ANEN, 0);
|
|
||||||
- return true;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-static bool gpy_sgmii_aneg_en(struct phy_device *phydev)
|
|
||||||
-{
|
|
||||||
- int ret;
|
|
||||||
-
|
|
||||||
- ret = phy_read_mmd(phydev, MDIO_MMD_VEND1, VSPEC1_SGMII_CTRL);
|
|
||||||
- if (ret < 0) {
|
|
||||||
- phydev_err(phydev, "Error: MMD register access failed: %d\n",
|
|
||||||
- ret);
|
|
||||||
- return true;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- return (ret & VSPEC1_SGMII_CTRL_ANEN) ? true : false;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
static int gpy_config_aneg(struct phy_device *phydev)
|
|
||||||
{
|
|
||||||
bool changed = false;
|
|
||||||
@@ -248,53 +195,11 @@ static int gpy_config_aneg(struct phy_de
|
|
||||||
phydev->interface == PHY_INTERFACE_MODE_INTERNAL)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
- /* No need to trigger re-ANEG if link speed is 2.5G or SGMII ANEG is
|
|
||||||
- * disabled.
|
|
||||||
- */
|
|
||||||
- if (!gpy_sgmii_need_reaneg(phydev) || gpy_2500basex_chk(phydev) ||
|
|
||||||
- !gpy_sgmii_aneg_en(phydev))
|
|
||||||
- return 0;
|
|
||||||
-
|
|
||||||
- /* There is a design constraint in GPY2xx device where SGMII AN is
|
|
||||||
- * only triggered when there is change of speed. If, PHY link
|
|
||||||
- * partner`s speed is still same even after PHY TPI is down and up
|
|
||||||
- * again, SGMII AN is not triggered and hence no new in-band message
|
|
||||||
- * from GPY to MAC side SGMII.
|
|
||||||
- * This could cause an issue during power up, when PHY is up prior to
|
|
||||||
- * MAC. At this condition, once MAC side SGMII is up, MAC side SGMII
|
|
||||||
- * wouldn`t receive new in-band message from GPY with correct link
|
|
||||||
- * status, speed and duplex info.
|
|
||||||
- *
|
|
||||||
- * 1) If PHY is already up and TPI link status is still down (such as
|
|
||||||
- * hard reboot), TPI link status is polled for 4 seconds before
|
|
||||||
- * retriggerring SGMII AN.
|
|
||||||
- * 2) If PHY is already up and TPI link status is also up (such as soft
|
|
||||||
- * reboot), polling of TPI link status is not needed and SGMII AN is
|
|
||||||
- * immediately retriggered.
|
|
||||||
- * 3) Other conditions such as PHY is down, speed change etc, skip
|
|
||||||
- * retriggering SGMII AN. Note: in case of speed change, GPY FW will
|
|
||||||
- * initiate SGMII AN.
|
|
||||||
- */
|
|
||||||
-
|
|
||||||
- if (phydev->state != PHY_UP)
|
|
||||||
- return 0;
|
|
||||||
-
|
|
||||||
- ret = phy_read_poll_timeout(phydev, MII_BMSR, ret, ret & BMSR_LSTATUS,
|
|
||||||
- 20000, 4000000, false);
|
|
||||||
- if (ret == -ETIMEDOUT)
|
|
||||||
- return 0;
|
|
||||||
- else if (ret < 0)
|
|
||||||
- return ret;
|
|
||||||
-
|
|
||||||
- /* Trigger SGMII AN. */
|
|
||||||
- return phy_modify_mmd(phydev, MDIO_MMD_VEND1, VSPEC1_SGMII_CTRL,
|
|
||||||
- VSPEC1_SGMII_CTRL_ANRS, VSPEC1_SGMII_CTRL_ANRS);
|
|
||||||
+ return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void gpy_update_interface(struct phy_device *phydev)
|
|
||||||
{
|
|
||||||
- int ret;
|
|
||||||
-
|
|
||||||
/* Interface mode is fixed for USXGMII and integrated PHY */
|
|
||||||
if (phydev->interface == PHY_INTERFACE_MODE_USXGMII ||
|
|
||||||
phydev->interface == PHY_INTERFACE_MODE_INTERNAL)
|
|
||||||
@@ -306,29 +211,11 @@ static void gpy_update_interface(struct
|
|
||||||
switch (phydev->speed) {
|
|
||||||
case SPEED_2500:
|
|
||||||
phydev->interface = PHY_INTERFACE_MODE_2500BASEX;
|
|
||||||
- ret = phy_modify_mmd(phydev, MDIO_MMD_VEND1, VSPEC1_SGMII_CTRL,
|
|
||||||
- VSPEC1_SGMII_CTRL_ANEN, 0);
|
|
||||||
- if (ret < 0)
|
|
||||||
- phydev_err(phydev,
|
|
||||||
- "Error: Disable of SGMII ANEG failed: %d\n",
|
|
||||||
- ret);
|
|
||||||
break;
|
|
||||||
case SPEED_1000:
|
|
||||||
case SPEED_100:
|
|
||||||
case SPEED_10:
|
|
||||||
phydev->interface = PHY_INTERFACE_MODE_SGMII;
|
|
||||||
- if (gpy_sgmii_aneg_en(phydev))
|
|
||||||
- break;
|
|
||||||
- /* Enable and restart SGMII ANEG for 10/100/1000Mbps link speed
|
|
||||||
- * if ANEG is disabled (in 2500-BaseX mode).
|
|
||||||
- */
|
|
||||||
- ret = phy_modify_mmd(phydev, MDIO_MMD_VEND1, VSPEC1_SGMII_CTRL,
|
|
||||||
- VSPEC1_SGMII_ANEN_ANRS,
|
|
||||||
- VSPEC1_SGMII_ANEN_ANRS);
|
|
||||||
- if (ret < 0)
|
|
||||||
- phydev_err(phydev,
|
|
||||||
- "Error: Enable of SGMII ANEG failed: %d\n",
|
|
||||||
- ret);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,213 @@
|
|||||||
|
From 5d2d78860f98eb5c03bc404eb024606878901ac8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Daniel Golle <daniel@makrotopia.org>
|
||||||
|
Date: Tue, 13 Jun 2023 03:27:14 +0100
|
||||||
|
Subject: [PATCH] net: phy: mediatek-ge-soc: initialize MT7988 PHY LEDs default
|
||||||
|
state
|
||||||
|
|
||||||
|
Initialize LEDs and set sane default values.
|
||||||
|
Read boottrap register and apply LED polarities accordingly to get
|
||||||
|
uniform behavior from all LEDs on MT7988.
|
||||||
|
Requires syscon phandle 'mediatek,pio' present in parenting MDIO bus
|
||||||
|
which should point to the syscon holding the boottrap register.
|
||||||
|
|
||||||
|
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||||
|
---
|
||||||
|
drivers/net/phy/mediatek-ge-soc.c | 144 ++++++++++++++++++++++++++++--
|
||||||
|
1 file changed, 136 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
--- a/drivers/net/phy/mediatek-ge-soc.c
|
||||||
|
+++ b/drivers/net/phy/mediatek-ge-soc.c
|
||||||
|
@@ -1,11 +1,13 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0+
|
||||||
|
#include <linux/bitfield.h>
|
||||||
|
+#include <linux/mfd/syscon.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/nvmem-consumer.h>
|
||||||
|
#include <linux/of_address.h>
|
||||||
|
#include <linux/of_platform.h>
|
||||||
|
#include <linux/pinctrl/consumer.h>
|
||||||
|
#include <linux/phy.h>
|
||||||
|
+#include <linux/regmap.h>
|
||||||
|
|
||||||
|
#define MTK_GPHY_ID_MT7981 0x03a29461
|
||||||
|
#define MTK_GPHY_ID_MT7988 0x03a29481
|
||||||
|
@@ -208,9 +210,40 @@
|
||||||
|
#define MTK_PHY_DA_TX_R50_PAIR_C 0x53f
|
||||||
|
#define MTK_PHY_DA_TX_R50_PAIR_D 0x540
|
||||||
|
|
||||||
|
+/* Registers on MDIO_MMD_VEND2 */
|
||||||
|
+#define MTK_PHY_LED0_ON_CTRL 0x24
|
||||||
|
+#define MTK_PHY_LED1_ON_CTRL 0x26
|
||||||
|
+#define MTK_PHY_LED_ON_MASK GENMASK(6, 0)
|
||||||
|
+#define MTK_PHY_LED_ON_LINK1000 BIT(0)
|
||||||
|
+#define MTK_PHY_LED_ON_LINK100 BIT(1)
|
||||||
|
+#define MTK_PHY_LED_ON_LINK10 BIT(2)
|
||||||
|
+#define MTK_PHY_LED_ON_LINKDOWN BIT(3)
|
||||||
|
+#define MTK_PHY_LED_ON_FDX BIT(4) /* Full duplex */
|
||||||
|
+#define MTK_PHY_LED_ON_HDX BIT(5) /* Half duplex */
|
||||||
|
+#define MTK_PHY_LED_FORCE_ON BIT(6)
|
||||||
|
+#define MTK_PHY_LED_POLARITY BIT(14)
|
||||||
|
+#define MTK_PHY_LED_ENABLE BIT(15)
|
||||||
|
+
|
||||||
|
+#define MTK_PHY_LED0_BLINK_CTRL 0x25
|
||||||
|
+#define MTK_PHY_LED1_BLINK_CTRL 0x27
|
||||||
|
+#define MTK_PHY_LED_1000TX BIT(0)
|
||||||
|
+#define MTK_PHY_LED_1000RX BIT(1)
|
||||||
|
+#define MTK_PHY_LED_100TX BIT(2)
|
||||||
|
+#define MTK_PHY_LED_100RX BIT(3)
|
||||||
|
+#define MTK_PHY_LED_10TX BIT(4)
|
||||||
|
+#define MTK_PHY_LED_10RX BIT(5)
|
||||||
|
+#define MTK_PHY_LED_COLLISION BIT(6)
|
||||||
|
+#define MTK_PHY_LED_RX_CRC_ERR BIT(7)
|
||||||
|
+#define MTK_PHY_LED_RX_IDLE_ERR BIT(8)
|
||||||
|
+#define MTK_PHY_LED_FORCE_BLINK BIT(9)
|
||||||
|
+
|
||||||
|
#define MTK_PHY_RG_BG_RASEL 0x115
|
||||||
|
#define MTK_PHY_RG_BG_RASEL_MASK GENMASK(2, 0)
|
||||||
|
|
||||||
|
+/* Register in boottrap syscon defining the initial state of the 4 PHY LEDs */
|
||||||
|
+#define RG_GPIO_MISC_TPBANK0 0x6f0
|
||||||
|
+#define RG_GPIO_MISC_TPBANK0_BOOTMODE GENMASK(11, 8)
|
||||||
|
+
|
||||||
|
/* These macro privides efuse parsing for internal phy. */
|
||||||
|
#define EFS_DA_TX_I2MPB_A(x) (((x) >> 0) & GENMASK(5, 0))
|
||||||
|
#define EFS_DA_TX_I2MPB_B(x) (((x) >> 6) & GENMASK(5, 0))
|
||||||
|
@@ -238,13 +271,6 @@ enum {
|
||||||
|
PAIR_D,
|
||||||
|
};
|
||||||
|
|
||||||
|
-enum {
|
||||||
|
- GPHY_PORT0,
|
||||||
|
- GPHY_PORT1,
|
||||||
|
- GPHY_PORT2,
|
||||||
|
- GPHY_PORT3,
|
||||||
|
-};
|
||||||
|
-
|
||||||
|
enum calibration_mode {
|
||||||
|
EFUSE_K,
|
||||||
|
SW_K
|
||||||
|
@@ -263,6 +289,10 @@ enum CAL_MODE {
|
||||||
|
SW_M
|
||||||
|
};
|
||||||
|
|
||||||
|
+struct mtk_socphy_shared {
|
||||||
|
+ u32 boottrap;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
static int mtk_socphy_read_page(struct phy_device *phydev)
|
||||||
|
{
|
||||||
|
return __phy_read(phydev, MTK_EXT_PAGE_ACCESS);
|
||||||
|
@@ -1073,6 +1103,104 @@ static int mt798x_phy_config_init(struct
|
||||||
|
return mt798x_phy_calibration(phydev);
|
||||||
|
}
|
||||||
|
|
||||||
|
+static int mt798x_phy_setup_led(struct phy_device *phydev, bool inverted)
|
||||||
|
+{
|
||||||
|
+ struct pinctrl *pinctrl;
|
||||||
|
+ const u16 led_on_ctrl_defaults = MTK_PHY_LED_ENABLE |
|
||||||
|
+ MTK_PHY_LED_ON_LINK1000 |
|
||||||
|
+ MTK_PHY_LED_ON_LINK100 |
|
||||||
|
+ MTK_PHY_LED_ON_LINK10;
|
||||||
|
+ const u16 led_blink_defaults = MTK_PHY_LED_1000TX |
|
||||||
|
+ MTK_PHY_LED_1000RX |
|
||||||
|
+ MTK_PHY_LED_100TX |
|
||||||
|
+ MTK_PHY_LED_100RX |
|
||||||
|
+ MTK_PHY_LED_10TX |
|
||||||
|
+ MTK_PHY_LED_10RX;
|
||||||
|
+
|
||||||
|
+ phy_write_mmd(phydev, MDIO_MMD_VEND2, MTK_PHY_LED0_ON_CTRL,
|
||||||
|
+ led_on_ctrl_defaults ^
|
||||||
|
+ (inverted ? MTK_PHY_LED_POLARITY : 0));
|
||||||
|
+
|
||||||
|
+ phy_write_mmd(phydev, MDIO_MMD_VEND2, MTK_PHY_LED1_ON_CTRL,
|
||||||
|
+ led_on_ctrl_defaults);
|
||||||
|
+
|
||||||
|
+ phy_write_mmd(phydev, MDIO_MMD_VEND2, MTK_PHY_LED0_BLINK_CTRL,
|
||||||
|
+ led_blink_defaults);
|
||||||
|
+
|
||||||
|
+ phy_write_mmd(phydev, MDIO_MMD_VEND2, MTK_PHY_LED1_BLINK_CTRL,
|
||||||
|
+ led_blink_defaults);
|
||||||
|
+
|
||||||
|
+ pinctrl = devm_pinctrl_get_select(&phydev->mdio.dev, "gbe-led");
|
||||||
|
+ if (IS_ERR(pinctrl))
|
||||||
|
+ dev_err(&phydev->mdio.bus->dev, "Failed to setup PHY LED\n");
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int mt7988_phy_probe_shared(struct phy_device *phydev)
|
||||||
|
+{
|
||||||
|
+ struct device_node *np = dev_of_node(&phydev->mdio.bus->dev);
|
||||||
|
+ struct mtk_socphy_shared *priv = phydev->shared->priv;
|
||||||
|
+ struct regmap *regmap;
|
||||||
|
+ u32 reg;
|
||||||
|
+ int ret;
|
||||||
|
+
|
||||||
|
+ /* The LED0 of the 4 PHYs in MT7988 are wired to SoC pins LED_A, LED_B,
|
||||||
|
+ * LED_C and LED_D respectively. At the same time those pins are used to
|
||||||
|
+ * bootstrap configuration of the reference clock source (LED_A),
|
||||||
|
+ * DRAM DDRx16b x2/x1 (LED_B) and boot device (LED_C, LED_D).
|
||||||
|
+ * In practise this is done using a LED and a resistor pulling the pin
|
||||||
|
+ * either to GND or to VIO.
|
||||||
|
+ * The detected value at boot time is accessible at run-time using the
|
||||||
|
+ * TPBANK0 register located in the gpio base of the pinctrl, in order
|
||||||
|
+ * to read it here it needs to be referenced by a phandle called
|
||||||
|
+ * 'mediatek,pio' in the MDIO bus hosting the PHY.
|
||||||
|
+ * The 4 bits in TPBANK0 are kept as package shared data and are used to
|
||||||
|
+ * set LED polarity for each of the LED0.
|
||||||
|
+ */
|
||||||
|
+ regmap = syscon_regmap_lookup_by_phandle(np, "mediatek,pio");
|
||||||
|
+ if (IS_ERR(regmap))
|
||||||
|
+ return PTR_ERR(regmap);
|
||||||
|
+
|
||||||
|
+ ret = regmap_read(regmap, RG_GPIO_MISC_TPBANK0, ®);
|
||||||
|
+ if (ret)
|
||||||
|
+ return ret;
|
||||||
|
+
|
||||||
|
+ priv->boottrap = FIELD_GET(RG_GPIO_MISC_TPBANK0_BOOTMODE, reg);
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static bool mt7988_phy_get_boottrap_polarity(struct phy_device *phydev)
|
||||||
|
+{
|
||||||
|
+ struct mtk_socphy_shared *priv = phydev->shared->priv;
|
||||||
|
+
|
||||||
|
+ if (priv->boottrap & BIT(phydev->mdio.addr))
|
||||||
|
+ return false;
|
||||||
|
+
|
||||||
|
+ return true;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int mt7988_phy_probe(struct phy_device *phydev)
|
||||||
|
+{
|
||||||
|
+ int err;
|
||||||
|
+
|
||||||
|
+ err = devm_phy_package_join(&phydev->mdio.dev, phydev, 0,
|
||||||
|
+ sizeof(struct mtk_socphy_shared));
|
||||||
|
+ if (err)
|
||||||
|
+ return err;
|
||||||
|
+
|
||||||
|
+ if (phy_package_probe_once(phydev)) {
|
||||||
|
+ err = mt7988_phy_probe_shared(phydev);
|
||||||
|
+ if (err)
|
||||||
|
+ return err;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ mt798x_phy_setup_led(phydev, mt7988_phy_get_boottrap_polarity(phydev));
|
||||||
|
+
|
||||||
|
+ return mt798x_phy_calibration(phydev);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static struct phy_driver mtk_socphy_driver[] = {
|
||||||
|
{
|
||||||
|
PHY_ID_MATCH_EXACT(MTK_GPHY_ID_MT7981),
|
||||||
|
@@ -1092,7 +1220,7 @@ static struct phy_driver mtk_socphy_driv
|
||||||
|
.config_init = mt798x_phy_config_init,
|
||||||
|
.config_intr = genphy_no_config_intr,
|
||||||
|
.handle_interrupt = genphy_handle_interrupt_no_ack,
|
||||||
|
- .probe = mt798x_phy_calibration,
|
||||||
|
+ .probe = mt7988_phy_probe,
|
||||||
|
.suspend = genphy_suspend,
|
||||||
|
.resume = genphy_resume,
|
||||||
|
.read_page = mtk_socphy_read_page,
|
@ -0,0 +1,63 @@
|
|||||||
|
From a969b663c866129ed9eb217785a6574fbe826f1d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Daniel Golle <daniel@makrotopia.org>
|
||||||
|
Date: Thu, 6 Apr 2023 23:36:50 +0100
|
||||||
|
Subject: [PATCH] net: phy: mxl-gpy: don't use SGMII AN if using phylink
|
||||||
|
|
||||||
|
MAC drivers using phylink expect SGMII in-band-status to be switched off
|
||||||
|
when attached to a PHY. Make sure this is the case also for mxl-gpy which
|
||||||
|
keeps SGMII in-band-status in case of SGMII interface mode is used.
|
||||||
|
|
||||||
|
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||||
|
---
|
||||||
|
drivers/net/phy/mxl-gpy.c | 19 ++++++++++++++++---
|
||||||
|
1 file changed, 16 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
--- a/drivers/net/phy/mxl-gpy.c
|
||||||
|
+++ b/drivers/net/phy/mxl-gpy.c
|
||||||
|
@@ -191,8 +191,11 @@ static bool gpy_2500basex_chk(struct phy
|
||||||
|
|
||||||
|
phydev->speed = SPEED_2500;
|
||||||
|
phydev->interface = PHY_INTERFACE_MODE_2500BASEX;
|
||||||
|
- phy_modify_mmd(phydev, MDIO_MMD_VEND1, VSPEC1_SGMII_CTRL,
|
||||||
|
- VSPEC1_SGMII_CTRL_ANEN, 0);
|
||||||
|
+
|
||||||
|
+ if (!phydev->phylink)
|
||||||
|
+ phy_modify_mmd(phydev, MDIO_MMD_VEND1, VSPEC1_SGMII_CTRL,
|
||||||
|
+ VSPEC1_SGMII_CTRL_ANEN, 0);
|
||||||
|
+
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -216,6 +219,14 @@ static int gpy_config_aneg(struct phy_de
|
||||||
|
u32 adv;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
+ /* Disable SGMII auto-negotiation if using phylink */
|
||||||
|
+ if (phydev->phylink) {
|
||||||
|
+ ret = phy_modify_mmd(phydev, MDIO_MMD_VEND1, VSPEC1_SGMII_CTRL,
|
||||||
|
+ VSPEC1_SGMII_CTRL_ANEN, 0);
|
||||||
|
+ if (ret < 0)
|
||||||
|
+ return ret;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (phydev->autoneg == AUTONEG_DISABLE) {
|
||||||
|
/* Configure half duplex with genphy_setup_forced,
|
||||||
|
* because genphy_c45_pma_setup_forced does not support.
|
||||||
|
@@ -306,6 +317,8 @@ static void gpy_update_interface(struct
|
||||||
|
switch (phydev->speed) {
|
||||||
|
case SPEED_2500:
|
||||||
|
phydev->interface = PHY_INTERFACE_MODE_2500BASEX;
|
||||||
|
+ if (phydev->phylink)
|
||||||
|
+ break;
|
||||||
|
ret = phy_modify_mmd(phydev, MDIO_MMD_VEND1, VSPEC1_SGMII_CTRL,
|
||||||
|
VSPEC1_SGMII_CTRL_ANEN, 0);
|
||||||
|
if (ret < 0)
|
||||||
|
@@ -317,7 +330,7 @@ static void gpy_update_interface(struct
|
||||||
|
case SPEED_100:
|
||||||
|
case SPEED_10:
|
||||||
|
phydev->interface = PHY_INTERFACE_MODE_SGMII;
|
||||||
|
- if (gpy_sgmii_aneg_en(phydev))
|
||||||
|
+ if (phydev->phylink || gpy_sgmii_aneg_en(phydev))
|
||||||
|
break;
|
||||||
|
/* Enable and restart SGMII ANEG for 10/100/1000Mbps link speed
|
||||||
|
* if ANEG is disabled (in 2500-BaseX mode).
|
@ -44,7 +44,6 @@ CONFIG_CPU_SUPPORTS_HIGHMEM=y
|
|||||||
CONFIG_CPU_SUPPORTS_HUGEPAGES=y
|
CONFIG_CPU_SUPPORTS_HUGEPAGES=y
|
||||||
CONFIG_CRAMFS=y
|
CONFIG_CRAMFS=y
|
||||||
CONFIG_CRC16=y
|
CONFIG_CRC16=y
|
||||||
CONFIG_CRYPTO_BLAKE2S=y
|
|
||||||
CONFIG_CRYPTO_CRC32=y
|
CONFIG_CRYPTO_CRC32=y
|
||||||
CONFIG_CRYPTO_CRC32C=y
|
CONFIG_CRYPTO_CRC32C=y
|
||||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||||
|
@ -33,7 +33,6 @@ CONFIG_CRYPTO_AES_ARM64=y
|
|||||||
CONFIG_CRYPTO_AES_ARM64_CE=y
|
CONFIG_CRYPTO_AES_ARM64_CE=y
|
||||||
CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
|
CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
|
||||||
CONFIG_CRYPTO_AES_ARM64_CE_CCM=y
|
CONFIG_CRYPTO_AES_ARM64_CE_CCM=y
|
||||||
CONFIG_CRYPTO_BLAKE2S=y
|
|
||||||
CONFIG_CRYPTO_CRCT10DIF_ARM64_CE=y
|
CONFIG_CRYPTO_CRCT10DIF_ARM64_CE=y
|
||||||
CONFIG_CRYPTO_CRYPTD=y
|
CONFIG_CRYPTO_CRYPTD=y
|
||||||
CONFIG_CRYPTO_GHASH_ARM64_CE=y
|
CONFIG_CRYPTO_GHASH_ARM64_CE=y
|
||||||
|
@ -20,7 +20,6 @@ CONFIG_CPU_SUP_HYGON=y
|
|||||||
CONFIG_CPU_SUP_INTEL=y
|
CONFIG_CPU_SUP_INTEL=y
|
||||||
CONFIG_CPU_SUP_ZHAOXIN=y
|
CONFIG_CPU_SUP_ZHAOXIN=y
|
||||||
CONFIG_CRC16=y
|
CONFIG_CRC16=y
|
||||||
CONFIG_CRYPTO_BLAKE2S=y
|
|
||||||
CONFIG_CRYPTO_CRC32=y
|
CONFIG_CRYPTO_CRC32=y
|
||||||
CONFIG_CRYPTO_CRC32C=y
|
CONFIG_CRYPTO_CRC32C=y
|
||||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||||
|
@ -61,7 +61,6 @@ CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
|
|||||||
# CONFIG_CPU_IDLE_GOV_HALTPOLL is not set
|
# CONFIG_CPU_IDLE_GOV_HALTPOLL is not set
|
||||||
CONFIG_CPU_IDLE_GOV_MENU=y
|
CONFIG_CPU_IDLE_GOV_MENU=y
|
||||||
CONFIG_CPU_RMAP=y
|
CONFIG_CPU_RMAP=y
|
||||||
CONFIG_CRYPTO_BLAKE2S=y
|
|
||||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||||
# CONFIG_CS89x0_ISA is not set
|
# CONFIG_CS89x0_ISA is not set
|
||||||
# CONFIG_DEBUG_HOTPLUG_CPU0 is not set
|
# CONFIG_DEBUG_HOTPLUG_CPU0 is not set
|
||||||
|
@ -37,7 +37,6 @@ CONFIG_ALIX=y
|
|||||||
# CONFIG_AMD_PMC is not set
|
# CONFIG_AMD_PMC is not set
|
||||||
CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y
|
CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y
|
||||||
# CONFIG_ATA_PIIX is not set
|
# CONFIG_ATA_PIIX is not set
|
||||||
CONFIG_CRYPTO_BLAKE2S=y
|
|
||||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||||
CONFIG_CS5535_CLOCK_EVENT_SRC=y
|
CONFIG_CS5535_CLOCK_EVENT_SRC=y
|
||||||
CONFIG_CS5535_MFGPT=y
|
CONFIG_CS5535_MFGPT=y
|
||||||
|
@ -45,7 +45,6 @@ CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
|||||||
CONFIG_BLK_DEV_SR=y
|
CONFIG_BLK_DEV_SR=y
|
||||||
CONFIG_CDROM=y
|
CONFIG_CDROM=y
|
||||||
CONFIG_CPU_IDLE_GOV_MENU=y
|
CONFIG_CPU_IDLE_GOV_MENU=y
|
||||||
CONFIG_CRYPTO_BLAKE2S=y
|
|
||||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||||
# CONFIG_CS89x0_ISA is not set
|
# CONFIG_CS89x0_ISA is not set
|
||||||
CONFIG_DMA_ACPI=y
|
CONFIG_DMA_ACPI=y
|
||||||
|
Loading…
x
Reference in New Issue
Block a user