mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-24 20:13:39 +00:00
34dec6a443
Enable flash reset functionality for Versal NET platform. In cadence_qspi.c there is weak function defined for reset, hence remove the check for config, so that it will work for Versal and Versal NET platforms. Add register defines in Versal NET hardware.h for mini U-Boot flash reset. Add read_delay initialization for Versal NET also. Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@amd.com> Link: https://lore.kernel.org/r/20230614120452.21019-1-ashok.reddy.soma@amd.com Signed-off-by: Michal Simek <michal.simek@amd.com>
94 lines
2.5 KiB
C
94 lines
2.5 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Copyright (C) 2016 - 2022, Xilinx, Inc.
|
|
* Copyright (C) 2022, Advanced Micro Devices, Inc.
|
|
*/
|
|
|
|
#ifndef __ASSEMBLY__
|
|
#include <linux/bitops.h>
|
|
#endif
|
|
|
|
struct crlapb_regs {
|
|
u32 reserved0[67];
|
|
u32 cpu_r5_ctrl;
|
|
u32 reserved;
|
|
u32 iou_switch_ctrl; /* 0x114 */
|
|
u32 reserved1[13];
|
|
u32 timestamp_ref_ctrl; /* 0x14c */
|
|
u32 reserved3[108];
|
|
u32 rst_cpu_r5;
|
|
u32 reserved2[17];
|
|
u32 rst_timestamp; /* 0x348 */
|
|
};
|
|
|
|
struct iou_scntrs_regs {
|
|
u32 counter_control_register; /* 0x0 */
|
|
u32 reserved0[7];
|
|
u32 base_frequency_id_register; /* 0x20 */
|
|
};
|
|
|
|
struct crp_regs {
|
|
u32 reserved0[128];
|
|
u32 boot_mode_usr; /* 0x200 */
|
|
};
|
|
|
|
#define VERSAL_NET_CRL_APB_BASEADDR 0xEB5E0000
|
|
#define VERSAL_NET_CRP_BASEADDR 0xF1260000
|
|
#define VERSAL_NET_IOU_SCNTR_SECURE 0xEC920000
|
|
|
|
#define CRL_APB_TIMESTAMP_REF_CTRL_CLKACT_BIT BIT(25)
|
|
#define IOU_SWITCH_CTRL_CLKACT_BIT BIT(25)
|
|
#define IOU_SWITCH_CTRL_DIVISOR0_SHIFT 8
|
|
#define IOU_SCNTRS_CONTROL_EN 1
|
|
|
|
#define crlapb_base ((struct crlapb_regs *)VERSAL_NET_CRL_APB_BASEADDR)
|
|
#define crp_base ((struct crp_regs *)VERSAL_NET_CRP_BASEADDR)
|
|
#define iou_scntr_secure ((struct iou_scntrs_regs *)VERSAL_NET_IOU_SCNTR_SECURE)
|
|
|
|
#define PMC_TAP 0xF11A0000
|
|
|
|
#define PMC_TAP_IDCODE (PMC_TAP + 0)
|
|
#define PMC_TAP_VERSION (PMC_TAP + 0x4)
|
|
# define PMC_VERSION_MASK GENMASK(7, 0)
|
|
# define PS_VERSION_MASK GENMASK(15, 8)
|
|
# define PS_VERSION_PRODUCTION 0x20
|
|
# define RTL_VERSION_MASK GENMASK(23, 16)
|
|
# define PLATFORM_MASK GENMASK(27, 24)
|
|
# define PLATFORM_VERSION_MASK GENMASK(31, 28)
|
|
#define PMC_TAP_USERCODE (PMC_TAP + 0x8)
|
|
|
|
/* Bootmode setting values */
|
|
#define BOOT_MODES_MASK 0x0000000F
|
|
#define QSPI_MODE_24BIT 0x00000001
|
|
#define QSPI_MODE_32BIT 0x00000002
|
|
#define SD_MODE 0x00000003 /* sd 0 */
|
|
#define SD_MODE1 0x00000005 /* sd 1 */
|
|
#define EMMC_MODE 0x00000006
|
|
#define USB_MODE 0x00000007
|
|
#define OSPI_MODE 0x00000008
|
|
#define SD1_LSHFT_MODE 0x0000000E /* SD1 Level shifter */
|
|
#define JTAG_MODE 0x00000000
|
|
#define BOOT_MODE_USE_ALT 0x100
|
|
#define BOOT_MODE_ALT_SHIFT 12
|
|
|
|
enum versal_net_platform {
|
|
VERSAL_NET_SILICON = 0,
|
|
VERSAL_NET_SPP = 1,
|
|
VERSAL_NET_EMU = 2,
|
|
VERSAL_NET_QEMU = 3,
|
|
};
|
|
|
|
#define VERSAL_SLCR_BASEADDR 0xF1060000
|
|
#define VERSAL_AXI_MUX_SEL (VERSAL_SLCR_BASEADDR + 0x504)
|
|
#define VERSAL_OSPI_LINEAR_MODE BIT(1)
|
|
|
|
#define FLASH_RESET_GPIO 0xc
|
|
#define WPROT_CRP 0xF126001C
|
|
#define RST_GPIO 0xF1260318
|
|
#define WPROT_LPD_MIO 0xFF080728
|
|
#define WPROT_PMC_MIO 0xF1060828
|
|
#define BOOT_MODE_DIR 0xF1020204
|
|
#define BOOT_MODE_OUT 0xF1020208
|
|
#define MIO_PIN_12 0xF1060030
|
|
#define BANK0_OUTPUT 0xF1020040
|
|
#define BANK0_TRI 0xF1060200
|