mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 07:04:28 +00:00
gpio: qcom_pmic: fix silent dev_read_addr downcast
priv->pid is uint32_t, but dev_read_addr() returns a uint64_t on arm64, with the upper bits being used for error codes. Do error checking before downcasting to u32 to prevent errors being silently ignored. Reviewed-by: Sumit Garg <sumit.garg@linaro.org> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Tested-by: Sumit Garg <sumit.garg@linaro.org> Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
This commit is contained in:
parent
a4ba2a6663
commit
033f09b4b4
1 changed files with 10 additions and 4 deletions
|
@ -221,11 +221,14 @@ static int qcom_gpio_probe(struct udevice *dev)
|
|||
{
|
||||
struct qcom_gpio_bank *priv = dev_get_priv(dev);
|
||||
int reg;
|
||||
u64 pid;
|
||||
|
||||
priv->pid = dev_read_addr(dev);
|
||||
if (priv->pid == FDT_ADDR_T_NONE)
|
||||
pid = dev_read_addr(dev);
|
||||
if (pid == FDT_ADDR_T_NONE)
|
||||
return log_msg_ret("bad address", -EINVAL);
|
||||
|
||||
priv->pid = pid;
|
||||
|
||||
/* Do a sanity check */
|
||||
reg = pmic_reg_read(dev->parent, priv->pid + REG_TYPE);
|
||||
if (reg != REG_TYPE_VAL)
|
||||
|
@ -328,11 +331,14 @@ static int qcom_pwrkey_probe(struct udevice *dev)
|
|||
{
|
||||
struct qcom_gpio_bank *priv = dev_get_priv(dev);
|
||||
int reg;
|
||||
u64 pid;
|
||||
|
||||
priv->pid = dev_read_addr(dev);
|
||||
if (priv->pid == FDT_ADDR_T_NONE)
|
||||
pid = dev_read_addr(dev);
|
||||
if (pid == FDT_ADDR_T_NONE)
|
||||
return log_msg_ret("bad address", -EINVAL);
|
||||
|
||||
priv->pid = pid;
|
||||
|
||||
/* Do a sanity check */
|
||||
reg = pmic_reg_read(dev->parent, priv->pid + REG_TYPE);
|
||||
if (reg != 0x1)
|
||||
|
|
Loading…
Reference in a new issue