Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ASoC: tas571x: add support for tas5753

Add support for tas5753, device is similar to tas5733 but with added
headphone / line driver.

Signed-off-by: Bram Vlerick <bram.vlerick@openpixelsystems.org>
Link: https://patch.msgid.link/20250528-asoc-tas5753-support-v1-1-a50c3f6734ee@openpixelsystems.org
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Acked-by: Peter Korsgaard <peter@korsgaard.com>
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Bram Vlerick and committed by
Mark Brown
c2bde466 19272b37

+52
+52
sound/soc/codecs/tas571x.c
··· 839 839 .vol_reg_size = 2, 840 840 }; 841 841 842 + static const struct reg_default tas5753_reg_defaults[] = { 843 + {TAS571X_CLK_CTRL_REG, 0x6c}, 844 + {TAS571X_DEV_ID_REG, 0x41}, 845 + {TAS571X_ERR_STATUS_REG, 0x00}, 846 + {TAS571X_SYS_CTRL_1_REG, 0xa0}, 847 + {TAS571X_SDI_REG, 0x05}, 848 + {TAS571X_SYS_CTRL_2_REG, 0x40}, 849 + {TAS571X_SOFT_MUTE_REG, 0x00}, 850 + {TAS571X_MVOL_REG, 0x03ff}, 851 + {TAS571X_CH1_VOL_REG, 0x00c0}, 852 + {TAS571X_CH2_VOL_REG, 0x00c0}, 853 + {TAS571X_CH3_VOL_REG, 0x00c0}, 854 + {TAS571X_VOL_CFG_REG, 0xf0}, 855 + {TAS571X_MODULATION_LIMIT_REG, 0x01}, 856 + {TAS571X_IC_DELAY_CH1_REG, 0xac}, 857 + {TAS571X_IC_DELAY_CH2_REG, 0x54}, 858 + {TAS571X_IC_DELAY_CH3_REG, 0xac}, 859 + {TAS571X_IC_DELAY_CH4_REG, 0x54}, 860 + {TAS571X_OSC_TRIM_REG, 0x82}, 861 + {TAS571X_BKND_ERR_REG, 0x57}, 862 + {TAS571X_INPUT_MUX_REG, 0x00017772}, 863 + {TAS571X_PWM_MUX_REG, 0x01021345}, 864 + {TAS5717_CH1_RIGHT_CH_MIX_REG, 0x00}, 865 + {TAS5717_CH1_LEFT_CH_MIX_REG, 0x800000}, 866 + {TAS5717_CH2_LEFT_CH_MIX_REG, 0x00}, 867 + {TAS5717_CH2_RIGHT_CH_MIX_REG, 0x800000}, 868 + }; 869 + 870 + static const struct regmap_config tas5753_regmap_config = { 871 + .reg_bits = 8, 872 + .val_bits = 32, 873 + .max_register = 0xff, 874 + .reg_read = tas571x_reg_read, 875 + .reg_write = tas571x_reg_write, 876 + .reg_defaults = tas5753_reg_defaults, 877 + .num_reg_defaults = ARRAY_SIZE(tas5753_reg_defaults), 878 + .cache_type = REGCACHE_RBTREE, 879 + .wr_table = &tas571x_write_regs, 880 + .volatile_table = &tas571x_volatile_regs, 881 + }; 882 + 883 + static const struct tas571x_chip tas5753_chip = { 884 + .supply_names = tas5721_supply_names, 885 + .num_supply_names = ARRAY_SIZE(tas5721_supply_names), 886 + .controls = tas5733_controls, 887 + .num_controls = ARRAY_SIZE(tas5733_controls), 888 + .regmap_config = &tas5753_regmap_config, 889 + .vol_reg_size = 2, 890 + }; 891 + 842 892 static const struct tas571x_chip tas5721_chip = { 843 893 .supply_names = tas5721_supply_names, 844 894 .num_supply_names = ARRAY_SIZE(tas5721_supply_names), ··· 1057 1007 { .compatible = "ti,tas5719", .data = &tas5717_chip, }, 1058 1008 { .compatible = "ti,tas5721", .data = &tas5721_chip, }, 1059 1009 { .compatible = "ti,tas5733", .data = &tas5733_chip, }, 1010 + { .compatible = "ti,tas5753", .data = &tas5753_chip, }, 1060 1011 { } 1061 1012 }; 1062 1013 MODULE_DEVICE_TABLE(of, tas571x_of_match); ··· 1069 1018 { "tas5719", (kernel_ulong_t) &tas5717_chip }, 1070 1019 { "tas5721", (kernel_ulong_t) &tas5721_chip }, 1071 1020 { "tas5733", (kernel_ulong_t) &tas5733_chip }, 1021 + { "tas5753", (kernel_ulong_t) &tas5753_chip }, 1072 1022 { } 1073 1023 }; 1074 1024 MODULE_DEVICE_TABLE(i2c, tas571x_i2c_id);