mfd: Improve diagnostics for WM8350 ID register probe
Check the return value of the device I/O functions when reading the ID registers so we can provide a more useful diagnostic when we're having trouble talking to the device. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Samuel Ortiz <sameo@openedhand.com>
This commit is contained in:
parent
62571c29a8
commit
85c93ea7dc
|
@ -1297,14 +1297,29 @@ static void wm8350_client_dev_register(struct wm8350 *wm8350,
|
||||||
int wm8350_device_init(struct wm8350 *wm8350, int irq,
|
int wm8350_device_init(struct wm8350 *wm8350, int irq,
|
||||||
struct wm8350_platform_data *pdata)
|
struct wm8350_platform_data *pdata)
|
||||||
{
|
{
|
||||||
int ret = -EINVAL;
|
int ret;
|
||||||
u16 id1, id2, mask_rev;
|
u16 id1, id2, mask_rev;
|
||||||
u16 cust_id, mode, chip_rev;
|
u16 cust_id, mode, chip_rev;
|
||||||
|
|
||||||
/* get WM8350 revision and config mode */
|
/* get WM8350 revision and config mode */
|
||||||
wm8350->read_dev(wm8350, WM8350_RESET_ID, sizeof(id1), &id1);
|
ret = wm8350->read_dev(wm8350, WM8350_RESET_ID, sizeof(id1), &id1);
|
||||||
wm8350->read_dev(wm8350, WM8350_ID, sizeof(id2), &id2);
|
if (ret != 0) {
|
||||||
wm8350->read_dev(wm8350, WM8350_REVISION, sizeof(mask_rev), &mask_rev);
|
dev_err(wm8350->dev, "Failed to read ID: %d\n", ret);
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = wm8350->read_dev(wm8350, WM8350_ID, sizeof(id2), &id2);
|
||||||
|
if (ret != 0) {
|
||||||
|
dev_err(wm8350->dev, "Failed to read ID: %d\n", ret);
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = wm8350->read_dev(wm8350, WM8350_REVISION, sizeof(mask_rev),
|
||||||
|
&mask_rev);
|
||||||
|
if (ret != 0) {
|
||||||
|
dev_err(wm8350->dev, "Failed to read revision: %d\n", ret);
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
|
||||||
id1 = be16_to_cpu(id1);
|
id1 = be16_to_cpu(id1);
|
||||||
id2 = be16_to_cpu(id2);
|
id2 = be16_to_cpu(id2);
|
||||||
|
|
Loading…
Reference in a new issue