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
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; |
|
}; |
|
};
|
|
|