Example #1
0
sw_error_t
sw_uk_exec(a_uint32_t api_id, ...)
{
    a_uint32_t value[SW_MAX_API_PARAM] = { 0 };
    a_uint32_t rtn = 0, i;
    va_list arg_ptr;
    a_uint32_t nr_param = 0;

    if((nr_param = sw_api_param_nums(api_id)) == 0) {
        return SW_NOT_SUPPORTED;
    }

    value[0] = api_id;
    value[1] = (a_uint32_t)&rtn;

    va_start(arg_ptr, api_id);
    for (i = 0; i < nr_param; i++) {
        value[i + 2] = va_arg(arg_ptr, a_uint32_t);
    }
    va_end(arg_ptr);

    if (SW_OK != sw_uk_if(value)) {
        return SW_FAIL;
    }
    return rtn;
}
Example #2
0
sw_error_t
sd_reg_mdio_get(a_uint32_t dev_id, a_uint32_t phy, a_uint32_t reg, a_uint16_t * data)
{
    sw_error_t rv = SW_OK;

    if (NULL != ssdk_mdio_get)
    {
        rv = ssdk_mdio_get(dev_id, phy, reg, data);
    }
    else
    {
#if ((!defined(KERNEL_MODULE)) && defined(UK_IF))
        {
            a_uint32_t args[SW_MAX_API_PARAM];
            a_uint32_t tmp;

            args[0] = SW_API_PHY_GET;
            args[1] = (a_uint32_t) & rv;
            args[2] = dev_id;
            args[3] = phy;
            args[4] = reg;
            args[5] = (a_uint32_t) & tmp;
            if (SW_OK != sw_uk_if(args))
            {
                return SW_FAIL;
            }
            *data = *((a_uint16_t *)&tmp);
        }
#else
        return SW_NOT_SUPPORTED;
#endif
    }

    return rv;
}