All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Grant Likely" <grant.likely@secretlab.ca>
To: "Domen Puncer" <domen.puncer@telargo.com>
Cc: u-boot-users@lists.sourceforge.net, linuxppc-embedded@ozlabs.org
Subject: Re: [PATCH] icecube/lite5200b: wakeup from low-power support
Date: Mon, 26 Mar 2007 10:08:27 -0600	[thread overview]
Message-ID: <528646bc0703260908q7b018060v40db7e66aa81eaee@mail.gmail.com> (raw)
In-Reply-To: <20070315104411.GF22215@moe.telargo.com>

On 3/15/07, Domen Puncer <domen.puncer@telargo.com> wrote:
> U-Boot part of Lite5200b low power mode support.
> Puts SDRAM out of self-refresh and transfers control to
> address saved at physical 0x0.

This looks pretty straight forward.

My only comment is that psc2_4 is probably used as GPIO instead of
power control by some users (The lite5200 is an eval board after all).
 Maybe wrap the code with #ifdef CONFIG_LITE5200B_PM (instead of
CONFIG_LITE5200B) so that it can be easily compiled out.

Also, '//' style comments should be changed to '/* */'

Otherwise;
Acked-by: Grant Likely <grant.likely@secretlab.ca>

g.

>
> ---
>  board/icecube/icecube.c |   50 ++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 50 insertions(+)
>
> Index: u-boot.git/board/icecube/icecube.c
> ===================================================================
> --- u-boot.git.orig/board/icecube/icecube.c
> +++ u-boot.git/board/icecube/icecube.c
> @@ -42,6 +42,54 @@
>  #include "mt48lc16m16a2-75.h"
>  # endif
>  #endif
> +
> +#ifdef CONFIG_LITE5200B
> +/* u-boot part of low-power mode implementation */
> +#define SAVED_ADDR (*(void **)0x00000000)
> +#define PSC2_4 0x02
> +
> +void lite5200b_wakeup(void)
> +{
> +       unsigned char wakeup_pin;
> +       void (*linux_wakeup)(void);
> +
> +       /* check PSC2_4, if it's down "QT" is signaling we have a wakeup
> +        * from low power mode */
> +       *(vu_char *)MPC5XXX_WU_GPIO_ENABLE = PSC2_4;
> +       __asm__ volatile ("sync");
> +
> +       wakeup_pin = *(vu_char *)MPC5XXX_WU_GPIO_DATA_I;
> +       if (wakeup_pin & PSC2_4)
> +               return;
> +
> +       /* acknowledge to "QT"
> +        * by holding pin at 1 for 10 uS */
> +       *(vu_char *)MPC5XXX_WU_GPIO_DIR = PSC2_4;
> +       __asm__ volatile ("sync");
> +       *(vu_char *)MPC5XXX_WU_GPIO_DATA_O = PSC2_4;
> +       __asm__ volatile ("sync");
> +       udelay(10);
> +
> +       /* put ram out of self-refresh */
> +       *(vu_long *)MPC5XXX_SDRAM_CTRL |= 0x80000000;   // mode_en
> +       __asm__ volatile ("sync");
> +       *(vu_long *)MPC5XXX_SDRAM_CTRL |= 0x50000000;   // cke ref_en
> +       __asm__ volatile ("sync");
> +       *(vu_long *)MPC5XXX_SDRAM_CTRL &= ~0x80000000;  // !mode_en
> +       __asm__ volatile ("sync");
> +       udelay(10); /* wait a bit */
> +
> +       /* jump back to linux kernel code */
> +       linux_wakeup = SAVED_ADDR;
> +       printf("\n\nLooks like we just woke, transferring control to 0x%08lx\n",
> +                       linux_wakeup);
> +       linux_wakeup();
> +}
> +#else
> +#define lite5200b_wakeup()
> +#endif
> +
> +
>  #ifndef CFG_RAMBOOT
>  static void sdram_start (int hi_addr)
>  {
> @@ -208,6 +256,8 @@ long int initdram (int board_type)
>                 __asm__ volatile ("sync");
>         }
>
> +       lite5200b_wakeup();
> +
>         return dramsize + dramsize2;
>  }

