Russell King [Wed, 25 Mar 2009 10:00:08 +0000 (10:00 +0000)]
Merge git://git.marvell.com/orion into devel
Russell King [Tue, 24 Mar 2009 22:47:45 +0000 (22:47 +0000)]
Merge branch 'highmem' into devel
root [Tue, 24 Mar 2009 22:04:25 +0000 (22:04 +0000)]
Merge branch 'devel' of git://git./linux/kernel/git/ycmiao/pxa-linux-2.6 into devel
Nicolas Pitre [Tue, 24 Mar 2009 00:42:29 +0000 (20:42 -0400)]
[ARM] Kirkwood: fail the probe if internal RTC does not work
Having a RTC that doesn't maintain proper time across a reboot is one
thing. But a RTC that doesn't work at all and only causes timeouts is
another.
Tested-by: Martin Michlmayr <tbm@cyrius.com>
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Alexander Clouter [Sat, 21 Mar 2009 11:09:25 +0000 (11:09 +0000)]
[ARM] orion5x: update of FPGA ID's for the TS-78xx
Received official word finally from Technological Systems on which
FPGA ID's they have released unto the world. Also an additional of
a dummy entry matching the FPGA ID of the Verilog template on our
wiki.
Signed-off-by: Alexander Clouter <alex@digriz.org.uk>
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Martin Michlmayr [Sun, 22 Mar 2009 14:22:11 +0000 (15:22 +0100)]
[ARM] Kirkwood: Add support for QNAP TS-119/TS-219 Turbo NAS
Add support for the QNAP TS-119 and TS-219 Turbo NAS devices.
Signed-off-by: Martin Michlmayr <tbm@cyrius.com>
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Nicolas Pitre [Mon, 23 Mar 2009 20:10:36 +0000 (16:10 -0400)]
[ARM] update mach-types
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Martin Michlmayr [Sun, 22 Mar 2009 14:21:25 +0000 (15:21 +0100)]
[ARM] Kirkwood: More consistency regarding MPP naming
With the exception of UART0, all MPP names are uppercase.
Signed-off-by: Martin Michlmayr <tbm@cyrius.com>
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Martin Michlmayr [Mon, 23 Mar 2009 18:13:21 +0000 (19:13 +0100)]
[ARM] Kirkwood: Hook up I2C
Hook up I2C on Marvell Kirkwood. Tested on a QNAP TS-219 which has
RTC connected through I2C.
Signed-off-by: Martin Michlmayr <tbm@cyrius.com>
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Eric Miao [Fri, 20 Mar 2009 04:52:24 +0000 (12:52 +0800)]
MAINTAINERS: update pxa910 maintainers
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Eric Miao [Thu, 19 Feb 2009 13:13:21 +0000 (21:13 +0800)]
MAINTAINERS: update pxa168 maintainers
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Acked-by: Jason Chagas <jason.chagas@marvell.com>
Eric Miao [Fri, 20 Mar 2009 06:55:11 +0000 (14:55 +0800)]
[ARM] pxa: add defconfig for pxa910-based platforms
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Eric Miao [Thu, 19 Feb 2009 09:35:31 +0000 (17:35 +0800)]
[ARM] pxa: add defconfig for pxa168-based platforms
Instead of having various pieces of defconfig files for different
platforms, let's group them into a single one.
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Eric Miao [Fri, 20 Mar 2009 05:33:49 +0000 (13:33 +0800)]
[ARM] pxa: add base support for pxa910-based TTC_DKB
Signed-off-by: Bin Yang <bin.yang@marvell.com>
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Eric Miao [Fri, 20 Mar 2009 05:27:30 +0000 (13:27 +0800)]
[ARM] pxa: add base support for pxa910-based TavorEVB
Signed-off-by: Bin Yang <bin.yang@marvell.com>
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Eric Miao [Fri, 20 Mar 2009 04:50:22 +0000 (12:50 +0800)]
[ARM] pxa: add base support for Marvell PXA910
Signed-off-by: Bin Yang <bin.yang@marvell.com>
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Eric Miao [Wed, 18 Feb 2009 08:38:22 +0000 (16:38 +0800)]
[ARM] pxa/aspenite: add support for debug ethernet
Signed-off-by: Zhangfei Gao <zhangfei.gao@marvell.com>
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Eric Miao [Tue, 10 Feb 2009 02:35:25 +0000 (10:35 +0800)]
[ARM] pxa/aspenite: add support for console uart
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Eric Miao [Thu, 5 Feb 2009 05:42:47 +0000 (13:42 +0800)]
[ARM] pxa: allow reuse of serial driver for pxa168
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Eric Miao [Tue, 20 Jan 2009 09:20:56 +0000 (17:20 +0800)]
[ARM] pxa: add MFP support for pxa168
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Eric Miao [Tue, 20 Jan 2009 06:38:24 +0000 (14:38 +0800)]
[ARM] pxa: add GPIO support for pxa168
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Eric Miao [Thu, 26 Feb 2009 01:34:35 +0000 (09:34 +0800)]
[ARM] pxa: add iWMMXt support for pxa168
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Eric Miao [Tue, 20 Jan 2009 06:15:18 +0000 (14:15 +0800)]
[ARM] pxa: add base support for Marvell's PXA168 processor line
"""The MarvellĀ® PXA168 processor is the first in a family of application
processors targeted at mass market opportunities in computing and consumer
devices. It balances high computing and multimedia performance with low
power consumption to support extended battery life, and includes a wealth
of integrated peripherals to reduce overall BOM cost .... """
See http://www.marvell.com/featured/pxa168.jsp for more information.
1. Marvell Mohawk core is a hybrid of xscale3 and its own ARM core,
there are many enhancements like instructions for flushing the
whole D-cache, and so on
2. Clock reuses Russell's common clkdev, and added the basic support
for UART1/2.
3. Devices are a bit different from the 'mach-pxa' way, the platform
devices are now dynamically allocated only when necessary (i.e.
when pxa_register_device() is called). Description for each device
are stored in an array of 'struct pxa_device_desc'. Now that:
a. this array of device description is marked with __initdata and
can be freed up system is fully up
b. which means board code has to add all needed devices early in
his initializing function
c. platform specific data can now be marked as __initdata since
they are allocated and copied by platform_device_add_data()
4. only the basic UART1/2/3 are added, more devices will come later.
Signed-off-by: Jason Chagas <chagas@marvell.com>
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Eric Miao [Thu, 15 Jan 2009 08:42:56 +0000 (16:42 +0800)]
[ARM] pxa: move common MFP handling code into plat-pxa
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Eric Miao [Tue, 20 Jan 2009 04:09:06 +0000 (12:09 +0800)]
[ARM] pxa: move common GPIO handling code into plat-pxa
1. add common GPIO handling code into [arch/arm/plat-pxa]
2. common code in <mach/gpio.h> moved into <plat/gpio.h>, new processors
should implement its own <mach/gpio.h>, provide the following required
definitions and '#include <plat/gpio.h>' in the end:
- GPIO_REGS_VIRT for mapped virtual address of the GPIO registers'
physical I/O memory
- macros of GPLR(), GPSR(), GPDR() for constant optimization for
functions gpio_{set,get}_value() (so that bit-bang code can still
have tolerable performance)
- NR_BUILTIN_GPIO for the number of onchip GPIO
- definitions of __gpio_is_inverted() and __gpio_is_occupied(), they
can be either macros or inlined functions
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Eric Miao [Tue, 20 Jan 2009 04:06:01 +0000 (12:06 +0800)]
[ARM] pxa: introduce plat-pxa for PXA common code and add DMA support
1. introduce folder of 'arch/arm/plat-pxa' for common code across different
PXA processor families
2. initially moved DMA code into plat-pxa
3. common code in <mach/dma.h> moved into <plat/dma.h>, new processors
should implement its own <mach/dma.h>, provide the following required
definitions and '#include <plat/dma.h>' in the end:
- DMAC_REGS_VIRT for mapped virtual address of the DMA registers'
physical I/O memory
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Daniel Mack [Mon, 23 Mar 2009 01:04:20 +0000 (02:04 +0100)]
[ARM] pxa: AC97 pin functions for Colibri PXA310/320
Signed-off-by: Daniel Mack <daniel@caiaq.de>
Cc: Matthias Meier <matthias.j.meier@gmx.net>
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Daniel Mack [Mon, 23 Mar 2009 01:04:19 +0000 (02:04 +0100)]
[ARM] pxa: Add Colibri LCD functions
This adds LCD functions for Colibri PXA300 and Colibri PXA320 and
configures a LQ043T3DX02 panel.
Original-code-by: Matthias Meier <matthias.j.meier@gmx.net>
Signed-off-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Daniel Mack [Mon, 23 Mar 2009 01:04:18 +0000 (02:04 +0100)]
[ARM] pxa: Colibri PXA320 module basics
This adds basic support for Colibri PXA320 modules.
The file colibri-320.c only contains settings specific to this module,
such as the Ethernet interface.
Cc: Matthias Meier <matthias.j.meier@gmx.net>
Signed-off-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Daniel Mack [Mon, 23 Mar 2009 01:04:17 +0000 (02:04 +0100)]
[ARM] pxa: Refactor Colibri board support code
- Move common function for all Colibri PXA3xx boards to the newly
added colibri-pxa3xx.c
- Drop some unnecessary defines from colibri.h
- Make Kconfig reflect the fact that code for colibri 300 module does
also work for the 310 model
- Give up on the huge pin config table which was messed up with lots of
#ifdefs and switch over to locally defined tables for configured
functions
Cc: Matthias Meier <matthias.j.meier@gmx.net>
Signed-off-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Daniel Mack [Mon, 23 Mar 2009 01:04:16 +0000 (02:04 +0100)]
[ARM] pxa: Fix Colibri AX88796 configuration
Broaden the AX88796 register mask to allow access to the reset register.
Remove unnecessary value definitions and the second resource block.
Diagnosed-by: Matthias Meier <matthias.j.meier@gmx.net>
Signed-off-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Daniel Mack [Fri, 13 Mar 2009 15:37:13 +0000 (16:37 +0100)]
[ARM] pxa: add colibri PXA300 defconfig
Signed-off-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Daniel Mack [Fri, 13 Mar 2009 15:37:12 +0000 (16:37 +0100)]
[ARM] pxa: rename and update Colibri PXA270 defconfig
Signed-off-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Daniel Mack [Fri, 13 Mar 2009 15:37:11 +0000 (16:37 +0100)]
[ARM] pxa: add USB support for Colibri PXA300
This adds support for USB OHCI for Toradex' Colibri PXA300 modules as
connected on the evaluation board.
Signed-off-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Daniel Mack [Fri, 13 Mar 2009 15:37:10 +0000 (16:37 +0100)]
[ARM] pxa: add MMC support for Colibri PXA300
Added MMC support for Toradex' Colibri PXA300 module.
Signed-off-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Daniel Mack [Fri, 13 Mar 2009 15:37:09 +0000 (16:37 +0100)]
[ARM] pxa: add basic support for Colibri PXA300 module
This patch add basic support for Toradex' Colibri PXA300 module.
Ethernet is enabled conditionally, depdending on CONFIG_AX88796.
Signed-off-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Daniel Mack [Fri, 13 Mar 2009 15:37:08 +0000 (16:37 +0100)]
[ARM] pxa: rename colibri.c to colibri-pxa270.c
Namespace cleanup: rename colibri.c to colibri-pxa270.c and change
some names in colibri.h.
Signed-off-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Eric Miao [Mon, 23 Mar 2009 01:55:09 +0000 (09:55 +0800)]
Merge branch 'fix' of git://git./linux/kernel/git/ycmiao/pxa-linux-2.6.git into devel
Daniel Mack [Thu, 19 Mar 2009 14:45:19 +0000 (15:45 +0100)]
[ARM] pxa: add pxa320 missing pin function for CS2 on GPIO3
Signed-off-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Russell King [Thu, 19 Mar 2009 23:10:40 +0000 (23:10 +0000)]
Merge branch 'master' of git://git.marvell.com/orion into devel
Conflicts:
arch/arm/mach-mx1/devices.c
Russell King [Thu, 19 Mar 2009 16:20:24 +0000 (16:20 +0000)]
[ARM] pass reboot command line to arch_reset()
OMAP wishes to pass state to the boot loader upon reboot in order to
instruct it whether to wait for USB-based reflashing or not. There is
already a facility to do this via the reboot() syscall, except we ignore
the string passed to machine_restart().
This patch fixes things to pass this string to arch_reset(). This means
that we keep the reboot mode limited to telling the kernel _how_ to
perform the reboot which should be independent of what we request the
boot loader to do.
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Russell King [Thu, 19 Mar 2009 12:39:58 +0000 (12:39 +0000)]
Merge branch 'omap-clks3' into devel
Conflicts:
arch/arm/mach-omap2/clock.c
Eric Miao [Thu, 19 Mar 2009 07:24:30 +0000 (15:24 +0800)]
[ARM] pxa: fix overlay being un-necessarily initialized on pxa25x
pxa25x doesn't support overlay in its LCD controller, this patch adds
pxafb_overlay_supported() functions to check the initialization is
necessary.
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Dmitry Eremin-Solenikov [Thu, 5 Mar 2009 15:17:53 +0000 (18:17 +0300)]
[ARM] pxa: make second argument of clk_add_alias a name instead of the device
clk_add_alias is commonly called for platform devices that are not yet
registered in the device tree. Thus the clock alias is associated with
NULL device name. Fix this by passing the device name instead of just
device pointer.
Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Daniel Mack [Fri, 13 Mar 2009 14:17:32 +0000 (15:17 +0100)]
[ARM] pxa: add missing pin function for CS2 on GPIO1
Signed-off-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Russell King [Tue, 17 Mar 2009 23:51:52 +0000 (23:51 +0000)]
Merge branch 'for-russell' of git://git./linux/kernel/git/chris/linux-2.6 into devel
Krzysztof HaÅasa [Tue, 17 Mar 2009 13:39:30 +0000 (14:39 +0100)]
IXP4xx: PCI ixp4xx_scan_bus() is __devinit.
Signed-off-by: Krzysztof HaÅasa <khc@pm.waw.pl>
Krzysztof HaÅasa [Tue, 17 Mar 2009 12:51:52 +0000 (13:51 +0100)]
IXP4xx: cpu_is_ixp4*() now recognizes all IXP4xx processors.
Signed-off-by: Krzysztof HaÅasa <khc@pm.waw.pl>
Krzysztof HaÅasa [Fri, 13 Mar 2009 18:09:00 +0000 (19:09 +0100)]
IXP4xx: add Ethernet and NPE support for IXP43x CPU.
Signed-off-by: Krzysztof HaÅasa <khc@pm.waw.pl>
Krzysztof HaÅasa [Fri, 13 Mar 2009 16:57:04 +0000 (17:57 +0100)]
IXP4xx: workaround for PCI prefetch problems near 64 MB boundary.
Map unused registers at the end of DMA region at 64 MB to allow PCI masters
to cross the boundary when prefetching data from SDRAM.
Signed-off-by: Krzysztof HaÅasa <khc@pm.waw.pl>
Russell King [Mon, 16 Mar 2009 22:28:04 +0000 (22:28 +0000)]
Merge branch 'imx-fb-fix' of git://git./linux/kernel/git/djbw/async_tx into devel
Conflicts:
drivers/video/mx3fb.c
Lennert Buytenhek [Thu, 12 Mar 2009 08:48:37 +0000 (09:48 +0100)]
[ARM] mv78xx0: Add Marvell RD-78x00-mASA Reference Design support
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Acked-by: Stanislav Samsonov <samsonov@marvell.com>
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Nicolas Pitre [Wed, 4 Mar 2009 03:19:03 +0000 (22:19 -0500)]
[ARM] Kirkwood: update defconfig
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Nicolas Pitre [Tue, 3 Mar 2009 06:16:07 +0000 (01:16 -0500)]
[ARM] Kirkwood: SheevaPlug LED support
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Nicolas Pitre [Tue, 3 Mar 2009 04:44:41 +0000 (23:44 -0500)]
[ARM] Kirkwood: SheevaPlug USB Power Enable setup
Ideally, the default should be set to 0 and let the EHCI driver turn
it on as needed. This makes USB usable in the mean time.
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Shadi Ammouri [Tue, 24 Feb 2009 20:26:23 +0000 (15:26 -0500)]
[ARM] Kirkwood: Marvell SheevaPlug support
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Nicolas Pitre [Mon, 16 Mar 2009 01:41:23 +0000 (21:41 -0400)]
Merge commit '
305b07680f' into orion/master
Nicolas Pitre [Fri, 19 Sep 2008 04:36:12 +0000 (00:36 -0400)]
[ARM] add CONFIG_HIGHMEM option
Here it is... HIGHMEM for the ARM architecture. :-)
If you don't have enough ram for highmem pages to be allocated and still
want to test this, then the cmdline option "vmalloc=" can be used with
a value large enough to force the highmem threshold down.
Successfully tested on a Marvell DB-78x00-BP Development Board with
2 GB of RAM.
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Nicolas Pitre [Tue, 4 Nov 2008 05:48:42 +0000 (00:48 -0500)]
[ARM] ignore high memory with VIPT aliasing caches
VIPT aliasing caches have issues of their own which are not yet handled.
Usage of discard_old_kernel_data() in copypage-v6.c is not highmem ready,
kmap/fixmap stuff doesn't take account of cache colouring, etc.
If/when those issues are handled then this could be reverted.
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Nicolas Pitre [Fri, 19 Sep 2008 02:55:47 +0000 (22:55 -0400)]
[ARM] xsc3: add highmem support to L2 cache handling code
On xsc3, L2 cache ops are possible only on virtual addresses. The code
is rearranged so to have a linear progression requiring the least amount
of pte setups in the highmem case. To protect the virtual mapping so
created, interrupts must be disabled currently up to a page worth of
address range.
The interrupt disabling is done in a way to minimize the overhead within
the inner loop. The alternative would consist in separate code for
the highmem and non highmem compilation which is less preferable.
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Nicolas Pitre [Fri, 12 Sep 2008 20:11:51 +0000 (16:11 -0400)]
[ARM] Feroceon: add highmem support to L2 cache handling code
The choice is between looping over the physical range and performing
single cache line operations, or to map highmem pages somewhere, as
cache range ops are possible only on virtual addresses.
Because L2 range ops are much faster, we go with the later by factoring
the physical-to-virtual address conversion and use a fixmap entry for it
in the HIGHMEM case.
Possible future optimizations to avoid the pte setup cost:
- do the pte setup for highmem pages only
- determine a threshold for doing a line-by-line processing on physical
addresses when the range is small
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Nicolas Pitre [Tue, 9 Sep 2008 19:54:13 +0000 (15:54 -0400)]
[ARM] make page_to_dma() highmem aware
If a machine class has a custom __virt_to_bus() implementation then it
must provide a __arch_page_to_dma() implementation as well which is
_not_ based on page_address() to support highmem.
This patch fixes existing __arch_page_to_dma() and provide a default
implementation otherwise. The default implementation for highmem is
based on __pfn_to_bus() which is defined only when no custom
__virt_to_bus() is provided by the machine class.
That leaves only ebsa110 and footbridge which cannot support highmem
until they provide their own __arch_page_to_dma() implementation.
But highmem support on those legacy platforms with limited memory is
certainly not a priority.
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Nicolas Pitre [Fri, 13 Mar 2009 02:52:09 +0000 (22:52 -0400)]
[ARM] introduce dma_cache_maint_page()
This is a helper to be used by the DMA mapping API to handle cache
maintenance for memory identified by a page structure instead of a
virtual address. Those pages may or may not be highmem pages, and
when they're highmem pages, they may or may not be virtually mapped.
When they're not mapped then there is no L1 cache to worry about. But
even in that case the L2 cache must be processed since unmapped highmem
pages can still be L2 cached.
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Nicolas Pitre [Thu, 5 Mar 2009 03:49:41 +0000 (22:49 -0500)]
highmem: atomic highmem kmap page pinning
Most ARM machines have a non IO coherent cache, meaning that the
dma_map_*() set of functions must clean and/or invalidate the affected
memory manually before DMA occurs. And because the majority of those
machines have a VIVT cache, the cache maintenance operations must be
performed using virtual
addresses.
When a highmem page is kunmap'd, its mapping (and cache) remains in place
in case it is kmap'd again. However if dma_map_page() is then called with
such a page, some cache maintenance on the remaining mapping must be
performed. In that case, page_address(page) is non null and we can use
that to synchronize the cache.
It is unlikely but still possible for kmap() to race and recycle the
virtual address obtained above, and use it for another page before some
on-going cache invalidation loop in dma_map_page() is done. In that case,
the new mapping could end up with dirty cache lines for another page,
and the unsuspecting cache invalidation loop in dma_map_page() might
simply discard those dirty cache lines resulting in data loss.
For example, let's consider this sequence of events:
- dma_map_page(..., DMA_FROM_DEVICE) is called on a highmem page.
--> - vaddr = page_address(page) is non null. In this case
it is likely that the page has valid cache lines
associated with vaddr. Remember that the cache is VIVT.
--> for (i = vaddr; i < vaddr + PAGE_SIZE; i += 32)
invalidate_cache_line(i);
*** preemption occurs in the middle of the loop above ***
- kmap_high() is called for a different page.
--> - last_pkmap_nr wraps to zero and flush_all_zero_pkmaps()
is called. The pkmap_count value for the page passed
to dma_map_page() above happens to be 1, so the page
is unmapped. But prior to that, flush_cache_kmaps()
cleared the cache for it. So far so good.
- A fresh pkmap entry is assigned for this kmap request.
The Murphy law says this pkmap entry will eventually
happen to use the same vaddr as the one which used to
belong to the other page being processed by
dma_map_page() in the preempted thread above.
- The kmap_high() caller start dirtying the cache using the
just assigned virtual mapping for its page.
*** the first thread is rescheduled ***
- The for(...) loop is resumed, but now cached
data belonging to a different physical page is
being discarded !
And this is not only a preemption issue as ARM can be SMP as well,
making the above scenario just as likely. Hence the need for some kind
of pkmap page pinning which can be used in any context, primarily for
the benefit of dma_map_page() on ARM.
This provides the necessary interface to cope with the above issue if
ARCH_NEEDS_KMAP_HIGH_GET is defined, otherwise the resulting code is
unchanged.
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Reviewed-by: MinChan Kim <minchan.kim@gmail.com>
Acked-by: Andrew Morton <akpm@linux-foundation.org>
Nicolas Pitre [Wed, 17 Sep 2008 19:21:55 +0000 (15:21 -0400)]
[ARM] mem_init(): make highmem pages available for use
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Nicolas Pitre [Mon, 15 Sep 2008 20:44:55 +0000 (16:44 -0400)]
[ARM] kmap support
The kmap virtual area borrows a 2MB range at the top of the 16MB area
below PAGE_OFFSET currently reserved for kernel modules and/or the
XIP kernel. This 2MB corresponds to the range covered by 2 consecutive
second-level page tables, or a single pmd entry as seen by the Linux
page table abstraction. Because XIP kernels are unlikely to be seen
on systems needing highmem support, there shouldn't be any shortage of
VM space for modules (14 MB for modules is still way more than twice the
typical usage).
Because the virtual mapping of highmem pages can go away at any moment
after kunmap() is called on them, we need to bypass the delayed cache
flushing provided by flush_dcache_page() in that case.
The atomic kmap versions are based on fixmaps, and
__cpuc_flush_dcache_page() is used directly in that case.
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Nicolas Pitre [Tue, 16 Sep 2008 17:05:53 +0000 (13:05 -0400)]
[ARM] fixmap support
This is the minimum fixmap interface expected to be implemented by
architectures supporting highmem.
We have a second level page table already allocated and covering
0xfff00000-0xffffffff because the exception vector page is located
at 0xffff0000, and various cache tricks already use some entries above
0xffff0000. Therefore the PTEs covering 0xfff00000-0xfffeffff are free
to be used.
However the XScale cache flushing code already uses virtual addresses
between 0xfffe0000 and 0xfffeffff.
So this reserves the 0xfff00000-0xfffdffff range for fixmap stuff.
The Documentation/arm/memory.txt information is updated accordingly,
including the information about the actual top of DMA memory mapping
region which didn't match the code.
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Dmitry Artamonow [Sun, 15 Mar 2009 18:14:27 +0000 (19:14 +0100)]
[ARM] 5427/1: h3600: ipaq_model_ops final cleanup
Since now ipaq_model_ops used only for accessing h3600 EGPIOs,
drop it completely and use assign_h3600_egpio() directly.
Signed-off-by: Dmitry Artamonow <mad_soft@inbox.ru>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Dmitry Artamonow [Sun, 15 Mar 2009 18:13:16 +0000 (19:13 +0100)]
[ARM] 5426/1: h3600: remove clr_h3600_egpio/set_h3600_egpio helpers
Replace all occurences with assign_h3600_egpio.
Also simplify code a bit by replacing couple of if-else
statements with one-line equivalents.
Signed-off-by: Dmitry Artamonow <mad_soft@inbox.ru>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Dmitry Artamonow [Sun, 15 Mar 2009 18:11:21 +0000 (19:11 +0100)]
[ARM] 5425/1: h3600: first stage of ipaq_model_ops cleanup
Remove unused fields and associated funtions-accesors.
Signed-off-by: Dmitry Artamonow <mad_soft@inbox.ru>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Dmitry Artamonow [Sun, 15 Mar 2009 18:09:50 +0000 (19:09 +0100)]
[ARM] 5424/1: h3600: clean up mtd partitions table
Right now iPaq h3600's default MTD partitions table is a mess. It has
two #ifdefs with #else, giving total 3 variants, depending on your
kernel config. Replace all this with simple two-partitions scheme
(bootloader + rootfs), that used by both shipped WindowsCE and
most of the linux distributions (Familiar, Angstrom)
Signed-off-by: Dmitry Artamonow <mad_soft@inbox.ru>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Dmitry Artamonow [Sun, 15 Mar 2009 18:04:56 +0000 (19:04 +0100)]
[ARM] 5423/1: SA1100: remove unused H3600_SLEEVE Kconfig option
There's no actual code for iPAQ sleeves support in kernel that depends
on this config option.
Signed-off-by: Dmitry Artamonow <mad_soft@inbox.ru>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Russell King [Sun, 15 Mar 2009 10:10:13 +0000 (10:10 +0000)]
Merge branch 'devel' of git://git./linux/kernel/git/ycmiao/pxa-linux-2.6 into devel
Russell King [Fri, 13 Mar 2009 21:44:51 +0000 (21:44 +0000)]
Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 into devel
Conflicts:
arch/arm/mach-at91/gpio.c
Ilya Yanok [Wed, 11 Mar 2009 00:22:00 +0000 (03:22 +0300)]
qong: basic support for Dave/DENX QongEVB-LITE board
This patch adds basic support for Dave/DENX QongEVB-LITE i.MX31-based
board. It includes support for clocks initialization, UART1, NOR-flash,
FPGA-attached NAND flash and DNET ethernet controller (inside FPGA).
Signed-off-by: Ilya Yanok <yanok@emcraft.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Sascha Hauer [Fri, 19 Dec 2008 13:32:07 +0000 (14:32 +0100)]
pcm970 baseboard: Add SDHC support
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Sascha Hauer [Tue, 11 Nov 2008 14:03:28 +0000 (15:03 +0100)]
pcm037: Add sdhc support
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Sascha Hauer [Fri, 19 Dec 2008 13:32:06 +0000 (14:32 +0100)]
MX31: Add sdhc resources/platform devices
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Sascha Hauer [Fri, 19 Dec 2008 13:32:07 +0000 (14:32 +0100)]
MX2: Add SDHC platform_devices and resources
Signed-of-by: Julien Boibessot <julien.boibessot@armadeus.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Sascha Hauer [Mon, 23 Feb 2009 12:08:06 +0000 (13:08 +0100)]
MX2/MX3 SDHC driver: rename platform driver
Rename driver from imx-mmc to mxc-mmc to avoid conflicts with the
mx1 mmc driver.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Sascha Hauer [Mon, 23 Feb 2009 12:33:31 +0000 (13:33 +0100)]
mxcmmc: Do not pass clock name, we have only one clock for this device
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Sascha Hauer [Thu, 19 Feb 2009 11:48:35 +0000 (12:48 +0100)]
Use __force in IO_ADDRESS macro to silence sparse
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Sascha Hauer [Wed, 18 Feb 2009 10:55:33 +0000 (11:55 +0100)]
MX31 clkdev support
This patch adds clkdev support for i.MX31. This is done in a
similar way done previously for i.MX27
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Sascha Hauer [Mon, 9 Feb 2009 10:00:03 +0000 (11:00 +0100)]
[ARM] pcm038: Fix pins for UART3
The UART3 had a copy-paste bug. instead of claiming rxd, txd, rts and
cts pins, cts and rts were claimed twice
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Sascha Hauer [Fri, 6 Feb 2009 17:15:06 +0000 (18:15 +0100)]
[ARM] MX31: Move static virtual mappings of AIPS1/2 to common file
On MX31 we can't do much without mapping the AIPS1/2 register space.
Move these mappings from individual boards to plat-mxc/mm.c
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Sascha Hauer [Sun, 8 Feb 2009 01:00:50 +0000 (02:00 +0100)]
[ARM] MX31/MX35: Add l2x0 cache support
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Sascha Hauer [Fri, 6 Feb 2009 14:38:51 +0000 (15:38 +0100)]
[ARM] MX35 devices support
The i.MX35 basically features the same peripherals as the i.MX31 with
some differences:
- The i.MX35 has a FEC ethernet controller
- The NAND controller base addresses are different
- The i.MX35 has only 3 UARTs
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Sascha Hauer [Fri, 6 Feb 2009 16:48:59 +0000 (17:48 +0100)]
[ARM] MX35: add clock support
This patch adds clock support for i.MX35 SoCs. We do not support setting
of clock rates yet, but most interesting clock rates should be reported.
I couldn't test all clock rates and the datasheet contains some obvious
bugs, so expect some bugs in this code.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Sascha Hauer [Fri, 6 Feb 2009 14:41:45 +0000 (15:41 +0100)]
[ARM] add i.MX35 build support
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Sascha Hauer [Fri, 6 Feb 2009 14:38:22 +0000 (15:38 +0100)]
[ARM] MXC: add cpu_is_ macros
We had hardcoded cpu_is_ macros for mxc architectures till now. As we
want to run the same kernel on i.MX31 and i.MX35 this patch adds cpu_is_
macros which expand to 0 or 1 if only one architecture is compiled in and
only check for the cpu type if more than one architecture is compiled
in.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Sascha Hauer [Mon, 2 Feb 2009 13:11:54 +0000 (14:11 +0100)]
[ARM] MX35: Add register definitions for the i.MX35
This patch moves the stuff common to i.MX31 and i.MX35 to mx3x.h and the
specifics to mx31.h/mx35.h. We can build a kernel which runs on i.MX31 and
i.MX35, so always include mx31.h and mx35.h
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Sascha Hauer [Sat, 14 Feb 2009 15:29:38 +0000 (16:29 +0100)]
imxfb: Fix margin settings
The var->hsync_len, var->right_margin and var->left_margin fields
should contain the real values, not the hardware dependent values.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Sascha Hauer [Mon, 26 Jan 2009 16:29:10 +0000 (17:29 +0100)]
imxfb: add mx27 support
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Valentin Longchamp [Mon, 16 Feb 2009 11:47:52 +0000 (12:47 +0100)]
mx31: add dma and fb devices
This adds the dma (ipu_dma) and fb devices for the mx31 for which drivers now are
available.
v2: merge the ipu and fb device in the same patch as suggested by Sascha
Signed-off-by: Valentin Longchamp <valentin.longchamp@epfl.ch>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Valentin Longchamp [Mon, 16 Feb 2009 11:47:51 +0000 (12:47 +0100)]
mx31moboard: initial support for various baseboards
This enables our mx31moboard to be used on the different baseboards that
we are developping according to the application needs. There are not
many differences between the boards for now, but when other peripherals
are available for mx31 the differences are going to grow.
v2: takes Sascha's comments into account
Signed-off-by: Valentin Longchamp <valentin.longchamp@epfl.ch>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Valentin Longchamp [Wed, 11 Feb 2009 15:55:17 +0000 (16:55 +0100)]
mx31: add pin definition for LCD
Signed-off-by: Valentin Longchamp <valentin.longchamp@epfl.ch>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Guennadi Liakhovetski [Thu, 12 Feb 2009 13:27:22 +0000 (14:27 +0100)]
mxc: first set GPIO level, then switch direction to output
Make sure not to create spurious pulses on GPIOs, when configuring them as
output: first set required level, then switch direction.
Signed-off-by: Guennadi Liakhovetski <lg@denx.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Holger Schurig [Thu, 29 Jan 2009 13:42:25 +0000 (14:42 +0100)]
arm/imx: Kconfig beautification
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Sascha Hauer [Thu, 29 Jan 2009 15:00:23 +0000 (16:00 +0100)]
[ARM] mxc: add missing include
include devices.h from devices.c to avoid inconsistencies and to fix
sparse warnings
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Sascha Hauer [Wed, 28 Jan 2009 16:36:37 +0000 (17:36 +0100)]
[ARM] Add Synertronixx scb9328 board support
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>