Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp1841384pxk; Fri, 4 Sep 2020 23:24:51 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx7pnbMdEGdeQoD672CT97uxm6tlmNEf0dr9RznFOa/g7FuSi3OvhppHq7XhkyoTzZAnOPL X-Received: by 2002:a17:906:c108:: with SMTP id do8mr11584874ejc.88.1599287091143; Fri, 04 Sep 2020 23:24:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1599287091; cv=none; d=google.com; s=arc-20160816; b=IPZm/80739vAmmvLhtkoDG8AkU96qS4gbaraKcB7JDiwMxz61fKrCBZ5/4aWaRNP0/ lOihav5+DLrdf9wiBkoIogyevDfsPIfp/Ga01qXbliEy5J0TmmRfYcFJ+VoCBYZJRFYC 4eMeRS0XXzKfs3nxY6S8apF7+XkHLFF+39JD+9UnvCljsYNrFPerLRODAj7kdAmP0IXL +xtwDZ2X08s1r8rjWKBRD7ohoYfL+KMiLuBW6Bkl3V4HnfdvHPxXNxrmuijbDVuil3hT hbfHWLFh2wQHJC1iYm7h+zXJvegma12XE+9pTIB6fXBaNpkWRN9FQwTsA74HQmWHJf4o DJ6A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:ironport-sdr:ironport-sdr; bh=1A8hIrVtFGOkigkIM+FAXXi1693fmKeoyoMvCzsLS0M=; b=feakaonmmc4YGc5YRgzooiAPoi3yZnHzMPy4gUS7cHeoOgG66VNwgxmYrbpXMw83+k zrsEzn6RphWD3YMntBekAdhCqEws75ciAaDO5QD9lz2UYAU8AqZurCgXIsUSC5L+Y6BB lObE6Tm8D0Y6VvKoVRZ+Fu6Cr7bh985GPGBs/kCAY9jRvZxa5W4KnOThktpeXqjTd+HO RToP5CB0HkW7gRr5Gdv132JRCTgIBlmnTTaRw9PE8yuaE/jDP3uyNCNEDUBWJLxEKtiS apEpfrGCGGEhz1JDm2C2fUp6CiFxXr58RIEHC4n92sh50vZp8aztpZKkKueyg/FEZJCm 5EWA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id p21si6152041eds.193.2020.09.04.23.24.27; Fri, 04 Sep 2020 23:24:51 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726591AbgIEGWu (ORCPT + 99 others); Sat, 5 Sep 2020 02:22:50 -0400 Received: from mga18.intel.com ([134.134.136.126]:49017 "EHLO mga18.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725818AbgIEGWr (ORCPT ); Sat, 5 Sep 2020 02:22:47 -0400 IronPort-SDR: RgrzOvcj1yP7vSJT2KuyTJRdrr7kajnjOnQS/ZPVqUE46qPT+z6324vbSEktwusTdiBENqkg2C WmVczhTjrtUQ== X-IronPort-AV: E=McAfee;i="6000,8403,9734"; a="145547457" X-IronPort-AV: E=Sophos;i="5.76,392,1592895600"; d="scan'208";a="145547457" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Sep 2020 23:22:46 -0700 IronPort-SDR: ATvgoeK3s45v3klQwWamjpUY5jZIiLhuha56xc2LSvQBhwgu9hDT1CtR1kWCqG7o5V/7NmbQxo zw7F2tXYN5gw== X-IronPort-AV: E=Sophos;i="5.76,392,1592895600"; d="scan'208";a="478804281" Received: from bard-ubuntu.sh.intel.com ([10.239.13.33]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Sep 2020 23:22:43 -0700 From: Bard Liao To: alsa-devel@alsa-project.org, vkoul@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, tiwai@suse.de, broonie@kernel.org, gregkh@linuxfoundation.org, jank@cadence.com, srinivas.kandagatla@linaro.org, rander.wang@linux.intel.com, ranjani.sridharan@linux.intel.com, hui.wang@canonical.com, pierre-louis.bossart@linux.intel.com, sanyog.r.kale@intel.com, mengdong.lin@intel.com, bard.liao@intel.com Subject: [PATCH v3 2/3] ASoC: Intel: sof_sdw: add dailink .trigger callback Date: Sat, 5 Sep 2020 02:28:53 +0800 Message-Id: <20200904182854.3944-3-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200904182854.3944-1-yung-chuan.liao@linux.intel.com> References: <20200904182854.3944-1-yung-chuan.liao@linux.intel.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Pierre-Louis Bossart Add trigger functionality to dailink, so far only .startup() and .shutdown() were implemented at the machine driver level. The companion patch for this patch is the removal of the trigger callback at the DAI level in drivers/soundwire/intel.c Signed-off-by: Pierre-Louis Bossart Reviewed-by: Rander Wang Signed-off-by: Bard Liao --- sound/soc/intel/boards/sof_sdw.c | 41 ++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/sound/soc/intel/boards/sof_sdw.c b/sound/soc/intel/boards/sof_sdw.c index 2463d432bf4d..f251e046d74d 100644 --- a/sound/soc/intel/boards/sof_sdw.c +++ b/sound/soc/intel/boards/sof_sdw.c @@ -195,6 +195,46 @@ int sdw_startup(struct snd_pcm_substream *substream) return sdw_startup_stream(substream); } +static int sdw_trigger(struct snd_pcm_substream *substream, int cmd) +{ + struct snd_soc_pcm_runtime *rtd = asoc_substream_to_rtd(substream); + struct sdw_stream_runtime *sdw_stream; + struct snd_soc_dai *dai; + int ret; + + /* Find stream from first CPU DAI */ + dai = asoc_rtd_to_cpu(rtd, 0); + + sdw_stream = snd_soc_dai_get_sdw_stream(dai, substream->stream); + + if (IS_ERR(sdw_stream)) { + dev_err(rtd->dev, "no stream found for DAI %s", dai->name); + return PTR_ERR(sdw_stream); + } + + switch (cmd) { + case SNDRV_PCM_TRIGGER_START: + case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: + case SNDRV_PCM_TRIGGER_RESUME: + ret = sdw_enable_stream(sdw_stream); + break; + + case SNDRV_PCM_TRIGGER_PAUSE_PUSH: + case SNDRV_PCM_TRIGGER_SUSPEND: + case SNDRV_PCM_TRIGGER_STOP: + ret = sdw_disable_stream(sdw_stream); + break; + default: + ret = -EINVAL; + break; + } + + if (ret) + dev_err(rtd->dev, "%s trigger %d failed: %d", __func__, cmd, ret); + + return ret; +} + void sdw_shutdown(struct snd_pcm_substream *substream) { sdw_shutdown_stream(substream); @@ -202,6 +242,7 @@ void sdw_shutdown(struct snd_pcm_substream *substream) static const struct snd_soc_ops sdw_ops = { .startup = sdw_startup, + .trigger = sdw_trigger, .shutdown = sdw_shutdown, }; -- 2.17.1