Lines Matching refs:cp

1241 opl_fc_do_op(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
1244 char *service = fc_cell2ptr(cp->svc_name);
1253 if (fc_ops(ap, rp->next_handle, cp) == 0)
1261 return (op->fc_op(ap, rp, cp));
1272 opl_map_in(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
1282 if (fc_cell2int(cp->nargs) != 3)
1283 return (fc_syntax_error(cp, "nargs must be 3"));
1285 if (fc_cell2int(cp->nresults) < 1)
1286 return (fc_syntax_error(cp, "nresults must be >= 1"));
1288 rspec.regspec_size = len = fc_cell2size(fc_arg(cp, 0));
1289 rspec.regspec_bustype = fc_cell2uint(fc_arg(cp, 1));
1290 rspec.regspec_addr = fc_cell2uint(fc_arg(cp, 2));
1307 return (fc_priv_error(cp, "opl map-in failed"));
1312 cp->nresults = fc_int2cell(1);
1313 fc_result(cp, 0) = fc_ptr2cell(virt);
1325 return (fc_success_op(ap, rp, cp));
1332 opl_map_out(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
1338 if (fc_cell2int(cp->nargs) != 2)
1339 return (fc_syntax_error(cp, "nargs must be 2"));
1341 virt = fc_cell2ptr(fc_arg(cp, 1));
1343 len = fc_cell2size(fc_arg(cp, 0));
1363 return (fc_priv_error(cp, "request doesn't match a "
1374 cp->nresults = fc_int2cell(0);
1375 return (fc_success_op(ap, rp, cp));
1379 opl_register_fetch(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
1389 char *service = fc_cell2ptr(cp->svc_name);
1392 if (fc_cell2int(cp->nargs) != 1)
1393 return (fc_syntax_error(cp, "nargs must be 1"));
1395 if (fc_cell2int(cp->nresults) < 1)
1396 return (fc_syntax_error(cp, "nresults must be >= 1"));
1398 virt = fc_cell2ptr(fc_arg(cp, 0));
1415 return (fc_priv_error(cp, "unaligned access"));
1437 return (fc_priv_error(cp, "request not within "
1479 return (fc_priv_error(cp, "access error"));
1485 cp->nresults = fc_int2cell(1);
1487 case sizeof (x): fc_result(cp, 0) = x; break;
1488 case sizeof (l): fc_result(cp, 0) = fc_uint32_t2cell(l); break;
1489 case sizeof (w): fc_result(cp, 0) = fc_uint16_t2cell(w); break;
1490 case sizeof (b): fc_result(cp, 0) = fc_uint8_t2cell(b); break;
1492 return (fc_success_op(ap, rp, cp));
1496 opl_register_store(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
1505 char *service = fc_cell2ptr(cp->svc_name);
1509 if (fc_cell2int(cp->nargs) != 2)
1510 return (fc_syntax_error(cp, "nargs must be 2"));
1512 virt = fc_cell2ptr(fc_arg(cp, 0));
1521 x = fc_arg(cp, 1);
1526 l = fc_cell2uint32_t(fc_arg(cp, 1));
1531 w = fc_cell2uint16_t(fc_arg(cp, 1));
1536 b = fc_cell2uint8_t(fc_arg(cp, 1));
1548 return (fc_priv_error(cp, "unaligned access"));
1570 return (fc_priv_error(cp, "request not within"
1603 return (fc_priv_error(cp, "access error"));
1606 cp->nresults = fc_int2cell(0);
1607 return (fc_success_op(ap, rp, cp));
1616 opl_claim_memory(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
1623 if (fc_cell2int(cp->nargs) != 3)
1624 return (fc_syntax_error(cp, "nargs must be 3"));
1626 if (fc_cell2int(cp->nresults) < 1)
1627 return (fc_syntax_error(cp, "nresults must be >= 1"));
1629 vhint = fc_cell2int(fc_arg(cp, 2));
1630 size = fc_cell2int(fc_arg(cp, 1));
1631 align = fc_cell2int(fc_arg(cp, 0));
1639 return (fc_priv_error(cp, "allocation error"));
1658 return (fc_priv_error(cp, "allocation error"));
1664 cp->nresults = fc_int2cell(1);
1665 fc_result(cp, 0) = answer;
1676 return (fc_success_op(ap, rp, cp));
1685 opl_release_memory(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
1690 if (fc_cell2int(cp->nargs) != 2)
1691 return (fc_syntax_error(cp, "nargs must be 2"));
1693 if (fc_cell2int(cp->nresults) != 0)
1694 return (fc_syntax_error(cp, "nresults must be 0"));
1696 vaddr = fc_cell2int(fc_arg(cp, 1));
1697 size = fc_cell2int(fc_arg(cp, 0));
1717 return (fc_priv_error(cp, "request doesn't match a "
1729 cp->nresults = fc_int2cell(0);
1731 return (fc_success_op(ap, rp, cp));
1740 opl_vtop(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
1746 if (fc_cell2int(cp->nargs) != 1)
1747 return (fc_syntax_error(cp, "nargs must be 1"));
1749 if (fc_cell2int(cp->nresults) >= 3)
1750 return (fc_syntax_error(cp, "nresults must be less than 2"));
1752 vaddr = fc_cell2int(fc_arg(cp, 0));
1769 return (fc_priv_error(cp, "request doesn't match a "
1777 cp->nresults = fc_int2cell(2);
1779 fc_result(cp, 0) = paddr;
1780 fc_result(cp, 1) = 0;
1782 return (fc_success_op(ap, rp, cp));
1786 opl_config_child(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
1790 if (fc_cell2int(cp->nargs) != 0)
1791 return (fc_syntax_error(cp, "nargs must be 0"));
1793 if (fc_cell2int(cp->nresults) < 1)
1794 return (fc_syntax_error(cp, "nresults must be >= 1"));
1798 cp->nresults = fc_int2cell(1);
1799 fc_result(cp, 0) = fc_phandle2cell(h);
1801 return (fc_success_op(ap, rp, cp));
1805 opl_get_fcode(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
1811 if (fc_cell2int(cp->nargs) != 3)
1812 return (fc_syntax_error(cp, "nargs must be 3"));
1814 if (fc_cell2int(cp->nresults) < 1)
1815 return (fc_syntax_error(cp, "nresults must be >= 1"));
1817 dropin_name_virt = fc_cell2ptr(fc_arg(cp, 0));
1819 fcode_virt = fc_cell2ptr(fc_arg(cp, 1));
1821 fcode_len = fc_cell2int(fc_arg(cp, 2));
1852 cp->nresults = fc_int2cell(1);
1853 fc_result(cp, 0) = status;
1855 return (fc_success_op(ap, rp, cp));
1859 opl_get_fcode_size(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
1865 if (fc_cell2int(cp->nargs) != 1)
1866 return (fc_syntax_error(cp, "nargs must be 1"));
1868 if (fc_cell2int(cp->nresults) < 1)
1869 return (fc_syntax_error(cp, "nresults must be >= 1"));
1871 virt = fc_cell2ptr(fc_arg(cp, 0));
1892 cp->nresults = fc_int2cell(1);
1893 fc_result(cp, 0) = len;
1895 return (fc_success_op(ap, rp, cp));
1975 opl_get_hwd_va(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
1985 if (fc_cell2int(cp->nargs) != 2)
1986 return (fc_syntax_error(cp, "nargs must be 2"));
1988 if (fc_cell2int(cp->nresults) < 1)
1989 return (fc_syntax_error(cp, "nresults must be >= 1"));
1992 portid = fc_cell2uint32_t(fc_arg(cp, 0));
1993 hwd_virt = (void *)fc_cell2ptr(fc_arg(cp, 1));
2003 return (fc_priv_error(cp, "null hwd header"));
2008 return (fc_priv_error(cp, "null hwd sb"));
2031 cp->nresults = fc_int2cell(1);
2032 fc_result(cp, 0) = status;
2034 return (fc_success_op(ap, rp, cp));
2296 opl_master_interrupt(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
2303 if (fc_cell2int(cp->nargs) != 2)
2304 return (fc_syntax_error(cp, "nargs must be 2"));
2306 if (fc_cell2int(cp->nresults) < 1)
2307 return (fc_syntax_error(cp, "nresults must be >= 1"));
2310 portid = fc_cell2uint32_t(fc_arg(cp, 0));
2311 xt = fc_cell2uint32_t(fc_arg(cp, 1));
2327 cp->nresults = fc_int2cell(1);
2328 fc_result(cp, 0) = status;
2330 return (fc_success_op(ap, rp, cp));