diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-06-10 08:00:40 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-06-10 08:00:40 -0700 |
commit | 19f2b8dfea10e4d5cd34feb08cbab738504c25cf (patch) | |
tree | 095707c7fee30c9112f34967916da638674c2805 /drivers/s390/cio/cio.c | |
parent | c592713b3e124ce0719e6af4bc2520424c49cbae (diff) | |
parent | 1783e60ff207805a3e75cf522b17ec9bb1604a62 (diff) |
Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6
* 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6:
[S390] tape_3590.c: introduce missing kfree
[S390] Fix __ctl_load/__ctl_store inline assembly constraints
[S390] Fix build failure in __cpu_up()
[S390] vt220 console, initialize list head before use
[S390] cio: Fix inverted isc priorities.
[S390] vmemmap: fix off-by-one bug.
[S390] cio: Fix sparse warnings in blacklist.c.
[S390] sparsemem: use SPARSEMEM_STATIC if !64BIT.
Diffstat (limited to 'drivers/s390/cio/cio.c')
-rw-r--r-- | drivers/s390/cio/cio.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/drivers/s390/cio/cio.c b/drivers/s390/cio/cio.c index 82c6a2d4512..b32d7eb3d81 100644 --- a/drivers/s390/cio/cio.c +++ b/drivers/s390/cio/cio.c @@ -576,12 +576,14 @@ cio_validate_subchannel (struct subchannel *sch, struct subchannel_id schid) err = -ENODEV; goto out; } - if (cio_is_console(sch->schid)) + if (cio_is_console(sch->schid)) { sch->opm = 0xff; - else + sch->isc = 1; + } else { sch->opm = chp_get_sch_opm(sch); + sch->isc = 3; + } sch->lpm = sch->schib.pmcw.pam & sch->opm; - sch->isc = 3; CIO_MSG_EVENT(6, "Detected device %04x on subchannel 0.%x.%04X " "- PIM = %02X, PAM = %02X, POM = %02X\n", @@ -704,9 +706,9 @@ void wait_cons_dev(void) if (!console_subchannel_in_use) return; - /* disable all but isc 7 (console device) */ + /* disable all but isc 1 (console device) */ __ctl_store (save_cr6, 6, 6); - cr6 = 0x01000000; + cr6 = 0x40000000; __ctl_load (cr6, 6, 6); do { @@ -788,11 +790,11 @@ cio_probe_console(void) } /* - * enable console I/O-interrupt subclass 7 + * enable console I/O-interrupt subclass 1 */ - ctl_set_bit(6, 24); - console_subchannel.isc = 7; - console_subchannel.schib.pmcw.isc = 7; + ctl_set_bit(6, 30); + console_subchannel.isc = 1; + console_subchannel.schib.pmcw.isc = 1; console_subchannel.schib.pmcw.intparm = (u32)(addr_t)&console_subchannel; ret = cio_modify(&console_subchannel); |