summaryrefslogtreecommitdiffstats
path: root/drivers/s390/char/sclp_early_core.c
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2017-02-02 12:33:03 +0100
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2017-02-08 14:13:21 +0100
commitf694bb3a36a8113addd31817e4b5aca42326353d (patch)
treeea99bbb43adba384a822788b6bf0067c9a6b7405 /drivers/s390/char/sclp_early_core.c
parent02407baaebdef86571e4e939ddbd3b32d9b5d389 (diff)
downloadop-kernel-dev-f694bb3a36a8113addd31817e4b5aca42326353d.zip
op-kernel-dev-f694bb3a36a8113addd31817e4b5aca42326353d.tar.gz
s390/sclp: get rid of common response code handling
Get rid of common response code handling. Each command requires its own response code handling anyway. Also the retry in case of -EBUSY does not work and can be simply removed. Reviewed-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com> Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/char/sclp_early_core.c')
-rw-r--r--drivers/s390/char/sclp_early_core.c22
1 files changed, 6 insertions, 16 deletions
diff --git a/drivers/s390/char/sclp_early_core.c b/drivers/s390/char/sclp_early_core.c
index cc3ad8c..5029cc8 100644
--- a/drivers/s390/char/sclp_early_core.c
+++ b/drivers/s390/char/sclp_early_core.c
@@ -50,7 +50,7 @@ void sclp_early_wait_irq(void)
__ctl_load(cr0.val, 0, 0);
}
-int sclp_early_cmd_sync(sclp_cmdw_t cmd, void *sccb)
+int sclp_early_cmd(sclp_cmdw_t cmd, void *sccb)
{
unsigned long flags;
int rc;
@@ -65,20 +65,6 @@ out:
return rc;
}
-int sclp_early_cmd(sclp_cmdw_t cmd, void *sccb)
-{
- int rc;
-
- do {
- rc = sclp_early_cmd_sync(cmd, sccb);
- } while (rc == -EBUSY);
- if (rc)
- return -EIO;
- if (((struct sccb_header *) sccb)->response_code != 0x0020)
- return -EIO;
- return 0;
-}
-
struct write_sccb {
struct sccb_header header;
struct msg_buf msg;
@@ -163,7 +149,11 @@ int sclp_early_set_event_mask(struct init_sccb *sccb,
sccb->mask_length = sizeof(sccb_mask_t);
sccb->receive_mask = receive_mask;
sccb->send_mask = send_mask;
- return sclp_early_cmd(SCLP_CMDW_WRITE_EVENT_MASK, sccb);
+ if (sclp_early_cmd(SCLP_CMDW_WRITE_EVENT_MASK, sccb))
+ return -EIO;
+ if (sccb->header.response_code != 0x20)
+ return -EIO;
+ return 0;
}
unsigned int sclp_early_con_check_linemode(struct init_sccb *sccb)
OpenPOWER on IntegriCloud