Merge patch series "Hyperflash Boot fixes for J7200/J721E"

Anurag Dutta <a-dutta@ti.com> says:

Hi All,
In u-boot, hbmc is broken and has been removed from j7200
configs. This series re-enables the hbmc driver and introduces a series
of hyperflash boot fixes. At present, in u-boot, the parent device (fss)
gets registered as a syscon device. This is done because the MMIO
mux driver in u-boot did not support the mux functionality when the
parent device is not a syscon. In this series, we make relevant changes
in the hbmc driver as well as dts' so that we can use the reg-mux driver for
selecting the appropriate state of the mux.

Test logs:

1) j721e-idk-gw hyperflash boot test: https://gist.github.com/anuragdutta731/50aae6fec707a3ffad6d985de6757fe4
2) j7200-evm hyperflash boot test: https://gist.github.com/anuragdutta731/c3a4d60f8bfd9c425d6c44b36eb7322b

Link: https://lore.kernel.org/r/20241129113136.383277-1-a-dutta@ti.com
This commit is contained in:
Tom Rini 2024-12-14 09:34:27 -06:00
commit 8aab7730c1
10 changed files with 43 additions and 9 deletions

View file

@ -101,6 +101,13 @@
<0x0 0x50000000 0x0 0x50000000 0x0 0x08000000>; <0x0 0x50000000 0x0 0x50000000 0x0 0x08000000>;
}; };
&hbmc {
reg = <0x0 0x47040000 0x0 0x100>,
<0x0 0x50000000 0x0 0x8000000>;
ranges = <0x0 0x0 0x0 0x50000000 0x4000000>,
<0x1 0x0 0x0 0x54000000 0x800000>;
};
&mcu_ringacc { &mcu_ringacc {
ti,sci = <&dm_tifs>; ti,sci = <&dm_tifs>;
}; };

View file

