From: Dominik Brodowski <linux@dominikbrodowski.net>
To: Patrick Mochel <mochel@digitalimplant.org>
Cc: Linux-pm mailing list <linux-pm@lists.osdl.org>,
Pavel Machek <pavel@ucw.cz>
Subject: Re: [patch] pm: fix runtime powermanagement's /sys interface
Date: Fri, 6 Jan 2006 02:10:41 +0100 [thread overview]
Message-ID: <20060106011041.GA23899@isilmar.linta.de> (raw)
In-Reply-To: <Pine.LNX.4.50.0601051602560.10428-100000@monsoon.he.net>
[-- Attachment #1: Type: text/plain, Size: 3708 bytes --]
On Thu, Jan 05, 2006 at 04:04:07PM -0800, Patrick Mochel wrote:
> A better point, and one that would actually be useful, would be to remove
> the file altogether. Let Dominik export a power file, with complete
> control over the values, for each pcmcia device. Then you never have to
> worry about breaking PCMCIA again.
Then I'll try to push this into 2.6.16 later on; also I still need to fix
up userspace accordingly...
BTW, ACK on the removal of power/state from me... PCMCIA shouldn't hold this
removal up.
Dominik
diff --git a/drivers/pcmcia/ds.c b/drivers/pcmcia/ds.c
index 0252582..a4f3258 100644
--- a/drivers/pcmcia/ds.c
+++ b/drivers/pcmcia/ds.c
@@ -920,6 +920,37 @@ pcmcia_device_stringattr(prod_id2, prod_
pcmcia_device_stringattr(prod_id3, prod_id[2]);
pcmcia_device_stringattr(prod_id4, prod_id[3]);
+
+static ssize_t pcmcia_show_suspend(struct device *dev, struct device_attribute *attr, char *buf)
+{
+ struct pcmcia_device *p_dev = to_pcmcia_dev(dev);
+
+ if (p_dev->dev.power.power_state.event != PM_EVENT_ON)
+ return sprintf(buf, "1\n");
+ else
+ return sprintf(buf, "0\n");
+}
+
+static ssize_t pcmcia_store_suspend(struct device *dev, struct device_attribute *attr,
+ const char *buf, size_t count)
+{
+ struct pcmcia_device *p_dev = to_pcmcia_dev(dev);
+ int ret = 0;
+
+ if (!count)
+ return -EINVAL;
+
+ if (p_dev->dev.power.power_state.event == PM_EVENT_ON)
+ ret = dpm_runtime_suspend(dev, PMSG_SUSPEND);
+ else
+ dpm_runtime_resume(dev);
+
+ return ret ? ret : count;
+
+ return count;
+}
+
+
static ssize_t modalias_show(struct device *dev, struct device_attribute *attr, char *buf)
{
struct pcmcia_device *p_dev = to_pcmcia_dev(dev);
@@ -945,8 +976,9 @@ static ssize_t pcmcia_store_allow_func_i
struct device_attribute *attr, const char *buf, size_t count)
{
struct pcmcia_device *p_dev = to_pcmcia_dev(dev);
- if (!count)
- return -EINVAL;
+
+ if (!count)
+ return -EINVAL;
down(&p_dev->socket->skt_sem);
p_dev->allow_func_id_match = 1;
@@ -959,6 +991,7 @@ static ssize_t pcmcia_store_allow_func_i
static struct device_attribute pcmcia_dev_attrs[] = {
__ATTR(function, 0444, func_show, NULL),
+ __ATTR(suspend, 0644, pcmcia_show_suspend, pcmcia_store_suspend),
__ATTR_RO(func_id),
__ATTR_RO(manf_id),
__ATTR_RO(card_id),
diff --git a/drivers/pcmcia/socket_sysfs.c b/drivers/pcmcia/socket_sysfs.c
index 7a77446..df1917c 100644
--- a/drivers/pcmcia/socket_sysfs.c
+++ b/drivers/pcmcia/socket_sysfs.c
@@ -98,6 +98,30 @@ static ssize_t pccard_store_insert(struc
}
static CLASS_DEVICE_ATTR(card_insert, 0200, NULL, pccard_store_insert);
+
+static ssize_t pccard_show_suspend(struct class_device *dev, char *buf)
+{
+ struct pcmcia_socket *s = to_socket(dev);
+ return sprintf(buf, "%u\n", s->state & SOCKET_SUSPEND ? 1 : 0);
+}
+
+static ssize_t pccard_store_suspend(struct class_device *dev, const char *buf, size_t count)
+{
+ ssize_t ret;
+ struct pcmcia_socket *s = to_socket(dev);
+
+ if (!count)
+ return -EINVAL;
+
+ if (!(s->state & SOCKET_SUSPEND))
+ ret = pcmcia_suspend_card(s);
+ else
+ ret = pcmcia_resume_card(s);
+
+ return ret ? -ENODEV : count;
+}
+static CLASS_DEVICE_ATTR(card_suspend, 0644, pccard_show_suspend, pccard_store_suspend);
+
static ssize_t pccard_store_eject(struct class_device *dev, const char *buf, size_t count)
{
ssize_t ret;
@@ -320,6 +344,7 @@ static struct class_device_attribute *pc
&class_device_attr_card_vpp,
&class_device_attr_card_vcc,
&class_device_attr_card_insert,
+ &class_device_attr_card_suspend,
&class_device_attr_card_eject,
&class_device_attr_card_irq_mask,
&class_device_attr_available_resources_setup_done,
[-- Attachment #2: Type: text/plain, Size: 0 bytes --]
next prev parent reply other threads:[~2006-01-06 1:10 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-12-27 21:34 [patch] pm: fix runtime powermanagement's /sys interface Pavel Machek
2005-12-27 21:55 ` Dmitry Torokhov
2005-12-27 22:05 ` Pavel Machek
2005-12-28 4:22 ` Patrick Mochel
2006-01-04 21:34 ` [linux-pm] " Pavel Machek
2006-01-04 22:06 ` Alan Stern
2006-01-04 22:16 ` [linux-pm] " Pavel Machek
2006-01-05 21:43 ` Patrick Mochel
2006-01-05 22:06 ` [linux-pm] " Alan Stern
2006-01-05 22:28 ` Pavel Machek
2006-01-05 21:42 ` [linux-pm] " Patrick Mochel
2006-01-05 21:55 ` Pavel Machek
2006-01-05 22:13 ` [linux-pm] " Dominik Brodowski
2006-01-05 22:23 ` Pavel Machek
2006-01-05 22:27 ` Dominik Brodowski
2006-01-05 22:59 ` Pavel Machek
2006-01-05 23:08 ` Pavel Machek
2006-01-05 23:46 ` [linux-pm] " Dominik Brodowski
2006-01-05 23:58 ` Pavel Machek
2006-01-06 0:04 ` Patrick Mochel
2006-01-06 0:12 ` Pavel Machek
2006-01-06 1:37 ` Patrick Mochel
2006-01-06 8:59 ` Pavel Machek
2006-01-07 5:47 ` Adam Belay
2006-01-06 9:00 ` Pavel Machek
2006-01-06 15:00 ` Dominik Brodowski
2006-01-07 5:58 ` Adam Belay
2006-01-06 15:42 ` Alan Stern
2006-01-07 0:08 ` Pavel Machek
2006-01-07 3:19 ` Alan Stern
2006-01-07 7:58 ` Adam Belay
2006-01-07 10:20 ` Pavel Machek
2006-01-07 13:06 ` Adam Belay
2006-01-06 4:17 ` Pavel Machek
2006-01-07 7:41 ` [linux-pm] " Adam Belay
2006-01-07 15:24 ` Alan Stern
2006-01-06 1:10 ` Dominik Brodowski [this message]
2006-01-06 8:53 ` Pavel Machek
2006-01-06 0:38 ` Greg KH
2006-01-06 15:03 ` Dominik Brodowski
2006-01-06 16:25 ` Kay Sievers
2006-01-09 20:10 ` [linux-pm] " Dominik Brodowski
2006-01-05 22:15 ` Patrick Mochel
2006-01-05 22:44 ` Pavel Machek
2006-01-05 23:54 ` Patrick Mochel
2006-01-06 0:07 ` [linux-pm] " Pavel Machek
2006-01-06 14:34 ` Tom Marshall
2006-01-06 16:20 ` Pavel Machek
2006-01-07 8:36 ` Adam Belay
2006-01-07 10:25 ` Pavel Machek
2006-01-07 12:45 ` Adam Belay
2006-01-06 4:24 ` Pavel Machek
2006-01-13 20:00 ` Takashi Iwai
-- strict thread matches above, loose matches on Subject: below --
2006-01-05 15:16 Scott E. Preece
2006-01-05 22:21 Preece Scott-PREECE
2006-01-05 22:45 ` Pavel Machek
2006-01-06 0:02 ` Patrick Mochel
2006-01-05 22:55 Preece Scott-PREECE
2006-01-05 23:05 ` Pavel Machek
2006-01-06 0:31 Scott E. Preece
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=20060106011041.GA23899@isilmar.linta.de \
--to=linux@dominikbrodowski.net \
--cc=linux-pm@lists.osdl.org \
--cc=mochel@digitalimplant.org \
--cc=pavel@ucw.cz \
/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