diff --git a/target/linux/generic/files/drivers/net/phy/mvsw61xx.c b/target/linux/generic/files/drivers/net/phy/mvsw61xx.c
index 6bd112b00d325f1e2324d8acb60331dbbea32261..9a689e6c81b69cbe29995c929a0de9d35344663d 100644
--- a/target/linux/generic/files/drivers/net/phy/mvsw61xx.c
+++ b/target/linux/generic/files/drivers/net/phy/mvsw61xx.c
@@ -851,6 +851,9 @@ static int mvsw61xx_probe(struct platform_device *pdev)
 	case MV_IDENT_VALUE_6176:
 		model_str = MV_IDENT_STR_6176;
 		break;
+	case MV_IDENT_VALUE_6352:
+		model_str = MV_IDENT_STR_6352;
+		break;
 	default:
 		dev_err(&pdev->dev, "No compatible switch found at 0x%02x\n",
 				state->base_addr);
@@ -916,6 +919,7 @@ static const struct of_device_id mvsw61xx_match[] = {
 	{ .compatible = "marvell,88e6171" },
 	{ .compatible = "marvell,88e6172" },
 	{ .compatible = "marvell,88e6176" },
+	{ .compatible = "marvell,88e6352" },
 	{ }
 };
 MODULE_DEVICE_TABLE(of, mvsw61xx_match);
diff --git a/target/linux/generic/files/drivers/net/phy/mvsw61xx.h b/target/linux/generic/files/drivers/net/phy/mvsw61xx.h
index 1c451896895ccc37bcefcf7c03c7e275b8610945..a07b09cd14ca095752709b014e937abf4b17f94d 100644
--- a/target/linux/generic/files/drivers/net/phy/mvsw61xx.h
+++ b/target/linux/generic/files/drivers/net/phy/mvsw61xx.h
@@ -232,6 +232,9 @@ enum {
 #define MV_IDENT_VALUE_6176		0x1760
 #define MV_IDENT_STR_6176		"MV88E6176"
 
+#define MV_IDENT_VALUE_6352		0x3520
+#define MV_IDENT_STR_6352		"MV88E6352"
+
 #define MV_PVID_MASK			0x0fff
 
 #define MV_FDB_HI_MASK			0x00ff