@@ -1147,7 +1147,7 @@ static int fsl_sai_probe(struct platform_device *pdev)
11471147
11481148 /* Select MCLK direction */
11491149 if (of_find_property (np , "fsl,sai-mclk-direction-output" , NULL ) &&
1150- sai -> verid . version >= 0x0301 ) {
1150+ sai -> soc_data -> max_register >= FSL_SAI_MCTL ) {
11511151 regmap_update_bits (sai -> regmap , FSL_SAI_MCTL ,
11521152 FSL_SAI_MCTL_MCLK_EN , FSL_SAI_MCTL_MCLK_EN );
11531153 }
@@ -1203,6 +1203,7 @@ static const struct fsl_sai_soc_data fsl_sai_vf610_data = {
12031203 .reg_offset = 0 ,
12041204 .mclk0_is_mclk1 = false,
12051205 .flags = 0 ,
1206+ .max_register = FSL_SAI_RMR ,
12061207};
12071208
12081209static const struct fsl_sai_soc_data fsl_sai_imx6sx_data = {
@@ -1213,6 +1214,7 @@ static const struct fsl_sai_soc_data fsl_sai_imx6sx_data = {
12131214 .reg_offset = 0 ,
12141215 .mclk0_is_mclk1 = true,
12151216 .flags = 0 ,
1217+ .max_register = FSL_SAI_RMR ,
12161218};
12171219
12181220static const struct fsl_sai_soc_data fsl_sai_imx7ulp_data = {
@@ -1223,6 +1225,7 @@ static const struct fsl_sai_soc_data fsl_sai_imx7ulp_data = {
12231225 .reg_offset = 8 ,
12241226 .mclk0_is_mclk1 = false,
12251227 .flags = PMQOS_CPU_LATENCY ,
1228+ .max_register = FSL_SAI_RMR ,
12261229};
12271230
12281231static const struct fsl_sai_soc_data fsl_sai_imx8mq_data = {
@@ -1233,6 +1236,7 @@ static const struct fsl_sai_soc_data fsl_sai_imx8mq_data = {
12331236 .reg_offset = 8 ,
12341237 .mclk0_is_mclk1 = false,
12351238 .flags = 0 ,
1239+ .max_register = FSL_SAI_RMR ,
12361240};
12371241
12381242static const struct fsl_sai_soc_data fsl_sai_imx8qm_data = {
@@ -1243,6 +1247,40 @@ static const struct fsl_sai_soc_data fsl_sai_imx8qm_data = {
12431247 .reg_offset = 0 ,
12441248 .mclk0_is_mclk1 = false,
12451249 .flags = 0 ,
1250+ .max_register = FSL_SAI_RMR ,
1251+ };
1252+
1253+ static const struct fsl_sai_soc_data fsl_sai_imx8mm_data = {
1254+ .use_imx_pcm = true,
1255+ .use_edma = false,
1256+ .fifo_depth = 128 ,
1257+ .reg_offset = 8 ,
1258+ .mclk0_is_mclk1 = false,
1259+ .pins = 8 ,
1260+ .flags = 0 ,
1261+ .max_register = FSL_SAI_MCTL ,
1262+ };
1263+
1264+ static const struct fsl_sai_soc_data fsl_sai_imx8mp_data = {
1265+ .use_imx_pcm = true,
1266+ .use_edma = false,
1267+ .fifo_depth = 128 ,
1268+ .reg_offset = 8 ,
1269+ .mclk0_is_mclk1 = false,
1270+ .pins = 8 ,
1271+ .flags = 0 ,
1272+ .max_register = FSL_SAI_MDIV ,
1273+ };
1274+
1275+ static const struct fsl_sai_soc_data fsl_sai_imx8ulp_data = {
1276+ .use_imx_pcm = true,
1277+ .use_edma = true,
1278+ .fifo_depth = 16 ,
1279+ .reg_offset = 8 ,
1280+ .mclk0_is_mclk1 = false,
1281+ .pins = 4 ,
1282+ .flags = PMQOS_CPU_LATENCY ,
1283+ .max_register = FSL_SAI_RTCAP ,
12461284};
12471285
12481286static const struct of_device_id fsl_sai_ids [] = {
@@ -1252,6 +1290,9 @@ static const struct of_device_id fsl_sai_ids[] = {
12521290 { .compatible = "fsl,imx7ulp-sai" , .data = & fsl_sai_imx7ulp_data },
12531291 { .compatible = "fsl,imx8mq-sai" , .data = & fsl_sai_imx8mq_data },
12541292 { .compatible = "fsl,imx8qm-sai" , .data = & fsl_sai_imx8qm_data },
1293+ { .compatible = "fsl,imx8mm-sai" , .data = & fsl_sai_imx8mm_data },
1294+ { .compatible = "fsl,imx8mp-sai" , .data = & fsl_sai_imx8mp_data },
1295+ { .compatible = "fsl,imx8ulp-sai" , .data = & fsl_sai_imx8ulp_data },
12551296 { /* sentinel */ }
12561297};
12571298MODULE_DEVICE_TABLE (of , fsl_sai_ids );
0 commit comments