summaryrefslogtreecommitdiffstats
path: root/drivers/s390/cio/chsc.h
diff options
context:
space:
mode:
authorSebastian Ott <sebott@linux.vnet.ibm.com>2013-06-05 18:59:22 +0200
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2013-06-26 21:10:15 +0200
commitca4ba153f985d0c1478ccf05ac95314402bc08a7 (patch)
tree101cdcd952ae59fd42192aad4dd1b9bbfb08238e /drivers/s390/cio/chsc.h
parents390/qdio: cleanup chsc SSQD usage (diff)
downloadlinux-ca4ba153f985d0c1478ccf05ac95314402bc08a7.tar.xz
linux-ca4ba153f985d0c1478ccf05ac95314402bc08a7.zip
s390/qdio: cleanup chsc SADC usage
Move the code to issue the set adapter device controls command to chsc.c and make it accessible for the qdio code via the wrapper chsc_sadc. Reviewed-by: Ursula Braun <ursula.braun@de.ibm.com> Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/cio/chsc.h')
-rw-r--r--drivers/s390/cio/chsc.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/s390/cio/chsc.h b/drivers/s390/cio/chsc.h
index 2b88e74e6b65..23d072e70eb2 100644
--- a/drivers/s390/cio/chsc.h
+++ b/drivers/s390/cio/chsc.h
@@ -87,6 +87,26 @@ struct chsc_ssqd_area {
struct qdio_ssqd_desc qdio_ssqd;
} __packed;
+struct chsc_scssc_area {
+ struct chsc_header request;
+ u16 operation_code;
+ u16:16;
+ u32:32;
+ u32:32;
+ u64 summary_indicator_addr;
+ u64 subchannel_indicator_addr;
+ u32 ks:4;
+ u32 kc:4;
+ u32:21;
+ u32 isc:3;
+ u32 word_with_d_bit;
+ u32:32;
+ struct subchannel_id schid;
+ u32 reserved[1004];
+ struct chsc_header response;
+ u32:32;
+} __packed;
+
struct chsc_scpd {
struct chsc_header request;
u32:2;
@@ -127,6 +147,8 @@ void chsc_chp_online(struct chp_id chpid);
void chsc_chp_offline(struct chp_id chpid);
int chsc_get_channel_measurement_chars(struct channel_path *chp);
int chsc_ssqd(struct subchannel_id schid, struct chsc_ssqd_area *ssqd);
+int chsc_sadc(struct subchannel_id schid, struct chsc_scssc_area *scssc,
+ u64 summary_indicator_addr, u64 subchannel_indicator_addr);
int chsc_error_from_response(int response);
int chsc_siosl(struct subchannel_id schid);