Remove FWU serializer abstraction

The FWU protocol is well specified and there's no use case for having
different serializations for the protocol messages. Remove serializer
abstraction and call the serializer function directly.

Signed-off-by: Imre Kis <imre.kis@arm.com>
Change-Id: Ibbdca3cfb637c993af8e2aaef2cb6acd392990b1
diff --git a/components/service/fwu/provider/fwu_provider.c b/components/service/fwu/provider/fwu_provider.c
index d1d8df7..51b712d 100644
--- a/components/service/fwu/provider/fwu_provider.c
+++ b/components/service/fwu/provider/fwu_provider.c
@@ -54,9 +54,6 @@
 	/* Initialise the fwu_provider */
 	context->update_agent = update_agent;
 
-	for (size_t encoding = 0; encoding < TS_RPC_ENCODING_LIMIT; ++encoding)
-		context->serializers[encoding] = NULL;
-
 	service_provider_init(&context->base_provider, context, &service_uuid, handler_table,
 			      sizeof(handler_table) / sizeof(struct service_handler));
 
@@ -72,26 +69,6 @@
 	(void)context;
 }
 
-void fwu_provider_register_serializer(struct fwu_provider *context, unsigned int encoding,
-				      const struct fwu_provider_serializer *serializer)
-{
-	if (encoding < TS_RPC_ENCODING_LIMIT) {
-		context->serializers[encoding] = serializer;
-	}
-}
-
-static const struct fwu_provider_serializer *get_fwu_serializer(struct fwu_provider *this_instance,
-								const struct rpc_request *req)
-{
-	const struct fwu_provider_serializer *serializer = NULL;
-	unsigned int encoding = 0;
-
-	if (encoding < TS_RPC_ENCODING_LIMIT)
-		serializer = this_instance->serializers[encoding];
-
-	return serializer;
-}
-
 static uint16_t generate_function_presence(const struct update_agent *agent,
 					   uint8_t function_presence[FWU_FUNC_ID_COUNT])
 {
@@ -123,13 +100,9 @@
 {
 	rpc_status_t rpc_status = RPC_ERROR_INTERNAL;
 	struct fwu_provider *this_instance = (struct fwu_provider *)context;
-	const struct fwu_provider_serializer *serializer = get_fwu_serializer(this_instance, req);
 	struct fwu_discovery_result discovery_result = { 0 };
 	struct rpc_buffer *resp_buf = &req->response;
 
-	if (!serializer)
-		return rpc_status;
-
 	req->service_status = update_agent_discover(this_instance->update_agent, &discovery_result);
 
 	if (!req->service_status) {
@@ -139,7 +112,7 @@
 		num_func = generate_function_presence(this_instance->update_agent,
 						      function_presence);
 
-		rpc_status = serializer->serialize_discover_resp(
+		rpc_status = fwu_serialize_discover_resp(
 			resp_buf, discovery_result.service_status, discovery_result.version_major,
 			discovery_result.version_minor, num_func, discovery_result.max_payload_size,
 			discovery_result.flags, discovery_result.vendor_specific_flags,
@@ -159,15 +132,13 @@
 	rpc_status_t rpc_status = RPC_ERROR_INTERNAL;
 	struct rpc_buffer *req_buf = &req->request;
 	struct fwu_provider *this_instance = (struct fwu_provider *)context;
-	const struct fwu_provider_serializer *serializer = get_fwu_serializer(this_instance, req);
 	uint32_t vendor_flags = 0;
 	uint32_t partial_update_count = 0;
 	struct uuid_octets update_guid[FWU_PROVIDER_MAX_PARTIAL_UPDATE_COUNT];
 
-	if (serializer)
-		rpc_status = serializer->deserialize_begin_staging_req(
-			req_buf, &vendor_flags, &partial_update_count,
-			FWU_PROVIDER_MAX_PARTIAL_UPDATE_COUNT, update_guid);
+	rpc_status = fwu_deserialize_begin_staging_req(
+		req_buf, &vendor_flags, &partial_update_count,
+		FWU_PROVIDER_MAX_PARTIAL_UPDATE_COUNT, update_guid);
 
 	if (rpc_status == RPC_SUCCESS)
 		req->service_status = update_agent_begin_staging(
@@ -200,12 +171,10 @@
 	rpc_status_t rpc_status = RPC_ERROR_INTERNAL;
 	struct rpc_buffer *req_buf = &req->request;
 	struct fwu_provider *this_instance = (struct fwu_provider *)context;
-	const struct fwu_provider_serializer *serializer = get_fwu_serializer(this_instance, req);
 	struct uuid_octets image_type_uuid = { 0 };
 	uint8_t op_type = 0;
 
-	if (serializer)
-		rpc_status = serializer->deserialize_open_req(req_buf, &image_type_uuid, &op_type);
+	rpc_status = fwu_deserialize_open_req(req_buf, &image_type_uuid, &op_type);
 
 	if (rpc_status == RPC_SUCCESS) {
 		uint32_t handle = 0;
@@ -215,7 +184,7 @@
 
 		if (!req->service_status) {
 			struct rpc_buffer *resp_buf = &req->response;
-			rpc_status = serializer->serialize_open_resp(resp_buf, handle);
+			rpc_status = fwu_serialize_open_resp(resp_buf, handle);
 		}
 	}
 
@@ -227,14 +196,11 @@
 	rpc_status_t rpc_status = RPC_ERROR_INTERNAL;
 	struct rpc_buffer *req_buf = &req->request;
 	struct fwu_provider *this_instance = (struct fwu_provider *)context;
-	const struct fwu_provider_serializer *serializer = get_fwu_serializer(this_instance, req);
 	uint32_t handle = 0;
 	size_t data_len = 0;
 	const uint8_t *data = NULL;
 
-	if (serializer)
-		rpc_status = serializer->deserialize_write_stream_req(req_buf, &handle, &data_len,
-								      &data);
+	rpc_status = fwu_deserialize_write_stream_req(req_buf, &handle, &data_len, &data);
 
 	if (rpc_status == RPC_SUCCESS) {
 		req->service_status = update_agent_write_stream(this_instance->update_agent, handle,
@@ -249,11 +215,9 @@
 	rpc_status_t rpc_status = RPC_ERROR_INTERNAL;
 	struct rpc_buffer *req_buf = &req->request;
 	struct fwu_provider *this_instance = (struct fwu_provider *)context;
-	const struct fwu_provider_serializer *serializer = get_fwu_serializer(this_instance, req);
 	uint32_t handle = 0;
 
-	if (serializer)
-		rpc_status = serializer->deserialize_read_stream_req(req_buf, &handle);
+	rpc_status = fwu_deserialize_read_stream_req(req_buf, &handle);
 
 	if (rpc_status == RPC_SUCCESS) {
 		struct rpc_buffer *resp_buf = &req->response;
@@ -262,15 +226,14 @@
 		size_t read_len = 0;
 		size_t total_len = 0;
 
-		serializer->read_stream_resp_payload(resp_buf, &payload_buf, &max_payload);
+		fwu_read_stream_resp_payload(resp_buf, &payload_buf, &max_payload);
 
 		req->service_status = update_agent_read_stream(this_instance->update_agent, handle,
 							 payload_buf, max_payload, &read_len,
 							 &total_len);
 
 		if (!req->service_status)
-			rpc_status = serializer->serialize_read_stream_resp(resp_buf, read_len,
-									    total_len);
+			rpc_status = fwu_serialize_read_stream_resp(resp_buf, read_len, total_len);
 
 	}
 
@@ -282,14 +245,11 @@
 	rpc_status_t rpc_status = RPC_ERROR_INTERNAL;
 	struct rpc_buffer *req_buf = &req->request;
 	struct fwu_provider *this_instance = (struct fwu_provider *)context;
-	const struct fwu_provider_serializer *serializer = get_fwu_serializer(this_instance, req);
 	uint32_t handle = 0;
 	bool accepted = false;
 	size_t max_atomic_len = 0;
 
-	if (serializer)
-		rpc_status = serializer->deserialize_commit_req(req_buf, &handle, &accepted,
-								&max_atomic_len);
+	rpc_status = fwu_deserialize_commit_req(req_buf, &handle, &accepted, &max_atomic_len);
 
 	if (rpc_status == RPC_SUCCESS) {
 		uint32_t progress = 0;
@@ -300,7 +260,7 @@
 
 		if (!req->service_status) {
 			struct rpc_buffer *resp_buf = &req->response;
-			rpc_status = serializer->serialize_commit_resp(resp_buf, progress, total_work);
+			rpc_status = fwu_serialize_commit_resp(resp_buf, progress, total_work);
 		}
 	}
 
@@ -312,11 +272,9 @@
 	rpc_status_t rpc_status = RPC_ERROR_INTERNAL;
 	struct rpc_buffer *req_buf = &req->request;
 	struct fwu_provider *this_instance = (struct fwu_provider *)context;
-	const struct fwu_provider_serializer *serializer = get_fwu_serializer(this_instance, req);
 	struct uuid_octets image_type_uuid;
 
-	if (serializer)
-		rpc_status = serializer->deserialize_accept_req(req_buf, &image_type_uuid);
+	rpc_status = fwu_deserialize_accept_req(req_buf, &image_type_uuid);
 
 	if (rpc_status == RPC_SUCCESS)
 		req->service_status = update_agent_accept_image(this_instance->update_agent,
diff --git a/components/service/fwu/provider/fwu_provider.h b/components/service/fwu/provider/fwu_provider.h
index 3864ca6..d762bce 100644
--- a/components/service/fwu/provider/fwu_provider.h
+++ b/components/service/fwu/provider/fwu_provider.h
@@ -34,7 +34,6 @@
 struct fwu_provider {
 	struct service_provider base_provider;
 	struct fwu_provider_shim shim;
-	const struct fwu_provider_serializer *serializers[TS_RPC_ENCODING_LIMIT];
 	struct update_agent *update_agent;
 };
 
@@ -56,16 +55,6 @@
  */
 void fwu_provider_deinit(struct fwu_provider *context);
 
-/**
- * \brief Register a serializer
- *
- * \param[in] context    The subject fwu_provider context
- * \param[in] encoding   The encoding scheme
- * \param[in] serializer The serializer
- */
-void fwu_provider_register_serializer(struct fwu_provider *context, unsigned int encoding,
-				      const struct fwu_provider_serializer *serializer);
-
 #ifdef __cplusplus
 } /* extern "C" */
 #endif
diff --git a/components/service/fwu/provider/serializer/packed-c/component.cmake b/components/service/fwu/provider/serializer/component.cmake
similarity index 70%
rename from components/service/fwu/provider/serializer/packed-c/component.cmake
rename to components/service/fwu/provider/serializer/component.cmake
index 4209cae..d881b60 100644
--- a/components/service/fwu/provider/serializer/packed-c/component.cmake
+++ b/components/service/fwu/provider/serializer/component.cmake
@@ -1,5 +1,5 @@
 #-------------------------------------------------------------------------------
-# Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2022-2024, Arm Limited and Contributors. All rights reserved.
 #
 # SPDX-License-Identifier: BSD-3-Clause
 #
@@ -9,5 +9,5 @@
 endif()
 
 target_sources(${TGT} PRIVATE
-	"${CMAKE_CURRENT_LIST_DIR}/packedc_fwu_provider_serializer.c"
+	"${CMAKE_CURRENT_LIST_DIR}/fwu_provider_serializer.c"
 	)
diff --git a/components/service/fwu/provider/serializer/packed-c/packedc_fwu_provider_serializer.c b/components/service/fwu/provider/serializer/fwu_provider_serializer.c
similarity index 72%
rename from components/service/fwu/provider/serializer/packed-c/packedc_fwu_provider_serializer.c
rename to components/service/fwu/provider/serializer/fwu_provider_serializer.c
index 888affb..5397760 100644
--- a/components/service/fwu/provider/serializer/packed-c/packedc_fwu_provider_serializer.c
+++ b/components/service/fwu/provider/serializer/fwu_provider_serializer.c
@@ -3,7 +3,7 @@
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
-#include "packedc_fwu_provider_serializer.h"
+#include "fwu_provider_serializer.h"
 
 #include <string.h>
 
@@ -11,10 +11,11 @@
 #include "protocols/service/fwu/fwu_proto.h"
 #include "util.h"
 
-rpc_status_t serialize_discover_resp(const struct rpc_buffer *resp_buf, int16_t service_status,
-				     uint8_t version_major, uint8_t version_minor,
-				     uint16_t num_func, uint64_t max_payload_size, uint32_t flags,
-				     uint32_t vendor_specific_flags, uint8_t *function_presence)
+rpc_status_t fwu_serialize_discover_resp(const struct rpc_buffer *resp_buf, int16_t service_status,
+					 uint8_t version_major, uint8_t version_minor,
+					 uint16_t num_func, uint64_t max_payload_size,
+					 uint32_t flags, uint32_t vendor_specific_flags,
+					 uint8_t *function_presence)
 {
 	rpc_status_t rpc_status = RPC_ERROR_INVALID_RESPONSE_BODY;
 	struct fwu_discover_out *resp_msg = NULL;
@@ -43,10 +44,11 @@
 	return rpc_status;
 }
 
-rpc_status_t deserialize_begin_staging_req(const struct rpc_buffer *req_buf, uint32_t *vendor_flags,
-					   uint32_t *partial_update_count,
-					   uint32_t max_update_count,
-					   struct uuid_octets *update_guid)
+rpc_status_t fwu_deserialize_begin_staging_req(const struct rpc_buffer *req_buf,
+					       uint32_t *vendor_flags,
+					       uint32_t *partial_update_count,
+					       uint32_t max_update_count,
+					       struct uuid_octets *update_guid)
 {
 	rpc_status_t rpc_status = RPC_ERROR_INVALID_REQUEST_BODY;
 	size_t expected_fixed_len = sizeof(struct fwu_begin_staging_in);
@@ -74,8 +76,9 @@
 	return rpc_status;
 }
 
-static rpc_status_t deserialize_open_req(const struct rpc_buffer *req_buf,
-					 struct uuid_octets *image_type_uuid, uint8_t *op_type)
+rpc_status_t fwu_deserialize_open_req(const struct rpc_buffer *req_buf,
+				      struct uuid_octets *image_type_uuid,
+				      uint8_t *op_type)
 {
 	rpc_status_t rpc_status = RPC_ERROR_INVALID_REQUEST_BODY;
 	size_t expected_fixed_len = sizeof(struct fwu_open_in);
@@ -97,7 +100,7 @@
 	return rpc_status;
 }
 
-static rpc_status_t serialize_open_resp(struct rpc_buffer *resp_buf, uint32_t handle)
+rpc_status_t fwu_serialize_open_resp(struct rpc_buffer *resp_buf, uint32_t handle)
 {
 	rpc_status_t rpc_status = RPC_ERROR_INTERNAL;
 	size_t fixed_len = sizeof(struct fwu_open_out);
@@ -115,9 +118,8 @@
 }
 
 /* Operation: write_stream */
-static rpc_status_t deserialize_write_stream_req(const struct rpc_buffer *req_buf,
-						 uint32_t *handle, size_t *data_length,
-						 const uint8_t **data)
+rpc_status_t fwu_deserialize_write_stream_req(const struct rpc_buffer *req_buf, uint32_t *handle,
+					      size_t *data_length, const uint8_t **data)
 {
 	rpc_status_t rpc_status = RPC_ERROR_INVALID_REQUEST_BODY;
 	size_t expected_fixed_len = sizeof(struct fwu_write_stream_in);
@@ -136,8 +138,7 @@
 }
 
 /* Operation: read_stream */
-static rpc_status_t deserialize_read_stream_req(const struct rpc_buffer *req_buf,
-						uint32_t *handle)
+rpc_status_t fwu_deserialize_read_stream_req(const struct rpc_buffer *req_buf, uint32_t *handle)
 {
 	rpc_status_t rpc_status = RPC_ERROR_INVALID_REQUEST_BODY;
 	size_t expected_fixed_len = sizeof(struct fwu_read_stream_in);
@@ -153,8 +154,8 @@
 	return rpc_status;
 }
 
-static void read_stream_resp_payload(const struct rpc_buffer *resp_buf, uint8_t **payload_buf,
-				     size_t *max_payload)
+void fwu_read_stream_resp_payload(const struct rpc_buffer *resp_buf, uint8_t **payload_buf,
+				  size_t *max_payload)
 {
 	struct fwu_read_stream_out *resp_msg = (struct fwu_read_stream_out *)resp_buf->data;
 	size_t fixed_len = offsetof(struct fwu_read_stream_out, payload);
@@ -166,8 +167,8 @@
 		*max_payload = resp_buf->size - fixed_len;
 }
 
-static rpc_status_t serialize_read_stream_resp(struct rpc_buffer *resp_buf, size_t read_bytes,
-					       size_t total_bytes)
+rpc_status_t fwu_serialize_read_stream_resp(struct rpc_buffer *resp_buf, size_t read_bytes,
+					    size_t total_bytes)
 {
 	rpc_status_t rpc_status = RPC_ERROR_INTERNAL;
 	struct fwu_read_stream_out *resp_msg = (struct fwu_read_stream_out *)resp_buf->data;
@@ -190,8 +191,8 @@
 }
 
 /* Operation: commit */
-static rpc_status_t deserialize_commit_req(const struct rpc_buffer *req_buf, uint32_t *handle,
-					   bool *accepted, size_t *max_atomic_len)
+rpc_status_t fwu_deserialize_commit_req(const struct rpc_buffer *req_buf, uint32_t *handle,
+					bool *accepted, size_t *max_atomic_len)
 {
 	rpc_status_t rpc_status = RPC_ERROR_INVALID_REQUEST_BODY;
 	size_t expected_fixed_len = sizeof(struct fwu_commit_in);
@@ -209,8 +210,8 @@
 	return rpc_status;
 }
 
-static rpc_status_t serialize_commit_resp(struct rpc_buffer *resp_buf, size_t progress,
-					  size_t total_work)
+rpc_status_t fwu_serialize_commit_resp(struct rpc_buffer *resp_buf, size_t progress,
+				       size_t total_work)
 {
 	rpc_status_t rpc_status = RPC_ERROR_INTERNAL;
 	struct fwu_commit_out *resp_msg = (struct fwu_commit_out *)resp_buf->data;
@@ -229,8 +230,8 @@
 }
 
 /* Operation: accept_image */
-static rpc_status_t deserialize_accept_req(const struct rpc_buffer *req_buf,
-					   struct uuid_octets *image_type_uuid)
+rpc_status_t fwu_deserialize_accept_req(const struct rpc_buffer *req_buf,
+					struct uuid_octets *image_type_uuid)
 {
 	rpc_status_t rpc_status = RPC_ERROR_INVALID_REQUEST_BODY;
 	size_t expected_fixed_len = sizeof(struct fwu_accept_image_in);
@@ -245,23 +246,3 @@
 
 	return rpc_status;
 }
-
-/* Singleton method to provide access to the serializer instance */
-const struct fwu_provider_serializer *packedc_fwu_provider_serializer_instance(void)
-{
-	static const struct fwu_provider_serializer instance = {
-		serialize_discover_resp,
-		deserialize_begin_staging_req,
-		deserialize_open_req,
-		serialize_open_resp,
-		deserialize_write_stream_req,
-		deserialize_read_stream_req,
-		read_stream_resp_payload,
-		serialize_read_stream_resp,
-		deserialize_commit_req,
-		serialize_commit_resp,
-		deserialize_accept_req
-	};
-
-	return &instance;
-}
diff --git a/components/service/fwu/provider/serializer/fwu_provider_serializer.h b/components/service/fwu/provider/serializer/fwu_provider_serializer.h
index ee44abe..7c30429 100644
--- a/components/service/fwu/provider/serializer/fwu_provider_serializer.h
+++ b/components/service/fwu/provider/serializer/fwu_provider_serializer.h
@@ -14,61 +14,49 @@
 #include "common/uuid/uuid.h"
 #include "rpc/common/endpoint/rpc_service_interface.h"
 
-/* Provides a common interface for parameter serialization operations
- * for the fwu service provider. Allows alternative serialization
- * protocols to be used without hard-wiring a particular protocol
- * into the service provider code. A concrete serializer must
- * implement this interface.
- */
-struct fwu_provider_serializer {
-	/* Operation: discover */
-	rpc_status_t (*serialize_discover_resp)(const struct rpc_buffer *resp_buf,
-						int16_t service_status, uint8_t version_major,
-						uint8_t version_minor, uint16_t num_func,
-						uint64_t max_payload_size, uint32_t flags,
-						uint32_t vendor_specific_flags,
-						uint8_t *function_presence);
+/* Operation: discover */
+rpc_status_t fwu_serialize_discover_resp(const struct rpc_buffer *resp_buf, int16_t service_status,
+					 uint8_t version_major, uint8_t version_minor,
+					 uint16_t num_func, uint64_t max_payload_size,
+					 uint32_t flags, uint32_t vendor_specific_flags,
+					 uint8_t *function_presence);
 
-	/* Operation: begin staging */
-	rpc_status_t (*deserialize_begin_staging_req)(const struct rpc_buffer *req_buf,
-						      uint32_t *vendor_flags,
-						      uint32_t *partial_update_count,
-						      uint32_t max_update_count,
-						      struct uuid_octets *update_guid);
+/* Operation: begin staging */
+rpc_status_t fwu_deserialize_begin_staging_req(const struct rpc_buffer *req_buf,
+					       uint32_t *vendor_flags,
+					       uint32_t *partial_update_count,
+					       uint32_t max_update_count,
+					       struct uuid_octets *update_guid);
 
-	/* Operation: open */
-	rpc_status_t (*deserialize_open_req)(const struct rpc_buffer *req_buf,
-					     struct uuid_octets *image_type_uuid,
-					     uint8_t *op_type);
+/* Operation: open */
+rpc_status_t fwu_deserialize_open_req(const struct rpc_buffer *req_buf,
+				      struct uuid_octets *image_type_uuid,
+				      uint8_t *op_type);
 
-	rpc_status_t (*serialize_open_resp)(struct rpc_buffer *resp_buf, uint32_t handle);
+rpc_status_t fwu_serialize_open_resp(struct rpc_buffer *resp_buf, uint32_t handle);
 
-	/* Operation: write_stream */
-	rpc_status_t (*deserialize_write_stream_req)(const struct rpc_buffer *req_buf,
-						     uint32_t *handle, size_t *data_len,
-						     const uint8_t **data);
+/* Operation: write_stream */
+rpc_status_t fwu_deserialize_write_stream_req(const struct rpc_buffer *req_buf, uint32_t *handle,
+					      size_t *data_length, const uint8_t **data);
 
-	/* Operation: read_stream */
-	rpc_status_t (*deserialize_read_stream_req)(const struct rpc_buffer *req_buf,
-						    uint32_t *handle);
+/* Operation: read_stream */
+rpc_status_t fwu_deserialize_read_stream_req(const struct rpc_buffer *req_buf, uint32_t *handle);
 
-	void (*read_stream_resp_payload)(const struct rpc_buffer *resp_buf,
-					 uint8_t **payload_buf, size_t *max_payload);
+void fwu_read_stream_resp_payload(const struct rpc_buffer *resp_buf, uint8_t **payload_buf,
+				  size_t *max_payload);
 
-	rpc_status_t (*serialize_read_stream_resp)(struct rpc_buffer *resp_buf,
-						   size_t read_bytes, size_t total_bytes);
+rpc_status_t fwu_serialize_read_stream_resp(struct rpc_buffer *resp_buf, size_t read_bytes,
+					    size_t total_bytes);
 
-	/* Operation: commit */
-	rpc_status_t (*deserialize_commit_req)(const struct rpc_buffer *req_buf,
-					       uint32_t *handle, bool *accepted,
-					       size_t *max_atomic_len);
+/* Operation: commit */
+rpc_status_t fwu_deserialize_commit_req(const struct rpc_buffer *req_buf, uint32_t *handle,
+					bool *accepted, size_t *max_atomic_len);
 
-	rpc_status_t (*serialize_commit_resp)(struct rpc_buffer *resp_buf, size_t progress,
-					      size_t total_work);
+rpc_status_t fwu_serialize_commit_resp(struct rpc_buffer *resp_buf, size_t progress,
+				       size_t total_work);
 
-	/* Operation: accept_image */
-	rpc_status_t (*deserialize_accept_req)(const struct rpc_buffer *req_buf,
-					       struct uuid_octets *image_type_uuid);
-};
+/* Operation: accept_image */
+rpc_status_t fwu_deserialize_accept_req(const struct rpc_buffer *req_buf,
+					struct uuid_octets *image_type_uuid);
 
 #endif /* FWU_PROVIDER_SERIALIZER_H */
diff --git a/components/service/fwu/provider/serializer/packed-c/packedc_fwu_provider_serializer.h b/components/service/fwu/provider/serializer/packed-c/packedc_fwu_provider_serializer.h
deleted file mode 100644
index e1baeed..0000000
--- a/components/service/fwu/provider/serializer/packed-c/packedc_fwu_provider_serializer.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#ifndef PACKEDC_FWU_PROVIDER_SERIALIZER_H
-#define PACKEDC_FWU_PROVIDER_SERIALIZER_H
-
-#include "service/fwu/provider/serializer/fwu_provider_serializer.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Singleton method to provide access to the packed-c serializer
- * for the fwu service provider.
- */
-const struct fwu_provider_serializer *packedc_fwu_provider_serializer_instance(void);
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif /* PACKEDC_FWU_PROVIDER_SERIALIZER_H */
diff --git a/components/service/fwu/test/fwu_dut/sim/sim_fwu_dut.cpp b/components/service/fwu/test/fwu_dut/sim/sim_fwu_dut.cpp
index 7718b63..79f0766 100644
--- a/components/service/fwu/test/fwu_dut/sim/sim_fwu_dut.cpp
+++ b/components/service/fwu/test/fwu_dut/sim/sim_fwu_dut.cpp
@@ -21,7 +21,6 @@
 #include "service/fwu/fw_store/banked/volume_id.h"
 #include "service/fwu/inspector/direct/direct_fw_inspector.h"
 #include "service/fwu/installer/installer_index.h"
-#include "service/fwu/provider/serializer/packed-c/packedc_fwu_provider_serializer.h"
 #include "service/fwu/test/fwu_client/direct/direct_fwu_client.h"
 #include "service/fwu/test/metadata_fetcher/volume/volume_metadata_fetcher.h"
 
@@ -58,9 +57,6 @@
 
 	m_service_iface = fwu_provider_init(&m_fwu_provider, NULL);
 
-	fwu_provider_register_serializer(&m_fwu_provider, TS_RPC_ENCODING_PACKED_C,
-					 packedc_fwu_provider_serializer_instance());
-
 	m_metadata_checker = create_metadata_checker();
 }
 
diff --git a/deployments/component-test/component-test.cmake b/deployments/component-test/component-test.cmake
index f39473d..9cb5fe0 100644
--- a/deployments/component-test/component-test.cmake
+++ b/deployments/component-test/component-test.cmake
@@ -121,7 +121,7 @@
 		"components/service/fwu/inspector/mock"
 		"components/service/fwu/inspector/direct"
 		"components/service/fwu/provider"
-		"components/service/fwu/provider/serializer/packed-c"
+		"components/service/fwu/provider/serializer"
 		"components/service/fwu/test/fwu_client/direct"
 		"components/service/fwu/test/fwu_dut"
 		"components/service/fwu/test/fwu_dut/sim"
diff --git a/deployments/fwu/env/commonsp/fwu_sp.c b/deployments/fwu/env/commonsp/fwu_sp.c
index 21d78b7..35279b3 100644
--- a/deployments/fwu/env/commonsp/fwu_sp.c
+++ b/deployments/fwu/env/commonsp/fwu_sp.c
@@ -20,7 +20,6 @@
 #include "service/fwu/fw_store/banked/metadata_serializer/v2/metadata_serializer_v2.h"
 #include "service/fwu/inspector/direct/direct_fw_inspector.h"
 #include "service/fwu/provider/fwu_provider.h"
-#include "service/fwu/provider/serializer/packed-c/packedc_fwu_provider_serializer.h"
 #include "sp_api.h"
 #include "sp_discovery.h"
 #include "sp_messaging.h"
@@ -104,9 +103,6 @@
 		goto fatal_error;
 	}
 
-	fwu_provider_register_serializer(&service_provider, TS_RPC_ENCODING_PACKED_C,
-					 packedc_fwu_provider_serializer_instance());
-
 	/* Associate service interface with FFA call endpoint */
 	rpc_status = ts_rpc_endpoint_sp_init(&rpc_endpoint, 1, 16);
 	if (rpc_status != RPC_SUCCESS) {
diff --git a/deployments/fwu/env/commonsp/fwu_sp.cmake b/deployments/fwu/env/commonsp/fwu_sp.cmake
index 2fd8ca7..1ca1e86 100644
--- a/deployments/fwu/env/commonsp/fwu_sp.cmake
+++ b/deployments/fwu/env/commonsp/fwu_sp.cmake
@@ -27,7 +27,7 @@
 		"components/rpc/ts_rpc/endpoint/sp"
 		"components/service/common/provider"
 		"components/service/fwu/provider"
-		"components/service/fwu/provider/serializer/packed-c"
+		"components/service/fwu/provider/serializer"
 )
 
 target_sources(fwu PRIVATE
diff --git a/deployments/ts-service-test/linux-pc/CMakeLists.txt b/deployments/ts-service-test/linux-pc/CMakeLists.txt
index 4ce36e2..410eaae 100644
--- a/deployments/ts-service-test/linux-pc/CMakeLists.txt
+++ b/deployments/ts-service-test/linux-pc/CMakeLists.txt
@@ -106,7 +106,7 @@
 		"components/service/fwu/installer/copy"
 		"components/service/fwu/inspector/direct"
 		"components/service/fwu/provider"
-		"components/service/fwu/provider/serializer/packed-c"
+		"components/service/fwu/provider/serializer"
 		"components/service/fwu/test/fwu_client/direct"
 		"components/service/fwu/test/fwu_dut/sim"
 		"components/service/fwu/test/fwu_dut_factory/remote_sim"