diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts
index 27b0baab2781717ddbaf2a9128666275f4bb6ef0..50d245ae91760114b5a507aecedcb0fedb462975 100644
--- a/arch/sandbox/dts/test.dts
+++ b/arch/sandbox/dts/test.dts
@@ -713,11 +713,13 @@
 		compatible = "sandbox,spmi";
 		#address-cells = <0x1>;
 		#size-cells = <0x1>;
+		ranges;
 		pm8916@0 {
 			compatible = "qcom,spmi-pmic";
 			reg = <0x0 0x1>;
 			#address-cells = <0x1>;
 			#size-cells = <0x1>;
+			ranges;
 
 			spmi_gpios: gpios@c000 {
 				compatible = "qcom,pm8916-gpio";
diff --git a/drivers/gpio/pm8916_gpio.c b/drivers/gpio/pm8916_gpio.c
index bbe214d5eea972c71596794ffba62d2fdb3e1602..74a773c099b9d5871ea078564bc6e9cf53cc6265 100644
--- a/drivers/gpio/pm8916_gpio.c
+++ b/drivers/gpio/pm8916_gpio.c
@@ -172,16 +172,16 @@ static int pm8916_gpio_probe(struct udevice *dev)
 
 	priv->pid = dev_read_addr(dev);
 	if (priv->pid == FDT_ADDR_T_NONE)
-		return -EINVAL;
+		return log_msg_ret("bad address", -EINVAL);
 
 	/* Do a sanity check */
 	reg = pmic_reg_read(dev->parent, priv->pid + REG_TYPE);
 	if (reg != 0x10)
-		return -ENODEV;
+		return log_msg_ret("bad type", -ENXIO);
 
 	reg = pmic_reg_read(dev->parent, priv->pid + REG_SUBTYPE);
 	if (reg != 0x5 && reg != 0x1)
-		return -ENODEV;
+		return log_msg_ret("bad subtype", -ENXIO);
 
 	return 0;
 }
@@ -257,16 +257,16 @@ static int pm8941_pwrkey_probe(struct udevice *dev)
 
 	priv->pid = devfdt_get_addr(dev);
 	if (priv->pid == FDT_ADDR_T_NONE)
-		return -EINVAL;
+		return log_msg_ret("bad address", -EINVAL);
 
 	/* Do a sanity check */
 	reg = pmic_reg_read(dev->parent, priv->pid + REG_TYPE);
 	if (reg != 0x1)
-		return -ENODEV;
+		return log_msg_ret("bad type", -ENXIO);
 
 	reg = pmic_reg_read(dev->parent, priv->pid + REG_SUBTYPE);
 	if (reg != 0x1)
-		return -ENODEV;
+		return log_msg_ret("bad subtype", -ENXIO);
 
 	return 0;
 }