All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Rojewski, Cezary" <cezary.rojewski@intel.com>
To: "alsa-devel@alsa-project.org" <alsa-devel@alsa-project.org>,
	"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>
Cc: "pierre-louis.bossart@linux.intel.com"
	<pierre-louis.bossart@linux.intel.com>,
	"andriy.shevchenko@linux.intel.com"
	<andriy.shevchenko@linux.intel.com>,
	"Kaczmarski, Filip" <filip.kaczmarski@intel.com>,
	"N, Harshapriya" <harshapriya.n@intel.com>,
	"Barlik, Marcin" <marcin.barlik@intel.com>,
	"zwisler@google.com" <zwisler@google.com>,
	"lgirdwood@gmail.com" <lgirdwood@gmail.com>,
	"tiwai@suse.com" <tiwai@suse.com>,
	"Proborszcz, Filip" <filip.proborszcz@intel.com>,
	"broonie@kernel.org" <broonie@kernel.org>,
	"amadeuszx.slawinski@linux.intel.com"
	<amadeuszx.slawinski@linux.intel.com>,
	"Wasko, Michal" <michal.wasko@intel.com>,
	"cujomalainey@chromium.org" <cujomalainey@chromium.org>,
	"Hejmowski, Krzysztof" <krzysztof.hejmowski@intel.com>,
	"Papierkowski, Piotr \(Habana\)" <ppapierkowski@habana.ai>,
	"Gopal,  Vamshi Krishna" <vamshi.krishna.gopal@intel.com>
Subject: RE: [PATCH v6 09/14] ASoC: Intel: catpt: Simple sysfs attributes
Date: Fri, 18 Sep 2020 15:22:13 +0000	[thread overview]
Message-ID: <8edff9bc51ea441dac454cbb6869317f@intel.com> (raw)
In-Reply-To: <20200917141242.9081-10-cezary.rojewski@intel.com>

On 2020-09-17 4:12 PM, Cezary Rojewski wrote:
> Add sysfs entries for displaying version of FW currently in use as well
> as binary dump of entire version info, including build and log providers
> hashes.
> 
> Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
> ---
> 
> Changes in v6:
> - functions declaration and usage now part of this patch instead of
>    being separated from it
> 
> Changes in v2:
> - fixed size provided to memcpy() in fw_build_read() as reported by Mark
> 

+Greg KH

Greg, would you mind taking a look at these sysfs entries added for new
catpt driver (Audio DSP driver for Haswell and Broadwell machines)?

Link to opening post for the series:
[PATCH v6 00/14] ASoC: Intel: Catpt - Lynx and Wildcat point
https://www.spinics.net/lists/alsa-devel/msg115765.html

Let me give you a quick introduction to the catpt's fs code:
During power-up sequence a handshake is made between host (kernel device
driver) and DSP (firmware) side. Two sysfs entries are generated which
expose running DSP firmware version and its build info - information
obtained during said handshake.

Much like devices (such as those of PCI-type) expose sysfs entries for
their easy identification, catpt provides entries to identify DSP FW it
is dealing with.

Thanks,
Czarek

