qca8k_setup_of_pws_reg(struct qca8k_priv *priv)
 {
        struct device_node *node = priv->dev->of_node;
+       const struct qca8k_match_data *data;
        u32 val = 0;
        int ret;
 
         * Should be applied by default but we set this just to make sure.
         */
        if (priv->switch_id == QCA8K_ID_QCA8327) {
+               data = of_device_get_match_data(priv->dev);
+
+               /* Set the correct package of 148 pin for QCA8327 */
+               if (data->reduced_package)
+                       val |= QCA8327_PWS_PACKAGE148_EN;
+
                ret = qca8k_rmw(priv, QCA8K_REG_PWS, QCA8327_PWS_PACKAGE148_EN,
-                               QCA8327_PWS_PACKAGE148_EN);
+                               val);
                if (ret)
                        return ret;
        }
 static SIMPLE_DEV_PM_OPS(qca8k_pm_ops,
                         qca8k_suspend, qca8k_resume);
 
-static const struct qca8k_match_data qca832x = {
+static const struct qca8k_match_data qca8327 = {
+       .id = QCA8K_ID_QCA8327,
+       .reduced_package = true,
+};
+
+static const struct qca8k_match_data qca8328 = {
        .id = QCA8K_ID_QCA8327,
 };
 
 };
 
 static const struct of_device_id qca8k_of_match[] = {
-       { .compatible = "qca,qca8327", .data = &qca832x },
+       { .compatible = "qca,qca8327", .data = &qca8327 },
+       { .compatible = "qca,qca8328", .data = &qca8328 },
        { .compatible = "qca,qca8334", .data = &qca833x },
        { .compatible = "qca,qca8337", .data = &qca833x },
        { /* sentinel */ },