mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-24 22:36:05 +00:00
Merge branch '2023-10-28-assorted-platform-updates'
- Fix some mpc85xx platforms, fixes for a few TI K3 platforms, enable usb device and fastboot on verdin-imx8mp, make all QEMU platforms use the default console buffer sizes, vexpress platform fixes, and update synquacer flash layout
This commit is contained in:
commit
d9650a4823
19 changed files with 145 additions and 51 deletions
|
@ -1617,7 +1617,7 @@ relocate_code:
|
||||||
mr r10,r5 /* Save copy of Destination Address */
|
mr r10,r5 /* Save copy of Destination Address */
|
||||||
|
|
||||||
GET_GOT
|
GET_GOT
|
||||||
#ifndef CONFIG_SPL_SKIP_RELOCATE
|
#if !defined(CONFIG_SPL_SKIP_RELOCATE) || !defined(CONFIG_SPL_BUILD)
|
||||||
mr r3,r5 /* Destination Address */
|
mr r3,r5 /* Destination Address */
|
||||||
lis r4,CONFIG_VAL(SYS_MONITOR_BASE)@h /* Source Address */
|
lis r4,CONFIG_VAL(SYS_MONITOR_BASE)@h /* Source Address */
|
||||||
ori r4,r4,CONFIG_VAL(SYS_MONITOR_BASE)@l
|
ori r4,r4,CONFIG_VAL(SYS_MONITOR_BASE)@l
|
||||||
|
|
|
@ -155,19 +155,20 @@ static bool board_is_advanced(void)
|
||||||
strstr((char *)info->name, "IOT2050-ADVANCED") != NULL;
|
strstr((char *)info->name, "IOT2050-ADVANCED") != NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool board_is_sr1(void)
|
static bool board_is_pg1(void)
|
||||||
{
|
{
|
||||||
struct iot2050_info *info = IOT2050_INFO_DATA;
|
struct iot2050_info *info = IOT2050_INFO_DATA;
|
||||||
|
|
||||||
return info->magic == IOT2050_INFO_MAGIC &&
|
return info->magic == IOT2050_INFO_MAGIC &&
|
||||||
strstr((char *)info->name, "-PG2") == NULL;
|
(strcmp((char *)info->name, "IOT2050-BASIC") == 0 ||
|
||||||
|
strcmp((char *)info->name, "IOT2050-ADVANCED") == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool board_is_m2(void)
|
static bool board_is_m2(void)
|
||||||
{
|
{
|
||||||
struct iot2050_info *info = IOT2050_INFO_DATA;
|
struct iot2050_info *info = IOT2050_INFO_DATA;
|
||||||
|
|
||||||
return !board_is_sr1() && info->magic == IOT2050_INFO_MAGIC &&
|
return info->magic == IOT2050_INFO_MAGIC &&
|
||||||
strcmp((char *)info->name, "IOT2050-ADVANCED-M2") == 0;
|
strcmp((char *)info->name, "IOT2050-ADVANCED-M2") == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -217,14 +218,14 @@ void set_board_info_env(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (board_is_advanced()) {
|
if (board_is_advanced()) {
|
||||||
if (board_is_sr1())
|
if (board_is_pg1())
|
||||||
fdtfile = "ti/k3-am6548-iot2050-advanced.dtb";
|
fdtfile = "ti/k3-am6548-iot2050-advanced.dtb";
|
||||||
else if(board_is_m2())
|
else if(board_is_m2())
|
||||||
fdtfile = "ti/k3-am6548-iot2050-advanced-m2.dtb";
|
fdtfile = "ti/k3-am6548-iot2050-advanced-m2.dtb";
|
||||||
else
|
else
|
||||||
fdtfile = "ti/k3-am6548-iot2050-advanced-pg2.dtb";
|
fdtfile = "ti/k3-am6548-iot2050-advanced-pg2.dtb";
|
||||||
} else {
|
} else {
|
||||||
if (board_is_sr1())
|
if (board_is_pg1())
|
||||||
fdtfile = "ti/k3-am6528-iot2050-basic.dtb";
|
fdtfile = "ti/k3-am6528-iot2050-basic.dtb";
|
||||||
else
|
else
|
||||||
fdtfile = "ti/k3-am6528-iot2050-basic-pg2.dtb";
|
fdtfile = "ti/k3-am6528-iot2050-basic-pg2.dtb";
|
||||||
|
|
|
@ -20,39 +20,18 @@
|
||||||
|
|
||||||
#if IS_ENABLED(CONFIG_EFI_HAVE_CAPSULE_SUPPORT)
|
#if IS_ENABLED(CONFIG_EFI_HAVE_CAPSULE_SUPPORT)
|
||||||
struct efi_fw_image fw_images[] = {
|
struct efi_fw_image fw_images[] = {
|
||||||
#if CONFIG_IS_ENABLED(FWU_MULTI_BANK_UPDATE)
|
|
||||||
{
|
{
|
||||||
.image_type_id = DEVELOPERBOX_FIP_IMAGE_GUID,
|
.image_type_id = DEVELOPERBOX_FIP_IMAGE_GUID,
|
||||||
.fw_name = u"DEVELOPERBOX-FIP",
|
.fw_name = u"DEVELOPERBOX-FIP",
|
||||||
.image_index = 1,
|
.image_index = 1,
|
||||||
},
|
},
|
||||||
#else
|
|
||||||
{
|
|
||||||
.image_type_id = DEVELOPERBOX_UBOOT_IMAGE_GUID,
|
|
||||||
.fw_name = u"DEVELOPERBOX-UBOOT",
|
|
||||||
.image_index = 1,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.image_type_id = DEVELOPERBOX_FIP_IMAGE_GUID,
|
|
||||||
.fw_name = u"DEVELOPERBOX-FIP",
|
|
||||||
.image_index = 2,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.image_type_id = DEVELOPERBOX_OPTEE_IMAGE_GUID,
|
|
||||||
.fw_name = u"DEVELOPERBOX-OPTEE",
|
|
||||||
.image_index = 3,
|
|
||||||
},
|
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct efi_capsule_update_info update_info = {
|
struct efi_capsule_update_info update_info = {
|
||||||
.dfu_string = "mtd nor1=u-boot.bin raw 200000 100000;"
|
.dfu_string = "mtd nor1=fip.bin raw 600000 400000",
|
||||||
"fip.bin raw 180000 78000;"
|
|
||||||
"optee.bin raw 500000 100000",
|
|
||||||
.num_images = ARRAY_SIZE(fw_images),
|
.num_images = ARRAY_SIZE(fw_images),
|
||||||
.images = fw_images,
|
.images = fw_images,
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* EFI_HAVE_CAPSULE_SUPPORT */
|
#endif /* EFI_HAVE_CAPSULE_SUPPORT */
|
||||||
|
|
||||||
static struct mm_region sc2a11_mem_map[] = {
|
static struct mm_region sc2a11_mem_map[] = {
|
||||||
|
|
|
@ -21,7 +21,6 @@ CONFIG_BOOTCOMMAND="test -n \"$qemu_kernel_addr\" && bootm $qemu_kernel_addr - $
|
||||||
# CONFIG_DISPLAY_BOARDINFO is not set
|
# CONFIG_DISPLAY_BOARDINFO is not set
|
||||||
CONFIG_LAST_STAGE_INIT=y
|
CONFIG_LAST_STAGE_INIT=y
|
||||||
CONFIG_HUSH_PARSER=y
|
CONFIG_HUSH_PARSER=y
|
||||||
CONFIG_SYS_PBSIZE=276
|
|
||||||
CONFIG_CMD_REGINFO=y
|
CONFIG_CMD_REGINFO=y
|
||||||
CONFIG_CMD_BOOTZ=y
|
CONFIG_CMD_BOOTZ=y
|
||||||
CONFIG_CMD_GREPENV=y
|
CONFIG_CMD_GREPENV=y
|
||||||
|
|
|
@ -12,8 +12,6 @@ CONFIG_FIT=y
|
||||||
CONFIG_DISTRO_DEFAULTS=y
|
CONFIG_DISTRO_DEFAULTS=y
|
||||||
CONFIG_DISPLAY_CPUINFO=y
|
CONFIG_DISPLAY_CPUINFO=y
|
||||||
CONFIG_DISPLAY_BOARDINFO=y
|
CONFIG_DISPLAY_BOARDINFO=y
|
||||||
CONFIG_SYS_CBSIZE=256
|
|
||||||
CONFIG_SYS_PBSIZE=276
|
|
||||||
CONFIG_SYS_BOOTM_LEN=0x4000000
|
CONFIG_SYS_BOOTM_LEN=0x4000000
|
||||||
CONFIG_CMD_BOOTEFI_SELFTEST=y
|
CONFIG_CMD_BOOTEFI_SELFTEST=y
|
||||||
CONFIG_CMD_NVEDIT_EFI=y
|
CONFIG_CMD_NVEDIT_EFI=y
|
||||||
|
|
|
@ -13,8 +13,6 @@ CONFIG_FIT=y
|
||||||
CONFIG_DISTRO_DEFAULTS=y
|
CONFIG_DISTRO_DEFAULTS=y
|
||||||
CONFIG_DISPLAY_CPUINFO=y
|
CONFIG_DISPLAY_CPUINFO=y
|
||||||
CONFIG_DISPLAY_BOARDINFO=y
|
CONFIG_DISPLAY_BOARDINFO=y
|
||||||
CONFIG_SYS_CBSIZE=256
|
|
||||||
CONFIG_SYS_PBSIZE=276
|
|
||||||
CONFIG_SYS_BOOTM_LEN=0x4000000
|
CONFIG_SYS_BOOTM_LEN=0x4000000
|
||||||
CONFIG_CMD_BOOTEFI_SELFTEST=y
|
CONFIG_CMD_BOOTEFI_SELFTEST=y
|
||||||
CONFIG_CMD_NVEDIT_EFI=y
|
CONFIG_CMD_NVEDIT_EFI=y
|
||||||
|
|
|
@ -19,8 +19,6 @@ CONFIG_DISPLAY_BOARDINFO=y
|
||||||
CONFIG_SPL_MAX_SIZE=0x100000
|
CONFIG_SPL_MAX_SIZE=0x100000
|
||||||
CONFIG_SPL_BSS_START_ADDR=0x84000000
|
CONFIG_SPL_BSS_START_ADDR=0x84000000
|
||||||
CONFIG_SPL_SYS_MALLOC=y
|
CONFIG_SPL_SYS_MALLOC=y
|
||||||
CONFIG_SYS_CBSIZE=256
|
|
||||||
CONFIG_SYS_PBSIZE=276
|
|
||||||
CONFIG_SYS_BOOTM_LEN=0x4000000
|
CONFIG_SYS_BOOTM_LEN=0x4000000
|
||||||
# CONFIG_CMD_MII is not set
|
# CONFIG_CMD_MII is not set
|
||||||
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
|
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
|
||||||
|
|
|
@ -12,8 +12,6 @@ CONFIG_FIT=y
|
||||||
CONFIG_DISTRO_DEFAULTS=y
|
CONFIG_DISTRO_DEFAULTS=y
|
||||||
CONFIG_DISPLAY_CPUINFO=y
|
CONFIG_DISPLAY_CPUINFO=y
|
||||||
CONFIG_DISPLAY_BOARDINFO=y
|
CONFIG_DISPLAY_BOARDINFO=y
|
||||||
CONFIG_SYS_CBSIZE=256
|
|
||||||
CONFIG_SYS_PBSIZE=276
|
|
||||||
CONFIG_SYS_BOOTM_LEN=0x4000000
|
CONFIG_SYS_BOOTM_LEN=0x4000000
|
||||||
CONFIG_CMD_BOOTEFI_SELFTEST=y
|
CONFIG_CMD_BOOTEFI_SELFTEST=y
|
||||||
CONFIG_CMD_NVEDIT_EFI=y
|
CONFIG_CMD_NVEDIT_EFI=y
|
||||||
|
|
|
@ -15,8 +15,6 @@ CONFIG_USE_PREBOOT=y
|
||||||
CONFIG_PREBOOT="setenv fdt_addr ${fdtcontroladdr}; fdt addr ${fdtcontroladdr};"
|
CONFIG_PREBOOT="setenv fdt_addr ${fdtcontroladdr}; fdt addr ${fdtcontroladdr};"
|
||||||
CONFIG_DISPLAY_CPUINFO=y
|
CONFIG_DISPLAY_CPUINFO=y
|
||||||
CONFIG_DISPLAY_BOARDINFO=y
|
CONFIG_DISPLAY_BOARDINFO=y
|
||||||
CONFIG_SYS_CBSIZE=256
|
|
||||||
CONFIG_SYS_PBSIZE=276
|
|
||||||
CONFIG_SYS_BOOTM_LEN=0x4000000
|
CONFIG_SYS_BOOTM_LEN=0x4000000
|
||||||
CONFIG_CMD_BOOTEFI_SELFTEST=y
|
CONFIG_CMD_BOOTEFI_SELFTEST=y
|
||||||
CONFIG_CMD_NVEDIT_EFI=y
|
CONFIG_CMD_NVEDIT_EFI=y
|
||||||
|
|
|
@ -18,8 +18,6 @@ CONFIG_DISPLAY_BOARDINFO=y
|
||||||
CONFIG_SPL_MAX_SIZE=0x100000
|
CONFIG_SPL_MAX_SIZE=0x100000
|
||||||
CONFIG_SPL_BSS_START_ADDR=0x84000000
|
CONFIG_SPL_BSS_START_ADDR=0x84000000
|
||||||
CONFIG_SPL_SYS_MALLOC=y
|
CONFIG_SPL_SYS_MALLOC=y
|
||||||
CONFIG_SYS_CBSIZE=256
|
|
||||||
CONFIG_SYS_PBSIZE=276
|
|
||||||
CONFIG_SYS_BOOTM_LEN=0x4000000
|
CONFIG_SYS_BOOTM_LEN=0x4000000
|
||||||
# CONFIG_CMD_MII is not set
|
# CONFIG_CMD_MII is not set
|
||||||
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
|
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
|
||||||
|
|
|
@ -46,7 +46,6 @@ CONFIG_SPL_NET=y
|
||||||
CONFIG_SPL_PCI=y
|
CONFIG_SPL_PCI=y
|
||||||
CONFIG_SPL_PCH=y
|
CONFIG_SPL_PCH=y
|
||||||
CONFIG_SPL_RTC=y
|
CONFIG_SPL_RTC=y
|
||||||
CONFIG_SYS_PBSIZE=532
|
|
||||||
CONFIG_CMD_CPU=y
|
CONFIG_CMD_CPU=y
|
||||||
CONFIG_CMD_BOOTEFI_SELFTEST=y
|
CONFIG_CMD_BOOTEFI_SELFTEST=y
|
||||||
CONFIG_CMD_NVEDIT_EFI=y
|
CONFIG_CMD_NVEDIT_EFI=y
|
||||||
|
|
|
@ -24,7 +24,6 @@ CONFIG_LOG=y
|
||||||
CONFIG_LOGF_FUNC=y
|
CONFIG_LOGF_FUNC=y
|
||||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||||
CONFIG_PCI_INIT_R=y
|
CONFIG_PCI_INIT_R=y
|
||||||
CONFIG_SYS_PBSIZE=532
|
|
||||||
CONFIG_CMD_CPU=y
|
CONFIG_CMD_CPU=y
|
||||||
CONFIG_CMD_BOOTEFI_SELFTEST=y
|
CONFIG_CMD_BOOTEFI_SELFTEST=y
|
||||||
CONFIG_CMD_NVEDIT_EFI=y
|
CONFIG_CMD_NVEDIT_EFI=y
|
||||||
|
|
|
@ -27,8 +27,6 @@ CONFIG_USE_PREBOOT=y
|
||||||
# CONFIG_DISPLAY_CPUINFO is not set
|
# CONFIG_DISPLAY_CPUINFO is not set
|
||||||
# CONFIG_DISPLAY_BOARDINFO is not set
|
# CONFIG_DISPLAY_BOARDINFO is not set
|
||||||
CONFIG_PCI_INIT_R=y
|
CONFIG_PCI_INIT_R=y
|
||||||
CONFIG_SYS_CBSIZE=512
|
|
||||||
CONFIG_SYS_PBSIZE=532
|
|
||||||
CONFIG_CMD_BOOTZ=y
|
CONFIG_CMD_BOOTZ=y
|
||||||
CONFIG_CMD_BOOTEFI_SELFTEST=y
|
CONFIG_CMD_BOOTEFI_SELFTEST=y
|
||||||
CONFIG_CMD_NVEDIT_EFI=y
|
CONFIG_CMD_NVEDIT_EFI=y
|
||||||
|
|
|
@ -28,8 +28,6 @@ CONFIG_USE_PREBOOT=y
|
||||||
# CONFIG_DISPLAY_CPUINFO is not set
|
# CONFIG_DISPLAY_CPUINFO is not set
|
||||||
# CONFIG_DISPLAY_BOARDINFO is not set
|
# CONFIG_DISPLAY_BOARDINFO is not set
|
||||||
CONFIG_PCI_INIT_R=y
|
CONFIG_PCI_INIT_R=y
|
||||||
CONFIG_SYS_CBSIZE=512
|
|
||||||
CONFIG_SYS_PBSIZE=532
|
|
||||||
CONFIG_SYS_BOOTM_LEN=0x4000000
|
CONFIG_SYS_BOOTM_LEN=0x4000000
|
||||||
CONFIG_CMD_BOOTEFI_SELFTEST=y
|
CONFIG_CMD_BOOTEFI_SELFTEST=y
|
||||||
CONFIG_CMD_NVEDIT_EFI=y
|
CONFIG_CMD_NVEDIT_EFI=y
|
||||||
|
|
|
@ -79,6 +79,7 @@ CONFIG_CMD_I2C=y
|
||||||
CONFIG_CMD_MMC=y
|
CONFIG_CMD_MMC=y
|
||||||
CONFIG_CMD_READ=y
|
CONFIG_CMD_READ=y
|
||||||
CONFIG_CMD_USB=y
|
CONFIG_CMD_USB=y
|
||||||
|
CONFIG_CMD_USB_MASS_STORAGE=y
|
||||||
CONFIG_CMD_BOOTCOUNT=y
|
CONFIG_CMD_BOOTCOUNT=y
|
||||||
CONFIG_CMD_CACHE=y
|
CONFIG_CMD_CACHE=y
|
||||||
CONFIG_CMD_TIME=y
|
CONFIG_CMD_TIME=y
|
||||||
|
@ -108,6 +109,12 @@ CONFIG_BOOTCOUNT_ENV=y
|
||||||
CONFIG_CLK_COMPOSITE_CCF=y
|
CONFIG_CLK_COMPOSITE_CCF=y
|
||||||
CONFIG_CLK_IMX8MP=y
|
CONFIG_CLK_IMX8MP=y
|
||||||
CONFIG_FSL_CAAM=y
|
CONFIG_FSL_CAAM=y
|
||||||
|
CONFIG_USB_FUNCTION_FASTBOOT=y
|
||||||
|
CONFIG_FASTBOOT_BUF_ADDR=0x42800000
|
||||||
|
CONFIG_FASTBOOT_BUF_SIZE=0x40000000
|
||||||
|
CONFIG_FASTBOOT_FLASH=y
|
||||||
|
CONFIG_FASTBOOT_UUU_SUPPORT=y
|
||||||
|
CONFIG_FASTBOOT_FLASH_MMC_DEV=0
|
||||||
CONFIG_GPIO_HOG=y
|
CONFIG_GPIO_HOG=y
|
||||||
CONFIG_SPL_GPIO_HOG=y
|
CONFIG_SPL_GPIO_HOG=y
|
||||||
CONFIG_MXC_GPIO=y
|
CONFIG_MXC_GPIO=y
|
||||||
|
@ -138,6 +145,7 @@ CONFIG_DWC_ETH_QOS_IMX=y
|
||||||
CONFIG_FEC_MXC=y
|
CONFIG_FEC_MXC=y
|
||||||
CONFIG_RGMII=y
|
CONFIG_RGMII=y
|
||||||
CONFIG_MII=y
|
CONFIG_MII=y
|
||||||
|
CONFIG_PHY=y
|
||||||
CONFIG_PHY_IMX8MQ_USB=y
|
CONFIG_PHY_IMX8MQ_USB=y
|
||||||
CONFIG_PINCTRL=y
|
CONFIG_PINCTRL=y
|
||||||
CONFIG_SPL_PINCTRL=y
|
CONFIG_SPL_PINCTRL=y
|
||||||
|
@ -160,14 +168,20 @@ CONFIG_SYSRESET_WATCHDOG=y
|
||||||
CONFIG_DM_THERMAL=y
|
CONFIG_DM_THERMAL=y
|
||||||
CONFIG_IMX_TMU=y
|
CONFIG_IMX_TMU=y
|
||||||
CONFIG_USB=y
|
CONFIG_USB=y
|
||||||
|
# CONFIG_SPL_DM_USB is not set
|
||||||
|
CONFIG_DM_USB_GADGET=y
|
||||||
CONFIG_USB_XHCI_HCD=y
|
CONFIG_USB_XHCI_HCD=y
|
||||||
CONFIG_USB_XHCI_DWC3=y
|
CONFIG_USB_XHCI_DWC3=y
|
||||||
CONFIG_USB_XHCI_DWC3_OF_SIMPLE=y
|
CONFIG_USB_XHCI_DWC3_OF_SIMPLE=y
|
||||||
CONFIG_USB_EHCI_HCD=y
|
CONFIG_USB_EHCI_HCD=y
|
||||||
CONFIG_MXC_USB_OTG_HACTIVE=y
|
# CONFIG_USB_EHCI_MX7 is not set
|
||||||
CONFIG_USB_DWC3=y
|
CONFIG_USB_DWC3=y
|
||||||
CONFIG_USB_DWC3_GENERIC=y
|
CONFIG_USB_DWC3_GENERIC=y
|
||||||
CONFIG_USB_KEYBOARD=y
|
CONFIG_USB_KEYBOARD=y
|
||||||
CONFIG_USB_HOST_ETHER=y
|
CONFIG_USB_HOST_ETHER=y
|
||||||
|
CONFIG_USB_GADGET=y
|
||||||
|
CONFIG_USB_GADGET_MANUFACTURER="Toradex"
|
||||||
|
CONFIG_USB_GADGET_VENDOR_NUM=0x1b67
|
||||||
|
CONFIG_USB_GADGET_PRODUCT_NUM=0x4000
|
||||||
CONFIG_IMX_WATCHDOG=y
|
CONFIG_IMX_WATCHDOG=y
|
||||||
CONFIG_HEXDUMP=y
|
CONFIG_HEXDUMP=y
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
#include <k3-avs.h>
|
#include <k3-avs.h>
|
||||||
#include <dm/device_compat.h>
|
#include <dm/device_compat.h>
|
||||||
#include <linux/bitops.h>
|
#include <linux/bitops.h>
|
||||||
|
#include <linux/delay.h>
|
||||||
#include <power/regulator.h>
|
#include <power/regulator.h>
|
||||||
|
|
||||||
#define AM6_VTM_DEVINFO(i) (priv->base + 0x100 + 0x20 * (i))
|
#define AM6_VTM_DEVINFO(i) (priv->base + 0x100 + 0x20 * (i))
|
||||||
|
@ -25,11 +26,28 @@
|
||||||
#define AM6_VTM_OPP_SHIFT(opp) (8 * (opp))
|
#define AM6_VTM_OPP_SHIFT(opp) (8 * (opp))
|
||||||
#define AM6_VTM_OPP_MASK 0xff
|
#define AM6_VTM_OPP_MASK 0xff
|
||||||
|
|
||||||
|
#define K3_VTM_DEVINFO_PWR0_OFFSET 0x4
|
||||||
|
#define K3_VTM_DEVINFO_PWR0_TEMPSENS_CT_MASK 0xf0
|
||||||
|
#define K3_VTM_TMPSENS0_CTRL_OFFSET 0x300
|
||||||
|
#define K3_VTM_TMPSENS_STAT_OFFSET 0x8
|
||||||
|
#define K3_VTM_ANYMAXT_OUTRG_ALERT_EN 0x1
|
||||||
|
#define K3_VTM_LOW_TEMP_OFFSET 0x10
|
||||||
|
#define K3_VTM_MISC_CTRL2_OFFSET 0x10
|
||||||
|
#define K3_VTM_MISC_CTRL1_OFFSET 0xc
|
||||||
|
#define K3_VTM_TMPSENS_CTRL1_SOC BIT(5)
|
||||||
|
#define K3_VTM_TMPSENS_CTRL_CLRZ BIT(6)
|
||||||
|
#define K3_VTM_TMPSENS_CTRL_MAXT_OUTRG_EN BIT(11)
|
||||||
|
#define K3_VTM_ADC_COUNT_FOR_123C 0x2f8
|
||||||
|
#define K3_VTM_ADC_COUNT_FOR_105C 0x288
|
||||||
|
#define K3_VTM_ADC_WA_VALUE 0x2c
|
||||||
|
#define K3_VTM_FUSE_MASK 0xc0000000
|
||||||
|
|
||||||
#define VD_FLAG_INIT_DONE BIT(0)
|
#define VD_FLAG_INIT_DONE BIT(0)
|
||||||
|
|
||||||
struct k3_avs_privdata {
|
struct k3_avs_privdata {
|
||||||
void *base;
|
void *base;
|
||||||
struct vd_config *vd_config;
|
struct vd_config *vd_config;
|
||||||
|
struct udevice *dev;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct opp {
|
struct opp {
|
||||||
|
@ -237,6 +255,88 @@ static int k3_avs_configure(struct udevice *dev, struct k3_avs_privdata *priv)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* k3_avs_program_tshut : Program thermal shutdown value for SOC
|
||||||
|
* set the values corresponding to thresholds to ~123C and 105C
|
||||||
|
* This is optional feature, Few times OS driver takes care of
|
||||||
|
* tshut programing.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static void k3_avs_program_tshut(struct k3_avs_privdata *priv)
|
||||||
|
{
|
||||||
|
int cnt, id, val;
|
||||||
|
int workaround_needed = 0;
|
||||||
|
u32 ctrl_offset;
|
||||||
|
void __iomem *cfg2_base;
|
||||||
|
void __iomem *fuse_base;
|
||||||
|
|
||||||
|
cfg2_base = (void __iomem *)devfdt_get_addr_index(priv->dev, 1);
|
||||||
|
if (IS_ERR(cfg2_base)) {
|
||||||
|
dev_err(priv->dev, "cfg base is not defined\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Some of TI's J721E SoCs require a software trimming procedure
|
||||||
|
* for the temperature monitors to function properly. To determine
|
||||||
|
* if this particular SoC is NOT affected, both bits in the
|
||||||
|
* WKUP_SPARE_FUSE0[31:30] will be set (0xC0000000) indicating
|
||||||
|
* when software trimming should NOT be applied.
|
||||||
|
*
|
||||||
|
* https://www.ti.com/lit/er/sprz455c/sprz455c.pdf
|
||||||
|
* This routine checks if workaround_needed to be applied or not
|
||||||
|
* based upon workaround_needed, adjust fixed value of tshut high and low
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (device_is_compatible(priv->dev, "ti,j721e-vtm")) {
|
||||||
|
fuse_base = (void __iomem *)devfdt_get_addr_index(priv->dev, 2);
|
||||||
|
if (IS_ERR(fuse_base)) {
|
||||||
|
dev_err(priv->dev, "fuse-base is not defined for J721E Soc\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!((readl(fuse_base) & K3_VTM_FUSE_MASK) == K3_VTM_FUSE_MASK))
|
||||||
|
workaround_needed = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
dev_dbg(priv->dev, "Work around %sneeded\n", workaround_needed ? "" : "not ");
|
||||||
|
|
||||||
|
/* Get the sensor count in the VTM */
|
||||||
|
val = readl(priv->base + K3_VTM_DEVINFO_PWR0_OFFSET);
|
||||||
|
cnt = val & K3_VTM_DEVINFO_PWR0_TEMPSENS_CT_MASK;
|
||||||
|
cnt >>= __ffs(K3_VTM_DEVINFO_PWR0_TEMPSENS_CT_MASK);
|
||||||
|
|
||||||
|
/* Program the thermal sensors */
|
||||||
|
for (id = 0; id < cnt; id++) {
|
||||||
|
ctrl_offset = K3_VTM_TMPSENS0_CTRL_OFFSET + id * 0x20;
|
||||||
|
|
||||||
|
val = readl(cfg2_base + ctrl_offset);
|
||||||
|
val |= (K3_VTM_TMPSENS_CTRL_MAXT_OUTRG_EN |
|
||||||
|
K3_VTM_TMPSENS_CTRL1_SOC |
|
||||||
|
K3_VTM_TMPSENS_CTRL_CLRZ | BIT(4));
|
||||||
|
writel(val, cfg2_base + ctrl_offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Program TSHUT thresholds
|
||||||
|
* Step 1: set the thresholds to ~123C and 105C WKUP_VTM_MISC_CTRL2
|
||||||
|
* Step 2: WKUP_VTM_TMPSENS_CTRL_j set the MAXT_OUTRG_EN bit
|
||||||
|
* This is already taken care as per of init
|
||||||
|
* Step 3: WKUP_VTM_MISC_CTRL set the ANYMAXT_OUTRG_ALERT_EN bit
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Low thresholds for tshut*/
|
||||||
|
val = (K3_VTM_ADC_COUNT_FOR_105C - workaround_needed * K3_VTM_ADC_WA_VALUE)
|
||||||
|
<< K3_VTM_LOW_TEMP_OFFSET;
|
||||||
|
/* high thresholds */
|
||||||
|
val |= K3_VTM_ADC_COUNT_FOR_123C - workaround_needed * K3_VTM_ADC_WA_VALUE;
|
||||||
|
|
||||||
|
writel(val, cfg2_base + K3_VTM_MISC_CTRL2_OFFSET);
|
||||||
|
/* ramp-up delay from Linux code */
|
||||||
|
mdelay(100);
|
||||||
|
val = readl(cfg2_base + K3_VTM_MISC_CTRL1_OFFSET) | K3_VTM_ANYMAXT_OUTRG_ALERT_EN;
|
||||||
|
writel(val, cfg2_base + K3_VTM_MISC_CTRL1_OFFSET);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* k3_avs_probe: parses VD info from VTM, and re-configures the OPP data
|
* k3_avs_probe: parses VD info from VTM, and re-configures the OPP data
|
||||||
*
|
*
|
||||||
|
@ -255,6 +355,7 @@ static int k3_avs_probe(struct udevice *dev)
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
priv = dev_get_priv(dev);
|
priv = dev_get_priv(dev);
|
||||||
|
priv->dev = dev;
|
||||||
|
|
||||||
k3_avs_priv = priv;
|
k3_avs_priv = priv;
|
||||||
|
|
||||||
|
@ -294,6 +395,9 @@ static int k3_avs_probe(struct udevice *dev)
|
||||||
k3_avs_program_voltage(priv, vd, vd->opp);
|
k3_avs_program_voltage(priv, vd, vd->opp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!device_is_compatible(priv->dev, "ti,am654-avs"))
|
||||||
|
k3_avs_program_tshut(priv);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -92,7 +92,7 @@ static struct misc_ops vexpress_config_ops = {
|
||||||
static int vexpress_config_probe(struct udevice *dev)
|
static int vexpress_config_probe(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct ofnode_phandle_args args;
|
struct ofnode_phandle_args args;
|
||||||
struct vexpress_config_sysreg *priv;
|
struct vexpress_config_sysreg *priv = dev_get_priv(dev);
|
||||||
const char *prop;
|
const char *prop;
|
||||||
int err, prop_size;
|
int err, prop_size;
|
||||||
|
|
||||||
|
@ -105,11 +105,9 @@ static int vexpress_config_probe(struct udevice *dev)
|
||||||
if (!prop || (strncmp(prop, "arm,vexpress-sysreg", 19) != 0))
|
if (!prop || (strncmp(prop, "arm,vexpress-sysreg", 19) != 0))
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
|
||||||
priv = calloc(1, sizeof(*priv));
|
|
||||||
if (!priv)
|
if (!priv)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
dev_get_uclass_priv(dev) = priv;
|
|
||||||
priv->addr = ofnode_get_addr(args.node);
|
priv->addr = ofnode_get_addr(args.node);
|
||||||
|
|
||||||
return dev_read_u32(dev, "arm,vexpress,site", &priv->site);
|
return dev_read_u32(dev, "arm,vexpress,site", &priv->site);
|
||||||
|
@ -127,4 +125,5 @@ U_BOOT_DRIVER(vexpress_config_drv) = {
|
||||||
.bind = dm_scan_fdt_dev,
|
.bind = dm_scan_fdt_dev,
|
||||||
.probe = vexpress_config_probe,
|
.probe = vexpress_config_probe,
|
||||||
.ops = &vexpress_config_ops,
|
.ops = &vexpress_config_ops,
|
||||||
|
.priv_auto = sizeof(struct vexpress_config_sysreg),
|
||||||
};
|
};
|
||||||
|
|
|
@ -15,6 +15,15 @@
|
||||||
|
|
||||||
#include <configs/ti_armv7_common.h>
|
#include <configs/ti_armv7_common.h>
|
||||||
|
|
||||||
|
/* allow up to 3 USB storage devices */
|
||||||
|
#ifdef CONFIG_CMD_USB
|
||||||
|
#undef BOOT_TARGET_USB
|
||||||
|
#define BOOT_TARGET_USB(func) \
|
||||||
|
func(USB, usb, 0) \
|
||||||
|
func(USB, usb, 1) \
|
||||||
|
func(USB, usb, 2)
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This defines all MMC devices, even if the basic variant has no mmc1.
|
* This defines all MMC devices, even if the basic variant has no mmc1.
|
||||||
* The non-supported device will be removed from the boot targets during
|
* The non-supported device will be removed from the boot targets during
|
||||||
|
|
|
@ -148,6 +148,12 @@
|
||||||
#define FUNC_VIRTIO(func)
|
#define FUNC_VIRTIO(func)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_CMD_MMC
|
||||||
|
#define FUNC_MMC(func) func(MMC, mmc, 0)
|
||||||
|
#else
|
||||||
|
#define FUNC_MMC(func)
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Boot by loading an Android image, or kernel, initrd and FDT through
|
* Boot by loading an Android image, or kernel, initrd and FDT through
|
||||||
* semihosting into DRAM.
|
* semihosting into DRAM.
|
||||||
|
@ -204,6 +210,7 @@
|
||||||
func(SMH, smh, na) \
|
func(SMH, smh, na) \
|
||||||
func(MEM, mem, na) \
|
func(MEM, mem, na) \
|
||||||
FUNC_VIRTIO(func) \
|
FUNC_VIRTIO(func) \
|
||||||
|
FUNC_MMC(func) \
|
||||||
func(PXE, pxe, na) \
|
func(PXE, pxe, na) \
|
||||||
func(DHCP, dhcp, na)
|
func(DHCP, dhcp, na)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue