Commit Graph

30458 Commits

Author SHA1 Message Date
Stephen Boyd
9485099209 ARM: Remove temporary sched_clock.h header
This header file is no longer needed now that the ARM sched_clock
framework is generic and all users have moved to linux/sched_clock.h
instead of asm/sched_clock.h. Remove it.

Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Kevin Hilman <khilman@linaro.org>
2013-10-11 14:50:10 -07:00
Stephen Boyd
5bd8e16de3 ARM: clps711x: Use linux/sched_clock.h
The sched_clock.h include is under include/linux now.

Cc: Alexander Shiyan <shc_work@mail.ru>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Kevin Hilman <khilman@linaro.org>
2013-10-11 14:50:10 -07:00
Balaji T K
6cf02dbb4b ARM: dts: dra7-evm: Add mmc2 node for eMMC support
Add mmc2 dt node to dra7-evm board
and model eMMC vcc as fixed regulator.

Signed-off-by: Balaji T K <balajitk@ti.com>
Acked-by: Sekhar Nori <nsekhar@ti.com>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:15:02 +02:00
Balaji T K
bf1788df8f ARM: dts: dra7-evm: Add mmc1 node for micro-sd support
Add mmc1 dt node to dra7-evm board.
Input for ldo1 regulator is controlled by gpio 5 of pcf8575 chip (0x21)
on i2c1 bus. When dt support for gpio-pcf857x is available, input supply
will be modelled as cascaded regulator.

Signed-off-by: Balaji T K <balajitk@ti.com>
Acked-by: Sekhar Nori <nsekhar@ti.com>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:14:32 +02:00
Nishanth Menon
86583375aa ARM: dts: omap5-uevm: mark TWL6037 as system-power-controller
This allows the palmas pm_power_off to kick in on power off command
and switch off the board.

Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:44 +02:00
Javier Martinez Canillas
2892aef29f ARM: dts: omap3-igep0020: use standard constant for IRQ flags
Commit 840ef8b7 ("ARM: dt: add header to define IRQ flags") added
constants for IRQ edge/level triggered types so use it instead of
a magic number to enhance the DT readability.

Signed-off-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:44 +02:00
Javier Martinez Canillas
339e834fe0 ARM: dts: omap3-igep0020: Add HS USB Host support
Add device nodes for the HS USB Host port 1, USB PHY and its
required regulator and also pin mux setup for HS USB1 pins.

