Skip to content

Commit 3cc5378

Browse files
ehristevkeveryang
authored andcommitted
phy: rockchip: inno-usb2: fix phy reg=0 case
The support for #address-cells=2 has a loophole: if the reg is actually 0, but the #address-cells is actually 1, like in such case below: syscon { #address-cells = <1>; phy { reg = <0 0x10>; }; }; then the second u32 of the 'reg' is the size, not the address. The code should check for the parent's #address-cells value, and not assume that if the first u32 is 0, then the #address-cells is 2, and the reg property is something like reg = <0 0xff00 0x10>; Fixed this by looking for the #address-cells value and retrieving the reg address only if this is ==2. To avoid breaking anything I also kept the check `if reg==0` as some DT's may have a wrong #address-cells as parent and even if this commit is correct, it might break the existing wrong device-trees. Fixes: d538efb ("phy: rockchip: inno-usb2: Add support #address_cells = 2") Signed-off-by: Eugen Hristev <eugen.hristev@collabora.com> Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
1 parent 580eb31 commit 3cc5378

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

drivers/phy/rockchip/phy-rockchip-inno-usb2.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ static int rockchip_usb2phy_probe(struct udevice *dev)
259259
}
260260

261261
/* support address_cells=2 */
262-
if (reg == 0) {
262+
if (dev_read_addr_cells(dev) == 2 && reg == 0) {
263263
if (ofnode_read_u32_index(dev_ofnode(dev), "reg", 1, &reg)) {
264264
dev_err(dev, "%s must have reg[1]\n",
265265
ofnode_get_name(dev_ofnode(dev)));

0 commit comments

Comments
 (0)