WARNING: multiple messages have this Message-ID (diff)
From: Grant Likely <grant.likely@secretlab.ca>
To: u-boot@lists.denx.de
Subject: [U-Boot-Users] [PATCH] icecube/lite5200b: wakeup from low-power support
Date: Mon, 26 Mar 2007 10:08:27 -0600	[thread overview]
Message-ID: <528646bc0703260908q7b018060v40db7e66aa81eaee@mail.gmail.com> (raw)
In-Reply-To: <20070315104411.GF22215@moe.telargo.com>

On 3/15/07, Domen Puncer <domen.puncer@telargo.com> wrote:
> U-Boot part of Lite5200b low power mode support.
> Puts SDRAM out of self-refresh and transfers control to
> address saved at physical 0x0.

This looks pretty straight forward.

My only comment is that psc2_4 is probably used as GPIO instead of
power control by some users (The lite5200 is an eval board after all).
 Maybe wrap the code with #ifdef CONFIG_LITE5200B_PM (instead of
CONFIG_LITE5200B) so that it can be easily compiled out.

Also, '//' style comments should be changed to '/* */'

Otherwise;
Acked-by: Grant Likely <grant.likely@secretlab.ca>

g.

>
> ---
>  board/icecube/icecube.c |   50 ++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 50 insertions(+)
>
> Index: u-boot.git/board/icecube/icecube.c
> ===================================================================
> --- u-boot.git.orig/board/icecube/icecube.c
> +++ u-boot.git/board/icecube/icecube.c
> @@ -42,6 +42,54 @@
>  #include "mt48lc16m16a2-75.h"
>  # endif
>  #endif
> +
> +#ifdef CONFIG_LITE5200B
> +/* u-boot part of low-power mode implementation */
> +#define SAVED_ADDR (*(void **)0x00000000)
> +#define PSC2_4 0x02
> +
> +void lite5200b_wakeup(void)
> +{
> +       unsigned char wakeup_pin;
> +       void (*linux_wakeup)(void);
> +
> +       /* check PSC2_4, if it's down "QT" is signaling we have a wakeup
> +        * from low power mode */
> +       *(vu_char *)MPC5XXX_WU_GPIO_ENABLE = PSC2_4;
> +       __asm__ volatile ("sync");
> +
> +       wakeup_pin = *(vu_char *)MPC5XXX_WU_GPIO_DATA_I;
> +       if (wakeup_pin & PSC2_4)
> +               return;
> +
> +       /* acknowledge to "QT"
> +        * by holding pin at 1 for 10 uS */
> +       *(vu_char *)MPC5XXX_WU_GPIO_DIR = PSC2_4;
> +       __asm__ volatile ("sync");
> +       *(vu_char *)MPC5XXX_WU_GPIO_DATA_O = PSC2_4;
> +       __asm__ volatile ("sync");
> +       udelay(10);
> +
> +       /* put ram out of self-refresh */
> +       *(vu_long *)MPC5XXX_SDRAM_CTRL |= 0x80000000;   // mode_en
> +       __asm__ volatile ("sync");
> +       *(vu_long *)MPC5XXX_SDRAM_CTRL |= 0x50000000;   // cke ref_en
> +       __asm__ volatile ("sync");
> +       *(vu_long *)MPC5XXX_SDRAM_CTRL &= ~0x80000000;  // !mode_en
> +       __asm__ volatile ("sync");
> +       udelay(10); /* wait a bit */
> +
> +       /* jump back to linux kernel code */
> +       linux_wakeup = SAVED_ADDR;
> +       printf("\n\nLooks like we just woke, transferring control to 0x%08lx\n",
> +                       linux_wakeup);
> +       linux_wakeup();
> +}
> +#else
> +#define lite5200b_wakeup()
> +#endif
> +
> +
>  #ifndef CFG_RAMBOOT
>  static void sdram_start (int hi_addr)
>  {
> @@ -208,6 +256,8 @@ long int initdram (int board_type)
>                 __asm__ volatile ("sync");
>         }
>
> +       lite5200b_wakeup();
> +
>         return dramsize + dramsize2;
>  }

  reply	other threads:[~2007-03-26 16:08 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-03-15 10:39 [PATCH 0/5 v2] MPC5200 and Lite5200b low power modes Domen Puncer
2007-03-15 10:41 ` [PATCH 1/5] mpc52xx suspend: UART Domen Puncer
2007-03-15 10:41 ` [PATCH 2/5] mpc52xx suspend: FEC (ethernet) Domen Puncer
2007-03-15 13:35   ` Grant Likely
2007-03-15 10:42 ` [PATCH 3/5] mpc52xx suspend: USB Domen Puncer
2007-03-15 13:24   ` Grant Likely
2007-03-15 14:37     ` Wrong board info for ML403 Leonid
2007-03-16  8:15       ` Andrei Konovalov
2007-03-22  7:44     ` [PATCH 3/5 v2] mpc52xx suspend: USB Domen Puncer
2007-03-23 11:56       ` Sylvain Munaut
2007-03-23 16:00         ` Grant Likely
2007-03-15 10:43 ` [PATCH 4/5] mpc52xx suspend: deep-sleep Domen Puncer
2007-03-23 15:58   ` Grant Likely
2007-04-04  7:37     ` Domen Puncer
2007-04-16  5:40       ` Grant Likely
2007-04-17  7:05         ` Domen Puncer
2007-04-17  7:10           ` Grant Likely
2007-03-15 10:44 ` [PATCH] icecube/lite5200b: wakeup from low-power support Domen Puncer
2007-03-15 10:44   ` [U-Boot-Users] " Domen Puncer
2007-03-26 16:08   ` Grant Likely [this message]
2007-03-26 16:08     ` Grant Likely
2007-04-03  8:46     ` Domen Puncer
2007-04-03  8:46       ` [U-Boot-Users] " Domen Puncer
2007-04-16  4:45       ` Grant Likely
2007-04-16  4:45         ` [U-Boot-Users] " Grant Likely
2007-04-16  6:25         ` Domen Puncer
2007-04-16  6:25           ` [U-Boot-Users] " Domen Puncer
2007-04-16  7:10           ` Wolfgang Denk
2007-04-16 12:04         ` Stefan Roese
2007-04-16 13:08           ` Domen Puncer
2007-04-16 13:36             ` Grant Likely
2007-04-20 12:13             ` Stefan Roese
2007-04-20 13:47               ` Wolfgang Denk
2007-04-17 11:29           ` Stefan Roese
2007-04-17 14:50             ` Wolfgang Denk
2007-04-18  5:55               ` [U-Boot-Users] [PATCH] icecube/lite5200b: document " Domen Puncer
2007-03-31 17:20   ` [PATCH] icecube/lite5200b: " Rafal Jaworowski
2007-03-31 17:20     ` [U-Boot-Users] " Rafal Jaworowski
2007-03-31 18:38     ` Domen Puncer
2007-03-31 18:38       ` Domen Puncer
2007-03-15 10:44 ` [PATCH 5/5] lite5200b suspend: low-power mode Domen Puncer
2007-03-15 14:09   ` Grant Likely
2007-03-15 16:36     ` Domen Puncer
2007-03-22  7:41       ` Domen Puncer
2007-03-26 13:23         ` Domen Puncer
2007-03-26 15:54           ` Grant Likely
2007-04-17  7:11     ` Domen Puncer
2007-04-17  7:25       ` Grant Likely

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=528646bc0703260908q7b018060v40db7e66aa81eaee@mail.gmail.com \
    --to=grant.likely@secretlab.ca \
    --cc=domen.puncer@telargo.com \
    --cc=linuxppc-embedded@ozlabs.org \
    --cc=u-boot-users@lists.sourceforge.net \
    /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: link
Be 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.