Signed-off-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Tested-by: Enric Balletbo i Serra <eballetbo@gmail.com>
Acked-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:43 +02:00
Javier Martinez Canillas
aa496bde78 ARM: dts: omap3-igep: Add USB OTG support
Commit ad871c10b ("ARM: dts: OMAP: Add usb_otg and glue data to O
added USB OTG support for most OMAP boards but some OMAP3 boards
such as IGEP boards were not updated. This patch adds an USB OTG
device node to these board.

Signed-off-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Tested-by: Enric Balletbo i Serra <eballetbo@gmail.com>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:43 +02:00
Darren Etheridge
559a08e893 ARM: dts: AM33XX beagle black: add pinmux and hdmi node to enable display
Enable the hdmi output and the LCD Controller on BeagleBone
Black. Also configure the correct pinmux for output of
video data from the SoC to the HDMI encoder.

Signed-off-by: Darren Etheridge <detheridge@ti.com>
Signed-off-by: Joel Fernandes <joelf@ti.com>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:42 +02:00
Benoit Parrot
d6cfc1e266 ARM: dts: AM33XX: Add LCDC info into am335x-evm
Add LCDC device node in DT for am33xx
Add LCDC and Panel info in DT for am335x-evm

Changes:
- remove redundant/unnecessary SoC specific setting in the board dts
- resolved conflicts on for_3.13/dts

Signed-off-by: Benoit Parrot <bparrot@ti.com>
Signed-off-by: Joel Fernandes <joelf@ti.com>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:42 +02:00
Joel Fernandes
099f3a8548 ARM: dts: AM437X: Add DES node
AM437x SoC has a DES3DES module similar to the one on OMAP4.
Add DT node for the same.

Signed-off-by: Joel Fernandes <joelf@ti.com>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:42 +02:00
Joel Fernandes
6e70a510b4 ARM: dts: AM437X: Add AES node
AM437x SoC has AES module similar to the one on OMAP4.
Add DT node for the same.

Signed-off-by: Joel Fernandes <joelf@ti.com>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:41 +02:00
Joel Fernandes
7af8884a17 ARM: dts: AM33XX: Fix AES interrupt number
AES interrupts were previously not used, but after recent changes
to omap-aes driver, its being used.
Correct the interrupt number to have working PIO mode.

Signed-off-by: Joel Fernandes <joelf@ti.com>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:41 +02:00
Mark A. Greer
99919e5e15 ARM: dts: AM33XX: Add AES data and documentation
Add the generic AM33XX AES module's device tree data and
enable it for the am335x-evm, am335x-evmsk, and am335x-bone
platforms.  Also add Documentation file describing the data
for the AES module.

Cc: Paul Walmsley <paul@pwsan.com>
Signed-off-by: Mark A. Greer <mgreer@animalcreek.com>
Signed-off-by: Joel Fernandes <joelf@ti.com>
[joelf@ti.com: Dropped interrupt-parent property, documentation fixups]
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:40 +02:00
Mark A. Greer
f8302e1efa ARM: dts: AM33XX: Add SHAM data and documentation
Add the generic AM33XX SHAM module's device tree data and
enable it for the am335x-evm, am335x-evmsk, and am335x-bone
platforms.  Also add Documentation file describing the data
for the SHAM module.

Cc: Paul Walmsley <paul@pwsan.com>
Signed-off-by: Mark A. Greer <mgreer@animalcreek.com>
Signed-off-by: Joel Fernandes <joelf@ti.com>
[joelf@ti.com: Dropped interrupt-parent property, documentation fixups]
Acked-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:40 +02:00
Joel Fernandes
806e943153 ARM: dts: OMAP4: Add DES3DES node
OMAP4 has an DES3DES  module that uses the omap-des crypto driver.
Add DT entries for the same.

Signed-off-by: Joel Fernandes <joelf@ti.com>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:39 +02:00
Joel Fernandes
dd6317dffc ARM: dts: OMAP4: Add AES node
OMAP4 has an AES module that uses the omap-aes crypto driver.
Add DT entries for the same.

Signed-off-by: Joel Fernandes <joelf@ti.com>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:39 +02:00
Balaji T K
0d8d40fc66 ARM: dts: am335x-evm[sdk]: switch mmc1 to 4-bit mode
Set bus-width to make SD card operate in 4 bit mode.

Signed-off-by: Balaji T K <balajitk@ti.com>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:38 +02:00
Balaji T K
af905b2225 ARM: dts: am335x-bone-common: correct mux mode for cmd line
Set pinmux_emmc_pins mux mode for cmd line to MODE2 in order
to detect eMMC on BBB and BBW + eMMC cape.

Signed-off-by: Balaji T K <balajitk@ti.com>
Tested-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:38 +02:00
Enric Balletbo i Serra
5cda1620f4 ARM: dts: AM33XX: Add support for IGEP AQUILA EXPANSION board.
The IGEP AQUILA EXPANSION board is a development platform
for the IGEP COM AQUILA AM335x boards.

The board adds the following connectivity:

    o USB OTG
    o USB HOST
    o HDMI
    o Ethernet
    o Serial Debug (3.3V)
    o 2x46 pin headers
    o EEPROM

Signed-off-by: Enric Balletbo i Serra <eballetbo@iseebcn.com>
Reviewed-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:37 +02:00
Enric Balletbo i Serra
e415245c68 ARM: dts: AM33XX: Add support for IGEP COM AQUILA
The IGEP COM AQUILA is industrial processors SODIMM module with
following highlights:

   o AM3352/AM3354/AM3358/AM3359 Texas Instruments processor
   o Cortex-A8 ARM CPU
   o 3.3 volts Inputs / Outputs use industrial
   o 256 MB DDR3 SDRAM / 128 Megabytes FLASH
   o MicroSD card reader on-board
   o Ethernet controller on-board
   o JTAG debug connector available
   o Designed for industrial range purposes

Signed-off-by: Enric Balletbo i Serra <eballetbo@iseebcn.com>
Reviewed-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:37 +02:00
Nishanth Menon
ea5b7c10d4 ARM: dts: am335x-boneblack: move fixed regulator to board level
3.3V fixed regulator does not belong to TPS node - as a result
the fixed regulator is never probed and MMC is continually deferred
due to lack of regulator.

Move the fixed regulator to be at root of platform.

Cc: Joel Fernandes <joelf@ti.com>
Cc: Sekhar Nori <nsekhar@ti.com>
Cc: Koen Kooi <koen@dominion.thruhere.net>
Signed-off-by: Nishanth Menon <nm@ti.com>
Tested-by: Felipe Balbi <balbi@ti.com>
Tested-by: Balaji T K <balajitk@ti.com>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:36 +02:00
Roger Quadros
816602086b ARM: dts: omap3-beagle: Add USB OTG PHY details
Add information about the USB OTG PHY. Without this
the OTG port on beagle will not work.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:36 +02:00
Roger Quadros
aaba94429a ARM: dts: omap3-beagle-xm: Add USB Host support
Provide RESET GPIO and Power regulator for the USB PHY,
the USB Host port mode and the PHY device for the controller.
Also provide pin multiplexer information for USB host pins.

We also relocate omap3_pmx_core pin definations so that they
are close to omap3_pmx_wkup pin definations.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:35 +02:00
Roger Quadros
8ae9b5953c ARM: dts: omap5-uevm: Use reset-gpios for hsusb2/3_reset
We no longer need to model the RESET line as a regulator since
the USB phy-nop driver accepts "reset-gpios" property.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:35 +02:00
Roger Quadros
4cbdc86d63 ARM: dts: omap4-panda: Use reset-gpios for hsusb1_reset
We no longer need to model the RESET line as a regulator since
the USB phy-nop driver accepts "reset-gpios" property.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:35 +02:00
Roger Quadros
633b940fc0 ARM: dts: omap3-beagle: Use reset-gpios for hsusb2_reset
We no longer need to model the RESET line as a regulator since
the USB phy-nop driver accepts "reset-gpios" property.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:34 +02:00
Dan Murphy
8170056d3c ARM: dts: AM33XX: add ethernet alias's for am33xx
Set the alias for ethernet0 and ethernet1 so that uBoot
can set the MAC address appropriately.

Currently u-boot cannot find the alias and there for does
not set the MAC address.

Signed-off-by: Dan Murphy <dmurphy@ti.com>
Tested-by: Mugunthan V N <mugunthanvnm@ti.com>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:34 +02:00
Keerthy
c56a831ca4 ARM: dts: DRA7: Add TPS659038 PMIC nodes
Add DT nodes for TPS659038 PMIC on DRA7 boards.

It is based on top of:
http://comments.gmane.org/gmane.linux.ports.arm.omap/102459.

Documentation:
- Documentation/devicetree/bindings/mfd/palmas.txt
- Documentation/devicetree/bindings/regulator/palmas-pmic.txt

Boot Tested on DRA7 d1 Board.

Signed-off-by: Keerthy <j-keerthy@ti.com>
Acked-by: Nishanth Menon <nm@ti.com>
[bcousson@baylibre.com: Fix indentation and changelog]
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:33 +02:00
Aaro Koskinen
6283513b6e ARM: dts: omap3-devkit8000: fix a typo in GMPC node
"gpmc,sync-clki-ps" is not defined/documented, it should be
"gpmc,sync-clk-ps" instead.

Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:33 +02:00
Javier Martinez Canillas
e0efaafbb5 ARM: dts: AM33XX: don't redefine OCP bus and device nodes
The On Chip Peripherals (OCP) device node is a simplified
representation of the AM33XX SoC interconnect. An OCP dev
node is already defined in the am33xx.dtsi Device Tree
source file included by am33xx based boards so there is
no need to redefine this on each board DT file.

Also, the OCP and IP modules directly connected to it are SoC
internal details that is better to keep outside of board files.

Signed-off-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:32 +02:00
Javier Martinez Canillas
82d75afcb7 ARM: dts: AM33XX: use pinmux node defined in included file
am33xx boards DTS include the am33xx.dtsi Device Tree
source file that already define a pinmux device node for
the AM33XX SoC Pin Multiplex.

Redefining this for each board makes the Device Tree files
harder to modify and maintain so let's just use what is
already defined in the included .dtsi file.

Signed-off-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:32 +02:00
Koen Kooi
ec8a75979f ARM: dts: am335x-bone-common: add cpu0 and mmc1 triggers
This matches the vendor 3.8.x configuration that is shipping
with the boards.

The LED layout is now:
 USR0: heartbeat
 USR1: mmc0 (micro-SD slot)
 USR2: cpu0
 USR3: mmc1 (eMMC)

The cpu0 triggers was put in between the mmc triggers to make
is easier to see where the disk activity is.

Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
Tested-by: Kevin Hilman <khilman@linaro.org>
Reviewed-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:31 +02:00
Koen Kooi
757a90e66c ARM: dts: am335x-bone-common: switch mmc1 to 4-bit mode
The micro-SD slot hooks up all four data pins so lets' use them.

Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
Tested-by: Kevin Hilman <khilman@linaro.org>
Reviewed-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:31 +02:00
Koen Kooi
1aac4a9903 ARM: dts: am335x-boneblack: add eMMC DT entry
The pinmux is specified in am335x-bone-common.dtsi to be
reused by the eMMC cape.

Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
Tested-by: Kevin Hilman <khilman@linaro.org>
Reviewed-by: Nishanth Menon <nm@ti.com>
[bcousson@baylibre.com: Fix traling spaces and useless comments]
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:30 +02:00
Alexander Holler
3045ffffcf ARM: dts: am335x-bone: add CD for mmc1
This enables the use of MMC cards even when no card was inserted at boot.

Signed-off-by: Alexander Holler <holler@ahsoftware.de>
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
Tested-by: Kevin Hilman <khilman@linaro.org>
Reviewed-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:30 +02:00
Matt Porter
55b4452b4b ARM: dts: AM33XX: Add MMC support and documentation
Adds AM33XX MMC support for am335x-bone, am335x-evm and am335x-evmsk boards.

Also added is the DMA binding definitions based on the generic DMA request
binding.

Additional changes made to DTS:
* Interrupt, reg and compatible properties added
* ti,needs-special-hs-handling added

Signed-off-by: Matt Porter <mporter@ti.com>
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Joel Fernandes <joelf@ti.com>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:29 +02:00
Matt Porter
f5e2f807b7 ARM: dts: AM33XX: Add SPI DMA support
Adds DMA resources to the AM33XX SPI nodes.

Signed-off-by: Matt Porter <mporter@ti.com>
Signed-off-by: Joel A Fernandes <joelagnel@ti.com>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:29 +02:00
Matt Porter
505975d380 ARM: dts: AM33XX: Add EDMA support
Adds AM33XX EDMA support to the am33xx.dtsi as documented in
Documentation/devicetree/bindings/dma/ti-edma.txt

[Joel Fernandes <joelf@ti.com>]
Drop DT entries that are non-hardware-description as discussed in [1]

[1] https://patchwork.kernel.org/patch/2226761/

Signed-off-by: Matt Porter <mporter@ti.com>
Signed-off-by: Joel A Fernandes <joelagnel@ti.com>
Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
2013-10-11 21:06:28 +02:00
Joseph Lo
6ec1d127ee ARM: tegra: enable LP1 suspend mode for Venice2
Enable LP1 suspend mode for Tegra124 Venice2 board.

Signed-off-by: Joseph Lo <josephl@nvidia.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
2013-10-11 12:32:17 -06:00
Tony Lindgren
487e5f2868 ARM: OMAP2+: Add WLAN modules and of_serial to omap2plus_defconfig
Many boards have either WL12XX or MWIFIEX, so let's
build modules for those by default. This also makes it
easier to test WLAN on pandaboard to avoid regressions
like we had with the move to device tree based booting.

And at least the zoom boards need the of_serial for the
UARTs connected to the GPMC bus.

Signed-off-by: Tony Lindgren <tony@atomide.com>
2013-10-11 09:21:50 -07:00
Tony Lindgren
fb23ba55ea ARM: OMAP2+: Run make savedefconfig on omap2plus_defconfig to shrink it
We can save few tens of lines this way, and it is easier
to generate minimal patches against omap2plus_defconfig.

Signed-off-by: Tony Lindgren <tony@atomide.com>
2013-10-11 09:21:50 -07:00
Tony Lindgren
f2bf0e72d0 ARM: OMAP2+: Add minimal 8250 support for GPMC
Just initialize things using the bootloader timings like
we've been doing for the legacy booting too. It should be
possible to patch in the GPMC timings for the based on the
TL16CP743C/TL16C754C manual at:

http://www.ti.com/lit/ds/slls644g/slls644g.pdf

Signed-off-by: Tony Lindgren <tony@atomide.com>
2013-10-11 09:21:50 -07:00
Tony Lindgren
79b39f7918 ARM: OMAP2+: Use pdata quirks for wl12xx for omap3 evm and zoom3
As the wl12xx bindings are still pending, this way we can
get things working for omap3 evm and zoom platforms.

Signed-off-by: Tony Lindgren <tony@atomide.com>
2013-10-11 09:21:49 -07:00
Joseph Lo
bd4e301bda ARM: tegra: enable Tegra RTC as default for Tegra124
This patch makes the Tegra RTC enabled as default for Tegra124 platform.

Signed-off-by: Joseph Lo <josephl@nvidia.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
2013-10-11 09:55:55 -06:00
Ingo Molnar
ec0ad3d01f Merge branch 'core/urgent' into sched/core
Merge in asm goto fix, to be able to apply the asm/rmwcc.h fix.

Signed-off-by: Ingo Molnar <mingo@kernel.org>
2013-10-11 07:39:37 +02:00
Ingo Molnar
3f0116c323 compiler/gcc4: Add quirk for 'asm goto' miscompilation bug
Fengguang Wu, Oleg Nesterov and Peter Zijlstra tracked down
a kernel crash to a GCC bug: GCC miscompiles certain 'asm goto'
constructs, as outlined here:

  http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670

Implement a workaround suggested by Jakub Jelinek.

Reported-and-tested-by: Fengguang Wu <fengguang.wu@intel.com>
Reported-by: Oleg Nesterov <oleg@redhat.com>
Reported-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Suggested-by: Jakub Jelinek <jakub@redhat.com>
Reviewed-by: Richard Henderson <rth@twiddle.net>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: <stable@kernel.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2013-10-11 07:39:14 +02:00
Linus Torvalds
2d9d028283 Merge branch 'rc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
Pull kbuild fix from Michal Marek:
 "Here is an ARM Makefile fix that you even acked.  After nobody wanted
  to take it, it ended up in the kbuild tree"

* 'rc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
  arm, kbuild: make "make install" not depend on vmlinux
2013-10-10 18:15:23 -07:00
Santosh Shilimkar
a77e0c7b27 ARM: mm: Recreate kernel mappings in early_paging_init()
This patch adds a step in the init sequence, in order to recreate
the kernel code/data page table mappings prior to full paging
initialization.  This is necessary on LPAE systems that run out of
a physical address space outside the 4G limit.  On these systems,
this implementation provides a machine descriptor hook that allows
the PHYS_OFFSET to be overridden in a machine specific fashion.

Cc: Russell King <linux@arm.linux.org.uk>

Acked-by: Nicolas Pitre <nico@linaro.org>
Signed-off-by: R Sricharan <r.sricharan@ti.com>
Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
2013-10-10 20:28:19 -04:00
Sricharan R
f52bb72254 ARM: mm: Correct virt_to_phys patching for 64 bit physical addresses
The current phys_to_virt patching mechanism works only for 32 bit
physical addresses and this patch extends the idea for 64bit physical
addresses.

The 64bit v2p patching mechanism patches the higher 8 bits of physical
address with a constant using 'mov' instruction and lower 32bits are patched
using 'add'. While this is correct, in those platforms where the lowmem addressable
physical memory spawns across 4GB boundary, a carry bit can be produced as a
result of addition of lower 32bits. This has to be taken in to account and added
in to the upper. The patched __pv_offset and va are added in lower 32bits, where
__pv_offset can be in two's complement form when PA_START < VA_START and that can
result in a false carry bit.

e.g
    1) PA = 0x80000000; VA = 0xC0000000
       __pv_offset = PA - VA = 0xC0000000 (2's complement)

    2) PA = 0x2 80000000; VA = 0xC000000
       __pv_offset = PA - VA = 0x1 C0000000

