Commit Graph

11 Commits

Author SHA1 Message Date
Russell King 02b4e2756e ARM: v7 setup function should invalidate L1 cache
All ARMv5 and older CPUs invalidate their caches in the early assembly
setup function, prior to enabling the MMU.  This is because the L1
cache should not contain any data relevant to the execution of the
kernel at this point; all data should have been flushed out to memory.

This requirement should also be true for ARMv6 and ARMv7 CPUs - indeed,
these typically do not search their caches when caching is disabled (as
it needs to be when the MMU is disabled) so this change should be safe.

ARMv7 allows there to be CPUs which search their caches while caching is
disabled, and it's permitted that the cache is uninitialised at boot;
for these, the architecture reference manual requires that an
implementation specific code sequence is used immediately after reset
to ensure that the cache is placed into a sane state.  Such
functionality is definitely outside the remit of the Linux kernel, and
must be done by the SoC's firmware before _any_ CPU gets to the Linux
kernel.

Changing the data cache clean+invalidate to a mere invalidate allows us
to get rid of a lot of platform specific hacks around this issue for
their secondary CPU bringup paths - some of which were buggy.

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Tested-by: Florian Fainelli <f.fainelli@gmail.com>
Tested-by: Heiko Stuebner <heiko@sntech.de>
Tested-by: Dinh Nguyen <dinguyen@opensource.altera.com>
Acked-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Tested-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Acked-by: Shawn Guo <shawn.guo@linaro.org>
Tested-by: Thierry Reding <treding@nvidia.com>
Acked-by: Thierry Reding <treding@nvidia.com>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Tested-by: Michal Simek <michal.simek@xilinx.com>
Tested-by: Wei Xu <xuwei5@hisilicon.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2015-06-01 11:30:26 +01:00
Linus Torvalds e5ac320de1 ARM: SoC multiplatform code changes for v4.1
The changes here belong to two main platforms:
 
 - Atmel At91 is flipping the bit and going multiplatform. This includes some
   cleanups and removal of code, and the final flip of config dependencies
 
 - Shmobile has several platforms that are going multiplatform, but this
   branch also contains a bunch of cleanups that they weren't able to keep
   separate in a good way. THere's also a removal of one of their SoCs and the
   corresponding boards (sh7372 and mackerel).
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJVNzfJAAoJEIwa5zzehBx3iRcP/1v9Rw2yk4NpUDaz5EUwhwN6
 y5l29gW8jJmVuHWqLUqsgh61dsj5AEEAL7fEEbR8e8848s+RxsehjsGPIxFOkR74
 KaKSRlrUgxKcsFN97Jo/WqT3seC83hg6zWQapwNypX33gBtrRLPhM9FEb05asYA8
 6x7N29kFeH9M3A6lrabXGWz5tPRZSthwuBSmomHOfgqa5zbgkoaK59j867Yac0q+
 Pemh0eJZHC3Pyrmh7ZcVaCaSvr1QO6ructmLopmHAXfls2Fi21wq3IN3641aiitC
 G7hhb1/c961MpE3p+0dQyrXs645qIgYv/fDxp72T8YwA7FhjMmIscX/WiITXMlvC
 Mg/fDJXqgRkTPWjvVM6xF8TKCSdvqfmErWtHt2dtgvbFWL0ffSeoYF35AF5BODVG
 jp8RR6vQ/CHKFao5iJmTpm0ccjnzdS82FEb0PrhG0vY+u6uCsKMim5tn8wUBuBkM
 QU2FipNt6STC5ZcCSb+p7r5ihod9rG+BlNL/eXJ+pBHuVnjSgltEaZBP9qIiFjZl
 MLRjm7JaEY3LpAR/TVurtSrUnh0zC0RRSzptK4RekmFIwyL+mqq/I1yrksdnVjgf
 upj1dZwFRsVtD5PcaU3LyTYCOLSI8L9+b6vVvfFH0Sq4V7TkaBkI/kxnhI2WfkBc
 CJ+3vptpyphw6zHAngAN
 =Vq4N
 -----END PGP SIGNATURE-----

Merge tag 'armsoc-multiplatform' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc

