forked from Minki/linux
ASoC: tas571x: added missing register literals
The list of TAS571x registers was incomplete. Added the missing register definitions up to the register 0x25. Added volatile and read-only register tables into tas5711_regmap_config and tas5717_regmap_config. The chip has 256 registers in total. But from address 0x29 on (0x26 to 0x28 are reserved) the register width varies between 20, 12 and 8 bytes, which the register map cannot represent. Signed-off-by: Petr Kulhavy <petr@barix.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
630e413dc2
commit
a593ed0904
@ -57,6 +57,10 @@ static int tas571x_register_size(struct tas571x_private *priv, unsigned int reg)
|
|||||||
case TAS571X_CH1_VOL_REG:
|
case TAS571X_CH1_VOL_REG:
|
||||||
case TAS571X_CH2_VOL_REG:
|
case TAS571X_CH2_VOL_REG:
|
||||||
return priv->chip->vol_reg_size;
|
return priv->chip->vol_reg_size;
|
||||||
|
case TAS571X_INPUT_MUX_REG:
|
||||||
|
case TAS571X_CH4_SRC_SELECT_REG:
|
||||||
|
case TAS571X_PWM_MUX_REG:
|
||||||
|
return 4;
|
||||||
default:
|
default:
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -259,6 +263,26 @@ static const struct snd_kcontrol_new tas5711_controls[] = {
|
|||||||
1, 1),
|
1, 1),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const struct regmap_range tas571x_readonly_regs_range[] = {
|
||||||
|
regmap_reg_range(TAS571X_CLK_CTRL_REG, TAS571X_DEV_ID_REG),
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct regmap_range tas571x_volatile_regs_range[] = {
|
||||||
|
regmap_reg_range(TAS571X_CLK_CTRL_REG, TAS571X_ERR_STATUS_REG),
|
||||||
|
regmap_reg_range(TAS571X_OSC_TRIM_REG, TAS571X_OSC_TRIM_REG),
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct regmap_access_table tas571x_write_regs = {
|
||||||
|
.no_ranges = tas571x_readonly_regs_range,
|
||||||
|
.n_no_ranges = ARRAY_SIZE(tas571x_readonly_regs_range),
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct regmap_access_table tas571x_volatile_regs = {
|
||||||
|
.yes_ranges = tas571x_volatile_regs_range,
|
||||||
|
.n_yes_ranges = ARRAY_SIZE(tas571x_volatile_regs_range),
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
static const struct reg_default tas5711_reg_defaults[] = {
|
static const struct reg_default tas5711_reg_defaults[] = {
|
||||||
{ 0x04, 0x05 },
|
{ 0x04, 0x05 },
|
||||||
{ 0x05, 0x40 },
|
{ 0x05, 0x40 },
|
||||||
@ -278,6 +302,8 @@ static const struct regmap_config tas5711_regmap_config = {
|
|||||||
.reg_defaults = tas5711_reg_defaults,
|
.reg_defaults = tas5711_reg_defaults,
|
||||||
.num_reg_defaults = ARRAY_SIZE(tas5711_reg_defaults),
|
.num_reg_defaults = ARRAY_SIZE(tas5711_reg_defaults),
|
||||||
.cache_type = REGCACHE_RBTREE,
|
.cache_type = REGCACHE_RBTREE,
|
||||||
|
.wr_table = &tas571x_write_regs,
|
||||||
|
.volatile_table = &tas571x_volatile_regs,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct tas571x_chip tas5711_chip = {
|
static const struct tas571x_chip tas5711_chip = {
|
||||||
@ -332,6 +358,8 @@ static const struct regmap_config tas5717_regmap_config = {
|
|||||||
.reg_defaults = tas5717_reg_defaults,
|
.reg_defaults = tas5717_reg_defaults,
|
||||||
.num_reg_defaults = ARRAY_SIZE(tas5717_reg_defaults),
|
.num_reg_defaults = ARRAY_SIZE(tas5717_reg_defaults),
|
||||||
.cache_type = REGCACHE_RBTREE,
|
.cache_type = REGCACHE_RBTREE,
|
||||||
|
.wr_table = &tas571x_write_regs,
|
||||||
|
.volatile_table = &tas571x_volatile_regs,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* This entry is reused for tas5719 as the software interface is identical. */
|
/* This entry is reused for tas5719 as the software interface is identical. */
|
||||||
|
@ -13,6 +13,10 @@
|
|||||||
#define _TAS571X_H
|
#define _TAS571X_H
|
||||||
|
|
||||||
/* device registers */
|
/* device registers */
|
||||||
|
#define TAS571X_CLK_CTRL_REG 0x00
|
||||||
|
#define TAS571X_DEV_ID_REG 0x01
|
||||||
|
#define TAS571X_ERR_STATUS_REG 0x02
|
||||||
|
#define TAS571X_SYS_CTRL_1_REG 0x03
|
||||||
#define TAS571X_SDI_REG 0x04
|
#define TAS571X_SDI_REG 0x04
|
||||||
#define TAS571X_SDI_FMT_MASK 0x0f
|
#define TAS571X_SDI_FMT_MASK 0x0f
|
||||||
|
|
||||||
@ -27,7 +31,25 @@
|
|||||||
#define TAS571X_MVOL_REG 0x07
|
#define TAS571X_MVOL_REG 0x07
|
||||||
#define TAS571X_CH1_VOL_REG 0x08
|
#define TAS571X_CH1_VOL_REG 0x08
|
||||||
#define TAS571X_CH2_VOL_REG 0x09
|
#define TAS571X_CH2_VOL_REG 0x09
|
||||||
|
#define TAS571X_CH3_VOL_REG 0x0a
|
||||||
|
#define TAS571X_VOL_CFG_REG 0x0e
|
||||||
|
#define TAS571X_MODULATION_LIMIT_REG 0x10
|
||||||
|
#define TAS571X_IC_DELAY_CH1_REG 0x11
|
||||||
|
#define TAS571X_IC_DELAY_CH2_REG 0x12
|
||||||
|
#define TAS571X_IC_DELAY_CH3_REG 0x13
|
||||||
|
#define TAS571X_IC_DELAY_CH4_REG 0x14
|
||||||
|
|
||||||
|
#define TAS571X_PWM_CH_SDN_GROUP_REG 0x19 /* N/A on TAS5717, TAS5719 */
|
||||||
|
#define TAS571X_PWM_CH1_SDN_MASK (1<<0)
|
||||||
|
#define TAS571X_PWM_CH2_SDN_SHIFT (1<<1)
|
||||||
|
#define TAS571X_PWM_CH3_SDN_SHIFT (1<<2)
|
||||||
|
#define TAS571X_PWM_CH4_SDN_SHIFT (1<<3)
|
||||||
|
|
||||||
|
#define TAS571X_START_STOP_PERIOD_REG 0x1a
|
||||||
#define TAS571X_OSC_TRIM_REG 0x1b
|
#define TAS571X_OSC_TRIM_REG 0x1b
|
||||||
|
#define TAS571X_BKND_ERR_REG 0x1c
|
||||||
|
#define TAS571X_INPUT_MUX_REG 0x20
|
||||||
|
#define TAS571X_CH4_SRC_SELECT_REG 0x21
|
||||||
|
#define TAS571X_PWM_MUX_REG 0x25
|
||||||
|
|
||||||
#endif /* _TAS571X_H */
|
#endif /* _TAS571X_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user