• Home
  • Raw
  • Download

Lines Matching +full:ccode +full:- +full:map

1 // SPDX-License-Identifier: GPL-2.0
3 * S/390 common I/O routines -- channel subsystem call
44 * chsc_error_from_response() - convert a chsc response to an error
61 return -EINVAL; in chsc_error_from_response()
64 return -EOPNOTSUPP; in chsc_error_from_response()
67 return -EBUSY; in chsc_error_from_response()
70 return -ENOMEM; in chsc_error_from_response()
72 return -EUSERS; in chsc_error_from_response()
74 return -EIO; in chsc_error_from_response()
99 u8 chpid[8]; /* chpids 0-7 */
100 u16 fla[8]; /* full link addresses 0-7 */
107 int ccode; in chsc_get_ssd_info() local
115 ssd_area->request.length = 0x0010; in chsc_get_ssd_info()
116 ssd_area->request.code = 0x0004; in chsc_get_ssd_info()
117 ssd_area->ssid = schid.ssid; in chsc_get_ssd_info()
118 ssd_area->f_sch = schid.sch_no; in chsc_get_ssd_info()
119 ssd_area->l_sch = schid.sch_no; in chsc_get_ssd_info()
121 ccode = chsc(ssd_area); in chsc_get_ssd_info()
123 if (ccode > 0) { in chsc_get_ssd_info()
124 ret = (ccode == 3) ? -ENODEV : -EBUSY; in chsc_get_ssd_info()
127 ret = chsc_error_from_response(ssd_area->response.code); in chsc_get_ssd_info()
131 ssd_area->response.code); in chsc_get_ssd_info()
134 if (!ssd_area->sch_valid) { in chsc_get_ssd_info()
135 ret = -ENODEV; in chsc_get_ssd_info()
141 if ((ssd_area->st != SUBCHANNEL_TYPE_IO) && in chsc_get_ssd_info()
142 (ssd_area->st != SUBCHANNEL_TYPE_MSG)) in chsc_get_ssd_info()
144 ssd->path_mask = ssd_area->path_mask; in chsc_get_ssd_info()
145 ssd->fla_valid_mask = ssd_area->fla_valid_mask; in chsc_get_ssd_info()
148 if (ssd_area->path_mask & mask) { in chsc_get_ssd_info()
149 chp_id_init(&ssd->chpid[i]); in chsc_get_ssd_info()
150 ssd->chpid[i].id = ssd_area->chpid[i]; in chsc_get_ssd_info()
152 if (ssd_area->fla_valid_mask & mask) in chsc_get_ssd_info()
153 ssd->fla[i] = ssd_area->fla[i]; in chsc_get_ssd_info()
161 * chsc_ssqd() - store subchannel QDIO data (SSQD)
170 ssqd->request.length = 0x0010; in chsc_ssqd()
171 ssqd->request.code = 0x0024; in chsc_ssqd()
172 ssqd->first_sch = schid.sch_no; in chsc_ssqd()
173 ssqd->last_sch = schid.sch_no; in chsc_ssqd()
174 ssqd->ssid = schid.ssid; in chsc_ssqd()
177 return -EIO; in chsc_ssqd()
179 return chsc_error_from_response(ssqd->response.code); in chsc_ssqd()
184 * chsc_sadc() - set adapter device controls (SADC)
197 scssc->request.length = 0x0fe0; in chsc_sadc()
198 scssc->request.code = 0x0021; in chsc_sadc()
199 scssc->operation_code = 0; in chsc_sadc()
201 scssc->summary_indicator_addr = summary_indicator_addr; in chsc_sadc()
202 scssc->subchannel_indicator_addr = subchannel_indicator_addr; in chsc_sadc()
204 scssc->ks = PAGE_DEFAULT_KEY >> 4; in chsc_sadc()
205 scssc->kc = PAGE_DEFAULT_KEY >> 4; in chsc_sadc()
206 scssc->isc = isc; in chsc_sadc()
207 scssc->schid = schid; in chsc_sadc()
211 scssc->word_with_d_bit = 0x10000000; in chsc_sadc()
214 return -EIO; in chsc_sadc()
216 return chsc_error_from_response(scssc->response.code); in chsc_sadc()
222 spin_lock_irq(sch->lock); in s390_subchannel_remove_chpid()
223 if (sch->driver && sch->driver->chp_event) in s390_subchannel_remove_chpid()
224 if (sch->driver->chp_event(sch, data, CHP_OFFLINE) != 0) in s390_subchannel_remove_chpid()
226 spin_unlock_irq(sch->lock); in s390_subchannel_remove_chpid()
230 sch->lpm = 0; in s390_subchannel_remove_chpid()
231 spin_unlock_irq(sch->lock); in s390_subchannel_remove_chpid()
232 css_schedule_eval(sch->schid); in s390_subchannel_remove_chpid()
252 mutex_lock(&chp->lock); in chsc_chp_offline()
254 mutex_unlock(&chp->lock); in chsc_chp_offline()
261 spin_lock_irq(sch->lock); in __s390_process_res_acc()
262 if (sch->driver && sch->driver->chp_event) in __s390_process_res_acc()
263 sch->driver->chp_event(sch, data, CHP_ONLINE); in __s390_process_res_acc()
264 spin_unlock_irq(sch->lock); in __s390_process_res_acc()
273 sprintf(dbf_txt, "accpr%x.%02x", link->chpid.cssid, in s390_process_res_acc()
274 link->chpid.id); in s390_process_res_acc()
276 if (link->fla != 0) { in s390_process_res_acc()
277 sprintf(dbf_txt, "fla%x", link->fla); in s390_process_res_acc()
295 spin_lock_irq(sch->lock); in process_fces_event()
296 if (sch->driver && sch->driver->chp_event) in process_fces_event()
297 sch->driver->chp_event(sch, data, CHP_FCES_EVENT); in process_fces_event()
298 spin_unlock_irq(sch->lock); in process_fces_event()
311 /* ccdf has to be big enough for a link-incident record */
312 u8 ccdf[PAGE_SIZE - 24 - 16]; /* content-code dependent field */
321 u8 ccdf[PAGE_SIZE - 24 - 56]; /* content-code dependent field */
337 u8 nt_area[PAGE_SIZE - 24];
342 * Link Incident Record as defined in SA22-7202, "ESCON I/O Interface"
382 if ((sei_area->vf & SEI_VF_FLA) != 0) { in chsc_link_from_sei()
383 link->fla = sei_area->fla; in chsc_link_from_sei()
384 link->fla_mask = ((sei_area->vf & SEI_VF_FLA) == SEI_VF_FLA) ? in chsc_link_from_sei()
395 if (nd->validity != ND_VALIDITY_VALID) { in format_node_data()
396 strncpy(params, "n/a", PARAMS_LEN - 1); in format_node_data()
397 strncpy(id, "n/a", NODEID_LEN - 1); in format_node_data()
402 snprintf(params, PARAMS_LEN, "%02x,%06x", nd->byte0, nd->params); in format_node_data()
404 id = store_ebcdic(id, nd->type, sizeof(nd->type), '/'); in format_node_data()
405 id = store_ebcdic(id, nd->model, sizeof(nd->model), ','); in format_node_data()
406 id = store_ebcdic(id, nd->manufacturer, sizeof(nd->manufacturer), '.'); in format_node_data()
407 id = store_ebcdic(id, nd->plant, sizeof(nd->plant), 0); in format_node_data()
408 id = store_ebcdic(id, nd->seq, sizeof(nd->seq), ','); in format_node_data()
409 sprintf(id, "%04X", nd->tag); in format_node_data()
414 struct lir *lir = (struct lir *) &sei_area->ccdf; in chsc_process_sei_link_incident()
419 sei_area->rs, sei_area->rsid, sei_area->ccdf[0]); in chsc_process_sei_link_incident()
422 if (lir->iq.null) in chsc_process_sei_link_incident()
429 format_node_data(iuparams, iunodeid, &lir->incident_node); in chsc_process_sei_link_incident()
430 format_node_data(auparams, aunodeid, &lir->attached_node); in chsc_process_sei_link_incident()
432 switch (lir->iq.class) { in chsc_process_sei_link_incident()
436 sei_area->rs, sei_area->rsid, lir->ic, iuparams, in chsc_process_sei_link_incident()
442 sei_area->rs, sei_area->rsid, lir->ic, iuparams, in chsc_process_sei_link_incident()
458 "rs_id=%04x)\n", sei_area->rs, sei_area->rsid); in chsc_process_sei_res_acc()
459 if (sei_area->rs != 4) in chsc_process_sei_res_acc()
462 chpid.id = sei_area->rsid; in chsc_process_sei_res_acc()
472 mutex_lock(&chp->lock); in chsc_process_sei_res_acc()
474 mutex_unlock(&chp->lock); in chsc_process_sei_res_acc()
490 if (sei_area->rs != 0) in chsc_process_sei_chp_avail()
492 data = sei_area->ccdf; in chsc_process_sei_chp_avail()
506 mutex_lock(&chp->lock); in chsc_process_sei_chp_avail()
508 mutex_unlock(&chp->lock); in chsc_process_sei_chp_avail()
513 u8 map[32]; member
525 CIO_CRW_EVENT(4, "chsc: channel-path-configuration notification\n"); in chsc_process_sei_chp_config()
526 if (sei_area->rs != 0) in chsc_process_sei_chp_config()
528 data = (struct chp_config_data *) &(sei_area->ccdf); in chsc_process_sei_chp_config()
531 if (!chp_test_bit(data->map, num)) in chsc_process_sei_chp_config()
535 events[data->op], chpid.cssid, chpid.id); in chsc_process_sei_chp_config()
536 switch (data->op) { in chsc_process_sei_chp_config()
555 if (sei_area->rs != 7) in chsc_process_sei_scm_change()
569 if (sei_area->rs != 7) in chsc_process_sei_scm_avail()
581 if (sei_area->rs != 5) in chsc_process_sei_ap_cfg_chg()
594 "chsc: FCES status notification (rs=%02x, rs_id=%04x, FCES-status=%x)\n", in chsc_process_sei_fces_event()
595 sei_area->rs, sei_area->rsid, sei_area->ccdf[0]); in chsc_process_sei_fces_event()
597 if (sei_area->rs != SEI_RS_CHPID) in chsc_process_sei_fces_event()
600 chpid.id = sei_area->rsid; in chsc_process_sei_fces_event()
616 switch (sei_area->cc) { in chsc_process_sei_nt2()
618 zpci_event_error(sei_area->ccdf); in chsc_process_sei_nt2()
621 zpci_event_availability(sei_area->ccdf); in chsc_process_sei_nt2()
625 sei_area->cc); in chsc_process_sei_nt2()
633 switch (sei_area->cc) { in chsc_process_sei_nt0()
643 case 7: /* channel-path-availability information */ in chsc_process_sei_nt0()
646 case 8: /* channel-path-configuration notification */ in chsc_process_sei_nt0()
660 sei_area->cc); in chsc_process_sei_nt0()
665 if (sei_area->flags & 0x40) { in chsc_process_sei_nt0()
677 sei->request.length = 0x0010; in chsc_process_event_information()
678 sei->request.code = 0x000e; in chsc_process_event_information()
680 sei->ntsm = ntsm; in chsc_process_event_information()
685 if (sei->response.code != 0x0001) { in chsc_process_event_information()
687 sei->response.code, sei->ntsm); in chsc_process_event_information()
689 if (sei->response.code == 3 && sei->ntsm) { in chsc_process_event_information()
697 CIO_CRW_EVENT(2, "chsc: sei successful (nt=%d)\n", sei->nt); in chsc_process_event_information()
698 switch (sei->nt) { in chsc_process_event_information()
700 chsc_process_sei_nt0(&sei->u.nt0_area); in chsc_process_event_information()
703 chsc_process_sei_nt2(&sei->u.nt2_area); in chsc_process_event_information()
706 CIO_CRW_EVENT(2, "chsc: unhandled nt: %d\n", sei->nt); in chsc_process_event_information()
710 if (!(sei->u.nt0_area.flags & 0x80)) in chsc_process_event_information()
732 crw0->slct, crw0->oflw, crw0->chn, crw0->rsc, crw0->anc, in chsc_process_crw()
733 crw0->erc, crw0->rsid); in chsc_process_crw()
754 mutex_lock(&chp->lock); in chsc_chp_online()
756 mutex_unlock(&chp->lock); in chsc_chp_online()
772 spin_lock_irqsave(sch->lock, flags); in __s390_subchannel_vary_chpid()
773 if (sch->driver && sch->driver->chp_event) in __s390_subchannel_vary_chpid()
774 sch->driver->chp_event(sch, &link, in __s390_subchannel_vary_chpid()
776 spin_unlock_irqrestore(sch->lock, flags); in __s390_subchannel_vary_chpid()
796 * chsc_chp_vary - propagate channel-path vary operation to subchannels
797 * @chpid: channl-path ID
798 * @on: non-zero for vary online, zero for vary offline
826 if (!css->chps[i]) in chsc_remove_cmg_attr()
828 chp_remove_cmg_attr(css->chps[i]); in chsc_remove_cmg_attr()
839 if (!css->chps[i]) in chsc_add_cmg_attr()
841 ret = chp_add_cmg_attr(css->chps[i]); in chsc_add_cmg_attr()
847 for (--i; i >= 0; i--) { in chsc_add_cmg_attr()
848 if (!css->chps[i]) in chsc_add_cmg_attr()
850 chp_remove_cmg_attr(css->chps[i]); in chsc_add_cmg_attr()
875 int ret, ccode; in __chsc_do_secm() local
880 secm_area->request.length = 0x0050; in __chsc_do_secm()
881 secm_area->request.code = 0x0016; in __chsc_do_secm()
883 secm_area->key = PAGE_DEFAULT_KEY >> 4; in __chsc_do_secm()
884 secm_area->cub_addr1 = (u64)(unsigned long)css->cub_addr1; in __chsc_do_secm()
885 secm_area->cub_addr2 = (u64)(unsigned long)css->cub_addr2; in __chsc_do_secm()
887 secm_area->operation_code = enable ? 0 : 1; in __chsc_do_secm()
889 ccode = chsc(secm_area); in __chsc_do_secm()
890 if (ccode > 0) { in __chsc_do_secm()
891 ret = (ccode == 3) ? -ENODEV : -EBUSY; in __chsc_do_secm()
895 switch (secm_area->response.code) { in __chsc_do_secm()
898 ret = -EINVAL; in __chsc_do_secm()
901 ret = chsc_error_from_response(secm_area->response.code); in __chsc_do_secm()
905 secm_area->response.code); in __chsc_do_secm()
916 if (enable && !css->cm_enabled) { in chsc_secm()
917 css->cub_addr1 = (void *)get_zeroed_page(GFP_KERNEL | GFP_DMA); in chsc_secm()
918 css->cub_addr2 = (void *)get_zeroed_page(GFP_KERNEL | GFP_DMA); in chsc_secm()
919 if (!css->cub_addr1 || !css->cub_addr2) { in chsc_secm()
920 free_page((unsigned long)css->cub_addr1); in chsc_secm()
921 free_page((unsigned long)css->cub_addr2); in chsc_secm()
922 return -ENOMEM; in chsc_secm()
927 css->cm_enabled = enable; in chsc_secm()
928 if (css->cm_enabled) { in chsc_secm()
932 css->cm_enabled = 0; in chsc_secm()
937 if (!css->cm_enabled) { in chsc_secm()
938 free_page((unsigned long)css->cub_addr1); in chsc_secm()
939 free_page((unsigned long)css->cub_addr2); in chsc_secm()
948 int ccode, ret; in chsc_determine_channel_path_desc() local
952 return -EINVAL; in chsc_determine_channel_path_desc()
954 return -EINVAL; in chsc_determine_channel_path_desc()
956 return -EINVAL; in chsc_determine_channel_path_desc()
960 scpd_area->request.length = 0x0010; in chsc_determine_channel_path_desc()
961 scpd_area->request.code = 0x0002; in chsc_determine_channel_path_desc()
962 scpd_area->cssid = chpid.cssid; in chsc_determine_channel_path_desc()
963 scpd_area->first_chpid = chpid.id; in chsc_determine_channel_path_desc()
964 scpd_area->last_chpid = chpid.id; in chsc_determine_channel_path_desc()
965 scpd_area->m = m; in chsc_determine_channel_path_desc()
966 scpd_area->c = c; in chsc_determine_channel_path_desc()
967 scpd_area->fmt = fmt; in chsc_determine_channel_path_desc()
968 scpd_area->rfmt = rfmt; in chsc_determine_channel_path_desc()
970 ccode = chsc(scpd_area); in chsc_determine_channel_path_desc()
971 if (ccode > 0) in chsc_determine_channel_path_desc()
972 return (ccode == 3) ? -ENODEV : -EBUSY; in chsc_determine_channel_path_desc()
974 ret = chsc_error_from_response(scpd_area->response.code); in chsc_determine_channel_path_desc()
977 scpd_area->response.code); in chsc_determine_channel_path_desc()
997 memcpy(desc, scpd_area->data, sizeof(*desc)); \
1016 chp->cmg_chars.values[i] = chars->values[i]; in chsc_initialize_cmg_chars()
1018 chp->cmg_chars.values[i] = 0; in chsc_initialize_cmg_chars()
1025 int ccode, ret; in chsc_get_channel_measurement_chars() local
1048 chp->shared = -1; in chsc_get_channel_measurement_chars()
1049 chp->cmg = -1; in chsc_get_channel_measurement_chars()
1052 return -EINVAL; in chsc_get_channel_measurement_chars()
1057 scmc_area->request.length = 0x0010; in chsc_get_channel_measurement_chars()
1058 scmc_area->request.code = 0x0022; in chsc_get_channel_measurement_chars()
1059 scmc_area->first_chpid = chp->chpid.id; in chsc_get_channel_measurement_chars()
1060 scmc_area->last_chpid = chp->chpid.id; in chsc_get_channel_measurement_chars()
1062 ccode = chsc(scmc_area); in chsc_get_channel_measurement_chars()
1063 if (ccode > 0) { in chsc_get_channel_measurement_chars()
1064 ret = (ccode == 3) ? -ENODEV : -EBUSY; in chsc_get_channel_measurement_chars()
1068 ret = chsc_error_from_response(scmc_area->response.code); in chsc_get_channel_measurement_chars()
1071 scmc_area->response.code); in chsc_get_channel_measurement_chars()
1074 if (scmc_area->not_valid) in chsc_get_channel_measurement_chars()
1077 chp->cmg = scmc_area->cmg; in chsc_get_channel_measurement_chars()
1078 chp->shared = scmc_area->shared; in chsc_get_channel_measurement_chars()
1079 if (chp->cmg != 2 && chp->cmg != 3) { in chsc_get_channel_measurement_chars()
1080 /* No cmg-dependent data. */ in chsc_get_channel_measurement_chars()
1083 chsc_initialize_cmg_chars(chp, scmc_area->cmcv, in chsc_get_channel_measurement_chars()
1084 (struct cmg_chars *) &scmc_area->data); in chsc_get_channel_measurement_chars()
1097 ret = -ENOMEM; in chsc_init()
1121 sda_area->request.length = 0x0400; in __chsc_enable_facility()
1122 sda_area->request.code = 0x0031; in __chsc_enable_facility()
1123 sda_area->operation_code = operation_code; in __chsc_enable_facility()
1127 ret = (ret == 3) ? -ENODEV : -EBUSY; in __chsc_enable_facility()
1131 switch (sda_area->response.code) { in __chsc_enable_facility()
1133 ret = -EOPNOTSUPP; in __chsc_enable_facility()
1136 ret = chsc_error_from_response(sda_area->response.code); in __chsc_enable_facility()
1155 operation_code, sda_area->response.code); in chsc_enable_facility()
1181 sdcal_area->request.length = 0x0020; in chsc_get_cssid_iid()
1182 sdcal_area->request.code = 0x0034; in chsc_get_cssid_iid()
1183 sdcal_area->atype = 4; in chsc_get_cssid_iid()
1187 ret = (ret == 3) ? -ENODEV : -EBUSY; in chsc_get_cssid_iid()
1191 ret = chsc_error_from_response(sdcal_area->response.code); in chsc_get_cssid_iid()
1194 sdcal_area->response.code); in chsc_get_cssid_iid()
1198 if ((addr_t) &sdcal_area->list[idx] < in chsc_get_cssid_iid()
1199 (addr_t) &sdcal_area->response + sdcal_area->response.length) { in chsc_get_cssid_iid()
1200 *cssid = sdcal_area->list[idx].cssid; in chsc_get_cssid_iid()
1201 *iid = sdcal_area->list[idx].iid; in chsc_get_cssid_iid()
1204 ret = -ENODEV; in chsc_get_cssid_iid()
1232 scsc_area->request.length = 0x0010; in chsc_determine_css_characteristics()
1233 scsc_area->request.code = 0x0010; in chsc_determine_css_characteristics()
1237 result = (result == 3) ? -ENODEV : -EBUSY; in chsc_determine_css_characteristics()
1241 result = chsc_error_from_response(scsc_area->response.code); in chsc_determine_css_characteristics()
1243 memcpy(&css_general_characteristics, scsc_area->general_char, in chsc_determine_css_characteristics()
1245 memcpy(&css_chsc_characteristics, scsc_area->chsc_char, in chsc_determine_css_characteristics()
1249 scsc_area->response.code); in chsc_determine_css_characteristics()
1276 rr->request.length = 0x0020; in chsc_sstpc()
1277 rr->request.code = 0x0033; in chsc_sstpc()
1278 rr->op = op; in chsc_sstpc()
1279 rr->ctrl = ctrl; in chsc_sstpc()
1282 return -EIO; in chsc_sstpc()
1283 rc = (rr->response.code == 0x0001) ? 0 : -EIO; in chsc_sstpc()
1285 *clock_delta = rr->clock_delta; in chsc_sstpc()
1301 rr->request.length = 0x0010; in chsc_sstpi()
1302 rr->request.code = 0x0038; in chsc_sstpi()
1305 return -EIO; in chsc_sstpi()
1306 memcpy(result, &rr->data, size); in chsc_sstpi()
1307 return (rr->response.code == 0x0001) ? 0 : -EIO; in chsc_sstpi()
1322 rr->request.length = 0x0010; in chsc_stzi()
1323 rr->request.code = 0x003e; in chsc_stzi()
1326 return -EIO; in chsc_stzi()
1327 memcpy(result, &rr->data, size); in chsc_stzi()
1328 return (rr->response.code == 0x0001) ? 0 : -EIO; in chsc_stzi()
1342 int ccode; in chsc_siosl() local
1348 siosl_area->request.length = 0x0010; in chsc_siosl()
1349 siosl_area->request.code = 0x0046; in chsc_siosl()
1350 siosl_area->word1 = 0x80000000; in chsc_siosl()
1351 siosl_area->sid = schid; in chsc_siosl()
1353 ccode = chsc(siosl_area); in chsc_siosl()
1354 if (ccode > 0) { in chsc_siosl()
1355 if (ccode == 3) in chsc_siosl()
1356 rc = -ENODEV; in chsc_siosl()
1358 rc = -EBUSY; in chsc_siosl()
1359 CIO_MSG_EVENT(2, "chsc: chsc failed for 0.%x.%04x (ccode=%d)\n", in chsc_siosl()
1360 schid.ssid, schid.sch_no, ccode); in chsc_siosl()
1363 rc = chsc_error_from_response(siosl_area->response.code); in chsc_siosl()
1367 siosl_area->response.code); in chsc_siosl()
1378 * chsc_scm_info() - store SCM information (SSI)
1386 int ccode, ret; in chsc_scm_info() local
1389 scm_area->request.length = 0x0020; in chsc_scm_info()
1390 scm_area->request.code = 0x004C; in chsc_scm_info()
1391 scm_area->reqtok = token; in chsc_scm_info()
1393 ccode = chsc(scm_area); in chsc_scm_info()
1394 if (ccode > 0) { in chsc_scm_info()
1395 ret = (ccode == 3) ? -ENODEV : -EBUSY; in chsc_scm_info()
1398 ret = chsc_error_from_response(scm_area->response.code); in chsc_scm_info()
1401 scm_area->response.code); in chsc_scm_info()
1408 * chsc_pnso() - Perform Network-Subchannel Operation
1413 * @cnc: Boolean change-notification control
1423 pnso_area->request.length = 0x0030; in chsc_pnso()
1424 pnso_area->request.code = 0x003d; /* network-subchannel operation */ in chsc_pnso()
1425 pnso_area->m = schid.m; in chsc_pnso()
1426 pnso_area->ssid = schid.ssid; in chsc_pnso()
1427 pnso_area->sch = schid.sch_no; in chsc_pnso()
1428 pnso_area->cssid = schid.cssid; in chsc_pnso()
1429 pnso_area->oc = oc; in chsc_pnso()
1430 pnso_area->resume_token = resume_token; in chsc_pnso()
1431 pnso_area->n = (cnc != 0); in chsc_pnso()
1433 return -EIO; in chsc_pnso()
1434 return chsc_error_from_response(pnso_area->response.code); in chsc_pnso()
1460 sgib_area->request.length = 0x0fe0; in chsc_sgib()
1461 sgib_area->request.code = 0x0021; in chsc_sgib()
1462 sgib_area->op = 0x1; in chsc_sgib()
1463 sgib_area->gib_origin = origin; in chsc_sgib()
1467 ret = chsc_error_from_response(sgib_area->response.code); in chsc_sgib()
1507 * chsc_scud() - Store control-unit description.
1508 * @cu: number of the control-unit
1509 * @esm: 8 1-byte endpoint security mode values
1524 scud->request.length = SCUD_REQ_LEN; in chsc_scud()
1525 scud->request.code = SCUD_REQ_CMD; in chsc_scud()
1526 scud->fmt = 0; in chsc_scud()
1527 scud->cssid = 0; in chsc_scud()
1528 scud->first_cu = cu; in chsc_scud()
1529 scud->last_cu = cu; in chsc_scud()
1533 ret = chsc_error_from_response(scud->response.code); in chsc_scud()
1535 if (!ret && (scud->response.length <= 8 || scud->fmt_resp != 0 in chsc_scud()
1536 || !(scud->cudb[0].flags & 0x80) in chsc_scud()
1537 || scud->cudb[0].cu != cu)) { in chsc_scud()
1541 scud->response.code, scud->response.length, in chsc_scud()
1542 scud->fmt_resp, scud->cudb[0].flags, scud->cudb[0].cu); in chsc_scud()
1543 ret = -EINVAL; in chsc_scud()
1549 memcpy(esm, scud->cudb[0].esm, sizeof(*esm)); in chsc_scud()
1550 *esm_valid = scud->cudb[0].esm_valid; in chsc_scud()