diff --git a/drivers/soc/imx/soc-imx8.c b/drivers/soc/imx/soc-imx8.c
index 4f773cbedb4a383dfa2912b1676e0bf4b18b2367..bcef07394f89edbb395c74f7511395f7ba8b100c 100644
--- a/drivers/soc/imx/soc-imx8.c
+++ b/drivers/soc/imx/soc-imx8.c
@@ -350,6 +350,9 @@ device_initcall(imx8_soc_init);
 #define OCOTP_CFG3_SPEED_1P6GHZ		2
 #define OCOTP_CFG3_SPEED_1P2GHZ		1
 #define OCOTP_CFG3_SPEED_800MHZ		0
+#define OCOTP_CFG3_SPEED_1P0GHZ		1
+#define OCOTP_CFG3_SPEED_1P3GHZ		2
+#define OCOTP_CFG3_SPEED_1P5GHZ		3
 #define OCOTP_CFG3_MKT_SEGMENT_SHIFT	6
 #define OCOTP_CFG3_MKT_SEGMENT_MASK	(0x3 << 6)
 #define OCOTP_CFG3_CONSUMER		0
@@ -361,7 +364,7 @@ static void __init imx8mq_opp_check_speed_grading(struct device *cpu_dev)
 {
 	struct device_node *np;
 	void __iomem *base;
-	u32 val;
+	u32 val, speed_grading;
 
 	np = of_find_compatible_node(NULL, NULL, "fsl,imx8mq-ocotp");
 	if (!np) {
@@ -375,6 +378,7 @@ static void __init imx8mq_opp_check_speed_grading(struct device *cpu_dev)
 		goto put_node;
 	}
 	val = readl_relaxed(base + OCOTP_CFG3);
+	speed_grading = (val >> OCOTP_CFG3_SPEED_GRADING_SHIFT) & 0x3;
 	val >>= OCOTP_CFG3_MKT_SEGMENT_SHIFT;
 	val &= 0x3;
 
@@ -384,12 +388,20 @@ static void __init imx8mq_opp_check_speed_grading(struct device *cpu_dev)
 			pr_warn("failed to disable 800MHz OPP!\n");
 		if (dev_pm_opp_disable(cpu_dev, 1300000000))
 			pr_warn("failed to disable 1.3GHz OPP!\n");
+		if (speed_grading != OCOTP_CFG3_SPEED_1P5GHZ) {
+			if (dev_pm_opp_disable(cpu_dev, 1500000000))
+				pr_warn("failed to disable 1.5GHz OPP!\n");
+		}
 		break;
 	case OCOTP_CFG3_INDUSTRIAL:
 		if (dev_pm_opp_disable(cpu_dev, 1000000000))
 			pr_warn("failed to disable 1GHz OPP!\n");
 		if (dev_pm_opp_disable(cpu_dev, 1500000000))
 			pr_warn("failed to disable 1.5GHz OPP!\n");
+		if (speed_grading != OCOTP_CFG3_SPEED_1P3GHZ) {
+			if (dev_pm_opp_disable(cpu_dev, 1300000000))
+				pr_warn("failed to disable 1.3GHz OPP!\n");
+		}
 		break;
 	default:
 		/* consumer part for default */
@@ -397,6 +409,10 @@ static void __init imx8mq_opp_check_speed_grading(struct device *cpu_dev)
 			pr_warn("failed to disable 800MHz OPP!\n");
 		if (dev_pm_opp_disable(cpu_dev, 1300000000))
 			pr_warn("failed to disable 1.3GHz OPP!\n");
+		if (speed_grading != OCOTP_CFG3_SPEED_1P5GHZ) {
+			if (dev_pm_opp_disable(cpu_dev, 1500000000))
+				pr_warn("failed to disable 1.5GHz OPP!\n");
+		}
 		break;
 	}