Pull ARM SoC multiplatform code changes from Olof Johansson:
 "The changes here belong to two main platforms:

   - Atmel At91 is flipping the bit and going multiplatform.  This
     includes some cleanups and removal of code, and the final flip of
     config dependencies

   - Shmobile has several platforms that are going multiplatform, but
     this branch also contains a bunch of cleanups that they weren't
     able to keep separate in a good way.  THere's also a removal of one
     of their SoCs and the corresponding boards (sh7372 and mackerel)"

* tag 'armsoc-multiplatform' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (67 commits)
  ARM: at91/pm: move AT91_MEMCTRL_* to pm.h
  ARM: at91/pm: move the standby functions to pm.c
  ARM: at91: fix pm_suspend.S compilation when ARMv6 is selected
  ARM: at91: add a Kconfig dependency on multi-platform
  ARM: at91: drop AT91_TIMER_HZ
  ARM: at91: remove hardware.h
  ARM: at91: remove SoC headers
  ARM: at91: remove useless mach/cpu.h
  ARM: at91: remove unused headers
  ARM: at91: switch at91_dt_defconfig to multiplatform
  ARM: at91: switch to multiplatform
  ARM: shmobile: r8a7778: enable multiplatform target
  ARM: shmobile: bockw: add sound to DT
  ARM: shmobile: r8a7778: add sound to DT
  ARM: shmobile: bockw: add devices hooked up to i2c0 to DT
  DT: i2c: add trivial binding for OKI ML86V7667 video decoder
  ARM: shmobile: r8a7778: common clock framework CPG driver
  ARM: shmobile: bockw dts: set extal clock frequency
  ARM: shmobile: bockw dts: Move Ethernet node to BSC
  ARM: shmobile: r8a73a4: Remove legacy code
  ...
2015-04-22 09:20:15 -07:00
Daniel Lezcano df67a2b72e ARM: shmobile: cpuidle: Remove the pointless default driver
The default idle driver uses one state with the WFI instruction.
The default idle routine invokes WFI when no cpuidle driver is present.

The default cpuidle driver is pointless and does not give more than the
default idle routine and moreover it pulls all the mathematics tied with
the cpuidle governor for nothing, hence consuming more energy.

Remove the default driver, the related code and register the driver directly.

[compiled only - no board - no test]

Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
2015-03-19 11:02:07 +09:00
Magnus Damm 59b89af1d5 ARM: shmobile: sh7372: Remove Legacy C SoC code
Remove support for the legacy Cortex-A8 based sh7372 SoC.

The Linux kernel still lacks DT bindings for the sh7372 INTC
interrupt controller so DT multiplatform support is not possibile.

Also, the sh7372 SoC never went into mass production anyway so to
aid migration to DT multiplatform simply get rid of sh7372 support.

Signed-off-by: Magnus Damm <damm+renesas@opensource.se>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
2015-02-24 06:45:25 +09:00
Hisashi Nakamura a8d2ff39c7 ARM: shmobile: Separate APMU resource data into CPU dependant part
APMU resources are not common to all R-Car SoCs so don't share this data.
A subsequent patch will correct the CPU cores for the r8a7791.

Signed-off-by: Hisashi Nakamura <hisashi.nakamura.ak@renesas.com>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
2014-11-04 09:31:23 +09:00
Magnus Damm 7dd4cfd7f8 ARM: shmobile: Remove shmobile_setup_delay()
All ARM mach-shmobile SoCs and boards now rely on DTS for
CPU Frequency information, so remove the unused function
shmobile_setup_delay(). While at it, make the function
shmobile_setup_delay_hz() static.

