| /linux/drivers/s390/char/ |
| H A D | tape.h | 302 tape_ccw_cc(struct ccw1 *ccw, __u8 cmd_code, __u16 memsize, void *cda) in tape_ccw_cc() argument 304 ccw->cmd_code = cmd_code; in tape_ccw_cc() 305 ccw->flags = CCW_FLAG_CC; in tape_ccw_cc() 306 ccw->count = memsize; in tape_ccw_cc() 307 ccw->cda = 0; in tape_ccw_cc() 309 ccw->cda = virt_to_dma32(cda); in tape_ccw_cc() 310 return ccw + 1; in tape_ccw_cc() 314 tape_ccw_end(struct ccw1 *ccw, __u8 cmd_code, __u16 memsize, void *cda) in tape_ccw_end() argument 316 ccw->cmd_code = cmd_code; in tape_ccw_end() 317 ccw->flags = 0; in tape_ccw_end() [all …]
|
| H A D | tape_std.c | 225 struct ccw1 *ccw; in tape_std_mtfsf() local 232 ccw = tape_ccw_cc(request->cpaddr, MODE_SET_DB, 1, in tape_std_mtfsf() 234 ccw = tape_ccw_repeat(ccw, FORSPACEFILE, mt_count); in tape_std_mtfsf() 235 ccw = tape_ccw_end(ccw, NOP, 0, NULL); in tape_std_mtfsf() 249 struct ccw1 *ccw; in tape_std_mtfsr() local 257 ccw = tape_ccw_cc(request->cpaddr, MODE_SET_DB, 1, in tape_std_mtfsr() 259 ccw = tape_ccw_repeat(ccw, FORSPACEBLOCK, mt_count); in tape_std_mtfsr() 260 ccw = tape_ccw_end(ccw, NOP, 0, NULL); in tape_std_mtfsr() 281 struct ccw1 *ccw; in tape_std_mtbsr() local 289 ccw = tape_ccw_cc(request->cpaddr, MODE_SET_DB, 1, in tape_std_mtbsr() [all …]
|
| H A D | raw3270.c | 168 rq->ccw.cda = virt_to_dma32(rq->buffer); in raw3270_request_alloc() 169 rq->ccw.flags = CCW_FLAG_SLI; in raw3270_request_alloc() 192 rq->ccw.cmd_code = 0; in raw3270_request_reset() 193 rq->ccw.count = 0; in raw3270_request_reset() 195 rq->ccw.cda = virt_to_dma32(rq->buffer); in raw3270_request_reset() 196 rq->ccw.flags = CCW_FLAG_SLI; in raw3270_request_reset() 208 rq->ccw.cmd_code = cmd; in raw3270_request_set_cmd() 217 if (size + rq->ccw.count > rq->size) in raw3270_request_add_data() 219 memcpy(rq->buffer + rq->ccw.count, data, size); in raw3270_request_add_data() 220 rq->ccw.count += size; in raw3270_request_add_data() [all …]
|
| H A D | con3215.c | 147 struct ccw1 *ccw; in raw3215_mk_read_req() local 159 ccw = req->ccws; in raw3215_mk_read_req() 160 ccw->cmd_code = 0x0A; /* read inquiry */ in raw3215_mk_read_req() 161 ccw->flags = 0x20; /* ignore incorrect length */ in raw3215_mk_read_req() 162 ccw->count = 160; in raw3215_mk_read_req() 163 ccw->cda = virt_to_dma32(raw->inbuf); in raw3215_mk_read_req() 175 struct ccw1 *ccw; in raw3215_mk_write_req() local 192 ccw = req->ccws; in raw3215_mk_write_req() 218 if (ccw > req->ccws) in raw3215_mk_write_req() 219 ccw[-1].flags |= 0x40; /* use command chaining */ in raw3215_mk_write_req() [all …]
|
| H A D | tape_char.c | 96 struct ccw1 *ccw, *last_ccw; in tapechar_read() local 142 ccw = request->cpaddr; in tapechar_read() 144 while (++ccw < last_ccw) { in tapechar_read() 146 if (idal_buffer_to_user(*ibs++, data, ccw->count) != 0) { in tapechar_read() 150 read += ccw->count; in tapechar_read() 151 data += ccw->count; in tapechar_read() 170 struct ccw1 *ccw, *last_ccw; in tapechar_write() local 223 ccw = request->cpaddr; in tapechar_write() 224 while (++ccw < last_ccw) in tapechar_write() 225 wbytes += ccw->count; in tapechar_write()
|
| /linux/drivers/s390/virtio/ |
| H A D | virtio_ccw.c | 371 struct ccw1 *ccw, __u32 intparm) in ccw_io_helper() argument 380 ret = ccw_device_start(vcdev->cdev, ccw, intparm, 0, 0); in ccw_io_helper() 396 struct ccw1 *ccw) in virtio_ccw_drop_indicator() argument 406 &ccw->cda); in virtio_ccw_drop_indicator() 412 ccw->cmd_code = CCW_CMD_SET_IND_ADAPTER; in virtio_ccw_drop_indicator() 413 ccw->count = sizeof(*thinint_area); in virtio_ccw_drop_indicator() 418 &ccw->cda); in virtio_ccw_drop_indicator() 422 ccw->cmd_code = CCW_CMD_SET_IND; in virtio_ccw_drop_indicator() 423 ccw->count = sizeof(*indicatorp); in virtio_ccw_drop_indicator() 427 ccw->flags = 0; in virtio_ccw_drop_indicator() [all …]
|
| /linux/drivers/s390/block/ |
| H A D | dasd_fba.c | 50 MODULE_DEVICE_TABLE(ccw, dasd_fba_ids); 75 define_extent(struct ccw1 * ccw, struct DE_fba_data *data, int rw, in define_extent() argument 78 ccw->cmd_code = DASD_FBA_CCW_DEFINE_EXTENT; in define_extent() 79 ccw->flags = 0; in define_extent() 80 ccw->count = 16; in define_extent() 81 ccw->cda = virt_to_dma32(data); in define_extent() 95 locate_record(struct ccw1 * ccw, struct LO_fba_data *data, int rw, in locate_record() argument 98 ccw->cmd_code = DASD_FBA_CCW_LOCATE; in locate_record() 99 ccw->flags = 0; in locate_record() 100 ccw->count = 8; in locate_record() [all …]
|
| H A D | dasd_eckd.c | 68 MODULE_DEVICE_TABLE(ccw, dasd_eckd_ids); 81 struct ccw1 ccw; member 88 struct ccw1 ccw[2]; member 104 struct ccw1 ccw; member 246 static int set_timestamp(struct ccw1 *ccw, struct DE_eckd_data *data, in set_timestamp() argument 265 if (ccw) { in set_timestamp() 266 ccw->count = sizeof(struct DE_eckd_data); in set_timestamp() 267 ccw->flags |= CCW_FLAG_SLI; in set_timestamp() 274 define_extent(struct ccw1 *ccw, struct DE_eckd_data *data, unsigned int trk, in define_extent() argument 283 if (ccw) { in define_extent() [all …]
|
| H A D | dasd_3990_erp.c | 197 struct ccw1 *ccw; in dasd_3990_erp_DCTL() local 215 ccw = dctl_cqr->cpaddr; in dasd_3990_erp_DCTL() 216 memset(ccw, 0, sizeof(struct ccw1)); in dasd_3990_erp_DCTL() 217 ccw->cmd_code = CCW_CMD_DCTL; in dasd_3990_erp_DCTL() 218 ccw->count = 4; in dasd_3990_erp_DCTL() 219 ccw->cda = virt_to_dma32(DCTL_data); in dasd_3990_erp_DCTL() 1592 struct ccw1 *ccw, *oldccw; in dasd_3990_erp_action_1B_32() local 1685 ccw = erp->cpaddr; in dasd_3990_erp_action_1B_32() 1686 memset(ccw, 0, sizeof(struct ccw1)); in dasd_3990_erp_action_1B_32() 1687 ccw->cmd_code = DASD_ECKD_CCW_DEFINE_EXTENT; in dasd_3990_erp_action_1B_32() [all …]
|
| H A D | dasd_alias.c | 411 struct ccw1 *ccw; in read_unit_address_configuration() local 433 ccw = cqr->cpaddr; in read_unit_address_configuration() 434 ccw->cmd_code = DASD_ECKD_CCW_PSF; in read_unit_address_configuration() 435 ccw->count = sizeof(struct dasd_psf_prssd_data); in read_unit_address_configuration() 436 ccw->flags |= CCW_FLAG_CC; in read_unit_address_configuration() 437 ccw->cda = virt_to_dma32(prssdp); in read_unit_address_configuration() 442 ccw++; in read_unit_address_configuration() 443 ccw->cmd_code = DASD_ECKD_CCW_RSSD; in read_unit_address_configuration() 444 ccw->count = sizeof(*(lcu->uac)); in read_unit_address_configuration() 445 ccw->cda = virt_to_dma32(lcu->uac); in read_unit_address_configuration() [all …]
|
| H A D | dasd_eer.c | 456 struct ccw1 *ccw; in dasd_eer_enable() local 485 ccw = cqr->cpaddr; in dasd_eer_enable() 486 ccw->cmd_code = DASD_ECKD_CCW_SNSS; in dasd_eer_enable() 487 ccw->count = SNSS_DATA_SIZE; in dasd_eer_enable() 488 ccw->flags = 0; in dasd_eer_enable() 489 ccw->cda = virt_to_dma32(cqr->data); in dasd_eer_enable()
|
| /linux/drivers/dma/ |
| H A D | mxs-dma.c | 114 struct mxs_dma_ccw *ccw; member 401 mxs_chan->ccw = dma_alloc_coherent(mxs_dma->dma_device.dev, in mxs_dma_alloc_chan_resources() 404 if (!mxs_chan->ccw) { in mxs_dma_alloc_chan_resources() 432 mxs_chan->ccw, mxs_chan->ccw_phys); in mxs_dma_alloc_chan_resources() 447 mxs_chan->ccw, mxs_chan->ccw_phys); in mxs_dma_free_chan_resources() 481 struct mxs_dma_ccw *ccw; in mxs_dma_prep_slave_sg() local 506 ccw = &mxs_chan->ccw[idx - 1]; in mxs_dma_prep_slave_sg() 507 ccw->next = mxs_chan->ccw_phys + sizeof(*ccw) * idx; in mxs_dma_prep_slave_sg() 508 ccw->bits |= CCW_CHAIN; in mxs_dma_prep_slave_sg() 509 ccw->bits &= ~CCW_IRQ; in mxs_dma_prep_slave_sg() [all …]
|
| /linux/drivers/s390/cio/ |
| H A D | vfio_ccw_cp.c | 261 static inline int ccw_does_data_transfer(struct ccw1 *ccw) in ccw_does_data_transfer() argument 264 if (ccw->count == 0) in ccw_does_data_transfer() 268 if (ccw_is_noop(ccw)) in ccw_does_data_transfer() 272 if (!ccw_is_skip(ccw)) in ccw_does_data_transfer() 280 if (ccw_is_read(ccw) || ccw_is_read_backward(ccw)) in ccw_does_data_transfer() 283 if (ccw_is_sense(ccw)) in ccw_does_data_transfer() 310 static inline int is_tic_within_range(struct ccw1 *ccw, u32 head, int len) in is_tic_within_range() argument 312 if (!ccw_is_tic(ccw)) in is_tic_within_range() 315 return is_cpa_within_range(ccw->cda, head, len); in is_tic_within_range() 355 struct ccw1 *ccw = &chain->ch_ccw[idx]; in ccwchain_cda_free() local [all …]
|
| H A D | qdio_main.c | 804 rc = ccw_device_start(cdev, irq_ptr->ccw, intparm, 0, 0); in qdio_int_handler() 938 kfree(irq_ptr->ccw); in qdio_free() 968 irq_ptr->ccw = kmalloc_obj(*irq_ptr->ccw, GFP_KERNEL | GFP_DMA); in qdio_allocate() 969 if (!irq_ptr->ccw) in qdio_allocate() 973 kmemleak_not_leak(irq_ptr->ccw); in qdio_allocate() 1012 kfree(irq_ptr->ccw); in qdio_allocate() 1088 irq_ptr->ccw->cmd_code = ciw->cmd; in qdio_establish() 1089 irq_ptr->ccw->flags = CCW_FLAG_SLI; in qdio_establish() 1090 irq_ptr->ccw->count = ciw->count; in qdio_establish() 1091 irq_ptr->ccw->cda = virt_to_dma32(irq_ptr->qdr); in qdio_establish() [all …]
|
| /linux/arch/s390/include/asm/ |
| H A D | idals.h | 88 static inline int set_normalized_cda(struct ccw1 *ccw, void *vaddr) in set_normalized_cda() argument 93 if (ccw->flags & CCW_FLAG_IDA) in set_normalized_cda() 95 nridaws = idal_nr_words(vaddr, ccw->count); in set_normalized_cda() 100 idal_create_words(idal, vaddr, ccw->count); in set_normalized_cda() 101 ccw->flags |= CCW_FLAG_IDA; in set_normalized_cda() 104 ccw->cda = virt_to_dma32(vaddr); in set_normalized_cda() 111 static inline void clear_normalized_cda(struct ccw1 *ccw) in clear_normalized_cda() argument 113 if (ccw->flags & CCW_FLAG_IDA) { in clear_normalized_cda() 114 kfree(dma32_to_virt(ccw->cda)); in clear_normalized_cda() 115 ccw->flags &= ~CCW_FLAG_IDA; in clear_normalized_cda() [all …]
|
| /linux/Documentation/driver-api/ |
| H A 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/arch/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/drivers/s390/net/ |
| H A 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_dma32(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 …]
|
| H A D | ctcm_fsms.c | 278 clear_normalized_cda(&ch->ccw[4]); in chx_txdone() 306 ch->ccw[1].count = ch->trans_skb->len; in chx_txdone() 309 rc = ccw_device_start(ch->cdev, &ch->ccw[0], 0, 0xff, 0); in chx_txdone() 417 ch->ccw[1].count = ch->max_bufsize; in chx_rx() 418 rc = ccw_device_start(ch->cdev, &ch->ccw[0], 0, 0xff, 0); in chx_rx() 474 ch->ccw[1].count = 2; /* Transfer only length */ in chx_firstio() 478 rc = ccw_device_start(ch->cdev, &ch->ccw[0], 0, 0xff, 0); in chx_firstio() 524 ch->ccw[1].count = ch->max_bufsize; in chx_rxidle() 526 rc = ccw_device_start(ch->cdev, &ch->ccw[0], 0, 0xff, 0); in chx_rxidle() 562 CTCM_CCW_DUMP((char *)&ch->ccw[6], sizeof(struct ccw1) * 2); in ctcm_chx_setmode() [all …]
|
| H A D | ctcm_main.c | 219 clear_normalized_cda(&ch->ccw[4]); in channel_remove() 221 clear_normalized_cda(&ch->ccw[1]); in channel_remove() 229 kfree(ch->ccw); in channel_remove() 383 clear_normalized_cda(&ch->ccw[1]); in ctcm_ch_alloc_buffer() 394 ch->ccw[1].count = ch->max_bufsize; in ctcm_ch_alloc_buffer() 395 if (set_normalized_cda(&ch->ccw[1], ch->trans_skb->data)) { in ctcm_ch_alloc_buffer() 406 ch->ccw[1].count = 0; in ctcm_ch_alloc_buffer() 533 ch->ccw[4].count = block_len; in ctcm_transmit_skb() 534 if (set_normalized_cda(&ch->ccw[4], skb->data)) { in ctcm_transmit_skb() 553 ch->ccw[1].count = skb->len; in ctcm_transmit_skb() [all …]
|
| /linux/drivers/crypto/nx/ |
| H A D | nx-common-powernv.c | 462 u32 ccw; in nx842_exec_icswx() local 483 ccw = 0; in nx842_exec_icswx() 484 ccw = SET_FIELD(CCW_CT, ccw, nx842_ct); in nx842_exec_icswx() 485 ccw = SET_FIELD(CCW_CI_842, ccw, 0); /* use 0 for hw auto-selection */ in nx842_exec_icswx() 486 ccw = SET_FIELD(CCW_FC_842, ccw, fc); in nx842_exec_icswx() 491 ret = icswx(cpu_to_be32(ccw), crb); in nx842_exec_icswx() 494 (unsigned int)ccw, in nx842_exec_icswx() 495 (unsigned int)be32_to_cpu(crb->ccw)); in nx842_exec_icswx() 566 u32 ccw; in nx842_exec_vas() local 580 ccw = 0; in nx842_exec_vas() [all …]
|
| /linux/arch/s390/kernel/ |
| H A 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()
|
| H A D | ipl.c | 435 return sysfs_emit(page, "0.%x.%04x\n", ipl_block.ccw.ssid, in sys_ipl_device_show() 436 ipl_block.ccw.devno); in sys_ipl_device_show() 775 memset(ipb->ccw.vm_parm, 0, DIAG308_VMPARM_SIZE); in reipl_generic_vmparm_store() 776 ipb->ccw.vm_parm_len = ip_len; in reipl_generic_vmparm_store() 778 ipb->ccw.vm_flags |= IPL_PB0_CCW_VM_FLAG_VP; in reipl_generic_vmparm_store() 779 memcpy(ipb->ccw.vm_parm, buf, ip_len); in reipl_generic_vmparm_store() 780 ASCEBC(ipb->ccw.vm_parm, ip_len); in reipl_generic_vmparm_store() 782 ipb->ccw.vm_flags &= ~IPL_PB0_CCW_VM_FLAG_VP; in reipl_generic_vmparm_store() 911 DEFINE_GENERIC_LOADPARM(ccw); 1003 DEFINE_IPL_CCW_ATTR_RW(reipl_ccw, device, reipl_block_ccw->ccw); [all …]
|
| /linux/Documentation/arch/s390/ |
| H A 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 …]
|
| H A 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 …]
|
| /linux/arch/powerpc/include/asm/ |
| H A 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()
|