diff --git a/cros_gralloc/gralloc0/gralloc0.cc b/cros_gralloc/gralloc0/gralloc0.cc
index b645b3f..df1f62c 100644
--- a/cros_gralloc/gralloc0/gralloc0.cc
+++ b/cros_gralloc/gralloc0/gralloc0.cc
@@ -300,10 +300,10 @@
 	uint32_t map_flags;
 	uint8_t *addr[DRV_MAX_PLANES];
 	auto mod = (struct gralloc0_module const *)module;
-	struct rectangle rect = {.x = static_cast<uint32_t>(l),
-				 .y = static_cast<uint32_t>(t),
-				 .width = static_cast<uint32_t>(w),
-				 .height = static_cast<uint32_t>(h) };
+	struct rectangle rect = { .x = static_cast<uint32_t>(l),
+				  .y = static_cast<uint32_t>(t),
+				  .width = static_cast<uint32_t>(w),
+				  .height = static_cast<uint32_t>(h) };
 
 	auto hnd = cros_gralloc_convert_handle(handle);
 	if (!hnd) {
@@ -342,10 +342,10 @@
 	uint32_t map_flags;
 	uint8_t *addr[DRV_MAX_PLANES] = { nullptr, nullptr, nullptr, nullptr };
 	auto mod = (struct gralloc0_module const *)module;
-	struct rectangle rect = {.x = static_cast<uint32_t>(l),
-				 .y = static_cast<uint32_t>(t),
-				 .width = static_cast<uint32_t>(w),
-				 .height = static_cast<uint32_t>(h) };
+	struct rectangle rect = { .x = static_cast<uint32_t>(l),
+				  .y = static_cast<uint32_t>(t),
+				  .width = static_cast<uint32_t>(w),
+				  .height = static_cast<uint32_t>(h) };
 
 	auto hnd = cros_gralloc_convert_handle(handle);
 	if (!hnd) {
diff --git a/gbm.c b/gbm.c
index e265e36..dd6013c 100644
--- a/gbm.c
+++ b/gbm.c
@@ -229,7 +229,7 @@
 	void *addr;
 	off_t offset;
 	uint32_t map_flags;
-	struct rectangle rect = {.x = x, .y = y, .width = width, .height = height };
+	struct rectangle rect = { .x = x, .y = y, .width = width, .height = height };
 	if (!bo || width == 0 || height == 0 || !stride || !map_data)
 		return NULL;
 
@@ -318,9 +318,9 @@
 	return gbm_bo_get_handle_for_plane(bo, plane);
 }
 
-PUBLIC union gbm_bo_handle gbm_bo_get_handle_for_plane(struct gbm_bo* bo, size_t plane)
+PUBLIC union gbm_bo_handle gbm_bo_get_handle_for_plane(struct gbm_bo *bo, size_t plane)
 {
-  return (union gbm_bo_handle)drv_bo_get_plane_handle(bo->bo, plane).u64;
+	return (union gbm_bo_handle)drv_bo_get_plane_handle(bo->bo, plane).u64;
 }
 
 PUBLIC int gbm_bo_get_plane_fd(struct gbm_bo *bo, size_t plane)
diff --git a/helpers.c b/helpers.c
index b780ff6..de4541f 100644
--- a/helpers.c
+++ b/helpers.c
@@ -497,9 +497,9 @@
 	uint32_t i;
 
 	for (i = 0; i < num_formats; i++) {
-		struct combination combo = {.format = formats[i],
-					    .metadata = *metadata,
-					    .use_flags = use_flags };
+		struct combination combo = { .format = formats[i],
+					     .metadata = *metadata,
+					     .use_flags = use_flags };
 
 		drv_array_append(drv->combos, &combo);
 	}
@@ -593,9 +593,9 @@
 			}
 
 			if (!found) {
-				struct kms_item item = {.format = plane->formats[j],
-							.modifier = DRM_FORMAT_MOD_LINEAR,
-							.use_flags = use_flag };
+				struct kms_item item = { .format = plane->formats[j],
+							 .modifier = DRM_FORMAT_MOD_LINEAR,
+							 .use_flags = use_flag };
 
 				drv_array_append(kms_items, &item);
 			}
diff --git a/i915.c b/i915.c
index 0d1668e..3f62638 100644
--- a/i915.c
+++ b/i915.c
@@ -154,13 +154,13 @@
 	render_use_flags &= ~BO_USE_SW_WRITE_OFTEN;
 	render_use_flags &= ~BO_USE_SW_READ_OFTEN;
 	render_use_flags &= ~BO_USE_LINEAR;
-        render_use_flags &= ~BO_USE_PROTECTED;
+	render_use_flags &= ~BO_USE_PROTECTED;
 
 	texture_use_flags &= ~BO_USE_RENDERSCRIPT;
 	texture_use_flags &= ~BO_USE_SW_WRITE_OFTEN;
 	texture_use_flags &= ~BO_USE_SW_READ_OFTEN;
 	texture_use_flags &= ~BO_USE_LINEAR;
-        texture_use_flags &= ~BO_USE_PROTECTED;
+	texture_use_flags &= ~BO_USE_PROTECTED;
 
 	metadata.tiling = I915_TILING_X;
 	metadata.priority = 2;
@@ -421,7 +421,9 @@
 					 uint32_t format, const uint64_t *modifiers, uint32_t count)
 {
 	static const uint64_t modifier_order[] = {
-		I915_FORMAT_MOD_Y_TILED, I915_FORMAT_MOD_X_TILED, DRM_FORMAT_MOD_LINEAR,
+		I915_FORMAT_MOD_Y_TILED,
+		I915_FORMAT_MOD_X_TILED,
+		DRM_FORMAT_MOD_LINEAR,
 	};
 	uint64_t modifier;
 
