From: Ciprian Marian Costea <ciprianmarian.costea@oss.nxp.com>
Add support for the uSDHC controller found in NXP S32N79 automotive SoCs.
The controller is compatible with the existing sdhci-esdhc-imx driver.
Co-developed-by: Larisa Grigore <larisa.grigore@nxp.com>
Signed-off-by: Larisa Grigore <larisa.grigore@nxp.com>
Signed-off-by: Ciprian Marian Costea <ciprianmarian.costea@oss.nxp.com>
---
drivers/mmc/host/sdhci-esdhc-imx.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
index a7a5df673b0f..28288fca87ff 100644
--- a/drivers/mmc/host/sdhci-esdhc-imx.c
+++ b/drivers/mmc/host/sdhci-esdhc-imx.c
@@ -321,6 +321,14 @@ static struct esdhc_soc_data usdhc_s32g2_data = {
.quirks = SDHCI_QUIRK_NO_LED,
};
+static struct esdhc_soc_data usdhc_s32n79_data = {
+ .flags = ESDHC_FLAG_USDHC | ESDHC_FLAG_MAN_TUNING
+ | ESDHC_FLAG_HAVE_CAP1 | ESDHC_FLAG_HS200
+ | ESDHC_FLAG_HS400 | ESDHC_FLAG_HS400_ES
+ | ESDHC_FLAG_SKIP_ERR004536,
+ .quirks = SDHCI_QUIRK_NO_LED,
+};
+
static struct esdhc_soc_data usdhc_imx7ulp_data = {
.flags = ESDHC_FLAG_USDHC | ESDHC_FLAG_MAN_TUNING
| ESDHC_FLAG_HAVE_CAP1 | ESDHC_FLAG_HS200
@@ -408,6 +416,7 @@ static const struct of_device_id imx_esdhc_dt_ids[] = {
{ .compatible = "fsl,imx95-usdhc", .data = &usdhc_imx95_data, },
{ .compatible = "fsl,imxrt1050-usdhc", .data = &usdhc_imxrt1050_data, },
{ .compatible = "nxp,s32g2-usdhc", .data = &usdhc_s32g2_data, },
+ { .compatible = "nxp,s32n79-usdhc", .data = &usdhc_s32n79_data, },
{ /* sentinel */ }
};
MODULE_DEVICE_TABLE(of, imx_esdhc_dt_ids);
--
2.43.0
On Wed, Feb 25, 2026 at 02:38:55PM +0100, Ciprian Costea wrote:
> From: Ciprian Marian Costea <ciprianmarian.costea@oss.nxp.com>
>
> Add support for the uSDHC controller found in NXP S32N79 automotive SoCs.
>
> The controller is compatible with the existing sdhci-esdhc-imx driver.
"compatible" is not exactly,
Add support for the uSDHC controller found in NXP S32N79 automotive SoCs,
which reuse the existing sdhci-esdhc-imx driver with slice difference.
Compared with s32n79, needn't set ESDHC_FLAG_SKIP_CD_WAKE flags because
...
Frank
>
> Co-developed-by: Larisa Grigore <larisa.grigore@nxp.com>
> Signed-off-by: Larisa Grigore <larisa.grigore@nxp.com>
> Signed-off-by: Ciprian Marian Costea <ciprianmarian.costea@oss.nxp.com>
> ---
> drivers/mmc/host/sdhci-esdhc-imx.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
> index a7a5df673b0f..28288fca87ff 100644
> --- a/drivers/mmc/host/sdhci-esdhc-imx.c
> +++ b/drivers/mmc/host/sdhci-esdhc-imx.c
> @@ -321,6 +321,14 @@ static struct esdhc_soc_data usdhc_s32g2_data = {
> .quirks = SDHCI_QUIRK_NO_LED,
> };
>
> +static struct esdhc_soc_data usdhc_s32n79_data = {
> + .flags = ESDHC_FLAG_USDHC | ESDHC_FLAG_MAN_TUNING
> + | ESDHC_FLAG_HAVE_CAP1 | ESDHC_FLAG_HS200
> + | ESDHC_FLAG_HS400 | ESDHC_FLAG_HS400_ES
> + | ESDHC_FLAG_SKIP_ERR004536,
> + .quirks = SDHCI_QUIRK_NO_LED,
> +};
> +
> static struct esdhc_soc_data usdhc_imx7ulp_data = {
> .flags = ESDHC_FLAG_USDHC | ESDHC_FLAG_MAN_TUNING
> | ESDHC_FLAG_HAVE_CAP1 | ESDHC_FLAG_HS200
> @@ -408,6 +416,7 @@ static const struct of_device_id imx_esdhc_dt_ids[] = {
> { .compatible = "fsl,imx95-usdhc", .data = &usdhc_imx95_data, },
> { .compatible = "fsl,imxrt1050-usdhc", .data = &usdhc_imxrt1050_data, },
> { .compatible = "nxp,s32g2-usdhc", .data = &usdhc_s32g2_data, },
> + { .compatible = "nxp,s32n79-usdhc", .data = &usdhc_s32n79_data, },
> { /* sentinel */ }
> };
> MODULE_DEVICE_TABLE(of, imx_esdhc_dt_ids);
> --
> 2.43.0
>
On 2/25/2026 5:26 PM, Frank Li wrote:
> On Wed, Feb 25, 2026 at 02:38:55PM +0100, Ciprian Costea wrote:
>> From: Ciprian Marian Costea <ciprianmarian.costea@oss.nxp.com>
>>
>> Add support for the uSDHC controller found in NXP S32N79 automotive SoCs.
>>
>> The controller is compatible with the existing sdhci-esdhc-imx driver.
>
> "compatible" is not exactly,
>
> Add support for the uSDHC controller found in NXP S32N79 automotive SoCs,
> which reuse the existing sdhci-esdhc-imx driver with slice difference.
>
> Compared with s32n79, needn't set ESDHC_FLAG_SKIP_CD_WAKE flags because
> ...
>
> Frank
Thanks for your suggestion. I will add to the description in V3.
Best regards,
Ciprian
>>
>> Co-developed-by: Larisa Grigore <larisa.grigore@nxp.com>
>> Signed-off-by: Larisa Grigore <larisa.grigore@nxp.com>
>> Signed-off-by: Ciprian Marian Costea <ciprianmarian.costea@oss.nxp.com>
>> ---
>> drivers/mmc/host/sdhci-esdhc-imx.c | 9 +++++++++
>> 1 file changed, 9 insertions(+)
>>
>> diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
>> index a7a5df673b0f..28288fca87ff 100644
>> --- a/drivers/mmc/host/sdhci-esdhc-imx.c
>> +++ b/drivers/mmc/host/sdhci-esdhc-imx.c
>> @@ -321,6 +321,14 @@ static struct esdhc_soc_data usdhc_s32g2_data = {
>> .quirks = SDHCI_QUIRK_NO_LED,
>> };
>>
>> +static struct esdhc_soc_data usdhc_s32n79_data = {
>> + .flags = ESDHC_FLAG_USDHC | ESDHC_FLAG_MAN_TUNING
>> + | ESDHC_FLAG_HAVE_CAP1 | ESDHC_FLAG_HS200
>> + | ESDHC_FLAG_HS400 | ESDHC_FLAG_HS400_ES
>> + | ESDHC_FLAG_SKIP_ERR004536,
>> + .quirks = SDHCI_QUIRK_NO_LED,
>> +};
>> +
>> static struct esdhc_soc_data usdhc_imx7ulp_data = {
>> .flags = ESDHC_FLAG_USDHC | ESDHC_FLAG_MAN_TUNING
>> | ESDHC_FLAG_HAVE_CAP1 | ESDHC_FLAG_HS200
>> @@ -408,6 +416,7 @@ static const struct of_device_id imx_esdhc_dt_ids[] = {
>> { .compatible = "fsl,imx95-usdhc", .data = &usdhc_imx95_data, },
>> { .compatible = "fsl,imxrt1050-usdhc", .data = &usdhc_imxrt1050_data, },
>> { .compatible = "nxp,s32g2-usdhc", .data = &usdhc_s32g2_data, },
>> + { .compatible = "nxp,s32n79-usdhc", .data = &usdhc_s32n79_data, },
>> { /* sentinel */ }
>> };
>> MODULE_DEVICE_TABLE(of, imx_esdhc_dt_ids);
>> --
>> 2.43.0
>>
On 2/25/2026 5:26 PM, Frank Li wrote:
> On Wed, Feb 25, 2026 at 02:38:55PM +0100, Ciprian Costea wrote:
>> From: Ciprian Marian Costea <ciprianmarian.costea@oss.nxp.com>
>>
>> Add support for the uSDHC controller found in NXP S32N79 automotive SoCs.
>>
>> The controller is compatible with the existing sdhci-esdhc-imx driver.
>
> "compatible" is not exactly,
>
> Add support for the uSDHC controller found in NXP S32N79 automotive SoCs,
> which reuse the existing sdhci-esdhc-imx driver with slice difference.
>
> Compared with s32n79, needn't set ESDHC_FLAG_SKIP_CD_WAKE flags because
> ...
>
> Frank
Makes sense. I will update the commit message accordingly in V3.
Regards,
Ciprian
>>
>> Co-developed-by: Larisa Grigore <larisa.grigore@nxp.com>
>> Signed-off-by: Larisa Grigore <larisa.grigore@nxp.com>
>> Signed-off-by: Ciprian Marian Costea <ciprianmarian.costea@oss.nxp.com>
>> ---
>> drivers/mmc/host/sdhci-esdhc-imx.c | 9 +++++++++
>> 1 file changed, 9 insertions(+)
>>
>> diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
>> index a7a5df673b0f..28288fca87ff 100644
>> --- a/drivers/mmc/host/sdhci-esdhc-imx.c
>> +++ b/drivers/mmc/host/sdhci-esdhc-imx.c
>> @@ -321,6 +321,14 @@ static struct esdhc_soc_data usdhc_s32g2_data = {
>> .quirks = SDHCI_QUIRK_NO_LED,
>> };
>>
>> +static struct esdhc_soc_data usdhc_s32n79_data = {
>> + .flags = ESDHC_FLAG_USDHC | ESDHC_FLAG_MAN_TUNING
>> + | ESDHC_FLAG_HAVE_CAP1 | ESDHC_FLAG_HS200
>> + | ESDHC_FLAG_HS400 | ESDHC_FLAG_HS400_ES
>> + | ESDHC_FLAG_SKIP_ERR004536,
>> + .quirks = SDHCI_QUIRK_NO_LED,
>> +};
>> +
>> static struct esdhc_soc_data usdhc_imx7ulp_data = {
>> .flags = ESDHC_FLAG_USDHC | ESDHC_FLAG_MAN_TUNING
>> | ESDHC_FLAG_HAVE_CAP1 | ESDHC_FLAG_HS200
>> @@ -408,6 +416,7 @@ static const struct of_device_id imx_esdhc_dt_ids[] = {
>> { .compatible = "fsl,imx95-usdhc", .data = &usdhc_imx95_data, },
>> { .compatible = "fsl,imxrt1050-usdhc", .data = &usdhc_imxrt1050_data, },
>> { .compatible = "nxp,s32g2-usdhc", .data = &usdhc_s32g2_data, },
>> + { .compatible = "nxp,s32n79-usdhc", .data = &usdhc_s32n79_data, },
>> { /* sentinel */ }
>> };
>> MODULE_DEVICE_TABLE(of, imx_esdhc_dt_ids);
>> --
>> 2.43.0
>>
© 2016 - 2026 Red Hat, Inc.