static int cs42l43_suspend(struct device *dev)
{
struct cs42l43 *cs42l43 = dev_get_drvdata(dev);
- static const struct reg_sequence mask_all[] = {
- { CS42L43_DECIM_MASK, 0xFFFFFFFF, },
- { CS42L43_EQ_MIX_MASK, 0xFFFFFFFF, },
- { CS42L43_ASP_MASK, 0xFFFFFFFF, },
- { CS42L43_PLL_MASK, 0xFFFFFFFF, },
- { CS42L43_SOFT_MASK, 0xFFFFFFFF, },
- { CS42L43_SWIRE_MASK, 0xFFFFFFFF, },
- { CS42L43_MSM_MASK, 0xFFFFFFFF, },
- { CS42L43_ACC_DET_MASK, 0xFFFFFFFF, },
- { CS42L43_I2C_TGT_MASK, 0xFFFFFFFF, },
- { CS42L43_SPI_MSTR_MASK, 0xFFFFFFFF, },
- { CS42L43_SW_TO_SPI_BRIDGE_MASK, 0xFFFFFFFF, },
- { CS42L43_OTP_MASK, 0xFFFFFFFF, },
- { CS42L43_CLASS_D_AMP_MASK, 0xFFFFFFFF, },
- { CS42L43_GPIO_INT_MASK, 0xFFFFFFFF, },
- { CS42L43_ASRC_MASK, 0xFFFFFFFF, },
- { CS42L43_HPOUT_MASK, 0xFFFFFFFF, },
- };
int ret;
ret = pm_runtime_resume_and_get(dev);
return ret;
}
- /* The IRQs will be re-enabled on resume by the cache sync */
- ret = regmap_multi_reg_write_bypassed(cs42l43->regmap,
- mask_all, ARRAY_SIZE(mask_all));
- if (ret) {
- dev_err(cs42l43->dev, "Failed to mask IRQs: %d\n", ret);
- return ret;
- }
-
disable_irq(cs42l43->irq);
ret = pm_runtime_force_suspend(dev);