Signed-off-by: Magnus Damm <damm+renesas@opensource.se>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
2014-08-22 11:31:56 +09:00
Olof Johansson 98abaf1370 Renesas ARM Based SoC Updates for v3.17
* Use shmobile_init_late on r8a7791 and r8a7790 whien booting using DT-only
 * Support Core-Standby for Suspend to RAM on r8a7791 and r8a7790 SoCs
 * Shared CMA reservation for R-Car Gen2 SoCs
 * Add r8a7791 SYSC power management support
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJTqnn+AAoJENfPZGlqN0++SZIP/jn48ADVugeEANLibUl10IBb
 hWKh80Fr4/ELaXd0KJTa8SDzLW/JB3rr29bwBhkRWIcsMIeWObI2wJEnSVX2yZkO
 ZBijr9FbdmhQ5VmkXEqjUqYkGKx/0IGHMFQ8R6Io3tiwpLXFdz2+moT8cu3Rl4TP
 WNvP+xEPjvPUb/7PygXg2Ypdq5jmV4j24LUCJj+yo3ULP2zv92d620CuWT3P0zbv
 5PRP3SvbzgwYHhINFF8e4StYsjrl++V+w5pjdm3XDcVNkDoc6p/e8Jqse6wjAYY+
 2ShUXhfg7/D56BlEChHb6xwlJmImO81x1NrB5zM69vpvGGQ9fW1XwDAtrFzocDag
 vDDp4KIY8TD/T6E6KhEpOdW1GSWYukJ2PBqsgxuYaY8eBO7HDPbG5klj8VEfACgu
 ZeY0F2Uq/wb1mJNh32s1FIaWQPGAGPY5Yi77ShHbo3xKQBlqtY2M3Snw8hYLUKgS
 tDowT94fWAdXXlFCtvOUMyPEa5+hqZ68PlYFU7Z0jvYcaUm9Ui/EEgo7YqdBWh9e
 CVN1fG5SvV8HY5h81GqvC87B45EzALqMG28rhv4e0rSP9PxHuIGWd/m22ea+aV8G
 eDKinQ0+EXeyG6BKjbx63s3zGiv60gNcj8anG7Kd6UNpyLnRGewWJkIpSonmqO9R
 TQNXLY08LHnONq/gw5Xc
 =6J6K
 -----END PGP SIGNATURE-----

Merge tag 'renesas-soc-for-v3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas into next/soc

Merge "Renesas ARM Based SoC Updates for v3.17" from Simon Horman:

- Use shmobile_init_late on r8a7791 and r8a7790 whien booting using DT-only
- Support Core-Standby for Suspend to RAM on r8a7791 and r8a7790 SoCs
- Shared CMA reservation for R-Car Gen2 SoCs
- Add r8a7791 SYSC power management support

* tag 'renesas-soc-for-v3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas:
  ARM: shmobile: Remove ARCH_HAS_CPUFREQ config for shmobile
  ARM: shmobile: rcar-gen2: update call to dma_contiguous_reserve_area
  ARM: shmobile: rcar-gen2: correct return value of shmobile_smp_apmu_suspend_init
  ARM: shmobile: rcar-gen2: Remove useless copied section for LongTrail
  ARM: shmobile: rcar-gen2: Use "1ULL" instead of "(u64)1"
  ARM: shmobile: rcar-gen2: Update for of_get_flat_dt_prop() update
  ARM: shmobile: Add shared R-Car Gen2 CMA reservation code
  ARM: shmobile: Use shmobile_init_late() on r8a7791 DT-only
  ARM: shmobile: Use shmobile_init_late() on r8a7790 DT-only
  ARM: shmobile: Mark all SoCs in shmobile as CPUFreq, capable
  ARM: shmobile: r8a7791: Support Core-Standby for Suspend to RAM
  ARM: shmobile: r8a7790: Support Core-Standby for Suspend to RAM
  ARM: shmobile: APMU: Add Core-Standby-state for Suspend to RAM
  ARM: shmobile: r8a7791 SYSC setup code

Signed-off-by: Olof Johansson <olof@lixom.net>
2014-07-07 22:07:14 -07:00
Olof Johansson 21760aedab Renesas ARM Based SoC r8a7779-multiplatform Updates for v3.17
Move r8a7779 SoC and its Marzen board to use common clocks,
 multiplatform and initialise SCIF (serial) devices using DT.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJTp3onAAoJENfPZGlqN0++hxgP/j63EuB5yW4bejORhuzPfCQc
 uPC7FFrHEbaJBnXx4oAFkwygD+yly8RAQ5SL2IXNguPQBnIEHQ/U11ajFupeZVOo
 DTxVwuDZRXDCxkBT4ZwmAssxnAKiQacCH+KTFM1m0ruGlSdXDqAzd/0jgzG9lXvO
 2pCRMoeSSi9EtSKhEf0cHdTBlaho4NrXWkEJ0KiSdwr6Xiwbef5VoLxNhMArocKL
 xi+N+a/WgA7gduoWaM0tF/O+ZtX5i9BOQUvJH30lr3hHP5c7H3gLw+CZ73+iT2Cb
 Jpj9CX/K4queau+nA7aSbko0RiBCHD0Lk9qTfgMYWqRj/Bq7cyfHi60MYhL1A+6q
 zUVDYGEa7SaOa/G/GHR8ZxcJVUy0fcJEnq80d/h3eKiP7zfmshregoQJuhB0fY+e
 o3mFpTaIjHZgPHekEumY2r2LUzZ8F762joRgKFxxhVX+tDi+92nwPob296V8NAAx
 tcxEq/LVvaShZaTHYZCL1dWaRpp9u/NbXnobJiPn9G538UTvo0cDhzg7yMljUuB8
 ATOXqZGeeLsHJk3GeAwSndR6U7ANXXRN07IcpcIUC4f8jPWaMGw9Jf1Nzng8l0yP
 EAkjz0Az/NUeUu5UBt4c63brmGowADk3tJNCUkNlyhWizhyXYVkeS0MZxWme+1R1
 EPk/39uwiM3J+HGc9uP1
 =2zqe
 -----END PGP SIGNATURE-----

