diff --git a/modules/camera/CameraHAL.cpp b/modules/camera/CameraHAL.cpp
index 62ee6d4..e395ce5 100644
--- a/modules/camera/CameraHAL.cpp
+++ b/modules/camera/CameraHAL.cpp
@@ -165,29 +165,29 @@
 }
 
 static hw_module_methods_t gCameraModuleMethods = {
-    open : open_dev
+    .open = open_dev
 };
 
 camera_module_t HAL_MODULE_INFO_SYM __attribute__ ((visibility("default"))) = {
-    common : {
-        tag                : HARDWARE_MODULE_TAG,
-        module_api_version : CAMERA_MODULE_API_VERSION_2_2,
-        hal_api_version    : HARDWARE_HAL_API_VERSION,
-        id                 : CAMERA_HARDWARE_MODULE_ID,
-        name               : "Default Camera HAL",
-        author             : "The Android Open Source Project",
-        methods            : &gCameraModuleMethods,
-        dso                : NULL,
-        reserved           : {0},
+    .common = {
+        .tag                = HARDWARE_MODULE_TAG,
+        .module_api_version = CAMERA_MODULE_API_VERSION_2_2,
+        .hal_api_version    = HARDWARE_HAL_API_VERSION,
+        .id                 = CAMERA_HARDWARE_MODULE_ID,
+        .name               = "Default Camera HAL",
+        .author             = "The Android Open Source Project",
+        .methods            = &gCameraModuleMethods,
+        .dso                = NULL,
+        .reserved           = {0},
     },
-    get_number_of_cameras : get_number_of_cameras,
-    get_camera_info       : get_camera_info,
-    set_callbacks         : set_callbacks,
-    get_vendor_tag_ops    : get_vendor_tag_ops,
-    open_legacy           : NULL,
-    set_torch_mode        : NULL,
-    init                  : NULL,
-    reserved              : {0},
+    .get_number_of_cameras = get_number_of_cameras,
+    .get_camera_info       = get_camera_info,
+    .set_callbacks         = set_callbacks,
+    .get_vendor_tag_ops    = get_vendor_tag_ops,
+    .open_legacy           = NULL,
+    .set_torch_mode        = NULL,
+    .init                  = NULL,
+    .reserved              = {0},
 };
 } // extern "C"
 
diff --git a/modules/camera/ExampleCamera.cpp b/modules/camera/ExampleCamera.cpp
index 2b1f185..d060d35 100644
--- a/modules/camera/ExampleCamera.cpp
+++ b/modules/camera/ExampleCamera.cpp
@@ -264,7 +264,8 @@
     return setTemplate(CAMERA3_TEMPLATE_ZERO_SHUTTER_LAG, m.get());
 }
 
-bool ExampleCamera::isValidCaptureSettings(const camera_metadata_t* settings)
+bool ExampleCamera::isValidCaptureSettings(
+        const camera_metadata_t* /*settings*/)
 {
     // TODO: reject settings that cannot be captured
     return true;
diff --git a/modules/camera/VendorTags.cpp b/modules/camera/VendorTags.cpp
index 2c54648..48c1a46 100644
--- a/modules/camera/VendorTags.cpp
+++ b/modules/camera/VendorTags.cpp
@@ -136,12 +136,13 @@
 {
 }
 
-int VendorTags::getTagCount(const vendor_tag_ops_t* ops)
+int VendorTags::getTagCount(const vendor_tag_ops_t* /*ops*/)
 {
     return mTagCount;
 }
 
-void VendorTags::getAllTags(const vendor_tag_ops_t* ops, uint32_t* tag_array)
+void VendorTags::getAllTags(const vendor_tag_ops_t* /*ops*/,
+        uint32_t* tag_array)
 {
     if (tag_array == NULL) {
         ALOGE("%s: NULL tag_array", __func__);
@@ -156,7 +157,8 @@
     }
 }
 
-const char* VendorTags::getSectionName(const vendor_tag_ops_t* ops, uint32_t tag)
+const char* VendorTags::getSectionName(const vendor_tag_ops_t* /*ops*/,
+        uint32_t tag)
 {
     const Section* section = getSection(tag);
 
@@ -166,7 +168,8 @@
     return section->name;
 }
 
-const char* VendorTags::getTagName(const vendor_tag_ops_t* ops, uint32_t tag)
+const char* VendorTags::getTagName(const vendor_tag_ops_t* /*ops*/,
+        uint32_t tag)
 {
     const Entry* entry = getEntry(tag);
 
@@ -176,7 +179,7 @@
     return entry->name;
 }
 
-int VendorTags::getTagType(const vendor_tag_ops_t* ops, uint32_t tag)
+int VendorTags::getTagType(const vendor_tag_ops_t* /*ops*/, uint32_t tag)
 {
     const Entry* entry = getEntry(tag);
 
