mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-14 15:23:07 +00:00
0079893920
Get the chip's market segment and speed grading from fuse and print them in boot log as other i.MX series. Signed-off-by: Peng Fan <peng.fan@nxp.com>
239 lines
4.7 KiB
C
239 lines
4.7 KiB
C
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
/*
|
|
* Copyright 2022 NXP
|
|
*/
|
|
|
|
#ifndef __ASM_ARCH_IMX9_REGS_H__
|
|
#define __ASM_ARCH_IMX9_REGS_H__
|
|
|
|
#define ARCH_MXC
|
|
#define FEC_QUIRK_ENET_MAC
|
|
|
|
#define IOMUXC_BASE_ADDR 0x443C0000UL
|
|
#define CCM_BASE_ADDR 0x44450000UL
|
|
#define CCM_CCGR_BASE_ADDR 0x44458000UL
|
|
#define SYSCNT_CTRL_BASE_ADDR 0x44290000
|
|
|
|
#define ANATOP_BASE_ADDR 0x44480000UL
|
|
|
|
#define WDG3_BASE_ADDR 0x42490000UL
|
|
#define WDG4_BASE_ADDR 0x424a0000UL
|
|
#define WDG5_BASE_ADDR 0x424b0000UL
|
|
|
|
#define FSB_BASE_ADDR 0x47510000UL
|
|
|
|
#define ANATOP_BASE_ADDR 0x44480000UL
|
|
|
|
#define BLK_CTRL_WAKEUPMIX_BASE_ADDR 0x42420000
|
|
#define BLK_CTRL_S_ANOMIX_BASE_ADDR 0x444f0000
|
|
|
|
#define SRC_IPS_BASE_ADDR (0x44460000)
|
|
#define SRC_GLOBAL_RBASE (SRC_IPS_BASE_ADDR + 0x0000)
|
|
|
|
#define SRC_DDR_RBASE (SRC_IPS_BASE_ADDR + 0x1000)
|
|
#define SRC_ML_RBASE (SRC_IPS_BASE_ADDR + 0x1800)
|
|
#define SRC_MEDIA_RBASE (SRC_IPS_BASE_ADDR + 0x2400)
|
|
#define SRC_M33P_RBASE (SRC_IPS_BASE_ADDR + 0x2800)
|
|
|
|
#define SRC_MIX_SLICE_FUNC_STAT_PSW_STAT BIT(0)
|
|
#define SRC_MIX_SLICE_FUNC_STAT_RST_STAT BIT(2)
|
|
#define SRC_MIX_SLICE_FUNC_STAT_ISO_STAT BIT(4)
|
|
#define SRC_MIX_SLICE_FUNC_STAT_MEM_STAT BIT(12)
|
|
|
|
#define IMG_CONTAINER_BASE (0x80000000UL)
|
|
|
|
#define BCTRL_GPR_ENET_QOS_INTF_MODE_MASK GENMASK(3, 1)
|
|
#define BCTRL_GPR_ENET_QOS_INTF_SEL_MII (0x0 << 1)
|
|
#define BCTRL_GPR_ENET_QOS_INTF_SEL_RMII (0x4 << 1)
|
|
#define BCTRL_GPR_ENET_QOS_INTF_SEL_RGMII (0x1 << 1)
|
|
#define BCTRL_GPR_ENET_QOS_CLK_GEN_EN (0x1 << 0)
|
|
|
|
#define MARKETING_GRADING_MASK GENMASK(5, 4)
|
|
#define SPEED_GRADING_MASK GENMASK(11, 6)
|
|
|
|
#if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__))
|
|
#include <asm/types.h>
|
|
#include <stdbool.h>
|
|
|
|
struct mu_type {
|
|
u32 ver;
|
|
u32 par;
|
|
u32 cr;
|
|
u32 sr;
|
|
u32 reserved0[60];
|
|
u32 fcr;
|
|
u32 fsr;
|
|
u32 reserved1[2];
|
|
u32 gier;
|
|
u32 gcr;
|
|
u32 gsr;
|
|
u32 reserved2;
|
|
u32 tcr;
|
|
u32 tsr;
|
|
u32 rcr;
|
|
u32 rsr;
|
|
u32 reserved3[52];
|
|
u32 tr[16];
|
|
u32 reserved4[16];
|
|
u32 rr[16];
|
|
u32 reserved5[14];
|
|
u32 mu_attr;
|
|
};
|
|
|
|
enum mix_power_domain {
|
|
MIX_PD_MEDIAMIX,
|
|
MIX_PD_MLMIX,
|
|
MIX_PD_DDRMIX,
|
|
};
|
|
|
|
enum src_mix_slice_id {
|
|
SRC_MIX_EDGELOCK = 0,
|
|
SRC_MIX_AONMIX = 1,
|
|
SRC_MIX_WAKEUPMIX = 2,
|
|
SRC_MIX_DDRMIX = 3,
|
|
SRC_MIX_DDRPHY = 4,
|
|
SRC_MIX_ML = 5,
|
|
SRC_MIX_NIC = 6,
|
|
SRC_MIX_HSIO = 7,
|
|
SRC_MIX_MEDIA = 8,
|
|
SRC_MIX_CM33 = 9,
|
|
SRC_MIX_CA55C0 = 10,
|
|
SRC_MIX_CA55C1 = 11,
|
|
SRC_MIX_CA55CLUSTER = 12,
|
|
};
|
|
|
|
enum src_mem_slice_id {
|
|
SRC_MEM_AONMIX = 0,
|
|
SRC_MEM_WAKEUPMIX = 1,
|
|
SRC_MEM_DDRMIX = 2,
|
|
SRC_MEM_DDRPHY = 3,
|
|
SRC_MEM_ML = 4,
|
|
SRC_MEM_NIC = 5,
|
|
SRC_MEM_OCRAM = 6,
|
|
SRC_MEM_HSIO = 7,
|
|
SRC_MEM_MEDIA = 8,
|
|
SRC_MEM_CA55C0 = 9,
|
|
SRC_MEM_CA55C1 = 10,
|
|
SRC_MEM_CA55CLUSTER = 11,
|
|
SRC_MEM_L3 = 12,
|
|
};
|
|
|
|
struct blk_ctrl_s_aonmix_regs {
|
|
u32 cm33_irq_mask[7];
|
|
u32 initnsvtor;
|
|
u32 reserved1[8];
|
|
u32 ca55_irq_mask[7];
|
|
u32 initsvtor;
|
|
u32 m33_cfg;
|
|
u32 reserved2[11];
|
|
u32 axbs_aon_ctrl;
|
|
u32 reserved3[27];
|
|
u32 dap_access_stkybit;
|
|
u32 reserved4[3];
|
|
u32 lp_handshake[2];
|
|
u32 ca55_cpuwait;
|
|
u32 ca55_rvbaraddr0_l;
|
|
u32 ca55_rvbaraddr0_h;
|
|
u32 ca55_rvbaraddr1_l;
|
|
u32 ca55_rvbaraddr1_h;
|
|
u32 s401_irq_mask;
|
|
u32 s401_reset_req_mask;
|
|
u32 s401_halt_st;
|
|
u32 ca55_mode;
|
|
u32 nmi_mask;
|
|
u32 nmi_clr;
|
|
u32 wdog_any_mask;
|
|
u32 s4v1_ipi_noclk_ref1;
|
|
};
|
|
|
|
struct blk_ctrl_wakeupmix_regs {
|
|
u32 upper_addr;
|
|
u32 ipg_debug_cm33;
|
|
u32 reserved[2];
|
|
u32 qch_dis;
|
|
u32 ssi;
|
|
u32 reserved1[1];
|
|
u32 dexsc_err;
|
|
u32 mqs_setting;
|
|
u32 sai_clk_sel;
|
|
u32 eqos_gpr;
|
|
u32 enet_clk_sel;
|
|
u32 reserved2[1];
|
|
u32 volt_detect;
|
|
u32 i3c2_wakeup;
|
|
u32 ipg_debug_ca55c0;
|
|
u32 ipg_debug_ca55c1;
|
|
u32 axi_attr_cfg;
|
|
u32 i3c2_sda_irq;
|
|
};
|
|
|
|
struct src_general_regs {
|
|
u32 reserved[1];
|
|
u32 authen_ctrl;
|
|
u32 reserved1[2];
|
|
u32 scr;
|
|
u32 srtmr;
|
|
u32 srmask;
|
|
u32 reserved2[1];
|
|
u32 srmr[6];
|
|
u32 reserved3[2];
|
|
u32 sbmr[2];
|
|
u32 reserved4[2];
|
|
u32 srsr;
|
|
u32 gpr[19];
|
|
u32 reserved5[24];
|
|
u32 gpr20;
|
|
u32 cm_quiesce;
|
|
u32 cold_reset_ssar_ack_ctrl;
|
|
u32 sp_iso_ctrl;
|
|
u32 rom_lp_ctrl;
|
|
u32 a55_deny_stat;
|
|
};
|
|
|
|
struct src_mem_slice_regs {
|
|
u32 reserved[1];
|
|
u32 mem_ctrl;
|
|
u32 memlp_ctrl_0;
|
|
u32 reserved1[1];
|
|
u32 memlp_ctrl_1;
|
|
u32 memlp_ctrl_2;
|
|
u32 mem_stat;
|
|
};
|
|
|
|
struct src_mix_slice_regs {
|
|
u32 reserved[1];
|
|
u32 authen_ctrl;
|
|
u32 reserved1[2];
|
|
u32 lpm_setting[3];
|
|
u32 reserved2[1];
|
|
u32 slice_sw_ctrl;
|
|
u32 single_reset_sw_ctrl;
|
|
u32 reserved3[6];
|
|
u32 a55_hdsk_ack_ctrl;
|
|
u32 a55_hdsk_ack_stat;
|
|
u32 reserved4[2];
|
|
u32 ssar_ack_ctrl;
|
|
u32 ssar_ack_stat;
|
|
u32 reserved5[1];
|
|
u32 iso_off_dly_por;
|
|
u32 iso_on_dly;
|
|
u32 iso_off_dly;
|
|
u32 psw_off_lf_dly;
|
|
u32 reserved6[1];
|
|
u32 psw_off_hf_dly;
|
|
u32 psw_on_lf_dly;
|
|
u32 psw_on_hf_dly;
|
|
u32 reserved7[1];
|
|
u32 psw_ack_ctrl[2];
|
|
u32 psw_ack_stat;
|
|
u32 reserved8[1];
|
|
u32 mtr_ack_ctrl;
|
|
u32 mtr_ack_stat;
|
|
u32 reserved9[2];
|
|
u32 upi_stat[4];
|
|
u32 fsm_stat;
|
|
u32 func_stat;
|
|
};
|
|
#endif
|
|
|
|
#endif
|