>   sound/soc/intel/catpt/core.h   |  3 ++
>   sound/soc/intel/catpt/device.c |  6 +++
>   sound/soc/intel/catpt/fs.c     | 79 ++++++++++++++++++++++++++++++++++
>   3 files changed, 88 insertions(+)
>   create mode 100644 sound/soc/intel/catpt/fs.c
> 
> diff --git a/sound/soc/intel/catpt/core.h b/sound/soc/intel/catpt/core.h
> index a29b4c0232cb..1f0f1ac92341 100644
> --- a/sound/soc/intel/catpt/core.h
> +++ b/sound/soc/intel/catpt/core.h
> @@ -155,6 +155,9 @@ int catpt_store_module_states(struct catpt_dev *cdev, struct dma_chan *chan);
>   int catpt_store_memdumps(struct catpt_dev *cdev, struct dma_chan *chan);
>   int catpt_coredump(struct catpt_dev *cdev);
>   
> +int catpt_sysfs_create(struct catpt_dev *cdev);
> +void catpt_sysfs_remove(struct catpt_dev *cdev);
> +
>   #include <sound/memalloc.h>
>   #include <uapi/sound/asound.h>
>   
> diff --git a/sound/soc/intel/catpt/device.c b/sound/soc/intel/catpt/device.c
> index 7c7ddbabaf55..e9b7c1f474e0 100644
> --- a/sound/soc/intel/catpt/device.c
> +++ b/sound/soc/intel/catpt/device.c
> @@ -184,6 +184,10 @@ static int catpt_probe_components(struct catpt_dev *cdev)
>   		goto board_err;
>   	}
>   
> +	ret = catpt_sysfs_create(cdev);
> +	if (ret)
> +		goto board_err;
> +
>   	/* reflect actual ADSP state in pm_runtime */
>   	pm_runtime_set_active(cdev->dev);
>   
> @@ -292,6 +296,8 @@ static int catpt_acpi_remove(struct platform_device *pdev)
>   	catpt_sram_free(&cdev->iram);
>   	catpt_sram_free(&cdev->dram);
>   
> +	catpt_sysfs_remove(cdev);
> +
>   	return 0;
>   }
>   
> diff --git a/sound/soc/intel/catpt/fs.c b/sound/soc/intel/catpt/fs.c
> new file mode 100644
> index 000000000000..d73493687f4a
> --- /dev/null
> +++ b/sound/soc/intel/catpt/fs.c
> @@ -0,0 +1,79 @@
> +// SPDX-License-Identifier: GPL-2.0-pcm
> +//
> +// Copyright(c) 2020 Intel Corporation. All rights reserved.
> +//
> +// Author: Cezary Rojewski <cezary.rojewski@intel.com>
> +//
> +
> +#include <linux/pm_runtime.h>
> +#include "core.h"
> +
> +static ssize_t fw_version_show(struct device *dev,
> +			       struct device_attribute *attr, char *buf)
> +{
> +	struct catpt_dev *cdev = dev_get_drvdata(dev);
> +	struct catpt_fw_version version;
> +	int ret;
> +
> +	pm_runtime_get_sync(cdev->dev);
> +
> +	ret = catpt_ipc_get_fw_version(cdev, &version);
> +
> +	pm_runtime_mark_last_busy(cdev->dev);
> +	pm_runtime_put_autosuspend(cdev->dev);
> +
> +	if (ret)
> +		return CATPT_IPC_ERROR(ret);
> +
> +	return sprintf(buf, "%d.%d.%d.%d\n", version.type, version.major,
> +		       version.minor, version.build);
> +}
> +
> +static DEVICE_ATTR_RO(fw_version);
> +
> +static ssize_t fw_build_read(struct file *filp, struct kobject *kobj,
> +			     struct bin_attribute *bin_attr, char *buf,
> +			     loff_t off, size_t count)
> +{
> +	struct catpt_dev *cdev = dev_get_drvdata(kobj_to_dev(kobj));
> +	struct catpt_fw_version version;
> +	int ret;
> +
> +	pm_runtime_get_sync(cdev->dev);
> +
> +	ret = catpt_ipc_get_fw_version(cdev, &version);
> +
> +	pm_runtime_mark_last_busy(cdev->dev);
> +	pm_runtime_put_autosuspend(cdev->dev);
> +
> +	if (ret)
> +		return CATPT_IPC_ERROR(ret);
> +
> +	memcpy(buf, &version, sizeof(version));
> +	return count;
> +}
> +
> +static BIN_ATTR_RO(fw_build, sizeof(struct catpt_fw_version));
> +
> +int catpt_sysfs_create(struct catpt_dev *cdev)
> +{
> +	int ret;
> +
> +	ret = sysfs_create_file(&cdev->dev->kobj, &dev_attr_fw_version.attr);
> +	if (ret)
> +		return ret;
> +
> +	ret = sysfs_create_bin_file(&cdev->dev->kobj, &bin_attr_fw_build);
> +	if (ret) {
> +		sysfs_remove_file(&cdev->dev->kobj, &dev_attr_fw_version.attr);
> +		return ret;
> +	}
> +
> +	return 0;
> +}
> +
> +void catpt_sysfs_remove(struct catpt_dev *cdev)
> +{
> +	sysfs_remove_bin_file(&cdev->dev->kobj, &bin_attr_fw_build);
> +	sysfs_remove_file(&cdev->dev->kobj, &dev_attr_fw_version.attr);
> +}
>

  reply	other threads:[~2020-09-18 15:23 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-17 14:12 [PATCH v6 00/14] ASoC: Intel: Catpt - Lynx and Wildcat point Cezary Rojewski
2020-09-17 14:12 ` [PATCH v6 01/14] ASoC: Intel: Add catpt base members Cezary Rojewski
2020-09-17 14:12 ` [PATCH v6 02/14] ASoC: Intel: catpt: Implement IPC protocol Cezary Rojewski
2020-09-17 14:12 ` [PATCH v6 03/14] ASoC: Intel: catpt: Add IPC message handlers Cezary Rojewski
2020-09-17 14:12 ` [PATCH v6 04/14] ASoC: Intel: catpt: Define DSP operations Cezary Rojewski
2020-09-17 14:12 ` [PATCH v6 05/14] ASoC: Intel: catpt: Firmware loading and context restore Cezary Rojewski
2020-09-17 14:12 ` [PATCH v6 06/14] ASoC: Intel: catpt: PCM operations Cezary Rojewski
2020-09-17 14:12 ` [PATCH v6 07/14] ASoC: Intel: catpt: Device driver lifecycle Cezary Rojewski
2020-09-17 14:12 ` [PATCH v6 08/14] ASoC: Intel: catpt: Event tracing Cezary Rojewski
2020-09-17 14:12 ` [PATCH v6 09/14] ASoC: Intel: catpt: Simple sysfs attributes Cezary Rojewski
2020-09-18 15:22   ` Rojewski, Cezary [this message]
2020-09-19 14:42     ` gregkh
2020-09-20 17:03       ` Rojewski, Cezary
2020-09-21  8:09         ` andriy.shevchenko
2020-09-21  8:35         ` gregkh
2020-09-21 21:13           ` Rojewski, Cezary
2020-09-17 14:12 ` [PATCH v6 10/14] ASoC: Intel: Select catpt and deprecate haswell Cezary Rojewski
2020-09-17 14:12 ` [PATCH v6 11/14] ASoC: Intel: haswell: Remove haswell-solution specific code Cezary Rojewski
2020-09-17 14:12 ` [PATCH v6 12/14] ASoC: Intel: broadwell: " Cezary Rojewski
2020-09-17 14:12 ` [PATCH v6 13/14] ASoC: Intel: bdw-5650: " Cezary Rojewski
2020-09-17 14:12 ` [PATCH v6 14/14] ASoC: Intel: bdw-5677: " Cezary Rojewski
2020-09-17 14:57 ` [PATCH v6 00/14] ASoC: Intel: Catpt - Lynx and Wildcat point Andy Shevchenko
2020-09-17 15:52   ` Rojewski, Cezary
2020-09-18 13:55 ` Andy Shevchenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8edff9bc51ea441dac454cbb6869317f@intel.com \
    --to=cezary.rojewski@intel.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=amadeuszx.slawinski@linux.intel.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=broonie@kernel.org \
    --cc=cujomalainey@chromium.org \
    --cc=filip.kaczmarski@intel.com \
    --cc=filip.proborszcz@intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=harshapriya.n@intel.com \
    --cc=krzysztof.hejmowski@intel.com \
    --cc=lgirdwood@gmail.com \
    --cc=marcin.barlik@intel.com \
    --cc=michal.wasko@intel.com \
    --cc=pierre-louis.bossart@linux.intel.com \
    --cc=ppapierkowski@habana.ai \
    --cc=tiwai@suse.com \
    --cc=vamshi.krishna.gopal@intel.com \
    --cc=zwisler@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.