From mboxrd@z Thu Jan 1 00:00:00 1970 From: York Sun Date: Thu, 23 Oct 2014 04:15:10 +0000 Subject: [U-Boot] [PATCH 1/4] Add deep sleep framework support for Freescale QorIQ platforms In-Reply-To: <9d42fae860424a3b97638795c1fcb1ed@DM2PR03MB574.namprd03.prod.outlook.com> References: <1411894788-41758-1-git-send-email-Yuantian.Tang@freescale.com> <1411894788-41758-2-git-send-email-Yuantian.Tang@freescale.com> <20141022135348.GD25506@bill-the-cat> <9d42fae860424a3b97638795c1fcb1ed@DM2PR03MB574.namprd03.prod.outlook.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Yuantian, I examined current code closely and have two suggestions: 1. In initdram() function, add a call to fsl_dp_resume() It is rational because the deep sleep resume is mainly dealing with memory. Doing this means you need to add calls to all boards with deep sleep feature enabled, not a lot at this moment. 2. Add a new hook at exact location you proposed But change to a more generic name, eg misc_ram. Add a weak function misc_ram() doing nothing. Then you can add misc_ram() in board file where it is needed. Both require to put a hook in all boards with deep sleep enabled. York From: Tang Yuantian-B29983 > Date: Wednesday, October 22, 2014 8:26 PM To: York Sun >, Tom Rini > Cc: "albert.u.boot at aribaud.net" >, Jin Zhengxiong-R64188 >, "u-boot at lists.denx.de" > Subject: RE: [U-Boot] [PATCH 1/4] Add deep sleep framework support for Freescale QorIQ platforms Thanks for your hint. Unfortunately I can?t find such place. It needs to be placed between DDR initialization and relocation. It is used on both PPC and ARM platforms. Do you have any sugguestions? Thanks, Yuantian From: Sun York-R58495 Sent: Thursday, October 23, 2014 11:06 AM To: Tang Yuantian-B29983; Tom Rini Cc: albert.u.boot at aribaud.net; Jin Zhengxiong-R64188; u-boot at lists.denx.de Subject: RE: [U-Boot] [PATCH 1/4] Add deep sleep framework support for Freescale QorIQ platforms Yuantian, Tom didn't suggest a specific hook. If you can use existing one, you don't have to create a new one. It's preferred if you can find a good place in existing xxx_f functions. York -------- Original Message -------- From: Tang Yuantian-B29983 Sent: Wed, 22/10/2014 19:53 To: Tom Rini CC: albert.u.boot at aribaud.net; Jin Zhengxiong-R64188 ; u-boot at lists.denx.de; Sun York-R58495 Subject: RE: [U-Boot] [PATCH 1/4] Add deep sleep framework support for Freescale QorIQ platforms > -----Original Message----- > From: Tom Rini [mailto:tom.rini at gmail.com] On Behalf Of Tom Rini > Sent: Wednesday, October 22, 2014 9:54 PM > To: Tang Yuantian-B29983 > Cc: albert.u.boot at aribaud.net; Jin Zhengxiong-R64188; u-boot at lists.denx.de; > Sun York-R58495 > Subject: Re: [U-Boot] [PATCH 1/4] Add deep sleep framework support for > Freescale QorIQ platforms > > On Sun, Sep 28, 2014 at 04:59:45PM +0800, Yuantian.Tang at freescale.com > wrote: > > From: Tang Yuantian > > > > > When Freescale QorIQ SoCs wake up from deep sleep, control is passed > > to the primary core that starts executing uboot. After re-initialized > > some IP blocks, like DDRC, kernel will take responsibility to continue > > to restore environment it leaves before. > > > > This patch adds the deep sleep framework support for all Freescale > > QorIQ platforms that use generic_board configuation. > > > > Signed-off-by: Tang Yuantian > > > --- > > common/board_f.c | 10 +++++++++ > > drivers/ddr/fsl/arm_ddr_gen3.c | 48 > +++++++++++++++++++++++++++++++++++++----- > > include/fsl_ddr_sdram.h | 2 ++ > > include/fsl_sleep.h | 32 ++++++++++++++++++++++++++++ > > 4 files changed, 87 insertions(+), 5 deletions(-) create mode 100644 > > include/fsl_sleep.h > > > > diff --git a/common/board_f.c b/common/board_f.c index > > e6aa298..b736d29 100644 > > --- a/common/board_f.c > > +++ b/common/board_f.c > > @@ -56,6 +56,9 @@ > > #endif > > #include > > #include > > +#ifdef CONFIG_FSL_DEEP_SLEEP > > +#include > > +#endif > > > > /* > > * Pointer to initial global data area @@ -921,6 +924,9 @@ static > > init_fnc_t init_sequence_f[] = { #if defined(CONFIG_MIPS) || > > defined(CONFIG_PPC) > > init_func_ram, > > #endif > > +#ifdef CONFIG_FSL_DEEP_SLEEP > > + fsl_dp_resume, > > +#endif > > Is there not an existing hook you can use here instead? Is misc_init_f too early? Misc_init_f is too early, we need to put it between DDR initialization and relocation. > If we're going to add a new hook in here, it needs to be somewhat generically > named, with the requirements of the system spelled out. It is Freescale specific. Wouldn't be a misleading for other platforms that don't jump to kernel here? > Some TI parts have a > (setting aside marketing-speak) similar function and I believe the U-Boot patches > for that use an existing hook to notice what happened and do what's needed. Which function did you refer to? I can check if it can be used. Thanks, Yuantian > Thanks! > > -- > Tom