Commit af5d44de authored by Tony Lindgren's avatar Tony Lindgren Committed by Kishon Vijay Abraham I

phy: mapphone-mdm6600: Fix uninitialized status value regression

Only the used bits get cleared with bitmap_zero() when we call
gpiod_get_array_value_cansleep(). We must mask only the bits we're
using for ddata->status as the other bits in the bitmap may not be
initialized.

And let's also drop useless debug code accidentally left over while
at it.

Fixes: b9762beb ("gpiolib: Pass bitmaps, not integer arrays, to get/set array")
Cc: Jacopo Mondi <jacopo@jmondi.org>
Cc: Janusz Krzysztofik <jmkrzyszt@gmail.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Marcel Partap <mpartap@gmx.net>
Cc: Merlijn Wajer <merlijn@wizzup.org>
Cc: Michael Scott <hashcode0f@gmail.com>
Cc: NeKit <nekit1000@gmail.com>
Cc: Pavel Machek <pavel@ucw.cz>
Cc: Sebastian Reichel <sre@kernel.org>
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
Signed-off-by: default avatarKishon Vijay Abraham I <kishon@ti.com>
parent 049226b9
...@@ -200,7 +200,7 @@ static void phy_mdm6600_status(struct work_struct *work) ...@@ -200,7 +200,7 @@ static void phy_mdm6600_status(struct work_struct *work)
struct phy_mdm6600 *ddata; struct phy_mdm6600 *ddata;
struct device *dev; struct device *dev;
DECLARE_BITMAP(values, PHY_MDM6600_NR_STATUS_LINES); DECLARE_BITMAP(values, PHY_MDM6600_NR_STATUS_LINES);
int error, i, val = 0; int error;
ddata = container_of(work, struct phy_mdm6600, status_work.work); ddata = container_of(work, struct phy_mdm6600, status_work.work);
dev = ddata->dev; dev = ddata->dev;
...@@ -212,16 +212,11 @@ static void phy_mdm6600_status(struct work_struct *work) ...@@ -212,16 +212,11 @@ static void phy_mdm6600_status(struct work_struct *work)
if (error) if (error)
return; return;
for (i = 0; i < PHY_MDM6600_NR_STATUS_LINES; i++) { ddata->status = values[0] & ((1 << PHY_MDM6600_NR_STATUS_LINES) - 1);
val |= test_bit(i, values) << i;
dev_dbg(ddata->dev, "XXX %s: i: %i values[i]: %i val: %i\n",
__func__, i, test_bit(i, values), val);
}
ddata->status = values[0];
dev_info(dev, "modem status: %i %s\n", dev_info(dev, "modem status: %i %s\n",
ddata->status, ddata->status,
phy_mdm6600_status_name[ddata->status & 7]); phy_mdm6600_status_name[ddata->status]);
complete(&ddata->ack); complete(&ddata->ack);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment