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

ALSA: hda: cs35l41: Remove unnecessary boolean state variable firmware_running

This state duplicates the running state inside cs_dsp, so is not necessary.
Remove it, and use cs_dsp.running instead.
This brings the CS35L41 HDA driver more inline with its ASoC version,
allowing the same state to be used when calling library functions.

Fixes: fa3efcc36aac ("ALSA: cs35l41: Use mbox command to enable speaker output for external boost")
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20231117163609.823627-2-sbinding@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>

authored by

Stefan Binding and committed by
Takashi Iwai
37f67abe 7c9caa29

+12 -16
+12 -16
sound/pci/hda/cs35l41_hda.c
··· 504 504 505 505 cs_dsp_stop(dsp); 506 506 cs_dsp_power_down(dsp); 507 - cs35l41->firmware_running = false; 508 507 dev_dbg(cs35l41->dev, "Unloaded Firmware\n"); 509 508 } 510 509 ··· 549 550 550 551 cs35l41->playback_started = true; 551 552 552 - if (cs35l41->firmware_running) { 553 + if (cs35l41->cs_dsp.running) { 553 554 regmap_multi_reg_write(reg, cs35l41_hda_config_dsp, 554 555 ARRAY_SIZE(cs35l41_hda_config_dsp)); 555 556 regmap_update_bits(reg, CS35L41_PWR_CTRL2, ··· 579 580 regmap_multi_reg_write(reg, cs35l41_hda_mute, ARRAY_SIZE(cs35l41_hda_mute)); 580 581 } else { 581 582 dev_dbg(dev, "Unmuting\n"); 582 - if (cs35l41->firmware_running) { 583 + if (cs35l41->cs_dsp.running) { 583 584 regmap_multi_reg_write(reg, cs35l41_hda_unmute_dsp, 584 585 ARRAY_SIZE(cs35l41_hda_unmute_dsp)); 585 586 } else { ··· 598 599 dev_dbg(dev, "Play (Complete)\n"); 599 600 600 601 cs35l41_global_enable(dev, reg, cs35l41->hw_cfg.bst_type, 1, 601 - cs35l41->firmware_running); 602 + cs35l41->cs_dsp.running); 602 603 cs35l41_mute(dev, false); 603 604 } 604 605 ··· 611 612 612 613 cs35l41_mute(dev, true); 613 614 cs35l41_global_enable(dev, reg, cs35l41->hw_cfg.bst_type, 0, 614 - cs35l41->firmware_running); 615 + cs35l41->cs_dsp.running); 615 616 } 616 617 617 618 static void cs35l41_hda_pause_done(struct device *dev) ··· 624 625 regmap_update_bits(reg, CS35L41_PWR_CTRL2, CS35L41_AMP_EN_MASK, 0 << CS35L41_AMP_EN_SHIFT); 625 626 if (cs35l41->hw_cfg.bst_type == CS35L41_EXT_BOOST) 626 627 regmap_write(reg, CS35L41_GPIO1_CTRL1, 0x00000001); 627 - if (cs35l41->firmware_running) { 628 + if (cs35l41->cs_dsp.running) { 628 629 cs35l41_set_cspl_mbox_cmd(dev, reg, CSPL_MBOX_CMD_PAUSE); 629 630 regmap_update_bits(reg, CS35L41_PWR_CTRL2, 630 631 CS35L41_VMON_EN_MASK | CS35L41_IMON_EN_MASK, ··· 674 675 break; 675 676 case HDA_GEN_PCM_ACT_CLOSE: 676 677 mutex_lock(&cs35l41->fw_mutex); 677 - if (!cs35l41->firmware_running && cs35l41->request_fw_load && 678 + if (!cs35l41->cs_dsp.running && cs35l41->request_fw_load && 678 679 !cs35l41->fw_request_ongoing) { 679 680 dev_info(dev, "Requesting Firmware Load after HDA_GEN_PCM_ACT_CLOSE\n"); 680 681 cs35l41->fw_request_ongoing = true; ··· 760 761 static int cs35l41_ready_for_reset(struct cs35l41_hda *cs35l41) 761 762 { 762 763 mutex_lock(&cs35l41->fw_mutex); 763 - if (cs35l41->firmware_running) { 764 + if (cs35l41->cs_dsp.running) { 764 765 cs35l41->cs_dsp.running = false; 765 766 cs35l41->cs_dsp.booted = false; 766 - cs35l41->firmware_running = false; 767 767 } 768 768 regcache_mark_dirty(cs35l41->regmap); 769 769 mutex_unlock(&cs35l41->fw_mutex); ··· 923 925 924 926 mutex_lock(&cs35l41->fw_mutex); 925 927 926 - if (cs35l41->firmware_running) { 928 + if (cs35l41->cs_dsp.running) { 927 929 ret = cs35l41_enter_hibernate(cs35l41->dev, cs35l41->regmap, 928 930 cs35l41->hw_cfg.bst_type); 929 931 if (ret) ··· 958 960 959 961 regcache_cache_only(cs35l41->regmap, false); 960 962 961 - if (cs35l41->firmware_running) { 963 + if (cs35l41->cs_dsp.running) { 962 964 ret = cs35l41_exit_hibernate(cs35l41->dev, cs35l41->regmap); 963 965 if (ret) { 964 966 dev_warn(cs35l41->dev, "Unable to exit Hibernate."); ··· 1050 1052 goto clean_dsp; 1051 1053 } 1052 1054 1053 - cs35l41->firmware_running = true; 1054 - 1055 1055 return 0; 1056 1056 1057 1057 clean_dsp: ··· 1059 1063 1060 1064 static void cs35l41_load_firmware(struct cs35l41_hda *cs35l41, bool load) 1061 1065 { 1062 - if (cs35l41->firmware_running && !load) { 1066 + if (cs35l41->cs_dsp.running && !load) { 1063 1067 dev_dbg(cs35l41->dev, "Unloading Firmware\n"); 1064 1068 cs35l41_shutdown_dsp(cs35l41); 1065 - } else if (!cs35l41->firmware_running && load) { 1069 + } else if (!cs35l41->cs_dsp.running && load) { 1066 1070 dev_dbg(cs35l41->dev, "Loading Firmware\n"); 1067 1071 cs35l41_smart_amp(cs35l41); 1068 1072 } else { ··· 1342 1346 cs35l41->acpi_subsystem_id, cs35l41->hw_cfg.bst_type, 1343 1347 cs35l41->hw_cfg.gpio1.func == CS35l41_VSPK_SWITCH, 1344 1348 cs35l41->hw_cfg.spk_pos ? 'R' : 'L', 1345 - cs35l41->firmware_running, cs35l41->speaker_id); 1349 + cs35l41->cs_dsp.running, cs35l41->speaker_id); 1346 1350 1347 1351 return ret; 1348 1352 }