So adding __pv_offset + VA should never result in a true overflow for (1).
So in order to differentiate between a true carry, a __pv_offset is extended
to 64bit and the upper 32bits will have 0xffffffff if __pv_offset is
2's complement. So 'mvn #0' is inserted instead of 'mov' while patching
for the same reason. Since mov, add, sub instruction are to patched
with different constants inside the same stub, the rotation field
of the opcode is using to differentiate between them.

So the above examples for v2p translation becomes for VA=0xC0000000,
    1) PA[63:32] = 0xffffffff
       PA[31:0] = VA + 0xC0000000 --> results in a carry
       PA[63:32] = PA[63:32] + carry

       PA[63:0] = 0x0 80000000

    2) PA[63:32] = 0x1
       PA[31:0] = VA + 0xC0000000 --> results in a carry
       PA[63:32] = PA[63:32] + carry

       PA[63:0] = 0x2 80000000

The above ideas were suggested by Nicolas Pitre <nico@linaro.org> as
part of the review of first and second versions of the subject patch.

There is no corresponding change on the phys_to_virt() side, because
computations on the upper 32-bits would be discarded anyway.

Cc: Russell King <linux@arm.linux.org.uk>

Reviewed-by: Nicolas Pitre <nico@linaro.org>
Signed-off-by: Sricharan R <r.sricharan@ti.com>
Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
2013-10-10 20:25:06 -04:00