{
tdm_backend_module *module_data;
tdm_func_output *func_output;
+ tdm_func_hwc *func_hwc;
tdm_private_output *private_output = NULL;
+ tdm_private_hwc *private_hwc = NULL;
tdm_private_pp *private_pp = NULL;
tdm_private_capture *private_capture = NULL;
+ const tdm_prop *props;
+ int props_count = 0;
tdm_error ret;
int i;
func_output = &private_module->func_output;
+ func_hwc = &private_module->func_hwc;
/* module information */
module_data = private_module->module_data;
}
}
}
+
+ private_hwc = private_output->private_hwc;
+ if (private_module->use_hal_tdm) {
+ ret = (tdm_error)hal_tdm_hwc_get_available_properties((hal_tdm_hwc *)private_hwc->hwc_backend, (const hal_tdm_prop **)&props, &props_count);
+ } else {
+ TDM_DBG_RETURN_VAL_IF_FAIL(func_hwc->hwc_get_available_properties, reply);
+ ret = func_hwc->hwc_get_available_properties(private_hwc->hwc_backend, &props, &props_count);
+ }
+ TDM_DBG_RETURN_VAL_IF_FAIL(ret == TDM_ERROR_NONE, reply);
+
+ TDM_SNPRINTF(reply, len, "\t%d hwc properties:\n", props_count);
+ if (props_count > 0) {
+ TDM_SNPRINTF(reply, len, "\t\tname\ttype\tidx\tvalue\n");
+ for (i = 0; i < props_count; i++) {
+ tdm_value value;
+ if (private_module->use_hal_tdm) {
+ ret = (tdm_error)hal_tdm_hwc_get_property((hal_tdm_hwc *)private_hwc->hwc_backend, props[i].id, (hal_tdm_value *)&value);
+ } else {
+ TDM_DBG_RETURN_VAL_IF_FAIL(func_hwc->hwc_get_property, reply);
+ ret = func_hwc->hwc_get_property(private_hwc->hwc_backend, props[i].id, &value);
+ }
+ TDM_DBG_RETURN_VAL_IF_FAIL(ret == TDM_ERROR_NONE, reply);
+
+ TDM_SNPRINTF(reply, len, "\t\t%s\t%s\t%u\t",
+ props[i].name,
+ tdm_value_type_str(props[i].type),
+ props[i].id);
+ switch (props[i].type) {
+ case TDM_VALUE_TYPE_PTR:
+ TDM_SNPRINTF(reply, len, "%p\n", value.ptr);
+ break;
+ case TDM_VALUE_TYPE_INT32:
+ TDM_SNPRINTF(reply, len, "%d\n", value.s32);
+ break;
+ case TDM_VALUE_TYPE_INT64:
+ TDM_SNPRINTF(reply, len, "%"PRId64"\n", value.s64);
+ break;
+ case TDM_VALUE_TYPE_UINT64:
+ TDM_SNPRINTF(reply, len, "%"PRIu64"\n", value.u64);
+ break;
+ case TDM_VALUE_TYPE_UINT32:
+ default:
+ TDM_SNPRINTF(reply, len, "%u\n", value.u32);
+ break;
+ }
+ }
+ }
}
if (LIST_IS_EMPTY(&private_module->output_list))
TDM_SNPRINTF(reply, len, "(no output)\n");