* [PATCH RESEND 1/2] ti: wkup_m3_ipc: Add rtc_only with ddr in self refresh mode support @ 2018-06-21 9:22 Keerthy 2018-06-21 9:22 ` [PATCH RESEND 2/2] soc: ti: wkup_m3_ipc: Add wkup_m3_request_wake_src Keerthy 2018-07-04 4:23 ` [PATCH RESEND 1/2] ti: wkup_m3_ipc: Add rtc_only with ddr in self refresh mode support Keerthy 0 siblings, 2 replies; 7+ messages in thread From: Keerthy @ 2018-06-21 9:22 UTC (permalink / raw) To: santosh.shilimkar Cc: t-kristo, j-keerthy, linux-omap, linux-arm-kernel, d-gerlach Adds rtc_only support. This needs resume function to shutdown and reboot the m3. Signed-off-by: Keerthy <j-keerthy@ti.com> --- This is tested on am437x-gp-evm and target for 4.19 drivers/soc/ti/wkup_m3_ipc.c | 41 +++++++++++++++++++++++++++++++++++++++++ include/linux/wkup_m3_ipc.h | 3 +++ 2 files changed, 44 insertions(+) diff --git a/drivers/soc/ti/wkup_m3_ipc.c b/drivers/soc/ti/wkup_m3_ipc.c index 369aef5..b732c39 100644 --- a/drivers/soc/ti/wkup_m3_ipc.c +++ b/drivers/soc/ti/wkup_m3_ipc.c @@ -329,12 +329,24 @@ static int wkup_m3_finish_low_power(struct wkup_m3_ipc *m3_ipc) return 0; } +/** + * wkup_m3_set_rtc_only - Set the rtc_only flag + * @wkup_m3_wakeup: struct wkup_m3_wakeup_src * gets assigned the + * wakeup src value + */ +static void wkup_m3_set_rtc_only(struct wkup_m3_ipc *m3_ipc) +{ + if (m3_ipc_state) + m3_ipc_state->is_rtc_only = true; +} + static struct wkup_m3_ipc_ops ipc_ops = { .set_mem_type = wkup_m3_set_mem_type, .set_resume_address = wkup_m3_set_resume_address, .prepare_low_power = wkup_m3_prepare_low_power, .finish_low_power = wkup_m3_finish_low_power, .request_pm_status = wkup_m3_request_pm_status, + .set_rtc_only = wkup_m3_set_rtc_only, }; /** @@ -484,6 +496,32 @@ static int wkup_m3_ipc_remove(struct platform_device *pdev) return 0; } +#ifdef CONFIG_PM +static int wkup_m3_ipc_suspend(struct device *dev) +{ + /* + * Nothing needs to be done on suspend even with rtc_only flag set + */ + return 0; +} + +static int wkup_m3_ipc_resume(struct device *dev) +{ + if (m3_ipc_state->is_rtc_only) { + rproc_shutdown(m3_ipc_state->rproc); + rproc_boot(m3_ipc_state->rproc); + } + + m3_ipc_state->is_rtc_only = false; + + return 0; +} + +static const struct dev_pm_ops wkup_m3_ipc_pm_ops = { + SET_SYSTEM_SLEEP_PM_OPS(wkup_m3_ipc_suspend, wkup_m3_ipc_resume) +}; +#endif + static const struct of_device_id wkup_m3_ipc_of_match[] = { { .compatible = "ti,am3352-wkup-m3-ipc", }, { .compatible = "ti,am4372-wkup-m3-ipc", }, @@ -497,6 +535,9 @@ static int wkup_m3_ipc_remove(struct platform_device *pdev) .driver = { .name = "wkup_m3_ipc", .of_match_table = wkup_m3_ipc_of_match, +#ifdef CONFIG_PM + .pm = &wkup_m3_ipc_pm_ops, +#endif }, }; diff --git a/include/linux/wkup_m3_ipc.h b/include/linux/wkup_m3_ipc.h index d6ba7d3..d639df1 100644 --- a/include/linux/wkup_m3_ipc.h +++ b/include/linux/wkup_m3_ipc.h @@ -40,6 +40,7 @@ struct wkup_m3_ipc { struct mbox_chan *mbox; struct wkup_m3_ipc_ops *ops; + int is_rtc_only; }; struct wkup_m3_ipc_ops { @@ -48,8 +49,10 @@ struct wkup_m3_ipc_ops { int (*prepare_low_power)(struct wkup_m3_ipc *m3_ipc, int state); int (*finish_low_power)(struct wkup_m3_ipc *m3_ipc); int (*request_pm_status)(struct wkup_m3_ipc *m3_ipc); + void (*set_rtc_only)(struct wkup_m3_ipc *m3_ipc); }; struct wkup_m3_ipc *wkup_m3_ipc_get(void); void wkup_m3_ipc_put(struct wkup_m3_ipc *m3_ipc); +void wkup_m3_set_rtc_only_mode(void); #endif /* _LINUX_WKUP_M3_IPC_H */ -- 1.9.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH RESEND 2/2] soc: ti: wkup_m3_ipc: Add wkup_m3_request_wake_src 2018-06-21 9:22 [PATCH RESEND 1/2] ti: wkup_m3_ipc: Add rtc_only with ddr in self refresh mode support Keerthy @ 2018-06-21 9:22 ` Keerthy 2018-07-04 4:23 ` [PATCH RESEND 1/2] ti: wkup_m3_ipc: Add rtc_only with ddr in self refresh mode support Keerthy 1 sibling, 0 replies; 7+ messages in thread From: Keerthy @ 2018-06-21 9:22 UTC (permalink / raw) To: santosh.shilimkar Cc: t-kristo, j-keerthy, linux-omap, linux-arm-kernel, d-gerlach From: Dave Gerlach <d-gerlach@ti.com> Add wkup_m3_request_wake_src to allow users to get the name of the wakeup source after a DeepSleep or Standby transition. Signed-off-by: Dave Gerlach <d-gerlach@ti.com> Signed-off-by: Keerthy <j-keerthy@ti.com> --- This is tested on am437x-gp-evm and target for 4.19 drivers/soc/ti/wkup_m3_ipc.c | 39 +++++++++++++++++++++++++++++++++++++++ include/linux/wkup_m3_ipc.h | 6 ++++++ 2 files changed, 45 insertions(+) diff --git a/drivers/soc/ti/wkup_m3_ipc.c b/drivers/soc/ti/wkup_m3_ipc.c index b732c39..6840688 100644 --- a/drivers/soc/ti/wkup_m3_ipc.c +++ b/drivers/soc/ti/wkup_m3_ipc.c @@ -46,6 +46,7 @@ #define M3_BASELINE_VERSION 0x191 #define M3_STATUS_RESP_MASK (0xffff << 16) #define M3_FW_VERSION_MASK 0xffff +#define M3_WAKE_SRC_MASK 0xff #define M3_STATE_UNKNOWN 0 #define M3_STATE_RESET 1 @@ -55,6 +56,23 @@ static struct wkup_m3_ipc *m3_ipc_state; +static const struct wkup_m3_wakeup_src wakeups[] = { + {.irq_nr = 35, .src = "USB0_PHY"}, + {.irq_nr = 36, .src = "USB1_PHY"}, + {.irq_nr = 40, .src = "I2C0"}, + {.irq_nr = 41, .src = "RTC Timer"}, + {.irq_nr = 42, .src = "RTC Alarm"}, + {.irq_nr = 43, .src = "Timer0"}, + {.irq_nr = 44, .src = "Timer1"}, + {.irq_nr = 45, .src = "UART"}, + {.irq_nr = 46, .src = "GPIO0"}, + {.irq_nr = 48, .src = "MPU_WAKE"}, + {.irq_nr = 49, .src = "WDT0"}, + {.irq_nr = 50, .src = "WDT1"}, + {.irq_nr = 51, .src = "ADC_TSC"}, + {.irq_nr = 0, .src = "Unknown"}, +}; + static void am33xx_txev_eoi(struct wkup_m3_ipc *m3_ipc) { writel(AM33XX_M3_TXEV_ACK, @@ -330,6 +348,26 @@ static int wkup_m3_finish_low_power(struct wkup_m3_ipc *m3_ipc) } /** + * wkup_m3_request_wake_src - Get the wakeup source info passed from wkup_m3 + * @m3_ipc: Pointer to wkup_m3_ipc context + */ +static const char *wkup_m3_request_wake_src(struct wkup_m3_ipc *m3_ipc) +{ + unsigned int wakeup_src_idx; + int j, val; + + val = wkup_m3_ctrl_ipc_read(m3_ipc, 6); + + wakeup_src_idx = val & M3_WAKE_SRC_MASK; + + for (j = 0; j < ARRAY_SIZE(wakeups) - 1; j++) { + if (wakeups[j].irq_nr == wakeup_src_idx) + return wakeups[j].src; + } + return wakeups[j].src; +} + +/** * wkup_m3_set_rtc_only - Set the rtc_only flag * @wkup_m3_wakeup: struct wkup_m3_wakeup_src * gets assigned the * wakeup src value @@ -346,6 +384,7 @@ static void wkup_m3_set_rtc_only(struct wkup_m3_ipc *m3_ipc) .prepare_low_power = wkup_m3_prepare_low_power, .finish_low_power = wkup_m3_finish_low_power, .request_pm_status = wkup_m3_request_pm_status, + .request_wake_src = wkup_m3_request_wake_src, .set_rtc_only = wkup_m3_set_rtc_only, }; diff --git a/include/linux/wkup_m3_ipc.h b/include/linux/wkup_m3_ipc.h index d639df1..e497e62 100644 --- a/include/linux/wkup_m3_ipc.h +++ b/include/linux/wkup_m3_ipc.h @@ -43,12 +43,18 @@ struct wkup_m3_ipc { int is_rtc_only; }; +struct wkup_m3_wakeup_src { + int irq_nr; + char src[10]; +}; + struct wkup_m3_ipc_ops { void (*set_mem_type)(struct wkup_m3_ipc *m3_ipc, int mem_type); void (*set_resume_address)(struct wkup_m3_ipc *m3_ipc, void *addr); int (*prepare_low_power)(struct wkup_m3_ipc *m3_ipc, int state); int (*finish_low_power)(struct wkup_m3_ipc *m3_ipc); int (*request_pm_status)(struct wkup_m3_ipc *m3_ipc); + const char *(*request_wake_src)(struct wkup_m3_ipc *m3_ipc); void (*set_rtc_only)(struct wkup_m3_ipc *m3_ipc); }; -- 1.9.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH RESEND 1/2] ti: wkup_m3_ipc: Add rtc_only with ddr in self refresh mode support 2018-06-21 9:22 [PATCH RESEND 1/2] ti: wkup_m3_ipc: Add rtc_only with ddr in self refresh mode support Keerthy 2018-06-21 9:22 ` [PATCH RESEND 2/2] soc: ti: wkup_m3_ipc: Add wkup_m3_request_wake_src Keerthy @ 2018-07-04 4:23 ` Keerthy 2018-07-04 4:37 ` santosh.shilimkar 1 sibling, 1 reply; 7+ messages in thread From: Keerthy @ 2018-07-04 4:23 UTC (permalink / raw) To: santosh.shilimkar; +Cc: t-kristo, linux-omap, linux-arm-kernel, d-gerlach On Thursday 21 June 2018 02:52 PM, Keerthy wrote: > Adds rtc_only support. This needs resume function to shutdown and > reboot the m3. A gentle ping on this series. > > Signed-off-by: Keerthy <j-keerthy@ti.com> > --- > > This is tested on am437x-gp-evm and target for 4.19 > > drivers/soc/ti/wkup_m3_ipc.c | 41 +++++++++++++++++++++++++++++++++++++++++ > include/linux/wkup_m3_ipc.h | 3 +++ > 2 files changed, 44 insertions(+) > > diff --git a/drivers/soc/ti/wkup_m3_ipc.c b/drivers/soc/ti/wkup_m3_ipc.c > index 369aef5..b732c39 100644 > --- a/drivers/soc/ti/wkup_m3_ipc.c > +++ b/drivers/soc/ti/wkup_m3_ipc.c > @@ -329,12 +329,24 @@ static int wkup_m3_finish_low_power(struct wkup_m3_ipc *m3_ipc) > return 0; > } > > +/** > + * wkup_m3_set_rtc_only - Set the rtc_only flag > + * @wkup_m3_wakeup: struct wkup_m3_wakeup_src * gets assigned the > + * wakeup src value > + */ > +static void wkup_m3_set_rtc_only(struct wkup_m3_ipc *m3_ipc) > +{ > + if (m3_ipc_state) > + m3_ipc_state->is_rtc_only = true; > +} > + > static struct wkup_m3_ipc_ops ipc_ops = { > .set_mem_type = wkup_m3_set_mem_type, > .set_resume_address = wkup_m3_set_resume_address, > .prepare_low_power = wkup_m3_prepare_low_power, > .finish_low_power = wkup_m3_finish_low_power, > .request_pm_status = wkup_m3_request_pm_status, > + .set_rtc_only = wkup_m3_set_rtc_only, > }; > > /** > @@ -484,6 +496,32 @@ static int wkup_m3_ipc_remove(struct platform_device *pdev) > return 0; > } > > +#ifdef CONFIG_PM > +static int wkup_m3_ipc_suspend(struct device *dev) > +{ > + /* > + * Nothing needs to be done on suspend even with rtc_only flag set > + */ > + return 0; > +} > + > +static int wkup_m3_ipc_resume(struct device *dev) > +{ > + if (m3_ipc_state->is_rtc_only) { > + rproc_shutdown(m3_ipc_state->rproc); > + rproc_boot(m3_ipc_state->rproc); > + } > + > + m3_ipc_state->is_rtc_only = false; > + > + return 0; > +} > + > +static const struct dev_pm_ops wkup_m3_ipc_pm_ops = { > + SET_SYSTEM_SLEEP_PM_OPS(wkup_m3_ipc_suspend, wkup_m3_ipc_resume) > +}; > +#endif > + > static const struct of_device_id wkup_m3_ipc_of_match[] = { > { .compatible = "ti,am3352-wkup-m3-ipc", }, > { .compatible = "ti,am4372-wkup-m3-ipc", }, > @@ -497,6 +535,9 @@ static int wkup_m3_ipc_remove(struct platform_device *pdev) > .driver = { > .name = "wkup_m3_ipc", > .of_match_table = wkup_m3_ipc_of_match, > +#ifdef CONFIG_PM > + .pm = &wkup_m3_ipc_pm_ops, > +#endif > }, > }; > > diff --git a/include/linux/wkup_m3_ipc.h b/include/linux/wkup_m3_ipc.h > index d6ba7d3..d639df1 100644 > --- a/include/linux/wkup_m3_ipc.h > +++ b/include/linux/wkup_m3_ipc.h > @@ -40,6 +40,7 @@ struct wkup_m3_ipc { > struct mbox_chan *mbox; > > struct wkup_m3_ipc_ops *ops; > + int is_rtc_only; > }; > > struct wkup_m3_ipc_ops { > @@ -48,8 +49,10 @@ struct wkup_m3_ipc_ops { > int (*prepare_low_power)(struct wkup_m3_ipc *m3_ipc, int state); > int (*finish_low_power)(struct wkup_m3_ipc *m3_ipc); > int (*request_pm_status)(struct wkup_m3_ipc *m3_ipc); > + void (*set_rtc_only)(struct wkup_m3_ipc *m3_ipc); > }; > > struct wkup_m3_ipc *wkup_m3_ipc_get(void); > void wkup_m3_ipc_put(struct wkup_m3_ipc *m3_ipc); > +void wkup_m3_set_rtc_only_mode(void); > #endif /* _LINUX_WKUP_M3_IPC_H */ > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH RESEND 1/2] ti: wkup_m3_ipc: Add rtc_only with ddr in self refresh mode support 2018-07-04 4:23 ` [PATCH RESEND 1/2] ti: wkup_m3_ipc: Add rtc_only with ddr in self refresh mode support Keerthy @ 2018-07-04 4:37 ` santosh.shilimkar 2018-07-04 4:41 ` Keerthy 0 siblings, 1 reply; 7+ messages in thread From: santosh.shilimkar @ 2018-07-04 4:37 UTC (permalink / raw) To: Keerthy; +Cc: t-kristo, linux-omap, linux-arm-kernel, d-gerlach On 7/3/18 9:23 PM, Keerthy wrote: > > > On Thursday 21 June 2018 02:52 PM, Keerthy wrote: >> Adds rtc_only support. This needs resume function to shutdown and >> reboot the m3. > > A gentle ping on this series. > >> >> Signed-off-by: Keerthy <j-keerthy@ti.com> >> --- >> >> This is tested on am437x-gp-evm and target for 4.19 Am I suppose to pick up this series ? ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH RESEND 1/2] ti: wkup_m3_ipc: Add rtc_only with ddr in self refresh mode support 2018-07-04 4:37 ` santosh.shilimkar @ 2018-07-04 4:41 ` Keerthy 2018-07-04 4:48 ` santosh.shilimkar 0 siblings, 1 reply; 7+ messages in thread From: Keerthy @ 2018-07-04 4:41 UTC (permalink / raw) To: santosh.shilimkar@oracle.com Cc: t-kristo, linux-omap, linux-arm-kernel, d-gerlach On Wednesday 04 July 2018 10:07 AM, santosh.shilimkar@oracle.com wrote: > On 7/3/18 9:23 PM, Keerthy wrote: >> >> >> On Thursday 21 June 2018 02:52 PM, Keerthy wrote: >>> Adds rtc_only support. This needs resume function to shutdown and >>> reboot the m3. >> >> A gentle ping on this series. >> >>> >>> Signed-off-by: Keerthy <j-keerthy@ti.com> >>> --- >>> >>> This is tested on am437x-gp-evm and target for 4.19 > > Am I suppose to pick up this series ./scripts/get_maintainer.pl wkm3/0001-ti-wkup_m3_ipc-Add-rtc_only-with-ddr-in-self-refresh.patch Santosh Shilimkar <ssantosh@kernel.org> (maintainer:TI KEYSTONE MULTICORE NAVIGATOR DRIVERS) linux-kernel@vger.kernel.org (open list:TI KEYSTONE MULTICORE NAVIGATOR DRIVERS) linux-arm-kernel@lists.infradead.org (moderated list:TI KEYSTONE MULTICORE NAVIGATOR DRIVERS) ./scripts/get_maintainer.pl wkm3/0002-soc-ti-wkup_m3_ipc-Add-wkup_m3_request_wake_src.patch Santosh Shilimkar <ssantosh@kernel.org> (maintainer:TI KEYSTONE MULTICORE NAVIGATOR DRIVERS) linux-kernel@vger.kernel.org (open list:TI KEYSTONE MULTICORE NAVIGATOR DRIVERS) linux-arm-kernel@lists.infradead.org (moderated list:TI KEYSTONE MULTICORE NAVIGATOR DRIVERS) For some reason both patches points you as the Maintainer :-P. Regards, Keerthy ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH RESEND 1/2] ti: wkup_m3_ipc: Add rtc_only with ddr in self refresh mode support 2018-07-04 4:41 ` Keerthy @ 2018-07-04 4:48 ` santosh.shilimkar 2018-07-04 4:49 ` Keerthy 0 siblings, 1 reply; 7+ messages in thread From: santosh.shilimkar @ 2018-07-04 4:48 UTC (permalink / raw) To: Keerthy; +Cc: t-kristo, linux-omap, linux-arm-kernel, d-gerlach On 7/3/18 9:41 PM, Keerthy wrote: > > > On Wednesday 04 July 2018 10:07 AM, santosh.shilimkar@oracle.com wrote: >> On 7/3/18 9:23 PM, Keerthy wrote: >>> >>> >>> On Thursday 21 June 2018 02:52 PM, Keerthy wrote: >>>> Adds rtc_only support. This needs resume function to shutdown and >>>> reboot the m3. >>> >>> A gentle ping on this series. >>> >>>> >>>> Signed-off-by: Keerthy <j-keerthy@ti.com> >>>> --- >>>> >>>> This is tested on am437x-gp-evm and target for 4.19 >> >> Am I suppose to pick up this series > [...] > > For some reason both patches points you as the Maintainer :-P. > I was not aware if you wanted me to pick it up. Will add them. Regards, Santosh ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH RESEND 1/2] ti: wkup_m3_ipc: Add rtc_only with ddr in self refresh mode support 2018-07-04 4:48 ` santosh.shilimkar @ 2018-07-04 4:49 ` Keerthy 0 siblings, 0 replies; 7+ messages in thread From: Keerthy @ 2018-07-04 4:49 UTC (permalink / raw) To: santosh.shilimkar@oracle.com Cc: t-kristo, linux-omap, linux-arm-kernel, d-gerlach On Wednesday 04 July 2018 10:18 AM, santosh.shilimkar@oracle.com wrote: > On 7/3/18 9:41 PM, Keerthy wrote: >> >> >> On Wednesday 04 July 2018 10:07 AM, santosh.shilimkar@oracle.com wrote: >>> On 7/3/18 9:23 PM, Keerthy wrote: >>>> >>>> >>>> On Thursday 21 June 2018 02:52 PM, Keerthy wrote: >>>>> Adds rtc_only support. This needs resume function to shutdown and >>>>> reboot the m3. >>>> >>>> A gentle ping on this series. >>>> >>>>> >>>>> Signed-off-by: Keerthy <j-keerthy@ti.com> >>>>> --- >>>>> >>>>> This is tested on am437x-gp-evm and target for 4.19 >>> >>> Am I suppose to pick up this series >> > [...] > >> >> For some reason both patches points you as the Maintainer :-P. >> > I was not aware if you wanted me to pick it up. Will add them. Thanks a Lot Santosh :-) > > Regards, > Santosh ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2018-07-04 4:49 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-06-21 9:22 [PATCH RESEND 1/2] ti: wkup_m3_ipc: Add rtc_only with ddr in self refresh mode support Keerthy 2018-06-21 9:22 ` [PATCH RESEND 2/2] soc: ti: wkup_m3_ipc: Add wkup_m3_request_wake_src Keerthy 2018-07-04 4:23 ` [PATCH RESEND 1/2] ti: wkup_m3_ipc: Add rtc_only with ddr in self refresh mode support Keerthy 2018-07-04 4:37 ` santosh.shilimkar 2018-07-04 4:41 ` Keerthy 2018-07-04 4:48 ` santosh.shilimkar 2018-07-04 4:49 ` Keerthy
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).