Merge tag 'renesas-r8a7779-multiplatform-for-v3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas into next/soc

Pull "Renesas ARM Based SoC r8a7779-multiplatform Updates for v3.17" from
Simon Horman:

Move r8a7779 SoC and its Marzen board to use common clocks,
multiplatform and initialise SCIF (serial) devices using DT.

* tag 'renesas-r8a7779-multiplatform-for-v3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas: (32 commits)
  ARM: shmobile: marzen: Do not use workaround for scif devices
  ARM: shmobile: marzen: Initialise SCIF devices using DT
  ARM: shmobile: marzen: Remove early_printk from command line
  ARM: shmobile: r8a7779: Add scif nodes to dtsi
  ARM: shmobile: r8a7779 dtsi: Correct #address-cells/#size-cells for clocks
  ARM: shmobile: r8a7779 dtsi: Update unit-addresses for clocks
  ARM: shmobile: r8a7779: Remove unused r8a7779_init_delay()
  ARM: shmobile: marzen-reference: Use DT CPU Frequency
  ARM: shmobile: r8a7779: Use DT CPU Frequency in common case
  ARM: shmobile: r8a7779: Add Maximum CPU Frequency to DTS
  ARM: shmobile: marzen-reference: Remove legacy clock support
  ARM: shmobile: Remove Marzen reference DTS
  ARM: shmobile: Let Marzen multiplatform boot with Marzen DTB
  ARM: shmobile: Remove non-multiplatform Marzen reference support
  ARM: shmobile: marzen-reference: Instantiate clkdevs for SCIF and TMU
  ARM: shmobile: marzen-reference: Initialize CPG device
  ARM: shmobile: r8a7779: Initial multiplatform support
  ARM: shmobile: marzen-reference: Move clock and OF device initialisation into board code
  ARM: shmobile: r8a7779: Move r8a7779_earlytimer_init to clock-r8a7779.c
  ARM: shmobile: r8a7779: Add helper to read mode pins
  ...

Signed-off-by: Olof Johansson <olof@lixom.net>
2014-07-06 17:16:16 -07:00
Simon Horman ecdaca4862 ARM: shmobile: rcar-gen2: correct return value of shmobile_smp_apmu_suspend_init
The dummy shmobile_smp_apmu_suspend_init() function provided when
CPU_IDLE is not set should not return a value as per the signature
of the function.

This problem appears to have been introduced by
867ba81f728f1daa ("ARM: shmobile: APMU: Add Core-Standby-state for Suspend
to RAM").

Cc: Keita Kobayashi <keita.kobayashi.ym@renesas.com>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
2014-06-17 19:33:22 +09:00
keita kobayashi d6d757c9a4 ARM: shmobile: APMU: Add Core-Standby-state for Suspend to RAM
This patch add Core-Standby-state for Suspend to RAM.

Signed-off-by: Keita Kobayashi <keita.kobayashi.ym@renesas.com>
Acked-by: Magnus Damm <damm+renesas@opensource.se>
[horms+renesas@verge.net.au: rebase]
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
2014-06-17 19:32:06 +09:00
Magnus Damm fd44aa5e57 ARM: shmobile: Move common.h
Change location for common.h so it can be used as #include "common.h"
instead of the old style #include <mach/common.h>.

Signed-off-by: Magnus Damm <damm+renesas@opensource.se>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
2014-06-17 17:09:39 +09:00