Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6
MFD fixes from Samuel Ortiz: "This is the pull request for the MFD fixes for 3.3. We have a few NULL pointer dereferences fixes, an ACPI conflict check fix, and a couple of wm8994 fixes." * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6: mfd: Correct readability of WM8994 DC servo 4E register mfd: Initialize tps65912 irq platform data properly mfd: Fix ACPI conflict check mfd: Fix ab8500 error path bug mfd: Test for jack detection when deciding if wm8994 should suspend mfd: Initialize tps65910 irq platform data properly mfd: Fix possible s5m null pointer dereference mfd: wm8350 variable dereferenced before check
This commit is contained in:
commit
a5939eefdc
|
@ -956,11 +956,12 @@ int __devinit ab8500_init(struct ab8500 *ab8500)
|
|||
return ret;
|
||||
|
||||
out_freeirq:
|
||||
if (ab8500->irq_base) {
|
||||
if (ab8500->irq_base)
|
||||
free_irq(ab8500->irq, ab8500);
|
||||
out_removeirq:
|
||||
if (ab8500->irq_base)
|
||||
ab8500_irq_remove(ab8500);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
@ -123,7 +123,7 @@ static int mfd_add_device(struct device *parent, int id,
|
|||
}
|
||||
|
||||
if (!cell->ignore_resource_conflicts) {
|
||||
ret = acpi_check_resource_conflict(res);
|
||||
ret = acpi_check_resource_conflict(&res[r]);
|
||||
if (ret)
|
||||
goto fail_res;
|
||||
}
|
||||
|
|
|
@ -105,7 +105,7 @@ static int s5m87xx_i2c_probe(struct i2c_client *i2c,
|
|||
s5m87xx->rtc = i2c_new_dummy(i2c->adapter, RTC_I2C_ADDR);
|
||||
i2c_set_clientdata(s5m87xx->rtc, s5m87xx);
|
||||
|
||||
if (pdata->cfg_pmic_irq)
|
||||
if (pdata && pdata->cfg_pmic_irq)
|
||||
pdata->cfg_pmic_irq();
|
||||
|
||||
s5m_irq_init(s5m87xx);
|
||||
|
|
|
@ -168,7 +168,7 @@ static int tps65910_i2c_probe(struct i2c_client *i2c,
|
|||
goto err;
|
||||
|
||||
init_data->irq = pmic_plat_data->irq;
|
||||
init_data->irq_base = pmic_plat_data->irq;
|
||||
init_data->irq_base = pmic_plat_data->irq_base;
|
||||
|
||||
tps65910_gpio_init(tps65910, pmic_plat_data->gpio_base);
|
||||
|
||||
|
|
|
@ -151,7 +151,7 @@ int tps65912_device_init(struct tps65912 *tps65912)
|
|||
goto err;
|
||||
|
||||
init_data->irq = pmic_plat_data->irq;
|
||||
init_data->irq_base = pmic_plat_data->irq;
|
||||
init_data->irq_base = pmic_plat_data->irq_base;
|
||||
ret = tps65912_irq_init(tps65912, init_data->irq, init_data);
|
||||
if (ret < 0)
|
||||
goto err;
|
||||
|
|
|
@ -496,7 +496,6 @@ int wm8350_irq_init(struct wm8350 *wm8350, int irq,
|
|||
|
||||
mutex_init(&wm8350->irq_lock);
|
||||
wm8350->chip_irq = irq;
|
||||
wm8350->irq_base = pdata->irq_base;
|
||||
|
||||
if (pdata && pdata->irq_base > 0)
|
||||
irq_base = pdata->irq_base;
|
||||
|
|
|
@ -256,6 +256,20 @@ static int wm8994_suspend(struct device *dev)
|
|||
break;
|
||||
}
|
||||
|
||||
switch (wm8994->type) {
|
||||
case WM1811:
|
||||
ret = wm8994_reg_read(wm8994, WM8994_ANTIPOP_2);
|
||||
if (ret < 0) {
|
||||
dev_err(dev, "Failed to read jackdet: %d\n", ret);
|
||||
} else if (ret & WM1811_JACKDET_MODE_MASK) {
|
||||
dev_dbg(dev, "CODEC still active, ignoring suspend\n");
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
/* Disable LDO pulldowns while the device is suspended if we
|
||||
* don't know that something will be driving them. */
|
||||
if (!wm8994->ldo_ena_always_driven)
|
||||
|
|
|
@ -806,6 +806,7 @@ static bool wm1811_readable_register(struct device *dev, unsigned int reg)
|
|||
case WM8994_DC_SERVO_2:
|
||||
case WM8994_DC_SERVO_READBACK:
|
||||
case WM8994_DC_SERVO_4:
|
||||
case WM8994_DC_SERVO_4E:
|
||||
case WM8994_ANALOGUE_HP_1:
|
||||
case WM8958_MIC_DETECT_1:
|
||||
case WM8958_MIC_DETECT_2:
|
||||
|
|
Loading…
Reference in New Issue