phy: stm32-usbphyc: stm32: usbphyc: add protection on phy sub-node
Add protection on presence and order of the phy node sub node by using the mandatory reg information. Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com> Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
This commit is contained in:
committed by
Patrice Chotard
parent
5b4fa85d65
commit
5d81616fb8
@@ -340,7 +340,7 @@ static int stm32_usbphyc_probe(struct udevice *dev)
|
||||
struct stm32_usbphyc *usbphyc = dev_get_priv(dev);
|
||||
struct reset_ctl reset;
|
||||
ofnode node, connector;
|
||||
int i, ret;
|
||||
int ret;
|
||||
|
||||
usbphyc->base = dev_read_addr(dev);
|
||||
if (usbphyc->base == FDT_ADDR_T_NONE)
|
||||
@@ -378,14 +378,18 @@ static int stm32_usbphyc_probe(struct udevice *dev)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* parse all PHY subnodes in order to populate regulator associated
|
||||
* to each PHY port
|
||||
*/
|
||||
node = dev_read_first_subnode(dev);
|
||||
for (i = 0; i < MAX_PHYS; i++) {
|
||||
struct stm32_usbphyc_phy *usbphyc_phy = usbphyc->phys + i;
|
||||
/* parse all PHY subnodes to populate regulator associated to each PHY port */
|
||||
dev_for_each_subnode(node, dev) {
|
||||
fdt_addr_t phy_id;
|
||||
struct stm32_usbphyc_phy *usbphyc_phy;
|
||||
|
||||
phy_id = ofnode_read_u32_default(node, "reg", FDT_ADDR_T_NONE);
|
||||
if (phy_id >= MAX_PHYS) {
|
||||
dev_err(dev, "invalid reg value %lx for %s\n",
|
||||
phy_id, ofnode_get_name(node));
|
||||
return -ENOENT;
|
||||
}
|
||||
usbphyc_phy = usbphyc->phys + phy_id;
|
||||
usbphyc_phy->init = false;
|
||||
usbphyc_phy->powered = false;
|
||||
ret = stm32_usbphyc_get_regulator(node, "phy-supply",
|
||||
@@ -401,8 +405,6 @@ static int stm32_usbphyc_probe(struct udevice *dev)
|
||||
ret = stm32_usbphyc_get_regulator(connector, "vbus-supply",
|
||||
&usbphyc_phy->vbus);
|
||||
}
|
||||
|
||||
node = dev_read_next_subnode(node);
|
||||
}
|
||||
|
||||
/* Check if second port has to be used for host controller */
|
||||
|
||||
Reference in New Issue
Block a user