Skip to content
Snippets Groups Projects
  • Eugen Hristev's avatar
    3cc53784
    phy: rockchip: inno-usb2: fix phy reg=0 case · 3cc53784
    Eugen Hristev authored
    
    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: d538efb9 ("phy: rockchip: inno-usb2: Add support #address_cells = 2")
    Signed-off-by: default avatarEugen Hristev <eugen.hristev@collabora.com>
    Reviewed-by: default avatarKever Yang <kever.yang@rock-chips.com>
    3cc53784
    History
    phy: rockchip: inno-usb2: fix phy reg=0 case
    Eugen Hristev authored
    
    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: d538efb9 ("phy: rockchip: inno-usb2: Add support #address_cells = 2")
    Signed-off-by: default avatarEugen Hristev <eugen.hristev@collabora.com>
    Reviewed-by: default avatarKever Yang <kever.yang@rock-chips.com>