huangcm
2025-04-26 bff3d3009b0d3a2be3ed92e4817fcabee9e76955
feat(audio): fix audio pop pro
4 files modified
44 ■■■■■ changed files
android/device/softwinner/ceres-common/configs/ceres_volume_tables.xml 4 ●●● patch | view | raw | blame | history
longan/device/config/chips/a133/configs/c3/kickpi-k5.dts 14 ●●●● patch | view | raw | blame | history
longan/device/config/chips/a133/configs/c3/kickpi-k5c.dts 14 ●●●● patch | view | raw | blame | history
longan/kernel/linux-4.9/sound/soc/sunxi/sun50iw10-codec.c 12 ●●●●● patch | view | raw | blame | history
android/device/softwinner/ceres-common/configs/ceres_volume_tables.xml
....@@ -38,9 +38,7 @@
3838 <point>33,-5000</point>
3939 <point>66,-3000</point>
4040 <point>100,0</point> -->
41
- <point>1,-4000</point>
42
- <point>33,-3000</point>
43
- <point>66,-1700</point>
41
+ <point>1,-3500</point>
4442 <point>100,0</point>
4543 </reference>
4644 <reference name="DEFAULT_DEVICE_CATEGORY_HEADSET_VOLUME_CURVE">
longan/device/config/chips/a133/configs/c3/kickpi-k5.dts
....@@ -991,9 +991,9 @@
991991 lineout_vol = <0x1a>;
992992 headphonegain = <0x00>;
993993 /* Pa enabled about */
994
- pa_level = <0x00>;
994
+ pa_level = <0x01>;
995995 pa_msleep_time = <0x78>;
996
- //gpio-spk = <&pio PB 7 1 1 1 1>;
996
+ gpio-spk = <&pio PB 7 1 1 1 1>;
997997 /* regulator about */
998998 avcc-supply = <&reg_aldo1>;
999999 cpvin-supply = <&reg_eldo1>;
....@@ -1361,11 +1361,11 @@
13611361 linux,default_trigger = "heartbeat";
13621362 };
13631363
1364
- spk_en {
1365
- label = "spk_en";
1366
- gpios = <&pio PB 7 1 0 1 0>;
1367
- linux,default_trigger = "default-on";
1368
- };
1364
+ // spk_en {
1365
+ // label = "spk_en";
1366
+ // gpios = <&pio PB 7 1 0 1 0>;
1367
+ // linux,default_trigger = "default-on";
1368
+ // };
13691369
13701370 fan_en {
13711371 label = "fan_en";
longan/device/config/chips/a133/configs/c3/kickpi-k5c.dts
....@@ -972,9 +972,9 @@
972972 lineout_vol = <0x1a>;
973973 headphonegain = <0x00>;
974974 /* Pa enabled about */
975
- pa_level = <0x00>;
975
+ pa_level = <0x01>;
976976 pa_msleep_time = <0x78>;
977
- //gpio-spk = <&pio PB 7 1 1 1 1>;
977
+ gpio-spk = <&pio PB 7 1 1 1 1>;
978978 /* regulator about */
979979 avcc-supply = <&reg_aldo1>;
980980 cpvin-supply = <&reg_eldo1>;
....@@ -1346,11 +1346,11 @@
13461346 linux,default_trigger = "heartbeat";
13471347 };
13481348
1349
- spk_en {
1350
- label = "spk_en";
1351
- gpios = <&pio PB 7 1 0 1 0>;
1352
- linux,default_trigger = "default-on";
1353
- };
1349
+ // spk_en {
1350
+ // label = "spk_en";
1351
+ // gpios = <&pio PB 7 1 0 1 0>;
1352
+ // linux,default_trigger = "default-on";
1353
+ // };
13541354
13551355 fan_en {
13561356 label = "fan_en";
longan/kernel/linux-4.9/sound/soc/sunxi/sun50iw10-codec.c
....@@ -888,7 +888,7 @@
888888 0xFF, 0, adc_vol_tlv),
889889 /* Headphone Gain */
890890 SOC_SINGLE_TLV("headphone gain", SUNXI_DAC_REG, HEADPHONE_GAIN,
891
- 0x7, 1, headphone_gain_tlv),
891
+ 0x0, 1, headphone_gain_tlv),
892892
893893 SOC_SINGLE_BOOL_EXT("audiocodec rx_sync switch", 0,
894894 sunxi_codec_rx_sync_get_data, sunxi_codec_rx_sync_put_data),
....@@ -1333,6 +1333,7 @@
13331333 int cmd, struct snd_soc_dai *dai)
13341334 {
13351335 struct sunxi_codec_info *sunxi_codec = snd_soc_codec_get_drvdata(dai->codec);
1336
+ struct codec_spk_config *spk_cfg = &(sunxi_codec->spk_config);
13361337
13371338 switch (cmd) {
13381339 case SNDRV_PCM_TRIGGER_START:
....@@ -1347,10 +1348,19 @@
13471348 if (sunxi_codec->rx_sync_en)
13481349 sunxi_rx_sync_control(RX_SYNC_AUDIOCODEC, 1);
13491350 }
1351
+
1352
+ if (spk_cfg->used) {
1353
+ gpio_set_value(spk_cfg->spk_gpio, spk_cfg->pa_level);
1354
+ /* time delay to wait spk pa work fine */
1355
+ // msleep(spk_cfg->pa_msleep);
1356
+ }
13501357 break;
13511358 case SNDRV_PCM_TRIGGER_STOP:
13521359 case SNDRV_PCM_TRIGGER_SUSPEND:
13531360 case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
1361
+ if (spk_cfg->used)
1362
+ gpio_set_value(spk_cfg->spk_gpio, !(spk_cfg->pa_level));
1363
+
13541364 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
13551365 regmap_update_bits(sunxi_codec->regmap, SUNXI_DAC_FIFOC,
13561366 (1 << DAC_DRQ_EN), (0 << DAC_DRQ_EN));