// SPDX-License-Identifier: GPL-2.0
//
// CS530x CODEC driver
//
// Copyright (C) 2024-2025 Cirrus Logic, Inc. and
// Cirrus Logic International Semiconductor Ltd.
#include <linux/delay.h>
#include <linux/i2c.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/pm.h>
#include <linux/property.h>
#include <linux/slab.h>
#include <linux/spi/spi.h>
#include <sound/core.h>
#include <sound/initval.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
#include <sound/soc.h>
#include <sound/tlv.h>
#include "cs530x.h"
static const char *cs530x_supply_names[CS530X_NUM_SUPPLIES] = {
"vdd-a",
"vdd-io",
};
static const struct reg_default cs530x_reg_defaults[] = {
{ CS530X_CLK_CFG_0, 0x30 },
{ CS530X_CLK_CFG_1, 0x0001 },
{ CS530X_CHIP_ENABLE, 0 },
{ CS530X_ASP_CFG, 0 },
{ CS530X_SIGNAL_PATH_CFG, 0 },
{ CS530X_IN_ENABLES, 0 },
{ CS530X_IN_RAMP_SUM, 0x0022 },
{ CS530X_IN_FILTER, 0 },
{ CS530X_IN_HIZ, 0 },
{ CS530X_IN_INV, 0 },
{ CS530X_IN_VOL_CTRL1_0, 0x8000 },
{ CS530X_IN_VOL_CTRL1_1, 0x8000 },
{ CS530X_IN_VOL_CTRL2_0, 0x8000 },
{ CS530X_IN_VOL_CTRL2_1, 0x8000 },
{ CS530X_IN_VOL_CTRL3_0, 0x8000 },
{ CS530X_IN_VOL_CTRL3_1, 0x8000 },
{ CS530X_IN_VOL_CTRL4_0, 0x8000 },
{ CS530X_IN_VOL_CTRL4_1, 0x8000 },
{ CS530X_OUT_ENABLES, 0 },
{ CS530X_OUT_RAMP_SUM, 0x0022 },
{ CS530X_OUT_FILTER, 0 },
{ CS530X_OUT_INV, 0 },
{ CS530X_OUT_VOL_CTRL1_0, 0x8000 },
{ CS530X_OUT_VOL_CTRL1_1, 0x8000 },
{ CS530X_OUT_VOL_CTRL2_0, 0x8000 },
{ CS530X_OUT_VOL_CTRL2_1, 0x8000 },
{ CS530X_OUT_VOL_CTRL3_0, 0x8000 },
{ CS530X_OUT_VOL_CTRL3_1, 0x8000 },