Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
commit
1d3936b7f8
@ -517,7 +517,7 @@ endif
|
||||
define Device/Build/compile
|
||||
$$(_COMPILE_TARGET): $(KDIR)/$(1)
|
||||
$(eval $(call Device/Export,$(KDIR)/$(1)))
|
||||
$(KDIR)/$(1):
|
||||
$(KDIR)/$(1): FORCE
|
||||
$$(call concat_cmd,$(COMPILE/$(1)))
|
||||
|
||||
endef
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-5.10 = .147
|
||||
LINUX_KERNEL_HASH-5.10.147 = 85253abf097eb5013b988a400eb022eed0e0626e7e0a7daa3ab4b6bcabbced9a
|
||||
LINUX_VERSION-5.10 = .149
|
||||
LINUX_KERNEL_HASH-5.10.149 = 0f6134c537563b9cd0533924e3ce06f577cf874e7a00cf3d8e8b31222ac065d3
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-5.15 = .72
|
||||
LINUX_KERNEL_HASH-5.15.72 = 6090323b5b471ae9d3bbc0058966113609f5bbd22fa19a76df32a8abc52f07ab
|
||||
LINUX_VERSION-5.15 = .74
|
||||
LINUX_KERNEL_HASH-5.15.74 = 2c1539a2f85b835c36c4a07c8270b52b0bec38fdda7339477d07f0c3af8c4265
|
||||
|
||||
@ -207,6 +207,14 @@ generate_network() {
|
||||
EOF
|
||||
}
|
||||
;;
|
||||
|
||||
qmi|\
|
||||
mbim)
|
||||
uci -q batch <<-EOF
|
||||
set network.$1.proto='${protocol}'
|
||||
set network.$1.pdptype='ipv4'
|
||||
EOF
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
|
||||
@ -97,6 +97,16 @@ define Trusted-Firmware-A/udpu
|
||||
PLAT:=a3700
|
||||
endef
|
||||
|
||||
define Trusted-Firmware-A/edpu
|
||||
NAME:=Methode eDPU
|
||||
DEPENDS:=+u-boot-eDPU
|
||||
BUILD_DEVICES:=methode_edpu
|
||||
UBOOT:=eDPU
|
||||
DDR_TOPOLOGY:=0
|
||||
CLOCKSPRESET:=CPU_1000_DDR_800
|
||||
PLAT:=a3700
|
||||
endef
|
||||
|
||||
|
||||
TFA_TARGETS:= \
|
||||
espressobin-512mb \
|
||||
@ -105,7 +115,8 @@ TFA_TARGETS:= \
|
||||
espressobin-v3-v5-2gb \
|
||||
espressobin-v7-1gb \
|
||||
espressobin-v7-2gb \
|
||||
udpu
|
||||
udpu \
|
||||
edpu
|
||||
|
||||
TFA_MAKE_FLAGS += \
|
||||
CROSS_CM3=$(BUILD_DIR)/$(CM3_GCC_NAME)-$(CM3_GCC_RELEASE)-$(CM3_GCC_VERSION)/bin/arm-none-eabi- \
|
||||
|
||||
@ -13,21 +13,18 @@ board=$(board_name)
|
||||
|
||||
case "$board" in
|
||||
bananapi,bpi-r3)
|
||||
. /lib/upgrade/common.sh
|
||||
export_bootdevice
|
||||
export_partdevice rootdev 0
|
||||
case "$rootdev" in
|
||||
mmc*)
|
||||
case "$(cmdline_get_var root)" in
|
||||
/dev/mmc*)
|
||||
local envdev=$(find_mmc_part "ubootenv" $rootdev)
|
||||
ubootenv_add_uci_config "$envdev" "0x0" "0x40000" "0x40000" "1"
|
||||
ubootenv_add_uci_config "$envdev" "0x40000" "0x40000" "0x40000" "1"
|
||||
;;
|
||||
mtd*)
|
||||
/dev/mtd*)
|
||||
local envdev=/dev/mtd$(find_mtd_index "u-boot-env")
|
||||
ubootenv_add_uci_config "$envdev" "0x0" "0x20000" "0x20000" "1"
|
||||
ubootenv_add_uci_config "$envdev" "0x20000" "0x20000" "0x20000" "1"
|
||||
;;
|
||||
*)
|
||||
/dev/ubi*)
|
||||
. /lib/upgrade/nand.sh
|
||||
local envubi=$(nand_find_ubi ubi)
|
||||
local envdev=/dev/$(nand_find_volume $envubi ubootenv)
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_VERSION:=2022.07
|
||||
PKG_HASH:=92b08eb49c24da14c1adbf70a71ae8f37cc53eeb4230e859ad8b6733d13dcf5e
|
||||
PKG_VERSION:=2022.10
|
||||
PKG_HASH:=50b4482a505bc281ba8470c399a3c26e145e29b23500bc35c50debd7fa46bdf8
|
||||
PKG_BUILD_DEPENDS:=arm-trusted-firmware-tools/host
|
||||
|
||||
include $(INCLUDE_DIR)/u-boot.mk
|
||||
|
||||
@ -1,28 +0,0 @@
|
||||
From 1d4fcea788e579934a1ad0a90cecd6e1761127d1 Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Tue, 2 Mar 2021 15:56:17 +0800
|
||||
Subject: [PATCH 03/12] mmc: mtk-sd: increase the minimum bus frequency
|
||||
|
||||
With a 48MHz input clock, the lowest bus frequency can be as low as
|
||||
48000000 / (4 * 4095) = 2930Hz. Such an extremely low frequency will cause
|
||||
the mmc framework take seconds to finish the initialization.
|
||||
|
||||
Limiting the minimum bus frequency to a slightly higher value can solve the
|
||||
issue without any side effects.
|
||||
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
drivers/mmc/mtk-sd.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/mmc/mtk-sd.c
|
||||
+++ b/drivers/mmc/mtk-sd.c
|
||||
@@ -232,7 +232,7 @@
|
||||
|
||||
#define SCLK_CYCLES_SHIFT 20
|
||||
|
||||
-#define MIN_BUS_CLK 200000
|
||||
+#define MIN_BUS_CLK 260000
|
||||
|
||||
#define CMD_INTS_MASK \
|
||||
(MSDC_INT_CMDRDY | MSDC_INT_RSPCRCERR | MSDC_INT_CMDTMO)
|
||||
@ -1,31 +0,0 @@
|
||||
From 632f09f140610cf45da1dba25c66e9ca79a70a15 Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Wed, 3 Mar 2021 12:12:39 +0800
|
||||
Subject: [PATCH 09/12] configs: mt7629: remove unused options and add dm
|
||||
command
|
||||
|
||||
Remove unused bootm options
|
||||
Add dm command
|
||||
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
configs/mt7629_rfb_defconfig | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
--- a/configs/mt7629_rfb_defconfig
|
||||
+++ b/configs/mt7629_rfb_defconfig
|
||||
@@ -29,9 +29,14 @@ CONFIG_SPL_WATCHDOG=y
|
||||
CONFIG_HUSH_PARSER=y
|
||||
CONFIG_SYS_PROMPT="U-Boot> "
|
||||
CONFIG_CMD_BOOTMENU=y
|
||||
+# CONFIG_BOOTM_NETBSD is not set
|
||||
+# CONFIG_BOOTM_PLAN9 is not set
|
||||
+# CONFIG_BOOTM_RTEMS is not set
|
||||
+# CONFIG_BOOTM_VXWORKS is not set
|
||||
# CONFIG_CMD_ELF is not set
|
||||
# CONFIG_CMD_XIMG is not set
|
||||
CONFIG_CMD_BIND=y
|
||||
+CONFIG_CMD_DM=y
|
||||
# CONFIG_CMD_FLASH is not set
|
||||
CONFIG_CMD_GPIO=y
|
||||
CONFIG_CMD_SF_TEST=y
|
||||
@ -18,10 +18,10 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
CONFIG_DEFAULT_DEVICE_TREE="mt7622-rfb"
|
||||
+CONFIG_ENV_SIZE=0x20000
|
||||
+CONFIG_ENV_OFFSET=0x280000
|
||||
CONFIG_SYS_PROMPT="MT7622> "
|
||||
CONFIG_DEBUG_UART_BASE=0x11002000
|
||||
CONFIG_DEBUG_UART_CLOCK=25000000
|
||||
CONFIG_SYS_LOAD_ADDR=0x4007ff28
|
||||
@@ -21,6 +23,9 @@ CONFIG_CMD_SF_TEST=y
|
||||
@@ -23,6 +25,9 @@ CONFIG_CMD_SF_TEST=y
|
||||
CONFIG_CMD_PING=y
|
||||
CONFIG_CMD_SMC=y
|
||||
CONFIG_ENV_OVERWRITE=y
|
||||
|
||||
@ -1,163 +0,0 @@
|
||||
From 65a4a80157bacde3cf86ce8cbc9a08f5f05ad9bb Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:21:34 +0800
|
||||
Subject: [PATCH 01/25] mips: add asm/mipsmtregs.h for MIPS multi-threading
|
||||
|
||||
To be compatible with old u-boot used by lots of MT7621 devices, the u-boot
|
||||
needs to boot-up MT7621's all cores, and all VPES of each core.
|
||||
|
||||
This patch adds asm/mipsmtregs.h from linux kernel which is need for
|
||||
boot-up VPEs.
|
||||
|
||||
Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
arch/mips/include/asm/mipsmtregs.h | 142 +++++++++++++++++++++++++++++
|
||||
1 file changed, 142 insertions(+)
|
||||
create mode 100644 arch/mips/include/asm/mipsmtregs.h
|
||||
|
||||
--- /dev/null
|
||||
+++ b/arch/mips/include/asm/mipsmtregs.h
|
||||
@@ -0,0 +1,142 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0 */
|
||||
+/*
|
||||
+ * MT regs definitions, follows on from mipsregs.h
|
||||
+ * Copyright (C) 2004 - 2005 MIPS Technologies, Inc. All rights reserved.
|
||||
+ * Elizabeth Clarke et. al.
|
||||
+ *
|
||||
+ */
|
||||
+#ifndef _ASM_MIPSMTREGS_H
|
||||
+#define _ASM_MIPSMTREGS_H
|
||||
+
|
||||
+#include <asm/mipsregs.h>
|
||||
+
|
||||
+/*
|
||||
+ * Macros for use in assembly language code
|
||||
+ */
|
||||
+
|
||||
+#define CP0_MVPCONTROL $0, 1
|
||||
+#define CP0_MVPCONF0 $0, 2
|
||||
+#define CP0_MVPCONF1 $0, 3
|
||||
+#define CP0_VPECONTROL $1, 1
|
||||
+#define CP0_VPECONF0 $1, 2
|
||||
+#define CP0_VPECONF1 $1, 3
|
||||
+#define CP0_YQMASK $1, 4
|
||||
+#define CP0_VPESCHEDULE $1, 5
|
||||
+#define CP0_VPESCHEFBK $1, 6
|
||||
+#define CP0_TCSTATUS $2, 1
|
||||
+#define CP0_TCBIND $2, 2
|
||||
+#define CP0_TCRESTART $2, 3
|
||||
+#define CP0_TCHALT $2, 4
|
||||
+#define CP0_TCCONTEXT $2, 5
|
||||
+#define CP0_TCSCHEDULE $2, 6
|
||||
+#define CP0_TCSCHEFBK $2, 7
|
||||
+#define CP0_SRSCONF0 $6, 1
|
||||
+#define CP0_SRSCONF1 $6, 2
|
||||
+#define CP0_SRSCONF2 $6, 3
|
||||
+#define CP0_SRSCONF3 $6, 4
|
||||
+#define CP0_SRSCONF4 $6, 5
|
||||
+
|
||||
+/* MVPControl fields */
|
||||
+#define MVPCONTROL_EVP (_ULCAST_(1))
|
||||
+
|
||||
+#define MVPCONTROL_VPC_SHIFT 1
|
||||
+#define MVPCONTROL_VPC (_ULCAST_(1) << MVPCONTROL_VPC_SHIFT)
|
||||
+
|
||||
+#define MVPCONTROL_STLB_SHIFT 2
|
||||
+#define MVPCONTROL_STLB (_ULCAST_(1) << MVPCONTROL_STLB_SHIFT)
|
||||
+
|
||||
+/* MVPConf0 fields */
|
||||
+#define MVPCONF0_PTC_SHIFT 0
|
||||
+#define MVPCONF0_PTC (_ULCAST_(0xff))
|
||||
+#define MVPCONF0_PVPE_SHIFT 10
|
||||
+#define MVPCONF0_PVPE (_ULCAST_(0xf) << MVPCONF0_PVPE_SHIFT)
|
||||
+#define MVPCONF0_TCA_SHIFT 15
|
||||
+#define MVPCONF0_TCA (_ULCAST_(1) << MVPCONF0_TCA_SHIFT)
|
||||
+#define MVPCONF0_PTLBE_SHIFT 16
|
||||
+#define MVPCONF0_PTLBE (_ULCAST_(0x3ff) << MVPCONF0_PTLBE_SHIFT)
|
||||
+#define MVPCONF0_TLBS_SHIFT 29
|
||||
+#define MVPCONF0_TLBS (_ULCAST_(1) << MVPCONF0_TLBS_SHIFT)
|
||||
+#define MVPCONF0_M_SHIFT 31
|
||||
+#define MVPCONF0_M (_ULCAST_(0x1) << MVPCONF0_M_SHIFT)
|
||||
+
|
||||
+/* config3 fields */
|
||||
+#define CONFIG3_MT_SHIFT 2
|
||||
+#define CONFIG3_MT (_ULCAST_(1) << CONFIG3_MT_SHIFT)
|
||||
+
|
||||
+/* VPEControl fields (per VPE) */
|
||||
+#define VPECONTROL_TARGTC (_ULCAST_(0xff))
|
||||
+
|
||||
+#define VPECONTROL_TE_SHIFT 15
|
||||
+#define VPECONTROL_TE (_ULCAST_(1) << VPECONTROL_TE_SHIFT)
|
||||
+#define VPECONTROL_EXCPT_SHIFT 16
|
||||
+#define VPECONTROL_EXCPT (_ULCAST_(0x7) << VPECONTROL_EXCPT_SHIFT)
|
||||
+
|
||||
+/* Thread Exception Codes for EXCPT field */
|
||||
+#define THREX_TU 0
|
||||
+#define THREX_TO 1
|
||||
+#define THREX_IYQ 2
|
||||
+#define THREX_GSX 3
|
||||
+#define THREX_YSCH 4
|
||||
+#define THREX_GSSCH 5
|
||||
+
|
||||
+#define VPECONTROL_GSI_SHIFT 20
|
||||
+#define VPECONTROL_GSI (_ULCAST_(1) << VPECONTROL_GSI_SHIFT)
|
||||
+#define VPECONTROL_YSI_SHIFT 21
|
||||
+#define VPECONTROL_YSI (_ULCAST_(1) << VPECONTROL_YSI_SHIFT)
|
||||
+
|
||||
+/* VPEConf0 fields (per VPE) */
|
||||
+#define VPECONF0_VPA_SHIFT 0
|
||||
+#define VPECONF0_VPA (_ULCAST_(1) << VPECONF0_VPA_SHIFT)
|
||||
+#define VPECONF0_MVP_SHIFT 1
|
||||
+#define VPECONF0_MVP (_ULCAST_(1) << VPECONF0_MVP_SHIFT)
|
||||
+#define VPECONF0_XTC_SHIFT 21
|
||||
+#define VPECONF0_XTC (_ULCAST_(0xff) << VPECONF0_XTC_SHIFT)
|
||||
+
|
||||
+/* VPEConf1 fields (per VPE) */
|
||||
+#define VPECONF1_NCP1_SHIFT 0
|
||||
+#define VPECONF1_NCP1 (_ULCAST_(0xff) << VPECONF1_NCP1_SHIFT)
|
||||
+#define VPECONF1_NCP2_SHIFT 10
|
||||
+#define VPECONF1_NCP2 (_ULCAST_(0xff) << VPECONF1_NCP2_SHIFT)
|
||||
+#define VPECONF1_NCX_SHIFT 20
|
||||
+#define VPECONF1_NCX (_ULCAST_(0xff) << VPECONF1_NCX_SHIFT)
|
||||
+
|
||||
+/* TCStatus fields (per TC) */
|
||||
+#define TCSTATUS_TASID (_ULCAST_(0xff))
|
||||
+#define TCSTATUS_IXMT_SHIFT 10
|
||||
+#define TCSTATUS_IXMT (_ULCAST_(1) << TCSTATUS_IXMT_SHIFT)
|
||||
+#define TCSTATUS_TKSU_SHIFT 11
|
||||
+#define TCSTATUS_TKSU (_ULCAST_(3) << TCSTATUS_TKSU_SHIFT)
|
||||
+#define TCSTATUS_A_SHIFT 13
|
||||
+#define TCSTATUS_A (_ULCAST_(1) << TCSTATUS_A_SHIFT)
|
||||
+#define TCSTATUS_DA_SHIFT 15
|
||||
+#define TCSTATUS_DA (_ULCAST_(1) << TCSTATUS_DA_SHIFT)
|
||||
+#define TCSTATUS_DT_SHIFT 20
|
||||
+#define TCSTATUS_DT (_ULCAST_(1) << TCSTATUS_DT_SHIFT)
|
||||
+#define TCSTATUS_TDS_SHIFT 21
|
||||
+#define TCSTATUS_TDS (_ULCAST_(1) << TCSTATUS_TDS_SHIFT)
|
||||
+#define TCSTATUS_TSST_SHIFT 22
|
||||
+#define TCSTATUS_TSST (_ULCAST_(1) << TCSTATUS_TSST_SHIFT)
|
||||
+#define TCSTATUS_RNST_SHIFT 23
|
||||
+#define TCSTATUS_RNST (_ULCAST_(3) << TCSTATUS_RNST_SHIFT)
|
||||
+/* Codes for RNST */
|
||||
+#define TC_RUNNING 0
|
||||
+#define TC_WAITING 1
|
||||
+#define TC_YIELDING 2
|
||||
+#define TC_GATED 3
|
||||
+
|
||||
+#define TCSTATUS_TMX_SHIFT 27
|
||||
+#define TCSTATUS_TMX (_ULCAST_(1) << TCSTATUS_TMX_SHIFT)
|
||||
+/* TCStatus TCU bits can use same definitions/offsets as CU bits in Status */
|
||||
+
|
||||
+/* TCBind */
|
||||
+#define TCBIND_CURVPE_SHIFT 0
|
||||
+#define TCBIND_CURVPE (_ULCAST_(0xf))
|
||||
+
|
||||
+#define TCBIND_CURTC_SHIFT 21
|
||||
+
|
||||
+#define TCBIND_CURTC (_ULCAST_(0xff) << TCBIND_CURTC_SHIFT)
|
||||
+
|
||||
+/* TCHalt */
|
||||
+#define TCHALT_H (_ULCAST_(1))
|
||||
+
|
||||
+#endif
|
||||
@ -1,111 +0,0 @@
|
||||
From be570e7b0ce004127a7cc97bfae30037fc42a340 Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:21:39 +0800
|
||||
Subject: [PATCH 02/25] mips: add more definitions for asm/cm.h
|
||||
|
||||
This patch add more definitions needed for MT7621 initialization.
|
||||
MT7621 needs to initialize GIC/CPC and other related parts.
|
||||
|
||||
Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
arch/mips/include/asm/cm.h | 67 ++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 67 insertions(+)
|
||||
|
||||
--- a/arch/mips/include/asm/cm.h
|
||||
+++ b/arch/mips/include/asm/cm.h
|
||||
@@ -8,9 +8,23 @@
|
||||
#define __MIPS_ASM_CM_H__
|
||||
|
||||
/* Global Control Register (GCR) offsets */
|
||||
+#define GCR_CONFIG 0x0000
|
||||
#define GCR_BASE 0x0008
|
||||
#define GCR_BASE_UPPER 0x000c
|
||||
+#define GCR_CONTROL 0x0010
|
||||
+#define GCR_ACCESS 0x0020
|
||||
#define GCR_REV 0x0030
|
||||
+#define GCR_GIC_BASE 0x0080
|
||||
+#define GCR_CPC_BASE 0x0088
|
||||
+#define GCR_REG0_BASE 0x0090
|
||||
+#define GCR_REG0_MASK 0x0098
|
||||
+#define GCR_REG1_BASE 0x00a0
|
||||
+#define GCR_REG1_MASK 0x00a8
|
||||
+#define GCR_REG2_BASE 0x00b0
|
||||
+#define GCR_REG2_MASK 0x00b8
|
||||
+#define GCR_REG3_BASE 0x00c0
|
||||
+#define GCR_REG3_MASK 0x00c8
|
||||
+#define GCR_CPC_STATUS 0x00f0
|
||||
#define GCR_L2_CONFIG 0x0130
|
||||
#define GCR_L2_TAG_ADDR 0x0600
|
||||
#define GCR_L2_TAG_ADDR_UPPER 0x0604
|
||||
@@ -19,10 +33,59 @@
|
||||
#define GCR_L2_DATA 0x0610
|
||||
#define GCR_L2_DATA_UPPER 0x0614
|
||||
#define GCR_Cx_COHERENCE 0x2008
|
||||
+#define GCR_Cx_OTHER 0x2018
|
||||
+#define GCR_Cx_ID 0x2028
|
||||
+#define GCR_CO_COHERENCE 0x4008
|
||||
+
|
||||
+/* GCR_CONFIG fields */
|
||||
+#define GCR_CONFIG_NUM_CLUSTERS_SHIFT 23
|
||||
+#define GCR_CONFIG_NUM_CLUSTERS (0x7f << 23)
|
||||
+#define GCR_CONFIG_NUMIOCU_SHIFT 8
|
||||
+#define GCR_CONFIG_NUMIOCU (0xff << 8)
|
||||
+#define GCR_CONFIG_PCORES_SHIFT 0
|
||||
+#define GCR_CONFIG_PCORES (0xff << 0)
|
||||
+
|
||||
+/* GCR_BASE fields */
|
||||
+#define GCR_BASE_SHIFT 15
|
||||
+#define CCA_DEFAULT_OVR_SHIFT 5
|
||||
+#define CCA_DEFAULT_OVR_MASK (0x7 << 5)
|
||||
+#define CCA_DEFAULT_OVREN (0x1 << 4)
|
||||
+#define CM_DEFAULT_TARGET_SHIFT 0
|
||||
+#define CM_DEFAULT_TARGET_MASK (0x3 << 0)
|
||||
+
|
||||
+/* GCR_CONTROL fields */
|
||||
+#define GCR_CONTROL_SYNCCTL (0x1 << 16)
|
||||
|
||||
/* GCR_REV CM versions */
|
||||
#define GCR_REV_CM3 0x0800
|
||||
|
||||
+/* GCR_GIC_BASE fields */
|
||||
+#define GCR_GIC_BASE_ADDRMASK_SHIFT 7
|
||||
+#define GCR_GIC_BASE_ADDRMASK (0x1ffffff << 7)
|
||||
+#define GCR_GIC_EN (0x1 << 0)
|
||||
+
|
||||
+/* GCR_CPC_BASE fields */
|
||||
+#define GCR_CPC_BASE_ADDRMASK_SHIFT 15
|
||||
+#define GCR_CPC_BASE_ADDRMASK (0x1ffff << 15)
|
||||
+#define GCR_CPC_EN (0x1 << 0)
|
||||
+
|
||||
+/* GCR_REGn_MASK fields */
|
||||
+#define GCR_REGn_MASK_ADDRMASK_SHIFT 16
|
||||
+#define GCR_REGn_MASK_ADDRMASK (0xffff << 16)
|
||||
+#define GCR_REGn_MASK_CCAOVR_SHIFT 5
|
||||
+#define GCR_REGn_MASK_CCAOVR (0x7 << 5)
|
||||
+#define GCR_REGn_MASK_CCAOVREN (1 << 4)
|
||||
+#define GCR_REGn_MASK_DROPL2 (1 << 2)
|
||||
+#define GCR_REGn_MASK_CMTGT_SHIFT 0
|
||||
+#define GCR_REGn_MASK_CMTGT (0x3 << 0)
|
||||
+#define GCR_REGn_MASK_CMTGT_DISABLED 0x0
|
||||
+#define GCR_REGn_MASK_CMTGT_MEM 0x1
|
||||
+#define GCR_REGn_MASK_CMTGT_IOCU0 0x2
|
||||
+#define GCR_REGn_MASK_CMTGT_IOCU1 0x3
|
||||
+
|
||||
+/* GCR_CPC_STATUS fields */
|
||||
+#define GCR_CPC_EX (0x1 << 0)
|
||||
+
|
||||
/* GCR_L2_CONFIG fields */
|
||||
#define GCR_L2_CONFIG_ASSOC_SHIFT 0
|
||||
#define GCR_L2_CONFIG_ASSOC_BITS 8
|
||||
@@ -36,6 +99,10 @@
|
||||
#define GCR_Cx_COHERENCE_DOM_EN (0xff << 0)
|
||||
#define GCR_Cx_COHERENCE_EN (0x1 << 0)
|
||||
|
||||
+/* GCR_Cx_OTHER fields */
|
||||
+#define GCR_Cx_OTHER_CORENUM_SHIFT 16
|
||||
+#define GCR_Cx_OTHER_CORENUM (0xffff << 16)
|
||||
+
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
#include <asm/io.h>
|
||||
@ -1,35 +0,0 @@
|
||||
From 71ebc3d25147172e219ea87bec061f751257395b Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:21:45 +0800
|
||||
Subject: [PATCH 03/25] mips: add __image_copy_len for SPL linker script
|
||||
|
||||
This patch adds __image_copy_len needed by TPL of MT7621 SoC.
|
||||
The __image_copy_len represents the binary blob size of both SPL/TPL
|
||||
binaries. To achieve this, __text_start/end are added for calculation.
|
||||
|
||||
Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
arch/mips/cpu/u-boot-spl.lds | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
--- a/arch/mips/cpu/u-boot-spl.lds
|
||||
+++ b/arch/mips/cpu/u-boot-spl.lds
|
||||
@@ -13,7 +13,9 @@ SECTIONS
|
||||
|
||||
. = ALIGN(4);
|
||||
.text : {
|
||||
+ __text_start = .;
|
||||
*(.text*)
|
||||
+ __text_end = .;
|
||||
} > .spl_mem
|
||||
|
||||
. = ALIGN(4);
|
||||
@@ -36,6 +38,7 @@ SECTIONS
|
||||
|
||||
. = ALIGN(4);
|
||||
__image_copy_end = .;
|
||||
+ __image_copy_len = __image_copy_end - __text_start;
|
||||
|
||||
_image_binary_end = .;
|
||||
|
||||
@ -1,104 +0,0 @@
|
||||
From d7cfa1cb5602a1d936df36ee70869753835de28e Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:21:51 +0800
|
||||
Subject: [PATCH 04/25] mips: add support for noncached_alloc()
|
||||
|
||||
This patch adds support for noncached_alloc() which was only supported by
|
||||
ARM platform.
|
||||
|
||||
Unlike the ARM platform, MMU is not used in u-boot for MIPS. Instead, KSEG
|
||||
is provided to access uncached memory. So most code of this patch is copied
|
||||
from cache.c of ARM platform, with only two differences:
|
||||
1. MMU is untouched in noncached_set_region()
|
||||
2. Address returned by noncached_alloc() is converted using KSEG1ADDR()
|
||||
|
||||
Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
arch/mips/include/asm/system.h | 20 ++++++++++++++++
|
||||
arch/mips/lib/cache.c | 43 ++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 63 insertions(+)
|
||||
|
||||
--- a/arch/mips/include/asm/system.h
|
||||
+++ b/arch/mips/include/asm/system.h
|
||||
@@ -282,4 +282,24 @@ static inline void instruction_hazard_ba
|
||||
: "=&r"(tmp));
|
||||
}
|
||||
|
||||
+#ifdef CONFIG_SYS_NONCACHED_MEMORY
|
||||
+/* 1MB granularity */
|
||||
+#define MMU_SECTION_SHIFT 20
|
||||
+#define MMU_SECTION_SIZE (1 << MMU_SECTION_SHIFT)
|
||||
+
|
||||
+/**
|
||||
+ * noncached_init() - Initialize non-cached memory region
|
||||
+ *
|
||||
+ * Initialize non-cached memory area. This memory region will be typically
|
||||
+ * located right below the malloc() area and be accessed from KSEG1.
|
||||
+ *
|
||||
+ * It is called during the generic post-relocation init sequence.
|
||||
+ *
|
||||
+ * Return: 0 if OK
|
||||
+ */
|
||||
+int noncached_init(void);
|
||||
+
|
||||
+phys_addr_t noncached_alloc(size_t size, size_t align);
|
||||
+#endif /* CONFIG_SYS_NONCACHED_MEMORY */
|
||||
+
|
||||
#endif /* _ASM_SYSTEM_H */
|
||||
--- a/arch/mips/lib/cache.c
|
||||
+++ b/arch/mips/lib/cache.c
|
||||
@@ -6,6 +6,7 @@
|
||||
|
||||
#include <common.h>
|
||||
#include <cpu_func.h>
|
||||
+#include <malloc.h>
|
||||
#include <asm/cache.h>
|
||||
#include <asm/cacheops.h>
|
||||
#include <asm/cm.h>
|
||||
@@ -197,3 +198,45 @@ void dcache_disable(void)
|
||||
/* ensure the pipeline doesn't contain now-invalid instructions */
|
||||
instruction_hazard_barrier();
|
||||
}
|
||||
+
|
||||
+#ifdef CONFIG_SYS_NONCACHED_MEMORY
|
||||
+static unsigned long noncached_start;
|
||||
+static unsigned long noncached_end;
|
||||
+static unsigned long noncached_next;
|
||||
+
|
||||
+void noncached_set_region(void)
|
||||
+{
|
||||
+}
|
||||
+
|
||||
+int noncached_init(void)
|
||||
+{
|
||||
+ phys_addr_t start, end;
|
||||
+ size_t size;
|
||||
+
|
||||
+ /* If this calculation changes, update board_f.c:reserve_noncached() */
|
||||
+ end = ALIGN(mem_malloc_start, MMU_SECTION_SIZE) - MMU_SECTION_SIZE;
|
||||
+ size = ALIGN(CONFIG_SYS_NONCACHED_MEMORY, MMU_SECTION_SIZE);
|
||||
+ start = end - size;
|
||||
+
|
||||
+ debug("mapping memory %pa-%pa non-cached\n", &start, &end);
|
||||
+
|
||||
+ noncached_start = start;
|
||||
+ noncached_end = end;
|
||||
+ noncached_next = start;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+phys_addr_t noncached_alloc(size_t size, size_t align)
|
||||
+{
|
||||
+ phys_addr_t next = ALIGN(noncached_next, align);
|
||||
+
|
||||
+ if (next >= noncached_end || (noncached_end - next) < size)
|
||||
+ return 0;
|
||||
+
|
||||
+ debug("allocated %zu bytes of uncached memory @%pa\n", size, &next);
|
||||
+ noncached_next = next + size;
|
||||
+
|
||||
+ return CKSEG1ADDR(next);
|
||||
+}
|
||||
+#endif /* CONFIG_SYS_NONCACHED_MEMORY */
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,428 +0,0 @@
|
||||
From b1549087ecd1eb53f6173b17b473134fd6cca157 Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:22:26 +0800
|
||||
Subject: [PATCH 06/25] mips: mtmips: add two reference boards for mt7621
|
||||
|
||||
The mt7621_rfb board supports integrated giga PHYs plus one external
|
||||
giga PHYs. It also has up to 512MiB DDR3, 16MB SPI-NOR, 3 mini PCI-e x1
|
||||
slots, SDXC and USB.
|
||||
|
||||
The mt7621_nand_rfb board is almost the same as mt7621_rfb board, but it
|
||||
uses NAND flash and SDXC is not available.
|
||||
|
||||
Reviewed-by: Stefan Roese <sr@denx.de>
|
||||
Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
arch/mips/dts/Makefile | 2 +
|
||||
arch/mips/dts/mediatek,mt7621-nand-rfb.dts | 67 +++++++++++++++++
|
||||
arch/mips/dts/mediatek,mt7621-rfb.dts | 82 +++++++++++++++++++++
|
||||
arch/mips/mach-mtmips/mt7621/Kconfig | 20 +++++
|
||||
board/mediatek/mt7621/MAINTAINERS | 8 ++
|
||||
board/mediatek/mt7621/Makefile | 3 +
|
||||
board/mediatek/mt7621/board.c | 6 ++
|
||||
configs/mt7621_nand_rfb_defconfig | 85 ++++++++++++++++++++++
|
||||
configs/mt7621_rfb_defconfig | 82 +++++++++++++++++++++
|
||||
9 files changed, 355 insertions(+)
|
||||
create mode 100644 arch/mips/dts/mediatek,mt7621-nand-rfb.dts
|
||||
create mode 100644 arch/mips/dts/mediatek,mt7621-rfb.dts
|
||||
create mode 100644 board/mediatek/mt7621/MAINTAINERS
|
||||
create mode 100644 board/mediatek/mt7621/Makefile
|
||||
create mode 100644 board/mediatek/mt7621/board.c
|
||||
create mode 100644 configs/mt7621_nand_rfb_defconfig
|
||||
create mode 100644 configs/mt7621_rfb_defconfig
|
||||
|
||||
--- a/arch/mips/dts/Makefile
|
||||
+++ b/arch/mips/dts/Makefile
|
||||
@@ -16,6 +16,8 @@ dtb-$(CONFIG_BOARD_COMTREND_WAP5813N) +=
|
||||
dtb-$(CONFIG_BOARD_HUAWEI_HG556A) += huawei,hg556a.dtb
|
||||
dtb-$(CONFIG_BOARD_MT7620_RFB) += mediatek,mt7620-rfb.dtb
|
||||
dtb-$(CONFIG_BOARD_MT7620_MT7530_RFB) += mediatek,mt7620-mt7530-rfb.dtb
|
||||
+dtb-$(CONFIG_BOARD_MT7621_RFB) += mediatek,mt7621-rfb.dtb
|
||||
+dtb-$(CONFIG_BOARD_MT7621_NAND_RFB) += mediatek,mt7621-nand-rfb.dtb
|
||||
dtb-$(CONFIG_BOARD_MT7628_RFB) += mediatek,mt7628-rfb.dtb
|
||||
dtb-$(CONFIG_BOARD_GARDENA_SMART_GATEWAY_MT7688) += gardena-smart-gateway-mt7688.dtb
|
||||
dtb-$(CONFIG_BOARD_LINKIT_SMART_7688) += linkit-smart-7688.dtb
|
||||
--- /dev/null
|
||||
+++ b/arch/mips/dts/mediatek,mt7621-nand-rfb.dts
|
||||
@@ -0,0 +1,67 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0
|
||||
+/*
|
||||
+ * Copyright (C) 2022 MediaTek Inc. All rights reserved.
|
||||
+ *
|
||||
+ * Author: Weijie Gao <weijie.gao@mediatek.com>
|
||||
+ */
|
||||
+
|
||||
+/dts-v1/;
|
||||
+
|
||||
+#include "mt7621.dtsi"
|
||||
+
|
||||
+/ {
|
||||
+ compatible = "mediatek,mt7621-nand-rfb", "mediatek,mt7621-soc";
|
||||
+ model = "MediaTek MT7621 RFB (NAND)";
|
||||
+
|
||||
+ aliases {
|
||||
+ serial0 = &uart0;
|
||||
+ };
|
||||
+
|
||||
+ chosen {
|
||||
+ stdout-path = &uart0;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&pinctrl {
|
||||
+ state_default: pin_state {
|
||||
+ nand {
|
||||
+ groups = "spi", "sdxc";
|
||||
+ function = "nand";
|
||||
+ };
|
||||
+
|
||||
+ gpios {
|
||||
+ groups = "i2c", "uart3", "pcie reset";
|
||||
+ function = "gpio";
|
||||
+ };
|
||||
+
|
||||
+ wdt {
|
||||
+ groups = "wdt";
|
||||
+ function = "wdt rst";
|
||||
+ };
|
||||
+
|
||||
+ jtag {
|
||||
+ groups = "jtag";
|
||||
+ function = "jtag";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&uart0 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&gpio {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+ð {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&ssusb {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&u3phy {
|
||||
+ status = "okay";
|
||||
+};
|
||||
--- /dev/null
|
||||
+++ b/arch/mips/dts/mediatek,mt7621-rfb.dts
|
||||
@@ -0,0 +1,82 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0
|
||||
+/*
|
||||
+ * Copyright (C) 2022 MediaTek Inc. All rights reserved.
|
||||
+ *
|
||||
+ * Author: Weijie Gao <weijie.gao@mediatek.com>
|
||||
+ */
|
||||
+
|
||||
+/dts-v1/;
|
||||
+
|
||||
+#include "mt7621.dtsi"
|
||||
+
|
||||
+/ {
|
||||
+ compatible = "mediatek,mt7621-rfb", "mediatek,mt7621-soc";
|
||||
+ model = "MediaTek MT7621 RFB (SPI-NOR)";
|
||||
+
|
||||
+ aliases {
|
||||
+ serial0 = &uart0;
|
||||
+ spi0 = &spi;
|
||||
+ };
|
||||
+
|
||||
+ chosen {
|
||||
+ stdout-path = &uart0;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&pinctrl {
|
||||
+ state_default: pin_state {
|
||||
+ gpios {
|
||||
+ groups = "i2c", "uart3", "pcie reset";
|
||||
+ function = "gpio";
|
||||
+ };
|
||||
+
|
||||
+ wdt {
|
||||
+ groups = "wdt";
|
||||
+ function = "wdt rst";
|
||||
+ };
|
||||
+
|
||||
+ jtag {
|
||||
+ groups = "jtag";
|
||||
+ function = "jtag";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&uart0 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&gpio {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&spi {
|
||||
+ status = "okay";
|
||||
+ num-cs = <2>;
|
||||
+
|
||||
+ spi-flash@0 {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+ compatible = "jedec,spi-nor";
|
||||
+ spi-max-frequency = <25000000>;
|
||||
+ reg = <0>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ð {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&mmc {
|
||||
+ cap-sd-highspeed;
|
||||
+
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&ssusb {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&u3phy {
|
||||
+ status = "okay";
|
||||
+};
|
||||
--- a/arch/mips/mach-mtmips/mt7621/Kconfig
|
||||
+++ b/arch/mips/mach-mtmips/mt7621/Kconfig
|
||||
@@ -79,6 +79,26 @@ config MT7621_BOOT_FROM_NAND
|
||||
choice
|
||||
prompt "Board select"
|
||||
|
||||
+config BOARD_MT7621_RFB
|
||||
+ bool "MediaTek MT7621 RFB (SPI-NOR)"
|
||||
+ help
|
||||
+ The reference design of MT7621A (WS3010) booting from SPI-NOR flash.
|
||||
+ The board can be configured with DDR2 (64MiB~256MiB) or DDR3
|
||||
+ (128MiB~512MiB). The board has 16 MiB SPI-NOR flash, built-in MT7530
|
||||
+ GbE switch, 1 UART, 1 USB 2.0 host, 1 USB 3.0 host, 1 SDXC, 3 PCIe
|
||||
+ sockets, 1 RGMII to external GbE PHY, 2 audio jacks (in/out),
|
||||
+ JTAG pins and expansion GPIO pins.
|
||||
+
|
||||
+config BOARD_MT7621_NAND_RFB
|
||||
+ bool "MediaTek MT7621 RFB (NAND)"
|
||||
+ help
|
||||
+ The reference design of MT7621A (WS3010) booting from NAND flash.
|
||||
+ The board can be configured with DDR2 (64MiB~256MiB) or DDR3
|
||||
+ (128MiB~512MiB). The board has 128 MiB parallel NAND flash, built-in
|
||||
+ MT7530 GbE switch, 1 UART, 1 USB 2.0 host, 1 USB 3.0 host, 3 PCIe
|
||||
+ sockets, 1 RGMII to external GbE PHY, 2 audio jacks (in/out),
|
||||
+ JTAG pins and expansion GPIO pins.
|
||||
+
|
||||
endchoice
|
||||
|
||||
config SYS_CONFIG_NAME
|
||||
--- /dev/null
|
||||
+++ b/board/mediatek/mt7621/MAINTAINERS
|
||||
@@ -0,0 +1,8 @@
|
||||
+MT7621_RFB BOARD
|
||||
+M: Weijie Gao <weijie.gao@mediatek.com>
|
||||
+S: Maintained
|
||||
+F: board/mediatek/mt7621
|
||||
+F: configs/mt7621_rfb_defconfig
|
||||
+F: configs/mt7621_nand_rfb_defconfig
|
||||
+F: arch/mips/dts/mediatek,mt7621-rfb.dts
|
||||
+F: arch/mips/dts/mediatek,mt7621-nand-rfb.dts
|
||||
--- /dev/null
|
||||
+++ b/board/mediatek/mt7621/Makefile
|
||||
@@ -0,0 +1,3 @@
|
||||
+# SPDX-License-Identifier: GPL-2.0
|
||||
+
|
||||
+obj-y += board.o
|
||||
--- /dev/null
|
||||
+++ b/board/mediatek/mt7621/board.c
|
||||
@@ -0,0 +1,6 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0
|
||||
+/*
|
||||
+ * Copyright (C) 2022 MediaTek Inc. All rights reserved.
|
||||
+ *
|
||||
+ * Author: Weijie Gao <weijie.gao@mediatek.com>
|
||||
+ */
|
||||
--- /dev/null
|
||||
+++ b/configs/mt7621_nand_rfb_defconfig
|
||||
@@ -0,0 +1,85 @@
|
||||
+CONFIG_MIPS=y
|
||||
+CONFIG_SYS_MALLOC_LEN=0x100000
|
||||
+CONFIG_SPL_LIBCOMMON_SUPPORT=y
|
||||
+CONFIG_SPL_LIBGENERIC_SUPPORT=y
|
||||
+CONFIG_NR_DRAM_BANKS=1
|
||||
+CONFIG_ENV_SIZE=0x1000
|
||||
+CONFIG_DEFAULT_DEVICE_TREE="mediatek,mt7621-nand-rfb"
|
||||
+CONFIG_SPL_SERIAL=y
|
||||
+CONFIG_SPL_SYS_MALLOC_F_LEN=0x100000
|
||||
+CONFIG_SPL=y
|
||||
+CONFIG_DEBUG_UART_BASE=0xbe000c00
|
||||
+CONFIG_DEBUG_UART_CLOCK=50000000
|
||||
+CONFIG_SYS_LOAD_ADDR=0x83000000
|
||||
+CONFIG_ARCH_MTMIPS=y
|
||||
+CONFIG_SOC_MT7621=y
|
||||
+CONFIG_MT7621_BOOT_FROM_NAND=y
|
||||
+CONFIG_BOARD_MT7621_NAND_RFB=y
|
||||
+# CONFIG_MIPS_CACHE_SETUP is not set
|
||||
+# CONFIG_MIPS_CACHE_DISABLE is not set
|
||||
+CONFIG_RESTORE_EXCEPTION_VECTOR_BASE=y
|
||||
+CONFIG_MIPS_BOOT_FDT=y
|
||||
+CONFIG_DEBUG_UART=y
|
||||
+CONFIG_FIT=y
|
||||
+# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
|
||||
+CONFIG_SYS_CONSOLE_INFO_QUIET=y
|
||||
+CONFIG_SPL_SYS_MALLOC_SIMPLE=y
|
||||
+CONFIG_SPL_NAND_SUPPORT=y
|
||||
+CONFIG_SPL_NAND_BASE=y
|
||||
+CONFIG_SPL_NAND_IDENT=y
|
||||
+# CONFIG_BOOTM_NETBSD is not set
|
||||
+# CONFIG_BOOTM_PLAN9 is not set
|
||||
+# CONFIG_BOOTM_RTEMS is not set
|
||||
+# CONFIG_BOOTM_VXWORKS is not set
|
||||
+# CONFIG_CMD_ELF is not set
|
||||
+# CONFIG_CMD_XIMG is not set
|
||||
+# CONFIG_CMD_CRC32 is not set
|
||||
+# CONFIG_CMD_DM is not set
|
||||
+# CONFIG_CMD_FLASH is not set
|
||||
+CONFIG_CMD_GPIO=y
|
||||
+# CONFIG_CMD_LOADS is not set
|
||||
+CONFIG_CMD_MMC=y
|
||||
+CONFIG_CMD_MTD=y
|
||||
+CONFIG_CMD_PART=y
|
||||
+# CONFIG_CMD_PINMUX is not set
|
||||
+CONFIG_CMD_USB=y
|
||||
+# CONFIG_CMD_NFS is not set
|
||||
+CONFIG_CMD_FAT=y
|
||||
+CONFIG_CMD_FS_GENERIC=y
|
||||
+# CONFIG_SPL_DOS_PARTITION is not set
|
||||
+# CONFIG_ISO_PARTITION is not set
|
||||
+CONFIG_EFI_PARTITION=y
|
||||
+# CONFIG_SPL_EFI_PARTITION is not set
|
||||
+CONFIG_PARTITION_TYPE_GUID=y
|
||||
+CONFIG_SYS_RELOC_GD_ENV_ADDR=y
|
||||
+CONFIG_NET_RANDOM_ETHADDR=y
|
||||
+# CONFIG_I2C is not set
|
||||
+# CONFIG_INPUT is not set
|
||||
+CONFIG_MMC=y
|
||||
+# CONFIG_MMC_QUIRKS is not set
|
||||
+# CONFIG_MMC_HW_PARTITIONING is not set
|
||||
+CONFIG_MMC_MTK=y
|
||||
+CONFIG_MTD=y
|
||||
+CONFIG_DM_MTD=y
|
||||
+CONFIG_MTD_RAW_NAND=y
|
||||
+CONFIG_NAND_MT7621=y
|
||||
+CONFIG_SYS_NAND_ONFI_DETECTION=y
|
||||
+CONFIG_SYS_NAND_U_BOOT_LOCATIONS=y
|
||||
+CONFIG_SYS_NAND_U_BOOT_OFFS=0x0
|
||||
+CONFIG_MEDIATEK_ETH=y
|
||||
+CONFIG_PHY=y
|
||||
+CONFIG_PHY_MTK_TPHY=y
|
||||
+CONFIG_DEBUG_UART_SHIFT=2
|
||||
+CONFIG_SYSRESET=y
|
||||
+CONFIG_SYSRESET_RESETCTL=y
|
||||
+CONFIG_USB=y
|
||||
+CONFIG_USB_XHCI_HCD=y
|
||||
+CONFIG_USB_XHCI_MTK=y
|
||||
+CONFIG_USB_STORAGE=y
|
||||
+CONFIG_WDT=y
|
||||
+CONFIG_WDT_MT7621=y
|
||||
+CONFIG_FAT_WRITE=y
|
||||
+# CONFIG_BINMAN_FDT is not set
|
||||
+CONFIG_LZMA=y
|
||||
+# CONFIG_GZIP is not set
|
||||
+CONFIG_SPL_LZMA=y
|
||||
--- /dev/null
|
||||
+++ b/configs/mt7621_rfb_defconfig
|
||||
@@ -0,0 +1,82 @@
|
||||
+CONFIG_MIPS=y
|
||||
+CONFIG_SYS_MALLOC_LEN=0x100000
|
||||
+CONFIG_SPL_LIBCOMMON_SUPPORT=y
|
||||
+CONFIG_SPL_LIBGENERIC_SUPPORT=y
|
||||
+CONFIG_NR_DRAM_BANKS=1
|
||||
+CONFIG_ENV_SIZE=0x1000
|
||||
+CONFIG_DEFAULT_DEVICE_TREE="mediatek,mt7621-rfb"
|
||||
+CONFIG_SPL_SERIAL=y
|
||||
+CONFIG_SPL_SYS_MALLOC_F_LEN=0x40000
|
||||
+CONFIG_SPL=y
|
||||
+CONFIG_DEBUG_UART_BASE=0xbe000c00
|
||||
+CONFIG_DEBUG_UART_CLOCK=50000000
|
||||
+CONFIG_SYS_LOAD_ADDR=0x83000000
|
||||
+CONFIG_ARCH_MTMIPS=y
|
||||
+CONFIG_SOC_MT7621=y
|
||||
+# CONFIG_MIPS_CACHE_SETUP is not set
|
||||
+# CONFIG_MIPS_CACHE_DISABLE is not set
|
||||
+CONFIG_RESTORE_EXCEPTION_VECTOR_BASE=y
|
||||
+CONFIG_MIPS_BOOT_FDT=y
|
||||
+CONFIG_DEBUG_UART=y
|
||||
+CONFIG_TPL_SYS_MALLOC_F_LEN=0x1000
|
||||
+CONFIG_FIT=y
|
||||
+# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
|
||||
+CONFIG_SYS_CONSOLE_INFO_QUIET=y
|
||||
+CONFIG_SPL_SYS_MALLOC_SIMPLE=y
|
||||
+CONFIG_SPL_NOR_SUPPORT=y
|
||||
+CONFIG_TPL=y
|
||||
+# CONFIG_TPL_FRAMEWORK is not set
|
||||
+# CONFIG_BOOTM_NETBSD is not set
|
||||
+# CONFIG_BOOTM_PLAN9 is not set
|
||||
+# CONFIG_BOOTM_RTEMS is not set
|
||||
+# CONFIG_BOOTM_VXWORKS is not set
|
||||
+# CONFIG_CMD_ELF is not set
|
||||
+# CONFIG_CMD_XIMG is not set
|
||||
+# CONFIG_CMD_CRC32 is not set
|
||||
+# CONFIG_CMD_DM is not set
|
||||
+CONFIG_CMD_GPIO=y
|
||||
+# CONFIG_CMD_LOADS is not set
|
||||
+CONFIG_CMD_MMC=y
|
||||
+CONFIG_CMD_PART=y
|
||||
+# CONFIG_CMD_PINMUX is not set
|
||||
+CONFIG_CMD_SPI=y
|
||||
+# CONFIG_CMD_NFS is not set
|
||||
+CONFIG_DOS_PARTITION=y
|
||||
+# CONFIG_SPL_DOS_PARTITION is not set
|
||||
+# CONFIG_ISO_PARTITION is not set
|
||||
+CONFIG_EFI_PARTITION=y
|
||||
+# CONFIG_SPL_EFI_PARTITION is not set
|
||||
+CONFIG_PARTITION_TYPE_GUID=y
|
||||
+CONFIG_SYS_RELOC_GD_ENV_ADDR=y
|
||||
+CONFIG_NET_RANDOM_ETHADDR=y
|
||||
+# CONFIG_I2C is not set
|
||||
+# CONFIG_INPUT is not set
|
||||
+CONFIG_MMC=y
|
||||
+# CONFIG_MMC_QUIRKS is not set
|
||||
+# CONFIG_MMC_HW_PARTITIONING is not set
|
||||
+CONFIG_MMC_MTK=y
|
||||
+CONFIG_SF_DEFAULT_SPEED=20000000
|
||||
+CONFIG_SPI_FLASH_BAR=y
|
||||
+CONFIG_SPI_FLASH_EON=y
|
||||
+CONFIG_SPI_FLASH_GIGADEVICE=y
|
||||
+CONFIG_SPI_FLASH_ISSI=y
|
||||
+CONFIG_SPI_FLASH_MACRONIX=y
|
||||
+CONFIG_SPI_FLASH_SPANSION=y
|
||||
+CONFIG_SPI_FLASH_STMICRO=y
|
||||
+CONFIG_SPI_FLASH_WINBOND=y
|
||||
+CONFIG_SPI_FLASH_XMC=y
|
||||
+CONFIG_SPI_FLASH_XTX=y
|
||||
+CONFIG_MEDIATEK_ETH=y
|
||||
+CONFIG_PHY=y
|
||||
+CONFIG_PHY_MTK_TPHY=y
|
||||
+CONFIG_DEBUG_UART_SHIFT=2
|
||||
+CONFIG_SPI=y
|
||||
+CONFIG_MT7621_SPI=y
|
||||
+CONFIG_SYSRESET=y
|
||||
+CONFIG_SYSRESET_RESETCTL=y
|
||||
+CONFIG_WDT=y
|
||||
+CONFIG_WDT_MT7621=y
|
||||
+# CONFIG_BINMAN_FDT is not set
|
||||
+CONFIG_LZMA=y
|
||||
+# CONFIG_GZIP is not set
|
||||
+CONFIG_SPL_LZMA=y
|
||||
@ -1,93 +0,0 @@
|
||||
From 3fed02d930597c53f1c8500aff14581bb87a1e3d Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:22:31 +0800
|
||||
Subject: [PATCH 07/25] doc: mediatek: add documentation for mt7621 reference
|
||||
boards
|
||||
|
||||
The MT7621 requires external binary blob being executed during u-boot's
|
||||
boot-up flow. It's necessary to provide a guide here for users to correctly
|
||||
build the u-boot.
|
||||
|
||||
Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
doc/board/index.rst | 1 +
|
||||
doc/board/mediatek/index.rst | 9 +++++++
|
||||
doc/board/mediatek/mt7621.rst | 48 +++++++++++++++++++++++++++++++++++
|
||||
3 files changed, 58 insertions(+)
|
||||
create mode 100644 doc/board/mediatek/index.rst
|
||||
create mode 100644 doc/board/mediatek/mt7621.rst
|
||||
|
||||
--- a/doc/board/index.rst
|
||||
+++ b/doc/board/index.rst
|
||||
@@ -23,6 +23,7 @@ Board-specific doc
|
||||
highbank/index
|
||||
intel/index
|
||||
kontron/index
|
||||
+ mediatek/index
|
||||
microchip/index
|
||||
nokia/index
|
||||
nxp/index
|
||||
--- /dev/null
|
||||
+++ b/doc/board/mediatek/index.rst
|
||||
@@ -0,0 +1,9 @@
|
||||
+.. SPDX-License-Identifier: GPL-2.0+
|
||||
+
|
||||
+Mediatek
|
||||
+=========
|
||||
+
|
||||
+.. toctree::
|
||||
+ :maxdepth: 2
|
||||
+
|
||||
+ mt7621
|
||||
--- /dev/null
|
||||
+++ b/doc/board/mediatek/mt7621.rst
|
||||
@@ -0,0 +1,48 @@
|
||||
+.. SPDX-License-Identifier: GPL-2.0
|
||||
+
|
||||
+mt7621_rfb/mt7621_nand_rfb
|
||||
+==========================
|
||||
+
|
||||
+U-Boot for the MediaTek MT7621 boards
|
||||
+
|
||||
+Quick Start
|
||||
+-----------
|
||||
+
|
||||
+- Get the DDR initialization binary blob
|
||||
+- Configure CPU and DDR parameters
|
||||
+- Build U-Boot
|
||||
+
|
||||
+Get the DDR initialization binary blob
|
||||
+--------------------------------------
|
||||
+
|
||||
+Download one from:
|
||||
+ - https://raw.githubusercontent.com/mtk-openwrt/mt7621-lowlevel-preloader/master/mt7621_stage_sram.bin
|
||||
+ - https://raw.githubusercontent.com/mtk-openwrt/mt7621-lowlevel-preloader/master/mt7621_stage_sram_noprint.bin
|
||||
+
|
||||
+mt7621_stage_sram_noprint.bin has removed all output logs. To use this one,
|
||||
+download and rename it to mt7621_stage_sram.bin
|
||||
+
|
||||
+Put the binary blob to the u-boot build directory.
|
||||
+
|
||||
+Configure CPU and DDR parameters
|
||||
+--------------------------------
|
||||
+
|
||||
+menuconfig > MIPS architecture > MediaTek MIPS platforms > CPU & DDR configuration
|
||||
+
|
||||
+Select the correct DDR timing parameters for your board. The size shown here
|
||||
+must match the DDR size of you board.
|
||||
+
|
||||
+The frequency of CPU and DDR can also be adjusted.
|
||||
+
|
||||
+Build U-Boot
|
||||
+------------
|
||||
+
|
||||
+.. code-block:: bash
|
||||
+
|
||||
+ $ export CROSS_COMPILE=mipsel-linux-
|
||||
+ $ make O=build mt7621_rfb_defconfig # or mt7621_nand_rfb_defconfig
|
||||
+ $ cp mt7621_stage_sram.bin ./build/mt7621_stage_sram.bin
|
||||
+ $ # or cp mt7621_stage_sram_noprint.bin ./build/mt7621_stage_sram.bin
|
||||
+ $ make O=build
|
||||
+
|
||||
+Burn the u-boot-mt7621.bin to the SPI-NOR or NAND flash.
|
||||
@ -1,367 +0,0 @@
|
||||
From c2e579662748cb5d3bf3e31f58d99c4db4d102c1 Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:22:36 +0800
|
||||
Subject: [PATCH 08/25] clk: mtmips: add clock driver for MediaTek MT7621 SoC
|
||||
|
||||
This patch adds a clock driver for MediaTek MT7621 SoC.
|
||||
This driver provides clock gate control as well as getting clock frequency
|
||||
for CPU/SYS/XTAL and some peripherals.
|
||||
|
||||
Reviewed-by: Sean Anderson <seanga2@gmail.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
drivers/clk/mtmips/Makefile | 1 +
|
||||
drivers/clk/mtmips/clk-mt7621.c | 288 +++++++++++++++++++++++++
|
||||
include/dt-bindings/clock/mt7621-clk.h | 46 ++++
|
||||
3 files changed, 335 insertions(+)
|
||||
create mode 100644 drivers/clk/mtmips/clk-mt7621.c
|
||||
create mode 100644 include/dt-bindings/clock/mt7621-clk.h
|
||||
|
||||
--- a/drivers/clk/mtmips/Makefile
|
||||
+++ b/drivers/clk/mtmips/Makefile
|
||||
@@ -1,4 +1,5 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
obj-$(CONFIG_SOC_MT7620) += clk-mt7620.o
|
||||
+obj-$(CONFIG_SOC_MT7621) += clk-mt7621.o
|
||||
obj-$(CONFIG_SOC_MT7628) += clk-mt7628.o
|
||||
--- /dev/null
|
||||
+++ b/drivers/clk/mtmips/clk-mt7621.c
|
||||
@@ -0,0 +1,288 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0
|
||||
+/*
|
||||
+ * Copyright (C) 2022 MediaTek Inc. All rights reserved.
|
||||
+ *
|
||||
+ * Author: Weijie Gao <weijie.gao@mediatek.com>
|
||||
+ */
|
||||
+
|
||||
+#include <clk-uclass.h>
|
||||
+#include <dm.h>
|
||||
+#include <dm/device_compat.h>
|
||||
+#include <regmap.h>
|
||||
+#include <syscon.h>
|
||||
+#include <dt-bindings/clock/mt7621-clk.h>
|
||||
+#include <linux/io.h>
|
||||
+#include <linux/bitops.h>
|
||||
+#include <linux/bitfield.h>
|
||||
+
|
||||
+#define SYSC_MAP_SIZE 0x100
|
||||
+#define MEMC_MAP_SIZE 0x1000
|
||||
+
|
||||
+/* SYSC */
|
||||
+#define SYSCFG0_REG 0x10
|
||||
+#define XTAL_MODE_SEL GENMASK(8, 6)
|
||||
+
|
||||
+#define CLKCFG0_REG 0x2c
|
||||
+#define CPU_CLK_SEL GENMASK(31, 30)
|
||||
+#define PERI_CLK_SEL BIT(4)
|
||||
+
|
||||
+#define CLKCFG1_REG 0x30
|
||||
+
|
||||
+#define CUR_CLK_STS_REG 0x44
|
||||
+#define CUR_CPU_FDIV GENMASK(12, 8)
|
||||
+#define CUR_CPU_FFRAC GENMASK(4, 0)
|
||||
+
|
||||
+/* MEMC */
|
||||
+#define MEMPLL1_REG 0x0604
|
||||
+#define RG_MEPL_DIV2_SEL GENMASK(2, 1)
|
||||
+
|
||||
+#define MEMPLL6_REG 0x0618
|
||||
+#define MEMPLL18_REG 0x0648
|
||||
+#define RG_MEPL_PREDIV GENMASK(13, 12)
|
||||
+#define RG_MEPL_FBDIV GENMASK(10, 4)
|
||||
+
|
||||
+/* Fixed 500M clock */
|
||||
+#define GMPLL_CLK 500000000
|
||||
+
|
||||
+struct mt7621_clk_priv {
|
||||
+ void __iomem *sysc_base;
|
||||
+ int cpu_clk;
|
||||
+ int ddr_clk;
|
||||
+ int sys_clk;
|
||||
+ int xtal_clk;
|
||||
+};
|
||||
+
|
||||
+enum mt7621_clk_src {
|
||||
+ CLK_SRC_CPU,
|
||||
+ CLK_SRC_DDR,
|
||||
+ CLK_SRC_SYS,
|
||||
+ CLK_SRC_XTAL,
|
||||
+ CLK_SRC_PERI,
|
||||
+ CLK_SRC_125M,
|
||||
+ CLK_SRC_150M,
|
||||
+ CLK_SRC_250M,
|
||||
+ CLK_SRC_270M,
|
||||
+
|
||||
+ __CLK_SRC_MAX
|
||||
+};
|
||||
+
|
||||
+struct mt7621_clk_map {
|
||||
+ u32 cgbit;
|
||||
+ enum mt7621_clk_src clksrc;
|
||||
+};
|
||||
+
|
||||
+#define CLK_MAP(_id, _cg, _src) \
|
||||
+ [_id] = { .cgbit = (_cg), .clksrc = (_src) }
|
||||
+
|
||||
+#define CLK_MAP_SRC(_id, _src) \
|
||||
+ [_id] = { .cgbit = UINT32_MAX, .clksrc = (_src) }
|
||||
+
|
||||
+static const struct mt7621_clk_map mt7621_clk_mappings[] = {
|
||||
+ CLK_MAP_SRC(MT7621_CLK_XTAL, CLK_SRC_XTAL),
|
||||
+ CLK_MAP_SRC(MT7621_CLK_CPU, CLK_SRC_CPU),
|
||||
+ CLK_MAP_SRC(MT7621_CLK_BUS, CLK_SRC_SYS),
|
||||
+ CLK_MAP_SRC(MT7621_CLK_50M, CLK_SRC_PERI),
|
||||
+ CLK_MAP_SRC(MT7621_CLK_125M, CLK_SRC_125M),
|
||||
+ CLK_MAP_SRC(MT7621_CLK_150M, CLK_SRC_150M),
|
||||
+ CLK_MAP_SRC(MT7621_CLK_250M, CLK_SRC_250M),
|
||||
+ CLK_MAP_SRC(MT7621_CLK_270M, CLK_SRC_270M),
|
||||
+
|
||||
+ CLK_MAP(MT7621_CLK_HSDMA, 5, CLK_SRC_150M),
|
||||
+ CLK_MAP(MT7621_CLK_FE, 6, CLK_SRC_250M),
|
||||
+ CLK_MAP(MT7621_CLK_SP_DIVTX, 7, CLK_SRC_270M),
|
||||
+ CLK_MAP(MT7621_CLK_TIMER, 8, CLK_SRC_PERI),
|
||||
+ CLK_MAP(MT7621_CLK_PCM, 11, CLK_SRC_270M),
|
||||
+ CLK_MAP(MT7621_CLK_PIO, 13, CLK_SRC_PERI),
|
||||
+ CLK_MAP(MT7621_CLK_GDMA, 14, CLK_SRC_SYS),
|
||||
+ CLK_MAP(MT7621_CLK_NAND, 15, CLK_SRC_125M),
|
||||
+ CLK_MAP(MT7621_CLK_I2C, 16, CLK_SRC_PERI),
|
||||
+ CLK_MAP(MT7621_CLK_I2S, 17, CLK_SRC_270M),
|
||||
+ CLK_MAP(MT7621_CLK_SPI, 18, CLK_SRC_SYS),
|
||||
+ CLK_MAP(MT7621_CLK_UART1, 19, CLK_SRC_PERI),
|
||||
+ CLK_MAP(MT7621_CLK_UART2, 20, CLK_SRC_PERI),
|
||||
+ CLK_MAP(MT7621_CLK_UART3, 21, CLK_SRC_PERI),
|
||||
+ CLK_MAP(MT7621_CLK_ETH, 23, CLK_SRC_PERI),
|
||||
+ CLK_MAP(MT7621_CLK_PCIE0, 24, CLK_SRC_125M),
|
||||
+ CLK_MAP(MT7621_CLK_PCIE1, 25, CLK_SRC_125M),
|
||||
+ CLK_MAP(MT7621_CLK_PCIE2, 26, CLK_SRC_125M),
|
||||
+ CLK_MAP(MT7621_CLK_CRYPTO, 29, CLK_SRC_250M),
|
||||
+ CLK_MAP(MT7621_CLK_SHXC, 30, CLK_SRC_PERI),
|
||||
+
|
||||
+ CLK_MAP_SRC(MT7621_CLK_MAX, __CLK_SRC_MAX),
|
||||
+
|
||||
+ CLK_MAP_SRC(MT7621_CLK_DDR, CLK_SRC_DDR),
|
||||
+};
|
||||
+
|
||||
+static ulong mt7621_clk_get_rate(struct clk *clk)
|
||||
+{
|
||||
+ struct mt7621_clk_priv *priv = dev_get_priv(clk->dev);
|
||||
+ u32 val;
|
||||
+
|
||||
+ switch (mt7621_clk_mappings[clk->id].clksrc) {
|
||||
+ case CLK_SRC_CPU:
|
||||
+ return priv->cpu_clk;
|
||||
+ case CLK_SRC_DDR:
|
||||
+ return priv->ddr_clk;
|
||||
+ case CLK_SRC_SYS:
|
||||
+ return priv->sys_clk;
|
||||
+ case CLK_SRC_XTAL:
|
||||
+ return priv->xtal_clk;
|
||||
+ case CLK_SRC_PERI:
|
||||
+ val = readl(priv->sysc_base + CLKCFG0_REG);
|
||||
+ if (val & PERI_CLK_SEL)
|
||||
+ return priv->xtal_clk;
|
||||
+ else
|
||||
+ return GMPLL_CLK / 10;
|
||||
+ case CLK_SRC_125M:
|
||||
+ return 125000000;
|
||||
+ case CLK_SRC_150M:
|
||||
+ return 150000000;
|
||||
+ case CLK_SRC_250M:
|
||||
+ return 250000000;
|
||||
+ case CLK_SRC_270M:
|
||||
+ return 270000000;
|
||||
+ default:
|
||||
+ return 0;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static int mt7621_clk_enable(struct clk *clk)
|
||||
+{
|
||||
+ struct mt7621_clk_priv *priv = dev_get_priv(clk->dev);
|
||||
+ u32 cgbit;
|
||||
+
|
||||
+ cgbit = mt7621_clk_mappings[clk->id].cgbit;
|
||||
+ if (cgbit == UINT32_MAX)
|
||||
+ return -ENOSYS;
|
||||
+
|
||||
+ setbits_32(priv->sysc_base + CLKCFG1_REG, BIT(cgbit));
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int mt7621_clk_disable(struct clk *clk)
|
||||
+{
|
||||
+ struct mt7621_clk_priv *priv = dev_get_priv(clk->dev);
|
||||
+ u32 cgbit;
|
||||
+
|
||||
+ cgbit = mt7621_clk_mappings[clk->id].cgbit;
|
||||
+ if (cgbit == UINT32_MAX)
|
||||
+ return -ENOSYS;
|
||||
+
|
||||
+ clrbits_32(priv->sysc_base + CLKCFG1_REG, BIT(cgbit));
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int mt7621_clk_request(struct clk *clk)
|
||||
+{
|
||||
+ if (clk->id >= ARRAY_SIZE(mt7621_clk_mappings))
|
||||
+ return -EINVAL;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+const struct clk_ops mt7621_clk_ops = {
|
||||
+ .request = mt7621_clk_request,
|
||||
+ .enable = mt7621_clk_enable,
|
||||
+ .disable = mt7621_clk_disable,
|
||||
+ .get_rate = mt7621_clk_get_rate,
|
||||
+};
|
||||
+
|
||||
+static void mt7621_get_clocks(struct mt7621_clk_priv *priv, struct regmap *memc)
|
||||
+{
|
||||
+ u32 bs, xtal_sel, clkcfg0, cur_clk, mempll, dividx, fb;
|
||||
+ u32 xtal_clk, xtal_div, ffiv, ffrac, cpu_clk, ddr_clk;
|
||||
+ static const u32 xtal_div_tbl[] = {0, 1, 2, 2};
|
||||
+
|
||||
+ bs = readl(priv->sysc_base + SYSCFG0_REG);
|
||||
+ clkcfg0 = readl(priv->sysc_base + CLKCFG0_REG);
|
||||
+ cur_clk = readl(priv->sysc_base + CUR_CLK_STS_REG);
|
||||
+
|
||||
+ xtal_sel = FIELD_GET(XTAL_MODE_SEL, bs);
|
||||
+
|
||||
+ if (xtal_sel <= 2)
|
||||
+ xtal_clk = 20 * 1000 * 1000;
|
||||
+ else if (xtal_sel <= 5)
|
||||
+ xtal_clk = 40 * 1000 * 1000;
|
||||
+ else
|
||||
+ xtal_clk = 25 * 1000 * 1000;
|
||||
+
|
||||
+ switch (FIELD_GET(CPU_CLK_SEL, clkcfg0)) {
|
||||
+ case 0:
|
||||
+ cpu_clk = GMPLL_CLK;
|
||||
+ break;
|
||||
+ case 1:
|
||||
+ regmap_read(memc, MEMPLL18_REG, &mempll);
|
||||
+ dividx = FIELD_GET(RG_MEPL_PREDIV, mempll);
|
||||
+ fb = FIELD_GET(RG_MEPL_FBDIV, mempll);
|
||||
+ xtal_div = 1 << xtal_div_tbl[dividx];
|
||||
+ cpu_clk = (fb + 1) * xtal_clk / xtal_div;
|
||||
+ break;
|
||||
+ default:
|
||||
+ cpu_clk = xtal_clk;
|
||||
+ }
|
||||
+
|
||||
+ ffiv = FIELD_GET(CUR_CPU_FDIV, cur_clk);
|
||||
+ ffrac = FIELD_GET(CUR_CPU_FFRAC, cur_clk);
|
||||
+ cpu_clk = cpu_clk / ffiv * ffrac;
|
||||
+
|
||||
+ regmap_read(memc, MEMPLL6_REG, &mempll);
|
||||
+ dividx = FIELD_GET(RG_MEPL_PREDIV, mempll);
|
||||
+ fb = FIELD_GET(RG_MEPL_FBDIV, mempll);
|
||||
+ xtal_div = 1 << xtal_div_tbl[dividx];
|
||||
+ ddr_clk = fb * xtal_clk / xtal_div;
|
||||
+
|
||||
+ regmap_read(memc, MEMPLL1_REG, &bs);
|
||||
+ if (!FIELD_GET(RG_MEPL_DIV2_SEL, bs))
|
||||
+ ddr_clk *= 2;
|
||||
+
|
||||
+ priv->cpu_clk = cpu_clk;
|
||||
+ priv->sys_clk = cpu_clk / 4;
|
||||
+ priv->ddr_clk = ddr_clk;
|
||||
+ priv->xtal_clk = xtal_clk;
|
||||
+}
|
||||
+
|
||||
+static int mt7621_clk_probe(struct udevice *dev)
|
||||
+{
|
||||
+ struct mt7621_clk_priv *priv = dev_get_priv(dev);
|
||||
+ struct ofnode_phandle_args args;
|
||||
+ struct udevice *pdev;
|
||||
+ struct regmap *memc;
|
||||
+ int ret;
|
||||
+
|
||||
+ pdev = dev_get_parent(dev);
|
||||
+ if (!pdev)
|
||||
+ return -ENODEV;
|
||||
+
|
||||
+ priv->sysc_base = dev_remap_addr(pdev);
|
||||
+ if (!priv->sysc_base)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ /* get corresponding memc phandle */
|
||||
+ ret = dev_read_phandle_with_args(dev, "mediatek,memc", NULL, 0, 0,
|
||||
+ &args);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+ memc = syscon_node_to_regmap(args.node);
|
||||
+ if (IS_ERR(memc))
|
||||
+ return PTR_ERR(memc);
|
||||
+
|
||||
+ mt7621_get_clocks(priv, memc);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static const struct udevice_id mt7621_clk_ids[] = {
|
||||
+ { .compatible = "mediatek,mt7621-clk" },
|
||||
+ { }
|
||||
+};
|
||||
+
|
||||
+U_BOOT_DRIVER(mt7621_clk) = {
|
||||
+ .name = "mt7621-clk",
|
||||
+ .id = UCLASS_CLK,
|
||||
+ .of_match = mt7621_clk_ids,
|
||||
+ .probe = mt7621_clk_probe,
|
||||
+ .priv_auto = sizeof(struct mt7621_clk_priv),
|
||||
+ .ops = &mt7621_clk_ops,
|
||||
+};
|
||||
--- /dev/null
|
||||
+++ b/include/dt-bindings/clock/mt7621-clk.h
|
||||
@@ -0,0 +1,46 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0 */
|
||||
+/*
|
||||
+ * Copyright (C) 2022 MediaTek Inc. All rights reserved.
|
||||
+ *
|
||||
+ * Author: Weijie Gao <weijie.gao@mediatek.com>
|
||||
+ */
|
||||
+
|
||||
+#ifndef _DT_BINDINGS_MT7621_CLK_H_
|
||||
+#define _DT_BINDINGS_MT7621_CLK_H_
|
||||
+
|
||||
+#define MT7621_CLK_XTAL 0
|
||||
+#define MT7621_CLK_CPU 1
|
||||
+#define MT7621_CLK_BUS 2
|
||||
+#define MT7621_CLK_50M 3
|
||||
+#define MT7621_CLK_125M 4
|
||||
+#define MT7621_CLK_150M 5
|
||||
+#define MT7621_CLK_250M 6
|
||||
+#define MT7621_CLK_270M 7
|
||||
+
|
||||
+#define MT7621_CLK_HSDMA 8
|
||||
+#define MT7621_CLK_FE 9
|
||||
+#define MT7621_CLK_SP_DIVTX 10
|
||||
+#define MT7621_CLK_TIMER 11
|
||||
+#define MT7621_CLK_PCM 12
|
||||
+#define MT7621_CLK_PIO 13
|
||||
+#define MT7621_CLK_GDMA 14
|
||||
+#define MT7621_CLK_NAND 15
|
||||
+#define MT7621_CLK_I2C 16
|
||||
+#define MT7621_CLK_I2S 17
|
||||
+#define MT7621_CLK_SPI 18
|
||||
+#define MT7621_CLK_UART1 19
|
||||
+#define MT7621_CLK_UART2 20
|
||||
+#define MT7621_CLK_UART3 21
|
||||
+#define MT7621_CLK_ETH 22
|
||||
+#define MT7621_CLK_PCIE0 23
|
||||
+#define MT7621_CLK_PCIE1 24
|
||||
+#define MT7621_CLK_PCIE2 25
|
||||
+#define MT7621_CLK_CRYPTO 26
|
||||
+#define MT7621_CLK_SHXC 27
|
||||
+
|
||||
+#define MT7621_CLK_MAX 28
|
||||
+
|
||||
+/* for u-boot only */
|
||||
+#define MT7621_CLK_DDR 29
|
||||
+
|
||||
+#endif /* _DT_BINDINGS_MT7621_CLK_H_ */
|
||||
@ -1,56 +0,0 @@
|
||||
From 03035a6566300808c8845799b2f9ceca471aa61a Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:22:41 +0800
|
||||
Subject: [PATCH 09/25] reset: mtmips: add reset controller support for
|
||||
MediaTek MT7621 SoC
|
||||
|
||||
This patch adds reset controller bits definition header file for MediaTek
|
||||
MT7621 SoC
|
||||
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
include/dt-bindings/reset/mt7621-reset.h | 38 ++++++++++++++++++++++++
|
||||
1 file changed, 38 insertions(+)
|
||||
create mode 100644 include/dt-bindings/reset/mt7621-reset.h
|
||||
|
||||
--- /dev/null
|
||||
+++ b/include/dt-bindings/reset/mt7621-reset.h
|
||||
@@ -0,0 +1,38 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0 */
|
||||
+/*
|
||||
+ * Copyright (C) 2022 MediaTek Inc. All rights reserved.
|
||||
+ *
|
||||
+ * Author: Weijie Gao <weijie.gao@mediatek.com>
|
||||
+ */
|
||||
+
|
||||
+#ifndef _DT_BINDINGS_MT7621_RESET_H_
|
||||
+#define _DT_BINDINGS_MT7621_RESET_H_
|
||||
+
|
||||
+#define RST_PPE 31
|
||||
+#define RST_SDXC 30
|
||||
+#define RST_CRYPTO 29
|
||||
+#define RST_AUX_STCK 28
|
||||
+#define RST_PCIE2 26
|
||||
+#define RST_PCIE1 25
|
||||
+#define RST_PCIE0 24
|
||||
+#define RST_GMAC 23
|
||||
+#define RST_UART3 21
|
||||
+#define RST_UART2 20
|
||||
+#define RST_UART1 19
|
||||
+#define RST_SPI 18
|
||||
+#define RST_I2S 17
|
||||
+#define RST_I2C 16
|
||||
+#define RST_NFI 15
|
||||
+#define RST_GDMA 14
|
||||
+#define RST_PIO 13
|
||||
+#define RST_PCM 11
|
||||
+#define RST_MC 10
|
||||
+#define RST_INTC 9
|
||||
+#define RST_TIMER 8
|
||||
+#define RST_SPDIFTX 7
|
||||
+#define RST_FE 6
|
||||
+#define RST_HSDMA 5
|
||||
+#define RST_MCM 2
|
||||
+#define RST_SYS 0
|
||||
+
|
||||
+#endif /* _DT_BINDINGS_MT7621_RESET_H_ */
|
||||
@ -1,395 +0,0 @@
|
||||
From 3cf9e2daca330a0ba89d3793ceb09037c788db46 Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:22:49 +0800
|
||||
Subject: [PATCH 10/25] pinctrl: mtmips: add support for MediaTek MT7621 SoC
|
||||
|
||||
This patch adds pinctrl support for MediaTek MT7621 SoC.
|
||||
The MT7621 SoC supports pinconf, but it is not the same as mt7628.
|
||||
|
||||
Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
drivers/pinctrl/mtmips/Kconfig | 9 +
|
||||
drivers/pinctrl/mtmips/Makefile | 1 +
|
||||
drivers/pinctrl/mtmips/pinctrl-mt7621.c | 306 ++++++++++++++++++
|
||||
.../pinctrl/mtmips/pinctrl-mtmips-common.c | 4 +-
|
||||
.../pinctrl/mtmips/pinctrl-mtmips-common.h | 12 +
|
||||
5 files changed, 330 insertions(+), 2 deletions(-)
|
||||
create mode 100644 drivers/pinctrl/mtmips/pinctrl-mt7621.c
|
||||
|
||||
--- a/drivers/pinctrl/mtmips/Kconfig
|
||||
+++ b/drivers/pinctrl/mtmips/Kconfig
|
||||
@@ -12,6 +12,15 @@ config PINCTRL_MT7620
|
||||
The driver is controlled by a device tree node which contains
|
||||
the pin mux functions for each available pin groups.
|
||||
|
||||
+config PINCTRL_MT7621
|
||||
+ bool "MediaTek MT7621 pin control driver"
|
||||
+ select PINCTRL_MTMIPS
|
||||
+ depends on SOC_MT7621 && PINCTRL_GENERIC
|
||||
+ help
|
||||
+ Support pin multiplexing control on MediaTek MT7621.
|
||||
+ The driver is controlled by a device tree node which contains
|
||||
+ the pin mux functions for each available pin groups.
|
||||
+
|
||||
config PINCTRL_MT7628
|
||||
bool "MediaTek MT7628 pin control driver"
|
||||
select PINCTRL_MTMIPS
|
||||
--- a/drivers/pinctrl/mtmips/Makefile
|
||||
+++ b/drivers/pinctrl/mtmips/Makefile
|
||||
@@ -5,4 +5,5 @@ obj-$(CONFIG_PINCTRL_MTMIPS) += pinctrl-
|
||||
|
||||
# SoC Drivers
|
||||
obj-$(CONFIG_PINCTRL_MT7620) += pinctrl-mt7620.o
|
||||
+obj-$(CONFIG_PINCTRL_MT7621) += pinctrl-mt7621.o
|
||||
obj-$(CONFIG_PINCTRL_MT7628) += pinctrl-mt7628.o
|
||||
--- /dev/null
|
||||
+++ b/drivers/pinctrl/mtmips/pinctrl-mt7621.c
|
||||
@@ -0,0 +1,306 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0
|
||||
+/*
|
||||
+ * Copyright (C) 2022 MediaTek Inc. All rights reserved.
|
||||
+ *
|
||||
+ * Author: Weijie Gao <weijie.gao@mediatek.com>
|
||||
+ */
|
||||
+
|
||||
+#include <dm.h>
|
||||
+#include <dm/pinctrl.h>
|
||||
+#include <dm/device_compat.h>
|
||||
+#include <linux/bitops.h>
|
||||
+#include <linux/io.h>
|
||||
+
|
||||
+#include "pinctrl-mtmips-common.h"
|
||||
+
|
||||
+#define SYSC_MAP_SIZE 0x100
|
||||
+
|
||||
+#define PAD_UART1_GPIO0_OFS 0x00
|
||||
+#define PAD_UART3_I2C_OFS 0x04
|
||||
+#define PAD_UART2_JTAG_OFS 0x08
|
||||
+#define PAD_PERST_WDT_OFS 0x0c
|
||||
+#define PAD_RGMII2_MDIO_OFS 0x10
|
||||
+#define PAD_SDXC_SPI_OFS 0x14
|
||||
+#define GPIOMODE_OFS 0x18
|
||||
+#define PAD_BOPT_ESWINT_OFS 0x28
|
||||
+
|
||||
+#define ESWINT_SHIFT 20
|
||||
+#define SDXC_SHIFT 18
|
||||
+#define SPI_SHIFT 16
|
||||
+#define RGMII2_SHIFT 15
|
||||
+#define RGMII1_SHIFT 14
|
||||
+#define MDIO_SHIFT 12
|
||||
+#define PERST_SHIFT 10
|
||||
+#define WDT_SHIFT 8
|
||||
+#define JTAG_SHIFT 7
|
||||
+#define UART2_SHIFT 5
|
||||
+#define UART3_SHIFT 3
|
||||
+#define I2C_SHIFT 2
|
||||
+#define UART1_SHIFT 1
|
||||
+#define GPIO0_SHIFT 0 /* Dummy */
|
||||
+
|
||||
+#define GM4_MASK 3
|
||||
+
|
||||
+#define E4_E2_M 0x03
|
||||
+#define E4_E2_S 4
|
||||
+#define PULL_UP BIT(3)
|
||||
+#define PULL_DOWN BIT(2)
|
||||
+#define SMT BIT(1)
|
||||
+#define SR BIT(0)
|
||||
+
|
||||
+struct mt7621_pinctrl_priv {
|
||||
+ struct mtmips_pinctrl_priv mp;
|
||||
+};
|
||||
+
|
||||
+#if CONFIG_IS_ENABLED(PINMUX)
|
||||
+static const struct mtmips_pmx_func esw_int_grp[] = {
|
||||
+ FUNC("gpio", 1),
|
||||
+ FUNC("esw int", 0),
|
||||
+};
|
||||
+
|
||||
+static const struct mtmips_pmx_func sdxc_grp[] = {
|
||||
+ FUNC("nand", 2),
|
||||
+ FUNC("gpio", 1),
|
||||
+ FUNC("sdxc", 0),
|
||||
+};
|
||||
+
|
||||
+static const struct mtmips_pmx_func spi_grp[] = {
|
||||
+ FUNC("nand", 2),
|
||||
+ FUNC("gpio", 1),
|
||||
+ FUNC("spi", 0),
|
||||
+};
|
||||
+
|
||||
+static const struct mtmips_pmx_func rgmii2_grp[] = {
|
||||
+ FUNC("gpio", 1),
|
||||
+ FUNC("rgmii", 0),
|
||||
+};
|
||||
+
|
||||
+static const struct mtmips_pmx_func rgmii1_grp[] = {
|
||||
+ FUNC("gpio", 1),
|
||||
+ FUNC("rgmii", 0),
|
||||
+};
|
||||
+
|
||||
+static const struct mtmips_pmx_func mdio_grp[] = {
|
||||
+ FUNC("gpio", 1),
|
||||
+ FUNC("mdio", 0),
|
||||
+};
|
||||
+
|
||||
+static const struct mtmips_pmx_func perst_grp[] = {
|
||||
+ FUNC("refclk", 2),
|
||||
+ FUNC("gpio", 1),
|
||||
+ FUNC("pcie reset", 0),
|
||||
+};
|
||||
+
|
||||
+static const struct mtmips_pmx_func wdt_grp[] = {
|
||||
+ FUNC("refclk", 2),
|
||||
+ FUNC("gpio", 1),
|
||||
+ FUNC("wdt rst", 0),
|
||||
+};
|
||||
+
|
||||
+static const struct mtmips_pmx_func jtag_grp[] = {
|
||||
+ FUNC("gpio", 1),
|
||||
+ FUNC("jtag", 0),
|
||||
+};
|
||||
+
|
||||
+static const struct mtmips_pmx_func uart2_grp[] = {
|
||||
+ FUNC("spdif", 3),
|
||||
+ FUNC("pcm", 2),
|
||||
+ FUNC("gpio", 1),
|
||||
+ FUNC("uart", 0),
|
||||
+};
|
||||
+
|
||||
+static const struct mtmips_pmx_func uart3_grp[] = {
|
||||
+ FUNC("spdif", 3),
|
||||
+ FUNC("i2s", 2),
|
||||
+ FUNC("gpio", 1),
|
||||
+ FUNC("uart", 0),
|
||||
+};
|
||||
+
|
||||
+static const struct mtmips_pmx_func i2c_grp[] = {
|
||||
+ FUNC("gpio", 1),
|
||||
+ FUNC("i2c", 0),
|
||||
+};
|
||||
+
|
||||
+static const struct mtmips_pmx_func uart1_grp[] = {
|
||||
+ FUNC("gpio", 1),
|
||||
+ FUNC("uart", 0),
|
||||
+};
|
||||
+
|
||||
+static const struct mtmips_pmx_func gpio0_grp[] = {
|
||||
+ FUNC("gpio", 0),
|
||||
+};
|
||||
+
|
||||
+static const struct mtmips_pmx_group mt7621_pmx_data[] = {
|
||||
+ GRP_PCONF("esw int", esw_int_grp, GPIOMODE_OFS, ESWINT_SHIFT, 1,
|
||||
+ PAD_BOPT_ESWINT_OFS, 0),
|
||||
+ GRP_PCONF("sdxc", sdxc_grp, GPIOMODE_OFS, SDXC_SHIFT, GM4_MASK,
|
||||
+ PAD_SDXC_SPI_OFS, 16),
|
||||
+ GRP_PCONF("spi", spi_grp, GPIOMODE_OFS, SPI_SHIFT, GM4_MASK,
|
||||
+ PAD_SDXC_SPI_OFS, 0),
|
||||
+ GRP_PCONF("rgmii2", rgmii2_grp, GPIOMODE_OFS, RGMII2_SHIFT, 1,
|
||||
+ PAD_RGMII2_MDIO_OFS, 16),
|
||||
+ GRP("rgmii1", rgmii1_grp, GPIOMODE_OFS, RGMII1_SHIFT, 1),
|
||||
+ GRP_PCONF("mdio", mdio_grp, GPIOMODE_OFS, MDIO_SHIFT, GM4_MASK,
|
||||
+ PAD_RGMII2_MDIO_OFS, 0),
|
||||
+ GRP_PCONF("pcie reset", perst_grp, GPIOMODE_OFS, PERST_SHIFT, GM4_MASK,
|
||||
+ PAD_PERST_WDT_OFS, 16),
|
||||
+ GRP_PCONF("wdt", wdt_grp, GPIOMODE_OFS, WDT_SHIFT, GM4_MASK,
|
||||
+ PAD_PERST_WDT_OFS, 0),
|
||||
+ GRP_PCONF("jtag", jtag_grp, GPIOMODE_OFS, JTAG_SHIFT, 1,
|
||||
+ PAD_UART2_JTAG_OFS, 16),
|
||||
+ GRP_PCONF("uart2", uart2_grp, GPIOMODE_OFS, UART2_SHIFT, GM4_MASK,
|
||||
+ PAD_UART2_JTAG_OFS, 0),
|
||||
+ GRP_PCONF("uart3", uart3_grp, GPIOMODE_OFS, UART3_SHIFT, GM4_MASK,
|
||||
+ PAD_UART3_I2C_OFS, 16),
|
||||
+ GRP_PCONF("i2c", i2c_grp, GPIOMODE_OFS, I2C_SHIFT, 1,
|
||||
+ PAD_UART3_I2C_OFS, 0),
|
||||
+ GRP_PCONF("uart1", uart1_grp, GPIOMODE_OFS, UART1_SHIFT, 1,
|
||||
+ PAD_UART1_GPIO0_OFS, 16),
|
||||
+ GRP_PCONF("gpio0", gpio0_grp, GPIOMODE_OFS, GPIO0_SHIFT, 1,
|
||||
+ PAD_UART1_GPIO0_OFS, 0),
|
||||
+};
|
||||
+
|
||||
+static int mt7621_get_groups_count(struct udevice *dev)
|
||||
+{
|
||||
+ return ARRAY_SIZE(mt7621_pmx_data);
|
||||
+}
|
||||
+
|
||||
+static const char *mt7621_get_group_name(struct udevice *dev,
|
||||
+ unsigned int selector)
|
||||
+{
|
||||
+ return mt7621_pmx_data[selector].name;
|
||||
+}
|
||||
+#endif /* CONFIG_IS_ENABLED(PINMUX) */
|
||||
+
|
||||
+#if CONFIG_IS_ENABLED(PINCONF)
|
||||
+static const struct pinconf_param mt7621_conf_params[] = {
|
||||
+ { "bias-disable", PIN_CONFIG_BIAS_DISABLE, 0 },
|
||||
+ { "bias-pull-up", PIN_CONFIG_BIAS_PULL_UP, 1 },
|
||||
+ { "bias-pull-down", PIN_CONFIG_BIAS_PULL_DOWN, 1 },
|
||||
+ { "input-schmitt-enable", PIN_CONFIG_INPUT_SCHMITT_ENABLE, 1 },
|
||||
+ { "input-schmitt-disable", PIN_CONFIG_INPUT_SCHMITT_ENABLE, 0 },
|
||||
+ { "drive-strength", PIN_CONFIG_DRIVE_STRENGTH, 0 },
|
||||
+ { "slew-rate", PIN_CONFIG_SLEW_RATE, 0 },
|
||||
+};
|
||||
+
|
||||
+static const u32 mt7621_pconf_drv_strength_tbl[] = {2, 4, 6, 8};
|
||||
+
|
||||
+static int mt7621_pinconf_group_set(struct udevice *dev,
|
||||
+ unsigned int group_selector,
|
||||
+ unsigned int param, unsigned int arg)
|
||||
+{
|
||||
+ struct mt7621_pinctrl_priv *priv = dev_get_priv(dev);
|
||||
+ const struct mtmips_pmx_group *grp = &mt7621_pmx_data[group_selector];
|
||||
+ u32 clr = 0, set = 0;
|
||||
+ int i;
|
||||
+
|
||||
+ if (!grp->pconf_avail)
|
||||
+ return 0;
|
||||
+
|
||||
+ switch (param) {
|
||||
+ case PIN_CONFIG_BIAS_DISABLE:
|
||||
+ clr = PULL_UP | PULL_DOWN;
|
||||
+ break;
|
||||
+
|
||||
+ case PIN_CONFIG_BIAS_PULL_UP:
|
||||
+ clr = PULL_DOWN;
|
||||
+ set = PULL_UP;
|
||||
+ break;
|
||||
+
|
||||
+ case PIN_CONFIG_BIAS_PULL_DOWN:
|
||||
+ clr = PULL_UP;
|
||||
+ set = PULL_DOWN;
|
||||
+ break;
|
||||
+
|
||||
+ case PIN_CONFIG_INPUT_SCHMITT_ENABLE:
|
||||
+ if (arg)
|
||||
+ set = SMT;
|
||||
+ else
|
||||
+ clr = SMT;
|
||||
+ break;
|
||||
+
|
||||
+ case PIN_CONFIG_DRIVE_STRENGTH:
|
||||
+ for (i = 0; i < ARRAY_SIZE(mt7621_pconf_drv_strength_tbl); i++)
|
||||
+ if (mt7621_pconf_drv_strength_tbl[i] == arg)
|
||||
+ break;
|
||||
+
|
||||
+ if (i >= ARRAY_SIZE(mt7621_pconf_drv_strength_tbl))
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ clr = E4_E2_M << E4_E2_S;
|
||||
+ set = i << E4_E2_S;
|
||||
+ break;
|
||||
+
|
||||
+ case PIN_CONFIG_SLEW_RATE:
|
||||
+ if (arg)
|
||||
+ set = SR;
|
||||
+ else
|
||||
+ clr = SR;
|
||||
+ break;
|
||||
+
|
||||
+ default:
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
+ mtmips_pinctrl_reg_set(&priv->mp, grp->pconf_reg, grp->pconf_shift,
|
||||
+ clr, set);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
+static int mt7621_pinctrl_probe(struct udevice *dev)
|
||||
+{
|
||||
+ struct mt7621_pinctrl_priv *priv = dev_get_priv(dev);
|
||||
+ int ret = 0;
|
||||
+
|
||||
+#if CONFIG_IS_ENABLED(PINMUX)
|
||||
+ ret = mtmips_pinctrl_probe(&priv->mp, ARRAY_SIZE(mt7621_pmx_data),
|
||||
+ mt7621_pmx_data);
|
||||
+#endif /* CONFIG_IS_ENABLED(PINMUX) */
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static int mt7621_pinctrl_of_to_plat(struct udevice *dev)
|
||||
+{
|
||||
+ struct mt7621_pinctrl_priv *priv = dev_get_priv(dev);
|
||||
+
|
||||
+ priv->mp.base = (void __iomem *)dev_remap_addr_index(dev, 0);
|
||||
+
|
||||
+ if (!priv->mp.base)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static const struct pinctrl_ops mt7621_pinctrl_ops = {
|
||||
+#if CONFIG_IS_ENABLED(PINMUX)
|
||||
+ .get_groups_count = mt7621_get_groups_count,
|
||||
+ .get_group_name = mt7621_get_group_name,
|
||||
+ .get_functions_count = mtmips_get_functions_count,
|
||||
+ .get_function_name = mtmips_get_function_name,
|
||||
+ .pinmux_group_set = mtmips_pinmux_group_set,
|
||||
+#endif /* CONFIG_IS_ENABLED(PINMUX) */
|
||||
+#if CONFIG_IS_ENABLED(PINCONF)
|
||||
+ .pinconf_num_params = ARRAY_SIZE(mt7621_conf_params),
|
||||
+ .pinconf_params = mt7621_conf_params,
|
||||
+ .pinconf_group_set = mt7621_pinconf_group_set,
|
||||
+#endif /* CONFIG_IS_ENABLED(PINCONF) */
|
||||
+ .set_state = pinctrl_generic_set_state,
|
||||
+};
|
||||
+
|
||||
+static const struct udevice_id mt7621_pinctrl_ids[] = {
|
||||
+ { .compatible = "mediatek,mt7621-pinctrl" },
|
||||
+ { }
|
||||
+};
|
||||
+
|
||||
+U_BOOT_DRIVER(mt7621_pinctrl) = {
|
||||
+ .name = "mt7621-pinctrl",
|
||||
+ .id = UCLASS_PINCTRL,
|
||||
+ .of_match = mt7621_pinctrl_ids,
|
||||
+ .of_to_plat = mt7621_pinctrl_of_to_plat,
|
||||
+ .ops = &mt7621_pinctrl_ops,
|
||||
+ .probe = mt7621_pinctrl_probe,
|
||||
+ .priv_auto = sizeof(struct mt7621_pinctrl_priv),
|
||||
+};
|
||||
--- a/drivers/pinctrl/mtmips/pinctrl-mtmips-common.c
|
||||
+++ b/drivers/pinctrl/mtmips/pinctrl-mtmips-common.c
|
||||
@@ -13,8 +13,8 @@
|
||||
|
||||
#include "pinctrl-mtmips-common.h"
|
||||
|
||||
-static void mtmips_pinctrl_reg_set(struct mtmips_pinctrl_priv *priv,
|
||||
- u32 reg, u32 shift, u32 mask, u32 value)
|
||||
+void mtmips_pinctrl_reg_set(struct mtmips_pinctrl_priv *priv,
|
||||
+ u32 reg, u32 shift, u32 mask, u32 value)
|
||||
{
|
||||
u32 val;
|
||||
|
||||
--- a/drivers/pinctrl/mtmips/pinctrl-mtmips-common.h
|
||||
+++ b/drivers/pinctrl/mtmips/pinctrl-mtmips-common.h
|
||||
@@ -22,6 +22,10 @@ struct mtmips_pmx_group {
|
||||
u32 shift;
|
||||
char mask;
|
||||
|
||||
+ int pconf_avail;
|
||||
+ u32 pconf_reg;
|
||||
+ u32 pconf_shift;
|
||||
+
|
||||
int nfuncs;
|
||||
const struct mtmips_pmx_func *funcs;
|
||||
};
|
||||
@@ -42,6 +46,14 @@ struct mtmips_pinctrl_priv {
|
||||
{ .name = (_name), .reg = (_reg), .shift = (_shift), .mask = (_mask), \
|
||||
.funcs = (_funcs), .nfuncs = ARRAY_SIZE(_funcs) }
|
||||
|
||||
+#define GRP_PCONF(_name, _funcs, _reg, _shift, _mask, _pconf_reg, _pconf_shift) \
|
||||
+ { .name = (_name), .reg = (_reg), .shift = (_shift), .mask = (_mask), \
|
||||
+ .funcs = (_funcs), .nfuncs = ARRAY_SIZE(_funcs), .pconf_avail = 1, \
|
||||
+ .pconf_reg = (_pconf_reg), .pconf_shift = (_pconf_shift) }
|
||||
+
|
||||
+void mtmips_pinctrl_reg_set(struct mtmips_pinctrl_priv *priv,
|
||||
+ u32 reg, u32 shift, u32 mask, u32 value);
|
||||
+
|
||||
int mtmips_get_functions_count(struct udevice *dev);
|
||||
const char *mtmips_get_function_name(struct udevice *dev,
|
||||
unsigned int selector);
|
||||
@ -1,23 +0,0 @@
|
||||
From ab59bb14a0efd40c12a967f73bd08ba2f27da3be Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:22:56 +0800
|
||||
Subject: [PATCH 11/25] usb: xhci-mtk: add support for MediaTek MT7621 SoC
|
||||
|
||||
This patch makes xhci-mtk driver available for MediaTek MT7621 SoC
|
||||
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
drivers/usb/host/Kconfig | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/usb/host/Kconfig
|
||||
+++ b/drivers/usb/host/Kconfig
|
||||
@@ -34,7 +34,7 @@ config USB_XHCI_DWC3_OF_SIMPLE
|
||||
|
||||
config USB_XHCI_MTK
|
||||
bool "Support for MediaTek on-chip xHCI USB controller"
|
||||
- depends on ARCH_MEDIATEK
|
||||
+ depends on ARCH_MEDIATEK || SOC_MT7621
|
||||
help
|
||||
Enables support for the on-chip xHCI controller on MediaTek SoCs.
|
||||
|
||||
@ -1,23 +0,0 @@
|
||||
From 23c19fa476929b6e94cc7f1a55f5ed4d3ab03934 Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:23:01 +0800
|
||||
Subject: [PATCH 12/25] phy: mtk-tphy: add support for MediaTek MT7621 SoC
|
||||
|
||||
This patch makes mtk-tphy driver available for MediaTek MT7621 SoC
|
||||
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
drivers/phy/Kconfig | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/phy/Kconfig
|
||||
+++ b/drivers/phy/Kconfig
|
||||
@@ -266,7 +266,7 @@ config MT76X8_USB_PHY
|
||||
config PHY_MTK_TPHY
|
||||
bool "MediaTek T-PHY Driver"
|
||||
depends on PHY
|
||||
- depends on ARCH_MEDIATEK
|
||||
+ depends on ARCH_MEDIATEK || SOC_MT7621
|
||||
help
|
||||
MediaTek T-PHY driver supports usb2.0, usb3.0 ports, PCIe and
|
||||
SATA, and meanwhile supports two version T-PHY which have
|
||||
@ -1,23 +0,0 @@
|
||||
From 34b623ccfd135e846b8464729a8b0e8df4b77a66 Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:23:08 +0800
|
||||
Subject: [PATCH 13/25] spi: add support for MediaTek MT7621 SoC
|
||||
|
||||
This patch makes mt7621_spi driver available for MediaTek MT7621 SoC
|
||||
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
drivers/spi/Kconfig | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/spi/Kconfig
|
||||
+++ b/drivers/spi/Kconfig
|
||||
@@ -240,7 +240,7 @@ config MT7620_SPI
|
||||
|
||||
config MT7621_SPI
|
||||
bool "MediaTek MT7621 SPI driver"
|
||||
- depends on SOC_MT7628
|
||||
+ depends on SOC_MT7621 || SOC_MT7628
|
||||
help
|
||||
Enable the MT7621 SPI driver. This driver can be used to access
|
||||
the SPI NOR flash on platforms embedding this Ralink / MediaTek
|
||||
@ -1,24 +0,0 @@
|
||||
From f265423a441a3bcb51e25238544adb69f74becc7 Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:23:14 +0800
|
||||
Subject: [PATCH 14/25] gpio: add support for MediaTek MT7621 SoC
|
||||
|
||||
This patch makes mt7621_gpio driver available for MediaTek MT7621 SoC
|
||||
|
||||
Reviewed-by: Stefan Roese <sr@denx.de>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
drivers/gpio/Kconfig | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/gpio/Kconfig
|
||||
+++ b/drivers/gpio/Kconfig
|
||||
@@ -553,7 +553,7 @@ config MT7620_GPIO
|
||||
|
||||
config MT7621_GPIO
|
||||
bool "MediaTek MT7621 GPIO driver"
|
||||
- depends on DM_GPIO && SOC_MT7628
|
||||
+ depends on DM_GPIO && (SOC_MT7621 || SOC_MT7628)
|
||||
default y
|
||||
help
|
||||
Say yes here to support MediaTek MT7621 compatible GPIOs.
|
||||
@ -1,24 +0,0 @@
|
||||
From eb1806fbf65c60b2ce462a0ebe39d9f9e652235a Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:23:19 +0800
|
||||
Subject: [PATCH 15/25] watchdog: add support for MediaTek MT7621 SoC
|
||||
|
||||
This patch makes mt7621_wdt driver available for MediaTek MT7621 SoC
|
||||
|
||||
Reviewed-by: Stefan Roese <sr@denx.de>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
drivers/watchdog/Kconfig | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/watchdog/Kconfig
|
||||
+++ b/drivers/watchdog/Kconfig
|
||||
@@ -191,7 +191,7 @@ config WDT_MT7620
|
||||
|
||||
config WDT_MT7621
|
||||
bool "MediaTek MT7621 watchdog timer support"
|
||||
- depends on WDT && SOC_MT7628
|
||||
+ depends on WDT && (SOC_MT7621 || SOC_MT7628)
|
||||
help
|
||||
Select this to enable Ralink / Mediatek watchdog timer,
|
||||
which can be found on some MediaTek chips.
|
||||
@ -1,42 +0,0 @@
|
||||
From 4339ec44313e85dd1f6d3d708dd2e594855ce25d Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:23:26 +0800
|
||||
Subject: [PATCH 16/25] mmc: mediatek: add support for MediaTek MT7621 SoC
|
||||
|
||||
This patch adds SDXC support for MediaTek MT7621 SoC
|
||||
|
||||
Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
drivers/mmc/mtk-sd.c | 13 +++++++++++++
|
||||
1 file changed, 13 insertions(+)
|
||||
|
||||
--- a/drivers/mmc/mtk-sd.c
|
||||
+++ b/drivers/mmc/mtk-sd.c
|
||||
@@ -1761,6 +1761,18 @@ static const struct msdc_compatible mt76
|
||||
.default_pad_dly = true,
|
||||
};
|
||||
|
||||
+static const struct msdc_compatible mt7621_compat = {
|
||||
+ .clk_div_bits = 8,
|
||||
+ .pad_tune0 = false,
|
||||
+ .async_fifo = true,
|
||||
+ .data_tune = true,
|
||||
+ .busy_check = false,
|
||||
+ .stop_clk_fix = false,
|
||||
+ .enhance_rx = false,
|
||||
+ .builtin_pad_ctrl = true,
|
||||
+ .default_pad_dly = true,
|
||||
+};
|
||||
+
|
||||
static const struct msdc_compatible mt7622_compat = {
|
||||
.clk_div_bits = 12,
|
||||
.pad_tune0 = true,
|
||||
@@ -1809,6 +1821,7 @@ static const struct msdc_compatible mt81
|
||||
|
||||
static const struct udevice_id msdc_ids[] = {
|
||||
{ .compatible = "mediatek,mt7620-mmc", .data = (ulong)&mt7620_compat },
|
||||
+ { .compatible = "mediatek,mt7621-mmc", .data = (ulong)&mt7621_compat },
|
||||
{ .compatible = "mediatek,mt7622-mmc", .data = (ulong)&mt7622_compat },
|
||||
{ .compatible = "mediatek,mt7623-mmc", .data = (ulong)&mt7623_compat },
|
||||
{ .compatible = "mediatek,mt8512-mmc", .data = (ulong)&mt8512_compat },
|
||||
@ -1,33 +0,0 @@
|
||||
From 391785398f61c85e6b55b1e9edbab94e3ba1b783 Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:23:31 +0800
|
||||
Subject: [PATCH 17/25] net: mediatek: remap iobase address
|
||||
|
||||
The iobase address from dts node is actually physical address. It's
|
||||
identical to the virtual address in ARM platform. This is ok because this
|
||||
driver was used only by ARM platforms (mt7622/mt7623 ...).
|
||||
|
||||
But now this driver will be used by mt7621 which is a MIPS SoC. For MIPS
|
||||
platform the physical address space is mapped to KSEG0 and KSEG1 and this
|
||||
makes the virtual address apparently not idential to its physical address.
|
||||
|
||||
To solve this issue, this patch replaces dev_read_addr with dev_remap_addr
|
||||
to get the remapped iobase address.
|
||||
|
||||
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
drivers/net/mtk_eth.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/mtk_eth.c
|
||||
+++ b/drivers/net/mtk_eth.c
|
||||
@@ -1419,7 +1419,7 @@ static int mtk_eth_of_to_plat(struct ude
|
||||
|
||||
priv->soc = dev_get_driver_data(dev);
|
||||
|
||||
- pdata->iobase = dev_read_addr(dev);
|
||||
+ pdata->iobase = (phys_addr_t)dev_remap_addr(dev);
|
||||
|
||||
/* get corresponding ethsys phandle */
|
||||
ret = dev_read_phandle_with_args(dev, "mediatek,ethsys", NULL, 0, 0,
|
||||
@ -1,67 +0,0 @@
|
||||
From 955cc76d8074df943d59d559895007f91de8eed5 Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:23:37 +0800
|
||||
Subject: [PATCH 18/25] net: mediatek: use regmap api to modify ethsys
|
||||
registers
|
||||
|
||||
The address returned by regmap_get_range() is not remapped. Directly r/w
|
||||
to this address is ok for ARM platforms since it's idential to the virtual
|
||||
address.
|
||||
|
||||
But for MIPS platform only virtual address should be used for access.
|
||||
To solve this issue, the regmap api regmap_read/regmap_write should be used
|
||||
since they will remap address before accessing.
|
||||
|
||||
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
drivers/net/mtk_eth.c | 22 +++++++++++-----------
|
||||
1 file changed, 11 insertions(+), 11 deletions(-)
|
||||
|
||||
--- a/drivers/net/mtk_eth.c
|
||||
+++ b/drivers/net/mtk_eth.c
|
||||
@@ -159,9 +159,10 @@ struct mtk_eth_priv {
|
||||
|
||||
void __iomem *fe_base;
|
||||
void __iomem *gmac_base;
|
||||
- void __iomem *ethsys_base;
|
||||
void __iomem *sgmii_base;
|
||||
|
||||
+ struct regmap *ethsys_regmap;
|
||||
+
|
||||
struct mii_dev *mdio_bus;
|
||||
int (*mii_read)(struct mtk_eth_priv *priv, u8 phy, u8 reg);
|
||||
int (*mii_write)(struct mtk_eth_priv *priv, u8 phy, u8 reg, u16 val);
|
||||
@@ -233,7 +234,12 @@ static void mtk_gmac_rmw(struct mtk_eth_
|
||||
static void mtk_ethsys_rmw(struct mtk_eth_priv *priv, u32 reg, u32 clr,
|
||||
u32 set)
|
||||
{
|
||||
- clrsetbits_le32(priv->ethsys_base + reg, clr, set);
|
||||
+ uint val;
|
||||
+
|
||||
+ regmap_read(priv->ethsys_regmap, reg, &val);
|
||||
+ val &= ~clr;
|
||||
+ val |= set;
|
||||
+ regmap_write(priv->ethsys_regmap, reg, val);
|
||||
}
|
||||
|
||||
/* Direct MDIO clause 22/45 access via SoC */
|
||||
@@ -1427,15 +1433,9 @@ static int mtk_eth_of_to_plat(struct ude
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
- regmap = syscon_node_to_regmap(args.node);
|
||||
- if (IS_ERR(regmap))
|
||||
- return PTR_ERR(regmap);
|
||||
-
|
||||
- priv->ethsys_base = regmap_get_range(regmap, 0);
|
||||
- if (!priv->ethsys_base) {
|
||||
- dev_err(dev, "Unable to find ethsys\n");
|
||||
- return -ENODEV;
|
||||
- }
|
||||
+ priv->ethsys_regmap = syscon_node_to_regmap(args.node);
|
||||
+ if (IS_ERR(priv->ethsys_regmap))
|
||||
+ return PTR_ERR(priv->ethsys_regmap);
|
||||
|
||||
/* Reset controllers */
|
||||
ret = reset_get_by_name(dev, "fe", &priv->rst_fe);
|
||||
@ -1,67 +0,0 @@
|
||||
From 7237a6a0c020c05bb819774391154b40b2cfaabd Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:23:42 +0800
|
||||
Subject: [PATCH 19/25] net: mediatek: add support for MediaTek MT7621 SoC
|
||||
|
||||
This patch adds GMAC support for MediaTek MT7621 SoC.
|
||||
MT7621 has the same GMAC/Switch configuration as MT7623.
|
||||
|
||||
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
drivers/net/mtk_eth.c | 21 +++++++++++++++------
|
||||
1 file changed, 15 insertions(+), 6 deletions(-)
|
||||
|
||||
--- a/drivers/net/mtk_eth.c
|
||||
+++ b/drivers/net/mtk_eth.c
|
||||
@@ -145,7 +145,8 @@ enum mtk_switch {
|
||||
enum mtk_soc {
|
||||
SOC_MT7623,
|
||||
SOC_MT7629,
|
||||
- SOC_MT7622
|
||||
+ SOC_MT7622,
|
||||
+ SOC_MT7621
|
||||
};
|
||||
|
||||
struct mtk_eth_priv {
|
||||
@@ -675,12 +676,18 @@ static int mt7530_pad_clk_setup(struct m
|
||||
static int mt7530_setup(struct mtk_eth_priv *priv)
|
||||
{
|
||||
u16 phy_addr, phy_val;
|
||||
- u32 val;
|
||||
+ u32 val, txdrv;
|
||||
int i;
|
||||
|
||||
- /* Select 250MHz clk for RGMII mode */
|
||||
- mtk_ethsys_rmw(priv, ETHSYS_CLKCFG0_REG,
|
||||
- ETHSYS_TRGMII_CLK_SEL362_5, 0);
|
||||
+ if (priv->soc != SOC_MT7621) {
|
||||
+ /* Select 250MHz clk for RGMII mode */
|
||||
+ mtk_ethsys_rmw(priv, ETHSYS_CLKCFG0_REG,
|
||||
+ ETHSYS_TRGMII_CLK_SEL362_5, 0);
|
||||
+
|
||||
+ txdrv = 8;
|
||||
+ } else {
|
||||
+ txdrv = 4;
|
||||
+ }
|
||||
|
||||
/* Modify HWTRAP first to allow direct access to internal PHYs */
|
||||
mt753x_reg_read(priv, HWTRAP_REG, &val);
|
||||
@@ -738,7 +745,8 @@ static int mt7530_setup(struct mtk_eth_p
|
||||
/* Lower Tx Driving for TRGMII path */
|
||||
for (i = 0 ; i < NUM_TRGMII_CTRL ; i++)
|
||||
mt753x_reg_write(priv, MT7530_TRGMII_TD_ODT(i),
|
||||
- (8 << TD_DM_DRVP_S) | (8 << TD_DM_DRVN_S));
|
||||
+ (txdrv << TD_DM_DRVP_S) |
|
||||
+ (txdrv << TD_DM_DRVN_S));
|
||||
|
||||
for (i = 0 ; i < NUM_TRGMII_CTRL; i++)
|
||||
mt753x_reg_rmw(priv, MT7530_TRGMII_RD(i), RD_TAP_M, 16);
|
||||
@@ -1540,6 +1548,7 @@ static const struct udevice_id mtk_eth_i
|
||||
{ .compatible = "mediatek,mt7629-eth", .data = SOC_MT7629 },
|
||||
{ .compatible = "mediatek,mt7623-eth", .data = SOC_MT7623 },
|
||||
{ .compatible = "mediatek,mt7622-eth", .data = SOC_MT7622 },
|
||||
+ { .compatible = "mediatek,mt7621-eth", .data = SOC_MT7621 },
|
||||
{}
|
||||
};
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,24 +0,0 @@
|
||||
From 474082b03ae2b569f9daf43f78b91b57f7a1ae50 Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:23:53 +0800
|
||||
Subject: [PATCH 21/25] spl: allow using nand base without standard nand driver
|
||||
|
||||
This patch removes the dependency to SPL_NAND_DRIVERS for SPL_NAND_BASE to
|
||||
allow minimal spl nand driver to use nand base for probing NAND chips.
|
||||
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
common/spl/Kconfig | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/common/spl/Kconfig
|
||||
+++ b/common/spl/Kconfig
|
||||
@@ -764,7 +764,7 @@ config SPL_NAND_SIMPLE
|
||||
expose the cmd_ctrl() interface.
|
||||
|
||||
config SPL_NAND_BASE
|
||||
- depends on SPL_NAND_DRIVERS
|
||||
+ depends on SPL_NAND_SUPPORT
|
||||
bool "Use Base NAND Driver"
|
||||
help
|
||||
Include nand_base.c in the SPL.
|
||||
@ -1,64 +0,0 @@
|
||||
From ba9c81e720f39b5dbc14592252bfc9402afee79d Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:23:58 +0800
|
||||
Subject: [PATCH 22/25] spl: spl_legacy: fix the use of SPL_COPY_PAYLOAD_ONLY
|
||||
|
||||
If the payload is compressed, SPL_COPY_PAYLOAD_ONLY should always be set
|
||||
since the payload will not be directly read to its load address. The
|
||||
payload will first be read to a temporary buffer, and then be decompressed
|
||||
to its load address, without image header.
|
||||
|
||||
If the payload is not compressed, and SPL_COPY_PAYLOAD_ONLY is set, image
|
||||
header should be skipped on loading. Otherwise image header should also be
|
||||
read to its load address.
|
||||
|
||||
Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
common/spl/spl_legacy.c | 21 +++++++++++++++++++--
|
||||
1 file changed, 19 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/common/spl/spl_legacy.c
|
||||
+++ b/common/spl/spl_legacy.c
|
||||
@@ -88,15 +88,29 @@ int spl_load_legacy_img(struct spl_image
|
||||
/* Read header into local struct */
|
||||
load->read(load, header, sizeof(hdr), &hdr);
|
||||
|
||||
+ /*
|
||||
+ * If the payload is compressed, the decompressed data should be
|
||||
+ * directly write to its load address.
|
||||
+ */
|
||||
+ if (spl_image_get_comp(&hdr) != IH_COMP_NONE)
|
||||
+ spl_image->flags |= SPL_COPY_PAYLOAD_ONLY;
|
||||
+
|
||||
ret = spl_parse_image_header(spl_image, bootdev, &hdr);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
- dataptr = header + sizeof(hdr);
|
||||
-
|
||||
/* Read image */
|
||||
switch (spl_image_get_comp(&hdr)) {
|
||||
case IH_COMP_NONE:
|
||||
+ dataptr = header;
|
||||
+
|
||||
+ /*
|
||||
+ * Image header will be skipped only if SPL_COPY_PAYLOAD_ONLY
|
||||
+ * is set
|
||||
+ */
|
||||
+ if (spl_image->flags & SPL_COPY_PAYLOAD_ONLY)
|
||||
+ dataptr += sizeof(hdr);
|
||||
+
|
||||
load->read(load, dataptr, spl_image->size,
|
||||
(void *)(unsigned long)spl_image->load_addr);
|
||||
break;
|
||||
@@ -104,6 +118,9 @@ int spl_load_legacy_img(struct spl_image
|
||||
case IH_COMP_LZMA:
|
||||
lzma_len = LZMA_LEN;
|
||||
|
||||
+ /* dataptr points to compressed payload */
|
||||
+ dataptr = header + sizeof(hdr);
|
||||
+
|
||||
debug("LZMA: Decompressing %08lx to %08lx\n",
|
||||
dataptr, spl_image->load_addr);
|
||||
src = malloc(spl_image->size);
|
||||
@ -1,59 +0,0 @@
|
||||
From b4e5137067d34a099efd921532ece177560789ca Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:24:04 +0800
|
||||
Subject: [PATCH 23/25] spl: nand: support loading legacy image with payload
|
||||
compressed
|
||||
|
||||
Add support to load legacy image with payload compressed. This redirects
|
||||
the boot flow for all legacy images. If the payload is not compressed, the
|
||||
actual behavior will remain unchanged.
|
||||
|
||||
Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
common/spl/spl_nand.c | 27 +++++++++++++++++++++++++++
|
||||
1 file changed, 27 insertions(+)
|
||||
|
||||
--- a/common/spl/spl_nand.c
|
||||
+++ b/common/spl/spl_nand.c
|
||||
@@ -56,6 +56,21 @@ static ulong spl_nand_fit_read(struct sp
|
||||
return size / load->bl_len;
|
||||
}
|
||||
|
||||
+static ulong spl_nand_legacy_read(struct spl_load_info *load, ulong offs,
|
||||
+ ulong size, void *dst)
|
||||
+{
|
||||
+ int err;
|
||||
+
|
||||
+ debug("%s: offs %lx, size %lx, dst %p\n",
|
||||
+ __func__, offs, size, dst);
|
||||
+
|
||||
+ err = nand_spl_load_image(offs, size, dst);
|
||||
+ if (err)
|
||||
+ return 0;
|
||||
+
|
||||
+ return size;
|
||||
+}
|
||||
+
|
||||
struct mtd_info * __weak nand_get_mtd(void)
|
||||
{
|
||||
return NULL;
|
||||
@@ -93,6 +108,18 @@ static int spl_nand_load_element(struct
|
||||
load.bl_len = bl_len;
|
||||
load.read = spl_nand_fit_read;
|
||||
return spl_load_imx_container(spl_image, &load, offset / bl_len);
|
||||
+ } else if (IS_ENABLED(CONFIG_SPL_LEGACY_IMAGE_FORMAT) &&
|
||||
+ image_get_magic(header) == IH_MAGIC) {
|
||||
+ struct spl_load_info load;
|
||||
+
|
||||
+ debug("Found legacy image\n");
|
||||
+ load.dev = NULL;
|
||||
+ load.priv = NULL;
|
||||
+ load.filename = NULL;
|
||||
+ load.bl_len = 1;
|
||||
+ load.read = spl_nand_legacy_read;
|
||||
+
|
||||
+ return spl_load_legacy_img(spl_image, bootdev, &load, offset);
|
||||
} else {
|
||||
err = spl_parse_image_header(spl_image, bootdev, header);
|
||||
if (err)
|
||||
@ -1,333 +0,0 @@
|
||||
From 18dd1ef9417d0880f2f492b55bd4d9ede499f137 Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:24:10 +0800
|
||||
Subject: [PATCH 24/25] tools: mtk_image: add support for MT7621 NAND images
|
||||
|
||||
The BootROM of MT7621 requires a image header for SPL to record its size
|
||||
and load address when booting from NAND.
|
||||
|
||||
To create such an image, one can use the following command line:
|
||||
mkimage -T mtk_image -a 0x80200000 -e 0x80200000 -n "mt7621=1"
|
||||
-d u-boot-spl-ddr.bin u-boot-spl-ddr.img
|
||||
|
||||
Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
tools/mtk_image.c | 182 ++++++++++++++++++++++++++++++++++++++++++++++
|
||||
tools/mtk_image.h | 24 ++++++
|
||||
2 files changed, 206 insertions(+)
|
||||
|
||||
--- a/tools/mtk_image.c
|
||||
+++ b/tools/mtk_image.c
|
||||
@@ -6,7 +6,9 @@
|
||||
* Author: Weijie Gao <weijie.gao@mediatek.com>
|
||||
*/
|
||||
|
||||
+#include <time.h>
|
||||
#include <image.h>
|
||||
+#include <u-boot/crc.h>
|
||||
#include <u-boot/sha256.h>
|
||||
#include "imagetool.h"
|
||||
#include "mtk_image.h"
|
||||
@@ -251,17 +253,45 @@ static uint32_t img_size;
|
||||
static enum brlyt_img_type hdr_media;
|
||||
static uint32_t hdr_offset;
|
||||
static int use_lk_hdr;
|
||||
+static int use_mt7621_hdr;
|
||||
static bool is_arm64_image;
|
||||
|
||||
/* LK image name */
|
||||
static char lk_name[32] = "U-Boot";
|
||||
|
||||
+/* CRC32 normal table required by MT7621 image */
|
||||
+static uint32_t crc32tbl[256];
|
||||
+
|
||||
/* NAND header selected by user */
|
||||
static const union nand_boot_header *hdr_nand;
|
||||
|
||||
/* GFH header + 2 * 4KB pages of NAND */
|
||||
static char hdr_tmp[sizeof(struct gfh_header) + 0x2000];
|
||||
|
||||
+static uint32_t crc32_normal_cal(uint32_t crc, const void *data, size_t length,
|
||||
+ const uint32_t *crc32c_table)
|
||||
+{
|
||||
+ const uint8_t *p = data;
|
||||
+
|
||||
+ while (length--)
|
||||
+ crc = crc32c_table[(uint8_t)((crc >> 24) ^ *p++)] ^ (crc << 8);
|
||||
+
|
||||
+ return crc;
|
||||
+}
|
||||
+
|
||||
+static void crc32_normal_init(uint32_t *crc32c_table, uint32_t poly)
|
||||
+{
|
||||
+ uint32_t v, i, j;
|
||||
+
|
||||
+ for (i = 0; i < 256; i++) {
|
||||
+ v = i << 24;
|
||||
+ for (j = 0; j < 8; j++)
|
||||
+ v = (v << 1) ^ ((v & (1 << 31)) ? poly : 0);
|
||||
+
|
||||
+ crc32c_table[i] = v;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
static int mtk_image_check_image_types(uint8_t type)
|
||||
{
|
||||
if (type == IH_TYPE_MTKIMAGE)
|
||||
@@ -283,6 +313,7 @@ static int mtk_brom_parse_imagename(cons
|
||||
static const char *hdr_offs = "";
|
||||
static const char *nandinfo = "";
|
||||
static const char *lk = "";
|
||||
+ static const char *mt7621 = "";
|
||||
static const char *arm64_param = "";
|
||||
|
||||
key = buf;
|
||||
@@ -332,6 +363,9 @@ static int mtk_brom_parse_imagename(cons
|
||||
if (!strcmp(key, "lk"))
|
||||
lk = val;
|
||||
|
||||
+ if (!strcmp(key, "mt7621"))
|
||||
+ mt7621 = val;
|
||||
+
|
||||
if (!strcmp(key, "lkname"))
|
||||
snprintf(lk_name, sizeof(lk_name), "%s", val);
|
||||
|
||||
@@ -352,6 +386,13 @@ static int mtk_brom_parse_imagename(cons
|
||||
return 0;
|
||||
}
|
||||
|
||||
+ /* if user specified MT7621 image header, skip following checks */
|
||||
+ if (mt7621 && mt7621[0] == '1') {
|
||||
+ use_mt7621_hdr = 1;
|
||||
+ free(buf);
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
/* parse media type */
|
||||
for (i = 0; i < ARRAY_SIZE(brom_images); i++) {
|
||||
if (!strcmp(brom_images[i].name, media)) {
|
||||
@@ -419,6 +460,13 @@ static int mtk_image_vrec_header(struct
|
||||
return 0;
|
||||
}
|
||||
|
||||
+ if (use_mt7621_hdr) {
|
||||
+ tparams->header_size = image_get_header_size();
|
||||
+ tparams->hdr = &hdr_tmp;
|
||||
+ memset(&hdr_tmp, 0, tparams->header_size);
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
if (hdr_media == BRLYT_TYPE_NAND || hdr_media == BRLYT_TYPE_SNAND)
|
||||
tparams->header_size = 2 * le16_to_cpu(hdr_nand->pagesize);
|
||||
else
|
||||
@@ -579,9 +627,90 @@ static int mtk_image_verify_nand_header(
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static uint32_t crc32be_cal(const void *data, size_t length)
|
||||
+{
|
||||
+ uint32_t crc = 0;
|
||||
+ uint8_t c;
|
||||
+
|
||||
+ if (crc32tbl[1] != MT7621_IH_CRC_POLYNOMIAL)
|
||||
+ crc32_normal_init(crc32tbl, MT7621_IH_CRC_POLYNOMIAL);
|
||||
+
|
||||
+ crc = crc32_normal_cal(crc, data, length, crc32tbl);
|
||||
+
|
||||
+ for (; length; length >>= 8) {
|
||||
+ c = length & 0xff;
|
||||
+ crc = crc32_normal_cal(crc, &c, 1, crc32tbl);
|
||||
+ }
|
||||
+
|
||||
+ return ~crc;
|
||||
+}
|
||||
+
|
||||
+static int mtk_image_verify_mt7621_header(const uint8_t *ptr, int print)
|
||||
+{
|
||||
+ const image_header_t *hdr = (const image_header_t *)ptr;
|
||||
+ struct mt7621_nand_header *nhdr;
|
||||
+ uint32_t spl_size, crcval;
|
||||
+ image_header_t header;
|
||||
+ int ret;
|
||||
+
|
||||
+ spl_size = image_get_size(hdr);
|
||||
+
|
||||
+ if (spl_size > img_size) {
|
||||
+ if (print)
|
||||
+ printf("Incomplete SPL image\n");
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ ret = image_check_hcrc(hdr);
|
||||
+ if (!ret) {
|
||||
+ if (print)
|
||||
+ printf("Bad header CRC\n");
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ ret = image_check_dcrc(hdr);
|
||||
+ if (!ret) {
|
||||
+ if (print)
|
||||
+ printf("Bad data CRC\n");
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ /* Copy header so we can blank CRC field for re-calculation */
|
||||
+ memmove(&header, hdr, image_get_header_size());
|
||||
+ image_set_hcrc(&header, 0);
|
||||
+
|
||||
+ nhdr = (struct mt7621_nand_header *)header.ih_name;
|
||||
+ crcval = be32_to_cpu(nhdr->crc);
|
||||
+ nhdr->crc = 0;
|
||||
+
|
||||
+ if (crcval != crc32be_cal(&header, image_get_header_size())) {
|
||||
+ if (print)
|
||||
+ printf("Bad NAND header CRC\n");
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ if (print) {
|
||||
+ printf("Load Address: %08x\n", image_get_load(hdr));
|
||||
+
|
||||
+ printf("Image Name: %.*s\n", MT7621_IH_NMLEN,
|
||||
+ image_get_name(hdr));
|
||||
+
|
||||
+ if (IMAGE_ENABLE_TIMESTAMP) {
|
||||
+ printf("Created: ");
|
||||
+ genimg_print_time((time_t)image_get_time(hdr));
|
||||
+ }
|
||||
+
|
||||
+ printf("Data Size: ");
|
||||
+ genimg_print_size(image_get_data_size(hdr));
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static int mtk_image_verify_header(unsigned char *ptr, int image_size,
|
||||
struct image_tool_params *params)
|
||||
{
|
||||
+ image_header_t *hdr = (image_header_t *)ptr;
|
||||
union lk_hdr *lk = (union lk_hdr *)ptr;
|
||||
|
||||
/* nothing to verify for LK image header */
|
||||
@@ -590,6 +719,9 @@ static int mtk_image_verify_header(unsig
|
||||
|
||||
img_size = image_size;
|
||||
|
||||
+ if (image_get_magic(hdr) == IH_MAGIC)
|
||||
+ return mtk_image_verify_mt7621_header(ptr, 0);
|
||||
+
|
||||
if (!strcmp((char *)ptr, NAND_BOOT_NAME))
|
||||
return mtk_image_verify_nand_header(ptr, 0);
|
||||
else
|
||||
@@ -600,6 +732,7 @@ static int mtk_image_verify_header(unsig
|
||||
|
||||
static void mtk_image_print_header(const void *ptr)
|
||||
{
|
||||
+ image_header_t *hdr = (image_header_t *)ptr;
|
||||
union lk_hdr *lk = (union lk_hdr *)ptr;
|
||||
|
||||
if (le32_to_cpu(lk->magic) == LK_PART_MAGIC) {
|
||||
@@ -610,6 +743,11 @@ static void mtk_image_print_header(const
|
||||
|
||||
printf("Image Type: MediaTek BootROM Loadable Image\n");
|
||||
|
||||
+ if (image_get_magic(hdr) == IH_MAGIC) {
|
||||
+ mtk_image_verify_mt7621_header(ptr, 1);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
if (!strcmp((char *)ptr, NAND_BOOT_NAME))
|
||||
mtk_image_verify_nand_header(ptr, 1);
|
||||
else
|
||||
@@ -773,6 +911,45 @@ static void mtk_image_set_nand_header(vo
|
||||
filesize - 2 * le16_to_cpu(hdr_nand->pagesize) - SHA256_SUM_LEN);
|
||||
}
|
||||
|
||||
+static void mtk_image_set_mt7621_header(void *ptr, off_t filesize,
|
||||
+ uint32_t loadaddr)
|
||||
+{
|
||||
+ image_header_t *hdr = (image_header_t *)ptr;
|
||||
+ struct mt7621_stage1_header *shdr;
|
||||
+ struct mt7621_nand_header *nhdr;
|
||||
+ uint32_t datasize, crcval;
|
||||
+
|
||||
+ datasize = filesize - image_get_header_size();
|
||||
+ nhdr = (struct mt7621_nand_header *)hdr->ih_name;
|
||||
+ shdr = (struct mt7621_stage1_header *)(ptr + image_get_header_size());
|
||||
+
|
||||
+ shdr->ep = cpu_to_be32(loadaddr);
|
||||
+ shdr->stage_size = cpu_to_be32(datasize);
|
||||
+
|
||||
+ image_set_magic(hdr, IH_MAGIC);
|
||||
+ image_set_time(hdr, time(NULL));
|
||||
+ image_set_size(hdr, datasize);
|
||||
+ image_set_load(hdr, loadaddr);
|
||||
+ image_set_ep(hdr, loadaddr);
|
||||
+ image_set_os(hdr, IH_OS_U_BOOT);
|
||||
+ image_set_arch(hdr, IH_ARCH_MIPS);
|
||||
+ image_set_type(hdr, IH_TYPE_STANDALONE);
|
||||
+ image_set_comp(hdr, IH_COMP_NONE);
|
||||
+
|
||||
+ crcval = crc32(0, (uint8_t *)shdr, datasize);
|
||||
+ image_set_dcrc(hdr, crcval);
|
||||
+
|
||||
+ strncpy(nhdr->ih_name, "MT7621 NAND", MT7621_IH_NMLEN);
|
||||
+
|
||||
+ nhdr->ih_stage_offset = cpu_to_be32(image_get_header_size());
|
||||
+
|
||||
+ crcval = crc32be_cal(hdr, image_get_header_size());
|
||||
+ nhdr->crc = cpu_to_be32(crcval);
|
||||
+
|
||||
+ crcval = crc32(0, (uint8_t *)hdr, image_get_header_size());
|
||||
+ image_set_hcrc(hdr, crcval);
|
||||
+}
|
||||
+
|
||||
static void mtk_image_set_header(void *ptr, struct stat *sbuf, int ifd,
|
||||
struct image_tool_params *params)
|
||||
{
|
||||
@@ -791,6 +968,11 @@ static void mtk_image_set_header(void *p
|
||||
img_gen = true;
|
||||
img_size = sbuf->st_size;
|
||||
|
||||
+ if (use_mt7621_hdr) {
|
||||
+ mtk_image_set_mt7621_header(ptr, sbuf->st_size, params->addr);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
if (hdr_media == BRLYT_TYPE_NAND || hdr_media == BRLYT_TYPE_SNAND)
|
||||
mtk_image_set_nand_header(ptr, sbuf->st_size, params->addr);
|
||||
else
|
||||
--- a/tools/mtk_image.h
|
||||
+++ b/tools/mtk_image.h
|
||||
@@ -200,4 +200,28 @@ union lk_hdr {
|
||||
|
||||
#define LK_PART_MAGIC 0x58881688
|
||||
|
||||
+/* MT7621 NAND SPL image header */
|
||||
+
|
||||
+#define MT7621_IH_NMLEN 12
|
||||
+#define MT7621_IH_CRC_POLYNOMIAL 0x04c11db7
|
||||
+
|
||||
+struct mt7621_nand_header {
|
||||
+ char ih_name[MT7621_IH_NMLEN];
|
||||
+ uint32_t nand_ac_timing;
|
||||
+ uint32_t ih_stage_offset;
|
||||
+ uint32_t ih_bootloader_offset;
|
||||
+ uint32_t nand_info_1_data;
|
||||
+ uint32_t crc;
|
||||
+};
|
||||
+
|
||||
+struct mt7621_stage1_header {
|
||||
+ uint32_t jump_insn[2];
|
||||
+ uint32_t ep;
|
||||
+ uint32_t stage_size;
|
||||
+ uint32_t has_stage2;
|
||||
+ uint32_t next_ep;
|
||||
+ uint32_t next_size;
|
||||
+ uint32_t next_offset;
|
||||
+};
|
||||
+
|
||||
#endif /* _MTK_IMAGE_H */
|
||||
@ -1,39 +0,0 @@
|
||||
From e5fc4022af3cfd59e3459276305671a595ac5ff0 Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Fri, 20 May 2022 11:24:16 +0800
|
||||
Subject: [PATCH 25/25] MAINTAINERS: update maintainer for MediaTek MIPS
|
||||
platform
|
||||
|
||||
Update maintainer for MediaTek MIPS platform
|
||||
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
MAINTAINERS | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -1007,15 +1007,23 @@ R: GSS_MTK_Uboot_upstream <GSS_MTK_Uboot
|
||||
S: Maintained
|
||||
F: arch/mips/mach-mtmips/
|
||||
F: arch/mips/dts/mt7620.dtsi
|
||||
+F: arch/mips/dts/mt7621.dtsi
|
||||
F: arch/mips/dts/mt7620-u-boot.dtsi
|
||||
+F: arch/mips/dts/mt7621-u-boot.dtsi
|
||||
F: include/configs/mt7620.h
|
||||
+F: include/configs/mt7621.h
|
||||
F: include/dt-bindings/clock/mt7620-clk.h
|
||||
+F: include/dt-bindings/clock/mt7621-clk.h
|
||||
F: include/dt-bindings/clock/mt7628-clk.h
|
||||
F: include/dt-bindings/reset/mt7620-reset.h
|
||||
+F: include/dt-bindings/reset/mt7621-reset.h
|
||||
F: include/dt-bindings/reset/mt7628-reset.h
|
||||
F: drivers/clk/mtmips/
|
||||
F: drivers/pinctrl/mtmips/
|
||||
F: drivers/gpio/mt7620_gpio.c
|
||||
+F: drivers/mtd/nand/raw/mt7621_nand.c
|
||||
+F: drivers/mtd/nand/raw/mt7621_nand.h
|
||||
+F: drivers/mtd/nand/raw/mt7621_nand_spl.c
|
||||
F: drivers/net/mt7620-eth.c
|
||||
F: drivers/phy/mt7620-usb-phy.c
|
||||
F: drivers/reset/reset-mtmips.c
|
||||
@ -1,45 +0,0 @@
|
||||
From a3ba6adb70c91ec3b9312c3a025faa44acd39cfa Mon Sep 17 00:00:00 2001
|
||||
From: Weijie Gao <weijie.gao@mediatek.com>
|
||||
Date: Wed, 13 Jul 2022 11:16:39 +0800
|
||||
Subject: [PATCH] arm: dts: mt7622: remove default pinctrl of uart0
|
||||
|
||||
Currently u-boot running on mt7622 will print an warning log at beginning:
|
||||
> serial_mtk serial@11002000: pinctrl_select_state_full: uclass_get_device_by_phandle_id: err=-19
|
||||
|
||||
It turns out that the pinctrl uclass can't work properly in board_f stage.
|
||||
|
||||
Since the uart0 is the default UART device used by bootrom, and will be
|
||||
initialized in both bootrom and tf-a bl2. It's ok not to setup pinctrl for
|
||||
uart0 in u-boot.
|
||||
|
||||
This patch removes the default pinctrl of uart0 to suppress the unwanted
|
||||
warning.
|
||||
|
||||
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
---
|
||||
arch/arm/dts/mt7622-bananapi-bpi-r64.dts | 2 --
|
||||
arch/arm/dts/mt7622-rfb.dts | 2 --
|
||||
2 files changed, 4 deletions(-)
|
||||
|
||||
--- a/arch/arm/dts/mt7622-bananapi-bpi-r64.dts
|
||||
+++ b/arch/arm/dts/mt7622-bananapi-bpi-r64.dts
|
||||
@@ -182,8 +182,6 @@
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
- pinctrl-names = "default";
|
||||
- pinctrl-0 = <&uart0_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
--- a/arch/arm/dts/mt7622-rfb.dts
|
||||
+++ b/arch/arm/dts/mt7622-rfb.dts
|
||||
@@ -189,8 +189,6 @@
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
- pinctrl-names = "default";
|
||||
- pinctrl-0 = <&uart0_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@ -1,494 +0,0 @@
|
||||
From b62450cf229c50ad2ce819dd02a09726909cc89a Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Pali=20Roh=C3=A1r?= <pali@kernel.org>
|
||||
Date: Fri, 27 May 2022 22:15:24 +0200
|
||||
Subject: [PATCH] serial: Replace CONFIG_DEBUG_UART_BASE by
|
||||
CONFIG_VAL(DEBUG_UART_BASE)
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
CONFIG_VAL(DEBUG_UART_BASE) expands to CONFIG_DEBUG_UART_BASE or
|
||||
CONFIG_SPL_DEBUG_UART_BASE or CONFIG_TPL_DEBUG_UART_BASE and allows boards
|
||||
to set different values for SPL, TPL and U-Boot Proper.
|
||||
|
||||
For ns16550 driver this support is there since commit d293759d55cc
|
||||
("serial: ns16550: Add support for SPL_DEBUG_UART_BASE").
|
||||
|
||||
Signed-off-by: Pali Rohár <pali@kernel.org>
|
||||
---
|
||||
arch/arm/mach-uniphier/debug-uart/debug-uart.c | 4 ++--
|
||||
arch/x86/cpu/apollolake/cpu_common.c | 2 +-
|
||||
board/eets/pdu001/board.c | 2 +-
|
||||
drivers/serial/altera_jtag_uart.c | 2 +-
|
||||
drivers/serial/altera_uart.c | 4 ++--
|
||||
drivers/serial/atmel_usart.c | 4 ++--
|
||||
drivers/serial/serial_ar933x.c | 4 ++--
|
||||
drivers/serial/serial_arc.c | 4 ++--
|
||||
drivers/serial/serial_bcm6345.c | 4 ++--
|
||||
drivers/serial/serial_linflexuart.c | 4 ++--
|
||||
drivers/serial/serial_meson.c | 2 +-
|
||||
drivers/serial/serial_msm_geni.c | 6 +++---
|
||||
drivers/serial/serial_mt7620.c | 4 ++--
|
||||
drivers/serial/serial_mtk.c | 4 ++--
|
||||
drivers/serial/serial_mvebu_a3700.c | 4 ++--
|
||||
drivers/serial/serial_mxc.c | 4 ++--
|
||||
drivers/serial/serial_omap.c | 4 ++--
|
||||
drivers/serial/serial_pic32.c | 4 ++--
|
||||
drivers/serial/serial_pl01x.c | 4 ++--
|
||||
drivers/serial/serial_s5p.c | 4 ++--
|
||||
drivers/serial/serial_sifive.c | 4 ++--
|
||||
drivers/serial/serial_stm32.c | 4 ++--
|
||||
drivers/serial/serial_xuartlite.c | 4 ++--
|
||||
drivers/serial/serial_zynq.c | 4 ++--
|
||||
24 files changed, 45 insertions(+), 45 deletions(-)
|
||||
|
||||
--- a/arch/arm/mach-uniphier/debug-uart/debug-uart.c
|
||||
+++ b/arch/arm/mach-uniphier/debug-uart/debug-uart.c
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
static void _debug_uart_putc(int c)
|
||||
{
|
||||
- void __iomem *base = (void __iomem *)CONFIG_DEBUG_UART_BASE;
|
||||
+ void __iomem *base = (void __iomem *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
|
||||
while (!(readl(base + UNIPHIER_UART_LSR) & UART_LSR_THRE))
|
||||
;
|
||||
@@ -57,7 +57,7 @@ void sg_set_iectrl(unsigned int pin)
|
||||
void _debug_uart_init(void)
|
||||
{
|
||||
#ifdef CONFIG_SPL_BUILD
|
||||
- void __iomem *base = (void __iomem *)CONFIG_DEBUG_UART_BASE;
|
||||
+ void __iomem *base = (void __iomem *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
unsigned int divisor;
|
||||
|
||||
switch (uniphier_get_soc_id()) {
|
||||
--- a/arch/x86/cpu/apollolake/cpu_common.c
|
||||
+++ b/arch/x86/cpu/apollolake/cpu_common.c
|
||||
@@ -72,7 +72,7 @@ static void pch_uart_init(void)
|
||||
}
|
||||
|
||||
#ifdef CONFIG_DEBUG_UART
|
||||
- apl_uart_init(PCH_DEV_UART, CONFIG_DEBUG_UART_BASE);
|
||||
+ apl_uart_init(PCH_DEV_UART, CONFIG_VAL(DEBUG_UART_BASE));
|
||||
#endif
|
||||
}
|
||||
|
||||
--- a/board/eets/pdu001/board.c
|
||||
+++ b/board/eets/pdu001/board.c
|
||||
@@ -273,7 +273,7 @@ void board_debug_uart_init(void)
|
||||
setup_early_clocks();
|
||||
|
||||
/* done by pin controller driver if not debugging */
|
||||
- enable_uart_pin_mux(CONFIG_DEBUG_UART_BASE);
|
||||
+ enable_uart_pin_mux(CONFIG_VAL(DEBUG_UART_BASE));
|
||||
}
|
||||
#endif
|
||||
|
||||
--- a/drivers/serial/altera_jtag_uart.c
|
||||
+++ b/drivers/serial/altera_jtag_uart.c
|
||||
@@ -134,7 +134,7 @@ static inline void _debug_uart_init(void
|
||||
|
||||
static inline void _debug_uart_putc(int ch)
|
||||
{
|
||||
- struct altera_jtaguart_regs *regs = (void *)CONFIG_DEBUG_UART_BASE;
|
||||
+ struct altera_jtaguart_regs *regs = (void *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
|
||||
while (1) {
|
||||
u32 st = readl(®s->control);
|
||||
--- a/drivers/serial/altera_uart.c
|
||||
+++ b/drivers/serial/altera_uart.c
|
||||
@@ -123,7 +123,7 @@ U_BOOT_DRIVER(altera_uart) = {
|
||||
|
||||
static inline void _debug_uart_init(void)
|
||||
{
|
||||
- struct altera_uart_regs *regs = (void *)CONFIG_DEBUG_UART_BASE;
|
||||
+ struct altera_uart_regs *regs = (void *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
u32 div;
|
||||
|
||||
div = (CONFIG_DEBUG_UART_CLOCK / CONFIG_BAUDRATE) - 1;
|
||||
@@ -132,7 +132,7 @@ static inline void _debug_uart_init(void
|
||||
|
||||
static inline void _debug_uart_putc(int ch)
|
||||
{
|
||||
- struct altera_uart_regs *regs = (void *)CONFIG_DEBUG_UART_BASE;
|
||||
+ struct altera_uart_regs *regs = (void *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
|
||||
while (1) {
|
||||
u32 st = readl(®s->status);
|
||||
--- a/drivers/serial/atmel_usart.c
|
||||
+++ b/drivers/serial/atmel_usart.c
|
||||
@@ -319,14 +319,14 @@ U_BOOT_DRIVER(serial_atmel) = {
|
||||
#ifdef CONFIG_DEBUG_UART_ATMEL
|
||||
static inline void _debug_uart_init(void)
|
||||
{
|
||||
- atmel_usart3_t *usart = (atmel_usart3_t *)CONFIG_DEBUG_UART_BASE;
|
||||
+ atmel_usart3_t *usart = (atmel_usart3_t *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
|
||||
_atmel_serial_init(usart, CONFIG_DEBUG_UART_CLOCK, CONFIG_BAUDRATE);
|
||||
}
|
||||
|
||||
static inline void _debug_uart_putc(int ch)
|
||||
{
|
||||
- atmel_usart3_t *usart = (atmel_usart3_t *)CONFIG_DEBUG_UART_BASE;
|
||||
+ atmel_usart3_t *usart = (atmel_usart3_t *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
|
||||
while (!(readl(&usart->csr) & USART3_BIT(TXRDY)))
|
||||
;
|
||||
--- a/drivers/serial/serial_ar933x.c
|
||||
+++ b/drivers/serial/serial_ar933x.c
|
||||
@@ -199,7 +199,7 @@ U_BOOT_DRIVER(serial_ar933x) = {
|
||||
|
||||
static inline void _debug_uart_init(void)
|
||||
{
|
||||
- void __iomem *regs = (void *)CONFIG_DEBUG_UART_BASE;
|
||||
+ void __iomem *regs = (void *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
u32 val, scale, step;
|
||||
|
||||
/*
|
||||
@@ -227,7 +227,7 @@ static inline void _debug_uart_init(void
|
||||
|
||||
static inline void _debug_uart_putc(int c)
|
||||
{
|
||||
- void __iomem *regs = (void *)CONFIG_DEBUG_UART_BASE;
|
||||
+ void __iomem *regs = (void *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
u32 data;
|
||||
|
||||
do {
|
||||
--- a/drivers/serial/serial_arc.c
|
||||
+++ b/drivers/serial/serial_arc.c
|
||||
@@ -137,7 +137,7 @@ U_BOOT_DRIVER(serial_arc) = {
|
||||
|
||||
static inline void _debug_uart_init(void)
|
||||
{
|
||||
- struct arc_serial_regs *regs = (struct arc_serial_regs *)CONFIG_DEBUG_UART_BASE;
|
||||
+ struct arc_serial_regs *regs = (struct arc_serial_regs *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
int arc_console_baud = CONFIG_DEBUG_UART_CLOCK / (CONFIG_BAUDRATE * 4) - 1;
|
||||
|
||||
writeb(arc_console_baud & 0xff, ®s->baudl);
|
||||
@@ -146,7 +146,7 @@ static inline void _debug_uart_init(void
|
||||
|
||||
static inline void _debug_uart_putc(int c)
|
||||
{
|
||||
- struct arc_serial_regs *regs = (struct arc_serial_regs *)CONFIG_DEBUG_UART_BASE;
|
||||
+ struct arc_serial_regs *regs = (struct arc_serial_regs *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
|
||||
while (!(readb(®s->status) & UART_TXEMPTY))
|
||||
;
|
||||
--- a/drivers/serial/serial_bcm6345.c
|
||||
+++ b/drivers/serial/serial_bcm6345.c
|
||||
@@ -269,7 +269,7 @@ U_BOOT_DRIVER(bcm6345_serial) = {
|
||||
#ifdef CONFIG_DEBUG_UART_BCM6345
|
||||
static inline void _debug_uart_init(void)
|
||||
{
|
||||
- void __iomem *base = (void __iomem *)CONFIG_DEBUG_UART_BASE;
|
||||
+ void __iomem *base = (void __iomem *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
|
||||
bcm6345_serial_init(base, CONFIG_DEBUG_UART_CLOCK, CONFIG_BAUDRATE);
|
||||
}
|
||||
@@ -285,7 +285,7 @@ static inline void wait_xfered(void __io
|
||||
|
||||
static inline void _debug_uart_putc(int ch)
|
||||
{
|
||||
- void __iomem *base = (void __iomem *)CONFIG_DEBUG_UART_BASE;
|
||||
+ void __iomem *base = (void __iomem *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
|
||||
wait_xfered(base);
|
||||
writel(ch, base + UART_FIFO_REG);
|
||||
--- a/drivers/serial/serial_linflexuart.c
|
||||
+++ b/drivers/serial/serial_linflexuart.c
|
||||
@@ -201,14 +201,14 @@ U_BOOT_DRIVER(serial_linflex) = {
|
||||
|
||||
static inline void _debug_uart_init(void)
|
||||
{
|
||||
- struct linflex_fsl *base = (struct linflex_fsl *)CONFIG_DEBUG_UART_BASE;
|
||||
+ struct linflex_fsl *base = (struct linflex_fsl *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
|
||||
linflex_serial_init_internal(base);
|
||||
}
|
||||
|
||||
static inline void _debug_uart_putc(int ch)
|
||||
{
|
||||
- struct linflex_fsl *base = (struct linflex_fsl *)CONFIG_DEBUG_UART_BASE;
|
||||
+ struct linflex_fsl *base = (struct linflex_fsl *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
|
||||
/* XXX: Is this OK? Should this use the non-DM version? */
|
||||
_linflex_serial_putc(base, ch);
|
||||
--- a/drivers/serial/serial_meson.c
|
||||
+++ b/drivers/serial/serial_meson.c
|
||||
@@ -182,7 +182,7 @@ static inline void _debug_uart_init(void
|
||||
|
||||
static inline void _debug_uart_putc(int ch)
|
||||
{
|
||||
- struct meson_uart *regs = (struct meson_uart *)CONFIG_DEBUG_UART_BASE;
|
||||
+ struct meson_uart *regs = (struct meson_uart *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
|
||||
while (readl(®s->status) & AML_UART_TX_FULL)
|
||||
;
|
||||
--- a/drivers/serial/serial_msm_geni.c
|
||||
+++ b/drivers/serial/serial_msm_geni.c
|
||||
@@ -569,7 +569,7 @@ U_BOOT_DRIVER(serial_msm_geni) = {
|
||||
#ifdef CONFIG_DEBUG_UART_MSM_GENI
|
||||
|
||||
static struct msm_serial_data init_serial_data = {
|
||||
- .base = CONFIG_DEBUG_UART_BASE
|
||||
+ .base = CONFIG_VAL(DEBUG_UART_BASE)
|
||||
};
|
||||
|
||||
/* Serial dumb device, to reuse driver code */
|
||||
@@ -587,7 +587,7 @@ static struct udevice init_dev = {
|
||||
|
||||
static inline void _debug_uart_init(void)
|
||||
{
|
||||
- phys_addr_t base = CONFIG_DEBUG_UART_BASE;
|
||||
+ phys_addr_t base = CONFIG_VAL(DEBUG_UART_BASE);
|
||||
|
||||
geni_serial_init(&init_dev);
|
||||
geni_serial_baud(base, CLK_DIV, CONFIG_BAUDRATE);
|
||||
@@ -596,7 +596,7 @@ static inline void _debug_uart_init(void
|
||||
|
||||
static inline void _debug_uart_putc(int ch)
|
||||
{
|
||||
- phys_addr_t base = CONFIG_DEBUG_UART_BASE;
|
||||
+ phys_addr_t base = CONFIG_VAL(DEBUG_UART_BASE);
|
||||
|
||||
writel(DEF_TX_WM, base + SE_GENI_TX_WATERMARK_REG);
|
||||
qcom_geni_serial_setup_tx(base, 1);
|
||||
--- a/drivers/serial/serial_mt7620.c
|
||||
+++ b/drivers/serial/serial_mt7620.c
|
||||
@@ -220,7 +220,7 @@ static inline void _debug_uart_init(void
|
||||
{
|
||||
struct mt7620_serial_plat plat;
|
||||
|
||||
- plat.regs = (void *)CONFIG_DEBUG_UART_BASE;
|
||||
+ plat.regs = (void *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
plat.clock = CONFIG_DEBUG_UART_CLOCK;
|
||||
|
||||
writel(0, &plat.regs->ier);
|
||||
@@ -233,7 +233,7 @@ static inline void _debug_uart_init(void
|
||||
static inline void _debug_uart_putc(int ch)
|
||||
{
|
||||
struct mt7620_serial_regs __iomem *regs =
|
||||
- (void *)CONFIG_DEBUG_UART_BASE;
|
||||
+ (void *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
|
||||
while (!(readl(®s->lsr) & UART_LSR_THRE))
|
||||
;
|
||||
--- a/drivers/serial/serial_mtk.c
|
||||
+++ b/drivers/serial/serial_mtk.c
|
||||
@@ -426,7 +426,7 @@ static inline void _debug_uart_init(void
|
||||
{
|
||||
struct mtk_serial_priv priv;
|
||||
|
||||
- priv.regs = (void *) CONFIG_DEBUG_UART_BASE;
|
||||
+ priv.regs = (void *) CONFIG_VAL(DEBUG_UART_BASE);
|
||||
priv.clock = CONFIG_DEBUG_UART_CLOCK;
|
||||
|
||||
writel(0, &priv.regs->ier);
|
||||
@@ -439,7 +439,7 @@ static inline void _debug_uart_init(void
|
||||
static inline void _debug_uart_putc(int ch)
|
||||
{
|
||||
struct mtk_serial_regs __iomem *regs =
|
||||
- (void *) CONFIG_DEBUG_UART_BASE;
|
||||
+ (void *) CONFIG_VAL(DEBUG_UART_BASE);
|
||||
|
||||
while (!(readl(®s->lsr) & UART_LSR_THRE))
|
||||
;
|
||||
--- a/drivers/serial/serial_mvebu_a3700.c
|
||||
+++ b/drivers/serial/serial_mvebu_a3700.c
|
||||
@@ -321,7 +321,7 @@ U_BOOT_DRIVER(serial_mvebu) = {
|
||||
|
||||
static inline void _debug_uart_init(void)
|
||||
{
|
||||
- void __iomem *base = (void __iomem *)CONFIG_DEBUG_UART_BASE;
|
||||
+ void __iomem *base = (void __iomem *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
u32 parent_rate, divider;
|
||||
|
||||
/* reset FIFOs */
|
||||
@@ -349,7 +349,7 @@ static inline void _debug_uart_init(void
|
||||
|
||||
static inline void _debug_uart_putc(int ch)
|
||||
{
|
||||
- void __iomem *base = (void __iomem *)CONFIG_DEBUG_UART_BASE;
|
||||
+ void __iomem *base = (void __iomem *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
|
||||
while (readl(base + UART_STATUS_REG) & UART_STATUS_TXFIFO_FULL)
|
||||
;
|
||||
--- a/drivers/serial/serial_mxc.c
|
||||
+++ b/drivers/serial/serial_mxc.c
|
||||
@@ -372,7 +372,7 @@ U_BOOT_DRIVER(serial_mxc) = {
|
||||
|
||||
static inline void _debug_uart_init(void)
|
||||
{
|
||||
- struct mxc_uart *base = (struct mxc_uart *)CONFIG_DEBUG_UART_BASE;
|
||||
+ struct mxc_uart *base = (struct mxc_uart *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
|
||||
_mxc_serial_init(base, false);
|
||||
_mxc_serial_setbrg(base, CONFIG_DEBUG_UART_CLOCK,
|
||||
@@ -381,7 +381,7 @@ static inline void _debug_uart_init(void
|
||||
|
||||
static inline void _debug_uart_putc(int ch)
|
||||
{
|
||||
- struct mxc_uart *base = (struct mxc_uart *)CONFIG_DEBUG_UART_BASE;
|
||||
+ struct mxc_uart *base = (struct mxc_uart *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
|
||||
while (!(readl(&base->ts) & UTS_TXEMPTY))
|
||||
WATCHDOG_RESET();
|
||||
--- a/drivers/serial/serial_omap.c
|
||||
+++ b/drivers/serial/serial_omap.c
|
||||
@@ -66,7 +66,7 @@ static inline int serial_in_shift(void *
|
||||
|
||||
static inline void _debug_uart_init(void)
|
||||
{
|
||||
- struct ns16550 *com_port = (struct ns16550 *)CONFIG_DEBUG_UART_BASE;
|
||||
+ struct ns16550 *com_port = (struct ns16550 *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
int baud_divisor;
|
||||
|
||||
baud_divisor = ns16550_calc_divisor(com_port, CONFIG_DEBUG_UART_CLOCK,
|
||||
@@ -85,7 +85,7 @@ static inline void _debug_uart_init(void
|
||||
|
||||
static inline void _debug_uart_putc(int ch)
|
||||
{
|
||||
- struct ns16550 *com_port = (struct ns16550 *)CONFIG_DEBUG_UART_BASE;
|
||||
+ struct ns16550 *com_port = (struct ns16550 *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
|
||||
while (!(serial_din(&com_port->lsr) & UART_LSR_THRE))
|
||||
;
|
||||
--- a/drivers/serial/serial_pic32.c
|
||||
+++ b/drivers/serial/serial_pic32.c
|
||||
@@ -187,14 +187,14 @@ U_BOOT_DRIVER(pic32_serial) = {
|
||||
|
||||
static inline void _debug_uart_init(void)
|
||||
{
|
||||
- void __iomem *base = (void __iomem *)CONFIG_DEBUG_UART_BASE;
|
||||
+ void __iomem *base = (void __iomem *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
|
||||
pic32_serial_init(base, CONFIG_DEBUG_UART_CLOCK, CONFIG_BAUDRATE);
|
||||
}
|
||||
|
||||
static inline void _debug_uart_putc(int ch)
|
||||
{
|
||||
- writel(ch, CONFIG_DEBUG_UART_BASE + U_TXR);
|
||||
+ writel(ch, CONFIG_VAL(DEBUG_UART_BASE) + U_TXR);
|
||||
}
|
||||
|
||||
DEBUG_UART_FUNCS
|
||||
--- a/drivers/serial/serial_pl01x.c
|
||||
+++ b/drivers/serial/serial_pl01x.c
|
||||
@@ -403,7 +403,7 @@ U_BOOT_DRIVER(serial_pl01x) = {
|
||||
static void _debug_uart_init(void)
|
||||
{
|
||||
#ifndef CONFIG_DEBUG_UART_SKIP_INIT
|
||||
- struct pl01x_regs *regs = (struct pl01x_regs *)CONFIG_DEBUG_UART_BASE;
|
||||
+ struct pl01x_regs *regs = (struct pl01x_regs *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
enum pl01x_type type;
|
||||
|
||||
if (IS_ENABLED(CONFIG_DEBUG_UART_PL011))
|
||||
@@ -419,7 +419,7 @@ static void _debug_uart_init(void)
|
||||
|
||||
static inline void _debug_uart_putc(int ch)
|
||||
{
|
||||
- struct pl01x_regs *regs = (struct pl01x_regs *)CONFIG_DEBUG_UART_BASE;
|
||||
+ struct pl01x_regs *regs = (struct pl01x_regs *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
|
||||
while (pl01x_putc(regs, ch) == -EAGAIN)
|
||||
;
|
||||
--- a/drivers/serial/serial_s5p.c
|
||||
+++ b/drivers/serial/serial_s5p.c
|
||||
@@ -276,7 +276,7 @@ static inline void _debug_uart_init(void
|
||||
if (IS_ENABLED(CONFIG_DEBUG_UART_SKIP_INIT))
|
||||
return;
|
||||
|
||||
- struct s5p_uart *uart = (struct s5p_uart *)CONFIG_DEBUG_UART_BASE;
|
||||
+ struct s5p_uart *uart = (struct s5p_uart *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
|
||||
s5p_serial_init(uart);
|
||||
#if CONFIG_IS_ENABLED(ARCH_APPLE)
|
||||
@@ -288,7 +288,7 @@ static inline void _debug_uart_init(void
|
||||
|
||||
static inline void _debug_uart_putc(int ch)
|
||||
{
|
||||
- struct s5p_uart *uart = (struct s5p_uart *)CONFIG_DEBUG_UART_BASE;
|
||||
+ struct s5p_uart *uart = (struct s5p_uart *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
|
||||
#if CONFIG_IS_ENABLED(ARCH_APPLE)
|
||||
while (readl(&uart->ufstat) & S5L_TX_FIFO_FULL);
|
||||
--- a/drivers/serial/serial_sifive.c
|
||||
+++ b/drivers/serial/serial_sifive.c
|
||||
@@ -212,7 +212,7 @@ U_BOOT_DRIVER(serial_sifive) = {
|
||||
static inline void _debug_uart_init(void)
|
||||
{
|
||||
struct uart_sifive *regs =
|
||||
- (struct uart_sifive *)CONFIG_DEBUG_UART_BASE;
|
||||
+ (struct uart_sifive *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
|
||||
_sifive_serial_setbrg(regs, CONFIG_DEBUG_UART_CLOCK,
|
||||
CONFIG_BAUDRATE);
|
||||
@@ -222,7 +222,7 @@ static inline void _debug_uart_init(void
|
||||
static inline void _debug_uart_putc(int ch)
|
||||
{
|
||||
struct uart_sifive *regs =
|
||||
- (struct uart_sifive *)CONFIG_DEBUG_UART_BASE;
|
||||
+ (struct uart_sifive *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
|
||||
while (_sifive_serial_putc(regs, ch) == -EAGAIN)
|
||||
WATCHDOG_RESET();
|
||||
--- a/drivers/serial/serial_stm32.c
|
||||
+++ b/drivers/serial/serial_stm32.c
|
||||
@@ -270,7 +270,7 @@ static inline struct stm32_uart_info *_d
|
||||
|
||||
static inline void _debug_uart_init(void)
|
||||
{
|
||||
- fdt_addr_t base = CONFIG_DEBUG_UART_BASE;
|
||||
+ fdt_addr_t base = CONFIG_VAL(DEBUG_UART_BASE);
|
||||
struct stm32_uart_info *uart_info = _debug_uart_info();
|
||||
|
||||
_stm32_serial_init(base, uart_info);
|
||||
@@ -281,7 +281,7 @@ static inline void _debug_uart_init(void
|
||||
|
||||
static inline void _debug_uart_putc(int c)
|
||||
{
|
||||
- fdt_addr_t base = CONFIG_DEBUG_UART_BASE;
|
||||
+ fdt_addr_t base = CONFIG_VAL(DEBUG_UART_BASE);
|
||||
struct stm32_uart_info *uart_info = _debug_uart_info();
|
||||
|
||||
while (_stm32_serial_putc(base, uart_info, c) == -EAGAIN)
|
||||
--- a/drivers/serial/serial_xuartlite.c
|
||||
+++ b/drivers/serial/serial_xuartlite.c
|
||||
@@ -143,7 +143,7 @@ U_BOOT_DRIVER(serial_uartlite) = {
|
||||
|
||||
static inline void _debug_uart_init(void)
|
||||
{
|
||||
- struct uartlite *regs = (struct uartlite *)CONFIG_DEBUG_UART_BASE;
|
||||
+ struct uartlite *regs = (struct uartlite *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
int ret;
|
||||
|
||||
uart_out32(®s->control, 0);
|
||||
@@ -159,7 +159,7 @@ static inline void _debug_uart_init(void
|
||||
|
||||
static inline void _debug_uart_putc(int ch)
|
||||
{
|
||||
- struct uartlite *regs = (struct uartlite *)CONFIG_DEBUG_UART_BASE;
|
||||
+ struct uartlite *regs = (struct uartlite *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
|
||||
while (uart_in32(®s->status) & SR_TX_FIFO_FULL)
|
||||
;
|
||||
--- a/drivers/serial/serial_zynq.c
|
||||
+++ b/drivers/serial/serial_zynq.c
|
||||
@@ -295,7 +295,7 @@ U_BOOT_DRIVER(serial_zynq) = {
|
||||
#ifdef CONFIG_DEBUG_UART_ZYNQ
|
||||
static inline void _debug_uart_init(void)
|
||||
{
|
||||
- struct uart_zynq *regs = (struct uart_zynq *)CONFIG_DEBUG_UART_BASE;
|
||||
+ struct uart_zynq *regs = (struct uart_zynq *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
|
||||
_uart_zynq_serial_init(regs);
|
||||
_uart_zynq_serial_setbrg(regs, CONFIG_DEBUG_UART_CLOCK,
|
||||
@@ -304,7 +304,7 @@ static inline void _debug_uart_init(void
|
||||
|
||||
static inline void _debug_uart_putc(int ch)
|
||||
{
|
||||
- struct uart_zynq *regs = (struct uart_zynq *)CONFIG_DEBUG_UART_BASE;
|
||||
+ struct uart_zynq *regs = (struct uart_zynq *)CONFIG_VAL(DEBUG_UART_BASE);
|
||||
|
||||
while (_uart_zynq_serial_putc(regs, ch) == -EAGAIN)
|
||||
WATCHDOG_RESET();
|
||||
@ -47,7 +47,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
|
||||
--- a/arch/arm/dts/Makefile
|
||||
+++ b/arch/arm/dts/Makefile
|
||||
@@ -1205,6 +1205,12 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
|
||||
@@ -1233,6 +1233,12 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
|
||||
mt7622-bananapi-bpi-r64.dtb \
|
||||
mt7623n-bananapi-bpi-r2.dtb \
|
||||
mt7629-rfb.dtb \
|
||||
|
||||
@ -40,7 +40,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
|
||||
--- a/arch/arm/dts/Makefile
|
||||
+++ b/arch/arm/dts/Makefile
|
||||
@@ -1205,6 +1205,9 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
|
||||
@@ -1233,6 +1233,9 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
|
||||
mt7622-bananapi-bpi-r64.dtb \
|
||||
mt7623n-bananapi-bpi-r2.dtb \
|
||||
mt7629-rfb.dtb \
|
||||
|
||||
@ -17,7 +17,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
|
||||
|
||||
--- a/drivers/spi/Kconfig
|
||||
+++ b/drivers/spi/Kconfig
|
||||
@@ -262,6 +262,14 @@ config MTK_SNFI_SPI
|
||||
@@ -276,6 +276,14 @@ config MTK_SNFI_SPI
|
||||
used to access SPI memory devices like SPI-NOR or SPI-NAND on
|
||||
platforms embedding this IP core, like MT7622/M7629.
|
||||
|
||||
@ -34,7 +34,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
|
||||
select CLK_ARMADA_3720
|
||||
--- a/drivers/spi/Makefile
|
||||
+++ b/drivers/spi/Makefile
|
||||
@@ -41,6 +41,7 @@ obj-$(CONFIG_MPC8XX_SPI) += mpc8xx_spi.o
|
||||
@@ -43,6 +43,7 @@ obj-$(CONFIG_MPC8XX_SPI) += mpc8xx_spi.o
|
||||
obj-$(CONFIG_MPC8XXX_SPI) += mpc8xxx_spi.o
|
||||
obj-$(CONFIG_MTK_SNFI_SPI) += mtk_snfi_spi.o
|
||||
obj-$(CONFIG_MTK_SNOR) += mtk_snor.o
|
||||
|
||||
@ -41,8 +41,8 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
obj-$(CONFIG_SYS_I2C_MXC) += mxc_i2c.o
|
||||
+obj-$(CONFIG_SYS_I2C_MTK) += mtk_i2c.o
|
||||
obj-$(CONFIG_SYS_I2C_NEXELL) += nx_i2c.o
|
||||
obj-$(CONFIG_SYS_I2C_NPCM) += npcm_i2c.o
|
||||
obj-$(CONFIG_SYS_I2C_OCORES) += ocores_i2c.o
|
||||
obj-$(CONFIG_SYS_I2C_OCTEON) += octeon_i2c.o
|
||||
--- /dev/null
|
||||
+++ b/drivers/i2c/mtk_i2c.c
|
||||
@@ -0,0 +1,822 @@
|
||||
|
||||
@ -21,7 +21,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
+obj-$(CONFIG_ARCH_MEDIATEK) += mtk_cpu.o
|
||||
obj-$(CONFIG_CPU_MPC83XX) += mpc83xx_cpu.o
|
||||
obj-$(CONFIG_CPU_RISCV) += riscv_cpu.o
|
||||
obj-$(CONFIG_SANDBOX) += cpu_sandbox.o
|
||||
obj-$(CONFIG_CPU_MICROBLAZE) += microblaze_cpu.o
|
||||
--- /dev/null
|
||||
+++ b/drivers/cpu/mtk_cpu.c
|
||||
@@ -0,0 +1,106 @@
|
||||
|
||||
@ -14,7 +14,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -340,20 +340,26 @@ F: doc/device-tree-bindings/phy/phy-mtk-
|
||||
@@ -356,20 +356,26 @@ F: doc/device-tree-bindings/phy/phy-mtk-
|
||||
F: doc/device-tree-bindings/usb/mediatek,*
|
||||
F: doc/README.mediatek
|
||||
F: drivers/clk/mediatek/
|
||||
@ -40,4 +40,4 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
+F: tools/mtk_nand_headers.h
|
||||
N: mediatek
|
||||
|
||||
ARM MICROCHIP/ATMEL AT91
|
||||
ARM METHODE SUPPORT
|
||||
|
||||
@ -1,182 +0,0 @@
|
||||
From baef13ec9d592a27b5d3bf03967bfd2bebd65157 Mon Sep 17 00:00:00 2001
|
||||
From: Ashok Reddy Soma <ashok.reddy.soma@xilinx.com>
|
||||
Date: Wed, 25 May 2022 10:47:12 +0530
|
||||
Subject: [PATCH] mtd: spi-nor-ids: Add support for flashes tested by xilinx
|
||||
|
||||
Add support for various flashes from below manufacturers which are tested
|
||||
by xilinx for years.
|
||||
|
||||
EON:
|
||||
en25q128b
|
||||
GIGA:
|
||||
gd25lx256e
|
||||
ISSI:
|
||||
is25lp008
|
||||
is25lp016
|
||||
is25lp01g
|
||||
is25wp008
|
||||
is25wp016
|
||||
is25wp01g
|
||||
is25wx256
|
||||
MACRONIX:
|
||||
mx25u51245f
|
||||
mx66u1g45g
|
||||
mx66l2g45g
|
||||
MICRON:
|
||||
mt35xl512aba
|
||||
mt35xu01g
|
||||
SPANSION:
|
||||
s70fs01gs_256k
|
||||
SST:
|
||||
sst26wf016b
|
||||
WINBOND:
|
||||
w25q16dw
|
||||
w25q16jv
|
||||
w25q512jv
|
||||
w25q32bv
|
||||
w25h02jv
|
||||
|
||||
Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@xilinx.com>
|
||||
Link: https://lore.kernel.org/r/1653455832-14763-1-git-send-email-ashok.reddy.soma@xilinx.com
|
||||
Signed-off-by: Michal Simek <michal.simek@amd.com>
|
||||
---
|
||||
drivers/mtd/spi/spi-nor-ids.c | 37 +++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 37 insertions(+)
|
||||
|
||||
--- a/drivers/mtd/spi/spi-nor-ids.c
|
||||
+++ b/drivers/mtd/spi/spi-nor-ids.c
|
||||
@@ -82,6 +82,7 @@ const struct flash_info spi_nor_ids[] =
|
||||
/* EON -- en25xxx */
|
||||
{ INFO("en25q32b", 0x1c3016, 0, 64 * 1024, 64, 0) },
|
||||
{ INFO("en25q64", 0x1c3017, 0, 64 * 1024, 128, SECT_4K) },
|
||||
+ { INFO("en25q128b", 0x1c3018, 0, 64 * 1024, 256, 0) },
|
||||
{ INFO("en25qh128", 0x1c7018, 0, 64 * 1024, 256, 0) },
|
||||
{ INFO("en25s64", 0x1c3817, 0, 64 * 1024, 128, SECT_4K) },
|
||||
#endif
|
||||
@@ -127,11 +128,17 @@ const struct flash_info spi_nor_ids[] =
|
||||
SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ |
|
||||
SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
|
||||
},
|
||||
+ {
|
||||
+ INFO("gd25lx256e", 0xc86819, 0, 64 * 1024, 512,
|
||||
+ SECT_4K | SPI_NOR_OCTAL_READ | SPI_NOR_4B_OPCODES)
|
||||
+ },
|
||||
#endif
|
||||
#ifdef CONFIG_SPI_FLASH_ISSI /* ISSI */
|
||||
/* ISSI */
|
||||
{ INFO("is25lq040b", 0x9d4013, 0, 64 * 1024, 8,
|
||||
SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||
+ { INFO("is25lp008", 0x9d6014, 0, 64 * 1024, 16, SPI_NOR_QUAD_READ) },
|
||||
+ { INFO("is25lp016", 0x9d6015, 0, 64 * 1024, 32, SPI_NOR_QUAD_READ) },
|
||||
{ INFO("is25lp032", 0x9d6016, 0, 64 * 1024, 64, 0) },
|
||||
{ INFO("is25lp064", 0x9d6017, 0, 64 * 1024, 128, 0) },
|
||||
{ INFO("is25lp128", 0x9d6018, 0, 64 * 1024, 256,
|
||||
@@ -140,6 +147,10 @@ const struct flash_info spi_nor_ids[] =
|
||||
SECT_4K | SPI_NOR_DUAL_READ) },
|
||||
{ INFO("is25lp512", 0x9d601a, 0, 64 * 1024, 1024,
|
||||
SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||
+ { INFO("is25lp01g", 0x9d601b, 0, 64 * 1024, 2048,
|
||||
+ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||
+ { INFO("is25wp008", 0x9d7014, 0, 64 * 1024, 16, SPI_NOR_QUAD_READ) },
|
||||
+ { INFO("is25wp016", 0x9d7015, 0, 64 * 1024, 32, SPI_NOR_QUAD_READ) },
|
||||
{ INFO("is25wp032", 0x9d7016, 0, 64 * 1024, 64,
|
||||
SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||
{ INFO("is25wp064", 0x9d7017, 0, 64 * 1024, 128,
|
||||
@@ -151,6 +162,10 @@ const struct flash_info spi_nor_ids[] =
|
||||
SPI_NOR_4B_OPCODES) },
|
||||
{ INFO("is25wp512", 0x9d701a, 0, 64 * 1024, 1024,
|
||||
SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||
+ { INFO("is25wp01g", 0x9d701b, 0, 64 * 1024, 2048,
|
||||
+ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||
+ { INFO("is25wx256", 0x9d5b19, 0, 128 * 1024, 256,
|
||||
+ SECT_4K | USE_FSR | SPI_NOR_OCTAL_READ | SPI_NOR_4B_OPCODES) },
|
||||
#endif
|
||||
#ifdef CONFIG_SPI_FLASH_MACRONIX /* MACRONIX */
|
||||
/* Macronix */
|
||||
@@ -176,8 +191,11 @@ const struct flash_info spi_nor_ids[] =
|
||||
{ INFO("mx25l25655e", 0xc22619, 0, 64 * 1024, 512, 0) },
|
||||
{ INFO("mx66l51235l", 0xc2201a, 0, 64 * 1024, 1024, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES) },
|
||||
{ INFO("mx66u51235f", 0xc2253a, 0, 64 * 1024, 1024, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES) },
|
||||
+ { INFO("mx25u51245f", 0xc2953a, 0, 64 * 1024, 1024, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES) },
|
||||
+ { INFO("mx66u1g45g", 0xc2253b, 0, 64 * 1024, 2048, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES) },
|
||||
{ INFO("mx66u2g45g", 0xc2253c, 0, 64 * 1024, 4096, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES) },
|
||||
{ INFO("mx66l1g45g", 0xc2201b, 0, 64 * 1024, 2048, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||
+ { INFO("mx66l2g45g", 0xc2201c, 0, 64 * 1024, 4096, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES) },
|
||||
{ INFO("mx25l1633e", 0xc22415, 0, 64 * 1024, 32, SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES | SECT_4K) },
|
||||
{ INFO("mx25r6435f", 0xc22817, 0, 64 * 1024, 128, SECT_4K) },
|
||||
{ INFO("mx66uw2g345g", 0xc2943c, 0, 64 * 1024, 4096, SECT_4K | SPI_NOR_OCTAL_READ | SPI_NOR_4B_OPCODES) },
|
||||
@@ -208,8 +226,10 @@ const struct flash_info spi_nor_ids[] =
|
||||
{ INFO("mt25qu02g", 0x20bb22, 0, 64 * 1024, 4096, SECT_4K | USE_FSR | SPI_NOR_QUAD_READ | NO_CHIP_ERASE) },
|
||||
{ INFO("mt25ql02g", 0x20ba22, 0, 64 * 1024, 4096, SECT_4K | USE_FSR | SPI_NOR_QUAD_READ | NO_CHIP_ERASE | SPI_NOR_4B_OPCODES) },
|
||||
#ifdef CONFIG_SPI_FLASH_MT35XU
|
||||
+ { INFO("mt35xl512aba", 0x2c5a1a, 0, 128 * 1024, 512, USE_FSR | SPI_NOR_OCTAL_READ | SPI_NOR_4B_OPCODES | SPI_NOR_OCTAL_DTR_READ) },
|
||||
{ INFO("mt35xu512aba", 0x2c5b1a, 0, 128 * 1024, 512, USE_FSR | SPI_NOR_OCTAL_READ | SPI_NOR_4B_OPCODES | SPI_NOR_OCTAL_DTR_READ) },
|
||||
#endif /* CONFIG_SPI_FLASH_MT35XU */
|
||||
+ { INFO6("mt35xu01g", 0x2c5b1b, 0x104100, 128 * 1024, 1024, USE_FSR | SPI_NOR_OCTAL_READ | SPI_NOR_4B_OPCODES) },
|
||||
{ INFO("mt35xu02g", 0x2c5b1c, 0, 128 * 1024, 2048, USE_FSR | SPI_NOR_OCTAL_READ | SPI_NOR_4B_OPCODES) },
|
||||
#endif
|
||||
#ifdef CONFIG_SPI_FLASH_SPANSION /* SPANSION */
|
||||
@@ -225,6 +245,7 @@ const struct flash_info spi_nor_ids[] =
|
||||
{ INFO("s25fl512s_256k", 0x010220, 0x4d00, 256 * 1024, 256, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | USE_CLSR) },
|
||||
{ INFO("s25fl512s_64k", 0x010220, 0x4d01, 64 * 1024, 1024, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | USE_CLSR) },
|
||||
{ INFO("s25fl512s_512k", 0x010220, 0x4f00, 256 * 1024, 256, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | USE_CLSR) },
|
||||
+ { INFO("s70fs01gs_256k", 0x010221, 0x4d00, 256 * 1024, 512, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||
{ INFO("s25sl12800", 0x012018, 0x0300, 256 * 1024, 64, 0) },
|
||||
{ INFO("s25sl12801", 0x012018, 0x0301, 64 * 1024, 256, 0) },
|
||||
{ INFO6("s25fl128s", 0x012018, 0x4d0180, 64 * 1024, 256, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | USE_CLSR) },
|
||||
@@ -275,6 +296,7 @@ const struct flash_info spi_nor_ids[] =
|
||||
{ INFO("sst25wf040", 0xbf2504, 0, 64 * 1024, 8, SECT_4K | SST_WRITE) },
|
||||
{ INFO("sst25wf080", 0xbf2505, 0, 64 * 1024, 16, SECT_4K | SST_WRITE) },
|
||||
{ INFO("sst26vf064b", 0xbf2643, 0, 64 * 1024, 128, SECT_4K | SPI_NOR_HAS_SST26LOCK | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||
+ { INFO("sst26wf016b", 0xbf2641, 0, 64 * 1024, 32, SECT_4K) },
|
||||
{ INFO("sst26wf016", 0xbf2651, 0, 64 * 1024, 32, SECT_4K | SPI_NOR_HAS_SST26LOCK) },
|
||||
{ INFO("sst26wf032", 0xbf2622, 0, 64 * 1024, 64, SECT_4K | SPI_NOR_HAS_SST26LOCK) },
|
||||
{ INFO("sst26wf064", 0xbf2643, 0, 64 * 1024, 128, SECT_4K | SPI_NOR_HAS_SST26LOCK) },
|
||||
@@ -312,11 +334,19 @@ const struct flash_info spi_nor_ids[] =
|
||||
{ INFO("w25q20ew", 0xef6012, 0, 64 * 1024, 4, SECT_4K) },
|
||||
{ INFO("w25q32", 0xef4016, 0, 64 * 1024, 64, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||
{
|
||||
+ INFO("w25q16dw", 0xef6015, 0, 64 * 1024, 32,
|
||||
+ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ)
|
||||
+ },
|
||||
+ {
|
||||
INFO("w25q32dw", 0xef6016, 0, 64 * 1024, 64,
|
||||
SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ |
|
||||
SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
|
||||
},
|
||||
{
|
||||
+ INFO("w25q16jv", 0xef7015, 0, 64 * 1024, 32,
|
||||
+ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ)
|
||||
+ },
|
||||
+ {
|
||||
INFO("w25q32jv", 0xef7016, 0, 64 * 1024, 64,
|
||||
SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ |
|
||||
SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
|
||||
@@ -363,6 +393,11 @@ const struct flash_info spi_nor_ids[] =
|
||||
SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
|
||||
},
|
||||
{
|
||||
+ INFO("w25q512jv", 0xef7119, 0, 64 * 1024, 512,
|
||||
+ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ |
|
||||
+ SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
|
||||
+ },
|
||||
+ {
|
||||
INFO("w25q01jv", 0xef4021, 0, 64 * 1024, 2048,
|
||||
SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ |
|
||||
SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
|
||||
@@ -370,6 +405,7 @@ const struct flash_info spi_nor_ids[] =
|
||||
{ INFO("w25q80", 0xef5014, 0, 64 * 1024, 16, SECT_4K) },
|
||||
{ INFO("w25q80bl", 0xef4014, 0, 64 * 1024, 16, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||
{ INFO("w25q16cl", 0xef4015, 0, 64 * 1024, 32, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||
+ { INFO("w25q32bv", 0xef4016, 0, 64 * 1024, 64, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||
{ INFO("w25q64cv", 0xef4017, 0, 64 * 1024, 128, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||
{ INFO("w25q128", 0xef4018, 0, 64 * 1024, 256,
|
||||
SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ |
|
||||
@@ -378,6 +414,7 @@ const struct flash_info spi_nor_ids[] =
|
||||
{ INFO("w25q256", 0xef4019, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||
{ INFO("w25m512jw", 0xef6119, 0, 64 * 1024, 1024, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||
{ INFO("w25m512jv", 0xef7119, 0, 64 * 1024, 1024, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||
+ { INFO("w25h02jv", 0xef9022, 0, 64 * 1024, 4096, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||
#endif
|
||||
#ifdef CONFIG_SPI_FLASH_XMC
|
||||
/* XMC (Wuhan Xinxin Semiconductor Manufacturing Corp.) */
|
||||
@ -1,614 +0,0 @@
|
||||
From 4290ed7835e0a76792b8e554ae79e3f6d52ac800 Mon Sep 17 00:00:00 2001
|
||||
From: JaimeLiao <jaimeliao.tw@gmail.com>
|
||||
Date: Mon, 18 Jul 2022 14:49:22 +0800
|
||||
Subject: [PATCH] mtd: spi-nor-core: Add support for Macronix Octal flash
|
||||
|
||||
Adding Macronix Octal flash for Octal DTR support.
|
||||
|
||||
The octaflash series can be divided into the following types:
|
||||
|
||||
MX25 series : Serial NOR Flash.
|
||||
MX66 series : Serial NOR Flash with stacked die.(Size larger than 1Gb)
|
||||
LM/UM series : Up to 250MHz clock frequency with both DTR/STR operation.
|
||||
LW/UW series : Support simultaneous Read-while-Write operation in multiple
|
||||
bank architecture. Read-while-write feature which means read
|
||||
data one bank while another bank is programing or erasing.
|
||||
|
||||
MX25LM : 3.0V Octal I/O
|
||||
-https://www.mxic.com.tw/Lists/Datasheet/Attachments/7841/MX25LM51245G,%203V,%20512Mb,%20v1.1.pdf
|
||||
|
||||
MX25UM : 1.8V Octal I/O
|
||||
-https://www.mxic.com.tw/Lists/Datasheet/Attachments/7525/MX25UM51245G%20Extreme%20Speed,%201.8V,%20512Mb,%20v1.0.pdf
|
||||
|
||||
MX66LM : 3.0V Octal I/O with stacked die
|
||||
-https://www.mxic.com.tw/Lists/Datasheet/Attachments/7929/MX66LM1G45G,%203V,%201Gb,%20v1.1.pdf
|
||||
|
||||
MX66UM : 1.8V Octal I/O with stacked die
|
||||
-https://www.mxic.com.tw/Lists/Datasheet/Attachments/7721/MX66UM1G45G,%201.8V,%201Gb,%20v1.1.pdf
|
||||
|
||||
MX25LW : 3.0V Octal I/O with Read-while-Write
|
||||
MX25UW : 1.8V Octal I/O with Read-while-Write
|
||||
MX66LW : 3.0V Octal I/O with Read-while-Write and stack die
|
||||
MX66UW : 1.8V Octal I/O with Read-while-Write and stack die
|
||||
|
||||
About LW/UW series, please contact us freely if you have any
|
||||
questions. For adding Octal NOR Flash IDs, we have validated
|
||||
each Flash on plateform zynq-picozed.
|
||||
|
||||
As below are the SFDP table dump.
|
||||
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/jedec_id
|
||||
c2943c
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/manufacturer
|
||||
macronix
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/partname
|
||||
mx66uw2g345gx0
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/sfdp > mx66uw2g345gx0
|
||||
zynq> hexdump mx66uw2g345gx0
|
||||
0000000 4653 5044 0108 fd04 0700 1401 0040 ff00
|
||||
0000010 0187 1c01 0090 ff00 000a 0801 0100 ff00
|
||||
0000020 0005 0501 0120 ff00 0084 0201 0134 ff00
|
||||
0000030 0000 0000 0000 0000 ffff ffff ffff ffff
|
||||
0000040 20e5 ff8a ffff 7fff ff00 ff00 ff00 ff00
|
||||
0000050 ffee ffff ffff ff00 ffff ff00 200c d810
|
||||
0000060 ff00 ff00 7987 0001 1284 e200 04cc 4667
|
||||
0000070 b030 b030 bdf4 5cd5 0000 ff00 1010 2000
|
||||
0000080 0000 0000 0000 237c 0048 0000 0000 8888
|
||||
0000090 0000 0000 0000 4000 d10f f3ff d10f f3ff
|
||||
00000a0 0500 9000 0500 b100 2b00 9500 2b00 9600
|
||||
00000b0 7172 b803 7172 b803 0000 0000 a390 8218
|
||||
00000c0 c000 9669 0000 0000 0000 0000 7172 9800
|
||||
00000d0 7172 b800 7172 9900 0000 0000 7172 9800
|
||||
00000e0 7172 f800 7172 9900 7172 f900 0000 0000
|
||||
00000f0 0000 0000 1501 d001 7172 d806 0000 5086
|
||||
0000100 0000 0106 0000 0000 0002 0301 0200 0000
|
||||
0000110 0000 0106 0000 0000 0000 0672 0200 0000
|
||||
0000120 ee00 69c0 7272 7171 d800 f6f7 0a00 0000
|
||||
0000130 4514 8098 0643 001f dc21 ffff ffff ffff
|
||||
0000140 ffff ffff ffff ffff ffff ffff ffff ffff
|
||||
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/jedec_id
|
||||
c2853b
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/manufacturer
|
||||
macronix
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/partname
|
||||
mx66lm1g45g
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/sfdp > mx66lm1g45g
|
||||
zynq> hexdump mx66lm1g45g
|
||||
0000000 4653 5044 0108 fd04 0700 1401 0040 ff00
|
||||
0000010 0187 1c01 0090 ff00 000a 0801 0100 ff00
|
||||
0000020 0005 0501 0120 ff00 0084 0201 0134 ff00
|
||||
0000030 0000 0000 0000 0000 ffff ffff ffff ffff
|
||||
0000040 20e5 ff8a ffff 3fff ff00 ff00 ff00 ff00
|
||||
0000050 ffee ffff ffff ff00 ffff ff00 200c d810
|
||||
0000060 ff00 ff00 6987 0001 1282 e200 02cc 3867
|
||||
0000070 b030 b030 bdf4 5cd5 0000 ff00 1010 2000
|
||||
0000080 0000 0000 0000 a37c 0048 0000 0000 6666
|
||||
0000090 0000 0000 0000 4000 d10f f3ff d10f f3ff
|
||||
00000a0 0500 9000 0500 b100 2b00 9500 2b00 9600
|
||||
00000b0 7172 b803 7172 b803 0000 0000 a390 8218
|
||||
00000c0 c000 9669 0000 0000 0000 0000 7172 9800
|
||||
00000d0 7172 b800 7172 9900 0000 0000 7172 9800
|
||||
00000e0 7172 f800 7172 9900 7172 f900 0000 0000
|
||||
00000f0 0000 0000 1501 d001 7172 d806 0000 5086
|
||||
0000100 0000 0106 0000 0000 0002 0301 0200 0000
|
||||
0000110 0000 0106 0000 0000 0000 0672 0200 0000
|
||||
0000120 ee00 69c0 7272 7171 d800 f6f7 0000 0000
|
||||
0000130 3514 001c 0643 000f dc21 ffff ffff ffff
|
||||
0000140 ffff ffff ffff ffff ffff ffff ffff ffff
|
||||
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/jedec_id
|
||||
c2853a
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/manufacturer
|
||||
macronix
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/partname
|
||||
mx25lm51245g
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/sfdp > mx25lm51245g
|
||||
zynq> hexdump mx25lm51245g
|
||||
0000000 4653 5044 0108 fd04 0700 1401 0040 ff00
|
||||
0000010 0187 1c01 0090 ff00 000a 0801 0100 ff00
|
||||
0000020 0005 0501 0120 ff00 0084 0201 0134 ff00
|
||||
0000030 0000 0000 0000 0000 ffff ffff ffff ffff
|
||||
0000040 20e5 ff8a ffff 1fff ff00 ff00 ff00 ff00
|
||||
0000050 ffee ffff ffff ff00 ffff ff00 200c d810
|
||||
0000060 ff00 ff00 7989 0001 128d e200 02cc 4467
|
||||
0000070 b030 b030 bdf4 5cd5 0000 ff00 1010 2000
|
||||
0000080 0000 0000 0000 a37c 0048 0000 0000 6666
|
||||
0000090 0000 0000 0000 4000 d10f f3ff d10f f3ff
|
||||
00000a0 0500 9000 0500 b100 2b00 9500 2b00 9600
|
||||
00000b0 7172 b803 7172 b803 0000 0000 a390 8218
|
||||
00000c0 c000 9669 0000 0000 0000 0000 7172 9800
|
||||
00000d0 7172 b800 7172 9900 0000 0000 7172 9800
|
||||
00000e0 7172 f800 7172 9900 7172 f900 0000 0000
|
||||
00000f0 0000 0000 1501 d001 7172 d806 0000 5086
|
||||
0000100 0000 0106 0000 0000 0002 0301 0200 0000
|
||||
0000110 0000 0106 0000 0000 0000 0672 0200 0000
|
||||
0000120 ee00 69c0 7272 7171 d800 f6f7 0000 0000
|
||||
0000130 3514 001c 0643 000f dc21 ffff ffff ffff
|
||||
0000140 ffff ffff ffff ffff ffff ffff ffff ffff
|
||||
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/jedec_id
|
||||
c2863a
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/manufacturer
|
||||
macronix
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/partname
|
||||
mx25lw51245g
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/sfdp > mx25lw51245g
|
||||
zynq> hexdump mx25lw51245g
|
||||
0000000 4653 5044 0108 fd04 0700 1401 0040 ff00
|
||||
0000010 0187 1c01 0090 ff00 000a 0801 0100 ff00
|
||||
0000020 0005 0501 0120 ff00 0084 0201 0134 ff00
|
||||
0000030 0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000040 20e5 ff8a ffff 1fff ff00 ff00 ff00 ff00
|
||||
0000050 ffee ffff ffff ff00 ffff ff00 200c d810
|
||||
0000060 ff00 ff00 798b 0001 128f e200 04cc 4667
|
||||
0000070 b030 b030 bdf4 5cd5 0000 ff00 1010 2000
|
||||
0000080 0000 0000 0000 a37c 0048 0000 0000 6666
|
||||
0000090 0000 0000 0000 4000 d10f f3ff d10f f3ff
|
||||
00000a0 0500 9000 0500 b100 2b00 9500 2b00 9600
|
||||
00000b0 7172 b803 7172 b803 0000 0000 a390 8218
|
||||
00000c0 c000 9669 0000 0000 0000 0000 7172 9800
|
||||
00000d0 7172 b800 7172 9900 0000 0000 7172 9800
|
||||
00000e0 7172 f800 7172 9900 7172 f900 0000 0000
|
||||
00000f0 0000 0000 1501 d001 7172 d806 0000 5086
|
||||
0000100 0000 0106 0000 0000 0002 0301 0200 0000
|
||||
0000110 0000 0106 0000 0000 0000 0672 0200 0000
|
||||
0000120 ee00 69c0 7272 7171 d800 f6f7 0000 0000
|
||||
0000130 3514 001c 0643 000f dc21 ffff ffff ffff
|
||||
0000140 ffff ffff ffff ffff ffff ffff ffff ffff
|
||||
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/jedec_id
|
||||
c28539
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/manufacturer
|
||||
macronix
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/partname
|
||||
mx25lm25645g
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/sfdp > mx25lm25645g
|
||||
zynq> hexdump mx25lm25645g
|
||||
0000000 4653 5044 0108 fd04 0700 1401 0040 ff00
|
||||
0000010 0187 1c01 0090 ff00 000a 0801 0100 ff00
|
||||
0000020 0005 0501 0120 ff00 0084 0201 0134 ff00
|
||||
0000030 0000 0000 0000 0000 ffff ffff ffff ffff
|
||||
0000040 20e5 ff8a ffff 0fff ff00 ff00 ff00 ff00
|
||||
0000050 ffee ffff ffff ff00 ffff ff00 200c d810
|
||||
0000060 ff00 ff00 6987 0001 1282 d200 02cc 3867
|
||||
0000070 b030 b030 bdf4 5cd5 0000 ff00 1010 2000
|
||||
0000080 0000 0000 0000 a37c 0048 0000 0000 6666
|
||||
0000090 0000 0000 0000 4000 d10f f3ff d10f f3ff
|
||||
00000a0 0500 9000 0500 b100 2b00 9500 2b00 9600
|
||||
00000b0 7172 b803 7172 b803 0000 0000 a390 8218
|
||||
00000c0 c000 9669 0000 0000 0000 0000 7172 9800
|
||||
00000d0 7172 b800 7172 9900 0000 0000 7172 9800
|
||||
00000e0 7172 f800 7172 9900 7172 f900 0000 0000
|
||||
00000f0 0000 0000 1501 d001 7172 d806 0000 5086
|
||||
0000100 0000 0106 0000 0000 0002 0301 0200 0000
|
||||
0000110 0000 0106 0000 0000 0000 0672 0200 0000
|
||||
0000120 ee00 69c0 7272 7171 d800 f6f7 0000 0000
|
||||
0000130 3514 001c 0643 000f dc21 ffff ffff ffff
|
||||
0000140 ffff ffff ffff ffff ffff ffff ffff ffff
|
||||
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/jedec_id
|
||||
c2843c
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/manufacturer
|
||||
macronix
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/partname
|
||||
mx66uw2g345g
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/sfdp > mx66uw2g345g
|
||||
zynq> hexdump mx66uw2g345g
|
||||
0000000 4653 5044 0108 fd04 0700 1401 0040 ff00
|
||||
0000010 0187 1c01 0090 ff00 000a 0801 0100 ff00
|
||||
0000020 0005 0501 0120 ff00 0084 0201 0134 ff00
|
||||
0000030 0000 0000 0000 0000 ffff ffff ffff ffff
|
||||
0000040 20e5 ff8a ffff 7fff ff00 ff00 ff00 ff00
|
||||
0000050 ffee ffff ffff ff00 ffff ff00 200c d810
|
||||
0000060 ff00 ff00 7987 0001 1284 e200 04cc 4667
|
||||
0000070 b030 b030 bdf4 5cd5 0000 ff00 1010 2000
|
||||
0000080 0000 0000 0000 237c 0048 0000 0000 8888
|
||||
0000090 0000 0000 0000 4000 d10f f3ff d10f f3ff
|
||||
00000a0 0500 9000 0500 b100 2b00 9500 2b00 9600
|
||||
00000b0 7172 b803 7172 b803 0000 0000 a390 8218
|
||||
00000c0 c000 9669 0000 0000 0000 0000 7172 9800
|
||||
00000d0 7172 b800 7172 9900 0000 0000 7172 9800
|
||||
00000e0 7172 f800 7172 9900 7172 f900 0000 0000
|
||||
00000f0 0000 0000 1501 d001 7172 d806 0000 5086
|
||||
0000100 0000 0106 0000 0000 0002 0301 0200 0000
|
||||
0000110 0000 0106 0000 0000 0000 0672 0200 0000
|
||||
0000120 ee00 69c0 7272 7171 d800 f6f7 0a00 0000
|
||||
0000130 4514 8098 0643 001f dc21 ffff ffff ffff
|
||||
0000140 ffff ffff ffff ffff ffff ffff ffff ffff
|
||||
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/jedec_id
|
||||
c2803b
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/manufacturer
|
||||
macronix
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/partname
|
||||
mx66um1g45g
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/sfdp > mx66um1g45g
|
||||
zynq> hexdump mx66um1g45g
|
||||
0000000 4653 5044 0108 fd04 0700 1401 0040 ff00
|
||||
0000010 0187 1c01 0090 ff00 000a 0801 0100 ff00
|
||||
0000020 0005 0501 0120 ff00 0084 0201 0134 ff00
|
||||
0000030 0000 0000 0000 0000 ffff ffff ffff ffff
|
||||
0000040 20e5 ff8a ffff 3fff ff00 ff00 ff00 ff00
|
||||
0000050 ffee ffff ffff ff00 ffff ff00 200c d810
|
||||
0000060 ff00 ff00 7989 0001 128d e200 02cc 4467
|
||||
0000070 b030 b030 bdf4 5cd5 0000 ff00 1010 2000
|
||||
0000080 0000 0000 0000 a37c 0048 0000 0000 8888
|
||||
0000090 0000 0000 0000 4000 d10f f3ff d10f f3ff
|
||||
00000a0 0500 9000 0500 b100 2b00 9500 2b00 9600
|
||||
00000b0 7172 b803 7172 b803 0000 0000 a390 8218
|
||||
00000c0 c000 9669 0000 0000 0000 0000 7172 9800
|
||||
00000d0 7172 b800 7172 9900 0000 0000 7172 9800
|
||||
00000e0 7172 f800 7172 9900 7172 f900 0000 0000
|
||||
00000f0 0000 0000 1501 d001 7172 d806 0000 5086
|
||||
0000100 0000 0106 0000 0000 0002 0301 0200 0000
|
||||
0000110 0000 0106 0000 0000 0000 0672 0200 0000
|
||||
0000120 ee00 69c0 7272 7171 d800 f6f7 0a00 0000
|
||||
0000130 3514 809c 0643 000f dc21 ffff ffff ffff
|
||||
0000140 ffff ffff ffff ffff ffff ffff ffff ffff
|
||||
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/jedec_id
|
||||
c2813b
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/manufacturer
|
||||
macronix
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/partname
|
||||
mx66uw1g45g
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/sfdp > mx66uw1g45g
|
||||
zynq> hexdump mx66uw1g45g
|
||||
0000000 4653 5044 0108 fd04 0700 1401 0040 ff00
|
||||
0000010 0187 1c01 0090 ff00 000a 0801 0100 ff00
|
||||
0000020 0005 0501 0120 ff00 0084 0201 0134 ff00
|
||||
0000030 0000 0000 0000 0000 ffff ffff ffff ffff
|
||||
0000040 20e5 ff8a ffff 3fff ff00 ff00 ff00 ff00
|
||||
0000050 ffee ffff ffff ff00 ffff ff00 200c d810
|
||||
0000060 ff00 ff00 798b 0001 128f e200 04cc 4667
|
||||
0000070 b030 b030 bdf4 5cd5 0000 ff00 1010 2000
|
||||
0000080 0000 0000 0000 a37c 0048 0000 0000 8888
|
||||
0000090 0000 0000 0000 4000 d10f f3ff d10f f3ff
|
||||
00000a0 0500 9000 0500 b100 2b00 9500 2b00 9600
|
||||
00000b0 7172 b803 7172 b803 0000 0000 a390 8218
|
||||
00000c0 c000 9669 0000 0000 0000 0000 7172 9800
|
||||
00000d0 7172 b800 7172 9900 0000 0000 7172 9800
|
||||
00000e0 7172 f800 7172 9900 7172 f900 0000 0000
|
||||
00000f0 0000 0000 1501 d001 7172 d806 0000 5086
|
||||
0000100 0000 0106 0000 0000 0002 0301 0200 0000
|
||||
0000110 0000 0106 0000 0000 0000 0672 0200 0000
|
||||
0000120 ee00 69c0 7272 7171 d800 f6f7 0a00 0000
|
||||
0000130 4514 8098 0643 000f dc21 ffff ffff ffff
|
||||
0000140 ffff ffff ffff ffff ffff ffff ffff ffff
|
||||
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/jedec_id
|
||||
c2813a
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/manufacturer
|
||||
macronix
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/partname
|
||||
mx25uw51245g
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/sfdp > mx25uw51245g
|
||||
zynq> hexdump mx25uw51245g
|
||||
0000000 4653 5044 0108 fd04 0700 1401 0040 ff00
|
||||
0000010 0187 1c01 0090 ff00 000a 0801 0100 ff00
|
||||
0000020 0005 0501 0120 ff00 0084 0201 0134 ff00
|
||||
0000030 0000 0000 0000 0000 ffff ffff ffff ffff
|
||||
0000040 20e5 ff8a ffff 1fff ff00 ff00 ff00 ff00
|
||||
0000050 ffee ffff ffff ff00 ffff ff00 200c d810
|
||||
0000060 ff00 ff00 798b 0001 128f e200 04cc 4667
|
||||
0000070 b030 b030 bdf4 5cd5 0000 ff00 1010 2000
|
||||
0000080 0000 0000 0000 a37c 0048 0000 0000 7777
|
||||
0000090 0000 0000 0000 4000 d10f f3ff d10f f3ff
|
||||
00000a0 0500 9000 0500 b100 2b00 9500 2b00 9600
|
||||
00000b0 7172 b803 7172 b803 0000 0000 a390 8218
|
||||
00000c0 c000 9669 0000 0000 0000 0000 7172 9800
|
||||
00000d0 7172 b800 7172 9900 0000 0000 7172 9800
|
||||
00000e0 7172 f800 7172 9900 7172 f900 0000 0000
|
||||
00000f0 0000 0000 1501 d001 7172 d806 0000 5086
|
||||
0000100 0000 0106 0000 0000 0002 0301 0200 0000
|
||||
0000110 0000 0106 0000 0000 0000 0672 0200 0000
|
||||
0000120 ee00 69c0 7272 7171 d800 f6f7 0000 0000
|
||||
0000130 4514 8098 0643 000f dc21 ffff ffff ffff
|
||||
0000140 ffff ffff ffff ffff ffff ffff ffff ffff
|
||||
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/jedec_id
|
||||
c2843a
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/manufacturer
|
||||
macronix
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/partname
|
||||
mx25uw51345g
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/sfdp > mx25uw51345g
|
||||
zynq> hexdump mx25uw51345g
|
||||
0000000 4653 5044 0108 fd04 0700 1401 0040 ff00
|
||||
0000010 0187 1c01 0090 ff00 000a 0801 0100 ff00
|
||||
0000020 0005 0501 0120 ff00 0084 0201 0134 ff00
|
||||
0000030 0000 0000 0000 0000 ffff ffff ffff ffff
|
||||
0000040 20e5 ff8a ffff 1fff ff00 ff00 ff00 ff00
|
||||
0000050 ffee ffff ffff ff00 ffff ff00 200c d810
|
||||
0000060 ff00 ff00 798b 0001 128f e200 04cc 4667
|
||||
0000070 b030 b030 bdf4 5cd5 0000 ff00 1010 2000
|
||||
0000080 0000 0000 0000 237c 0048 0000 0000 8888
|
||||
0000090 0000 0000 0000 4000 d10f f3ff d10f f3ff
|
||||
00000a0 0500 9000 0500 b100 2b00 9500 2b00 9600
|
||||
00000b0 7172 b803 7172 b803 0000 0000 a390 8218
|
||||
00000c0 c000 9669 0000 0000 0000 0000 7172 9800
|
||||
00000d0 7172 b800 7172 9900 0000 0000 7172 9800
|
||||
00000e0 7172 f800 7172 9900 7172 f900 0000 0000
|
||||
00000f0 0000 0000 1501 d001 7172 d806 0000 5086
|
||||
0000100 0000 0106 0000 0000 0002 0301 0200 0000
|
||||
0000110 0000 0106 0000 0000 0000 0672 0200 0000
|
||||
0000120 ee00 69c0 7272 7171 d800 f6f7 0a00 0000
|
||||
0000130 4514 8098 0643 000f dc21 ffff ffff ffff
|
||||
0000140 ffff ffff ffff ffff ffff ffff ffff ffff
|
||||
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/jedec_id
|
||||
c28039
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/manufacturer
|
||||
macronix
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/partname
|
||||
mx25um25645g
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/sfdp > mx25um25645g
|
||||
zynq> random: fast init done
|
||||
zynq> hexdump mx25um25645g
|
||||
0000000 4653 5044 0108 fd04 0700 1401 0040 ff00
|
||||
0000010 0187 1c01 0090 ff00 000a 0801 0100 ff00
|
||||
0000020 0005 0501 0120 ff00 0084 0201 0134 ff00
|
||||
0000030 0000 0000 0000 0000 ffff ffff ffff ffff
|
||||
0000040 20e5 ff8a ffff 0fff ff00 ff00 ff00 ff00
|
||||
0000050 ffee ffff ffff ff00 ffff ff00 200c d810
|
||||
0000060 ff00 ff00 7987 0001 1284 d200 02cc 3867
|
||||
0000070 b030 b030 bdf4 5cd5 0000 ff00 1010 2000
|
||||
0000080 0000 0000 0000 a37c 0048 0000 0000 8888
|
||||
0000090 0000 0000 0000 4000 d10f f3ff d10f f3ff
|
||||
00000a0 0500 9000 0500 b100 2b00 9500 2b00 9600
|
||||
00000b0 7172 b803 7172 b803 0000 0000 a390 8218
|
||||
00000c0 c000 9669 0000 0000 0000 0000 7172 9800
|
||||
00000d0 7172 b800 7172 9900 0000 0000 7172 9800
|
||||
00000e0 7172 f800 7172 9900 7172 f900 0000 0000
|
||||
00000f0 0000 0000 1501 d001 7172 d806 0000 5086
|
||||
0000100 0000 0106 0000 0000 0002 0301 0200 0000
|
||||
0000110 0000 0106 0000 0000 0000 0672 0200 0000
|
||||
0000120 ee00 69c0 7272 7171 d800 f6f7 0a00 0000
|
||||
0000130 3514 809c 0643 000f dc21 ffff ffff ffff
|
||||
0000140 ffff ffff ffff ffff ffff ffff ffff ffff
|
||||
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/jedec_id
|
||||
c28139
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/manufacturer
|
||||
macronix
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/partname
|
||||
mx25uw25645g
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/sfdp > mx25uw25645g
|
||||
zynq> hexdump mx25uw25645g
|
||||
0000000 4653 5044 0108 fd04 0700 1401 0040 ff00
|
||||
0000010 0187 1c01 0090 ff00 000a 0801 0100 ff00
|
||||
0000020 0005 0501 0120 ff00 0084 0201 0134 ff00
|
||||
0000030 0000 0000 0000 0000 ffff ffff ffff ffff
|
||||
0000040 20e5 ff8a ffff 0fff ff00 ff00 ff00 ff00
|
||||
0000050 ffee ffff ffff ff00 ffff ff00 200c d810
|
||||
0000060 ff00 ff00 7989 0001 128d d200 04cc 4667
|
||||
0000070 b030 b030 bdf4 5cd5 0000 ff00 1010 2000
|
||||
0000080 0000 0000 0000 a37c 0048 0000 0000 8888
|
||||
0000090 0000 0000 0000 4000 d10f f3ff d10f f3ff
|
||||
00000a0 0500 9000 0500 b100 2b00 9500 2b00 9600
|
||||
00000b0 7172 b803 7172 b803 0000 0000 a390 8218
|
||||
00000c0 c000 9669 0000 0000 0000 0000 7172 9800
|
||||
00000d0 7172 b800 7172 9900 0000 0000 7172 9800
|
||||
00000e0 7172 f800 7172 9900 7172 f900 0000 0000
|
||||
00000f0 0000 0000 1501 d001 7172 d806 0000 5086
|
||||
0000100 0000 0106 0000 0000 0002 0301 0200 0000
|
||||
0000110 0000 0106 0000 0000 0000 0672 0200 0000
|
||||
0000120 ee00 69c0 7272 7171 d800 f6f7 0a00 0000
|
||||
0000130 4514 8098 0643 000f dc21 ffff ffff ffff
|
||||
0000140 ffff ffff ffff ffff ffff ffff ffff ffff
|
||||
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/jedec_id
|
||||
c28339
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/manufacturer
|
||||
macronix
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/partname
|
||||
mx25um25345g
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/sfdp > mx25um25345g
|
||||
zynq> hexdump mx25um25345g
|
||||
0000000 4653 5044 0108 fd04 0700 1401 0040 ff00
|
||||
0000010 0187 1c01 0090 ff00 000a 0801 0100 ff00
|
||||
0000020 0005 0501 0120 ff00 0084 0201 0134 ff00
|
||||
0000030 0000 0000 0000 0000 ffff ffff ffff ffff
|
||||
0000040 20e5 ff8a ffff 0fff ff00 ff00 ff00 ff00
|
||||
0000050 ffee ffff ffff ff00 ffff ff00 200c d810
|
||||
0000060 ff00 ff00 6987 0001 1282 d200 02cc 3867
|
||||
0000070 b030 b030 bdf4 5cd5 0000 ff00 1010 2000
|
||||
0000080 0000 0000 0000 237c 0048 0000 0000 8888
|
||||
0000090 0000 0000 0000 4000 d10f f3ff d10f f3ff
|
||||
00000a0 0500 9000 0500 b100 2b00 9500 2b00 9600
|
||||
00000b0 7172 b803 7172 b803 0000 0000 a390 8218
|
||||
00000c0 c000 9669 0000 0000 0000 0000 7172 9800
|
||||
00000d0 7172 b800 7172 9900 0000 0000 7172 9800
|
||||
00000e0 7172 f800 7172 9900 7172 f900 0000 0000
|
||||
00000f0 0000 0000 1501 d001 7172 d806 0000 5086
|
||||
0000100 0000 0106 0000 0000 0002 0301 0200 0000
|
||||
0000110 0000 0106 0000 0000 0000 0672 0200 0000
|
||||
0000120 ee00 69c0 7272 7171 d800 f6f7 0904 0000
|
||||
0000130 4514 8098 0643 000f dc21 ffff ffff ffff
|
||||
0000140 ffff ffff ffff ffff ffff ffff ffff ffff
|
||||
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/jedec_id
|
||||
c28439
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/manufacturer
|
||||
macronix
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/partname
|
||||
mx25uw25345g
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/sfdp > mx25uw25345g
|
||||
zynq> hexdump mx25uw25345g
|
||||
0000000 4653 5044 0108 fd04 0700 1401 0040 ff00
|
||||
0000010 0187 1c01 0090 ff00 000a 0801 0100 ff00
|
||||
0000020 0005 0501 0120 ff00 0084 0201 0134 ff00
|
||||
0000030 0000 0000 0000 0000 ffff ffff ffff ffff
|
||||
0000040 20e5 ff8a ffff 0fff ff00 ff00 ff00 ff00
|
||||
0000050 ffee ffff ffff ff00 ffff ff00 200c d810
|
||||
0000060 ff00 ff00 7987 0001 1284 d200 04cc 4667
|
||||
0000070 b030 b030 bdf4 5cd5 0000 ff00 1010 2000
|
||||
0000080 0000 0000 0000 237c 0048 0000 0000 8888
|
||||
0000090 0000 0000 0000 4000 d10f f3ff d10f f3ff
|
||||
00000a0 0500 9000 0500 b100 2b00 9500 2b00 9600
|
||||
00000b0 7172 b803 7172 b803 0000 0000 a390 8218
|
||||
00000c0 c000 9669 0000 0000 0000 0000 7172 9800
|
||||
00000d0 7172 b800 7172 9900 0000 0000 7172 9800
|
||||
00000e0 7172 f800 7172 9900 7172 f900 0000 0000
|
||||
00000f0 0000 0000 1501 d001 7172 d806 0000 5086
|
||||
0000100 0000 0106 0000 0000 0002 0301 0200 0000
|
||||
0000110 0000 0106 0000 0000 0000 0672 0200 0000
|
||||
0000120 ee00 69c0 7272 7171 d800 f6f7 0a00 0000
|
||||
0000130 4514 8098 0643 000f dc21 ffff ffff ffff
|
||||
0000140 ffff ffff ffff ffff ffff ffff ffff ffff
|
||||
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/jedec_id
|
||||
c28138
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/manufacturer
|
||||
macronix
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/partname
|
||||
mx25uw12845g
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/sfdp > mx25uw12845g
|
||||
zynq> hexdump mx25uw12845g
|
||||
0000000 4653 5044 0108 fd04 0700 1401 0040 ff00
|
||||
0000010 0187 1c01 0090 ff00 000a 0801 0100 ff00
|
||||
0000020 0005 0501 0120 ff00 0084 0201 0134 ff00
|
||||
0000030 0000 0000 0000 0000 0000 0000 0000 0000
|
||||
0000040 20e5 ff8a ffff 07ff ff00 ff00 ff00 ff00
|
||||
0000050 ffee ffff ffff ff00 ffff ff00 200c d810
|
||||
0000060 ff00 ff00 798b 0001 128f c900 04cc 4667
|
||||
0000070 b030 b030 bdf4 5cd5 0000 ff00 1010 2000
|
||||
0000080 0000 0000 0000 a37c 0048 0000 0000 8888
|
||||
0000090 0000 0000 0000 4000 d10f f3ff d10f f3ff
|
||||
00000a0 0500 9000 0500 b100 2b00 9500 2b00 9600
|
||||
00000b0 7172 b803 7172 b803 0000 0000 a390 8218
|
||||
00000c0 c000 9669 0000 0000 0000 0000 7172 9800
|
||||
00000d0 7172 b800 7172 9900 0000 0000 7172 9800
|
||||
00000e0 7172 f800 7172 9900 7172 f900 0000 0000
|
||||
00000f0 0000 0000 1501 d001 7172 d806 0000 5086
|
||||
0000100 0000 0106 0000 0000 0002 0301 0200 0000
|
||||
0000110 0000 0106 0000 0000 0000 0672 0200 0000
|
||||
0000120 ee00 69c0 7272 7171 d800 f6f7 0a00 0000
|
||||
0000130 4514 8098 0643 000f dc21 ffff ffff ffff
|
||||
0000140 ffff ffff ffff ffff ffff ffff ffff ffff
|
||||
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/jedec_id
|
||||
c28438
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/manufacturer
|
||||
macronix
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/partname
|
||||
mx25uw12345g
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/sfdp > mx25uw12345g
|
||||
zynq> hexdump mx25uw12345g
|
||||
0000000 4653 5044 0108 fd04 0700 1401 0040 ff00
|
||||
0000010 0187 1c01 0090 ff00 000a 0801 0100 ff00
|
||||
0000020 0005 0501 0120 ff00 0084 0201 0134 ff00
|
||||
0000030 0000 0000 0000 0000 ffff ffff ffff ffff
|
||||
0000040 20e5 ff8a ffff 07ff ff00 ff00 ff00 ff00
|
||||
0000050 ffee ffff ffff ff00 ffff ff00 200c d810
|
||||
0000060 ff00 ff00 798b 0001 128f c900 04cc 4667
|
||||
0000070 b030 b030 bdf4 5cd5 0000 ff00 1010 2000
|
||||
0000080 0000 0000 0000 237c 0048 0000 0000 8888
|
||||
0000090 0000 0000 0000 4000 d10f f3ff d10f f3ff
|
||||
00000a0 0500 9000 0500 b100 2b00 9500 2b00 9600
|
||||
00000b0 7172 b803 7172 b803 0000 0000 a390 8218
|
||||
00000c0 c000 9669 0000 0000 0000 0000 7172 9800
|
||||
00000d0 7172 b800 7172 9900 0000 0000 7172 9800
|
||||
00000e0 7172 f800 7172 9900 7172 f900 0000 0000
|
||||
00000f0 0000 0000 1501 d001 7172 d806 0000 5086
|
||||
0000100 0000 0106 0000 0000 0002 0301 0200 0000
|
||||
0000110 0000 0106 0000 0000 0000 0672 0200 0000
|
||||
0000120 ee00 69c0 7272 7171 d800 f6f7 0a00 0000
|
||||
0000130 4514 8098 0643 000f dc21 ffff ffff ffff
|
||||
0000140 ffff ffff ffff ffff ffff ffff ffff ffff
|
||||
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/jedec_id
|
||||
c28137
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/manufacturer
|
||||
macronix
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/partname
|
||||
mx25uw6445g
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/sfdp > mx25uw6445g
|
||||
zynq> hexdump mx25uw6445g
|
||||
0000000 4653 5044 0108 fd04 0700 1401 0040 ff00
|
||||
0000010 0187 1c01 0090 ff00 000a 0801 0100 ff00
|
||||
0000020 0005 0501 0120 ff00 0084 0201 0134 ff00
|
||||
0000030 0000 0000 0000 0000 ffff ffff ffff ffff
|
||||
0000040 20e5 ff8a ffff 03ff ff00 ff00 ff00 ff00
|
||||
0000050 ffee ffff ffff ff00 ffff ff00 200c d810
|
||||
0000060 ff00 ff00 7989 0001 128d c400 04cc 4667
|
||||
0000070 b030 b030 bdf4 5cd5 0000 ff00 1010 2000
|
||||
0000080 0000 0000 0000 a37c 0048 0000 0000 8888
|
||||
0000090 0000 0000 0000 4000 d10f f3ff d10f f3ff
|
||||
00000a0 0500 9000 0500 b100 2b00 9500 2b00 9600
|
||||
00000b0 7172 b803 7172 b803 0000 0000 a390 8218
|
||||
00000c0 c000 9669 0000 0000 0000 0000 7172 9800
|
||||
00000d0 7172 b800 7172 9900 0000 0000 7172 9800
|
||||
00000e0 7172 f800 7172 9900 7172 f900 0000 0000
|
||||
00000f0 0000 0000 1501 d001 7172 d806 0000 5086
|
||||
0000100 0000 0106 0000 0000 0002 0301 0200 0000
|
||||
0000110 0000 0106 0000 0000 0000 0672 0200 0000
|
||||
0000120 ee00 69c0 7272 7171 d800 f6f7 0a00 0000
|
||||
0000130 4514 8098 0643 000f dc21 ffff ffff ffff
|
||||
0000140 ffff ffff ffff ffff ffff ffff ffff ffff
|
||||
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/jedec_id
|
||||
c28437
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/manufacturer
|
||||
macronix
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/partname
|
||||
mx25uw6345g
|
||||
zynq> cat /sys/bus/spi/devices/spi0.0/spi-nor/sfdp > mx25uw6345g
|
||||
zynq> hexdump mx25uw6345g
|
||||
0000000 4653 5044 0108 fd04 0700 1401 0040 ff00
|
||||
0000010 0187 1c01 0090 ff00 000a 0801 0100 ff00
|
||||
0000020 0005 0501 0120 ff00 0084 0201 0134 ff00
|
||||
0000030 0000 0000 0000 0000 ffff ffff ffff ffff
|
||||
0000040 20e5 ff8a ffff 03ff ff00 ff00 ff00 ff00
|
||||
0000050 ffee ffff ffff ff00 ffff ff00 200c d810
|
||||
0000060 ff00 ff00 798b 0001 128f c400 04cc 4667
|
||||
0000070 b030 b030 bdf4 5cd5 0000 ff00 1010 2000
|
||||
0000080 0000 0000 0000 237c 0048 0000 0000 8888
|
||||
0000090 0000 0000 0000 4000 d10f f3ff d10f f3ff
|
||||
00000a0 0500 9000 0500 b100 2b00 9500 2b00 9600
|
||||
00000b0 7172 b803 7172 b803 0000 0000 a390 8218
|
||||
00000c0 c000 9669 0000 0000 0000 0000 7172 9800
|
||||
00000d0 7172 b800 7172 9900 0000 0000 7172 9800
|
||||
00000e0 7172 f800 7172 9900 7172 f900 0000 0000
|
||||
00000f0 0000 0000 1501 d001 7172 d806 0000 5086
|
||||
0000100 0000 0106 0000 0000 0002 0301 0200 0000
|
||||
0000110 0000 0106 0000 0000 0000 0672 0200 0000
|
||||
0000120 ee00 69c0 7272 7171 d800 f6f7 0a00 0000
|
||||
0000130 4514 8098 0643 000f dc21 ffff ffff ffff
|
||||
0000140 ffff ffff ffff ffff ffff ffff ffff ffff
|
||||
|
||||
Signed-off-by: JaimeLiao <jaimeliao.tw@gmail.com>
|
||||
Reviewed-by: Jagan Teki <jagan@amarulasolutions.com>
|
||||
---
|
||||
drivers/mtd/spi/spi-nor-ids.c | 19 ++++++++++++++++++-
|
||||
1 file changed, 18 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/mtd/spi/spi-nor-ids.c
|
||||
+++ b/drivers/mtd/spi/spi-nor-ids.c
|
||||
@@ -198,7 +198,24 @@ const struct flash_info spi_nor_ids[] =
|
||||
{ INFO("mx66l2g45g", 0xc2201c, 0, 64 * 1024, 4096, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES) },
|
||||
{ INFO("mx25l1633e", 0xc22415, 0, 64 * 1024, 32, SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES | SECT_4K) },
|
||||
{ INFO("mx25r6435f", 0xc22817, 0, 64 * 1024, 128, SECT_4K) },
|
||||
- { INFO("mx66uw2g345g", 0xc2943c, 0, 64 * 1024, 4096, SECT_4K | SPI_NOR_OCTAL_READ | SPI_NOR_4B_OPCODES) },
|
||||
+ { INFO("mx66uw2g345gx0", 0xc2943c, 0, 64 * 1024, 4096, SECT_4K | SPI_NOR_OCTAL_DTR_READ | SPI_NOR_4B_OPCODES) },
|
||||
+ { INFO("mx66lm1g45g", 0xc2853b, 0, 64 * 1024, 2048, SECT_4K | SPI_NOR_OCTAL_DTR_READ | SPI_NOR_4B_OPCODES) },
|
||||
+ { INFO("mx25lm51245g", 0xc2853a, 0, 64 * 1024, 1024, SECT_4K | SPI_NOR_OCTAL_DTR_READ | SPI_NOR_4B_OPCODES) },
|
||||
+ { INFO("mx25lw51245g", 0xc2863a, 0, 64 * 1024, 1024, SECT_4K | SPI_NOR_OCTAL_DTR_READ | SPI_NOR_4B_OPCODES) },
|
||||
+ { INFO("mx25lm25645g", 0xc28539, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_OCTAL_DTR_READ | SPI_NOR_4B_OPCODES) },
|
||||
+ { INFO("mx66uw2g345g", 0xc2843c, 0, 64 * 1024, 4096, SECT_4K | SPI_NOR_OCTAL_DTR_READ | SPI_NOR_4B_OPCODES) },
|
||||
+ { INFO("mx66um1g45g", 0xc2803b, 0, 64 * 1024, 2048, SECT_4K | SPI_NOR_OCTAL_DTR_READ | SPI_NOR_4B_OPCODES) },
|
||||
+ { INFO("mx66uw1g45g", 0xc2813b, 0, 64 * 1024, 2048, SECT_4K | SPI_NOR_OCTAL_DTR_READ | SPI_NOR_4B_OPCODES) },
|
||||
+ { INFO("mx25uw51245g", 0xc2813a, 0, 64 * 1024, 1024, SECT_4K | SPI_NOR_OCTAL_DTR_READ | SPI_NOR_4B_OPCODES) },
|
||||
+ { INFO("mx25uw51345g", 0xc2843a, 0, 64 * 1024, 1024, SECT_4K | SPI_NOR_OCTAL_DTR_READ | SPI_NOR_4B_OPCODES) },
|
||||
+ { INFO("mx25um25645g", 0xc28039, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_OCTAL_DTR_READ | SPI_NOR_4B_OPCODES) },
|
||||
+ { INFO("mx25uw25645g", 0xc28139, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_OCTAL_DTR_READ | SPI_NOR_4B_OPCODES) },
|
||||
+ { INFO("mx25um25345g", 0xc28339, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_OCTAL_DTR_READ | SPI_NOR_4B_OPCODES) },
|
||||
+ { INFO("mx25uw25345g", 0xc28439, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_OCTAL_DTR_READ | SPI_NOR_4B_OPCODES) },
|
||||
+ { INFO("mx25uw12845g", 0xc28138, 0, 64 * 1024, 256, SECT_4K | SPI_NOR_OCTAL_DTR_READ | SPI_NOR_4B_OPCODES) },
|
||||
+ { INFO("mx25uw12345g", 0xc28438, 0, 64 * 1024, 256, SECT_4K | SPI_NOR_OCTAL_DTR_READ | SPI_NOR_4B_OPCODES) },
|
||||
+ { INFO("mx25uw6445g", 0xc28137, 0, 64 * 1024, 128, SECT_4K | SPI_NOR_OCTAL_DTR_READ | SPI_NOR_4B_OPCODES) },
|
||||
+ { INFO("mx25uw6345g", 0xc28437, 0, 64 * 1024, 128, SECT_4K | SPI_NOR_OCTAL_DTR_READ | SPI_NOR_4B_OPCODES) },
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SPI_FLASH_STMICRO /* STMICRO */
|
||||
@ -1,39 +0,0 @@
|
||||
From 47ed8b22fd561b65e8541919becc76ab3d86f7a3 Mon Sep 17 00:00:00 2001
|
||||
From: Jae Hyun Yoo <quic_jaehyoo@quicinc.com>
|
||||
Date: Fri, 8 Jul 2022 12:03:19 -0700
|
||||
Subject: [PATCH] mtd: spi-nor-ids: add winbond w25q512nw family support
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Add Winbond w25q512nwq/n and w25q512nwm support.
|
||||
|
||||
datasheet:
|
||||
https://www.winbond.com/resource-files/W25Q512NW%20RevB%2007192021.pdf
|
||||
|
||||
Signed-off-by: Jae Hyun Yoo <quic_jaehyoo@quicinc.com>
|
||||
Reviewed-by: Cédric Le Goater <clg@kaod.org>
|
||||
Reviewed-by: Jagan Teki <jagan@amarulasolutions.com>
|
||||
---
|
||||
drivers/mtd/spi/spi-nor-ids.c | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
--- a/drivers/mtd/spi/spi-nor-ids.c
|
||||
+++ b/drivers/mtd/spi/spi-nor-ids.c
|
||||
@@ -415,6 +415,16 @@ const struct flash_info spi_nor_ids[] =
|
||||
SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
|
||||
},
|
||||
{
|
||||
+ INFO("w25q512nwq", 0xef6020, 0, 64 * 1024, 1024,
|
||||
+ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ |
|
||||
+ SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
|
||||
+ },
|
||||
+ {
|
||||
+ INFO("w25q512nwm", 0xef8020, 0, 64 * 1024, 1024,
|
||||
+ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ |
|
||||
+ SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
|
||||
+ },
|
||||
+ {
|
||||
INFO("w25q01jv", 0xef4021, 0, 64 * 1024, 2048,
|
||||
SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ |
|
||||
SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
|
||||
@ -1,48 +0,0 @@
|
||||
From 22832a0a15227e3fcc364b356247d8aeb9ce45b3 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Golle <daniel@makrotopia.org>
|
||||
Date: Sat, 27 Aug 2022 04:05:31 +0100
|
||||
Subject: [PATCH 1/2] bootm: fix typo imape_comp -> image_comp
|
||||
|
||||
Chage variable name 'imape_comp' to the supposedly intended name
|
||||
'image_comp'.
|
||||
|
||||
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
---
|
||||
boot/bootm.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/boot/bootm.c
|
||||
+++ b/boot/bootm.c
|
||||
@@ -1006,7 +1006,7 @@ static int bootm_host_load_image(const v
|
||||
int noffset;
|
||||
ulong load_end;
|
||||
uint8_t image_type;
|
||||
- uint8_t imape_comp;
|
||||
+ uint8_t image_comp;
|
||||
void *load_buf;
|
||||
int ret;
|
||||
|
||||
@@ -1024,20 +1024,20 @@ static int bootm_host_load_image(const v
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
- if (fit_image_get_comp(fit, noffset, &imape_comp)) {
|
||||
+ if (fit_image_get_comp(fit, noffset, &image_comp)) {
|
||||
puts("Can't get image compression!\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* Allow the image to expand by a factor of 4, should be safe */
|
||||
load_buf = malloc((1 << 20) + len * 4);
|
||||
- ret = image_decomp(imape_comp, 0, data, image_type, load_buf,
|
||||
+ ret = image_decomp(image_comp, 0, data, image_type, load_buf,
|
||||
(void *)data, len, CONFIG_SYS_BOOTM_LEN,
|
||||
&load_end);
|
||||
free(load_buf);
|
||||
|
||||
if (ret) {
|
||||
- ret = handle_decomp_error(imape_comp, load_end - 0, ret);
|
||||
+ ret = handle_decomp_error(image_comp, load_end - 0, ret);
|
||||
if (ret != BOOTM_ERR_UNIMPLEMENTED)
|
||||
return ret;
|
||||
}
|
||||
@ -1,71 +0,0 @@
|
||||
From b2c109c012ca946baebbb23e7f4301f6eee4c6f3 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Golle <daniel@makrotopia.org>
|
||||
Date: Mon, 15 Aug 2022 12:15:50 +0200
|
||||
Subject: [PATCH 2/2] image-fit: don't set compression if it can't be read
|
||||
|
||||
fit_image_get_comp() should not set value -1 in case it can't read
|
||||
the compression node. Instead, leave the value untouched in that case
|
||||
as it can be absent and a default value previously defined by the
|
||||
caller of fit_image_get_comp() should be used.
|
||||
|
||||
As a result the warning message
|
||||
WARNING: 'compression' nodes for ramdisks are deprecated, please fix your .its file!
|
||||
no longer shows if the compression node is actually absent.
|
||||
|
||||
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
---
|
||||
boot/bootm.c | 6 ++----
|
||||
boot/image-fit.c | 3 +--
|
||||
cmd/ximg.c | 7 ++-----
|
||||
3 files changed, 5 insertions(+), 11 deletions(-)
|
||||
|
||||
--- a/boot/bootm.c
|
||||
+++ b/boot/bootm.c
|
||||
@@ -1024,10 +1024,8 @@ static int bootm_host_load_image(const v
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
- if (fit_image_get_comp(fit, noffset, &image_comp)) {
|
||||
- puts("Can't get image compression!\n");
|
||||
- return -EINVAL;
|
||||
- }
|
||||
+ if (fit_image_get_comp(fit, noffset, &image_comp))
|
||||
+ image_comp = IH_COMP_NONE;
|
||||
|
||||
/* Allow the image to expand by a factor of 4, should be safe */
|
||||
load_buf = malloc((1 << 20) + len * 4);
|
||||
--- a/boot/image-fit.c
|
||||
+++ b/boot/image-fit.c
|
||||
@@ -477,7 +477,7 @@ void fit_print_contents(const void *fit)
|
||||
void fit_image_print(const void *fit, int image_noffset, const char *p)
|
||||
{
|
||||
char *desc;
|
||||
- uint8_t type, arch, os, comp;
|
||||
+ uint8_t type, arch, os, comp = IH_COMP_NONE;
|
||||
size_t size;
|
||||
ulong load, entry;
|
||||
const void *data;
|
||||
@@ -794,7 +794,6 @@ int fit_image_get_comp(const void *fit,
|
||||
data = fdt_getprop(fit, noffset, FIT_COMP_PROP, &len);
|
||||
if (data == NULL) {
|
||||
fit_get_debug(fit, noffset, FIT_COMP_PROP, len);
|
||||
- *comp = -1;
|
||||
return -1;
|
||||
}
|
||||
|
||||
--- a/cmd/ximg.c
|
||||
+++ b/cmd/ximg.c
|
||||
@@ -171,11 +171,8 @@ do_imgextract(struct cmd_tbl *cmdtp, int
|
||||
return 1;
|
||||
}
|
||||
|
||||
- if (fit_image_get_comp(fit_hdr, noffset, &comp)) {
|
||||
- puts("Could not find script subimage "
|
||||
- "compression type\n");
|
||||
- return 1;
|
||||
- }
|
||||
+ if (fit_image_get_comp(fit_hdr, noffset, &comp))
|
||||
+ comp = IH_COMP_NONE;
|
||||
|
||||
data = (ulong)fit_data;
|
||||
len = (ulong)fit_len;
|
||||
@ -16,7 +16,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
|
||||
--- a/include/configs/mt7622.h
|
||||
+++ b/include/configs/mt7622.h
|
||||
@@ -30,6 +30,7 @@
|
||||
@@ -23,6 +23,7 @@
|
||||
|
||||
/* Ethernet */
|
||||
#define CONFIG_IPADDR 192.168.1.1
|
||||
@ -27,7 +27,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
#endif
|
||||
--- a/include/configs/mt7623.h
|
||||
+++ b/include/configs/mt7623.h
|
||||
@@ -45,6 +45,7 @@
|
||||
@@ -37,6 +37,7 @@
|
||||
/* Ethernet */
|
||||
#define CONFIG_IPADDR 192.168.1.1
|
||||
#define CONFIG_SERVERIP 192.168.1.2
|
||||
@ -37,7 +37,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
|
||||
--- a/include/configs/mt7629.h
|
||||
+++ b/include/configs/mt7629.h
|
||||
@@ -45,5 +45,6 @@
|
||||
@@ -32,5 +32,6 @@
|
||||
/* Ethernet */
|
||||
#define CONFIG_IPADDR 192.168.1.1
|
||||
#define CONFIG_SERVERIP 192.168.1.2
|
||||
|
||||
@ -38,7 +38,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
|
||||
--- a/drivers/mtd/Kconfig
|
||||
+++ b/drivers/mtd/Kconfig
|
||||
@@ -158,6 +158,8 @@ config SYS_MAX_FLASH_BANKS_DETECT
|
||||
@@ -210,6 +210,8 @@ config SYS_MAX_FLASH_BANKS_DETECT
|
||||
to reduce the effective number of flash bank, between 0 and
|
||||
CONFIG_SYS_MAX_FLASH_BANKS
|
||||
|
||||
@ -49,7 +49,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
config SYS_NAND_MAX_CHIPS
|
||||
--- a/drivers/mtd/Makefile
|
||||
+++ b/drivers/mtd/Makefile
|
||||
@@ -39,3 +39,5 @@ obj-$(CONFIG_$(SPL_TPL_)SPI_FLASH_SUPPOR
|
||||
@@ -38,3 +38,5 @@ obj-$(CONFIG_$(SPL_TPL_)SPI_FLASH_SUPPOR
|
||||
obj-$(CONFIG_SPL_UBI) += ubispl/
|
||||
|
||||
endif
|
||||
|
||||
@ -38,7 +38,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
|
||||
--- a/env/Kconfig
|
||||
+++ b/env/Kconfig
|
||||
@@ -37,7 +37,7 @@ config ENV_IS_NOWHERE
|
||||
@@ -53,7 +53,7 @@ config ENV_IS_NOWHERE
|
||||
!ENV_IS_IN_MMC && !ENV_IS_IN_NAND && \
|
||||
!ENV_IS_IN_NVRAM && !ENV_IS_IN_ONENAND && \
|
||||
!ENV_IS_IN_REMOTE && !ENV_IS_IN_SPI_FLASH && \
|
||||
@ -47,7 +47,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
help
|
||||
Define this if you don't want to or can't have an environment stored
|
||||
on a storage medium. In this case the environment will still exist
|
||||
@@ -226,6 +226,27 @@ config ENV_IS_IN_MMC
|
||||
@@ -242,6 +242,27 @@ config ENV_IS_IN_MMC
|
||||
This value is also in units of bytes, but must also be aligned to
|
||||
an MMC sector boundary.
|
||||
|
||||
@ -75,7 +75,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
config ENV_IS_IN_NAND
|
||||
bool "Environment in a NAND device"
|
||||
depends on !CHAIN_OF_TRUST
|
||||
@@ -531,10 +552,16 @@ config ENV_ADDR_REDUND
|
||||
@@ -549,10 +570,16 @@ config ENV_ADDR_REDUND
|
||||
Offset from the start of the device (or partition) of the redundant
|
||||
environment location.
|
||||
|
||||
@ -93,7 +93,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
default 0x3f8000 if ARCH_ROCKCHIP && ENV_IS_IN_MMC
|
||||
default 0x140000 if ARCH_ROCKCHIP && ENV_IS_IN_SPI_FLASH
|
||||
default 0xF0000 if ARCH_SUNXI
|
||||
@@ -581,6 +608,12 @@ config ENV_SECT_SIZE
|
||||
@@ -599,6 +626,12 @@ config ENV_SECT_SIZE
|
||||
help
|
||||
Size of the sector containing the environment.
|
||||
|
||||
|
||||
@ -31,7 +31,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
|
||||
--- a/drivers/mtd/Kconfig
|
||||
+++ b/drivers/mtd/Kconfig
|
||||
@@ -174,4 +174,6 @@ source "drivers/mtd/spi/Kconfig"
|
||||
@@ -226,4 +226,6 @@ source "drivers/mtd/spi/Kconfig"
|
||||
|
||||
source "drivers/mtd/ubi/Kconfig"
|
||||
|
||||
@ -40,7 +40,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
endmenu
|
||||
--- a/drivers/mtd/Makefile
|
||||
+++ b/drivers/mtd/Makefile
|
||||
@@ -41,3 +41,4 @@ obj-$(CONFIG_SPL_UBI) += ubispl/
|
||||
@@ -40,3 +40,4 @@ obj-$(CONFIG_SPL_UBI) += ubispl/
|
||||
endif
|
||||
|
||||
obj-$(CONFIG_MTK_SPI_NAND) += mtk-snand/
|
||||
|
||||
@ -13,7 +13,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
|
||||
--- a/common/board_r.c
|
||||
+++ b/common/board_r.c
|
||||
@@ -382,6 +382,20 @@ static int initr_nand(void)
|
||||
@@ -385,6 +385,20 @@ static int initr_nand(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -34,7 +34,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
#if defined(CONFIG_CMD_ONENAND)
|
||||
/* go init the NAND */
|
||||
static int initr_onenand(void)
|
||||
@@ -703,6 +717,9 @@ static init_fnc_t init_sequence_r[] = {
|
||||
@@ -697,6 +711,9 @@ static init_fnc_t init_sequence_r[] = {
|
||||
#ifdef CONFIG_CMD_ONENAND
|
||||
initr_onenand,
|
||||
#endif
|
||||
|
||||
@ -15,7 +15,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
|
||||
--- a/cmd/Kconfig
|
||||
+++ b/cmd/Kconfig
|
||||
@@ -1260,6 +1260,12 @@ config CMD_NAND_TORTURE
|
||||
@@ -1305,6 +1305,12 @@ config CMD_NAND_TORTURE
|
||||
|
||||
endif # CMD_NAND
|
||||
|
||||
|
||||
@ -38,7 +38,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
/*
|
||||
--- a/env/Kconfig
|
||||
+++ b/env/Kconfig
|
||||
@@ -37,7 +37,7 @@ config ENV_IS_NOWHERE
|
||||
@@ -53,7 +53,7 @@ config ENV_IS_NOWHERE
|
||||
!ENV_IS_IN_MMC && !ENV_IS_IN_NAND && \
|
||||
!ENV_IS_IN_NVRAM && !ENV_IS_IN_ONENAND && \
|
||||
!ENV_IS_IN_REMOTE && !ENV_IS_IN_SPI_FLASH && \
|
||||
@ -47,9 +47,9 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
help
|
||||
Define this if you don't want to or can't have an environment stored
|
||||
on a storage medium. In this case the environment will still exist
|
||||
@@ -285,6 +285,21 @@ config ENV_IS_IN_NAND
|
||||
Currently, CONFIG_ENV_OFFSET_REDUND is not supported when
|
||||
using CONFIG_ENV_OFFSET_OOB.
|
||||
@@ -303,6 +303,21 @@ config ENV_RANGE
|
||||
Specifying a range with more erase blocks than are needed to hold
|
||||
CONFIG_ENV_SIZE allows bad blocks within the range to be avoided.
|
||||
|
||||
+config ENV_IS_IN_NMBM
|
||||
+ bool "Environment in a NMBM upper MTD layer"
|
||||
@ -69,7 +69,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
config ENV_IS_IN_NVRAM
|
||||
bool "Environment in a non-volatile RAM"
|
||||
depends on !CHAIN_OF_TRUST
|
||||
@@ -561,7 +576,7 @@ config ENV_MTD_NAME
|
||||
@@ -579,7 +594,7 @@ config ENV_MTD_NAME
|
||||
config ENV_OFFSET
|
||||
hex "Environment offset"
|
||||
depends on ENV_IS_IN_EEPROM || ENV_IS_IN_MMC || ENV_IS_IN_NAND || \
|
||||
|
||||
@ -26,7 +26,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
|
||||
--- a/cmd/Kconfig
|
||||
+++ b/cmd/Kconfig
|
||||
@@ -1260,6 +1260,14 @@ config CMD_NAND_TORTURE
|
||||
@@ -1305,6 +1305,14 @@ config CMD_NAND_TORTURE
|
||||
|
||||
endif # CMD_NAND
|
||||
|
||||
|
||||
@ -13,7 +13,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
|
||||
--- a/drivers/mtd/spi/spi-nor-core.c
|
||||
+++ b/drivers/mtd/spi/spi-nor-core.c
|
||||
@@ -2742,6 +2742,100 @@ static int spi_nor_init_params(struct sp
|
||||
@@ -2791,6 +2791,100 @@ static int spi_nor_init_params(struct sp
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -114,7 +114,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
static int spi_nor_hwcaps2cmd(u32 hwcaps, const int table[][2], size_t size)
|
||||
{
|
||||
size_t i;
|
||||
@@ -3719,6 +3813,7 @@ int spi_nor_scan(struct spi_nor *nor)
|
||||
@@ -3858,6 +3952,7 @@ int spi_nor_scan(struct spi_nor *nor)
|
||||
nor->write = spi_nor_write_data;
|
||||
nor->read_reg = spi_nor_read_reg;
|
||||
nor->write_reg = spi_nor_write_reg;
|
||||
@ -132,7 +132,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
#define SNOR_MFR_CYPRESS 0x34
|
||||
|
||||
/*
|
||||
@@ -547,6 +548,7 @@ struct spi_nor {
|
||||
@@ -558,6 +559,7 @@ struct spi_nor {
|
||||
void (*unprepare)(struct spi_nor *nor, enum spi_nor_ops ops);
|
||||
int (*read_reg)(struct spi_nor *nor, u8 opcode, u8 *buf, int len);
|
||||
int (*write_reg)(struct spi_nor *nor, u8 opcode, u8 *buf, int len);
|
||||
|
||||
@ -12,7 +12,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
|
||||
--- a/cmd/sf.c
|
||||
+++ b/cmd/sf.c
|
||||
@@ -391,6 +391,14 @@ static int do_spi_protect(int argc, char
|
||||
@@ -403,6 +403,14 @@ static int do_spi_protect(int argc, char
|
||||
return ret == 0 ? 0 : 1;
|
||||
}
|
||||
|
||||
@ -27,7 +27,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
enum {
|
||||
STAGE_ERASE,
|
||||
STAGE_CHECK,
|
||||
@@ -587,6 +595,8 @@ static int do_spi_flash(struct cmd_tbl *
|
||||
@@ -599,6 +607,8 @@ static int do_spi_flash(struct cmd_tbl *
|
||||
ret = do_spi_flash_erase(argc, argv);
|
||||
else if (strcmp(cmd, "protect") == 0)
|
||||
ret = do_spi_protect(argc, argv);
|
||||
@ -36,7 +36,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
else if (IS_ENABLED(CONFIG_CMD_SF_TEST) && !strcmp(cmd, "test"))
|
||||
ret = do_spi_flash_test(argc, argv);
|
||||
else
|
||||
@@ -617,7 +627,8 @@ static const char long_help[] =
|
||||
@@ -629,7 +639,8 @@ static const char long_help[] =
|
||||
" at `addr' to flash at `offset'\n"
|
||||
" or to start of mtd `partition'\n"
|
||||
"sf protect lock/unlock sector len - protect/unprotect 'len' bytes starting\n"
|
||||
|
||||
@ -55,15 +55,15 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
reg = <0x11014000 0x1000>;
|
||||
--- a/configs/mt7622_rfb_defconfig
|
||||
+++ b/configs/mt7622_rfb_defconfig
|
||||
@@ -18,6 +18,7 @@ CONFIG_LOG=y
|
||||
CONFIG_SYS_PROMPT="MT7622> "
|
||||
@@ -20,6 +20,7 @@ CONFIG_SYS_MAXARGS=8
|
||||
CONFIG_SYS_PBSIZE=1049
|
||||
CONFIG_CMD_BOOTMENU=y
|
||||
CONFIG_CMD_MMC=y
|
||||
+CONFIG_CMD_MTD=y
|
||||
CONFIG_CMD_PCI=y
|
||||
CONFIG_CMD_SF_TEST=y
|
||||
CONFIG_CMD_PING=y
|
||||
@@ -33,6 +34,10 @@ CONFIG_SYSCON=y
|
||||
@@ -35,6 +36,10 @@ CONFIG_SYSCON=y
|
||||
CONFIG_CLK=y
|
||||
CONFIG_MMC_HS200_SUPPORT=y
|
||||
CONFIG_MMC_MTK=y
|
||||
|
||||
@ -18,7 +18,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
|
||||
--- a/arch/arm/dts/Makefile
|
||||
+++ b/arch/arm/dts/Makefile
|
||||
@@ -1206,6 +1206,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
|
||||
@@ -1234,6 +1234,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
|
||||
mt7623n-bananapi-bpi-r2.dtb \
|
||||
mt7629-rfb.dtb \
|
||||
mt7981-rfb.dtb \
|
||||
|
||||
@ -13,7 +13,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
|
||||
--- a/drivers/mtd/spi/spi-nor-core.c
|
||||
+++ b/drivers/mtd/spi/spi-nor-core.c
|
||||
@@ -641,6 +641,7 @@ static int set_4byte(struct spi_nor *nor
|
||||
@@ -648,6 +648,7 @@ static int set_4byte(struct spi_nor *nor
|
||||
case SNOR_MFR_ISSI:
|
||||
case SNOR_MFR_MACRONIX:
|
||||
case SNOR_MFR_WINBOND:
|
||||
|
||||
@ -15,7 +15,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
|
||||
--- a/drivers/mmc/Kconfig
|
||||
+++ b/drivers/mmc/Kconfig
|
||||
@@ -789,6 +789,14 @@ config MMC_MTK
|
||||
@@ -812,6 +812,14 @@ config MMC_MTK
|
||||
This is needed if support for any SD/SDIO/MMC devices is required.
|
||||
If unsure, say N.
|
||||
|
||||
|
||||
@ -14,7 +14,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
|
||||
|
||||
--- a/env/Kconfig
|
||||
+++ b/env/Kconfig
|
||||
@@ -647,6 +647,12 @@ config ENV_UBI_VOLUME_REDUND
|
||||
@@ -665,6 +665,12 @@ config ENV_UBI_VOLUME_REDUND
|
||||
help
|
||||
Name of the redundant volume that you want to store the environment in.
|
||||
|
||||
|
||||
@ -1,26 +0,0 @@
|
||||
--- a/include/configs/mt7986.h
|
||||
+++ b/include/configs/mt7986.h
|
||||
@@ -11,6 +11,11 @@
|
||||
|
||||
#include <linux/sizes.h>
|
||||
|
||||
+#define CONFIG_SYS_MAXARGS 32
|
||||
+#define CONFIG_SYS_BOOTM_LEN SZ_128M
|
||||
+#define CONFIG_SYS_CBSIZE SZ_1K
|
||||
+#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + \
|
||||
+ sizeof(CONFIG_SYS_PROMPT) + 16)
|
||||
#define CONFIG_SYS_NONCACHED_MEMORY SZ_1M
|
||||
#define CONFIG_SYS_MMC_ENV_DEV 0
|
||||
|
||||
@@ -19,6 +24,11 @@
|
||||
|
||||
/* SPL -> Uboot */
|
||||
#define CONFIG_SYS_UBOOT_START CONFIG_SYS_TEXT_BASE
|
||||
+#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_TEXT_BASE + SZ_2M - \
|
||||
+ GENERATED_GBL_DATA_SIZE)
|
||||
+
|
||||
+/* Flash */
|
||||
+#define CONFIG_SYS_NAND_MAX_CHIPS 1
|
||||
|
||||
/* DRAM */
|
||||
#define CONFIG_SYS_SDRAM_BASE 0x40000000
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -1061,7 +1061,7 @@ quiet_cmd_pad_cat = CAT $@
|
||||
@@ -1062,7 +1062,7 @@ quiet_cmd_pad_cat = CAT $@
|
||||
cmd_pad_cat = $(cmd_objcopy) && $(append) || { rm -f $@; false; }
|
||||
|
||||
quiet_cmd_lzma = LZMA $@
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/cmd/bootm.c
|
||||
+++ b/cmd/bootm.c
|
||||
@@ -257,6 +257,67 @@ U_BOOT_CMD(
|
||||
@@ -256,6 +256,67 @@ U_BOOT_CMD(
|
||||
/* iminfo - print header info for a requested image */
|
||||
/*******************************************************************/
|
||||
#if defined(CONFIG_CMD_IMI)
|
||||
@ -70,7 +70,7 @@
|
||||
{
|
||||
--- a/boot/image-fit.c
|
||||
+++ b/boot/image-fit.c
|
||||
@@ -1994,6 +1994,51 @@ static const char *fit_get_image_type_pr
|
||||
@@ -2031,6 +2031,51 @@ static const char *fit_get_image_type_pr
|
||||
return "unknown";
|
||||
}
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/cmd/Kconfig
|
||||
+++ b/cmd/Kconfig
|
||||
@@ -540,6 +540,12 @@ config CMD_ENV_EXISTS
|
||||
@@ -579,6 +579,12 @@ config CMD_ENV_EXISTS
|
||||
Check if a variable is defined in the environment for use in
|
||||
shell scripting.
|
||||
|
||||
|
||||
@ -16,7 +16,7 @@ Reviewed-by: Tom Rini <trini@konsulko.com>
|
||||
|
||||
--- a/boot/image-fdt.c
|
||||
+++ b/boot/image-fdt.c
|
||||
@@ -639,6 +639,12 @@ int image_setup_libfdt(bootm_headers_t *
|
||||
@@ -636,6 +636,12 @@ int image_setup_libfdt(bootm_headers_t *
|
||||
images->fit_uname_cfg,
|
||||
strlen(images->fit_uname_cfg) + 1, 1);
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -2063,26 +2063,7 @@ endif
|
||||
@@ -2032,26 +2032,7 @@ endif
|
||||
# Check dtc and pylibfdt, if DTC is provided, else build them
|
||||
PHONY += scripts_dtc
|
||||
scripts_dtc: scripts_basic
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/configs/mt7623n_bpir2_defconfig
|
||||
+++ b/configs/mt7623n_bpir2_defconfig
|
||||
@@ -4,53 +4,138 @@ CONFIG_ARCH_MEDIATEK=y
|
||||
@@ -4,57 +4,142 @@ CONFIG_ARCH_MEDIATEK=y
|
||||
CONFIG_SYS_TEXT_BASE=0x81e00000
|
||||
CONFIG_SYS_MALLOC_F_LEN=0x4000
|
||||
CONFIG_NR_DRAM_BANKS=1
|
||||
@ -8,10 +8,14 @@
|
||||
+CONFIG_ENV_SIZE=0x10000
|
||||
CONFIG_ENV_OFFSET=0x100000
|
||||
CONFIG_DEFAULT_DEVICE_TREE="mt7623n-bananapi-bpi-r2"
|
||||
-CONFIG_SYS_PROMPT="U-Boot> "
|
||||
+CONFIG_USE_DEFAULT_ENV_FILE=y
|
||||
+CONFIG_SYS_PROMPT="MT7623> "
|
||||
CONFIG_TARGET_MT7623=y
|
||||
CONFIG_SYS_LOAD_ADDR=0x84000000
|
||||
CONFIG_DISTRO_DEFAULTS=y
|
||||
CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
|
||||
CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x81ffff10
|
||||
CONFIG_FIT=y
|
||||
-CONFIG_FIT_VERBOSE=y
|
||||
+CONFIG_FIT_ENABLE_SHA256_SUPPORT=y
|
||||
@ -34,8 +38,9 @@
|
||||
+CONFIG_CFB_CONSOLE_ANSI=y
|
||||
+CONFIG_CMD_ENV_FLAGS=y
|
||||
# CONFIG_DISPLAY_BOARDINFO is not set
|
||||
-CONFIG_SYS_PROMPT="U-Boot> "
|
||||
+CONFIG_SYS_PROMPT="MT7623> "
|
||||
CONFIG_SYS_MAXARGS=8
|
||||
CONFIG_SYS_PBSIZE=1049
|
||||
CONFIG_SYS_BOOTM_LEN=0x4000000
|
||||
CONFIG_CMD_BOOTMENU=y
|
||||
+CONFIG_CMD_BOOTP=y
|
||||
+CONFIG_CMD_BUTTON=y
|
||||
@ -123,7 +128,6 @@
|
||||
CONFIG_SUPPORT_EMMC_BOOT=y
|
||||
CONFIG_MMC_HS400_SUPPORT=y
|
||||
CONFIG_MMC_MTK=y
|
||||
+CONFIG_MTK_AHCI=y
|
||||
+CONFIG_MTK_POWER_DOMAIN=y
|
||||
+CONFIG_MTK_SERIAL=y
|
||||
+CONFIG_MTK_TIMER=y
|
||||
@ -133,7 +137,6 @@
|
||||
+CONFIG_PCIE_MEDIATEK=y
|
||||
+CONFIG_PHY=y
|
||||
CONFIG_PHY_FIXED=y
|
||||
-CONFIG_DM_ETH=y
|
||||
-CONFIG_MEDIATEK_ETH=y
|
||||
CONFIG_PINCTRL=y
|
||||
CONFIG_PINCONF=y
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/configs/mt7623a_unielec_u7623_02_defconfig
|
||||
+++ b/configs/mt7623a_unielec_u7623_02_defconfig
|
||||
@@ -4,51 +4,135 @@ CONFIG_ARCH_MEDIATEK=y
|
||||
@@ -4,55 +4,140 @@ CONFIG_ARCH_MEDIATEK=y
|
||||
CONFIG_SYS_TEXT_BASE=0x81e00000
|
||||
CONFIG_SYS_MALLOC_F_LEN=0x4000
|
||||
CONFIG_NR_DRAM_BANKS=1
|
||||
@ -8,10 +8,14 @@
|
||||
+CONFIG_ENV_SIZE=0x10000
|
||||
CONFIG_ENV_OFFSET=0x100000
|
||||
CONFIG_DEFAULT_DEVICE_TREE="mt7623a-unielec-u7623-02-emmc"
|
||||
-CONFIG_SYS_PROMPT="U-Boot> "
|
||||
+CONFIG_USE_DEFAULT_ENV_FILE=y
|
||||
+CONFIG_SYS_PROMPT="MT7623> "
|
||||
CONFIG_TARGET_MT7623=y
|
||||
CONFIG_SYS_LOAD_ADDR=0x84000000
|
||||
CONFIG_DISTRO_DEFAULTS=y
|
||||
CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
|
||||
CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x81ffff10
|
||||
CONFIG_FIT=y
|
||||
-CONFIG_FIT_VERBOSE=y
|
||||
+CONFIG_FIT_ENABLE_SHA256_SUPPORT=y
|
||||
@ -34,8 +38,9 @@
|
||||
+CONFIG_CFB_CONSOLE_ANSI=y
|
||||
+CONFIG_CMD_ENV_FLAGS=y
|
||||
# CONFIG_DISPLAY_BOARDINFO is not set
|
||||
-CONFIG_SYS_PROMPT="U-Boot> "
|
||||
+CONFIG_SYS_PROMPT="MT7623> "
|
||||
CONFIG_SYS_MAXARGS=8
|
||||
CONFIG_SYS_PBSIZE=1049
|
||||
CONFIG_SYS_BOOTM_LEN=0x4000000
|
||||
CONFIG_CMD_BOOTMENU=y
|
||||
+CONFIG_CMD_BOOTP=y
|
||||
+CONFIG_CMD_BOOTZ=y
|
||||
@ -132,7 +137,6 @@
|
||||
+CONFIG_PCIE_MEDIATEK=y
|
||||
+CONFIG_PHY=y
|
||||
CONFIG_PHY_FIXED=y
|
||||
-CONFIG_DM_ETH=y
|
||||
-CONFIG_MEDIATEK_ETH=y
|
||||
CONFIG_PINCTRL=y
|
||||
CONFIG_PINCONF=y
|
||||
|
||||
@ -335,7 +335,7 @@
|
||||
+};
|
||||
--- a/arch/arm/dts/Makefile
|
||||
+++ b/arch/arm/dts/Makefile
|
||||
@@ -1203,6 +1203,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
|
||||
@@ -1231,6 +1231,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
|
||||
mt7622-rfb.dtb \
|
||||
mt7623a-unielec-u7623-02-emmc.dtb \
|
||||
mt7622-bananapi-bpi-r64.dtb \
|
||||
|
||||
@ -335,7 +335,7 @@
|
||||
+};
|
||||
--- a/arch/arm/dts/Makefile
|
||||
+++ b/arch/arm/dts/Makefile
|
||||
@@ -1204,6 +1204,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
|
||||
@@ -1232,6 +1232,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
|
||||
mt7623a-unielec-u7623-02-emmc.dtb \
|
||||
mt7622-bananapi-bpi-r64.dtb \
|
||||
mt7622-linksys-e8450-ubi.dtb \
|
||||
@ -398,7 +398,7 @@
|
||||
+_bootmenu_update_title=setenv _bootmenu_update_title ; setenv bootmenu_title "$bootmenu_title [33m$ver[0m"
|
||||
--- a/common/board_r.c
|
||||
+++ b/common/board_r.c
|
||||
@@ -62,6 +62,7 @@
|
||||
@@ -65,6 +65,7 @@
|
||||
#include <asm-generic/gpio.h>
|
||||
#include <efi_loader.h>
|
||||
#include <relocate.h>
|
||||
@ -406,7 +406,7 @@
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
@@ -406,6 +407,20 @@ static int initr_onenand(void)
|
||||
@@ -409,6 +410,20 @@ static int initr_onenand(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -427,7 +427,7 @@
|
||||
#ifdef CONFIG_MMC
|
||||
static int initr_mmc(void)
|
||||
{
|
||||
@@ -720,6 +735,9 @@ static init_fnc_t init_sequence_r[] = {
|
||||
@@ -714,6 +729,9 @@ static init_fnc_t init_sequence_r[] = {
|
||||
#ifdef CONFIG_NMBM_MTD
|
||||
initr_nmbm,
|
||||
#endif
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/arch/arm/dts/Makefile
|
||||
+++ b/arch/arm/dts/Makefile
|
||||
@@ -1211,6 +1211,8 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
|
||||
@@ -1239,6 +1239,8 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
|
||||
mt7981-snfi-nand-rfb.dtb \
|
||||
mt7981-emmc-rfb.dtb \
|
||||
mt7981-sd-rfb.dtb \
|
||||
@ -204,7 +204,6 @@
|
||||
+CONFIG_CMD_SF=y
|
||||
+CONFIG_CMD_NAND=y
|
||||
+CONFIG_CMD_NAND_TRIMFFS=y
|
||||
+# CONFIG_ENABLE_NAND_NMBM is not set
|
||||
--- /dev/null
|
||||
+++ b/configs/mt7986a_bpi-r3-nor_defconfig
|
||||
@@ -0,0 +1,193 @@
|
||||
@ -401,7 +400,6 @@
|
||||
+CONFIG_CMD_SF=y
|
||||
+#CONFIG_CMD_NAND=y
|
||||
+#CONFIG_CMD_NAND_TRIMFFS=y
|
||||
+# CONFIG_ENABLE_NAND_NMBM is not set
|
||||
--- /dev/null
|
||||
+++ b/configs/mt7986a_bpi-r3-sd_defconfig
|
||||
@@ -0,0 +1,192 @@
|
||||
@ -597,7 +595,6 @@
|
||||
+CONFIG_CMD_SF=y
|
||||
+CONFIG_CMD_NAND=y
|
||||
+CONFIG_CMD_NAND_TRIMFFS=y
|
||||
+# CONFIG_ENABLE_NAND_NMBM is not set
|
||||
--- /dev/null
|
||||
+++ b/configs/mt7986a_bpi-r3-snand_defconfig
|
||||
@@ -0,0 +1,193 @@
|
||||
@ -794,7 +791,6 @@
|
||||
+#CONFIG_CMD_SF=y
|
||||
+CONFIG_CMD_NAND=y
|
||||
+CONFIG_CMD_NAND_TRIMFFS=y
|
||||
+# CONFIG_ENABLE_NAND_NMBM is not set
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/dts/mt7986a-bpi-r3-emmc.dts
|
||||
@@ -0,0 +1,33 @@
|
||||
|
||||
@ -8,10 +8,10 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_VERSION:=2022.07
|
||||
PKG_VERSION:=2022.10
|
||||
PKG_RELEASE:=$(AUTORELEASE)
|
||||
|
||||
PKG_HASH:=92b08eb49c24da14c1adbf70a71ae8f37cc53eeb4230e859ad8b6733d13dcf5e
|
||||
PKG_HASH:=50b4482a505bc281ba8470c399a3c26e145e29b23500bc35c50debd7fa46bdf8
|
||||
|
||||
include $(INCLUDE_DIR)/u-boot.mk
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
@ -55,12 +55,18 @@ define U-Boot/uDPU
|
||||
BUILD_SUBTARGET:=cortexa53
|
||||
endef
|
||||
|
||||
define U-Boot/eDPU
|
||||
NAME:=Methode eDPU
|
||||
BUILD_SUBTARGET:=cortexa53
|
||||
endef
|
||||
|
||||
UBOOT_TARGETS:= \
|
||||
clearfog \
|
||||
helios4 \
|
||||
omnia \
|
||||
espressobin \
|
||||
uDPU
|
||||
uDPU \
|
||||
eDPU
|
||||
|
||||
define Package/u-boot/install
|
||||
$(if $(findstring cortexa53,$(BUILD_SUBTARGET)),,$(Package/u-boot/install/default))
|
||||
|
||||
@ -1,44 +0,0 @@
|
||||
From 82a6da13c3a113eefdb378ff53635f32a6184d6f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Pali=20Roh=C3=A1r?= <pali@kernel.org>
|
||||
Date: Thu, 8 Sep 2022 16:59:36 +0200
|
||||
Subject: [PATCH] tools: termios_linux.h: Fix compilation on non-glibc systems
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
TCGETS2 is defined in header file asm/ioctls.h provided by linux kernel.
|
||||
On glib systems it is automatically included by some other glibc include
|
||||
header file and therefore TCGETS2 is present in termios_linux.h when
|
||||
linux kernel provides it.
|
||||
|
||||
On non-glibc systems (e.g. musl) asm/ioctls.h is not automatically included
|
||||
which results in the strange error that BOTHER is supported, TCGETS2 not
|
||||
defined and struct termios does not provide c_ispeed member.
|
||||
|
||||
tools/kwboot.c: In function 'kwboot_tty_change_baudrate':
|
||||
tools/kwboot.c:662:6: error: 'struct termios' has no member named 'c_ospeed'
|
||||
662 | tio.c_ospeed = tio.c_ispeed = baudrate;
|
||||
| ^
|
||||
|
||||
Fix this issue by explicitly including asm/ioctls.h file which provides
|
||||
TCGETS2 macro (if supported on selected architecture) to not depending on
|
||||
glibc auto-include behavior and because termios_linux.h requires it.
|
||||
|
||||
With this change it is possible compile kwboot with musl libc.
|
||||
|
||||
Reported-by: Michal Vasilek <michal.vasilek@nic.cz>
|
||||
Signed-off-by: Pali Rohár <pali@kernel.org>
|
||||
---
|
||||
tools/termios_linux.h | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/tools/termios_linux.h
|
||||
+++ b/tools/termios_linux.h
|
||||
@@ -29,6 +29,7 @@
|
||||
#include <errno.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/types.h>
|
||||
+#include <asm/ioctls.h>
|
||||
#include <asm/termbits.h>
|
||||
|
||||
#if defined(BOTHER) && defined(TCGETS2)
|
||||
@ -1,28 +0,0 @@
|
||||
From aed6107ae96870cd190b23d6da34a7e616799ed3 Mon Sep 17 00:00:00 2001
|
||||
From: Michal Vasilek <michal.vasilek@nic.cz>
|
||||
Date: Fri, 22 Jul 2022 19:55:53 +0200
|
||||
Subject: [PATCH 1/2] tools: mkimage: fix build with LibreSSL
|
||||
|
||||
RSA_get0_* functions are not available in LibreSSL
|
||||
|
||||
Signed-off-by: Michal Vasilek <michal.vasilek@nic.cz>
|
||||
Reviewed-by: Simon Glass <sjg@chromium.org>
|
||||
---
|
||||
tools/sunxi_toc0.c | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
--- a/tools/sunxi_toc0.c
|
||||
+++ b/tools/sunxi_toc0.c
|
||||
@@ -34,6 +34,12 @@
|
||||
#define pr_warn(fmt, args...) fprintf(stderr, pr_fmt(fmt), "warning", ##args)
|
||||
#define pr_info(fmt, args...) fprintf(stderr, pr_fmt(fmt), "info", ##args)
|
||||
|
||||
+#if defined(LIBRESSL_VERSION_NUMBER)
|
||||
+#define RSA_get0_n(key) (key)->n
|
||||
+#define RSA_get0_e(key) (key)->e
|
||||
+#define RSA_get0_d(key) (key)->d
|
||||
+#endif
|
||||
+
|
||||
struct __packed toc0_key_item {
|
||||
__le32 vendor_id;
|
||||
__le32 key0_n_len;
|
||||
@ -1,27 +0,0 @@
|
||||
From 16b94d211b18ae0204c4f850fdf23573b19170ec Mon Sep 17 00:00:00 2001
|
||||
From: Mark Kettenis <kettenis@openbsd.org>
|
||||
Date: Mon, 29 Aug 2022 13:34:01 +0200
|
||||
Subject: [PATCH 2/2] tools: mkimage: fix build with recent LibreSSL
|
||||
|
||||
LibreSSL 3.5.0 and later (also shipped as part of OpenBSD 7.1 and
|
||||
and later) have an opaque RSA object and do provide the
|
||||
RSA_get0_* functions that OpenSSL provides.
|
||||
|
||||
Fixes: 2ecc354b8e46 ("tools: mkimage: fix build with LibreSSL")
|
||||
Signed-off-by: Mark Kettenis <kettenis@openbsd.org>
|
||||
Reviewed-by: Jonathan Gray <jsg@jsg.id.au>
|
||||
---
|
||||
tools/sunxi_toc0.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/tools/sunxi_toc0.c
|
||||
+++ b/tools/sunxi_toc0.c
|
||||
@@ -34,7 +34,7 @@
|
||||
#define pr_warn(fmt, args...) fprintf(stderr, pr_fmt(fmt), "warning", ##args)
|
||||
#define pr_info(fmt, args...) fprintf(stderr, pr_fmt(fmt), "info", ##args)
|
||||
|
||||
-#if defined(LIBRESSL_VERSION_NUMBER)
|
||||
+#if defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x3050000fL
|
||||
#define RSA_get0_n(key) (key)->n
|
||||
#define RSA_get0_e(key) (key)->e
|
||||
#define RSA_get0_d(key) (key)->d
|
||||
@ -0,0 +1,24 @@
|
||||
--- a/include/ieee80211.h
|
||||
+++ b/include/ieee80211.h
|
||||
@@ -1313,18 +1313,18 @@ enum ieee80211_state {
|
||||
(((Addr[2]) & 0xff) == 0xff) && (((Addr[3]) & 0xff) == 0xff) && (((Addr[4]) & 0xff) == 0xff) && \
|
||||
(((Addr[5]) & 0xff) == 0xff))
|
||||
#else
|
||||
-extern __inline int is_multicast_mac_addr(const u8 *addr)
|
||||
+__inline static int is_multicast_mac_addr(const u8 *addr)
|
||||
{
|
||||
return ((addr[0] != 0xff) && (0x01 & addr[0]));
|
||||
}
|
||||
|
||||
-extern __inline int is_broadcast_mac_addr(const u8 *addr)
|
||||
+__inline static int is_broadcast_mac_addr(const u8 *addr)
|
||||
{
|
||||
return ((addr[0] == 0xff) && (addr[1] == 0xff) && (addr[2] == 0xff) && \
|
||||
(addr[3] == 0xff) && (addr[4] == 0xff) && (addr[5] == 0xff));
|
||||
}
|
||||
|
||||
-extern __inline int is_zero_mac_addr(const u8 *addr)
|
||||
+__inline static int is_zero_mac_addr(const u8 *addr)
|
||||
{
|
||||
return ((addr[0] == 0x00) && (addr[1] == 0x00) && (addr[2] == 0x00) && \
|
||||
(addr[3] == 0x00) && (addr[4] == 0x00) && (addr[5] == 0x00));
|
||||
@ -9,9 +9,9 @@ PKG_RELEASE:=$(AUTORELEASE)
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/firewall4.git
|
||||
PKG_SOURCE_DATE:=2022-09-01
|
||||
PKG_SOURCE_VERSION:=f5fcdcf2c51f6f0a4b116c352000c4fe0523be77
|
||||
PKG_MIRROR_HASH:=57ef6f161abdd323019c026c959ab875fdfd3c972b8dc7767623634b1c259138
|
||||
PKG_SOURCE_DATE:=2022-10-18
|
||||
PKG_SOURCE_VERSION:=7ae5e14bbd7265cc67ec870c3bb0c8e197bb7ca9
|
||||
PKG_MIRROR_HASH:=ce190e526df915df65b40aa24fadf2a1b5badc57ab4e564d5f44575b11d18e26
|
||||
PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
|
||||
PKG_LICENSE:=ISC
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=uhttpd
|
||||
PKG_RELEASE:=1
|
||||
PKG_RELEASE:=2
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/uhttpd.git
|
||||
@ -113,6 +113,8 @@ define Package/uhttpd/install
|
||||
$(VERSION_SED_SCRIPT) $(1)/etc/config/uhttpd
|
||||
$(INSTALL_DIR) $(1)/usr/sbin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/uhttpd $(1)/usr/sbin/uhttpd
|
||||
$(INSTALL_DIR) $(1)/etc/hotplug.d/acme
|
||||
$(INSTALL_DATA) ./files/acme.hotplug $(1)/etc/hotplug.d/acme/00-uhttpd
|
||||
endef
|
||||
|
||||
define Package/uhttpd-mod-lua/install
|
||||
|
||||
3
package/network/services/uhttpd/files/acme.hotplug
Normal file
3
package/network/services/uhttpd/files/acme.hotplug
Normal file
@ -0,0 +1,3 @@
|
||||
if [ "$ACTION" = renewed ]; then
|
||||
/etc/init.d/uhttpd reload
|
||||
fi
|
||||
@ -8,13 +8,13 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=ethtool
|
||||
PKG_VERSION:=5.19
|
||||
PKG_VERSION:=6.0
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=@KERNEL/software/network/ethtool
|
||||
PKG_HASH:=3b752a3329827907ac3812f2831dfecf51c8c41c55d2d69cfb9c53ca06449fc6
|
||||
PKG_HASH:=d5446c93de570ce68f3b1ea69dbfa12fcfd67fc19897f655d3f18231e2b818d6
|
||||
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
PKG_LICENSE_FILES:=COPYING
|
||||
|
||||
@ -12,9 +12,9 @@ PKG_RELEASE:=$(AUTORELEASE)
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/fstools.git
|
||||
PKG_MIRROR_HASH:=aecd54ca2421fee691d2fb4a77e0348d225c6949d5254dd9da0827da9728cb2d
|
||||
PKG_SOURCE_DATE:=2022-08-13
|
||||
PKG_SOURCE_VERSION:=81785c1b9a9c1b797e7406a3542c01d972c61315
|
||||
PKG_MIRROR_HASH:=dd8467092b30ea15a3568fea567e34f7d0b60d5c6ee0d1353e93a4df110ab1ab
|
||||
PKG_SOURCE_DATE:=2022-10-18
|
||||
PKG_SOURCE_VERSION:=ee54c6bce17c48a725eadcc313b6ca8445f9ec8c
|
||||
CMAKE_INSTALL:=1
|
||||
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
|
||||
@ -12,9 +12,9 @@ PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/rpcd.git
|
||||
PKG_MIRROR_HASH:=90ce347d391694e6207ae3c57aaf8b80b7cfe043823f3610244c8f47e9017935
|
||||
PKG_SOURCE_DATE:=2022-09-12
|
||||
PKG_SOURCE_VERSION:=e80d0b2d77f8ed163872971200d24c423db60bb8
|
||||
PKG_MIRROR_HASH:=18137fa6904b1a7aec03a16a4c25fd9b9689b24ee14d431bacdda9f093339071
|
||||
PKG_SOURCE_DATE:=2022-09-21
|
||||
PKG_SOURCE_VERSION:=8c852b656bf1622dee1ae2cfa4c083f730c1c539
|
||||
PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
|
||||
|
||||
PKG_LICENSE:=ISC
|
||||
|
||||
@ -0,0 +1,42 @@
|
||||
From: Uwe Kleine-König <uwe@kleine-koenig.org>
|
||||
Date: Sat, 8 Oct 2022 19:22:52 +0200
|
||||
Subject: [PATCH] nslookup: ensure unique transaction IDs for the DNS queries
|
||||
|
||||
The transaction IDs generated by res_mkquery() for both glibc and musl only
|
||||
depends on the state of the monotonic clock.
|
||||
For some machines (here: a TP-Link RE200 powered by a MediaTek MT7620A)
|
||||
the monotonic clock has a coarse resolution (here: 20 µs) and it can happen
|
||||
that the requests for A and AAAA share the same transaction ID.
|
||||
|
||||
In that case the mapping from received responses to the sent queries
|
||||
doesn't work and name resolution fails as follows:
|
||||
|
||||
# /bin/busybox nslookup heise.de
|
||||
Server: 127.0.0.1
|
||||
Address: 127.0.0.1:53
|
||||
|
||||
Non-authoritative answer:
|
||||
Name: heise.de
|
||||
Address: 193.99.144.80
|
||||
|
||||
*** Can't find heise.de: No answer
|
||||
|
||||
because the AAAA reply is dropped as a duplicate reply to the A query.
|
||||
|
||||
To prevent this make sure the transaction IDs are unique.
|
||||
|
||||
Forwarded: http://lists.busybox.net/pipermail/busybox/2022-October/089911.html
|
||||
---
|
||||
--- a/networking/nslookup.c
|
||||
+++ b/networking/nslookup.c
|
||||
@@ -978,6 +978,10 @@ int nslookup_main(int argc UNUSED_PARAM,
|
||||
}
|
||||
}
|
||||
|
||||
+ /* Ensure the Transaction IDs are unique */
|
||||
+ for (rc = 1; rc < G.query_count; rc++)
|
||||
+ G.query[rc].query[1] = G.query[rc - 1].query[1] + 1;
|
||||
+
|
||||
for (rc = 0; rc < G.serv_count;) {
|
||||
int c;
|
||||
|
||||
@ -12,9 +12,9 @@ PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=https://github.com/jow-/ucode.git
|
||||
PKG_SOURCE_DATE:=2022-09-09
|
||||
PKG_SOURCE_VERSION:=7fa59ce44b9347528b0e4e44ebcfb04a08479f3f
|
||||
PKG_MIRROR_HASH:=abef8939104db9d08d18fc65941d9357b8fc1b0f3b511e361388789972d0a44b
|
||||
PKG_SOURCE_DATE:=2022-10-18
|
||||
PKG_SOURCE_VERSION:=00af065057a0e9c10ce6a6475acc47920790c2a9
|
||||
PKG_MIRROR_HASH:=58077503b6cabe70334fca8f33f0e443c60de31a1aaadef7079d5d103c547fe1
|
||||
PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
|
||||
PKG_LICENSE:=ISC
|
||||
|
||||
|
||||
@ -13,11 +13,9 @@ Signed-off-by: Aleksey Nasibulin <alealexpro100@ya.ru>
|
||||
arch/arm/boot/dts/bcm4708-linksys-ea6500-v2.dts | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/bcm4708-linksys-ea6500-v2.dts b/arch/arm/boot/dts/bcm4708-linksys-ea6500-v2.dts
|
||||
index f1412ba83def..0454423fe166 100644
|
||||
--- a/arch/arm/boot/dts/bcm4708-linksys-ea6500-v2.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4708-linksys-ea6500-v2.dts
|
||||
@@ -19,7 +19,8 @@ chosen {
|
||||
@@ -19,7 +19,8 @@
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
@ -27,6 +25,3 @@ index f1412ba83def..0454423fe166 100644
|
||||
};
|
||||
|
||||
gpio-keys {
|
||||
--
|
||||
2.30.2
|
||||
|
||||
|
||||
@ -13,11 +13,9 @@ Signed-off-by: Aleksey Nasibulin <alealexpro100@ya.ru>
|
||||
arch/arm/boot/dts/bcm4708-linksys-ea6500-v2.dts | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/bcm4708-linksys-ea6500-v2.dts b/arch/arm/boot/dts/bcm4708-linksys-ea6500-v2.dts
|
||||
index f1412ba83def..0454423fe166 100644
|
||||
--- a/arch/arm/boot/dts/bcm4708-linksys-ea6500-v2.dts
|
||||
+++ b/arch/arm/boot/dts/bcm4708-linksys-ea6500-v2.dts
|
||||
@@ -19,7 +19,8 @@ chosen {
|
||||
@@ -19,7 +19,8 @@
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
@ -27,6 +25,3 @@ index f1412ba83def..0454423fe166 100644
|
||||
};
|
||||
|
||||
gpio-keys {
|
||||
--
|
||||
2.30.2
|
||||
|
||||
|
||||
@ -39,13 +39,13 @@ Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
|
||||
+++ b/Makefile
|
||||
@@ -416,7 +416,8 @@ HOSTCXX = g++
|
||||
endif
|
||||
|
||||
|
||||
export KBUILD_USERCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes \
|
||||
- -O2 -fomit-frame-pointer -std=gnu89
|
||||
+ -O2 -fomit-frame-pointer -std=gnu89 \
|
||||
+ -Wdeclaration-after-statement
|
||||
export KBUILD_USERLDFLAGS :=
|
||||
|
||||
|
||||
KBUILD_HOSTCFLAGS := $(KBUILD_USERCFLAGS) $(HOST_LFS_CFLAGS) $(HOSTCFLAGS)
|
||||
--- a/arch/arm64/kernel/vdso32/Makefile
|
||||
+++ b/arch/arm64/kernel/vdso32/Makefile
|
||||
@ -61,13 +61,13 @@ Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
|
||||
+++ b/scripts/mod/modpost.c
|
||||
@@ -844,8 +844,10 @@ static int match(const char *sym, const
|
||||
{
|
||||
const char *p;
|
||||
while (*pat) {
|
||||
const char *p;
|
||||
while (*pat) {
|
||||
+ const char *endp;
|
||||
+
|
||||
p = *pat++;
|
||||
p = *pat++;
|
||||
- const char *endp = p + strlen(p) - 1;
|
||||
+ endp = p + strlen(p) - 1;
|
||||
|
||||
/* "*foo*" */
|
||||
if (*p == '*' && *endp == '*') {
|
||||
|
||||
/* "*foo*" */
|
||||
if (*p == '*' && *endp == '*') {
|
||||
|
||||
@ -50,9 +50,9 @@ Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -498,7 +498,7 @@ KBUILD_CFLAGS := -Wall -Wundef -Werror
|
||||
-fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE \
|
||||
-Werror=implicit-function-declaration -Werror=implicit-int \
|
||||
-Werror=return-type -Wno-format-security \
|
||||
-fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE \
|
||||
-Werror=implicit-function-declaration -Werror=implicit-int \
|
||||
-Werror=return-type -Wno-format-security \
|
||||
- -std=gnu89
|
||||
+ -std=gnu11
|
||||
KBUILD_CPPFLAGS := -D__KERNEL__
|
||||
|
||||
@ -34,9 +34,10 @@ Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
|
||||
+++ b/Makefile
|
||||
@@ -416,7 +416,7 @@ HOSTCXX = g++
|
||||
endif
|
||||
|
||||
|
||||
export KBUILD_USERCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes \
|
||||
- -O2 -fomit-frame-pointer -std=gnu89 \
|
||||
+ -O2 -fomit-frame-pointer -std=gnu11 \
|
||||
-Wdeclaration-after-statement
|
||||
-Wdeclaration-after-statement
|
||||
export KBUILD_USERLDFLAGS :=
|
||||
|
||||
|
||||
@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -507,7 +507,7 @@ KBUILD_LDFLAGS_MODULE :=
|
||||
@@ -508,7 +508,7 @@ KBUILD_LDFLAGS_MODULE :=
|
||||
KBUILD_LDFLAGS :=
|
||||
CLANG_FLAGS :=
|
||||
|
||||
|
||||
@ -35,25 +35,21 @@ Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
|
||||
scripts/mod/modpost.c | 4 +++-
|
||||
3 files changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index b9e0b5c604af..cfe400032f96 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -416,7 +416,8 @@ HOSTCXX = g++
|
||||
@@ -432,7 +432,8 @@ HOSTCXX = g++
|
||||
endif
|
||||
|
||||
|
||||
export KBUILD_USERCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes \
|
||||
- -O2 -fomit-frame-pointer -std=gnu89
|
||||
+ -O2 -fomit-frame-pointer -std=gnu89 \
|
||||
+ -Wdeclaration-after-statement
|
||||
export KBUILD_USERLDFLAGS :=
|
||||
|
||||
|
||||
KBUILD_HOSTCFLAGS := $(KBUILD_USERCFLAGS) $(HOST_LFS_CFLAGS) $(HOSTCFLAGS)
|
||||
diff --git a/arch/arm64/kernel/vdso32/Makefile b/arch/arm64/kernel/vdso32/Makefile
|
||||
index abad38c576e1..33cd7ed3f94f 100644
|
||||
--- a/arch/arm64/kernel/vdso32/Makefile
|
||||
+++ b/arch/arm64/kernel/vdso32/Makefile
|
||||
@@ -76,6 +76,7 @@ VDSO_CFLAGS += -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
|
||||
@@ -76,6 +76,7 @@ VDSO_CFLAGS += -Wall -Wundef -Wstrict-pr
|
||||
-fno-strict-aliasing -fno-common \
|
||||
-Werror-implicit-function-declaration \
|
||||
-Wno-format-security \
|
||||
@ -61,21 +57,17 @@ index abad38c576e1..33cd7ed3f94f 100644
|
||||
-std=gnu89
|
||||
VDSO_CFLAGS += -O2
|
||||
# Some useful compiler-dependent flags from top-level Makefile
|
||||
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
|
||||
index 3c27a177b28b..d2b17ed27e6e 100644
|
||||
--- a/scripts/mod/modpost.c
|
||||
+++ b/scripts/mod/modpost.c
|
||||
@@ -844,8 +844,10 @@ static int match(const char *sym, const char * const pat[])
|
||||
@@ -833,8 +833,10 @@ static int match(const char *sym, const
|
||||
{
|
||||
const char *p;
|
||||
while (*pat) {
|
||||
const char *p;
|
||||
while (*pat) {
|
||||
+ const char *endp;
|
||||
+
|
||||
p = *pat++;
|
||||
p = *pat++;
|
||||
- const char *endp = p + strlen(p) - 1;
|
||||
+ endp = p + strlen(p) - 1;
|
||||
|
||||
/* "*foo*" */
|
||||
if (*p == '*' && *endp == '*') {
|
||||
--
|
||||
2.37.2
|
||||
|
||||
/* "*foo*" */
|
||||
if (*p == '*' && *endp == '*') {
|
||||
|
||||
@ -47,18 +47,14 @@ Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
|
||||
Makefile | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index cfe400032f96..fe86758acaaa 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -498,7 +498,7 @@ KBUILD_CFLAGS := -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs \
|
||||
-fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE \
|
||||
-Werror=implicit-function-declaration -Werror=implicit-int \
|
||||
-Werror=return-type -Wno-format-security \
|
||||
@@ -516,7 +516,7 @@ KBUILD_CFLAGS := -Wall -Wundef -Werror
|
||||
-fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE \
|
||||
-Werror=implicit-function-declaration -Werror=implicit-int \
|
||||
-Werror=return-type -Wno-format-security \
|
||||
- -std=gnu89
|
||||
+ -std=gnu11
|
||||
KBUILD_CPPFLAGS := -D__KERNEL__
|
||||
KBUILD_AFLAGS_KERNEL :=
|
||||
KBUILD_CFLAGS_KERNEL :=
|
||||
--
|
||||
2.37.2
|
||||
|
||||
@ -30,18 +30,14 @@ Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
|
||||
Makefile | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index fe86758acaaa..e569fccfb009 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -416,7 +416,7 @@ HOSTCXX = g++
|
||||
@@ -432,7 +432,7 @@ HOSTCXX = g++
|
||||
endif
|
||||
|
||||
|
||||
export KBUILD_USERCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes \
|
||||
- -O2 -fomit-frame-pointer -std=gnu89 \
|
||||
+ -O2 -fomit-frame-pointer -std=gnu11 \
|
||||
-Wdeclaration-after-statement
|
||||
-Wdeclaration-after-statement
|
||||
export KBUILD_USERLDFLAGS :=
|
||||
|
||||
--
|
||||
2.37.2
|
||||
|
||||
|
||||
@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -525,7 +525,7 @@ KBUILD_LDFLAGS_MODULE :=
|
||||
@@ -526,7 +526,7 @@ KBUILD_LDFLAGS_MODULE :=
|
||||
KBUILD_LDFLAGS :=
|
||||
CLANG_FLAGS :=
|
||||
|
||||
|
||||
@ -22,11 +22,9 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
include/linux/dsa/tag_qca.h | 6 +--
|
||||
2 files changed, 50 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/dsa/qca/qca8k-8xxx.c b/drivers/net/dsa/qca/qca8k-8xxx.c
|
||||
index 5669c92c93f7..644338ca0510 100644
|
||||
--- a/drivers/net/dsa/qca/qca8k-8xxx.c
|
||||
+++ b/drivers/net/dsa/qca/qca8k-8xxx.c
|
||||
@@ -137,27 +137,42 @@ static void qca8k_rw_reg_ack_handler(struct dsa_switch *ds, struct sk_buff *skb)
|
||||
@@ -137,27 +137,42 @@ static void qca8k_rw_reg_ack_handler(str
|
||||
struct qca8k_mgmt_eth_data *mgmt_eth_data;
|
||||
struct qca8k_priv *priv = ds->priv;
|
||||
struct qca_mgmt_ethhdr *mgmt_ethhdr;
|
||||
@ -76,7 +74,7 @@ index 5669c92c93f7..644338ca0510 100644
|
||||
}
|
||||
|
||||
complete(&mgmt_eth_data->rw_done);
|
||||
@@ -169,8 +184,10 @@ static struct sk_buff *qca8k_alloc_mdio_header(enum mdio_cmd cmd, u32 reg, u32 *
|
||||
@@ -169,8 +184,10 @@ static struct sk_buff *qca8k_alloc_mdio_
|
||||
struct qca_mgmt_ethhdr *mgmt_ethhdr;
|
||||
unsigned int real_len;
|
||||
struct sk_buff *skb;
|
||||
@ -88,7 +86,7 @@ index 5669c92c93f7..644338ca0510 100644
|
||||
|
||||
skb = dev_alloc_skb(QCA_HDR_MGMT_PKT_LEN);
|
||||
if (!skb)
|
||||
@@ -199,20 +216,32 @@ static struct sk_buff *qca8k_alloc_mdio_header(enum mdio_cmd cmd, u32 reg, u32 *
|
||||
@@ -199,20 +216,32 @@ static struct sk_buff *qca8k_alloc_mdio_
|
||||
hdr |= FIELD_PREP(QCA_HDR_XMIT_DP_BIT, BIT(0));
|
||||
hdr |= FIELD_PREP(QCA_HDR_XMIT_CONTROL, QCA_HDR_XMIT_TYPE_RW_REG);
|
||||
|
||||
@ -128,7 +126,7 @@ index 5669c92c93f7..644338ca0510 100644
|
||||
|
||||
return skb;
|
||||
}
|
||||
@@ -220,9 +249,11 @@ static struct sk_buff *qca8k_alloc_mdio_header(enum mdio_cmd cmd, u32 reg, u32 *
|
||||
@@ -220,9 +249,11 @@ static struct sk_buff *qca8k_alloc_mdio_
|
||||
static void qca8k_mdio_header_fill_seq_num(struct sk_buff *skb, u32 seq_num)
|
||||
{
|
||||
struct qca_mgmt_ethhdr *mgmt_ethhdr;
|
||||
@ -141,11 +139,9 @@ index 5669c92c93f7..644338ca0510 100644
|
||||
}
|
||||
|
||||
static int qca8k_read_eth(struct qca8k_priv *priv, u32 reg, u32 *val, int len)
|
||||
diff --git a/include/linux/dsa/tag_qca.h b/include/linux/dsa/tag_qca.h
|
||||
index 50be7cbd93a5..0e176da1e43f 100644
|
||||
--- a/include/linux/dsa/tag_qca.h
|
||||
+++ b/include/linux/dsa/tag_qca.h
|
||||
@@ -61,9 +61,9 @@ struct sk_buff;
|
||||
@@ -56,9 +56,9 @@
|
||||
|
||||
/* Special struct emulating a Ethernet header */
|
||||
struct qca_mgmt_ethhdr {
|
||||
@ -158,6 +154,3 @@ index 50be7cbd93a5..0e176da1e43f 100644
|
||||
__be16 hdr; /* qca hdr */
|
||||
} __packed;
|
||||
|
||||
--
|
||||
2.37.2
|
||||
|
||||
|
||||
@ -19,11 +19,9 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
include/linux/dsa/tag_qca.h | 2 +-
|
||||
2 files changed, 9 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/dsa/qca/qca8k-8xxx.c b/drivers/net/dsa/qca/qca8k-8xxx.c
|
||||
index 644338ca0510..c5c3b4e92f28 100644
|
||||
--- a/drivers/net/dsa/qca/qca8k-8xxx.c
|
||||
+++ b/drivers/net/dsa/qca/qca8k-8xxx.c
|
||||
@@ -1518,9 +1518,9 @@ static void qca8k_mib_autocast_handler(struct dsa_switch *ds, struct sk_buff *sk
|
||||
@@ -1668,9 +1668,9 @@ static void qca8k_mib_autocast_handler(s
|
||||
struct qca8k_priv *priv = ds->priv;
|
||||
const struct qca8k_mib_desc *mib;
|
||||
struct mib_ethhdr *mib_ethhdr;
|
||||
@ -35,7 +33,7 @@ index 644338ca0510..c5c3b4e92f28 100644
|
||||
|
||||
mib_ethhdr = (struct mib_ethhdr *)skb_mac_header(skb);
|
||||
mib_eth_data = &priv->mib_eth_data;
|
||||
@@ -1532,28 +1532,24 @@ static void qca8k_mib_autocast_handler(struct dsa_switch *ds, struct sk_buff *sk
|
||||
@@ -1682,28 +1682,24 @@ static void qca8k_mib_autocast_handler(s
|
||||
if (port != mib_eth_data->req_port)
|
||||
goto exit;
|
||||
|
||||
@ -70,11 +68,9 @@ index 644338ca0510..c5c3b4e92f28 100644
|
||||
}
|
||||
|
||||
exit:
|
||||
diff --git a/include/linux/dsa/tag_qca.h b/include/linux/dsa/tag_qca.h
|
||||
index 0e176da1e43f..b1b5720d89a5 100644
|
||||
--- a/include/linux/dsa/tag_qca.h
|
||||
+++ b/include/linux/dsa/tag_qca.h
|
||||
@@ -73,7 +73,7 @@ enum mdio_cmd {
|
||||
@@ -68,7 +68,7 @@ enum mdio_cmd {
|
||||
};
|
||||
|
||||
struct mib_ethhdr {
|
||||
@ -83,6 +79,3 @@ index 0e176da1e43f..b1b5720d89a5 100644
|
||||
__be16 hdr; /* qca hdr */
|
||||
} __packed;
|
||||
|
||||
--
|
||||
2.37.2
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user