diff --git a/ivi-shell/ivi-layout-export.h b/ivi-shell/ivi-layout-export.h
index f880254..afbb110 100644
--- a/ivi-shell/ivi-layout-export.h
+++ b/ivi-shell/ivi-layout-export.h
@@ -453,15 +453,6 @@
 						   int32_t width, int32_t height);
 
 	/**
-	 * \brief Sets the orientation of a ivi_layer.
-	 *
-	 * \return IVI_SUCCEEDED if the method call was successful
-	 * \return IVI_FAILED if the method call was failed
-	 */
-	int32_t (*layer_set_orientation)(struct ivi_layout_layer *ivilayer,
-					 enum wl_output_transform orientation);
-
-	/**
 	 * \brief Add a ivi_surface to a ivi_layer which is currently managed by the service
 	 *
 	 * \return IVI_SUCCEEDED if the method call was successful
diff --git a/ivi-shell/ivi-layout.c b/ivi-shell/ivi-layout.c
index 3a0d319..60e381c 100644
--- a/ivi-shell/ivi-layout.c
+++ b/ivi-shell/ivi-layout.c
@@ -1489,28 +1489,6 @@
 	return IVI_SUCCEEDED;
 }
 
-static int32_t
-ivi_layout_layer_set_orientation(struct ivi_layout_layer *ivilayer,
-				 enum wl_output_transform orientation)
-{
-	struct ivi_layout_layer_properties *prop = NULL;
-
-	if (ivilayer == NULL) {
-		weston_log("ivi_layout_layer_set_orientation: invalid argument\n");
-		return IVI_FAILED;
-	}
-
-	prop = &ivilayer->pending.prop;
-	prop->orientation = orientation;
-
-	if (ivilayer->prop.orientation != orientation)
-		prop->event_mask |= IVI_NOTIFICATION_ORIENTATION;
-	else
-		prop->event_mask &= ~IVI_NOTIFICATION_ORIENTATION;
-
-	return IVI_SUCCEEDED;
-}
-
 int32_t
 ivi_layout_layer_set_render_order(struct ivi_layout_layer *ivilayer,
 				  struct ivi_layout_surface **pSurface,
@@ -2074,7 +2052,6 @@
 	.layer_set_opacity			= ivi_layout_layer_set_opacity,
 	.layer_set_source_rectangle		= ivi_layout_layer_set_source_rectangle,
 	.layer_set_destination_rectangle	= ivi_layout_layer_set_destination_rectangle,
-	.layer_set_orientation			= ivi_layout_layer_set_orientation,
 	.layer_add_surface			= ivi_layout_layer_add_surface,
 	.layer_remove_surface			= ivi_layout_layer_remove_surface,
 	.layer_set_render_order			= ivi_layout_layer_set_render_order,
diff --git a/tests/ivi_layout-internal-test.c b/tests/ivi_layout-internal-test.c
index f5e2763..e56eb12 100644
--- a/tests/ivi_layout-internal-test.c
+++ b/tests/ivi_layout-internal-test.c
@@ -180,31 +180,6 @@
 }
 
 static void
-test_layer_orientation(struct test_context *ctx)
-{
-	const struct ivi_layout_interface *lyt = ctx->layout_interface;
-	struct ivi_layout_layer *ivilayer;
-	const struct ivi_layout_layer_properties *prop;
-
-	ivilayer = lyt->layer_create_with_dimension(IVI_TEST_LAYER_ID(0), 200, 300);
-	iassert(ivilayer != NULL);
-
-	prop = lyt->get_properties_of_layer(ivilayer);
-	iassert(prop->orientation == WL_OUTPUT_TRANSFORM_NORMAL);
-
-	iassert(lyt->layer_set_orientation(
-		ivilayer, WL_OUTPUT_TRANSFORM_90) == IVI_SUCCEEDED);
-
-	iassert(prop->orientation == WL_OUTPUT_TRANSFORM_NORMAL);
-
-	lyt->commit_changes();
-
-	iassert(prop->orientation == WL_OUTPUT_TRANSFORM_90);
-
-	lyt->layer_destroy(ivilayer);
-}
-
-static void
 test_layer_dimension(struct test_context *ctx)
 {
 	const struct ivi_layout_interface *lyt = ctx->layout_interface;
@@ -398,17 +373,6 @@
 }
 
 static void
-test_layer_bad_orientation(struct test_context *ctx)
-{
-	const struct ivi_layout_interface *lyt = ctx->layout_interface;
-
-	iassert(lyt->layer_set_orientation(
-		NULL, WL_OUTPUT_TRANSFORM_90) == IVI_FAILED);
-
-	lyt->commit_changes();
-}
-
-static void
 test_layer_bad_source_rectangle(struct test_context *ctx)
 {
 	const struct ivi_layout_interface *lyt = ctx->layout_interface;
@@ -455,21 +419,6 @@
 }
 
 static void
-test_commit_changes_after_orientation_set_layer_destroy(struct test_context *ctx)
-{
-	const struct ivi_layout_interface *lyt = ctx->layout_interface;
-	struct ivi_layout_layer *ivilayer;
-
-	ivilayer = lyt->layer_create_with_dimension(IVI_TEST_LAYER_ID(0), 200, 300);
-	iassert(ivilayer != NULL);
-
-	iassert(lyt->layer_set_orientation(
-		    ivilayer, WL_OUTPUT_TRANSFORM_90) == IVI_SUCCEEDED);
-	lyt->layer_destroy(ivilayer);
-	lyt->commit_changes();
-}
-
-static void
 test_commit_changes_after_source_rectangle_set_layer_destroy(struct test_context *ctx)
 {
 	const struct ivi_layout_interface *lyt = ctx->layout_interface;
@@ -937,7 +886,6 @@
 	test_layer_create(ctx);
 	test_layer_visibility(ctx);
 	test_layer_opacity(ctx);
-	test_layer_orientation(ctx);
 	test_layer_dimension(ctx);
 	test_layer_position(ctx);
 	test_layer_destination_rectangle(ctx);
@@ -946,12 +894,10 @@
 	test_layer_bad_visibility(ctx);
 	test_layer_bad_opacity(ctx);
 	test_layer_bad_destination_rectangle(ctx);
-	test_layer_bad_orientation(ctx);
 	test_layer_bad_source_rectangle(ctx);
 	test_layer_bad_properties(ctx);
 	test_commit_changes_after_visibility_set_layer_destroy(ctx);
 	test_commit_changes_after_opacity_set_layer_destroy(ctx);
-	test_commit_changes_after_orientation_set_layer_destroy(ctx);
 	test_commit_changes_after_source_rectangle_set_layer_destroy(ctx);
 	test_commit_changes_after_destination_rectangle_set_layer_destroy(ctx);
 	test_layer_create_duplicate(ctx);
