From: srinivas.kandagatla-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org To: gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org, broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw@public.gmane.org Cc: sdharia-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, bp-l3A5Bk7waGM@public.gmane.org, poeschel-Xtl8qvBWbHwb1SvskN2V4Q@public.gmane.org, treding-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org, gong.chen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org, andreas.noever-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, alan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org, mathieu.poirier-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, daniel-/w4YWyX8dFk@public.gmane.org, jkosina-AlSwsSmVLrQ@public.gmane.org, sharon.dvir1-MQgwKvJRKlGYZoqfULhbRA@public.gmane.org, joe-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org, davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org, james.hogan-1AXoQHu6uovQT0dZR+AlfA@public.gmane.org, michael.opdenacker-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org, robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, pawel.moll-5wv7dgnIgG8@public.gmane.org, mark.rutland-5wv7dgnIgG8@public.gmane.org, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, kheitke-hxvC4TZJLZFWk0Htik3J/w@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, arnd-r2nGTMty4D4@public.gmane.org, Srinivas Kandagatla <srinivas.kandagatla-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> Subject: [Patch v6 5/7] slimbus: qcom: Add runtime-pm support using clock-pause feature Date: Fri, 6 Oct 2017 17:51:34 +0200 [thread overview] Message-ID: <20171006155136.4682-6-srinivas.kandagatla@linaro.org> (raw) In-Reply-To: <20171006155136.4682-1-srinivas.kandagatla-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> From: Sagar Dharia <sdharia-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> Slimbus HW mandates that clock-pause sequence has to be executed before disabling relevant interface and core clocks. Runtime-PM's autosuspend feature is used here to enter/exit low power mode for Qualcomm's Slimbus controller. Autosuspend feature enables driver to avoid changing power-modes too frequently since entering clock-pause is an expensive sequence Signed-off-by: Sagar Dharia <sdharia-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> --- drivers/slimbus/slim-qcom-ctrl.c | 128 +++++++++++++++++++++++++++++++++++++-- drivers/slimbus/slim-qcom.h | 1 + 2 files changed, 125 insertions(+), 4 deletions(-) diff --git a/drivers/slimbus/slim-qcom-ctrl.c b/drivers/slimbus/slim-qcom-ctrl.c index d0574e1..05ba44f 100644 --- a/drivers/slimbus/slim-qcom-ctrl.c +++ b/drivers/slimbus/slim-qcom-ctrl.c @@ -21,6 +21,7 @@ #include <linux/of.h> #include <linux/dma-mapping.h> #include <linux/slimbus.h> +#include <linux/pm_runtime.h> #include "slim-qcom.h" #define MSM_SLIM_NAME "msm_slim_ctrl" @@ -217,6 +218,30 @@ static irqreturn_t msm_slim_interrupt(int irq, void *d) return ret; } +static int msm_clk_pause_wakeup(struct slim_controller *ctrl) +{ + struct msm_slim_ctrl *dev = slim_get_ctrldata(ctrl); + + clk_prepare_enable(dev->hclk); + clk_prepare_enable(dev->rclk); + enable_irq(dev->irq); + + writel_relaxed(1, dev->base + FRM_WAKEUP); + /* Make sure framer wakeup write goes through before ISR fires */ + mb(); + /** + * HW Workaround: Currently, slave is reporting lost-sync messages + * after slimbus comes out of clock pause. + * Transaction with slave fail before slave reports that message + * Give some time for that report to come + * Slimbus wakes up in clock gear 10 at 24.576MHz. With each superframe + * being 250 usecs, we wait for 5-10 superframes here to ensure + * we get the message + */ + usleep_range(1250, 2500); + return 0; +} + static int msm_xfer_msg(struct slim_controller *ctrl, struct slim_msg_txn *txn, void *pbuf) { @@ -286,7 +311,6 @@ static int msm_set_laddr(struct slim_controller *ctrl, */ msg.wbuf = buf; msg.num_bytes = 7; - ret = slim_processtxn(&dev->ctrl, &txn); if (ret) @@ -417,6 +441,8 @@ static int msm_slim_probe(struct platform_device *pdev) dev->ctrl.set_laddr = msm_set_laddr; dev->ctrl.xfer_msg = msm_xfer_msg; + dev->ctrl.wakeup = msm_clk_pause_wakeup; + dev->ctrl.tx.n = MSM_TX_MSGS; dev->ctrl.rx.n = MSM_RX_MSGS; dev->ctrl.tx.sl_sz = SLIM_MSGQ_BUF_LEN; @@ -532,6 +558,12 @@ static int msm_slim_probe(struct platform_device *pdev) */ mb(); + pm_runtime_use_autosuspend(&pdev->dev); + pm_runtime_set_autosuspend_delay(&pdev->dev, MSM_SLIM_AUTOSUSPEND); + pm_runtime_set_active(&pdev->dev); + pm_runtime_mark_last_busy(&pdev->dev); + pm_runtime_enable(&pdev->dev); + dev_dbg(dev->dev, "MSM SB controller is up:ver:0x%x!\n", dev->ver); return 0; @@ -562,14 +594,101 @@ static int msm_slim_remove(struct platform_device *pdev) dma_free_coherent(&pdev->dev, (ctrl->tx.sl_sz * ctrl->tx.n), ctrl->tx.base, ctrl->tx.phy); - disable_irq(dev->irq); - clk_disable_unprepare(dev->rclk); - clk_disable_unprepare(dev->hclk); + pm_runtime_disable(&pdev->dev); slim_del_controller(&dev->ctrl); destroy_workqueue(dev->rxwq); return 0; } +/** + * If PM_RUNTIME is not defined, these 2 functions become helper + * functions to be called from system suspend/resume. + */ +#ifdef CONFIG_PM +static int msm_slim_runtime_suspend(struct device *device) +{ + struct platform_device *pdev = to_platform_device(device); + struct msm_slim_ctrl *dev = platform_get_drvdata(pdev); + int ret; + + dev_dbg(device, "pm_runtime: suspending...\n"); + ret = slim_ctrl_clk_pause(&dev->ctrl, false, SLIM_CLK_UNSPECIFIED); + if (ret) { + dev_err(device, "clk pause not entered:%d", ret); + } else { + disable_irq(dev->irq); + clk_disable_unprepare(dev->hclk); + clk_disable_unprepare(dev->rclk); + } + return ret; +} + +static int msm_slim_runtime_resume(struct device *device) +{ + struct platform_device *pdev = to_platform_device(device); + struct msm_slim_ctrl *dev = platform_get_drvdata(pdev); + int ret = 0; + + dev_dbg(device, "pm_runtime: resuming...\n"); + ret = slim_ctrl_clk_pause(&dev->ctrl, true, 0); + if (ret) + dev_err(device, "clk pause not exited:%d", ret); + return ret; +} +#endif + +#ifdef CONFIG_PM_SLEEP +static int msm_slim_suspend(struct device *dev) +{ + int ret = 0; + + if (!pm_runtime_enabled(dev) || + (!pm_runtime_suspended(dev))) { + dev_dbg(dev, "system suspend"); + ret = msm_slim_runtime_suspend(dev); + } + if (ret == -EISCONN) { + /** + * If the clock pause failed due to active channels, there is + * a possibility that some audio stream is active during suspend. + * (e.g. modem usecase during suspend) + * We dont want to return suspend failure in that case so that + * display and relevant components can still go to suspend. + * If there is some other error, then it should prevent + * system level suspend + */ + ret = 0; + } + return ret; +} + +static int msm_slim_resume(struct device *dev) +{ + if (!pm_runtime_enabled(dev) || !pm_runtime_suspended(dev)) { + int ret; + + dev_dbg(dev, "system resume"); + ret = msm_slim_runtime_resume(dev); + if (!ret) { + pm_runtime_mark_last_busy(dev); + pm_request_autosuspend(dev); + } + return ret; + + } + return 0; +} +#endif /* CONFIG_PM_SLEEP */ + +static const struct dev_pm_ops msm_slim_dev_pm_ops = { + SET_SYSTEM_SLEEP_PM_OPS(msm_slim_suspend, msm_slim_resume) + SET_RUNTIME_PM_OPS( + msm_slim_runtime_suspend, + msm_slim_runtime_resume, + NULL + ) +}; + static const struct of_device_id msm_slim_dt_match[] = { { .compatible = "qcom,slim", @@ -584,6 +703,7 @@ static struct platform_driver msm_slim_driver = { .name = MSM_SLIM_NAME, .owner = THIS_MODULE, .of_match_table = msm_slim_dt_match, + .pm = &msm_slim_dev_pm_ops, }, }; module_platform_driver(msm_slim_driver); diff --git a/drivers/slimbus/slim-qcom.h b/drivers/slimbus/slim-qcom.h index 0ad59c3..8b1d649 100644 --- a/drivers/slimbus/slim-qcom.h +++ b/drivers/slimbus/slim-qcom.h @@ -23,6 +23,7 @@ ((l) | ((mt) << 5) | ((mc) << 8) | ((dt) << 15) | ((ad) << 16)) #define SLIM_ROOT_FREQ 24576000 +#define MSM_SLIM_AUTOSUSPEND 1000 /* MAX message size over control channel */ #define SLIM_MSGQ_BUF_LEN 40 -- 2.9.3 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: srinivas.kandagatla@linaro.org To: gregkh@linuxfoundation.org, broonie@kernel.org, alsa-devel@alsa-project.org Cc: sdharia@codeaurora.org, bp@suse.de, poeschel@lemonage.de, treding@nvidia.com, gong.chen@linux.intel.com, andreas.noever@gmail.com, alan@linux.intel.com, mathieu.poirier@linaro.org, daniel@ffwll.ch, jkosina@suse.cz, sharon.dvir1@mail.huji.ac.il, joe@perches.com, davem@davemloft.net, james.hogan@imgtec.com, michael.opdenacker@free-electrons.com, robh+dt@kernel.org, pawel.moll@arm.com, mark.rutland@arm.com, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, kheitke@audience.com, linux-arm-msm@vger.kernel.org, arnd@arndb.de, Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Subject: [Patch v6 5/7] slimbus: qcom: Add runtime-pm support using clock-pause feature Date: Fri, 6 Oct 2017 17:51:34 +0200 [thread overview] Message-ID: <20171006155136.4682-6-srinivas.kandagatla@linaro.org> (raw) In-Reply-To: <20171006155136.4682-1-srinivas.kandagatla@linaro.org> From: Sagar Dharia <sdharia@codeaurora.org> Slimbus HW mandates that clock-pause sequence has to be executed before disabling relevant interface and core clocks. Runtime-PM's autosuspend feature is used here to enter/exit low power mode for Qualcomm's Slimbus controller. Autosuspend feature enables driver to avoid changing power-modes too frequently since entering clock-pause is an expensive sequence Signed-off-by: Sagar Dharia <sdharia@codeaurora.org> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> --- drivers/slimbus/slim-qcom-ctrl.c | 128 +++++++++++++++++++++++++++++++++++++-- drivers/slimbus/slim-qcom.h | 1 + 2 files changed, 125 insertions(+), 4 deletions(-) diff --git a/drivers/slimbus/slim-qcom-ctrl.c b/drivers/slimbus/slim-qcom-ctrl.c index d0574e1..05ba44f 100644 --- a/drivers/slimbus/slim-qcom-ctrl.c +++ b/drivers/slimbus/slim-qcom-ctrl.c @@ -21,6 +21,7 @@ #include <linux/of.h> #include <linux/dma-mapping.h> #include <linux/slimbus.h> +#include <linux/pm_runtime.h> #include "slim-qcom.h" #define MSM_SLIM_NAME "msm_slim_ctrl" @@ -217,6 +218,30 @@ static irqreturn_t msm_slim_interrupt(int irq, void *d) return ret; } +static int msm_clk_pause_wakeup(struct slim_controller *ctrl) +{ + struct msm_slim_ctrl *dev = slim_get_ctrldata(ctrl); + + clk_prepare_enable(dev->hclk); + clk_prepare_enable(dev->rclk); + enable_irq(dev->irq); + + writel_relaxed(1, dev->base + FRM_WAKEUP); + /* Make sure framer wakeup write goes through before ISR fires */ + mb(); + /** + * HW Workaround: Currently, slave is reporting lost-sync messages + * after slimbus comes out of clock pause. + * Transaction with slave fail before slave reports that message + * Give some time for that report to come + * Slimbus wakes up in clock gear 10 at 24.576MHz. With each superframe + * being 250 usecs, we wait for 5-10 superframes here to ensure + * we get the message + */ + usleep_range(1250, 2500); + return 0; +} + static int msm_xfer_msg(struct slim_controller *ctrl, struct slim_msg_txn *txn, void *pbuf) { @@ -286,7 +311,6 @@ static int msm_set_laddr(struct slim_controller *ctrl, */ msg.wbuf = buf; msg.num_bytes = 7; - ret = slim_processtxn(&dev->ctrl, &txn); if (ret) @@ -417,6 +441,8 @@ static int msm_slim_probe(struct platform_device *pdev) dev->ctrl.set_laddr = msm_set_laddr; dev->ctrl.xfer_msg = msm_xfer_msg; + dev->ctrl.wakeup = msm_clk_pause_wakeup; + dev->ctrl.tx.n = MSM_TX_MSGS; dev->ctrl.rx.n = MSM_RX_MSGS; dev->ctrl.tx.sl_sz = SLIM_MSGQ_BUF_LEN; @@ -532,6 +558,12 @@ static int msm_slim_probe(struct platform_device *pdev) */ mb(); + pm_runtime_use_autosuspend(&pdev->dev); + pm_runtime_set_autosuspend_delay(&pdev->dev, MSM_SLIM_AUTOSUSPEND); + pm_runtime_set_active(&pdev->dev); + pm_runtime_mark_last_busy(&pdev->dev); + pm_runtime_enable(&pdev->dev); + dev_dbg(dev->dev, "MSM SB controller is up:ver:0x%x!\n", dev->ver); return 0; @@ -562,14 +594,101 @@ static int msm_slim_remove(struct platform_device *pdev) dma_free_coherent(&pdev->dev, (ctrl->tx.sl_sz * ctrl->tx.n), ctrl->tx.base, ctrl->tx.phy); - disable_irq(dev->irq); - clk_disable_unprepare(dev->rclk); - clk_disable_unprepare(dev->hclk); + pm_runtime_disable(&pdev->dev); slim_del_controller(&dev->ctrl); destroy_workqueue(dev->rxwq); return 0; } +/** + * If PM_RUNTIME is not defined, these 2 functions become helper + * functions to be called from system suspend/resume. + */ +#ifdef CONFIG_PM +static int msm_slim_runtime_suspend(struct device *device) +{ + struct platform_device *pdev = to_platform_device(device); + struct msm_slim_ctrl *dev = platform_get_drvdata(pdev); + int ret; + + dev_dbg(device, "pm_runtime: suspending...\n"); + ret = slim_ctrl_clk_pause(&dev->ctrl, false, SLIM_CLK_UNSPECIFIED); + if (ret) { + dev_err(device, "clk pause not entered:%d", ret); + } else { + disable_irq(dev->irq); + clk_disable_unprepare(dev->hclk); + clk_disable_unprepare(dev->rclk); + } + return ret; +} + +static int msm_slim_runtime_resume(struct device *device) +{ + struct platform_device *pdev = to_platform_device(device); + struct msm_slim_ctrl *dev = platform_get_drvdata(pdev); + int ret = 0; + + dev_dbg(device, "pm_runtime: resuming...\n"); + ret = slim_ctrl_clk_pause(&dev->ctrl, true, 0); + if (ret) + dev_err(device, "clk pause not exited:%d", ret); + return ret; +} +#endif + +#ifdef CONFIG_PM_SLEEP +static int msm_slim_suspend(struct device *dev) +{ + int ret = 0; + + if (!pm_runtime_enabled(dev) || + (!pm_runtime_suspended(dev))) { + dev_dbg(dev, "system suspend"); + ret = msm_slim_runtime_suspend(dev); + } + if (ret == -EISCONN) { + /** + * If the clock pause failed due to active channels, there is + * a possibility that some audio stream is active during suspend. + * (e.g. modem usecase during suspend) + * We dont want to return suspend failure in that case so that + * display and relevant components can still go to suspend. + * If there is some other error, then it should prevent + * system level suspend + */ + ret = 0; + } + return ret; +} + +static int msm_slim_resume(struct device *dev) +{ + if (!pm_runtime_enabled(dev) || !pm_runtime_suspended(dev)) { + int ret; + + dev_dbg(dev, "system resume"); + ret = msm_slim_runtime_resume(dev); + if (!ret) { + pm_runtime_mark_last_busy(dev); + pm_request_autosuspend(dev); + } + return ret; + + } + return 0; +} +#endif /* CONFIG_PM_SLEEP */ + +static const struct dev_pm_ops msm_slim_dev_pm_ops = { + SET_SYSTEM_SLEEP_PM_OPS(msm_slim_suspend, msm_slim_resume) + SET_RUNTIME_PM_OPS( + msm_slim_runtime_suspend, + msm_slim_runtime_resume, + NULL + ) +}; + static const struct of_device_id msm_slim_dt_match[] = { { .compatible = "qcom,slim", @@ -584,6 +703,7 @@ static struct platform_driver msm_slim_driver = { .name = MSM_SLIM_NAME, .owner = THIS_MODULE, .of_match_table = msm_slim_dt_match, + .pm = &msm_slim_dev_pm_ops, }, }; module_platform_driver(msm_slim_driver); diff --git a/drivers/slimbus/slim-qcom.h b/drivers/slimbus/slim-qcom.h index 0ad59c3..8b1d649 100644 --- a/drivers/slimbus/slim-qcom.h +++ b/drivers/slimbus/slim-qcom.h @@ -23,6 +23,7 @@ ((l) | ((mt) << 5) | ((mc) << 8) | ((dt) << 15) | ((ad) << 16)) #define SLIM_ROOT_FREQ 24576000 +#define MSM_SLIM_AUTOSUSPEND 1000 /* MAX message size over control channel */ #define SLIM_MSGQ_BUF_LEN 40 -- 2.9.3
next prev parent reply other threads:[~2017-10-06 15:51 UTC|newest] Thread overview: 87+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-10-06 15:51 [Patch v6 0/7] Introduce framework for SLIMbus device drivers srinivas.kandagatla 2017-10-06 15:51 ` [Patch v6 1/7] slimbus: Device management on SLIMbus srinivas.kandagatla 2017-10-06 15:51 ` srinivas.kandagatla 2017-10-10 10:05 ` Charles Keepax 2017-10-10 10:05 ` [alsa-devel] " Charles Keepax 2017-10-10 12:34 ` Srinivas Kandagatla 2017-10-10 12:34 ` [alsa-devel] " Srinivas Kandagatla 2017-10-10 12:56 ` Charles Keepax 2017-10-10 12:56 ` [alsa-devel] " Charles Keepax 2017-10-11 10:23 ` Mark Brown 2017-10-11 10:23 ` [alsa-devel] " Mark Brown [not found] ` <20171006155136.4682-2-srinivas.kandagatla-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> 2017-10-07 4:14 ` Jonathan Neuschäfer 2017-10-07 4:14 ` Jonathan Neuschäfer 2017-10-07 10:24 ` Srinivas Kandagatla 2017-10-07 10:24 ` Srinivas Kandagatla 2017-10-10 10:45 ` [alsa-devel] " Vinod Koul 2017-10-10 10:45 ` Vinod Koul 2017-10-10 12:34 ` Srinivas Kandagatla 2017-10-10 16:49 ` Vinod Koul 2017-10-10 16:49 ` [alsa-devel] " Vinod Koul 2017-10-10 17:21 ` Srinivas Kandagatla 2017-10-11 4:07 ` Vinod Koul 2017-10-11 9:42 ` Srinivas Kandagatla 2017-10-11 10:21 ` Vinod Koul 2017-10-11 11:23 ` Srinivas Kandagatla 2017-10-13 19:26 ` Rob Herring 2017-10-13 19:26 ` Rob Herring 2017-10-16 9:28 ` Srinivas Kandagatla 2017-10-16 9:28 ` Srinivas Kandagatla 2017-10-17 6:23 ` Bjorn Andersson 2017-10-17 6:23 ` Bjorn Andersson 2017-10-18 16:38 ` Srinivas Kandagatla 2017-10-18 16:38 ` Srinivas Kandagatla [not found] ` <1a1d2777-be69-98ca-afba-0ffd0e3dd80f-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> 2017-11-01 23:08 ` Bjorn Andersson 2017-11-01 23:08 ` Bjorn Andersson 2017-10-25 0:16 ` Stephen Boyd 2017-10-25 0:16 ` Stephen Boyd 2017-10-12 11:01 ` [alsa-devel] " Sanyog Kale 2017-10-12 13:26 ` Srinivas Kandagatla 2017-10-12 13:26 ` Srinivas Kandagatla 2017-10-23 9:06 ` Mark Brown 2017-10-06 15:51 ` [Patch v6 3/7] slimbus: qcom: Add Qualcomm Slimbus controller driver srinivas.kandagatla 2017-10-07 7:45 ` Jonathan Neuschäfer 2017-10-07 10:24 ` Srinivas Kandagatla 2017-10-07 10:24 ` Srinivas Kandagatla 2017-10-13 19:17 ` Rob Herring 2017-10-16 9:28 ` Srinivas Kandagatla 2017-10-18 7:27 ` Bjorn Andersson 2017-10-18 16:39 ` Srinivas Kandagatla 2017-10-06 15:51 ` [Patch v6 4/7] slimbus: Add support for 'clock-pause' feature srinivas.kandagatla 2017-10-07 8:06 ` Jonathan Neuschäfer 2017-10-07 10:24 ` Srinivas Kandagatla [not found] ` <20171006155136.4682-1-srinivas.kandagatla-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> 2017-10-06 15:51 ` [Patch v6 2/7] slimbus: Add messaging APIs to slimbus framework srinivas.kandagatla-QSEj5FYQhm4dnm+yROfE0A 2017-10-06 15:51 ` srinivas.kandagatla 2017-10-07 6:42 ` Jonathan Neuschäfer 2017-10-07 10:24 ` Srinivas Kandagatla 2017-10-07 10:24 ` Srinivas Kandagatla 2017-10-07 12:29 ` Jonathan Neuschäfer 2017-10-10 12:19 ` Charles Keepax 2017-10-10 12:19 ` [alsa-devel] " Charles Keepax 2017-10-10 13:01 ` Srinivas Kandagatla 2017-10-10 13:01 ` [alsa-devel] " Srinivas Kandagatla 2017-10-11 4:38 ` Vinod Koul 2017-10-11 7:53 ` Arnd Bergmann 2017-10-11 7:53 ` Arnd Bergmann 2017-10-11 9:42 ` Srinivas Kandagatla 2017-10-11 9:42 ` [alsa-devel] " Srinivas Kandagatla [not found] ` <aa117cb8-ba59-894c-5a82-1b38facfa841-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> 2017-10-11 10:24 ` Vinod Koul 2017-10-11 10:24 ` Vinod Koul 2017-10-11 11:12 ` Srinivas Kandagatla 2017-10-18 6:15 ` Bjorn Andersson 2017-10-18 16:39 ` Srinivas Kandagatla 2017-10-20 5:00 ` Bjorn Andersson 2017-10-20 5:00 ` Bjorn Andersson 2017-10-06 15:51 ` srinivas.kandagatla-QSEj5FYQhm4dnm+yROfE0A [this message] 2017-10-06 15:51 ` [Patch v6 5/7] slimbus: qcom: Add runtime-pm support using clock-pause feature srinivas.kandagatla 2017-10-07 8:22 ` Jonathan Neuschäfer 2017-10-07 10:25 ` Srinivas Kandagatla 2017-10-06 15:51 ` [Patch v6 7/7] MAINTAINERS: Add SLIMbus maintainer srinivas.kandagatla-QSEj5FYQhm4dnm+yROfE0A 2017-10-06 15:51 ` srinivas.kandagatla 2017-10-20 5:00 ` Bjorn Andersson 2017-10-20 5:00 ` Bjorn Andersson 2017-10-06 15:51 ` [Patch v6 6/7] regmap: add SLIMBUS support srinivas.kandagatla 2017-10-07 5:02 ` Jonathan Neuschäfer 2017-10-07 10:25 ` Srinivas Kandagatla 2017-10-20 5:00 ` Bjorn Andersson 2017-10-20 5:00 ` Bjorn Andersson
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20171006155136.4682-6-srinivas.kandagatla@linaro.org \ --to=srinivas.kandagatla-qsej5fyqhm4dnm+yrofe0a@public.gmane.org \ --cc=alan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \ --cc=alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw@public.gmane.org \ --cc=andreas.noever-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \ --cc=arnd-r2nGTMty4D4@public.gmane.org \ --cc=bp-l3A5Bk7waGM@public.gmane.org \ --cc=broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \ --cc=daniel-/w4YWyX8dFk@public.gmane.org \ --cc=davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org \ --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=gong.chen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \ --cc=gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \ --cc=james.hogan-1AXoQHu6uovQT0dZR+AlfA@public.gmane.org \ --cc=jkosina-AlSwsSmVLrQ@public.gmane.org \ --cc=joe-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org \ --cc=kheitke-hxvC4TZJLZFWk0Htik3J/w@public.gmane.org \ --cc=linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \ --cc=mathieu.poirier-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \ --cc=michael.opdenacker-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org \ --cc=pawel.moll-5wv7dgnIgG8@public.gmane.org \ --cc=poeschel-Xtl8qvBWbHwb1SvskN2V4Q@public.gmane.org \ --cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \ --cc=sdharia-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org \ --cc=sharon.dvir1-MQgwKvJRKlGYZoqfULhbRA@public.gmane.org \ --cc=treding-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.