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; }
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; }