diff --git a/drivers/soc/qcom/ipc_router_glink_xprt.c b/drivers/soc/qcom/ipc_router_glink_xprt.c index 5290d445b05f..64f3c50cbbf1 100644 --- a/drivers/soc/qcom/ipc_router_glink_xprt.c +++ b/drivers/soc/qcom/ipc_router_glink_xprt.c @@ -179,6 +179,22 @@ static void *glink_xprt_vbuf_provider(void *iovec, size_t offset, return NULL; } +/** + * ipc_router_glink_xprt_set_version() - Set the IPC Router version in transport + * @xprt: Reference to the transport structure. + * @version: The version to be set in transport. + */ +static void ipc_router_glink_xprt_set_version( + struct msm_ipc_router_xprt *xprt, unsigned version) +{ + struct ipc_router_glink_xprt *glink_xprtp; + + if (!xprt) + return; + glink_xprtp = container_of(xprt, struct ipc_router_glink_xprt, xprt); + glink_xprtp->xprt_version = version; +} + static int ipc_router_glink_xprt_get_version( struct msm_ipc_router_xprt *xprt) { @@ -665,6 +681,7 @@ static int ipc_router_glink_config_init( glink_xprtp->xprt.name = glink_xprtp->ipc_rtr_xprt_name; glink_xprtp->xprt.get_version = ipc_router_glink_xprt_get_version; + glink_xprtp->xprt.set_version = ipc_router_glink_xprt_set_version; glink_xprtp->xprt.get_option = ipc_router_glink_xprt_get_option; glink_xprtp->xprt.read_avail = NULL; glink_xprtp->xprt.read = NULL; diff --git a/drivers/soc/qcom/ipc_router_hsic_xprt.c b/drivers/soc/qcom/ipc_router_hsic_xprt.c index 1f9e91ab15f2..d1706960eb17 100644 --- a/drivers/soc/qcom/ipc_router_hsic_xprt.c +++ b/drivers/soc/qcom/ipc_router_hsic_xprt.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +/* Copyright (c) 2013-2015, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -137,6 +137,23 @@ static struct msm_ipc_router_hsic_xprt * return NULL; } +/** + * ipc_router_hsic_set_xprt_version() - Set IPC Router header version + * in the transport + * @xprt: Reference to the transport structure. + * @version: The version to be set in transport. + */ +static void ipc_router_hsic_set_xprt_version( + struct msm_ipc_router_xprt *xprt, unsigned version) +{ + struct msm_ipc_router_hsic_xprt *hsic_xprtp; + + if (!xprt) + return; + hsic_xprtp = container_of(xprt, struct msm_ipc_router_hsic_xprt, xprt); + hsic_xprtp->xprt_version = version; +} + /** * msm_ipc_router_hsic_get_xprt_version() - Get IPC Router header version * supported by the XPRT @@ -581,6 +598,8 @@ static int msm_ipc_router_hsic_config_init( XPRT_NAME_LEN); hsic_xprtp->xprt.name = hsic_xprtp->xprt_name; + hsic_xprtp->xprt.set_version = + ipc_router_hsic_set_xprt_version; hsic_xprtp->xprt.get_version = msm_ipc_router_hsic_get_xprt_version; hsic_xprtp->xprt.get_option = diff --git a/drivers/soc/qcom/ipc_router_mhi_xprt.c b/drivers/soc/qcom/ipc_router_mhi_xprt.c index c8adeacffcf4..faf01c8aa013 100644 --- a/drivers/soc/qcom/ipc_router_mhi_xprt.c +++ b/drivers/soc/qcom/ipc_router_mhi_xprt.c @@ -303,6 +303,22 @@ int mhi_xprt_queue_in_buffers(struct ipc_router_mhi_xprt *mhi_xprtp, return i; } +/** +* ipc_router_mhi_set_xprt_version() - Set the IPC Router version in transport +* @xprt: Reference to the transport structure. +* @version: The version to be set in transport. +*/ +static void ipc_router_mhi_set_xprt_version(struct msm_ipc_router_xprt *xprt, + unsigned version) +{ + struct ipc_router_mhi_xprt *mhi_xprtp; + + if (!xprt) + return; + mhi_xprtp = container_of(xprt, struct ipc_router_mhi_xprt, xprt); + mhi_xprtp->xprt_version = version; +} + /** * ipc_router_mhi_get_xprt_version() - Get IPC Router header version * supported by the XPRT @@ -874,6 +890,7 @@ static int ipc_router_mhi_config_init( mhi_xprtp->xprt.link_id = mhi_xprt_config->link_id; mhi_xprtp->xprt.name = mhi_xprtp->xprt_name; mhi_xprtp->xprt.get_version = ipc_router_mhi_get_xprt_version; + mhi_xprtp->xprt.set_version = ipc_router_mhi_set_xprt_version; mhi_xprtp->xprt.get_option = ipc_router_mhi_get_xprt_option; mhi_xprtp->xprt.read_avail = NULL; mhi_xprtp->xprt.read = NULL; diff --git a/drivers/soc/qcom/ipc_router_smd_xprt.c b/drivers/soc/qcom/ipc_router_smd_xprt.c index 60c45080781c..a94e81556027 100644 --- a/drivers/soc/qcom/ipc_router_smd_xprt.c +++ b/drivers/soc/qcom/ipc_router_smd_xprt.c @@ -135,6 +135,23 @@ static LIST_HEAD(smd_remote_xprt_list); static bool is_pil_loading_disabled(uint32_t edge); +/** + * ipc_router_smd_set_xprt_version() - Set IPC Router header version + * in the transport + * @xprt: Reference to the transport structure. + * @version: The version to be set in transport. + */ +static void ipc_router_smd_set_xprt_version( + struct msm_ipc_router_xprt *xprt, unsigned version) +{ + struct msm_ipc_router_smd_xprt *smd_xprtp; + + if (!xprt) + return; + smd_xprtp = container_of(xprt, struct msm_ipc_router_smd_xprt, xprt); + smd_xprtp->xprt_version = version; +} + static int msm_ipc_router_smd_get_xprt_version( struct msm_ipc_router_xprt *xprt) { @@ -652,6 +669,8 @@ static int msm_ipc_router_smd_config_init( XPRT_NAME_LEN); smd_xprtp->xprt.name = smd_xprtp->xprt_name; + smd_xprtp->xprt.set_version = + ipc_router_smd_set_xprt_version; smd_xprtp->xprt.get_version = msm_ipc_router_smd_get_xprt_version; smd_xprtp->xprt.get_option = diff --git a/include/linux/ipc_router_xprt.h b/include/linux/ipc_router_xprt.h index 8e3a2b3f1c99..276c79ff1591 100644 --- a/include/linux/ipc_router_xprt.h +++ b/include/linux/ipc_router_xprt.h @@ -116,6 +116,7 @@ struct rr_packet { * @link_id: Network cluster ID to which the XPRT belongs to. * @priv: XPRT's private data. * @get_version: Method to get header version supported by the XPRT. + * @set_version: Method to set header version in XPRT. * @get_option: Method to get XPRT specific options. * @read_avail: Method to get data size available to be read from the XPRT. * @read: Method to read data from the XPRT. @@ -132,6 +133,8 @@ struct msm_ipc_router_xprt { int (*get_version)(struct msm_ipc_router_xprt *xprt); int (*get_option)(struct msm_ipc_router_xprt *xprt); + void (*set_version)(struct msm_ipc_router_xprt *xprt, + unsigned version); int (*read_avail)(struct msm_ipc_router_xprt *xprt); int (*read)(void *data, uint32_t len, struct msm_ipc_router_xprt *xprt);