From 0fc1e59781edc145012da19408cb55ea35988a3e Mon Sep 17 00:00:00 2001 From: Chris Lew Date: Thu, 11 Jun 2020 00:00:39 -0700 Subject: [PATCH] neuron: ch_haven: Read peer name from device tree Add support for the primary vm to read the vm peer name from device tree. This information is needed to share memory to the peer vm. Change-Id: I9a38370c8b80480bcdd0988c515adf64b36f99c1 Signed-off-by: Chris Lew --- net/neuron/channel/ch_haven_recv.c | 9 ++++++++- net/neuron/channel/ch_haven_send.c | 9 ++++++++- net/neuron/channel/ch_mq_shmem_common.h | 2 ++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/net/neuron/channel/ch_haven_recv.c b/net/neuron/channel/ch_haven_recv.c index 47f0a6568436..b58af7a8e860 100644 --- a/net/neuron/channel/ch_haven_recv.c +++ b/net/neuron/channel/ch_haven_recv.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include "ch_mq_shmem_common.h" @@ -335,10 +336,16 @@ static int channel_hh_map_memory(struct neuron_mq_data_priv *priv, return -ENXIO; } - if (of_property_read_bool(dev->of_node, "qcom,primary")) + if (of_property_read_bool(dev->of_node, "qcom,primary")) { memset(priv->base, 0, sizeof(struct neuron_shmem_channel_header)); + ret = of_property_read_u32(dev->of_node, "peer-name", + &priv->peer_name); + if (ret) + priv->peer_name = HH_SELF_VM; + } + return 0; } diff --git a/net/neuron/channel/ch_haven_send.c b/net/neuron/channel/ch_haven_send.c index 43ceb3387c16..1fb4b41e690f 100644 --- a/net/neuron/channel/ch_haven_send.c +++ b/net/neuron/channel/ch_haven_send.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include "ch_mq_shmem_common.h" @@ -320,10 +321,16 @@ static int channel_hh_map_memory(struct neuron_mq_data_priv *priv, return -ENXIO; } - if (of_property_read_bool(dev->of_node, "qcom,primary")) + if (of_property_read_bool(dev->of_node, "qcom,primary")) { memset(priv->base, 0, sizeof(struct neuron_shmem_channel_header)); + ret = of_property_read_u32(dev->of_node, "peer-name", + &priv->peer_name); + if (ret) + priv->peer_name = HH_SELF_VM; + } + return 0; } diff --git a/net/neuron/channel/ch_mq_shmem_common.h b/net/neuron/channel/ch_mq_shmem_common.h index 3a74e81703e0..b4b163b237cc 100644 --- a/net/neuron/channel/ch_mq_shmem_common.h +++ b/net/neuron/channel/ch_mq_shmem_common.h @@ -76,6 +76,8 @@ struct neuron_mq_data_priv { atomic64_t virq_payload; /* A counter to calculate the interrupt received. */ u32 interrupt_counter; + /* name of peer vm */ + u32 peer_name; /* haven tx doorbell descriptor */ void *tx_dbl; /* haven rx doorbell descriptor */