[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20190516092754.33425-3-bibby.hsieh@mediatek.com>
Date: Thu, 16 May 2019 17:27:54 +0800
From: Bibby Hsieh <bibby.hsieh@...iatek.com>
To: Jassi Brar <jassisinghbrar@...il.com>,
Matthias Brugger <matthias.bgg@...il.com>,
Rob Herring <robh+dt@...nel.org>, CK HU <ck.hu@...iatek.com>
CC: Daniel Kurtz <djkurtz@...omium.org>,
Sascha Hauer <s.hauer@...gutronix.de>,
<devicetree@...r.kernel.org>, <linux-kernel@...r.kernel.org>,
<linux-arm-kernel@...ts.infradead.org>,
<linux-mediatek@...ts.infradead.org>,
<srv_heupstream@...iatek.com>,
"Sascha Hauer" <kernel@...gutronix.de>,
Philipp Zabel <p.zabel@...gutronix.de>,
Nicolas Boichat <drinkcat@...omium.org>,
YT Shen <yt.shen@...iatek.com>,
Daoyuan Huang <daoyuan.huang@...iatek.com>,
Jiaguang Zhang <jiaguang.zhang@...iatek.com>,
Dennis-YC Hsieh <dennis-yc.hsieh@...iatek.com>,
Houlong Wei <houlong.wei@...iatek.com>,
<ginny.chen@...iatek.com>, Bibby Hsieh <bibby.hsieh@...iatek.com>
Subject: [PATCH v6 11/12] soc: mediatek: cmdq: add cmdq_dev_get_event function
When client ask gce to clear or wait for event,
client need to pass event number to the API.
We suggest client store the event information in device node,
so we provide an API for client parse the event property.
Signed-off-by: Bibby Hsieh <bibby.hsieh@...iatek.com>
---
drivers/soc/mediatek/mtk-cmdq-helper.c | 18 ++++++++++++++++++
include/linux/soc/mediatek/mtk-cmdq.h | 12 ++++++++++++
2 files changed, 30 insertions(+)
diff --git a/drivers/soc/mediatek/mtk-cmdq-helper.c b/drivers/soc/mediatek/mtk-cmdq-helper.c
index a64060a34e01..e9658063c3d4 100644
--- a/drivers/soc/mediatek/mtk-cmdq-helper.c
+++ b/drivers/soc/mediatek/mtk-cmdq-helper.c
@@ -52,6 +52,24 @@ struct cmdq_subsys *cmdq_dev_get_subsys(struct device *dev, int idx)
}
EXPORT_SYMBOL(cmdq_dev_get_subsys);
+s32 cmdq_dev_get_event(struct device *dev, int index)
+{
+ s32 result;
+
+ if (!dev)
+ return -EINVAL;
+
+ if (of_property_read_u32_index(dev->of_node, "mediatek,gce-events",
+ index, &result)) {
+ dev_err(dev, "can't parse gce-events property");
+
+ return -ENODEV;
+ }
+
+ return result;
+}
+EXPORT_SYMBOL(cmdq_dev_get_event);
+
static void cmdq_client_timeout(struct timer_list *t)
{
struct cmdq_client *client = from_timer(client, t, timer);
diff --git a/include/linux/soc/mediatek/mtk-cmdq.h b/include/linux/soc/mediatek/mtk-cmdq.h
index 574006c5cd76..525713bf79b5 100644
--- a/include/linux/soc/mediatek/mtk-cmdq.h
+++ b/include/linux/soc/mediatek/mtk-cmdq.h
@@ -160,4 +160,16 @@ int cmdq_pkt_flush(struct cmdq_pkt *pkt);
*/
struct cmdq_subsys *cmdq_dev_get_subsys(struct device *dev, int idx);
+/**
+ * cmdq_dev_get_event() - parse event from the device node of CMDQ client
+ * @dev: device of CMDQ mailbox client
+ * @index: the index of desired event
+ *
+ * Return: CMDQ event number
+ *
+ * Help CMDQ client pasing the event number
+ * from the device node of CMDQ client.
+ */
+s32 cmdq_dev_get_event(struct device *dev, int index);
+
#endif /* __MTK_CMDQ_H__ */
--
2.18.0
Powered by blists - more mailing lists