Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

115 lines
3.3 KiB

/*
* Copyright (c) 2025, Ambiq Micro Inc. <www.ambiq.com>
*
* SPDX-License-Identifier: Apache-2.0
*/
enum memc_mspi_aps_z8_rlc {
MEMC_MSPI_APS_Z8_RLC_4,
MEMC_MSPI_APS_Z8_RLC_5,
MEMC_MSPI_APS_Z8_RLC_6,
MEMC_MSPI_APS_Z8_RLC_7,
MEMC_MSPI_APS_Z8_RLC_8,
MEMC_MSPI_APS_Z8_RLC_9,
};
enum memc_mspi_aps_z8_wlc {
MEMC_MSPI_APS_Z8_WLC_3, /* reserved for APS51216BA */
MEMC_MSPI_APS_Z8_WLC_7,
MEMC_MSPI_APS_Z8_WLC_5,
MEMC_MSPI_APS_Z8_WLC_9, /* reserved for APS25616N */
MEMC_MSPI_APS_Z8_WLC_4, /* reserved for APS51216BA */
MEMC_MSPI_APS_Z8_WLC_8, /* reserved for APS25616N */
MEMC_MSPI_APS_Z8_WLC_6,
MEMC_MSPI_APS_Z8_WLC_10, /* reserved for APS25616N */
};
/* default for APS51216BA */
#define MEMC_MSPI_APS_Z8_RX_DUMMY_DEFAULT 6
#define MEMC_MSPI_APS_Z8_TX_DUMMY_DEFAULT 6
#define MEMC_MSPI_APS_Z8_CMD_LENGTH_DEFAULT 1
#define MEMC_MSPI_APS_Z8_ADDR_LENGTH_DEFAULT 4
enum memc_mspi_aps_z8_ds {
MEMC_MSPI_APS_Z8_DRIVE_STRENGTH_FULL,
MEMC_MSPI_APS_Z8_DRIVE_STRENGTH_HALF,
MEMC_MSPI_APS_Z8_DRIVE_STRENGTH_QUARTER,
MEMC_MSPI_APS_Z8_DRIVE_STRENGTH_OCTUPLE,
};
struct memc_mspi_aps_z8_reg {
union {
uint8_t MR0; /* Mode register 0 */
struct {
uint8_t DS: 2; /* [0..1] drive strength */
uint8_t RLC: 3; /* [2..4] Read latency code. */
uint8_t LT: 1; /* [5..5] Latency type */
uint8_t: 1;
uint8_t TSO: 1; /* [7..7] Temperature Sensor Override */
} MR0_b;
};
union {
uint8_t MR1; /* Mode register 1 */
struct {
uint8_t VID: 5; /* [0..4] Vendor ID */
uint8_t: 2;
uint8_t ULP: 1; /* [7..7] Half sleep. */
} MR1_b;
};
union {
uint8_t MR2; /* Mode register 2 */
struct {
uint8_t DENSITY: 3; /* [0..2] Density */
uint8_t GENERATION: 2; /* [3..4] Generation */
uint8_t GB: 3; /* [5..7] Good or bad */
} MR2_b;
};
union {
uint8_t MR3; /* Mode register 3 */
struct {
uint8_t: 4;
uint8_t SRF: 2; /* [4..5] Self refresh flag */
uint8_t: 1;
uint8_t RBXen: 1; /* [7..7] Row Boundary Crossing Enable */
} MR3_b;
};
union {
uint8_t MR4; /* Mode register 4 */
struct {
uint8_t PASR: 3; /* [0..2] control refresh address space */
uint8_t RFS: 2; /* [3..4] Refresh Frequency setting */
uint8_t WLC: 3; /* [5..7] Write latency code. */
} MR4_b;
};
union {
uint8_t MR6; /* Mode register 6 */
struct {
uint8_t ULPM: 8; /* [0..7] ULP modes */
} MR6_b;
};
union {
uint8_t MR8; /* Mode register 8 */
struct {
uint8_t BL: 2; /* [0..1] Burst Length */
uint8_t BT: 1; /* [2..2] Burst type */
uint8_t RBX: 1; /* [3..3] Row Boundary Crossing Read EN */
uint8_t: 2;
uint8_t IOM: 1; /* [6..6] IO mode */
uint8_t: 1;
} MR8_b;
};
};