Lines Matching refs:cp

262 pci_fc_ops(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
265 char *name = fc_cell2ptr(cp->svc_name);
273 if (fc_ops(ap, rp->next_handle, cp) == 0) {
276 return (pv->f(ap, rp, cp));
282 return (pv->f(ap, rp, cp));
293 pfc_dma_map_in(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
305 if (fc_cell2int(cp->nargs) != 3)
306 return (fc_syntax_error(cp, "nargs must be 3"));
308 if (fc_cell2int(cp->nresults) < 1)
309 return (fc_syntax_error(cp, "nresults must be >= 1"));
314 virt = fc_cell2ptr(fc_arg(cp, 2));
315 len = fc_cell2size(fc_arg(cp, 1));
317 cacheable = fc_cell2int(fc_arg(cp, 0)); /* XXX: do what? */
330 return (fc_priv_error(cp, "fc_physio_setup failed"));
339 return (fc_priv_error(cp, "real dma-map-in failed"));
348 return (fc_priv_error(cp, "real dma-map-in failed"));
354 return (fc_priv_error(cp, "ddi_dma_unbind error"));
357 return (fc_priv_error(cp, "ddi_dma_buf_bind size < len"));
363 cp->nresults = fc_int2cell(1);
364 fc_result(cp, 0) = fc_uint32_t2cell(c.dmac_address); /* XXX size */
378 return (fc_success_op(ap, rp, cp));
382 pfc_dma_sync(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
390 if (fc_cell2int(cp->nargs) != 3)
391 return (fc_syntax_error(cp, "nargs must be 3"));
393 virt = fc_cell2ptr(fc_arg(cp, 2));
394 devaddr = fc_cell2uint32_t(fc_arg(cp, 1));
395 len = fc_cell2size(fc_arg(cp, 0));
414 return (fc_priv_error(cp, "request not within a "
429 return (fc_priv_error(cp, "Call to ddi_dma_sync failed"));
431 cp->nresults = fc_int2cell(0);
432 return (fc_success_op(ap, rp, cp));
436 pfc_dma_map_out(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
444 if (fc_cell2int(cp->nargs) != 3)
445 return (fc_syntax_error(cp, "nargs must be 3"));
447 virt = fc_cell2ptr(fc_arg(cp, 2));
448 devaddr = fc_cell2uint32_t(fc_arg(cp, 1));
449 len = fc_cell2size(fc_arg(cp, 0));
468 return (fc_priv_error(cp, "request doesn't match a "
491 cp->nresults = fc_int2cell(0);
492 return (fc_success_op(ap, rp, cp));
510 pfc_dma_cleanup(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
539 cp->nresults = fc_int2cell(0);
540 return (fc_success_op(ap, rp, cp));
544 pfc_map_in(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
554 if (fc_cell2int(cp->nargs) != 4)
555 return (fc_syntax_error(cp, "nargs must be 4"));
557 if (fc_cell2int(cp->nresults) < 1)
558 return (fc_syntax_error(cp, "nresults must be >= 1"));
561 p.pci_size_low = len = fc_cell2size(fc_arg(cp, 0));
563 p.pci_phys_hi = fc_cell2uint(fc_arg(cp, 1));
564 p.pci_phys_mid = fc_cell2uint(fc_arg(cp, 2));
565 p.pci_phys_low = fc_cell2uint(fc_arg(cp, 3));
581 return (fc_priv_error(cp, "pci map-in failed"));
587 return (fc_priv_error(cp, "pci map-in failed"));
590 cp->nresults = fc_int2cell(1);
591 fc_result(cp, 0) = fc_ptr2cell(virt);
606 return (fc_success_op(ap, rp, cp));
610 pfc_map_out(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
616 if (fc_cell2int(cp->nargs) != 2)
617 return (fc_syntax_error(cp, "nargs must be 2"));
619 virt = fc_cell2ptr(fc_arg(cp, 1));
621 len = fc_cell2size(fc_arg(cp, 0));
638 return (fc_priv_error(cp, "request doesn't match a "
651 cp->nresults = fc_int2cell(0);
652 return (fc_success_op(ap, rp, cp));
656 pfc_register_fetch(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
665 char *name = fc_cell2ptr(cp->svc_name);
668 if (fc_cell2int(cp->nargs) != 1)
669 return (fc_syntax_error(cp, "nargs must be 1"));
671 if (fc_cell2int(cp->nresults) < 1)
672 return (fc_syntax_error(cp, "nresults must be >= 1"));
674 virt = fc_cell2ptr(fc_arg(cp, 0));
691 return (fc_priv_error(cp, "unaligned access"));
707 return (fc_priv_error(cp, "request not within a "
732 return (fc_priv_error(cp, "access error"));
735 cp->nresults = fc_int2cell(1);
737 case sizeof (x): fc_result(cp, 0) = x; break;
738 case sizeof (l): fc_result(cp, 0) = fc_uint32_t2cell(l); break;
739 case sizeof (w): fc_result(cp, 0) = fc_uint16_t2cell(w); break;
740 case sizeof (b): fc_result(cp, 0) = fc_uint8_t2cell(b); break;
742 return (fc_success_op(ap, rp, cp));
746 pfc_register_store(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
755 char *name = fc_cell2ptr(cp->svc_name);
758 if (fc_cell2int(cp->nargs) != 2)
759 return (fc_syntax_error(cp, "nargs must be 2"));
761 virt = fc_cell2ptr(fc_arg(cp, 0));
768 case 'x': len = sizeof (x); x = fc_arg(cp, 1); break;
769 case 'l': len = sizeof (l); l = fc_cell2uint32_t(fc_arg(cp, 1)); break;
770 case 'w': len = sizeof (w); w = fc_cell2uint16_t(fc_arg(cp, 1)); break;
771 case 'b': len = sizeof (b); b = fc_cell2uint8_t(fc_arg(cp, 1)); break;
778 return (fc_priv_error(cp, "unaligned access"));
794 return (fc_priv_error(cp, "request not within a "
819 return (fc_priv_error(cp, "access error"));
822 cp->nresults = fc_int2cell(0);
823 return (fc_success_op(ap, rp, cp));
827 pfc_config_fetch(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
835 char *name = fc_cell2ptr(cp->svc_name);
840 if (fc_cell2int(cp->nargs) != 1)
841 return (fc_syntax_error(cp, "nargs must be 1"));
843 if (fc_cell2int(cp->nresults) < 1)
844 return (fc_syntax_error(cp, "nresults must be >= 1"));
850 p.pci_phys_hi = fc_cell2uint(fc_arg(cp, 0));
861 return (fc_priv_error(cp, "non-config addr"));
888 return (fc_priv_error(cp, "unaligned access"));
900 return (fc_priv_error(cp, "pci config map-in failed"));
919 return (fc_priv_error(cp, "pci config fetch failed"));
948 return (fc_priv_error(cp, "access error"));
951 cp->nresults = fc_int2cell(1);
953 case sizeof (l): fc_result(cp, 0) = fc_uint32_t2cell(l); break;
954 case sizeof (w): fc_result(cp, 0) = fc_uint16_t2cell(w); break;
955 case sizeof (b): fc_result(cp, 0) = fc_uint8_t2cell(b); break;
958 return (fc_success_op(ap, rp, cp));
962 pfc_config_store(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
970 char *name = fc_cell2ptr(cp->svc_name);
975 if (fc_cell2int(cp->nargs) != 2)
976 return (fc_syntax_error(cp, "nargs must be 2"));
982 p.pci_phys_hi = fc_cell2uint(fc_arg(cp, 0));
993 return (fc_priv_error(cp, "non-config addr"));
1010 case 'l': len = sizeof (l); l = fc_cell2uint32_t(fc_arg(cp, 1)); break;
1011 case 'w': len = sizeof (w); w = fc_cell2uint16_t(fc_arg(cp, 1)); break;
1012 case 'b': len = sizeof (b); b = fc_cell2uint8_t(fc_arg(cp, 1)); break;
1019 return (fc_priv_error(cp, "unaligned access"));
1031 return (fc_priv_error(cp, "pci config map-in failed"));
1050 return (fc_priv_error(cp, "pci config store failed"));
1079 return (fc_priv_error(cp, "access error"));
1082 cp->nresults = fc_int2cell(0);
1083 return (fc_success_op(ap, rp, cp));
1088 pfc_get_fcode(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
1094 if (fc_cell2int(cp->nargs) != 3)
1095 return (fc_syntax_error(cp, "nargs must be 3"));
1097 if (fc_cell2int(cp->nresults) < 1)
1098 return (fc_syntax_error(cp, "nresults must be >= 1"));
1100 name_virt = fc_cell2ptr(fc_arg(cp, 0));
1102 fcode_virt = fc_cell2ptr(fc_arg(cp, 1));
1104 fcode_len = fc_cell2int(fc_arg(cp, 2));
1130 cp->nresults = fc_int2cell(1);
1131 fc_result(cp, 0) = status;
1133 return (fc_success_op(ap, rp, cp));
1137 pfc_get_fcode_size(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
1143 if (fc_cell2int(cp->nargs) != 1)
1144 return (fc_syntax_error(cp, "nargs must be 1"));
1146 if (fc_cell2int(cp->nresults) < 1)
1147 return (fc_syntax_error(cp, "nresults must be >= 1"));
1149 virt = fc_cell2ptr(fc_arg(cp, 0));
1162 cp->nresults = fc_int2cell(1);
1163 fc_result(cp, 0) = len;
1165 return (fc_success_op(ap, rp, cp));
1172 pfc_probe_address(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
1174 if (fc_cell2int(cp->nargs) != 0)
1175 return (fc_syntax_error(cp, "nargs must be 0"));
1177 if (fc_cell2int(cp->nresults) < 2)
1178 return (fc_syntax_error(cp, "nresults must be >= 3"));
1180 cp->nresults = fc_int2cell(2);
1181 fc_result(cp, 1) = fc_int2cell(0); /* phys.lo */
1182 fc_result(cp, 0) = fc_int2cell(0); /* phys.mid */
1184 return (fc_success_op(ap, rp, cp));
1191 pfc_probe_space(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
1197 if (fc_cell2int(cp->nargs) != 0)
1198 return (fc_syntax_error(cp, "nargs must be 0"));
1200 if (fc_cell2int(cp->nresults) < 1)
1201 return (fc_syntax_error(cp, "nresults must be >= 1"));
1203 cp->nresults = fc_int2cell(1);
1204 fc_result(cp, 0) = fc_uint32_t2cell(ba->config_address); /* phys.hi */
1206 return (fc_success_op(ap, rp, cp));
1210 pfc_config_child(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
1214 if (fc_cell2int(cp->nargs) != 0)
1215 return (fc_syntax_error(cp, "nargs must be 0"));
1217 if (fc_cell2int(cp->nresults) < 1)
1218 return (fc_syntax_error(cp, "nresults must be >= 1"));
1222 cp->nresults = fc_int2cell(1);
1223 fc_result(cp, 0) = fc_phandle2cell(h);
1225 return (fc_success_op(ap, rp, cp));