Home
last modified time | relevance | path

Searched refs:ccw (Results 1 – 25 of 50) sorted by relevance

12

/linux-6.6.21/drivers/s390/char/
Dtape.h303 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 …]
Dtape_std.c269 struct ccw1 *ccw; in tape_std_mtfsf() local
276 ccw = tape_ccw_cc(request->cpaddr, MODE_SET_DB, 1, in tape_std_mtfsf()
278 ccw = tape_ccw_repeat(ccw, FORSPACEFILE, mt_count); in tape_std_mtfsf()
279 ccw = tape_ccw_end(ccw, NOP, 0, NULL); in tape_std_mtfsf()
293 struct ccw1 *ccw; in tape_std_mtfsr() local
301 ccw = tape_ccw_cc(request->cpaddr, MODE_SET_DB, 1, in tape_std_mtfsr()
303 ccw = tape_ccw_repeat(ccw, FORSPACEBLOCK, mt_count); in tape_std_mtfsr()
304 ccw = tape_ccw_end(ccw, NOP, 0, NULL); in tape_std_mtfsr()
325 struct ccw1 *ccw; in tape_std_mtbsr() local
333 ccw = tape_ccw_cc(request->cpaddr, MODE_SET_DB, 1, in tape_std_mtbsr()
[all …]
Draw3270.c163 rq->ccw.cda = __pa(rq->buffer); in raw3270_request_alloc()
164 rq->ccw.flags = CCW_FLAG_SLI; in raw3270_request_alloc()
187 rq->ccw.cmd_code = 0; in raw3270_request_reset()
188 rq->ccw.count = 0; in raw3270_request_reset()
189 rq->ccw.cda = __pa(rq->buffer); in raw3270_request_reset()
190 rq->ccw.flags = CCW_FLAG_SLI; in raw3270_request_reset()
202 rq->ccw.cmd_code = cmd; in raw3270_request_set_cmd()
211 if (size + rq->ccw.count > rq->size) in raw3270_request_add_data()
213 memcpy(rq->buffer + rq->ccw.count, data, size); in raw3270_request_add_data()
214 rq->ccw.count += size; in raw3270_request_add_data()
[all …]
Dcon3215.c147 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 = (__u32)__pa(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 …]
/linux-6.6.21/drivers/s390/virtio/
Dvirtio_ccw.c323 struct ccw1 *ccw, __u32 intparm) in ccw_io_helper() argument
332 ret = ccw_device_start(vcdev->cdev, ccw, intparm, 0, 0); in ccw_io_helper()
348 struct ccw1 *ccw) in virtio_ccw_drop_indicator() argument
363 ccw->cmd_code = CCW_CMD_SET_IND_ADAPTER; in virtio_ccw_drop_indicator()
364 ccw->count = sizeof(*thinint_area); in virtio_ccw_drop_indicator()
365 ccw->cda = (__u32)virt_to_phys(thinint_area); in virtio_ccw_drop_indicator()
373 ccw->cmd_code = CCW_CMD_SET_IND; in virtio_ccw_drop_indicator()
374 ccw->count = sizeof(indicators(vcdev)); in virtio_ccw_drop_indicator()
375 ccw->cda = (__u32)virt_to_phys(indicatorp); in virtio_ccw_drop_indicator()
379 ccw->flags = 0; in virtio_ccw_drop_indicator()
[all …]
/linux-6.6.21/drivers/s390/block/
Ddasd_fba.c55 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)virt_to_phys(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 …]
Ddasd_eckd.c74 MODULE_DEVICE_TABLE(ccw, dasd_eckd_ids);
87 struct ccw1 ccw; member
94 struct ccw1 ccw[2]; member
110 struct ccw1 ccw; member
252 static int set_timestamp(struct ccw1 *ccw, struct DE_eckd_data *data, in set_timestamp() argument
271 if (ccw) { in set_timestamp()
272 ccw->count = sizeof(struct DE_eckd_data); in set_timestamp()
273 ccw->flags |= CCW_FLAG_SLI; in set_timestamp()
280 define_extent(struct ccw1 *ccw, struct DE_eckd_data *data, unsigned int trk, in define_extent() argument
289 if (ccw) { in define_extent()
[all …]
Ddasd_3990_erp.c201 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)virt_to_phys(DCTL_data); in dasd_3990_erp_DCTL()
1618 struct ccw1 *ccw, *oldccw; in dasd_3990_erp_action_1B_32() local
1712 ccw = erp->cpaddr; in dasd_3990_erp_action_1B_32()
1713 memset(ccw, 0, sizeof(struct ccw1)); in dasd_3990_erp_action_1B_32()
1714 ccw->cmd_code = DASD_ECKD_CCW_DEFINE_EXTENT; in dasd_3990_erp_action_1B_32()
[all …]
Ddasd_alias.c420 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)virt_to_phys(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)virt_to_phys(lcu->uac); in read_unit_address_configuration()
[all …]
Ddasd_eer.c462 struct ccw1 *ccw; in dasd_eer_enable() local
491 ccw = cqr->cpaddr; in dasd_eer_enable()
492 ccw->cmd_code = DASD_ECKD_CCW_SNSS; in dasd_eer_enable()
493 ccw->count = SNSS_DATA_SIZE; in dasd_eer_enable()
494 ccw->flags = 0; in dasd_eer_enable()
495 ccw->cda = (__u32)virt_to_phys(cqr->data); in dasd_eer_enable()
/linux-6.6.21/drivers/s390/cio/
Dvfio_ccw_cp.c261 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()
309 static inline int is_tic_within_range(struct ccw1 *ccw, u32 head, int len) in is_tic_within_range() argument
311 if (!ccw_is_tic(ccw)) in is_tic_within_range()
314 return is_cpa_within_range(ccw->cda, head, len); in is_tic_within_range()
354 struct ccw1 *ccw = &chain->ch_ccw[idx]; in ccwchain_cda_free() local
[all …]
Dqdio_main.c920 kfree(irq_ptr->ccw); in qdio_free()
950 irq_ptr->ccw = kmalloc(sizeof(*irq_ptr->ccw), GFP_KERNEL | GFP_DMA); in qdio_allocate()
951 if (!irq_ptr->ccw) in qdio_allocate()
955 kmemleak_not_leak(irq_ptr->ccw); in qdio_allocate()
994 kfree(irq_ptr->ccw); in qdio_allocate()
1070 irq_ptr->ccw->cmd_code = ciw->cmd; in qdio_establish()
1071 irq_ptr->ccw->flags = CCW_FLAG_SLI; in qdio_establish()
1072 irq_ptr->ccw->count = ciw->count; in qdio_establish()
1073 irq_ptr->ccw->cda = (u32) virt_to_phys(irq_ptr->qdr); in qdio_establish()
1078 rc = ccw_device_start(cdev, irq_ptr->ccw, QDIO_DOING_ESTABLISH, 0, 0); in qdio_establish()
[all …]
/linux-6.6.21/drivers/dma/
Dmxs-dma.c114 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-6.6.21/arch/s390/include/asm/
Didals.h83 set_normalized_cda(struct ccw1 * ccw, void *vaddr) in set_normalized_cda() argument
88 if (ccw->flags & CCW_FLAG_IDA) in set_normalized_cda()
90 nridaws = idal_nr_words(vaddr, ccw->count); in set_normalized_cda()
96 idal_create_words(idal, vaddr, ccw->count); in set_normalized_cda()
97 ccw->flags |= CCW_FLAG_IDA; in set_normalized_cda()
100 ccw->cda = (__u32)(unsigned long) vaddr; in set_normalized_cda()
108 clear_normalized_cda(struct ccw1 * ccw) in clear_normalized_cda() argument
110 if (ccw->flags & CCW_FLAG_IDA) { in clear_normalized_cda()
111 kfree((void *)(unsigned long) ccw->cda); in clear_normalized_cda()
112 ccw->flags &= ~CCW_FLAG_IDA; in clear_normalized_cda()
[all …]
Dipl.h24 struct ipl_pb0_ccw ccw; member
86 } ccw; member
/linux-6.6.21/Documentation/driver-api/
Ds390-drivers.rst39 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-6.6.21/drivers/s390/net/
Dctcm_mpc.c1513 rc = ccw_device_start(ch->cdev, &ch->ccw[15], 0, 0xff, 0); in mpc_action_send_discontact()
1695 ch->ccw[8].flags = CCW_FLAG_SLI | CCW_FLAG_CC; in mpc_action_side_xid()
1696 ch->ccw[8].count = 0; in mpc_action_side_xid()
1697 ch->ccw[8].cda = 0x00; in mpc_action_side_xid()
1708 ch->ccw[9].cmd_code = CCW_CMD_WRITE; in mpc_action_side_xid()
1709 ch->ccw[9].flags = CCW_FLAG_SLI | CCW_FLAG_CC; in mpc_action_side_xid()
1710 ch->ccw[9].count = TH_HEADER_LENGTH; in mpc_action_side_xid()
1711 ch->ccw[9].cda = virt_to_phys(ch->xid_th); in mpc_action_side_xid()
1715 ch->ccw[10].cmd_code = CCW_CMD_WRITE; in mpc_action_side_xid()
1716 ch->ccw[10].flags = CCW_FLAG_SLI | CCW_FLAG_CC; in mpc_action_side_xid()
[all …]
Dctcm_fsms.c279 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 …]
Dctcm_main.c220 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-6.6.21/arch/s390/kernel/
Dipl_vmparm.c16 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()
Dipl.c356 return sprintf(page, "0.%x.%04x\n", ipl_block.ccw.ssid, in sys_ipl_device_show()
357 ipl_block.ccw.devno); in sys_ipl_device_show()
729 memset(ipb->ccw.vm_parm, 0, DIAG308_VMPARM_SIZE); in reipl_generic_vmparm_store()
730 ipb->ccw.vm_parm_len = ip_len; in reipl_generic_vmparm_store()
732 ipb->ccw.vm_flags |= IPL_PB0_CCW_VM_FLAG_VP; in reipl_generic_vmparm_store()
733 memcpy(ipb->ccw.vm_parm, buf, ip_len); in reipl_generic_vmparm_store()
734 ASCEBC(ipb->ccw.vm_parm, ip_len); in reipl_generic_vmparm_store()
736 ipb->ccw.vm_flags &= ~IPL_PB0_CCW_VM_FLAG_VP; in reipl_generic_vmparm_store()
898 DEFINE_GENERIC_LOADPARM(ccw);
1023 DEFINE_IPL_CCW_ATTR_RW(reipl_ccw, device, reipl_block_ccw->ccw);
[all …]
/linux-6.6.21/drivers/crypto/nx/
Dnx-common-powernv.c461 u32 ccw; in nx842_exec_icswx() local
482 ccw = 0; in nx842_exec_icswx()
483 ccw = SET_FIELD(CCW_CT, ccw, nx842_ct); in nx842_exec_icswx()
484 ccw = SET_FIELD(CCW_CI_842, ccw, 0); /* use 0 for hw auto-selection */ in nx842_exec_icswx()
485 ccw = SET_FIELD(CCW_FC_842, ccw, fc); in nx842_exec_icswx()
490 ret = icswx(cpu_to_be32(ccw), crb); in nx842_exec_icswx()
493 (unsigned int)ccw, in nx842_exec_icswx()
494 (unsigned int)be32_to_cpu(crb->ccw)); in nx842_exec_icswx()
565 u32 ccw; in nx842_exec_vas() local
579 ccw = 0; in nx842_exec_vas()
[all …]
/linux-6.6.21/Documentation/arch/s390/
Dvfio-ccw.rst2 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 …]
Ddriver-model.rst11 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-6.6.21/arch/powerpc/include/asm/
Dicswx.h142 __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()

12