mirror of
https://github.com/torvalds/linux.git
synced 2024-11-27 22:51:35 +00:00
s390/ap: Support AP card SCLP config and deconfig operations
Support SCLP AP adapter config and deconfig operations: The sysfs deconfig attribute /sys/devices/ap/cardxx/deconfig for each AP card is now read-write. Writing in a '1' triggers a synchronous SCLP request to configure the adapter, writing in a '0' sends a synchronous SCLP deconfigure request. Signed-off-by: Harald Freudenberger <freude@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
This commit is contained in:
parent
0671cc1048
commit
5caa2af971
@ -12,6 +12,7 @@
|
||||
#include <linux/init.h>
|
||||
#include <linux/slab.h>
|
||||
#include <asm/facility.h>
|
||||
#include <asm/sclp.h>
|
||||
|
||||
#include "ap_bus.h"
|
||||
|
||||
@ -147,7 +148,29 @@ static ssize_t config_show(struct device *dev,
|
||||
return scnprintf(buf, PAGE_SIZE, "%d\n", ac->config ? 1 : 0);
|
||||
}
|
||||
|
||||
static DEVICE_ATTR_RO(config);
|
||||
static ssize_t config_store(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
int rc = 0, cfg;
|
||||
struct ap_card *ac = to_ap_card(dev);
|
||||
|
||||
if (sscanf(buf, "%d\n", &cfg) != 1 || cfg < 0 || cfg > 1)
|
||||
return -EINVAL;
|
||||
|
||||
if (cfg && !ac->config)
|
||||
rc = sclp_ap_configure(ac->id);
|
||||
else if (!cfg && ac->config)
|
||||
rc = sclp_ap_deconfigure(ac->id);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
ac->config = cfg ? true : false;
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
static DEVICE_ATTR_RW(config);
|
||||
|
||||
static struct attribute *ap_card_dev_attrs[] = {
|
||||
&dev_attr_hwtype.attr,
|
||||
|
Loading…
Reference in New Issue
Block a user