@ -51,6 +51,13 @@
bootph-pre-ram; bootph-pre-ram;
}; };
&hbmc {
reg = <0x0 0x47040000 0x0 0x100>,
<0x0 0x50000000 0x0 0x8000000>;
ranges = <0x0 0x0 0x0 0x50000000 0x4000000>,
<0x1 0x0 0x0 0x54000000 0x800000>;
};
&ospi0 { &ospi0 {
/* Address change for data region (32-bit) */ /* Address change for data region (32-bit) */
reg = <0x0 0x47040000 0x0 0x100>, reg = <0x0 0x47040000 0x0 0x100>,

View file

@ -130,11 +130,13 @@ CONFIG_MMC_SDHCI_AM654=y
CONFIG_MTD=y CONFIG_MTD=y
CONFIG_DM_MTD=y CONFIG_DM_MTD=y
CONFIG_MTD_NOR_FLASH=y CONFIG_MTD_NOR_FLASH=y
CONFIG_SYS_FLASH_CFI_WIDTH_16BIT=y
CONFIG_FLASH_SHOW_PROGRESS=0 CONFIG_FLASH_SHOW_PROGRESS=0
CONFIG_CFI_FLASH=y CONFIG_CFI_FLASH=y
CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
CONFIG_FLASH_CFI_MTD=y CONFIG_FLASH_CFI_MTD=y
CONFIG_SYS_FLASH_CFI=y CONFIG_SYS_FLASH_CFI=y
CONFIG_HBMC_AM654=y
CONFIG_SYS_MAX_FLASH_BANKS_DETECT=y CONFIG_SYS_MAX_FLASH_BANKS_DETECT=y
CONFIG_DM_SPI_FLASH=y CONFIG_DM_SPI_FLASH=y
CONFIG_SPI_FLASH_SFDP_SUPPORT=y CONFIG_SPI_FLASH_SFDP_SUPPORT=y
@ -145,7 +147,7 @@ CONFIG_SPI_FLASH_S28HX_T=y
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
CONFIG_SPI_FLASH_MTD=y CONFIG_SPI_FLASH_MTD=y
CONFIG_MULTIPLEXER=y CONFIG_MULTIPLEXER=y
CONFIG_MUX_MMIO=y CONFIG_SPL_MUX_MMIO=y
CONFIG_PHY_TI_DP83869=y CONFIG_PHY_TI_DP83869=y
CONFIG_PHY_FIXED=y CONFIG_PHY_FIXED=y
CONFIG_TI_AM65_CPSW_NUSS=y CONFIG_TI_AM65_CPSW_NUSS=y

View file

@ -111,11 +111,13 @@ CONFIG_MMC_SDHCI_AM654=y
CONFIG_MTD=y CONFIG_MTD=y
CONFIG_DM_MTD=y CONFIG_DM_MTD=y
CONFIG_MTD_NOR_FLASH=y CONFIG_MTD_NOR_FLASH=y
CONFIG_SYS_FLASH_CFI_WIDTH_16BIT=y
CONFIG_FLASH_SHOW_PROGRESS=0 CONFIG_FLASH_SHOW_PROGRESS=0
CONFIG_CFI_FLASH=y CONFIG_CFI_FLASH=y
CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
CONFIG_FLASH_CFI_MTD=y CONFIG_FLASH_CFI_MTD=y
CONFIG_SYS_FLASH_CFI=y CONFIG_SYS_FLASH_CFI=y
CONFIG_HBMC_AM654=y
CONFIG_SYS_MAX_FLASH_BANKS_DETECT=y CONFIG_SYS_MAX_FLASH_BANKS_DETECT=y
CONFIG_DM_SPI_FLASH=y CONFIG_DM_SPI_FLASH=y
CONFIG_SPI_FLASH_SFDP_SUPPORT=y CONFIG_SPI_FLASH_SFDP_SUPPORT=y
@ -123,6 +125,8 @@ CONFIG_SPI_FLASH_SOFT_RESET=y
CONFIG_SPI_FLASH_SOFT_RESET_ON_BOOT=y CONFIG_SPI_FLASH_SOFT_RESET_ON_BOOT=y
CONFIG_SPI_FLASH_SPANSION=y CONFIG_SPI_FLASH_SPANSION=y
CONFIG_SPI_FLASH_S28HX_T=y CONFIG_SPI_FLASH_S28HX_T=y
CONFIG_MULTIPLEXER=y
CONFIG_SPL_MUX_MMIO=y
CONFIG_PINCTRL=y CONFIG_PINCTRL=y
# CONFIG_PINCTRL_GENERIC is not set # CONFIG_PINCTRL_GENERIC is not set
CONFIG_SPL_PINCTRL=y CONFIG_SPL_PINCTRL=y

View file

@ -133,11 +133,13 @@ CONFIG_MMC_SDHCI_AM654=y
CONFIG_MTD=y CONFIG_MTD=y
CONFIG_DM_MTD=y CONFIG_DM_MTD=y
CONFIG_MTD_NOR_FLASH=y CONFIG_MTD_NOR_FLASH=y
CONFIG_SYS_FLASH_CFI_WIDTH_16BIT=y
CONFIG_FLASH_SHOW_PROGRESS=0 CONFIG_FLASH_SHOW_PROGRESS=0
CONFIG_CFI_FLASH=y CONFIG_CFI_FLASH=y
CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
CONFIG_FLASH_CFI_MTD=y CONFIG_FLASH_CFI_MTD=y
CONFIG_SYS_FLASH_CFI=y CONFIG_SYS_FLASH_CFI=y
CONFIG_HBMC_AM654=y
CONFIG_SYS_MAX_FLASH_BANKS_DETECT=y CONFIG_SYS_MAX_FLASH_BANKS_DETECT=y
CONFIG_DM_SPI_FLASH=y CONFIG_DM_SPI_FLASH=y
CONFIG_SPI_FLASH_SFDP_SUPPORT=y CONFIG_SPI_FLASH_SFDP_SUPPORT=y
@ -150,7 +152,7 @@ CONFIG_SPI_FLASH_MT35XU=y
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
CONFIG_SPI_FLASH_MTD=y CONFIG_SPI_FLASH_MTD=y
CONFIG_MULTIPLEXER=y CONFIG_MULTIPLEXER=y
CONFIG_MUX_MMIO=y CONFIG_SPL_MUX_MMIO=y
CONFIG_PHY_TI_DP83867=y CONFIG_PHY_TI_DP83867=y
CONFIG_PHY_FIXED=y CONFIG_PHY_FIXED=y
CONFIG_TI_AM65_CPSW_NUSS=y CONFIG_TI_AM65_CPSW_NUSS=y

View file

@ -121,11 +121,13 @@ CONFIG_MMC_SDHCI_AM654=y
CONFIG_MTD=y CONFIG_MTD=y
CONFIG_DM_MTD=y CONFIG_DM_MTD=y
CONFIG_MTD_NOR_FLASH=y CONFIG_MTD_NOR_FLASH=y
CONFIG_SYS_FLASH_CFI_WIDTH_16BIT=y
CONFIG_FLASH_SHOW_PROGRESS=0 CONFIG_FLASH_SHOW_PROGRESS=0
CONFIG_CFI_FLASH=y CONFIG_CFI_FLASH=y
CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
CONFIG_FLASH_CFI_MTD=y CONFIG_FLASH_CFI_MTD=y
CONFIG_SYS_FLASH_CFI=y CONFIG_SYS_FLASH_CFI=y
CONFIG_HBMC_AM654=y
CONFIG_DM_SPI_FLASH=y CONFIG_DM_SPI_FLASH=y
CONFIG_SPI_FLASH_SFDP_SUPPORT=y CONFIG_SPI_FLASH_SFDP_SUPPORT=y
CONFIG_SPI_FLASH_SOFT_RESET=y CONFIG_SPI_FLASH_SOFT_RESET=y
@ -134,6 +136,8 @@ CONFIG_SPI_FLASH_SPANSION=y
CONFIG_SPI_FLASH_S28HX_T=y CONFIG_SPI_FLASH_S28HX_T=y
CONFIG_SPI_FLASH_STMICRO=y CONFIG_SPI_FLASH_STMICRO=y
CONFIG_SPI_FLASH_MT35XU=y CONFIG_SPI_FLASH_MT35XU=y
CONFIG_MULTIPLEXER=y
CONFIG_SPL_MUX_MMIO=y
CONFIG_PINCTRL=y CONFIG_PINCTRL=y
# CONFIG_PINCTRL_GENERIC is not set # CONFIG_PINCTRL_GENERIC is not set
CONFIG_SPL_PINCTRL=y CONFIG_SPL_PINCTRL=y

View file

@ -21,6 +21,7 @@ obj-$(CONFIG_$(PHASE_)INPUT) += input/
obj-$(CONFIG_$(PHASE_)LED) += led/ obj-$(CONFIG_$(PHASE_)LED) += led/
obj-$(CONFIG_$(PHASE_)MMC) += mmc/ obj-$(CONFIG_$(PHASE_)MMC) += mmc/
obj-y += mtd/ obj-y += mtd/
obj-$(CONFIG_MULTIPLEXER) += mux/
obj-$(CONFIG_$(PHASE_)ETH) += net/ obj-$(CONFIG_$(PHASE_)ETH) += net/
obj-$(CONFIG_$(PHASE_)PCH) += pch/ obj-$(CONFIG_$(PHASE_)PCH) += pch/
obj-$(CONFIG_$(PHASE_)PCI) += pci/ obj-$(CONFIG_$(PHASE_)PCI) += pci/

View file

@ -202,7 +202,7 @@ config RENESAS_RPC_HF
config HBMC_AM654 config HBMC_AM654
bool "HyperBus controller driver for AM65x SoC" bool "HyperBus controller driver for AM65x SoC"
depends on SYSCON depends on MULTIPLEXER && MUX_MMIO
help help
This is the driver for HyperBus controller on TI's AM65x and This is the driver for HyperBus controller on TI's AM65x and
other SoCs other SoCs

View file

@ -5,8 +5,8 @@
#include <asm/io.h> #include <asm/io.h>
#include <dm.h> #include <dm.h>
#include <mux.h>
#include <regmap.h> #include <regmap.h>
#include <syscon.h>
#include <dm/device_compat.h> #include <dm/device_compat.h>
#define FSS_SYSC_REG 0x4 #define FSS_SYSC_REG 0x4
@ -52,9 +52,13 @@ static int am654_hyperbus_calibrate(struct udevice *dev)
static int am654_select_hbmc(struct udevice *dev) static int am654_select_hbmc(struct udevice *dev)
{ {
struct regmap *regmap = syscon_get_regmap(dev_get_parent(dev)); struct mux_control *mux_ctl;
int ret;
return regmap_update_bits(regmap, FSS_SYSC_REG, 0x2, 0x2); ret = mux_get_by_index(dev, 0, &mux_ctl);
if (!ret)
ret = mux_control_select(mux_ctl, 1);
return ret;
} }
static int am654_hbmc_bind(struct udevice *dev) static int am654_hbmc_bind(struct udevice *dev)

View file

@ -15,11 +15,14 @@
#define CFG_SYS_FLASH_BASE 0x000000000 #define CFG_SYS_FLASH_BASE 0x000000000
/* SPL Loader Configuration */ /* SPL Loader Configuration */
#if defined(CONFIG_TARGET_J721E_A72_EVM) || defined(CONFIG_TARGET_J7200_A72_EVM) #if defined(CONFIG_TARGET_J721E_A72_EVM)
#define CFG_SYS_UBOOT_BASE 0x50280000 #define CFG_SYS_UBOOT_BASE 0x50280000
/* Image load address in RAM for DFU boot*/ #elif defined(CONFIG_TARGET_J7200_A72_EVM)
#else #define CFG_SYS_UBOOT_BASE 0x50300000
#elif defined(CONFIG_TARGET_J721E_R5_EVM)
#define CFG_SYS_UBOOT_BASE 0x50080000 #define CFG_SYS_UBOOT_BASE 0x50080000
#else
#define CFG_SYS_UBOOT_BASE 0x50100000
#endif #endif
/** /**