Commit 5caa2af9 authored by Harald Freudenberger's avatar Harald Freudenberger Committed by Vasily Gorbik
Browse files

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: default avatarHarald Freudenberger <freude@linux.ibm.com>
Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
parent 0671cc10
Loading
Loading
Loading
Loading
+24 −1
Original line number Diff line number Diff line
@@ -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,