public inbox for linux-omap@vger.kernel.org
 help / color / mirror / Atom feed
From: Nishanth Menon <nm@ti.com>
To: "Ramirez Luna, Omar" <omar.ramirez@ti.com>
Cc: linux-omap <linux-omap@vger.kernel.org>,
	Hiroshi Doyu <Hiroshi.DOYU@nokia.com>,
	Ameya Palande <ameya.palande@nokia.com>,
	Felipe Contreras <felipe.contreras@nokia.com>,
	"Guzman Lugo, Fernando" <x0095840@ti.com>,
	"Ramos Falcon, Ernesto" <ernesto@ti.com>
Subject: Re: [PATCH 2/8] DSPBRIDGE: sysfs entry for global driver state
Date: Thu, 7 Jan 2010 20:17:26 -0600	[thread overview]
Message-ID: <4B4695B6.1010305@ti.com> (raw)
In-Reply-To: <1262912431-29999-1-git-send-email-omar.ramirez@ti.com>

Ramirez Luna, Omar had written, on 01/07/2010 07:00 PM, the following:
> This patch creates a new sysfs entry to query the driver
> state without making any bridge direct call, this is
> useful to monitor driver state without creating any handle
> to bridge driver.
why sysfs and not debugfs considering that this is a debug feature?

this in my mind is a useful feature, no question, but I wonder if this 
is a feature we might want to expand upon and allow for user space 
applications to show beyond the basic run levels - show loading level(as 
an example) thru the same interface?? just my 2 cents..

> 
> Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
> ---
>  drivers/dsp/bridge/rmgr/drv_interface.c |   87 +++++++++++++++++++++++++++++++
>  1 files changed, 87 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/dsp/bridge/rmgr/drv_interface.c b/drivers/dsp/bridge/rmgr/drv_interface.c
> index c853854..3a4d058 100644
> --- a/drivers/dsp/bridge/rmgr/drv_interface.c
> +++ b/drivers/dsp/bridge/rmgr/drv_interface.c
> @@ -58,11 +58,13 @@
>  #include <linux/init.h>
>  #include <linux/moduleparam.h>
>  #include <linux/cdev.h>
> +#include <linux/kobject.h>
>  
>  /*  ----------------------------------- DSP/BIOS Bridge */
>  #include <dspbridge/std.h>
>  #include <dspbridge/dbdefs.h>
>  #include <dspbridge/errbase.h>
> +#include <_tiomap.h>
>  
>  /*  ----------------------------------- Trace & Debug */
>  #include <dspbridge/gt.h>
> @@ -148,6 +150,10 @@ static int omap34xxbridge_suspend_lockout(
>  }
>  #endif
>  
> +/* Sysfs interface */
> +static void bridge_create_sysfs(struct platform_device *pdev);
> +static void bridge_destroy_sysfs(struct platform_device *pdev);
> +
>  #ifdef DEBUG
>  module_param(GT_str, charp, 0);
>  MODULE_PARM_DESC(GT_str, "GT string, default = NULL");
> @@ -297,6 +303,9 @@ static int __devinit omap34xx_bridge_probe(struct platform_device *pdev)
>  	device_create(bridge_class, NULL, MKDEV(driver_major, driver_minor),
>  			NULL, "DspBridge");
>  
> +	/* Create sysfs interface */
> +	bridge_create_sysfs(pdev);
> +
>  	GT_init();
>  	GT_create(&driverTrace, "LD");
>  
> @@ -454,6 +463,9 @@ func_cont:
>  	SERVICES_Exit();
>  	GT_exit();
>  
> +	/* Remove driver sysfs entries */
> +	bridge_destroy_sysfs(pdev);
> +
>  	devno = MKDEV(driver_major, driver_minor);
>  	if (bridge_device) {
>  		cdev_del(&bridge_device->cdev);
> @@ -677,6 +689,81 @@ DSP_STATUS DRV_RemoveAllResources(HANDLE hPCtxt)
>  }
>  #endif
>  
> +/*
> + * Sysfs

huh?

> + */
> +static ssize_t drv_state_show(struct device *dev, struct device_attribute *attr,
> +				char *buf)
> +{
> +	struct WMD_DEV_CONTEXT *dev_ctxt;
> +	struct DEV_OBJECT *dev_obj = NULL;
> +	char *drv_state = "unknown";
> +
> +	dev_obj = (struct DEV_OBJECT *)DRV_GetFirstDevObject();
> +	DEV_GetWMDContext(dev_obj, &dev_ctxt);
> +
> +	if (!dev_ctxt)
> +		goto err;
> +
> +	switch (dev_ctxt->dwBrdState) {
> +	case BRD_STOPPED:
> +		drv_state = "stopped";
> +		break;
> +	case BRD_IDLE:
> +		drv_state = "idle";
> +		break;
> +	case BRD_RUNNING:
> +		drv_state = "running";
> +		break;
> +	case BRD_LOADED:
> +		drv_state = "loaded";
> +		break;
> +	case BRD_SLEEP_TRANSITION:
> +		drv_state = "sleep transition";
> +		break;
> +	case BRD_HIBERNATION:
> +		drv_state = "hibernation";
> +		break;
> +	case BRD_RETENTION:
> +		drv_state = "retention";
> +		break;
> +	case BRD_DSP_HIBERNATION:
> +		drv_state = "self initiated hibernation";
> +		break;
> +	case BRD_ERROR:
> +		drv_state = "error";
> +		break;
default?

> +	}
> +
> +err:
> +	return sprintf(buf, "%s\n", drv_state);
> +}
> +static DEVICE_ATTR(drv_state, S_IRUGO, drv_state_show, NULL);
> +
> +static struct attribute *attrs[] = {
> +	&dev_attr_drv_state.attr,
> +	NULL,
> +};
> +
> +static struct attribute_group attr_group = {
> +	.attrs = attrs,
> +};
> +
> +static void bridge_create_sysfs(struct platform_device *pdev)
> +{
> +	int error;
> +
> +	error = sysfs_create_group(&pdev->dev.kobj, &attr_group);
> +
> +	if (error)
> +		kobject_put(&pdev->dev.kobj);
> +}
> +
> +static void bridge_destroy_sysfs(struct platform_device *pdev)
> +{
> +	sysfs_remove_group(&pdev->dev.kobj, &attr_group);
> +}
> +
>  /* Bridge driver initialization and de-initialization functions */
>  module_init(bridge_init);
>  module_exit(bridge_exit);


-- 
Regards,
Nishanth Menon

  reply	other threads:[~2010-01-08  2:17 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-08  1:00 [PATCH 2/8] DSPBRIDGE: sysfs entry for global driver state Omar Ramirez Luna
2010-01-08  2:17 ` Nishanth Menon [this message]
2010-01-08 16:19   ` Ramirez Luna, Omar
2010-01-08 16:25     ` Nishanth Menon

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=4B4695B6.1010305@ti.com \
    --to=nm@ti.com \
    --cc=Hiroshi.DOYU@nokia.com \
    --cc=ameya.palande@nokia.com \
    --cc=ernesto@ti.com \
    --cc=felipe.contreras@nokia.com \
    --cc=linux-omap@vger.kernel.org \
    --cc=omar.ramirez@ti.com \
    --cc=x0095840@ti.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox