* your option) any later version. See the COPYING file in the top-level
* directory.
*/
+
#include "qemu/osdep.h"
#include "qapi/error.h"
#include "qemu/module.h"
#include "cpu.h"
#include "hw/s390x/css.h"
#include "hw/s390x/css-bridge.h"
+#include "hw/qdev-properties.h"
#include "hw/s390x/3270-ccw.h"
/* Handle READ ccw commands from guest */
return -EFAULT;
}
- len = ck->read_payload_3270(dev, ccw->cda, ccw->count);
+ len = ck->read_payload_3270(dev);
ccw_dev->sch->curr_status.scsw.count = ccw->count - len;
return 0;
return -EFAULT;
}
- len = ck->write_payload_3270(dev, ccw->cmd_code, ccw->cda, ccw->count);
+ len = ck->write_payload_3270(dev, ccw->cmd_code);
if (len <= 0) {
return -EIO;
if (rc == -EIO) {
/* I/O error, specific devices generate specific conditions */
- SCSW *s = &sch->curr_status.scsw;
+ SCHIB *schib = &sch->curr_status;
sch->curr_status.scsw.dstat = SCSW_DSTAT_UNIT_CHECK;
sch->sense_data[0] = 0x40; /* intervention-req */
- s->ctrl &= ~SCSW_ACTL_START_PEND;
- s->ctrl &= ~SCSW_CTRL_MASK_STCTL;
- s->ctrl |= SCSW_STCTL_PRIMARY | SCSW_STCTL_SECONDARY |
+ schib->scsw.ctrl &= ~SCSW_ACTL_START_PEND;
+ schib->scsw.ctrl &= ~SCSW_CTRL_MASK_STCTL;
+ schib->scsw.ctrl |= SCSW_STCTL_PRIMARY | SCSW_STCTL_SECONDARY |
SCSW_STCTL_ALERT | SCSW_STCTL_STATUS_PEND;
}
EmulatedCcw3270Class *ck = EMULATED_CCW_3270_GET_CLASS(dev);
CcwDevice *cdev = CCW_DEVICE(ds);
CCWDeviceClass *cdk = CCW_DEVICE_GET_CLASS(cdev);
- SubchDev *sch = css_create_virtual_sch(cdev->devno, errp);
+ SubchDev *sch;
Error *err = NULL;
+ sch = css_create_sch(cdev->devno, errp);
if (!sch) {
return;
}
sch->id.cu_type = EMULATED_CCW_3270_CU_TYPE;
css_sch_build_virtual_schib(sch, (uint8_t)chpid,
EMULATED_CCW_3270_CHPID_TYPE);
+ sch->do_subchannel_work = do_subchannel_work_virtual;
sch->ccw_cb = emulated_ccw_3270_cb;
ck->init(dev, &err);
dc->bus_type = TYPE_VIRTUAL_CSS_BUS;
dc->realize = emulated_ccw_3270_realize;
dc->hotpluggable = false;
+ set_bit(DEVICE_CATEGORY_DISPLAY, dc->categories);
}
static const TypeInfo emulated_ccw_3270_info = {