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

ASoC: tas2781: Add tas2568/2574/5806m/5806md/5830 support

TAS5806M, TAS5806MD, TAS5830 has on-chip DSP without current/voltage
feedback, and in same family with TAS58XX.
TAS2568, TAS2574 is in family with TAS257X.

Signed-off-by: Baojun Xu <baojun.xu@ti.com>
Link: https://patch.msgid.link/20251117102153.30644-2-baojun.xu@ti.com
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Baojun Xu and committed by
Mark Brown
d5089fff bb52dc1d

+31 -3
+5
include/sound/tas2781.h
··· 117 117 TAS2120, 118 118 TAS2320, 119 119 TAS2563, 120 + TAS2568, 120 121 TAS2570, 121 122 TAS2572, 123 + TAS2574, 122 124 TAS2781, 123 125 TAS5802, 126 + TAS5806M, 127 + TAS5806MD, 124 128 TAS5815, 125 129 TAS5822, 126 130 TAS5825, 127 131 TAS5827, 128 132 TAS5828, 133 + TAS5830, 129 134 TAS_OTHERS, 130 135 }; 131 136
+26 -3
sound/soc/codecs/tas2781-i2c.c
··· 105 105 { "tas2120", TAS2120 }, 106 106 { "tas2320", TAS2320 }, 107 107 { "tas2563", TAS2563 }, 108 + { "tas2568", TAS2568 }, 108 109 { "tas2570", TAS2570 }, 109 110 { "tas2572", TAS2572 }, 111 + { "tas2574", TAS2574 }, 110 112 { "tas2781", TAS2781 }, 111 113 { "tas5802", TAS5802 }, 114 + { "tas5806m", TAS5806M }, 115 + { "tas5806md", TAS5806MD }, 112 116 { "tas5815", TAS5815 }, 113 117 { "tas5822", TAS5822 }, 114 118 { "tas5825", TAS5825 }, 115 119 { "tas5827", TAS5827 }, 116 120 { "tas5828", TAS5828 }, 121 + { "tas5830", TAS5830 }, 117 122 {} 118 123 }; 119 124 MODULE_DEVICE_TABLE(i2c, tasdevice_id); ··· 130 125 { .compatible = "ti,tas2120" }, 131 126 { .compatible = "ti,tas2320" }, 132 127 { .compatible = "ti,tas2563" }, 128 + { .compatible = "ti,tas2568" }, 133 129 { .compatible = "ti,tas2570" }, 134 130 { .compatible = "ti,tas2572" }, 131 + { .compatible = "ti,tas2574" }, 135 132 { .compatible = "ti,tas2781" }, 136 133 { .compatible = "ti,tas5802" }, 134 + { .compatible = "ti,tas5806m" }, 135 + { .compatible = "ti,tas5806md" }, 137 136 { .compatible = "ti,tas5815" }, 138 137 { .compatible = "ti,tas5822" }, 139 138 { .compatible = "ti,tas5825" }, 140 139 { .compatible = "ti,tas5827" }, 141 140 { .compatible = "ti,tas5828" }, 141 + { .compatible = "ti,tas5830" }, 142 142 {}, 143 143 }; 144 144 MODULE_DEVICE_TABLE(of, tasdevice_of_match); ··· 1653 1643 case TAS2118: 1654 1644 case TAS2120: 1655 1645 case TAS2320: 1646 + case TAS2568: 1656 1647 case TAS2570: 1657 1648 case TAS2572: 1649 + case TAS2574: 1658 1650 goto out; 1659 1651 } 1660 1652 if (tas_priv->name_prefix) ··· 1682 1670 } 1683 1671 tas_priv->fw_state = TASDEVICE_DSP_FW_ALL_OK; 1684 1672 1685 - /* There is no calibration required for 1686 - * TAS5802/TAS5815/TAS5822/TAS5825/TAS5827/TAS5828. 1687 - */ 1673 + /* There is no calibration required for TAS58XX. */ 1688 1674 if (tas_priv->chip_id < TAS5802) { 1689 1675 ret = tasdevice_create_cali_ctrls(tas_priv); 1690 1676 if (ret) { ··· 1738 1728 case TAS2563: 1739 1729 case TAS2781: 1740 1730 case TAS5802: 1731 + case TAS5806M: 1732 + case TAS5806MD: 1741 1733 case TAS5815: 1742 1734 case TAS5822: 1743 1735 case TAS5825: 1744 1736 case TAS5827: 1745 1737 case TAS5828: 1738 + case TAS5830: 1746 1739 /* If DSP FW fail, DSP kcontrol won't be created. */ 1747 1740 tasdevice_dsp_remove(tas_priv); 1748 1741 } ··· 1896 1883 case TAS2118: 1897 1884 case TAS2120: 1898 1885 case TAS2320: 1886 + case TAS2568: 1899 1887 case TAS2570: 1900 1888 case TAS2572: 1889 + case TAS2574: 1901 1890 p = (struct snd_kcontrol_new *)tas2x20_snd_controls; 1902 1891 size = ARRAY_SIZE(tas2x20_snd_controls); 1903 1892 tas_priv->dvc_tlv_table = tas2x20_dvc_table; ··· 1909 1894 size = ARRAY_SIZE(tas2781_snd_controls); 1910 1895 break; 1911 1896 case TAS5802: 1897 + case TAS5806M: 1898 + case TAS5806MD: 1912 1899 case TAS5815: 1913 1900 case TAS5822: 1914 1901 case TAS5825: 1915 1902 case TAS5827: 1916 1903 case TAS5828: 1904 + case TAS5830: 1917 1905 p = (struct snd_kcontrol_new *)tas5825_snd_controls; 1918 1906 size = ARRAY_SIZE(tas5825_snd_controls); 1919 1907 break; ··· 2090 2072 { "TXNW2120", TAS2120 }, 2091 2073 { "TXNW2320", TAS2320 }, 2092 2074 { "TXNW2563", TAS2563 }, 2075 + { "TXNW2568", TAS2568 }, 2093 2076 { "TXNW2570", TAS2570 }, 2094 2077 { "TXNW2572", TAS2572 }, 2078 + { "TXNW2574", TAS2574 }, 2095 2079 { "TXNW2781", TAS2781 }, 2096 2080 { "TXNW5802", TAS5802 }, 2081 + { "TXNW806M", TAS5806M }, 2082 + { "TXNW806D", TAS5806MD }, 2097 2083 { "TXNW5815", TAS5815 }, 2098 2084 { "TXNW5822", TAS5822 }, 2099 2085 { "TXNW5825", TAS5825 }, 2100 2086 { "TXNW5827", TAS5827 }, 2101 2087 { "TXNW5828", TAS5828 }, 2088 + { "TXNW5830", TAS5830 }, 2102 2089 {}, 2103 2090 }; 2104 2091