hal-backend-power: Add support new hal_common_put/get_backend_v2 25/313725/1 accepted/tizen/unified/20240702.091900 accepted/tizen/unified/dev/20240703.060257
authorChanwoo Choi <cw00.choi@samsung.com>
Fri, 28 Jun 2024 11:23:25 +0000 (20:23 +0900)
committerChanwoo Choi <cw00.choi@samsung.com>
Mon, 1 Jul 2024 07:26:50 +0000 (16:26 +0900)
Add the support HAL ABI compatibility by hal_common_put/get_backend_v2()
functions which allocates/frees the memory and then hal-backend fill out
the implemented function pointer on hal-backend.

Change-Id: Ib5dec37e3794e8256d3d1d102ffdc8b5e2afcfe7
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
src/hal-backend-power.c

index 776ba7efa9c7dc7515481907f6c6fb07cf7bda37..c081d9e8dc3e0df2c0a59bf4aee756cd438e3e3b 100644 (file)
@@ -347,66 +347,33 @@ static int memory_set_fault_around_bytes(char *res_name,
 static int power_rpi4_init(void **data)
 {
        hal_backend_power_funcs *power_funcs = NULL;
-       struct pass_resource_cpu *cpu = NULL;
-       struct pass_resource_memory *memory = NULL;
-       int ret;
 
-       /* Allocate memory */
-       power_funcs = calloc(1, sizeof(hal_backend_power_funcs));
+       if (!data) {
+               _E("Invalid parameter");
+               return -EINVAL;
+       }
+
+       power_funcs = *(hal_backend_power_funcs **)data;
        if (!power_funcs)
-               return -ENOMEM;
+               return -EINVAL;
 
-       cpu = calloc(1, sizeof(struct pass_resource_cpu));
-       if (!cpu) {
-               ret = -ENOMEM;
-               goto err_funcs;
+       if (power_funcs->cpu) {
+               power_funcs->cpu->dvfs = cpu_dvfs_ops;
+               power_funcs->cpu->tmu = cpu_tmu_ops;
        }
 
-       memory = calloc(1, sizeof(struct pass_resource_memory));
-       if (!memory) {
-               ret = -ENOMEM;
-               goto err_cpu;
+       if (power_funcs->memory) {
+               power_funcs->memory->get_fault_around_bytes
+                                       = memory_get_fault_around_bytes;
+               power_funcs->memory->set_fault_around_bytes
+                                       = memory_set_fault_around_bytes;
        }
 
-       /* Initialize each h/w resource */
-       cpu->dvfs = cpu_dvfs_ops;
-       cpu->tmu = cpu_tmu_ops;
-
-       memory->get_fault_around_bytes = memory_get_fault_around_bytes;
-       memory->set_fault_around_bytes = memory_set_fault_around_bytes;
-
-       /* Initialize hal_backend_power_funcs  */
-       power_funcs->cpu = cpu;
-       power_funcs->memory = memory;
-
-       *data = (void *)power_funcs;
-
        return 0;
-err_cpu:
-       if (cpu)
-               free(cpu);
-err_funcs:
-       free(power_funcs);
-
-       return ret;
 }
 
 static int power_rpi4_exit(void *data)
 {
-       hal_backend_power_funcs *funcs;
-
-       if (!data)
-               return -EINVAL;
-
-       funcs = (hal_backend_power_funcs *)data;
-
-       if (funcs->cpu)
-               free(funcs->cpu);
-       if (funcs->memory)
-               free(funcs->memory);
-
-       free(funcs);
-
        return 0;
 }