Add basic change for v1453

Change-Id: I9497a61bbc3717f66413794a4e7dee0347c0bc33
diff --git a/mbtk/libql_lib_v2_rilv2/ql_gpio.c b/mbtk/libql_lib_v2_rilv2/ql_gpio.c
new file mode 100755
index 0000000..83149b2
--- /dev/null
+++ b/mbtk/libql_lib_v2_rilv2/ql_gpio.c
@@ -0,0 +1,129 @@
+#include "ql_gpio.h"
+#include "mbtk_gpio.h"
+#include "mbtk_log.h"
+#include "mbtk_type.h"
+
+#include <errno.h>
+
+int ql_gpio_init(ENUM_PINNAME       pin_name, 
+                 ENUM_PIN_DIRECTION  dir, 
+                 ENUM_PIN_LEVEL      level, 
+                 ENUM_PIN_PULLSEL    pull_sel
+                 )
+{
+    if(pull_sel != PINPULLSEL_DISABLE)
+    {
+        LOGE("[ql_gpio_init] pull_sel fail.");
+        return RES_BAD_PARAMETER;
+    }
+
+    if(dir == PINDIRECTION_IN)
+    {
+        dir = MBTK_GPIO_DIRECT_IN;
+    }
+    else if(dir == PINDIRECTION_OUT)
+    {
+        dir = MBTK_GPIO_DIRECT_OUT;
+    }
+    else
+    {
+        dir = MBTK_GPIO_DIRECT_UNKNOWN;
+        LOGE("[ql_gpio_init] direction fail.");
+        return RES_BAD_PARAMETER;
+    }
+
+    if(level != PINLEVEL_LOW && level != PINLEVEL_HIGH)
+    {
+        LOGE("[ql_gpio_init] level fail.");
+        return RES_BAD_PARAMETER;
+    }
+
+    if(mbtk_gpio_export(pin_name))
+    {
+        LOGE("[ql_gpio_init]gpio_export fail.");
+        return RES_IO_ERROR;
+    }
+
+    if(mbtk_gpio_direct_set(pin_name, dir))
+    {
+        LOGE("[ql_gpio_init]gpio_direct_set fail.");
+        return RES_IO_ERROR;
+    }
+
+    if(mbtk_gpio_value_set_2(pin_name, level))
+    {
+        LOGE("[ql_gpio_init]gpio_value_set fail.");
+        return RES_IO_ERROR;
+    }
+
+    return RES_OK;
+}
+
+int ql_gpio_set_level(ENUM_PINNAME pin_name, ENUM_PIN_LEVEL level)
+{
+    if(level != PINLEVEL_LOW && level != PINLEVEL_HIGH)
+    {
+        LOGE("[ql_gpio_set_level] level fail.");
+        return RES_BAD_PARAMETER;
+    }
+
+    if(mbtk_gpio_value_set_2(pin_name, level) != 0)
+    {
+        LOGE("[ql_gpio_set_level]gpio_value_set fail.");
+        return RES_IO_ERROR;
+    }
+
+    return RES_OK;
+}
+
+int ql_gpio_get_level(ENUM_PINNAME pin_name)
+{
+    int ret;
+
+    ret = mbtk_gpio_value_get(pin_name);
+    if (ret == -1)
+    {
+        LOGE("[ql_gpio_set_level]gpio_value_set fail.");
+        return RES_IO_ERROR;
+    }
+
+    return ret;
+}
+
+int ql_gpio_set_direction(ENUM_PINNAME pin_name, ENUM_PIN_DIRECTION dir)
+{
+    if(dir == PINDIRECTION_IN)
+    {
+        dir = MBTK_GPIO_DIRECT_IN;
+    }
+    else if(dir == PINDIRECTION_OUT)
+    {
+        dir = MBTK_GPIO_DIRECT_OUT;
+    }
+    else
+    {
+        dir = MBTK_GPIO_DIRECT_UNKNOWN;
+        LOGE("[ql_gpio_init] direction fail.");
+        return RES_BAD_PARAMETER;
+    }
+
+    if(mbtk_gpio_direct_set(pin_name, dir))
+    {
+        LOGE("[ql_gpio_set_direction]gpio_direct_set fail.");
+        return RES_IO_ERROR;
+    }
+
+    return RES_OK;
+}
+
+int ql_gpio_uninit(ENUM_PINNAME pin_name)
+{
+    if(mbtk_gpio_unexport(pin_name))
+    {
+        LOGE("[ql_gpio_uninit]gpio_unexport fail.");
+        return RES_IO_ERROR;
+    }
+
+    return RES_OK;
+}
+