/Linux-v5.15/drivers/s390/virtio/ |
D | virtio_ccw.c | 321 struct ccw1 *ccw, __u32 intparm) in ccw_io_helper() argument 330 ret = ccw_device_start(vcdev->cdev, ccw, intparm, 0, 0); in ccw_io_helper() 346 struct ccw1 *ccw) in virtio_ccw_drop_indicator() argument 361 ccw->cmd_code = CCW_CMD_SET_IND_ADAPTER; in virtio_ccw_drop_indicator() 362 ccw->count = sizeof(*thinint_area); in virtio_ccw_drop_indicator() 363 ccw->cda = (__u32)(unsigned long) thinint_area; in virtio_ccw_drop_indicator() 371 ccw->cmd_code = CCW_CMD_SET_IND; in virtio_ccw_drop_indicator() 372 ccw->count = sizeof(indicators(vcdev)); in virtio_ccw_drop_indicator() 373 ccw->cda = (__u32)(unsigned long) indicatorp; in virtio_ccw_drop_indicator() 377 ccw->flags = 0; in virtio_ccw_drop_indicator() [all …]
|
/Linux-v5.15/drivers/s390/char/ |
D | tape.h | 303 tape_ccw_cc(struct ccw1 *ccw, __u8 cmd_code, __u16 memsize, void *cda) in tape_ccw_cc() argument 305 ccw->cmd_code = cmd_code; in tape_ccw_cc() 306 ccw->flags = CCW_FLAG_CC; in tape_ccw_cc() 307 ccw->count = memsize; in tape_ccw_cc() 308 ccw->cda = (__u32)(addr_t) cda; in tape_ccw_cc() 309 return ccw + 1; in tape_ccw_cc() 313 tape_ccw_end(struct ccw1 *ccw, __u8 cmd_code, __u16 memsize, void *cda) in tape_ccw_end() argument 315 ccw->cmd_code = cmd_code; in tape_ccw_end() 316 ccw->flags = 0; in tape_ccw_end() 317 ccw->count = memsize; in tape_ccw_end() [all …]
|
D | tape_std.c | 270 struct ccw1 *ccw; in tape_std_mtfsf() local 277 ccw = tape_ccw_cc(request->cpaddr, MODE_SET_DB, 1, in tape_std_mtfsf() 279 ccw = tape_ccw_repeat(ccw, FORSPACEFILE, mt_count); in tape_std_mtfsf() 280 ccw = tape_ccw_end(ccw, NOP, 0, NULL); in tape_std_mtfsf() 294 struct ccw1 *ccw; in tape_std_mtfsr() local 302 ccw = tape_ccw_cc(request->cpaddr, MODE_SET_DB, 1, in tape_std_mtfsr() 304 ccw = tape_ccw_repeat(ccw, FORSPACEBLOCK, mt_count); in tape_std_mtfsr() 305 ccw = tape_ccw_end(ccw, NOP, 0, NULL); in tape_std_mtfsr() 326 struct ccw1 *ccw; in tape_std_mtbsr() local 334 ccw = tape_ccw_cc(request->cpaddr, MODE_SET_DB, 1, in tape_std_mtbsr() [all …]
|
D | raw3270.c | 159 rq->ccw.cda = __pa(rq->buffer); in raw3270_request_alloc() 160 rq->ccw.flags = CCW_FLAG_SLI; in raw3270_request_alloc() 182 rq->ccw.cmd_code = 0; in raw3270_request_reset() 183 rq->ccw.count = 0; in raw3270_request_reset() 184 rq->ccw.cda = __pa(rq->buffer); in raw3270_request_reset() 185 rq->ccw.flags = CCW_FLAG_SLI; in raw3270_request_reset() 196 rq->ccw.cmd_code = cmd; in raw3270_request_set_cmd() 205 if (size + rq->ccw.count > rq->size) in raw3270_request_add_data() 207 memcpy(rq->buffer + rq->ccw.count, data, size); in raw3270_request_add_data() 208 rq->ccw.count += size; in raw3270_request_add_data() [all …]
|
D | con3215.c | 146 struct ccw1 *ccw; in raw3215_mk_read_req() local 158 ccw = req->ccws; in raw3215_mk_read_req() 159 ccw->cmd_code = 0x0A; /* read inquiry */ in raw3215_mk_read_req() 160 ccw->flags = 0x20; /* ignore incorrect length */ in raw3215_mk_read_req() 161 ccw->count = 160; in raw3215_mk_read_req() 162 ccw->cda = (__u32) __pa(raw->inbuf); in raw3215_mk_read_req() 174 struct ccw1 *ccw; in raw3215_mk_write_req() local 191 ccw = req->ccws; in raw3215_mk_write_req() 217 if (ccw > req->ccws) in raw3215_mk_write_req() 218 ccw[-1].flags |= 0x40; /* use command chaining */ in raw3215_mk_write_req() [all …]
|
/Linux-v5.15/drivers/s390/block/ |
D | dasd_fba.c | 55 MODULE_DEVICE_TABLE(ccw, dasd_fba_ids); 80 define_extent(struct ccw1 * ccw, struct DE_fba_data *data, int rw, in define_extent() argument 83 ccw->cmd_code = DASD_FBA_CCW_DEFINE_EXTENT; in define_extent() 84 ccw->flags = 0; in define_extent() 85 ccw->count = 16; in define_extent() 86 ccw->cda = (__u32) __pa(data); in define_extent() 100 locate_record(struct ccw1 * ccw, struct LO_fba_data *data, int rw, in locate_record() argument 103 ccw->cmd_code = DASD_FBA_CCW_LOCATE; in locate_record() 104 ccw->flags = 0; in locate_record() 105 ccw->count = 8; in locate_record() [all …]
|
D | dasd_eckd.c | 74 MODULE_DEVICE_TABLE(ccw, dasd_eckd_ids); 87 struct ccw1 ccw; member 94 struct ccw1 ccw[2]; member 110 struct ccw1 ccw; member 250 static int set_timestamp(struct ccw1 *ccw, struct DE_eckd_data *data, in set_timestamp() argument 269 if (ccw) { in set_timestamp() 270 ccw->count = sizeof(struct DE_eckd_data); in set_timestamp() 271 ccw->flags |= CCW_FLAG_SLI; in set_timestamp() 278 define_extent(struct ccw1 *ccw, struct DE_eckd_data *data, unsigned int trk, in define_extent() argument 287 if (ccw) { in define_extent() [all …]
|
D | dasd_3990_erp.c | 201 struct ccw1 *ccw; in dasd_3990_erp_DCTL() local 219 ccw = dctl_cqr->cpaddr; in dasd_3990_erp_DCTL() 220 memset(ccw, 0, sizeof(struct ccw1)); in dasd_3990_erp_DCTL() 221 ccw->cmd_code = CCW_CMD_DCTL; in dasd_3990_erp_DCTL() 222 ccw->count = 4; in dasd_3990_erp_DCTL() 223 ccw->cda = (__u32)(addr_t) DCTL_data; in dasd_3990_erp_DCTL() 1613 struct ccw1 *ccw, *oldccw; in dasd_3990_erp_action_1B_32() local 1707 ccw = erp->cpaddr; in dasd_3990_erp_action_1B_32() 1708 memset(ccw, 0, sizeof(struct ccw1)); in dasd_3990_erp_action_1B_32() 1709 ccw->cmd_code = DASD_ECKD_CCW_DEFINE_EXTENT; in dasd_3990_erp_action_1B_32() [all …]
|
D | dasd_alias.c | 420 struct ccw1 *ccw; in read_unit_address_configuration() local 442 ccw = cqr->cpaddr; in read_unit_address_configuration() 443 ccw->cmd_code = DASD_ECKD_CCW_PSF; in read_unit_address_configuration() 444 ccw->count = sizeof(struct dasd_psf_prssd_data); in read_unit_address_configuration() 445 ccw->flags |= CCW_FLAG_CC; in read_unit_address_configuration() 446 ccw->cda = (__u32)(addr_t) prssdp; in read_unit_address_configuration() 451 ccw++; in read_unit_address_configuration() 452 ccw->cmd_code = DASD_ECKD_CCW_RSSD; in read_unit_address_configuration() 453 ccw->count = sizeof(*(lcu->uac)); in read_unit_address_configuration() 454 ccw->cda = (__u32)(addr_t) lcu->uac; in read_unit_address_configuration() [all …]
|
D | dasd_eer.c | 461 struct ccw1 *ccw; in dasd_eer_enable() local 490 ccw = cqr->cpaddr; in dasd_eer_enable() 491 ccw->cmd_code = DASD_ECKD_CCW_SNSS; in dasd_eer_enable() 492 ccw->count = SNSS_DATA_SIZE; in dasd_eer_enable() 493 ccw->flags = 0; in dasd_eer_enable() 494 ccw->cda = (__u32)(addr_t) cqr->data; in dasd_eer_enable()
|
/Linux-v5.15/drivers/dma/ |
D | mxs-dma.c | 115 struct mxs_dma_ccw *ccw; member 402 mxs_chan->ccw = dma_alloc_coherent(mxs_dma->dma_device.dev, in mxs_dma_alloc_chan_resources() 405 if (!mxs_chan->ccw) { in mxs_dma_alloc_chan_resources() 433 mxs_chan->ccw, mxs_chan->ccw_phys); in mxs_dma_alloc_chan_resources() 448 mxs_chan->ccw, mxs_chan->ccw_phys); in mxs_dma_free_chan_resources() 482 struct mxs_dma_ccw *ccw; in mxs_dma_prep_slave_sg() local 507 ccw = &mxs_chan->ccw[idx - 1]; in mxs_dma_prep_slave_sg() 508 ccw->next = mxs_chan->ccw_phys + sizeof(*ccw) * idx; in mxs_dma_prep_slave_sg() 509 ccw->bits |= CCW_CHAIN; in mxs_dma_prep_slave_sg() 510 ccw->bits &= ~CCW_IRQ; in mxs_dma_prep_slave_sg() [all …]
|
/Linux-v5.15/drivers/s390/cio/ |
D | vfio_ccw_cp.c | 258 static inline int ccw_does_data_transfer(struct ccw1 *ccw) in ccw_does_data_transfer() argument 261 if (ccw->count == 0) in ccw_does_data_transfer() 265 if (ccw_is_noop(ccw)) in ccw_does_data_transfer() 269 if (!ccw_is_skip(ccw)) in ccw_does_data_transfer() 277 if (ccw_is_read(ccw) || ccw_is_read_backward(ccw)) in ccw_does_data_transfer() 280 if (ccw_is_sense(ccw)) in ccw_does_data_transfer() 306 static inline int is_tic_within_range(struct ccw1 *ccw, u32 head, int len) in is_tic_within_range() argument 308 if (!ccw_is_tic(ccw)) in is_tic_within_range() 311 return is_cpa_within_range(ccw->cda, head, len); in is_tic_within_range() 350 struct ccw1 *ccw = chain->ch_ccw + idx; in ccwchain_cda_free() local [all …]
|
D | qdio_main.c | 1008 irq_ptr->ccw.cmd_code = irq_ptr->equeue.cmd; in qdio_establish() 1009 irq_ptr->ccw.flags = CCW_FLAG_SLI; in qdio_establish() 1010 irq_ptr->ccw.count = irq_ptr->equeue.count; in qdio_establish() 1011 irq_ptr->ccw.cda = (u32) virt_to_phys(irq_ptr->qdr); in qdio_establish() 1016 rc = ccw_device_start(cdev, &irq_ptr->ccw, QDIO_DOING_ESTABLISH, 0, 0); in qdio_establish() 1082 irq_ptr->ccw.cmd_code = irq_ptr->aqueue.cmd; in qdio_activate() 1083 irq_ptr->ccw.flags = CCW_FLAG_SLI; in qdio_activate() 1084 irq_ptr->ccw.count = irq_ptr->aqueue.count; in qdio_activate() 1085 irq_ptr->ccw.cda = 0; in qdio_activate() 1090 rc = ccw_device_start(cdev, &irq_ptr->ccw, QDIO_DOING_ACTIVATE, in qdio_activate()
|
/Linux-v5.15/arch/s390/include/asm/ |
D | idals.h | 71 set_normalized_cda(struct ccw1 * ccw, void *vaddr) in set_normalized_cda() argument 76 if (ccw->flags & CCW_FLAG_IDA) in set_normalized_cda() 78 nridaws = idal_nr_words(vaddr, ccw->count); in set_normalized_cda() 84 idal_create_words(idal, vaddr, ccw->count); in set_normalized_cda() 85 ccw->flags |= CCW_FLAG_IDA; in set_normalized_cda() 88 ccw->cda = (__u32)(unsigned long) vaddr; in set_normalized_cda() 96 clear_normalized_cda(struct ccw1 * ccw) in clear_normalized_cda() argument 98 if (ccw->flags & CCW_FLAG_IDA) { in clear_normalized_cda() 99 kfree((void *)(unsigned long) ccw->cda); in clear_normalized_cda() 100 ccw->flags &= ~CCW_FLAG_IDA; in clear_normalized_cda() [all …]
|
D | ipl.h | 24 struct ipl_pb0_ccw ccw; member 79 } ccw; member
|
/Linux-v5.15/Documentation/driver-api/ |
D | s390-drivers.rst | 39 device on the ccw bus and are described below. 40 * I/O subchannels bound to the vfio-ccw driver. See 41 Documentation/s390/vfio-ccw.rst. 47 The ccw bus 50 The ccw bus typically contains the majority of devices available to a 51 s390 system. Named after the channel command word (ccw), the basic 52 command structure used to address its devices, the ccw bus contains 56 subchannel directly, but only via the I/O device on the ccw bus, the ccw 70 ccw devices 73 Devices that want to initiate channel I/O need to attach to the ccw bus. [all …]
|
/Linux-v5.15/drivers/s390/net/ |
D | ctcm_mpc.c | 1512 rc = ccw_device_start(ch->cdev, &ch->ccw[15], 0, 0xff, 0); in mpc_action_send_discontact() 1694 ch->ccw[8].flags = CCW_FLAG_SLI | CCW_FLAG_CC; in mpc_action_side_xid() 1695 ch->ccw[8].count = 0; in mpc_action_side_xid() 1696 ch->ccw[8].cda = 0x00; in mpc_action_side_xid() 1707 ch->ccw[9].cmd_code = CCW_CMD_WRITE; in mpc_action_side_xid() 1708 ch->ccw[9].flags = CCW_FLAG_SLI | CCW_FLAG_CC; in mpc_action_side_xid() 1709 ch->ccw[9].count = TH_HEADER_LENGTH; in mpc_action_side_xid() 1710 ch->ccw[9].cda = virt_to_phys(ch->xid_th); in mpc_action_side_xid() 1714 ch->ccw[10].cmd_code = CCW_CMD_WRITE; in mpc_action_side_xid() 1715 ch->ccw[10].flags = CCW_FLAG_SLI | CCW_FLAG_CC; in mpc_action_side_xid() [all …]
|
D | ctcm_fsms.c | 279 clear_normalized_cda(&ch->ccw[4]); in chx_txdone() 307 ch->ccw[1].count = ch->trans_skb->len; in chx_txdone() 310 rc = ccw_device_start(ch->cdev, &ch->ccw[0], 0, 0xff, 0); in chx_txdone() 418 ch->ccw[1].count = ch->max_bufsize; in chx_rx() 419 rc = ccw_device_start(ch->cdev, &ch->ccw[0], 0, 0xff, 0); in chx_rx() 475 ch->ccw[1].count = 2; /* Transfer only length */ in chx_firstio() 479 rc = ccw_device_start(ch->cdev, &ch->ccw[0], 0, 0xff, 0); in chx_firstio() 525 ch->ccw[1].count = ch->max_bufsize; in chx_rxidle() 527 rc = ccw_device_start(ch->cdev, &ch->ccw[0], 0, 0xff, 0); in chx_rxidle() 563 CTCM_CCW_DUMP((char *)&ch->ccw[6], sizeof(struct ccw1) * 2); in ctcm_chx_setmode() [all …]
|
D | ctcm_main.c | 220 clear_normalized_cda(&ch->ccw[4]); in channel_remove() 222 clear_normalized_cda(&ch->ccw[1]); in channel_remove() 230 kfree(ch->ccw); in channel_remove() 384 clear_normalized_cda(&ch->ccw[1]); in ctcm_ch_alloc_buffer() 395 ch->ccw[1].count = ch->max_bufsize; in ctcm_ch_alloc_buffer() 396 if (set_normalized_cda(&ch->ccw[1], ch->trans_skb->data)) { in ctcm_ch_alloc_buffer() 407 ch->ccw[1].count = 0; in ctcm_ch_alloc_buffer() 534 ch->ccw[4].count = block_len; in ctcm_transmit_skb() 535 if (set_normalized_cda(&ch->ccw[4], skb->data)) { in ctcm_transmit_skb() 554 ch->ccw[1].count = skb->len; in ctcm_transmit_skb() [all …]
|
/Linux-v5.15/arch/s390/kernel/ |
D | ipl_vmparm.c | 16 if ((ipb->ccw.vm_flags & IPL_PB0_CCW_VM_FLAG_VP) && in ipl_block_get_ascii_vmparm() 17 (ipb->ccw.vm_parm_len > 0)) { in ipl_block_get_ascii_vmparm() 19 len = min_t(size_t, size - 1, ipb->ccw.vm_parm_len); in ipl_block_get_ascii_vmparm() 20 memcpy(dest, ipb->ccw.vm_parm, len); in ipl_block_get_ascii_vmparm()
|
D | ipl.c | 334 return sprintf(page, "0.%x.%04x\n", ipl_block.ccw.ssid, in sys_ipl_device_show() 335 ipl_block.ccw.devno); in sys_ipl_device_show() 602 memset(ipb->ccw.vm_parm, 0, DIAG308_VMPARM_SIZE); in reipl_generic_vmparm_store() 603 ipb->ccw.vm_parm_len = ip_len; in reipl_generic_vmparm_store() 605 ipb->ccw.vm_flags |= IPL_PB0_CCW_VM_FLAG_VP; in reipl_generic_vmparm_store() 606 memcpy(ipb->ccw.vm_parm, buf, ip_len); in reipl_generic_vmparm_store() 607 ASCEBC(ipb->ccw.vm_parm, ip_len); in reipl_generic_vmparm_store() 609 ipb->ccw.vm_flags &= ~IPL_PB0_CCW_VM_FLAG_VP; in reipl_generic_vmparm_store() 910 DEFINE_IPL_CCW_ATTR_RW(reipl_ccw, device, reipl_block_ccw->ccw); 992 memcpy(dst, ipb->ccw.nss_name, NSS_NAME_SIZE); in reipl_get_ascii_nss_name() [all …]
|
/Linux-v5.15/drivers/crypto/nx/ |
D | nx-common-powernv.c | 464 u32 ccw; in nx842_exec_icswx() local 485 ccw = 0; in nx842_exec_icswx() 486 ccw = SET_FIELD(CCW_CT, ccw, nx842_ct); in nx842_exec_icswx() 487 ccw = SET_FIELD(CCW_CI_842, ccw, 0); /* use 0 for hw auto-selection */ in nx842_exec_icswx() 488 ccw = SET_FIELD(CCW_FC_842, ccw, fc); in nx842_exec_icswx() 493 ret = icswx(cpu_to_be32(ccw), crb); in nx842_exec_icswx() 496 (unsigned int)ccw, in nx842_exec_icswx() 497 (unsigned int)be32_to_cpu(crb->ccw)); in nx842_exec_icswx() 568 u32 ccw; in nx842_exec_vas() local 582 ccw = 0; in nx842_exec_vas() [all …]
|
/Linux-v5.15/Documentation/s390/ |
D | vfio-ccw.rst | 2 vfio-ccw: the basic infrastructure 9 Linux/s390. Motivation for vfio-ccw is to passthrough subchannels to a 43 Motivation of vfio-ccw 48 (virtio-ccw)" transport. This makes virtio devices discoverable via 86 Back to vfio-ccw, in short: 99 Physical vfio ccw device and its child mdev 102 As mentioned above, we realize vfio-ccw with a mdev implementation. 105 vfio-ccw device does not have an IOMMU level translation or isolation. 108 handling the I/O instruction interception, vfio-ccw has the software 127 - The vfio_mdev driver for the mediated vfio ccw device. [all …]
|
D | driver-model.rst | 11 All ccw devices are accessed via a subchannel, this is reflected in the 29 system; it is a pseudo subchannel where disconnected ccw devices are moved to 30 if they are displaced by another ccw device becoming operational on their 31 former subchannel. The ccw devices will be moved again to a proper subchannel 34 You should address a ccw device via its bus id (e.g. 0.0.4711); the device can 35 be found under bus/ccw/devices/. 37 All ccw devices export some data via sysfs. 69 1.1 Bringing up a ccw device 80 1.2 Writing a driver for ccw devices 246 The ccwgroup mechanism is designed to handle devices consisting of multiple ccw [all …]
|
/Linux-v5.15/arch/powerpc/include/asm/ |
D | icswx.h | 142 __be32 ccw; member 185 static inline int icswx(__be32 ccw, struct coprocessor_request_block *crb) in icswx() argument 187 __be64 ccw_reg = ccw; in icswx()
|