[PATCH] drivers: ddr: altera: Check IOSSM mailbox compatibility
Chee, Tien Fong
tien.fong.chee at altera.com
Tue Aug 19 05:49:49 CEST 2025
> -----Original Message-----
> From: Ravulapalli, Naresh Kumar <naresh.kumar.ravulapalli at altera.com>
> Sent: Friday, August 8, 2025 5:37 PM
> To: u-boot at lists.denx.de
> Cc: Marek Vasut <marex at denx.de>; Simon Goldschmidt
> <simon.k.r.goldschmidt at gmail.com>; Chee, Tien Fong
> <tien.fong.chee at altera.com>; Tom Rini <trini at konsulko.com>; Ravulapalli,
> Naresh Kumar <naresh.kumar.ravulapalli at altera.com>
> Subject: [PATCH] drivers: ddr: altera: Check IOSSM mailbox compatibility
>
> Compatibility check of IOSSM mailbox with U-Boot is performed by verifying
> the mailbox specification version. If check fails, appropriate error message is
> displayed.
>
> Signed-off-by: Naresh Kumar Ravulapalli
> <nareshkumar.ravulapalli at altera.com>
> ---
> drivers/ddr/altera/iossm_mailbox.c | 24 ++++++++++++++++++++++++
> 1 file changed, 24 insertions(+)
>
> diff --git a/drivers/ddr/altera/iossm_mailbox.c
> b/drivers/ddr/altera/iossm_mailbox.c
> index 21f94959a04..2a2f86a650e 100644
> --- a/drivers/ddr/altera/iossm_mailbox.c
> +++ b/drivers/ddr/altera/iossm_mailbox.c
> @@ -38,6 +38,8 @@
> #define IOSSM_STATUS_CMD_RESPONSE_ERROR(n)
> FIELD_GET(IOSSM_STATUS_CMD_RESPONSE_ERROR_MASK, n)
> #define IOSSM_STATUS_GENERAL_ERROR_MASK GENMASK(4,
> 1)
> #define IOSSM_STATUS_GENERAL_ERROR(n)
> FIELD_GET(IOSSM_STATUS_GENERAL_ERROR_MASK, n)
> +#define IOSSM_MAILBOX_SPEC_VERSION_MASK GENMASK(2,
> 0)
> +#define IOSSM_MAILBOX_SPEC_VERSION(n)
> FIELD_GET(IOSSM_MAILBOX_SPEC_VERSION_MASK, n)
>
> /* Offset of Mailbox Read-only Registers */
> #define IOSSM_MAILBOX_HEADER_OFFSET 0x0
> @@ -383,6 +385,23 @@ err:
> return ret;
> }
>
> +static bool is_mailbox_spec_compatible(struct io96b_info *io96b_ctrl) {
> + u32 mailbox_header;
> + u8 mailbox_spec_ver;
> +
> + mailbox_header = readl(io96b_ctrl->io96b[0].io96b_csr_addr +
> + IOSSM_MAILBOX_HEADER_OFFSET);
> + mailbox_spec_ver =
> IOSSM_MAILBOX_SPEC_VERSION(mailbox_header);
> + printf("%s: IOSSM mailbox version: %d\n", __func__,
> mailbox_spec_ver);
> +
> + /* for now there are two mailbox spec versions, 0 and 1; only version
> 1 is compatible */
> + if (!mailbox_spec_ver)
> + return false;
> +
> + return true;
> +}
> +
> /*
> * Initial function to be called to set memory interface IP type and instance ID
> * IP type and instance ID need to be determined before sending mailbox
> command @@ -392,6 +411,11 @@ void io96b_mb_init(struct io96b_info
> *io96b_ctrl)
> int i, j;
> u32 mem_intf_info_0, mem_intf_info_1;
>
> + if (!is_mailbox_spec_compatible(io96b_ctrl)) {
> + printf("DDR: Failed to get compatible mailbox version\n");
> + hang();
> + }
> +
> debug("%s: num_instance %d\n", __func__, io96b_ctrl-
> >num_instance);
>
> for (i = 0; i < io96b_ctrl->num_instance; i++) {
> --
> 2.35.3
Reviewed-by: Tien Fong Chee <tien.fong.chee at altera.com>
Best regards,
Tien Fong
More information about the U-Boot
mailing list