On Fri, Feb 03, 2023 at 07:06:10AM +0000, Daniel Golle wrote:
int mtk_sgmii_init(struct mtk_sgmii *ss, struct device_node *r, u32 ana_rgc3)
{
struct device_node *np;
int i;
+ u32 flags;
+ struct regmap *regmap;
for (i = 0; i < MTK_MAX_DEVS; i++) {
np = of_parse_phandle(r, "mediatek,sgmiisys", i);
if (!np)
break;
- ss->pcs[i].ana_rgc3 = ana_rgc3;
- ss->pcs[i].regmap = syscon_node_to_regmap(np);
-
- ss->pcs[i].flags = 0;
+ flags = 0;
if (of_property_read_bool(np, "pn_swap"))
- ss->pcs[i].flags |= MTK_SGMII_FLAG_PN_SWAP;
+ flags |= MTK_SGMII_FLAG_PN_SWAP;
of_node_put(np);
- if (IS_ERR(ss->pcs[i].regmap))
- return PTR_ERR(ss->pcs[i].regmap);
- ss->pcs[i].pcs.ops = &mtk_pcs_ops;
- ss->pcs[i].pcs.poll = true;
- ss->pcs[i].interface = PHY_INTERFACE_MODE_NA;
+ regmap = syscon_node_to_regmap(np);
Not supposed to use "np" after of_node_put().
+ if (IS_ERR(regmap))
+ return PTR_ERR(regmap);
+
+ ss->pcs[i] = mtk_pcs_create(ss->dev, regmap, ana_rgc3, flags);
}