示例#1
0
文件: ps2.c 项目: jur/ps2-u-boot
int ps2sif_freeiopheap(uint32_t busaddr)
{
	struct sbr_ioph_free_arg arg;
	int result;
	int err;

	arg.addr = busaddr;
	err = sbios_rpc(SBR_IOPH_FREE, &arg, &result);

	if (err < 0) {
		return -1;
	}
	return result;
}
示例#2
0
文件: ps2.c 项目: jur/ps2-u-boot
/** Allocate bus address. Returns 0 on error. */
uint32_t ps2sif_allociopheap(int size)
{
	struct sbr_ioph_alloc_arg arg;
	int result;
	int err;

	arg.size = size;
	err = sbios_rpc(SBR_IOPH_ALLOC, &arg, &result);

	if (err < 0) {
		return 0;
	}
	return result;
}
示例#3
0
int ps2sif_freeiopheap(void *addr)
{
    struct sbr_ioph_free_arg arg;
    int result;
    int err;
    
    arg.addr = addr;

    down(&iopheap_sem);
    err = sbios_rpc(SBR_IOPH_FREE, &arg, &result);
    up(&iopheap_sem);

    if (err < 0)
	return -1;
    return result;
}
示例#4
0
void *ps2sif_allociopheap(int size)
{
    struct sbr_ioph_alloc_arg arg;
    int result;
    int err;
    
    arg.size = size;

    down(&iopheap_sem);
    err = sbios_rpc(SBR_IOPH_ALLOC, &arg, &result);
    up(&iopheap_sem);

    if (err < 0)
	return NULL;
    return (void *)result;
}
示例#5
0
int __init ps2sif_initiopheap(void)
{
    int i;
    int result;
    int err;

    while (1) {
	down(&iopheap_sem);
	err = sbios_rpc(SBR_IOPH_INIT, NULL, &result);
	up(&iopheap_sem);

	if (err < 0)
	    return -1;
	if (result == 0)
	    break;
	i = 0x100000;
	while (i--)
	    ;
    }
    return 0;
}
示例#6
0
文件: ps2.c 项目: jur/ps2-u-boot
static void driver_init(void)
{
	int rv;
	int result;

	rv = sbios(SB_SIFINIT, NULL);
	if (rv < 0) {
		error("SB_SIFINIT failed rv = %d\n", rv);
		return;
	}

	rv = sbios(SB_SIFINITCMD, NULL);
	if (rv < 0) {
		error("SB_SIFINITCMD failed rv = %d\n", rv);
		return;
	}

	rv = sbios(SB_SIFINITRPC, NULL);
	if (rv < 0) {
		error("SB_SIFINITRPC failed rv = %d\n", rv);
		return;
	}

	for (;;) {
		debug("Call SBR_IOPH_INIT\n");
		rv = sbios_rpc(SBR_IOPH_INIT, NULL, &result);
		debug("rv = %d\n", rv);
		if (rv < 0) {
			error("SBR_IOPH_INIT failed rv = %d\n", rv);
			return;
		}
		debug("result = %d\n", result);
		if (result == 0) {
			/* Success */
			break;
		}
	}
	debug("SBIOS drivers successfully initialized.\n");
}