An error occurred fetching the project authors.
  1. 11 Nov, 2013 1 commit
    • Shawn Guo's avatar
      ARM: imx: remove imx_src_prepare_restart() call · b6e23bb6
      Shawn Guo authored
      There is ~10% possibility that the following emergency restart command
      fails to reboot imx6q.
      
      $ echo b > /proc/sysrq-trigger
      
      The IMX restart routine mxc_restart() assumes that it will always run on
      primary core, and will call imx_src_prepare_restart() to disable
      secondary cores in order to get them come to online in the following
      boot.  However, the assumption is only true for normal kernel_restart()
      case where migrate_to_reboot_cpu() will be called to migrate to primary
      core, but not necessarily true for emergency_restart() case.  So when
      emergency_restart() calls into mxc_restart() on any secondary core,
      system will hang immediately once imx_src_prepare_restart() is called
      to disabled secondary cores.  Since emergency_restart() is defined as a
      function that is safe to call in interrupt context, we cannot just call
      migrate_to_reboot_cpu() to fix the issue.
      
      Fortunately, we just found that the issue can be fixed at imx6q platform
      level.  We used to call imx_src_prepare_restart() to disable all
      secondary cores before resetting hardware.  Otherwise, the secondary
      will fail come to online in the reboot.  However, we recently found that
      after commit 6050d181 (ARM: imx: reset core along with enable/disable
      operation) comes to play, we do not need to reset the secondary cores
      any more.  That said, mxc_restart() now can run on any core to reboot
      the system, as long as we remove the imx_src_prepare_restart() call from
      mxc_restart().
      
      So let's simply remove imx_src_prepare_restart() call to fix the above
      emergency restart failure.
      Reported-by: default avatarJiada Wang <jiada_wang@mentor.com>
      Signed-off-by: default avatarShawn Guo <shawn.guo@linaro.org>
      b6e23bb6
  2. 21 Oct, 2013 9 commits
    • Shawn Guo's avatar
      ARM: imx: ensure dsm_request signal is not asserted when setting LPM · d48866fe
      Shawn Guo authored
      There is a defect in imx6 LPM design.  When SW tries to enter low power
      mode with following sequence, the chip will enter low power mode before
      A9 CPU execute WFI instruction:
      
      1. Set CCM_CLPCR[1:0] to 2'b00;
      2. ARM CPU enters WFI;
      3. ARM CPU wakeup from an interrupt event, which is masked by GPC or not
         visible to GPC, such as interrupt from local timer;
      4. Set CCM_CLPCR[1:0] to 2'b01 or 2'b10;
      5. ARM CPU execute WFI.
      
      Before the last step, the chip will enter WAIT mode if CCM_CLPCR[1:0] is
      set to 2'b01, or enter STOP mode if CCM_CLPCR[1:0] is set to 2'b10.
      
      The patch implements a recommended workaround for this issue.
      
      1. SW triggers irq #32(IOMUX) to be always pending manually by setting
         IOMUX_GPR1_GINT bit;
      2. SW should then unmask it in GPC before setting CCM LPM;
      3. SW should mask it right after CCM LPM is set (bit0-1 of CCM_CLPCR).
      Signed-off-by: default avatarShawn Guo <shawn.guo@linaro.org>
      d48866fe
    • Shawn Guo's avatar
      ARM: imx6q: move low-power code out of clock driver · 9e8147bb
      Shawn Guo authored
      The LPM (Low Power Mode) code that currently sits in imx6q clock driver
      will be reused by imx6sl.  Let's move it into pm-imx6q.c, so that we
      can keep clock driver SoC specific and reuse pm-imx6q.c on imx6sl.
      
      In order to avoid adding another ioremap for CCM block,
      imx6q_pm_set_ccm_base() is created to let clock driver set up ccm_base
      for pm code.
      
      During the move, the unused CCGR macros get removed.
      Signed-off-by: default avatarShawn Guo <shawn.guo@linaro.org>
      9e8147bb
    • Shawn Guo's avatar
      ARM: imx: drop extern with function prototypes in common.h · 803648db
      Shawn Guo authored
      Since commit 70dc8a48 (checkpatch: warn when using extern with function
      prototypes in .h files), we will get checkpatch warning when updating
      common.h following the existing convention which has extern for function
      prototypes.
      
      Let's change the convention to not use extern with function prototypes
      in this header.
      Signed-off-by: default avatarShawn Guo <shawn.guo@linaro.org>
      803648db
    • Shawn Guo's avatar
      ARM: imx: replace imx6q_restart() with mxc_restart() · 87a84b69
      Shawn Guo authored
      The imx6q_restart() works fine with normal reboot but will run into
      problem with emergency reboot like sysrq-b.  In that case, of_iomap()
      gets called from interrupt context and hence triggers the BUG_ON in
      __get_vm_area_node().
      
      Actually, since commit c1e31d12 (ARM: imx: create
      mxc_arch_reset_init_dt() for DT boot), imx6q/dl should try to use
      mxc_restart() by calling mxc_arch_reset_init_dt() beforehand, where
      things like of_iomap() can be done.
      
      The patch updates mxc_restart() a little bit to get it work for imx6q/dl
      and kill imx6q_restart() completely.
      Reported-by: default avatarNathan Lynch <nathan_lynch@mentor.com>
      Signed-off-by: default avatarShawn Guo <shawn.guo@linaro.org>
      87a84b69
    • Shawn Guo's avatar
      ARM: imx: remove stale mx53_display_revision() declaration · 7655fe53
      Shawn Guo authored
      The mx53_display_revision() declaration in common.h is stale and used
      nowhere, so remove it.
      Signed-off-by: default avatarShawn Guo <shawn.guo@linaro.org>
      7655fe53
    • Shawn Guo's avatar
      ARM: imx6: report soc info via soc device · a2887546
      Shawn Guo authored
      The patch enables soc bus infrastructure and adds a function
      imx_soc_device_init() to report soc info via soc device interface for
      imx6qdl and imx6sl.  With the support, user space can get soc related
      info by looking at sysfs like below.
      
        $ cat /sys/devices/soc0/machine
        Freescale i.MX6 Quad SABRE Smart Device Board
        $ cat /sys/devices/soc0/family
        Freescale i.MX
        $ cat /sys/devices/soc0/soc_id
        i.MX6Q
        $ cat /sys/devices/soc0/revision
        1.2
      Signed-off-by: default avatarShawn Guo <shawn.guo@linaro.org>
      a2887546
    • Shawn Guo's avatar
      ARM: imx: add a common function to initialize revision from anatop · f1c6f314
      Shawn Guo authored
      The patch creates a common function imx_init_revision_from_anatop() by
      merging imx6q_init_revision() and imx_anatop_get_digprog(), so that any
      SoC that encodes revision info in anatop can use it to initialize
      revision.
      Signed-off-by: default avatarShawn Guo <shawn.guo@linaro.org>
      f1c6f314
    • Shawn Guo's avatar
      ARM: imx6q: use common soc revision helpers · 3f75978b
      Shawn Guo authored
      It calls imx_set_soc_revision() to set up soc revision in
      imx6q_init_revision(), and replaces all the occurrences of
      imx6q_revision() with common helper imx_get_soc_revision().
      Signed-off-by: default avatarShawn Guo <shawn.guo@linaro.org>
      3f75978b
    • Shawn Guo's avatar
      ARM: imx: add soc revision helper functions · bfefdff8
      Shawn Guo authored
      Similar to what we do for cpu type, the patch adds helper functions
      imx_set_soc_revision() and imx_get_soc_revision() to maintain
      imx_soc_revision in cpu.c.
      Signed-off-by: default avatarShawn Guo <shawn.guo@linaro.org>
      bfefdff8
  3. 29 Sep, 2013 1 commit
  4. 22 Aug, 2013 2 commits
    • Peter Chen's avatar
      ARM: imx: Move anatop related from board file to anatop driver · ddcb9aa6
      Peter Chen authored
      Move anatop related (For USB) from board file to anatop driver
      Signed-off-by: default avatarPeter Chen <peter.chen@freescale.com>
      Signed-off-by: default avatarShawn Guo <shawn.guo@linaro.org>
      ddcb9aa6
    • Fabio Estevam's avatar
      ARM: mx53: Allow suspend/resume · 547dd1e0
      Fabio Estevam authored
      Current imx53_pm_init() implementation is incomplete as it lacks calling
      suspend_set_ops().
      
      Use a single imx5_pm_init() function to handle both mx51 and mx53.
      
      This allows mx53 to enter in low-power mode.
      
      Tested on a mx53qsb:
      
      root@freescale /$ echo mem > /sys/power/state
      PM: Syncing filesystems ... done.
      mmc0: card e624 removed
      Freezing user space processes ... (elapsed 0.001 seconds) done.
      Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
      Suspending console(s) (use no_console_suspend to debug)
      
      ... (Press Power button)
      
      PM: suspend of devices complete after 17.067 msecs
      PM: suspend devices took 0.020 seconds
      PM: late suspend of devices complete after 0.954 msecs
      PM: noirq suspend of devices complete after 1.288 msecs
      Disabling non-boot CPUs ...
      PM: noirq resume of devices complete after 0.680 msecs
      PM: early resume of devices complete after 0.914 msecs
      PM: resume of devices complete after 44.955 msecs
      PM: resume devices took 0.050 seconds
      Restarting tasks ... done.
      mmc0: host does not support reading read-only switch. assuming write-enable.
      mmc0: new SDHC card at address e624
      mmcblk0: mmc0:e624 SU04G 3.69 GiB
       mmcblk0: p1 p2 p3
      libphy: 63fec000.etherne:00 - Link is Down
      libphy: 63fec000.etherne:00 - Link is Up - 100/Full
      root@freescale /$
      Signed-off-by: default avatarFabio Estevam <fabio.estevam@freescale.com>
      Signed-off-by: default avatarShawn Guo <shawn.guo@linaro.org>
      547dd1e0
  5. 16 Aug, 2013 1 commit
  6. 09 Jul, 2013 1 commit
  7. 17 Jun, 2013 3 commits
  8. 09 May, 2013 1 commit
    • Shawn Guo's avatar
      ARM: imx: compile fix for hotplug.c · 009e63f8
      Shawn Guo authored
      Commit bca7a5a0 (ARM: cpu hotplug: remove majority of cache flushing
      from platforms) removes include of <asm/cacheflush.h> and hence
      discovers a few indirect inclusion and declaration problems as below.
      
        CC      arch/arm/mach-imx/hotplug.o
      In file included from arch/arm/mach-imx/hotplug.c:16:0:
      arch/arm/mach-imx/common.h:100:29: warning: ‘struct pt_regs’ declared inside parameter list [enabled by default]
      arch/arm/mach-imx/common.h:100:29: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]
      arch/arm/mach-imx/common.h:101:29: warning: ‘struct pt_regs’ declared inside parameter list [enabled by default]
      arch/arm/mach-imx/hotplug.c: In function ‘imx_cpu_die’:
      arch/arm/mach-imx/hotplug.c:53:2: error: implicit declaration of function ‘cpu_do_idle’ [-Werror=implicit-function-declaration]
      arch/arm/mach-imx/hotplug.c: In function ‘imx_cpu_kill’:
      arch/arm/mach-imx/hotplug.c:58:26: error: ‘jiffies’ undeclared (first use in this function)
      arch/arm/mach-imx/hotplug.c:58:26: note: each undeclared identifier is reported only once for each function it appears in
      arch/arm/mach-imx/hotplug.c:58:2: error: implicit declaration of function ‘msecs_to_jiffies’ [-Werror=implicit-function-declaration]
      arch/arm/mach-imx/hotplug.c:61:3: error: implicit declaration of function ‘time_after’ [-Werror=implicit-function-declaration]
      
      Fix them by adding the needed inclusion and declaration.
      Signed-off-by: default avatarShawn Guo <shawn.guo@linaro.org>
      Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
      Acked-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
      Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
      009e63f8
  9. 12 Apr, 2013 3 commits
  10. 01 Apr, 2013 2 commits
  11. 26 Mar, 2013 1 commit
    • Shawn Guo's avatar
      ARM: imx: fix sync issue between imx_cpu_die and imx_cpu_kill · 2f3edfd7
      Shawn Guo authored
      There is a sync issue with hotplug operation.  It's possible that when
      imx_cpu_kill gets running on primary core, the imx_cpu_die execution
      on the core which is to be killed hasn't been finished yet.  The problem
      will very likely be hit when running suspend without no_console_suspend
      setting on kernel cmdline.
      
      It uses cpu jumping argument register to sync imx_cpu_die and
      imx_cpu_kill.  The register will be set in imx_cpu_die and imx_cpu_kill
      will wait for the register being cleared to actually kill the cpu.
      Signed-off-by: default avatarShawn Guo <shawn.guo@linaro.org>
      Cc: <stable@vger.kernel.org>
      2f3edfd7
  12. 30 Jan, 2013 1 commit
  13. 29 Jan, 2013 3 commits
  14. 14 Jan, 2013 1 commit
    • Shawn Guo's avatar
      ARM: imx: disable cpu in .cpu_kill hook · 83757664
      Shawn Guo authored
      It's buggy to disable the cpu that is being hot-unplugged in .cpu_die
      hook which runs on the cpu itself.  Instead, it should be done in
      .cpu_kill which runs on the thread (another cpu) that asks for shutting
      down the cpu.  Move imx_enable_cpu(cpu, false) call into .cpu_kill
      hook, and leave the cpu to be hot-unplugged in WFI within .cpu_die,
      so that we can get a more stable cpu hot-plug operation.
      Signed-off-by: default avatarShawn Guo <shawn.guo@linaro.org>
      83757664
  15. 12 Jan, 2013 1 commit
  16. 12 Nov, 2012 1 commit
  17. 15 Oct, 2012 3 commits
  18. 14 Sep, 2012 1 commit
  19. 11 Sep, 2012 3 commits
  20. 10 Jul, 2012 1 commit