pass: Add new struct pass_resource_memory to support memory h/w device 46/146346/3
authorChanwoo Choi <cw00.choi@samsung.com>
Mon, 28 Aug 2017 02:47:16 +0000 (11:47 +0900)
committerChanwoo Choi <cw00.choi@samsung.com>
Thu, 7 Sep 2017 04:57:19 +0000 (13:57 +0900)
This patch adds the new 'struct pass_resource_memory' in order to
manage the memory[1] h/w device according to the requirements.

If the new requirements arise in the future, the new functions
will be added in the struct pass_resource_memory.

[1] https://en.wikipedia.org/wiki/Computer_memory

Change-Id: Iccbb576757cf25f748fac6d03e3a5aebda5facd3
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
src/pass/pass-hal.c
src/pass/pass-parser.c
src/pass/pass.h

index d7aa6c2df07e6e7e592bd69f43e101fa08041411..6d1976d9a00797d1386d54a55477ca8f72985ba7 100644 (file)
@@ -705,6 +705,8 @@ int pass_save_initdata(struct pass_resource *res)
                        return ret;
                }
                break;
+       case PASS_RESOURCE_MEMORY_ID:
+               break;
        case PASS_RESOURCE_NONSTANDARD_ID:
                break;
        default:
@@ -747,6 +749,8 @@ int pass_restore_initdata(struct pass_resource *res)
                        return ret;
                }
                break;
+       case PASS_RESOURCE_MEMORY_ID:
+               break;
        case PASS_RESOURCE_NONSTANDARD_ID:
                break;
        default:
@@ -782,6 +786,9 @@ int pass_get_resource(struct pass_resource *res)
        case PASS_RESOURCE_GPU_ID:
                name = PASS_RESOURCE_GPU_NAME;
                break;
+       case PASS_RESOURCE_MEMORY_ID:
+               name = PASS_RESOURCE_MEMORY_NAME;
+               break;
        case PASS_RESOURCE_NONSTANDARD_ID:
                name = PASS_RESOURCE_NONSTANDARD_NAME;
                break;
@@ -817,6 +824,10 @@ int pass_get_resource(struct pass_resource *res)
                ret = info->open(res_name, info,
                        (struct pass_resource_common**)&res->hal.gpu);
                break;
+       case PASS_RESOURCE_MEMORY_ID:
+               ret = info->open(res_name, info,
+                       (struct pass_resource_common**)&res->hal.memory);
+               break;
        case PASS_RESOURCE_NONSTANDARD_ID:
                ret = info->open(res_name, info,
                        (struct pass_resource_common**)&res->hal.nonstandard);
@@ -863,6 +874,11 @@ int pass_put_resource(struct pass_resource *res)
                info = res->hal.gpu->common.info;
                ret = info->close(res_name, common);
                break;
+       case PASS_RESOURCE_MEMORY_ID:
+               common = (struct pass_resource_common*)res->hal.memory;
+               info = res->hal.memory->common.info;
+               ret = info->close(res_name, common);
+               break;
        case PASS_RESOURCE_NONSTANDARD_ID:
                common = (struct pass_resource_common*)res->hal.nonstandard;
                info = res->hal.nonstandard->common.info;
index c27ec2fa27e9edbd570a30775890f920920e6fde..2fcbd47180924df69234956f6412392e21578f2f 100644 (file)
@@ -490,6 +490,8 @@ static int pass_parse_resource_data(struct parse_result *result,
                        conf_data->res_type = PASS_RESOURCE_GPU_ID;
                else if (!strncmp(buf, PASS_RESOURCE_BUS_NAME, strlen(buf)))
                        conf_data->res_type = PASS_RESOURCE_BUS_ID;
+               else if (!strncmp(buf, PASS_RESOURCE_MEMORY_NAME, strlen(buf)))
+                       conf_data->res_type = PASS_RESOURCE_MEMORY_ID;
                else if (!strncmp(buf, PASS_RESOURCE_NONSTANDARD_NAME, strlen(buf)))
                        conf_data->res_type = PASS_RESOURCE_NONSTANDARD_ID;
                else
index 18a03e7cff6a3ca1eeb07ba04e15d29404461423..f7ae3756452df9e5cb60566c6d9401acc8330091 100644 (file)
@@ -295,6 +295,7 @@ struct pass_policy {
  *     -  1: PASS_RESOURCE_CPU_ID
  *     -  2: PASS_RESOURCE_BUS_ID
  *     -  3: PASS_RESOURCE_GPU_ID
+ *     -  4: PASS_RESOURCE_MEMORY_ID
  *     - 99: PASS_RESOURCE_NONSTANDARD_ID
  * @res_name: the unique name of sysfs entry.
  *     - In case of /sys/devices/system/cpu/cpu0, res_name is 'cpu0'
@@ -365,6 +366,7 @@ struct pass_resource_initdata {
  * - If res_type of cdata is PASS_RESOURCE_CPU_ID, hal.cpu will be used.
  * - If res_type of cdata is PASS_RESOURCE_BUS_ID, hal.bus will be used.
  * - If res_type of cdata is PASS_RESOURCE_GPU_ID, hal.gpu will be used.
+ * - If res_type of cdata is PASS_RESOURCE_MEMORY_ID, hal.memory will be used.
  * - If res_type of cdata is PASS_RESOURCE_NONSTANDARD_ID,
  *   hal.nonstandard will be used.
  * @policy: the policy data to handle the h/w resource
@@ -380,6 +382,7 @@ struct pass_resource {
                struct pass_resource_cpu *cpu;
                struct pass_resource_bus *bus;
                struct pass_resource_gpu *gpu;
+               struct pass_resource_memory *memory;
                struct pass_resource_nonstandard *nonstandard;
        } hal;
 };