Lines Matching +full:ccode +full:- +full:map
1 // SPDX-License-Identifier: GPL-2.0
3 * S/390 common I/O routines -- channel subsystem call
58 * chsc_error_from_response() - convert a chsc response to an error
75 return -EINVAL; in chsc_error_from_response()
78 return -EOPNOTSUPP; in chsc_error_from_response()
81 return -EBUSY; in chsc_error_from_response()
84 return -ENOMEM; in chsc_error_from_response()
86 return -EUSERS; in chsc_error_from_response()
88 return -EIO; in chsc_error_from_response()
113 u8 chpid[8]; /* chpids 0-7 */
114 u16 fla[8]; /* full link addresses 0-7 */
121 int ccode; in chsc_get_ssd_info() local
129 ssd_area->request.length = 0x0010; in chsc_get_ssd_info()
130 ssd_area->request.code = 0x0004; in chsc_get_ssd_info()
131 ssd_area->ssid = schid.ssid; in chsc_get_ssd_info()
132 ssd_area->f_sch = schid.sch_no; in chsc_get_ssd_info()
133 ssd_area->l_sch = schid.sch_no; in chsc_get_ssd_info()
135 ccode = chsc(ssd_area); in chsc_get_ssd_info()
137 if (ccode > 0) { in chsc_get_ssd_info()
138 ret = (ccode == 3) ? -ENODEV : -EBUSY; in chsc_get_ssd_info()
141 ret = chsc_error_from_response(ssd_area->response.code); in chsc_get_ssd_info()
145 ssd_area->response.code); in chsc_get_ssd_info()
148 if (!ssd_area->sch_valid) { in chsc_get_ssd_info()
149 ret = -ENODEV; in chsc_get_ssd_info()
155 if ((ssd_area->st != SUBCHANNEL_TYPE_IO) && in chsc_get_ssd_info()
156 (ssd_area->st != SUBCHANNEL_TYPE_MSG)) in chsc_get_ssd_info()
158 ssd->path_mask = ssd_area->path_mask; in chsc_get_ssd_info()
159 ssd->fla_valid_mask = ssd_area->fla_valid_mask; in chsc_get_ssd_info()
162 if (ssd_area->path_mask & mask) { in chsc_get_ssd_info()
163 chp_id_init(&ssd->chpid[i]); in chsc_get_ssd_info()
164 ssd->chpid[i].id = ssd_area->chpid[i]; in chsc_get_ssd_info()
166 if (ssd_area->fla_valid_mask & mask) in chsc_get_ssd_info()
167 ssd->fla[i] = ssd_area->fla[i]; in chsc_get_ssd_info()
175 * chsc_ssqd() - store subchannel QDIO data (SSQD)
184 ssqd->request.length = 0x0010; in chsc_ssqd()
185 ssqd->request.code = 0x0024; in chsc_ssqd()
186 ssqd->first_sch = schid.sch_no; in chsc_ssqd()
187 ssqd->last_sch = schid.sch_no; in chsc_ssqd()
188 ssqd->ssid = schid.ssid; in chsc_ssqd()
191 return -EIO; in chsc_ssqd()
193 return chsc_error_from_response(ssqd->response.code); in chsc_ssqd()
198 * chsc_sadc() - set adapter device controls (SADC)
211 scssc->request.length = 0x0fe0; in chsc_sadc()
212 scssc->request.code = 0x0021; in chsc_sadc()
213 scssc->operation_code = 0; in chsc_sadc()
215 scssc->summary_indicator_addr = summary_indicator_addr; in chsc_sadc()
216 scssc->subchannel_indicator_addr = subchannel_indicator_addr; in chsc_sadc()
218 scssc->ks = PAGE_DEFAULT_KEY >> 4; in chsc_sadc()
219 scssc->kc = PAGE_DEFAULT_KEY >> 4; in chsc_sadc()
220 scssc->isc = isc; in chsc_sadc()
221 scssc->schid = schid; in chsc_sadc()
225 scssc->word_with_d_bit = 0x10000000; in chsc_sadc()
228 return -EIO; in chsc_sadc()
230 return chsc_error_from_response(scssc->response.code); in chsc_sadc()
236 spin_lock_irq(&sch->lock); in s390_subchannel_remove_chpid()
237 if (sch->driver && sch->driver->chp_event) in s390_subchannel_remove_chpid()
238 if (sch->driver->chp_event(sch, data, CHP_OFFLINE) != 0) in s390_subchannel_remove_chpid()
240 spin_unlock_irq(&sch->lock); in s390_subchannel_remove_chpid()
244 sch->lpm = 0; in s390_subchannel_remove_chpid()
245 spin_unlock_irq(&sch->lock); in s390_subchannel_remove_chpid()
246 css_schedule_eval(sch->schid); in s390_subchannel_remove_chpid()
266 mutex_lock(&chp->lock); in chsc_chp_offline()
268 mutex_unlock(&chp->lock); in chsc_chp_offline()
275 spin_lock_irq(&sch->lock); in __s390_process_res_acc()
276 if (sch->driver && sch->driver->chp_event) in __s390_process_res_acc()
277 sch->driver->chp_event(sch, data, CHP_ONLINE); in __s390_process_res_acc()
278 spin_unlock_irq(&sch->lock); in __s390_process_res_acc()
287 sprintf(dbf_txt, "accpr%x.%02x", link->chpid.cssid, in s390_process_res_acc()
288 link->chpid.id); in s390_process_res_acc()
290 if (link->fla != 0) { in s390_process_res_acc()
291 sprintf(dbf_txt, "fla%x", link->fla); in s390_process_res_acc()
309 spin_lock_irq(&sch->lock); in process_fces_event()
310 if (sch->driver && sch->driver->chp_event) in process_fces_event()
311 sch->driver->chp_event(sch, data, CHP_FCES_EVENT); in process_fces_event()
312 spin_unlock_irq(&sch->lock); in process_fces_event()
325 /* ccdf has to be big enough for a link-incident record */
326 u8 ccdf[PAGE_SIZE - 24 - 16]; /* content-code dependent field */
335 u8 ccdf[PAGE_SIZE - 24 - 56]; /* content-code dependent field */
351 u8 nt_area[PAGE_SIZE - 24];
356 * Link Incident Record as defined in SA22-7202, "ESCON I/O Interface"
396 if ((sei_area->vf & SEI_VF_FLA) != 0) { in chsc_link_from_sei()
397 link->fla = sei_area->fla; in chsc_link_from_sei()
398 link->fla_mask = ((sei_area->vf & SEI_VF_FLA) == SEI_VF_FLA) ? in chsc_link_from_sei()
409 if (nd->validity != ND_VALIDITY_VALID) { in format_node_data()
416 snprintf(params, PARAMS_LEN, "%02x,%06x", nd->byte0, nd->params); in format_node_data()
418 id = store_ebcdic(id, nd->type, sizeof(nd->type), '/'); in format_node_data()
419 id = store_ebcdic(id, nd->model, sizeof(nd->model), ','); in format_node_data()
420 id = store_ebcdic(id, nd->manufacturer, sizeof(nd->manufacturer), '.'); in format_node_data()
421 id = store_ebcdic(id, nd->plant, sizeof(nd->plant), 0); in format_node_data()
422 id = store_ebcdic(id, nd->seq, sizeof(nd->seq), ','); in format_node_data()
423 sprintf(id, "%04X", nd->tag); in format_node_data()
428 struct lir *lir = (struct lir *) &sei_area->ccdf; in chsc_process_sei_link_incident()
433 sei_area->rs, sei_area->rsid, sei_area->ccdf[0]); in chsc_process_sei_link_incident()
436 if (lir->iq.null) in chsc_process_sei_link_incident()
443 format_node_data(iuparams, iunodeid, &lir->incident_node); in chsc_process_sei_link_incident()
444 format_node_data(auparams, aunodeid, &lir->attached_node); in chsc_process_sei_link_incident()
446 switch (lir->iq.class) { in chsc_process_sei_link_incident()
450 sei_area->rs, sei_area->rsid, lir->ic, iuparams, in chsc_process_sei_link_incident()
456 sei_area->rs, sei_area->rsid, lir->ic, iuparams, in chsc_process_sei_link_incident()
472 "rs_id=%04x)\n", sei_area->rs, sei_area->rsid); in chsc_process_sei_res_acc()
473 if (sei_area->rs != 4) in chsc_process_sei_res_acc()
476 chpid.id = sei_area->rsid; in chsc_process_sei_res_acc()
486 mutex_lock(&chp->lock); in chsc_process_sei_res_acc()
488 mutex_unlock(&chp->lock); in chsc_process_sei_res_acc()
504 if (sei_area->rs != 0) in chsc_process_sei_chp_avail()
506 data = sei_area->ccdf; in chsc_process_sei_chp_avail()
520 mutex_lock(&chp->lock); in chsc_process_sei_chp_avail()
522 mutex_unlock(&chp->lock); in chsc_process_sei_chp_avail()
527 u8 map[32]; member
539 CIO_CRW_EVENT(4, "chsc: channel-path-configuration notification\n"); in chsc_process_sei_chp_config()
540 if (sei_area->rs != 0) in chsc_process_sei_chp_config()
542 data = (struct chp_config_data *) &(sei_area->ccdf); in chsc_process_sei_chp_config()
545 if (!chp_test_bit(data->map, num)) in chsc_process_sei_chp_config()
549 events[data->op], chpid.cssid, chpid.id); in chsc_process_sei_chp_config()
550 switch (data->op) { in chsc_process_sei_chp_config()
569 if (sei_area->rs != 7) in chsc_process_sei_scm_change()
583 if (sei_area->rs != 7) in chsc_process_sei_scm_avail()
595 if (sei_area->rs != 5) in chsc_process_sei_ap_cfg_chg()
609 "chsc: FCES status notification (rs=%02x, rs_id=%04x, FCES-status=%x)\n", in chsc_process_sei_fces_event()
610 sei_area->rs, sei_area->rsid, sei_area->ccdf[0]); in chsc_process_sei_fces_event()
612 if (sei_area->rs != SEI_RS_CHPID) in chsc_process_sei_fces_event()
615 chpid.id = sei_area->rsid; in chsc_process_sei_fces_event()
631 switch (sei_area->cc) { in chsc_process_sei_nt2()
633 zpci_event_error(sei_area->ccdf); in chsc_process_sei_nt2()
636 zpci_event_availability(sei_area->ccdf); in chsc_process_sei_nt2()
640 sei_area->cc); in chsc_process_sei_nt2()
648 switch (sei_area->cc) { in chsc_process_sei_nt0()
658 case 7: /* channel-path-availability information */ in chsc_process_sei_nt0()
661 case 8: /* channel-path-configuration notification */ in chsc_process_sei_nt0()
675 sei_area->cc); in chsc_process_sei_nt0()
680 if (sei_area->flags & 0x40) { in chsc_process_sei_nt0()
692 sei->request.length = 0x0010; in chsc_process_event_information()
693 sei->request.code = 0x000e; in chsc_process_event_information()
695 sei->ntsm = ntsm; in chsc_process_event_information()
700 if (sei->response.code != 0x0001) { in chsc_process_event_information()
702 sei->response.code, sei->ntsm); in chsc_process_event_information()
704 if (sei->response.code == 3 && sei->ntsm) { in chsc_process_event_information()
712 CIO_CRW_EVENT(2, "chsc: sei successful (nt=%d)\n", sei->nt); in chsc_process_event_information()
713 switch (sei->nt) { in chsc_process_event_information()
715 chsc_process_sei_nt0(&sei->u.nt0_area); in chsc_process_event_information()
718 chsc_process_sei_nt2(&sei->u.nt2_area); in chsc_process_event_information()
721 CIO_CRW_EVENT(2, "chsc: unhandled nt: %d\n", sei->nt); in chsc_process_event_information()
725 if (!(sei->u.nt0_area.flags & 0x80)) in chsc_process_event_information()
747 crw0->slct, crw0->oflw, crw0->chn, crw0->rsc, crw0->anc, in chsc_process_crw()
748 crw0->erc, crw0->rsid); in chsc_process_crw()
769 mutex_lock(&chp->lock); in chsc_chp_online()
771 mutex_unlock(&chp->lock); in chsc_chp_online()
787 spin_lock_irqsave(&sch->lock, flags); in __s390_subchannel_vary_chpid()
788 if (sch->driver && sch->driver->chp_event) in __s390_subchannel_vary_chpid()
789 sch->driver->chp_event(sch, &link, in __s390_subchannel_vary_chpid()
791 spin_unlock_irqrestore(&sch->lock, flags); in __s390_subchannel_vary_chpid()
811 * chsc_chp_vary - propagate channel-path vary operation to subchannels
812 * @chpid: channl-path ID
813 * @on: non-zero for vary online, zero for vary offline
841 if (!css->chps[i]) in chsc_remove_cmg_attr()
843 chp_remove_cmg_attr(css->chps[i]); in chsc_remove_cmg_attr()
854 if (!css->chps[i]) in chsc_add_cmg_attr()
856 ret = chp_add_cmg_attr(css->chps[i]); in chsc_add_cmg_attr()
862 while (i--) { in chsc_add_cmg_attr()
863 if (!css->chps[i]) in chsc_add_cmg_attr()
865 chp_remove_cmg_attr(css->chps[i]); in chsc_add_cmg_attr()
890 int ret, ccode, i; in __chsc_do_secm() local
895 secm_area->request.length = 0x0050; in __chsc_do_secm()
896 secm_area->request.code = 0x0016; in __chsc_do_secm()
898 secm_area->key = PAGE_DEFAULT_KEY >> 4; in __chsc_do_secm()
899 secm_area->e = 1; in __chsc_do_secm()
902 secm_area->cub[i] = (__force dma64_t)virt_to_dma32(css->cub[i]); in __chsc_do_secm()
904 secm_area->ecub[i] = virt_to_dma64(css->ecub[i]); in __chsc_do_secm()
906 secm_area->operation_code = enable ? 0 : 1; in __chsc_do_secm()
908 ccode = chsc(secm_area); in __chsc_do_secm()
909 if (ccode > 0) { in __chsc_do_secm()
910 ret = (ccode == 3) ? -ENODEV : -EBUSY; in __chsc_do_secm()
914 switch (secm_area->response.code) { in __chsc_do_secm()
917 ret = -EINVAL; in __chsc_do_secm()
920 ret = chsc_error_from_response(secm_area->response.code); in __chsc_do_secm()
924 secm_area->response.code); in __chsc_do_secm()
935 css->cub[i] = (void *)get_zeroed_page(GFP_KERNEL | GFP_DMA); in cub_alloc()
936 if (!css->cub[i]) in cub_alloc()
937 return -ENOMEM; in cub_alloc()
940 css->ecub[i] = (void *)get_zeroed_page(GFP_KERNEL); in cub_alloc()
941 if (!css->ecub[i]) in cub_alloc()
942 return -ENOMEM; in cub_alloc()
953 free_page((unsigned long)css->cub[i]); in cub_free()
954 css->cub[i] = NULL; in cub_free()
957 free_page((unsigned long)css->ecub[i]); in cub_free()
958 css->ecub[i] = NULL; in cub_free()
967 if (enable && !css->cm_enabled) { in chsc_secm()
974 css->cm_enabled = enable; in chsc_secm()
975 if (css->cm_enabled) { in chsc_secm()
979 css->cm_enabled = 0; in chsc_secm()
986 if (!css->cm_enabled) in chsc_secm()
996 int ccode, ret; in chsc_determine_channel_path_desc() local
1000 return -EINVAL; in chsc_determine_channel_path_desc()
1002 return -EINVAL; in chsc_determine_channel_path_desc()
1004 return -EINVAL; in chsc_determine_channel_path_desc()
1008 scpd_area->request.length = 0x0010; in chsc_determine_channel_path_desc()
1009 scpd_area->request.code = 0x0002; in chsc_determine_channel_path_desc()
1010 scpd_area->cssid = chpid.cssid; in chsc_determine_channel_path_desc()
1011 scpd_area->first_chpid = chpid.id; in chsc_determine_channel_path_desc()
1012 scpd_area->last_chpid = chpid.id; in chsc_determine_channel_path_desc()
1013 scpd_area->m = m; in chsc_determine_channel_path_desc()
1014 scpd_area->c = c; in chsc_determine_channel_path_desc()
1015 scpd_area->fmt = fmt; in chsc_determine_channel_path_desc()
1016 scpd_area->rfmt = rfmt; in chsc_determine_channel_path_desc()
1018 ccode = chsc(scpd_area); in chsc_determine_channel_path_desc()
1019 if (ccode > 0) in chsc_determine_channel_path_desc()
1020 return (ccode == 3) ? -ENODEV : -EBUSY; in chsc_determine_channel_path_desc()
1022 ret = chsc_error_from_response(scpd_area->response.code); in chsc_determine_channel_path_desc()
1025 scpd_area->response.code); in chsc_determine_channel_path_desc()
1045 memcpy(desc, scpd_area->data, sizeof(*desc)); \
1064 chp->cmg_chars.values[i] = chars->values[i]; in chsc_initialize_cmg_chars()
1066 chp->cmg_chars.values[i] = 0; in chsc_initialize_cmg_chars()
1076 while (p--) in scmc_get_speed()
1085 int ccode, ret; in chsc_get_channel_measurement_chars() local
1099 chp->shared = -1; in chsc_get_channel_measurement_chars()
1100 chp->cmg = -1; in chsc_get_channel_measurement_chars()
1101 chp->extended = 0; in chsc_get_channel_measurement_chars()
1102 chp->speed = 0; in chsc_get_channel_measurement_chars()
1105 return -EINVAL; in chsc_get_channel_measurement_chars()
1110 scmc_area->request.length = 0x0010; in chsc_get_channel_measurement_chars()
1111 scmc_area->request.code = 0x0022; in chsc_get_channel_measurement_chars()
1112 scmc_area->first_chpid = chp->chpid.id; in chsc_get_channel_measurement_chars()
1113 scmc_area->last_chpid = chp->chpid.id; in chsc_get_channel_measurement_chars()
1115 ccode = chsc(scmc_area); in chsc_get_channel_measurement_chars()
1116 if (ccode > 0) { in chsc_get_channel_measurement_chars()
1117 ret = (ccode == 3) ? -ENODEV : -EBUSY; in chsc_get_channel_measurement_chars()
1121 ret = chsc_error_from_response(scmc_area->response.code); in chsc_get_channel_measurement_chars()
1124 scmc_area->response.code); in chsc_get_channel_measurement_chars()
1127 chp->cmcb = scmc_area->cmcb; in chsc_get_channel_measurement_chars()
1128 if (scmc_area->cmcb.not_valid) in chsc_get_channel_measurement_chars()
1131 chp->cmg = scmc_area->cmcb.cmg; in chsc_get_channel_measurement_chars()
1132 chp->shared = scmc_area->cmcb.shared; in chsc_get_channel_measurement_chars()
1133 chp->extended = scmc_area->cmcb.extended; in chsc_get_channel_measurement_chars()
1134 chp->speed = scmc_get_speed(scmc_area->cmcb.cmgs, scmc_area->cmcb.cmgp); in chsc_get_channel_measurement_chars()
1135 chsc_initialize_cmg_chars(chp, scmc_area->cmcb.cmcv, in chsc_get_channel_measurement_chars()
1136 (struct cmg_chars *)&scmc_area->cmcb.data); in chsc_get_channel_measurement_chars()
1149 ret = -ENOMEM; in chsc_init()
1173 sda_area->request.length = 0x0400; in __chsc_enable_facility()
1174 sda_area->request.code = 0x0031; in __chsc_enable_facility()
1175 sda_area->operation_code = operation_code; in __chsc_enable_facility()
1179 ret = (ret == 3) ? -ENODEV : -EBUSY; in __chsc_enable_facility()
1183 switch (sda_area->response.code) { in __chsc_enable_facility()
1185 ret = -EOPNOTSUPP; in __chsc_enable_facility()
1188 ret = chsc_error_from_response(sda_area->response.code); in __chsc_enable_facility()
1207 operation_code, sda_area->response.code); in chsc_enable_facility()
1233 sdcal_area->request.length = 0x0020; in chsc_get_cssid_iid()
1234 sdcal_area->request.code = 0x0034; in chsc_get_cssid_iid()
1235 sdcal_area->atype = 4; in chsc_get_cssid_iid()
1239 ret = (ret == 3) ? -ENODEV : -EBUSY; in chsc_get_cssid_iid()
1243 ret = chsc_error_from_response(sdcal_area->response.code); in chsc_get_cssid_iid()
1246 sdcal_area->response.code); in chsc_get_cssid_iid()
1250 if ((addr_t) &sdcal_area->list[idx] < in chsc_get_cssid_iid()
1251 (addr_t) &sdcal_area->response + sdcal_area->response.length) { in chsc_get_cssid_iid()
1252 *cssid = sdcal_area->list[idx].cssid; in chsc_get_cssid_iid()
1253 *iid = sdcal_area->list[idx].iid; in chsc_get_cssid_iid()
1256 ret = -ENODEV; in chsc_get_cssid_iid()
1284 scsc_area->request.length = 0x0010; in chsc_determine_css_characteristics()
1285 scsc_area->request.code = 0x0010; in chsc_determine_css_characteristics()
1289 result = (result == 3) ? -ENODEV : -EBUSY; in chsc_determine_css_characteristics()
1293 result = chsc_error_from_response(scsc_area->response.code); in chsc_determine_css_characteristics()
1295 memcpy(&css_general_characteristics, scsc_area->general_char, in chsc_determine_css_characteristics()
1297 memcpy(&css_chsc_characteristics, scsc_area->chsc_char, in chsc_determine_css_characteristics()
1301 scsc_area->response.code); in chsc_determine_css_characteristics()
1328 rr->request.length = 0x0020; in chsc_sstpc()
1329 rr->request.code = 0x0033; in chsc_sstpc()
1330 rr->op = op; in chsc_sstpc()
1331 rr->ctrl = ctrl; in chsc_sstpc()
1334 return -EIO; in chsc_sstpc()
1335 rc = (rr->response.code == 0x0001) ? 0 : -EIO; in chsc_sstpc()
1337 *clock_delta = rr->clock_delta; in chsc_sstpc()
1353 rr->request.length = 0x0010; in chsc_sstpi()
1354 rr->request.code = 0x0038; in chsc_sstpi()
1357 return -EIO; in chsc_sstpi()
1358 memcpy(result, &rr->data, size); in chsc_sstpi()
1359 return (rr->response.code == 0x0001) ? 0 : -EIO; in chsc_sstpi()
1374 rr->request.length = 0x0010; in chsc_stzi()
1375 rr->request.code = 0x003e; in chsc_stzi()
1378 return -EIO; in chsc_stzi()
1379 memcpy(result, &rr->data, size); in chsc_stzi()
1380 return (rr->response.code == 0x0001) ? 0 : -EIO; in chsc_stzi()
1394 int ccode; in chsc_siosl() local
1400 siosl_area->request.length = 0x0010; in chsc_siosl()
1401 siosl_area->request.code = 0x0046; in chsc_siosl()
1402 siosl_area->word1 = 0x80000000; in chsc_siosl()
1403 siosl_area->sid = schid; in chsc_siosl()
1405 ccode = chsc(siosl_area); in chsc_siosl()
1406 if (ccode > 0) { in chsc_siosl()
1407 if (ccode == 3) in chsc_siosl()
1408 rc = -ENODEV; in chsc_siosl()
1410 rc = -EBUSY; in chsc_siosl()
1411 CIO_MSG_EVENT(2, "chsc: chsc failed for 0.%x.%04x (ccode=%d)\n", in chsc_siosl()
1412 schid.ssid, schid.sch_no, ccode); in chsc_siosl()
1415 rc = chsc_error_from_response(siosl_area->response.code); in chsc_siosl()
1419 siosl_area->response.code); in chsc_siosl()
1430 * chsc_scm_info() - store SCM information (SSI)
1438 int ccode, ret; in chsc_scm_info() local
1441 scm_area->request.length = 0x0020; in chsc_scm_info()
1442 scm_area->request.code = 0x004C; in chsc_scm_info()
1443 scm_area->reqtok = token; in chsc_scm_info()
1445 ccode = chsc(scm_area); in chsc_scm_info()
1446 if (ccode > 0) { in chsc_scm_info()
1447 ret = (ccode == 3) ? -ENODEV : -EBUSY; in chsc_scm_info()
1450 ret = chsc_error_from_response(scm_area->response.code); in chsc_scm_info()
1453 scm_area->response.code); in chsc_scm_info()
1460 * chsc_pnso() - Perform Network-Subchannel Operation
1465 * @cnc: Boolean change-notification control
1475 pnso_area->request.length = 0x0030; in chsc_pnso()
1476 pnso_area->request.code = 0x003d; /* network-subchannel operation */ in chsc_pnso()
1477 pnso_area->m = schid.m; in chsc_pnso()
1478 pnso_area->ssid = schid.ssid; in chsc_pnso()
1479 pnso_area->sch = schid.sch_no; in chsc_pnso()
1480 pnso_area->cssid = schid.cssid; in chsc_pnso()
1481 pnso_area->oc = oc; in chsc_pnso()
1482 pnso_area->resume_token = resume_token; in chsc_pnso()
1483 pnso_area->n = (cnc != 0); in chsc_pnso()
1485 return -EIO; in chsc_pnso()
1486 return chsc_error_from_response(pnso_area->response.code); in chsc_pnso()
1512 sgib_area->request.length = 0x0fe0; in chsc_sgib()
1513 sgib_area->request.code = 0x0021; in chsc_sgib()
1514 sgib_area->op = 0x1; in chsc_sgib()
1515 sgib_area->gib_origin = origin; in chsc_sgib()
1519 ret = chsc_error_from_response(sgib_area->response.code); in chsc_sgib()
1559 * chsc_scud() - Store control-unit description.
1560 * @cu: number of the control-unit
1561 * @esm: 8 1-byte endpoint security mode values
1576 scud->request.length = SCUD_REQ_LEN; in chsc_scud()
1577 scud->request.code = SCUD_REQ_CMD; in chsc_scud()
1578 scud->fmt = 0; in chsc_scud()
1579 scud->cssid = 0; in chsc_scud()
1580 scud->first_cu = cu; in chsc_scud()
1581 scud->last_cu = cu; in chsc_scud()
1585 ret = chsc_error_from_response(scud->response.code); in chsc_scud()
1587 if (!ret && (scud->response.length <= 8 || scud->fmt_resp != 0 in chsc_scud()
1588 || !(scud->cudb[0].flags & 0x80) in chsc_scud()
1589 || scud->cudb[0].cu != cu)) { in chsc_scud()
1593 scud->response.code, scud->response.length, in chsc_scud()
1594 scud->fmt_resp, scud->cudb[0].flags, scud->cudb[0].cu); in chsc_scud()
1595 ret = -EINVAL; in chsc_scud()
1601 memcpy(esm, scud->cudb[0].esm, sizeof(*esm)); in chsc_scud()
1602 *esm_valid = scud->cudb[0].esm_valid; in chsc_scud()