<div dir="ltr"><div dir="ltr">Hi Laurent,<div><br></div><div>Thank you for your patch.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, 2 Mar 2021 at 15:05, Laurent Pinchart <<a href="mailto:laurent.pinchart@ideasonboard.com">laurent.pinchart@ideasonboard.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">It can be useful for pipeline handlers to pass additional parameters to<br>
the IPA init() method. Allow doing so.<br>
<br>
Signed-off-by: Laurent Pinchart <<a href="mailto:laurent.pinchart@ideasonboard.com" target="_blank">laurent.pinchart@ideasonboard.com</a>><br>
---<br>
 .../libcamera_templates/module_ipa_proxy.cpp.tmpl         | 2 +-<br>
 .../generators/libcamera_templates/proxy_functions.tmpl   | 8 ++++++--<br>
 utils/ipc/generators/mojom_libcamera_generator.py         | 3 ---<br>
 3 files changed, 7 insertions(+), 6 deletions(-)<br>
<br>
diff --git a/utils/ipc/generators/libcamera_templates/module_ipa_proxy.cpp.tmpl b/utils/ipc/generators/libcamera_templates/module_ipa_proxy.cpp.tmpl<br>
index d451fab35e83..f2f9128b056c 100644<br>
--- a/utils/ipc/generators/libcamera_templates/module_ipa_proxy.cpp.tmpl<br>
+++ b/utils/ipc/generators/libcamera_templates/module_ipa_proxy.cpp.tmpl<br>
@@ -142,7 +142,7 @@ void {{proxy_name}}::recvMessage(const IPCMessage &data)<br>
 {{proxy_funcs.func_sig(proxy_name, method, "Thread")}}<br>
 {<br>
 {%- if method.mojom_name == "init" %}<br>
-       {{proxy_funcs.init_thread_body()}}<br>
+       {{proxy_funcs.init_thread_body(method)}}<br>
 {%- elif method.mojom_name == "stop" %}<br>
        {{proxy_funcs.stop_thread_body()}}<br>
 {%- elif method.mojom_name == "start" %}<br>
diff --git a/utils/ipc/generators/libcamera_templates/proxy_functions.tmpl b/utils/ipc/generators/libcamera_templates/proxy_functions.tmpl<br>
index 40611feb179b..222a2a63764d 100644<br>
--- a/utils/ipc/generators/libcamera_templates/proxy_functions.tmpl<br>
+++ b/utils/ipc/generators/libcamera_templates/proxy_functions.tmpl<br>
@@ -22,8 +22,12 @@<br>
 {#<br>
  # \brief Generate function body for IPA init() function for thread<br>
  #}<br>
-{%- macro init_thread_body() -%}<br>
-       int ret = ipa_->init(settings);<br>
+{%- macro init_thread_body(method) -%}<br>
+       int ret = ipa_->init(<br>
+       {%- for param in method|method_param_names -%}<br>
+               {{param}}{{- ", " if not loop.last}}<br>
+       {%- endfor -%}<br>
+);<br>
        if (ret)<br>
                return ret;<br>
<br>
diff --git a/utils/ipc/generators/mojom_libcamera_generator.py b/utils/ipc/generators/mojom_libcamera_generator.py<br>
index 438e41c649ad..2bfc4af23231 100644<br>
--- a/utils/ipc/generators/mojom_libcamera_generator.py<br>
+++ b/utils/ipc/generators/mojom_libcamera_generator.py<br>
@@ -346,10 +346,7 @@ def ValidateInterfaces(interfaces):<br>
     f_stop  = f_stop[0]<br>
<br>
     # Validate parameters to init()<br>
-    ValidateSingleLength(f_init.parameters, 'input parameter to init()')<br>
     ValidateSingleLength(f_init.response_parameters, 'output parameter from init()')<br>
-    if f_init.parameters[0].kind.mojom_name != 'IPASettings':<br>
-        raise Exception('init() must have single IPASettings input parameter')<br>
     if f_init.response_parameters[0].kind.spec != 'i32':<br>
         raise Exception('init() must have single int32 output parameter')<br></blockquote><div><br></div><div>As discussed, it would be really useful if the restriction on the return value from init() could be relaxed as well.</div><div>Hopefully this will not be too complicated to achieve :-)</div><div><br></div><div>Regards,</div><div>Naush</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
-- <br>
Regards,<br>
<br>
Laurent Pinchart<br>
<br>
</blockquote></div></div>