Commit 47ef3e60 authored by Mark Brown's avatar Mark Brown

Add support for the TAS5733

Merge series from Kamel Bouhara <kamel.bouhara@bootlin.com>:

This small series extends the tas571x driver to support the TAS5733
audio power amplifier.
parents faabfd5c f5db4d00
......@@ -12,6 +12,7 @@ Required properties:
- "ti,tas5717",
- "ti,tas5719",
- "ti,tas5721"
- "ti,tas5733"
- reg: The I2C address of the device
- #sound-dai-cells: must be equal to 0
......
......@@ -718,6 +718,63 @@ static const struct regmap_config tas5721_regmap_config = {
.volatile_table = &tas571x_volatile_regs,
};
static const char *const tas5733_supply_names[] = {
"AVDD",
"DVDD",
"PVDD",
};
static const struct reg_default tas5733_reg_defaults[] = {
{TAS571X_CLK_CTRL_REG, 0x6c},
{TAS571X_DEV_ID_REG, 0x00},
{TAS571X_ERR_STATUS_REG, 0x00},
{TAS571X_SYS_CTRL_1_REG, 0xa0},
{TAS571X_SDI_REG, 0x05},
{TAS571X_SYS_CTRL_2_REG, 0x40},
{TAS571X_SOFT_MUTE_REG, 0x07},
{TAS571X_MVOL_REG, 0x03ff},
{TAS571X_CH1_VOL_REG, 0x00c0},
{TAS571X_CH2_VOL_REG, 0x00c0},
{TAS571X_CH3_VOL_REG, 0x00c0},
{TAS571X_VOL_CFG_REG, 0xf0},
{TAS571X_MODULATION_LIMIT_REG, 0x07},
{TAS571X_IC_DELAY_CH1_REG, 0xb8},
{TAS571X_IC_DELAY_CH2_REG, 0x60},
{TAS571X_IC_DELAY_CH3_REG, 0xa0},
{TAS571X_IC_DELAY_CH4_REG, 0x48},
{TAS571X_PWM_CH_SDN_GROUP_REG, 0x30},
{TAS571X_START_STOP_PERIOD_REG, 0x68},
{TAS571X_OSC_TRIM_REG, 0x82},
{TAS571X_BKND_ERR_REG, 0x02},
{TAS571X_INPUT_MUX_REG, 0x00897772},
{TAS571X_PWM_MUX_REG, 0x01021345},
{TAS5717_CH1_RIGHT_CH_MIX_REG, 0x00},
{TAS5717_CH1_LEFT_CH_MIX_REG, 0x800000},
{TAS5717_CH2_LEFT_CH_MIX_REG, 0x00},
{TAS5717_CH2_RIGHT_CH_MIX_REG, 0x800000},
};
static const struct regmap_config tas5733_regmap_config = {
.reg_bits = 8,
.val_bits = 32,
.max_register = 0xff,
.reg_read = tas571x_reg_read,
.reg_write = tas571x_reg_write,
.reg_defaults = tas5733_reg_defaults,
.num_reg_defaults = ARRAY_SIZE(tas5733_reg_defaults),
.cache_type = REGCACHE_RBTREE,
.wr_table = &tas571x_write_regs,
.volatile_table = &tas571x_volatile_regs,
};
static const struct tas571x_chip tas5733_chip = {
.supply_names = tas5733_supply_names,
.num_supply_names = ARRAY_SIZE(tas5733_supply_names),
.controls = tas5717_controls,
.num_controls = ARRAY_SIZE(tas5717_controls),
.regmap_config = &tas5733_regmap_config,
.vol_reg_size = 2,
};
static const struct tas571x_chip tas5721_chip = {
.supply_names = tas5721_supply_names,
......@@ -897,6 +954,7 @@ static const struct of_device_id tas571x_of_match[] __maybe_unused = {
{ .compatible = "ti,tas5717", .data = &tas5717_chip, },
{ .compatible = "ti,tas5719", .data = &tas5717_chip, },
{ .compatible = "ti,tas5721", .data = &tas5721_chip, },
{ .compatible = "ti,tas5733", .data = &tas5733_chip, },
{ }
};
MODULE_DEVICE_TABLE(of, tas571x_of_match);
......@@ -907,6 +965,7 @@ static const struct i2c_device_id tas571x_i2c_id[] = {
{ "tas5717", (kernel_ulong_t) &tas5717_chip },
{ "tas5719", (kernel_ulong_t) &tas5717_chip },
{ "tas5721", (kernel_ulong_t) &tas5721_chip },
{ "tas5733", (kernel_ulong_t) &tas5733_chip },
{ }
};
MODULE_DEVICE_TABLE(i2c, tas571x_i2c_id);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment