#include <linux/array_size.h>
#include <linux/bitops.h>
#include <linux/build_bug.h>
#include <linux/delay.h>
#include <linux/device.h>
#include <linux/err.h>
#include <linux/firmware.h>
#include <linux/gpio/consumer.h>
#include <linux/jiffies.h>
#include <linux/mfd/core.h>
#include <linux/mfd/cs42l43.h>
#include <linux/mfd/cs42l43-regs.h>
#include <linux/module.h>
#include <linux/pm.h>
#include <linux/pm_runtime.h>
#include <linux/regmap.h>
#include <linux/soundwire/sdw.h>
#include <linux/types.h>
#include "cs42l43.h"
#define CS42L43_RESET_DELAY_MS …
#define CS42L43_SDW_ATTACH_TIMEOUT_MS …
#define CS42L43_SDW_DETACH_TIMEOUT_MS …
#define CS42L43_MCU_BOOT_STAGE1 …
#define CS42L43_MCU_BOOT_STAGE2 …
#define CS42L43_MCU_BOOT_STAGE3 …
#define CS42L43_MCU_BOOT_STAGE4 …
#define CS42L43_MCU_POLL_US …
#define CS42L43_MCU_CMD_TIMEOUT_US …
#define CS42L43_MCU_UPDATE_FORMAT …
#define CS42L43_MCU_UPDATE_OFFSET …
#define CS42L43_MCU_UPDATE_TIMEOUT_US …
#define CS42L43_MCU_UPDATE_RETRIES …
#define CS42L43_MCU_ROM_REV …
#define CS42L43_MCU_ROM_BIOS_REV …
#define CS42L43_MCU_SUPPORTED_REV …
#define CS42L43_MCU_SHADOW_REGS_REQUIRED_REV …
#define CS42L43_MCU_SUPPORTED_BIOS_REV …
#define CS42L43_VDDP_DELAY_US …
#define CS42L43_VDDD_DELAY_US …
#define CS42L43_AUTOSUSPEND_TIME_MS …
struct cs42l43_patch_header { … } __packed;
static const struct reg_sequence cs42l43_reva_patch[] = …;
const struct reg_default cs42l43_reg_default[CS42L43_N_DEFAULTS] = …;
EXPORT_SYMBOL_NS_GPL(…);
bool cs42l43_readable_register(struct device *dev, unsigned int reg)
{ … }
EXPORT_SYMBOL_NS_GPL(…);
bool cs42l43_precious_register(struct device *dev, unsigned int reg)
{ … }
EXPORT_SYMBOL_NS_GPL(…);
bool cs42l43_volatile_register(struct device *dev, unsigned int reg)
{ … }
EXPORT_SYMBOL_NS_GPL(…);
#define CS42L43_IRQ_OFFSET(reg) …
#define CS42L43_IRQ_REG(name, reg) …
static const struct regmap_irq cs42l43_regmap_irqs[] = …;
static const struct regmap_irq_chip cs42l43_irq_chip = …;
static const char * const cs42l43_core_supplies[] = …;
static const char * const cs42l43_parent_supplies[] = …;
static const struct mfd_cell cs42l43_devs[] = …;
static int cs42l43_soft_reset(struct cs42l43 *cs42l43)
{ … }
static int cs42l43_wait_for_attach(struct cs42l43 *cs42l43)
{ … }
static int cs42l43_mcu_stage_2_3(struct cs42l43 *cs42l43, bool shadow)
{ … }
static int cs42l43_mcu_stage_3_2(struct cs42l43 *cs42l43)
{ … }
static int cs42l43_mcu_disable(struct cs42l43 *cs42l43)
{ … }
static void cs42l43_mcu_load_firmware(const struct firmware *firmware, void *context)
{ … }
static int cs42l43_mcu_is_hw_compatible(struct cs42l43 *cs42l43,
unsigned int mcu_rev,
unsigned int bios_rev)
{ … }
static int cs42l43_mcu_update_step(struct cs42l43 *cs42l43)
{ … }
static int cs42l43_mcu_update(struct cs42l43 *cs42l43)
{ … }
static int cs42l43_irq_config(struct cs42l43 *cs42l43)
{ … }
static void cs42l43_boot_work(struct work_struct *work)
{ … }
static int cs42l43_power_up(struct cs42l43 *cs42l43)
{ … }
static int cs42l43_power_down(struct cs42l43 *cs42l43)
{ … }
int cs42l43_dev_probe(struct cs42l43 *cs42l43)
{ … }
EXPORT_SYMBOL_NS_GPL(…);
void cs42l43_dev_remove(struct cs42l43 *cs42l43)
{ … }
EXPORT_SYMBOL_NS_GPL(…);
static int cs42l43_suspend(struct device *dev)
{ … }
static int cs42l43_resume(struct device *dev)
{ … }
static int cs42l43_runtime_suspend(struct device *dev)
{ … }
static int cs42l43_runtime_resume(struct device *dev)
{ … }
EXPORT_NS_GPL_DEV_PM_OPS(cs42l43_pm_ops, MFD_CS42L43) = …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;
MODULE_FIRMWARE(…) …;